From 8698805d4d827c34469c22c23d2d62e0e0d10cf5 Mon Sep 17 00:00:00 2001 From: Guy Lapalme Date: Wed, 4 Dec 2019 11:26:30 -0500 Subject: [PATCH] Version 3 : major rewrite Complete reimplementation of jsRealB while keeping intact the external interface --- Architecture/README.md | 432 + .../in_action => Architecture}/githublike.css | 0 Architecture/images/Active-Realization.pdf | Bin 0 -> 17972 bytes Architecture/images/Active.pdf | Bin 0 -> 12748 bytes .../French-Active-Pronoun-Realization.pdf | Bin 0 -> 16740 bytes Architecture/images/French-Active-Pronoun.pdf | Bin 0 -> 17833 bytes .../images/French-Active-Realization.pdf | Bin 0 -> 15736 bytes Architecture/images/French-Active.pdf | Bin 0 -> 13602 bytes .../French-Negative-Pronoun-Realization.pdf | Bin 0 -> 16186 bytes .../images/French-Negative-Pronoun.pdf | Bin 0 -> 15427 bytes .../images/French-Negative-Realization.pdf | Bin 0 -> 16267 bytes Architecture/images/French-Negative.pdf | Bin 0 -> 15319 bytes Architecture/images/JsRealB-classes.graffle | Bin 0 -> 3395 bytes Architecture/images/JsRealB-classes.pdf | Bin 0 -> 53055 bytes Architecture/images/Legend.pdf | Bin 0 -> 15412 bytes .../images/Negative-Passive-Realization.pdf | Bin 0 -> 19704 bytes Architecture/images/Negative-Passive.pdf | Bin 0 -> 19891 bytes Architecture/images/Negative-Realization.pdf | Bin 0 -> 19126 bytes Architecture/images/Negative.pdf | Bin 0 -> 16004 bytes Architecture/images/jsRealB.graffle | Bin 0 -> 15211 bytes IDE/.html | 17 + IDE/README.md | 85 + IDE/index-dev.html | 84 - IDE/index.html | 76 - IDE/jsRealB-IDE-repl.js | 113 + IDE/jsRealB-IDE.js | 22577 +++++ IDE/jsRealB-IDE.min.js | 1 + IDE/jsrealb-ide/ace-src-noconflict/ace.js | 17310 ---- .../ace-src-noconflict/ext-chromevox.js | 537 - .../ext-elastic_tabstops_lite.js | 301 - .../ace-src-noconflict/ext-emmet.js | 1109 - .../ace-src-noconflict/ext-error_marker.js | 0 .../ace-src-noconflict/ext-keybinding_menu.js | 207 - .../ace-src-noconflict/ext-language_tools.js | 1665 - .../ace-src-noconflict/ext-modelist.js | 168 - .../ace-src-noconflict/ext-old_ie.js | 500 - .../ace-src-noconflict/ext-searchbox.js | 421 - .../ace-src-noconflict/ext-settings_menu.js | 632 - .../ace-src-noconflict/ext-spellcheck.js | 68 - .../ace-src-noconflict/ext-split.js | 271 - .../ext-static_highlight.js | 178 - .../ace-src-noconflict/ext-statusbar.js | 47 - .../ace-src-noconflict/ext-textarea.js | 478 - .../ace-src-noconflict/ext-themelist.js | 86 - .../ace-src-noconflict/ext-whitespace.js | 206 - .../ace-src-noconflict/keybinding-emacs.js | 1058 - .../ace-src-noconflict/keybinding-vim.js | 1759 - .../ace-src-noconflict/mode-abap.js | 261 - .../ace-src-noconflict/mode-actionscript.js | 257 - .../ace-src-noconflict/mode-ada.js | 118 - .../ace-src-noconflict/mode-apache_conf.js | 345 - .../ace-src-noconflict/mode-asciidoc.js | 373 - .../ace-src-noconflict/mode-assembly_x86.js | 217 - .../ace-src-noconflict/mode-autohotkey.js | 225 - .../ace-src-noconflict/mode-batchfile.js | 213 - .../ace-src-noconflict/mode-c9search.js | 295 - .../ace-src-noconflict/mode-c_cpp.js | 786 - .../ace-src-noconflict/mode-clojure.js | 300 - .../ace-src-noconflict/mode-cobol.js | 125 - .../ace-src-noconflict/mode-coffee.js | 444 - .../ace-src-noconflict/mode-coldfusion.js | 1954 - .../ace-src-noconflict/mode-csharp.js | 771 - .../ace-src-noconflict/mode-css.js | 785 - .../ace-src-noconflict/mode-curly.js | 2423 - IDE/jsrealb-ide/ace-src-noconflict/mode-d.js | 492 - .../ace-src-noconflict/mode-dart.js | 993 - .../ace-src-noconflict/mode-diff.js | 170 - .../ace-src-noconflict/mode-django.js | 2448 - .../ace-src-noconflict/mode-dot.js | 361 - .../ace-src-noconflict/mode-ejs.js | 2817 - .../ace-src-noconflict/mode-erlang.js | 987 - .../ace-src-noconflict/mode-forth.js | 280 - .../ace-src-noconflict/mode-ftl.js | 1061 - .../ace-src-noconflict/mode-glsl.js | 860 - .../ace-src-noconflict/mode-golang.js | 674 - .../ace-src-noconflict/mode-groovy.js | 1095 - .../ace-src-noconflict/mode-haml.js | 498 - .../ace-src-noconflict/mode-handlebars.js | 2433 - .../ace-src-noconflict/mode-haskell.js | 362 - .../ace-src-noconflict/mode-haxe.js | 657 - .../ace-src-noconflict/mode-html.js | 2361 - .../mode-html_completions.js | 309 - .../ace-src-noconflict/mode-html_ruby.js | 2822 - .../ace-src-noconflict/mode-ini.js | 185 - .../ace-src-noconflict/mode-jack.js | 653 - .../ace-src-noconflict/mode-jade.js | 2081 - .../ace-src-noconflict/mode-java.js | 1053 - .../ace-src-noconflict/mode-javascript.js | 936 - .../ace-src-noconflict/mode-json.js | 625 - .../ace-src-noconflict/mode-jsoniq.js | 2761 - .../ace-src-noconflict/mode-jsp.js | 1553 - .../ace-src-noconflict/mode-jsx.js | 682 - .../ace-src-noconflict/mode-julia.js | 286 - .../ace-src-noconflict/mode-latex.js | 190 - .../ace-src-noconflict/mode-less.js | 854 - .../ace-src-noconflict/mode-liquid.js | 1063 - .../ace-src-noconflict/mode-lisp.js | 137 - .../ace-src-noconflict/mode-livescript.js | 288 - .../ace-src-noconflict/mode-logiql.js | 669 - .../ace-src-noconflict/mode-lsl.js | 890 - .../ace-src-noconflict/mode-lua.js | 457 - .../ace-src-noconflict/mode-luapage.js | 2828 - .../ace-src-noconflict/mode-lucene.js | 64 - .../ace-src-noconflict/mode-makefile.js | 332 - .../ace-src-noconflict/mode-markdown.js | 2724 - .../ace-src-noconflict/mode-matlab.js | 230 - .../ace-src-noconflict/mode-mel.js | 570 - .../ace-src-noconflict/mode-mushcode.js | 705 - .../mode-mushcode_high_rules.js | 569 - .../ace-src-noconflict/mode-mysql.js | 185 - .../ace-src-noconflict/mode-nix.js | 935 - .../ace-src-noconflict/mode-objectivec.js | 699 - .../ace-src-noconflict/mode-ocaml.js | 445 - .../ace-src-noconflict/mode-pascal.js | 233 - .../ace-src-noconflict/mode-perl.js | 359 - .../ace-src-noconflict/mode-pgsql.js | 1356 - .../ace-src-noconflict/mode-php.js | 2496 - .../ace-src-noconflict/mode-plain_text.js | 56 - .../ace-src-noconflict/mode-powershell.js | 665 - .../ace-src-noconflict/mode-prolog.js | 354 - .../ace-src-noconflict/mode-properties.js | 100 - .../ace-src-noconflict/mode-protobuf.js | 885 - .../ace-src-noconflict/mode-python.js | 295 - IDE/jsrealb-ide/ace-src-noconflict/mode-r.js | 337 - .../ace-src-noconflict/mode-rdoc.js | 210 - .../ace-src-noconflict/mode-rhtml.js | 2663 - .../ace-src-noconflict/mode-ruby.js | 444 - .../ace-src-noconflict/mode-rust.js | 245 - .../ace-src-noconflict/mode-sass.js | 443 - .../ace-src-noconflict/mode-scad.js | 717 - .../ace-src-noconflict/mode-scala.js | 1083 - .../ace-src-noconflict/mode-scheme.js | 143 - .../ace-src-noconflict/mode-scss.js | 879 - IDE/jsrealb-ide/ace-src-noconflict/mode-sh.js | 320 - .../ace-src-noconflict/mode-sjs.js | 1154 - .../ace-src-noconflict/mode-snippets.js | 198 - .../ace-src-noconflict/mode-soy_template.js | 2707 - .../ace-src-noconflict/mode-space.js | 160 - .../ace-src-noconflict/mode-sql.js | 119 - .../ace-src-noconflict/mode-stylus.js | 447 - .../ace-src-noconflict/mode-svg.js | 1628 - .../ace-src-noconflict/mode-tcl.js | 361 - .../ace-src-noconflict/mode-tex.js | 187 - .../ace-src-noconflict/mode-text.js | 0 .../ace-src-noconflict/mode-textile.js | 171 - .../ace-src-noconflict/mode-toml.js | 177 - .../ace-src-noconflict/mode-twig.js | 2228 - .../ace-src-noconflict/mode-typescript.js | 1018 - .../ace-src-noconflict/mode-vbscript.js | 250 - .../ace-src-noconflict/mode-velocity.js | 1621 - .../ace-src-noconflict/mode-verilog.js | 127 - .../ace-src-noconflict/mode-vhdl.js | 139 - .../ace-src-noconflict/mode-xml.js | 937 - .../ace-src-noconflict/mode-xquery.js | 2795 - .../ace-src-noconflict/mode-yaml.js | 290 - .../ace-src-noconflict/snippets/abap.js | 7 - .../snippets/actionscript.js | 164 - .../ace-src-noconflict/snippets/ada.js | 7 - .../snippets/apache_conf.js | 7 - .../ace-src-noconflict/snippets/asciidoc.js | 7 - .../snippets/assembly_x86.js | 7 - .../ace-src-noconflict/snippets/autohotkey.js | 7 - .../ace-src-noconflict/snippets/batchfile.js | 7 - .../ace-src-noconflict/snippets/c9search.js | 7 - .../ace-src-noconflict/snippets/c_cpp.js | 138 - .../ace-src-noconflict/snippets/clojure.js | 97 - .../ace-src-noconflict/snippets/cobol.js | 7 - .../ace-src-noconflict/snippets/coffee.js | 102 - .../ace-src-noconflict/snippets/coldfusion.js | 7 - .../ace-src-noconflict/snippets/csharp.js | 7 - .../ace-src-noconflict/snippets/css.js | 974 - .../ace-src-noconflict/snippets/curly.js | 7 - .../ace-src-noconflict/snippets/d.js | 7 - .../ace-src-noconflict/snippets/dart.js | 90 - .../ace-src-noconflict/snippets/diff.js | 18 - .../ace-src-noconflict/snippets/django.js | 115 - .../ace-src-noconflict/snippets/dot.js | 7 - .../ace-src-noconflict/snippets/ejs.js | 7 - .../ace-src-noconflict/snippets/erlang.js | 167 - .../ace-src-noconflict/snippets/forth.js | 7 - .../ace-src-noconflict/snippets/ftl.js | 7 - .../ace-src-noconflict/snippets/glsl.js | 7 - .../ace-src-noconflict/snippets/golang.js | 7 - .../ace-src-noconflict/snippets/groovy.js | 7 - .../ace-src-noconflict/snippets/haml.js | 27 - .../ace-src-noconflict/snippets/handlebars.js | 7 - .../ace-src-noconflict/snippets/haskell.js | 89 - .../ace-src-noconflict/snippets/haxe.js | 7 - .../ace-src-noconflict/snippets/html.js | 835 - .../snippets/html_completions.js | 7 - .../ace-src-noconflict/snippets/html_ruby.js | 7 - .../ace-src-noconflict/snippets/ini.js | 7 - .../ace-src-noconflict/snippets/jack.js | 7 - .../ace-src-noconflict/snippets/jade.js | 7 - .../ace-src-noconflict/snippets/java.js | 247 - .../ace-src-noconflict/snippets/javascript.js | 793 - .../ace-src-noconflict/snippets/json.js | 7 - .../ace-src-noconflict/snippets/jsoniq.js | 7 - .../ace-src-noconflict/snippets/jsp.js | 106 - .../ace-src-noconflict/snippets/jsx.js | 7 - .../ace-src-noconflict/snippets/julia.js | 7 - .../ace-src-noconflict/snippets/latex.js | 7 - .../ace-src-noconflict/snippets/less.js | 7 - .../ace-src-noconflict/snippets/liquid.js | 7 - .../ace-src-noconflict/snippets/lisp.js | 7 - .../ace-src-noconflict/snippets/livescript.js | 7 - .../ace-src-noconflict/snippets/logiql.js | 7 - .../ace-src-noconflict/snippets/lsl.js | 894 - .../ace-src-noconflict/snippets/lua.js | 28 - .../ace-src-noconflict/snippets/luapage.js | 7 - .../ace-src-noconflict/snippets/lucene.js | 7 - .../ace-src-noconflict/snippets/makefile.js | 11 - .../ace-src-noconflict/snippets/markdown.js | 95 - .../ace-src-noconflict/snippets/matlab.js | 7 - .../ace-src-noconflict/snippets/mel.js | 7 - .../ace-src-noconflict/snippets/mushcode.js | 7 - .../snippets/mushcode_high_rules.js | 7 - .../ace-src-noconflict/snippets/mysql.js | 7 - .../ace-src-noconflict/snippets/nix.js | 7 - .../ace-src-noconflict/snippets/objectivec.js | 7 - .../ace-src-noconflict/snippets/ocaml.js | 7 - .../ace-src-noconflict/snippets/pascal.js | 7 - .../ace-src-noconflict/snippets/perl.js | 354 - .../ace-src-noconflict/snippets/pgsql.js | 7 - .../ace-src-noconflict/snippets/php.js | 384 - .../ace-src-noconflict/snippets/plain_text.js | 7 - .../ace-src-noconflict/snippets/powershell.js | 7 - .../ace-src-noconflict/snippets/prolog.js | 7 - .../ace-src-noconflict/snippets/properties.js | 7 - .../ace-src-noconflict/snippets/protobuf.js | 7 - .../ace-src-noconflict/snippets/python.js | 165 - .../ace-src-noconflict/snippets/r.js | 128 - .../ace-src-noconflict/snippets/rdoc.js | 7 - .../ace-src-noconflict/snippets/rhtml.js | 7 - .../ace-src-noconflict/snippets/ruby.js | 935 - .../ace-src-noconflict/snippets/rust.js | 7 - .../ace-src-noconflict/snippets/sass.js | 7 - .../ace-src-noconflict/snippets/scad.js | 7 - .../ace-src-noconflict/snippets/scala.js | 7 - .../ace-src-noconflict/snippets/scheme.js | 7 - .../ace-src-noconflict/snippets/scss.js | 7 - .../ace-src-noconflict/snippets/sh.js | 90 - .../ace-src-noconflict/snippets/sjs.js | 7 - .../ace-src-noconflict/snippets/snippets.js | 16 - .../snippets/soy_template.js | 7 - .../ace-src-noconflict/snippets/space.js | 7 - .../ace-src-noconflict/snippets/sql.js | 33 - .../ace-src-noconflict/snippets/stylus.js | 7 - .../ace-src-noconflict/snippets/svg.js | 7 - .../ace-src-noconflict/snippets/tcl.js | 99 - .../ace-src-noconflict/snippets/tex.js | 197 - .../ace-src-noconflict/snippets/text.js | 7 - .../ace-src-noconflict/snippets/textile.js | 37 - .../ace-src-noconflict/snippets/toml.js | 7 - .../ace-src-noconflict/snippets/twig.js | 7 - .../ace-src-noconflict/snippets/typescript.js | 7 - .../ace-src-noconflict/snippets/vbscript.js | 7 - .../ace-src-noconflict/snippets/velocity.js | 36 - .../ace-src-noconflict/snippets/verilog.js | 7 - .../ace-src-noconflict/snippets/vhdl.js | 7 - .../ace-src-noconflict/snippets/xml.js | 7 - .../ace-src-noconflict/snippets/xquery.js | 7 - .../ace-src-noconflict/snippets/yaml.js | 7 - .../ace-src-noconflict/theme-ambiance.js | 202 - .../ace-src-noconflict/theme-chaos.js | 179 - .../ace-src-noconflict/theme-chrome.js | 157 - .../ace-src-noconflict/theme-clouds.js | 126 - .../theme-clouds_midnight.js | 127 - .../ace-src-noconflict/theme-cobalt.js | 143 - .../theme-crimson_editor.js | 148 - .../ace-src-noconflict/theme-dawn.js | 139 - .../ace-src-noconflict/theme-dreamweaver.js | 167 - .../ace-src-noconflict/theme-eclipse.js | 124 - .../ace-src-noconflict/theme-github.js | 131 - .../ace-src-noconflict/theme-idle_fingers.js | 127 - .../ace-src-noconflict/theme-katzenmilch.js | 150 - .../ace-src-noconflict/theme-kr.js | 135 - .../ace-src-noconflict/theme-kuroir.js | 89 - .../ace-src-noconflict/theme-merbivore.js | 126 - .../theme-merbivore_soft.js | 127 - .../theme-mono_industrial.js | 138 - .../ace-src-noconflict/theme-monokai.js | 136 - .../theme-pastel_on_dark.js | 139 - .../theme-solarized_dark.js | 119 - .../theme-solarized_light.js | 122 - .../ace-src-noconflict/theme-terminal.js | 145 - .../ace-src-noconflict/theme-textmate.js | 159 - .../ace-src-noconflict/theme-tomorrow.js | 139 - .../theme-tomorrow_night.js | 139 - .../theme-tomorrow_night_blue.js | 137 - .../theme-tomorrow_night_bright.js | 152 - .../theme-tomorrow_night_eighties.js | 139 - .../ace-src-noconflict/theme-twilight.js | 140 - .../ace-src-noconflict/theme-vibrant_ink.js | 125 - .../ace-src-noconflict/theme-xcode.js | 120 - .../ace-src-noconflict/worker-coffee.js | 7571 -- .../ace-src-noconflict/worker-css.js | 8317 -- .../ace-src-noconflict/worker-javascript.js | 10110 --- .../ace-src-noconflict/worker-json.js | 2289 - .../ace-src-noconflict/worker-lua.js | 3525 - .../ace-src-noconflict/worker-php.js | 6893 -- .../ace-src-noconflict/worker-xquery.js | 21881 ----- IDE/jsrealb-ide/aide.html | 76 - IDE/jsrealb-ide/css/JSrealIDE.css | 111 - IDE/jsrealb-ide/help.html | 75 - IDE/jsrealb-ide/js/JSrealB-IDE.js | 561 - IDE/jsrealb-ide/js/jsNode.js | 349 - IDE/jsrealb-ide/js/jsTokenizer.js | 112 - IDE/nodeIDE.js | 360 + README.md | 72 +- Tests/date-en.js | 2 +- Tests/date-fr.js | 5 +- Tests/declension-en.js | 6 +- Tests/declension-fr.js | 4 +- Tests/number-en.js | 7 +- Tests/sentences-en.js | 87 +- Tests/sentences-fr.js | 179 +- Tests/testAll.html | 22 +- Tutorial/describeTripEnFr.js | 41 +- Tutorial/metro.html | 14 +- Tutorial/randomgen.js | 15 +- Tutorial/tutorial.html | 186 +- Tutorial/tutorial.js | 24 +- build/Constituent.js | 550 + build/Date.js | 36 + build/Number.js | 201 + build/Phrase.js | 711 + build/README.md | 36 - build/Terminal.js | 503 + build/Utils.js | 112 + build/__pycache__/ppJson.cpython-36.pyc | Bin 1666 -> 0 bytes build/__pycache__/ppJson.cpython-37.pyc | Bin 1670 -> 0 bytes build/addLexicon-dme.js | 104 - build/addLexicon-en.js | 4 - build/addLexicon-fr.js | 3 - build/compareDmeEn.py | 27 - build/core.js | 4806 - build/coredate.js | 4807 - build/dm2lexicon.py | 146 - build/elision.js | 158 - build/elisionTests.js | 35 - build/jsRealB-dme.js | 47835 ---------- build/jsRealB-dmefr.js | 73652 ---------------- build/jsRealB-en.js | 36447 -------- build/jsRealB-enfr.js | 62265 ------------- build/jsRealB-fr.js | 30922 ------- build/lemmatization.js | 254 - build/lexicon-dme.js | 39559 --------- build/lexicon-en.js | 28272 ------ build/lexicon-en.json | 28271 ------ build/lexicon-fr.js | 21564 ----- build/lexicon-fr.json | 21563 ----- build/lexicon-var-en.js | 1 - build/lexicon-var-fr.js | 1 - build/makefile | 54 - build/module-end.js | 9 + build/module-exports.js | 38 + build/module-start.js | 5 + build/node-module.js | 45 - build/ppJson.py | 59 - build/rule-en.json | 3065 - build/rule-fr.json | 4249 - build/rule-var-en.js | 1 - build/rule-var-fr.js | 1 - {build => data}/lexicon-dme.json | 416 +- data/lexicon-en.js | 6013 ++ data/lexicon-fr.js | 6733 ++ data/lexiconFormat.html | 57 + {build => data}/rule-en.js | 26 +- {build => data}/rule-fr.js | 8 +- demos/99BottlesOfBeer/index.html | 33 +- demos/Data2Text/batiment.html | 12 +- demos/Data2Text/building.html | 12 +- demos/Data2Text/building.js | 4 +- demos/Data2Text/graphique.js | 6 +- demos/Data2Text/tasks-en.js | 27 +- demos/Data2Text/tasks-fr.js | 12 +- demos/Data2Text/textGen-en.js | 10 +- demos/Data2Text/textGen-fr.js | 15 +- demos/Evenements/Evenements.js | 19 +- demos/Evenements/index.html | 12 +- demos/ExercicesDeStyle/ExerciceDeStyle.js | 62 +- demos/ExercicesDeStyle/index.html | 15 +- demos/HuangExamples.js | 91 - demos/KilometresAPied/index.html | 28 +- .../VariantesDePhrases/VariantesDePhrases.css | 6 +- .../VariantesDePhrases/VariantesDePhrases.js | 25 +- demos/VariantesDePhrases/examples.js | 32 +- demos/VariantesDePhrases/index-dev.html | 47 - demos/VariantesDePhrases/index.html | 24 +- demos/date/index.html | 4 +- demos/elision/index.html | 32 - demos/inflection/index-dev.html | 46 - demos/inflection/index.html | 16 +- demos/inflection/inflection.js | 117 +- demos/lemmatize/lemmatizer.js | 125 - demos/randomGeneration/english.html | 12 +- demos/randomGeneration/english.js | 37 +- demos/randomGeneration/french.html | 16 +- demos/randomGeneration/french.js | 38 +- dist/datedCore.js | 2117 + dist/jsRealB-dme.min.js | 1 - dist/jsRealB-dmefr.min.js | 1 - dist/jsRealB-en.min.js | 1 - dist/jsRealB-enfr.min.js | 1 - build/filter-dme.js => dist/jsRealB-filter.js | 10 +- dist/jsRealB-fr.min.js | 1 - dist/jsRealB-node.js | 22217 +++++ dist/jsRealB-node.min.js | 1 + .../jsRealB-server-dme.js | 25 +- dist/jsRealB-server.js | 47 + dist/jsRealB.js | 22231 +++++ dist/jsRealB.min.js | 1 + {build => dist}/testServer.py | 2 +- documentation/in_action/LISEZMOI.html | 118 - documentation/in_action/LISEZMOI.md | 44 - documentation/in_action/README.html | 118 - documentation/in_action/README.md | 43 - documentation/style.css | 6 +- documentation/user-infos.js | 149 +- documentation/user.html | 66 +- jsRealB2.html | 22 + jsRealB2.js | 133 + makefile | 58 + 424 files changed, 86694 insertions(+), 599225 deletions(-) create mode 100644 Architecture/README.md rename {documentation/in_action => Architecture}/githublike.css (100%) create mode 100644 Architecture/images/Active-Realization.pdf create mode 100644 Architecture/images/Active.pdf create mode 100644 Architecture/images/French-Active-Pronoun-Realization.pdf create mode 100644 Architecture/images/French-Active-Pronoun.pdf create mode 100644 Architecture/images/French-Active-Realization.pdf create mode 100644 Architecture/images/French-Active.pdf create mode 100644 Architecture/images/French-Negative-Pronoun-Realization.pdf create mode 100644 Architecture/images/French-Negative-Pronoun.pdf create mode 100644 Architecture/images/French-Negative-Realization.pdf create mode 100644 Architecture/images/French-Negative.pdf create mode 100644 Architecture/images/JsRealB-classes.graffle create mode 100644 Architecture/images/JsRealB-classes.pdf create mode 100644 Architecture/images/Legend.pdf create mode 100644 Architecture/images/Negative-Passive-Realization.pdf create mode 100644 Architecture/images/Negative-Passive.pdf create mode 100644 Architecture/images/Negative-Realization.pdf create mode 100644 Architecture/images/Negative.pdf create mode 100644 Architecture/images/jsRealB.graffle create mode 100644 IDE/.html create mode 100644 IDE/README.md delete mode 100644 IDE/index-dev.html delete mode 100644 IDE/index.html create mode 100644 IDE/jsRealB-IDE-repl.js create mode 100644 IDE/jsRealB-IDE.js create mode 100644 IDE/jsRealB-IDE.min.js delete mode 100644 IDE/jsrealb-ide/ace-src-noconflict/ace.js delete mode 100644 IDE/jsrealb-ide/ace-src-noconflict/ext-chromevox.js delete mode 100644 IDE/jsrealb-ide/ace-src-noconflict/ext-elastic_tabstops_lite.js delete mode 100644 IDE/jsrealb-ide/ace-src-noconflict/ext-emmet.js delete mode 100644 IDE/jsrealb-ide/ace-src-noconflict/ext-error_marker.js delete mode 100644 IDE/jsrealb-ide/ace-src-noconflict/ext-keybinding_menu.js delete mode 100644 IDE/jsrealb-ide/ace-src-noconflict/ext-language_tools.js delete mode 100644 IDE/jsrealb-ide/ace-src-noconflict/ext-modelist.js delete mode 100644 IDE/jsrealb-ide/ace-src-noconflict/ext-old_ie.js delete mode 100644 IDE/jsrealb-ide/ace-src-noconflict/ext-searchbox.js delete mode 100644 IDE/jsrealb-ide/ace-src-noconflict/ext-settings_menu.js delete mode 100644 IDE/jsrealb-ide/ace-src-noconflict/ext-spellcheck.js delete mode 100644 IDE/jsrealb-ide/ace-src-noconflict/ext-split.js delete mode 100644 IDE/jsrealb-ide/ace-src-noconflict/ext-static_highlight.js delete mode 100644 IDE/jsrealb-ide/ace-src-noconflict/ext-statusbar.js delete mode 100644 IDE/jsrealb-ide/ace-src-noconflict/ext-textarea.js delete mode 100644 IDE/jsrealb-ide/ace-src-noconflict/ext-themelist.js delete mode 100644 IDE/jsrealb-ide/ace-src-noconflict/ext-whitespace.js delete mode 100644 IDE/jsrealb-ide/ace-src-noconflict/keybinding-emacs.js delete mode 100644 IDE/jsrealb-ide/ace-src-noconflict/keybinding-vim.js delete mode 100644 IDE/jsrealb-ide/ace-src-noconflict/mode-abap.js delete mode 100644 IDE/jsrealb-ide/ace-src-noconflict/mode-actionscript.js delete mode 100644 IDE/jsrealb-ide/ace-src-noconflict/mode-ada.js delete mode 100644 IDE/jsrealb-ide/ace-src-noconflict/mode-apache_conf.js delete mode 100644 IDE/jsrealb-ide/ace-src-noconflict/mode-asciidoc.js delete mode 100644 IDE/jsrealb-ide/ace-src-noconflict/mode-assembly_x86.js delete mode 100644 IDE/jsrealb-ide/ace-src-noconflict/mode-autohotkey.js delete mode 100644 IDE/jsrealb-ide/ace-src-noconflict/mode-batchfile.js delete mode 100644 IDE/jsrealb-ide/ace-src-noconflict/mode-c9search.js delete mode 100644 IDE/jsrealb-ide/ace-src-noconflict/mode-c_cpp.js delete mode 100644 IDE/jsrealb-ide/ace-src-noconflict/mode-clojure.js delete mode 100644 IDE/jsrealb-ide/ace-src-noconflict/mode-cobol.js delete mode 100644 IDE/jsrealb-ide/ace-src-noconflict/mode-coffee.js delete mode 100644 IDE/jsrealb-ide/ace-src-noconflict/mode-coldfusion.js delete mode 100644 IDE/jsrealb-ide/ace-src-noconflict/mode-csharp.js delete mode 100644 IDE/jsrealb-ide/ace-src-noconflict/mode-css.js delete mode 100644 IDE/jsrealb-ide/ace-src-noconflict/mode-curly.js delete mode 100644 IDE/jsrealb-ide/ace-src-noconflict/mode-d.js delete mode 100644 IDE/jsrealb-ide/ace-src-noconflict/mode-dart.js delete mode 100644 IDE/jsrealb-ide/ace-src-noconflict/mode-diff.js delete mode 100644 IDE/jsrealb-ide/ace-src-noconflict/mode-django.js delete mode 100644 IDE/jsrealb-ide/ace-src-noconflict/mode-dot.js delete mode 100644 IDE/jsrealb-ide/ace-src-noconflict/mode-ejs.js delete mode 100644 IDE/jsrealb-ide/ace-src-noconflict/mode-erlang.js delete mode 100644 IDE/jsrealb-ide/ace-src-noconflict/mode-forth.js delete mode 100644 IDE/jsrealb-ide/ace-src-noconflict/mode-ftl.js delete mode 100644 IDE/jsrealb-ide/ace-src-noconflict/mode-glsl.js delete mode 100644 IDE/jsrealb-ide/ace-src-noconflict/mode-golang.js delete mode 100644 IDE/jsrealb-ide/ace-src-noconflict/mode-groovy.js delete mode 100644 IDE/jsrealb-ide/ace-src-noconflict/mode-haml.js delete mode 100644 IDE/jsrealb-ide/ace-src-noconflict/mode-handlebars.js delete mode 100644 IDE/jsrealb-ide/ace-src-noconflict/mode-haskell.js delete mode 100644 IDE/jsrealb-ide/ace-src-noconflict/mode-haxe.js delete mode 100644 IDE/jsrealb-ide/ace-src-noconflict/mode-html.js delete mode 100644 IDE/jsrealb-ide/ace-src-noconflict/mode-html_completions.js delete mode 100644 IDE/jsrealb-ide/ace-src-noconflict/mode-html_ruby.js delete mode 100644 IDE/jsrealb-ide/ace-src-noconflict/mode-ini.js delete mode 100644 IDE/jsrealb-ide/ace-src-noconflict/mode-jack.js delete mode 100644 IDE/jsrealb-ide/ace-src-noconflict/mode-jade.js delete mode 100644 IDE/jsrealb-ide/ace-src-noconflict/mode-java.js delete mode 100644 IDE/jsrealb-ide/ace-src-noconflict/mode-javascript.js delete mode 100644 IDE/jsrealb-ide/ace-src-noconflict/mode-json.js delete mode 100644 IDE/jsrealb-ide/ace-src-noconflict/mode-jsoniq.js delete mode 100644 IDE/jsrealb-ide/ace-src-noconflict/mode-jsp.js delete mode 100644 IDE/jsrealb-ide/ace-src-noconflict/mode-jsx.js delete mode 100644 IDE/jsrealb-ide/ace-src-noconflict/mode-julia.js delete mode 100644 IDE/jsrealb-ide/ace-src-noconflict/mode-latex.js delete mode 100644 IDE/jsrealb-ide/ace-src-noconflict/mode-less.js delete mode 100644 IDE/jsrealb-ide/ace-src-noconflict/mode-liquid.js delete mode 100644 IDE/jsrealb-ide/ace-src-noconflict/mode-lisp.js delete mode 100644 IDE/jsrealb-ide/ace-src-noconflict/mode-livescript.js delete mode 100644 IDE/jsrealb-ide/ace-src-noconflict/mode-logiql.js delete mode 100644 IDE/jsrealb-ide/ace-src-noconflict/mode-lsl.js delete mode 100644 IDE/jsrealb-ide/ace-src-noconflict/mode-lua.js delete mode 100644 IDE/jsrealb-ide/ace-src-noconflict/mode-luapage.js delete mode 100644 IDE/jsrealb-ide/ace-src-noconflict/mode-lucene.js delete mode 100644 IDE/jsrealb-ide/ace-src-noconflict/mode-makefile.js delete mode 100644 IDE/jsrealb-ide/ace-src-noconflict/mode-markdown.js delete mode 100644 IDE/jsrealb-ide/ace-src-noconflict/mode-matlab.js delete mode 100644 IDE/jsrealb-ide/ace-src-noconflict/mode-mel.js delete mode 100644 IDE/jsrealb-ide/ace-src-noconflict/mode-mushcode.js delete mode 100644 IDE/jsrealb-ide/ace-src-noconflict/mode-mushcode_high_rules.js delete mode 100644 IDE/jsrealb-ide/ace-src-noconflict/mode-mysql.js delete mode 100644 IDE/jsrealb-ide/ace-src-noconflict/mode-nix.js delete mode 100644 IDE/jsrealb-ide/ace-src-noconflict/mode-objectivec.js delete mode 100644 IDE/jsrealb-ide/ace-src-noconflict/mode-ocaml.js delete mode 100644 IDE/jsrealb-ide/ace-src-noconflict/mode-pascal.js delete mode 100644 IDE/jsrealb-ide/ace-src-noconflict/mode-perl.js delete mode 100644 IDE/jsrealb-ide/ace-src-noconflict/mode-pgsql.js delete mode 100644 IDE/jsrealb-ide/ace-src-noconflict/mode-php.js delete mode 100644 IDE/jsrealb-ide/ace-src-noconflict/mode-plain_text.js delete mode 100644 IDE/jsrealb-ide/ace-src-noconflict/mode-powershell.js delete mode 100644 IDE/jsrealb-ide/ace-src-noconflict/mode-prolog.js delete mode 100644 IDE/jsrealb-ide/ace-src-noconflict/mode-properties.js delete mode 100644 IDE/jsrealb-ide/ace-src-noconflict/mode-protobuf.js delete mode 100644 IDE/jsrealb-ide/ace-src-noconflict/mode-python.js delete mode 100644 IDE/jsrealb-ide/ace-src-noconflict/mode-r.js delete mode 100644 IDE/jsrealb-ide/ace-src-noconflict/mode-rdoc.js delete mode 100644 IDE/jsrealb-ide/ace-src-noconflict/mode-rhtml.js delete mode 100644 IDE/jsrealb-ide/ace-src-noconflict/mode-ruby.js delete mode 100644 IDE/jsrealb-ide/ace-src-noconflict/mode-rust.js delete mode 100644 IDE/jsrealb-ide/ace-src-noconflict/mode-sass.js delete mode 100644 IDE/jsrealb-ide/ace-src-noconflict/mode-scad.js delete mode 100644 IDE/jsrealb-ide/ace-src-noconflict/mode-scala.js delete mode 100644 IDE/jsrealb-ide/ace-src-noconflict/mode-scheme.js delete mode 100644 IDE/jsrealb-ide/ace-src-noconflict/mode-scss.js delete mode 100644 IDE/jsrealb-ide/ace-src-noconflict/mode-sh.js delete mode 100644 IDE/jsrealb-ide/ace-src-noconflict/mode-sjs.js delete mode 100644 IDE/jsrealb-ide/ace-src-noconflict/mode-snippets.js delete mode 100644 IDE/jsrealb-ide/ace-src-noconflict/mode-soy_template.js delete mode 100644 IDE/jsrealb-ide/ace-src-noconflict/mode-space.js delete mode 100644 IDE/jsrealb-ide/ace-src-noconflict/mode-sql.js delete mode 100644 IDE/jsrealb-ide/ace-src-noconflict/mode-stylus.js delete mode 100644 IDE/jsrealb-ide/ace-src-noconflict/mode-svg.js delete mode 100644 IDE/jsrealb-ide/ace-src-noconflict/mode-tcl.js delete mode 100644 IDE/jsrealb-ide/ace-src-noconflict/mode-tex.js delete mode 100644 IDE/jsrealb-ide/ace-src-noconflict/mode-text.js delete mode 100644 IDE/jsrealb-ide/ace-src-noconflict/mode-textile.js delete mode 100644 IDE/jsrealb-ide/ace-src-noconflict/mode-toml.js delete mode 100644 IDE/jsrealb-ide/ace-src-noconflict/mode-twig.js delete mode 100644 IDE/jsrealb-ide/ace-src-noconflict/mode-typescript.js delete mode 100644 IDE/jsrealb-ide/ace-src-noconflict/mode-vbscript.js delete mode 100644 IDE/jsrealb-ide/ace-src-noconflict/mode-velocity.js delete mode 100644 IDE/jsrealb-ide/ace-src-noconflict/mode-verilog.js delete mode 100644 IDE/jsrealb-ide/ace-src-noconflict/mode-vhdl.js delete mode 100644 IDE/jsrealb-ide/ace-src-noconflict/mode-xml.js delete mode 100644 IDE/jsrealb-ide/ace-src-noconflict/mode-xquery.js delete mode 100644 IDE/jsrealb-ide/ace-src-noconflict/mode-yaml.js delete mode 100644 IDE/jsrealb-ide/ace-src-noconflict/snippets/abap.js delete mode 100644 IDE/jsrealb-ide/ace-src-noconflict/snippets/actionscript.js delete mode 100644 IDE/jsrealb-ide/ace-src-noconflict/snippets/ada.js delete mode 100644 IDE/jsrealb-ide/ace-src-noconflict/snippets/apache_conf.js delete mode 100644 IDE/jsrealb-ide/ace-src-noconflict/snippets/asciidoc.js delete mode 100644 IDE/jsrealb-ide/ace-src-noconflict/snippets/assembly_x86.js delete mode 100644 IDE/jsrealb-ide/ace-src-noconflict/snippets/autohotkey.js delete mode 100644 IDE/jsrealb-ide/ace-src-noconflict/snippets/batchfile.js delete mode 100644 IDE/jsrealb-ide/ace-src-noconflict/snippets/c9search.js delete mode 100644 IDE/jsrealb-ide/ace-src-noconflict/snippets/c_cpp.js delete mode 100644 IDE/jsrealb-ide/ace-src-noconflict/snippets/clojure.js delete mode 100644 IDE/jsrealb-ide/ace-src-noconflict/snippets/cobol.js delete mode 100644 IDE/jsrealb-ide/ace-src-noconflict/snippets/coffee.js delete mode 100644 IDE/jsrealb-ide/ace-src-noconflict/snippets/coldfusion.js delete mode 100644 IDE/jsrealb-ide/ace-src-noconflict/snippets/csharp.js delete mode 100644 IDE/jsrealb-ide/ace-src-noconflict/snippets/css.js delete mode 100644 IDE/jsrealb-ide/ace-src-noconflict/snippets/curly.js delete mode 100644 IDE/jsrealb-ide/ace-src-noconflict/snippets/d.js delete mode 100644 IDE/jsrealb-ide/ace-src-noconflict/snippets/dart.js delete mode 100644 IDE/jsrealb-ide/ace-src-noconflict/snippets/diff.js delete mode 100644 IDE/jsrealb-ide/ace-src-noconflict/snippets/django.js delete mode 100644 IDE/jsrealb-ide/ace-src-noconflict/snippets/dot.js delete mode 100644 IDE/jsrealb-ide/ace-src-noconflict/snippets/ejs.js delete mode 100644 IDE/jsrealb-ide/ace-src-noconflict/snippets/erlang.js delete mode 100644 IDE/jsrealb-ide/ace-src-noconflict/snippets/forth.js delete mode 100644 IDE/jsrealb-ide/ace-src-noconflict/snippets/ftl.js delete mode 100644 IDE/jsrealb-ide/ace-src-noconflict/snippets/glsl.js delete mode 100644 IDE/jsrealb-ide/ace-src-noconflict/snippets/golang.js delete mode 100644 IDE/jsrealb-ide/ace-src-noconflict/snippets/groovy.js delete mode 100644 IDE/jsrealb-ide/ace-src-noconflict/snippets/haml.js delete mode 100644 IDE/jsrealb-ide/ace-src-noconflict/snippets/handlebars.js delete mode 100644 IDE/jsrealb-ide/ace-src-noconflict/snippets/haskell.js delete mode 100644 IDE/jsrealb-ide/ace-src-noconflict/snippets/haxe.js delete mode 100644 IDE/jsrealb-ide/ace-src-noconflict/snippets/html.js delete mode 100644 IDE/jsrealb-ide/ace-src-noconflict/snippets/html_completions.js delete mode 100644 IDE/jsrealb-ide/ace-src-noconflict/snippets/html_ruby.js delete mode 100644 IDE/jsrealb-ide/ace-src-noconflict/snippets/ini.js delete mode 100644 IDE/jsrealb-ide/ace-src-noconflict/snippets/jack.js delete mode 100644 IDE/jsrealb-ide/ace-src-noconflict/snippets/jade.js delete mode 100644 IDE/jsrealb-ide/ace-src-noconflict/snippets/java.js delete mode 100644 IDE/jsrealb-ide/ace-src-noconflict/snippets/javascript.js delete mode 100644 IDE/jsrealb-ide/ace-src-noconflict/snippets/json.js delete mode 100644 IDE/jsrealb-ide/ace-src-noconflict/snippets/jsoniq.js delete mode 100644 IDE/jsrealb-ide/ace-src-noconflict/snippets/jsp.js delete mode 100644 IDE/jsrealb-ide/ace-src-noconflict/snippets/jsx.js delete mode 100644 IDE/jsrealb-ide/ace-src-noconflict/snippets/julia.js delete mode 100644 IDE/jsrealb-ide/ace-src-noconflict/snippets/latex.js delete mode 100644 IDE/jsrealb-ide/ace-src-noconflict/snippets/less.js delete mode 100644 IDE/jsrealb-ide/ace-src-noconflict/snippets/liquid.js delete mode 100644 IDE/jsrealb-ide/ace-src-noconflict/snippets/lisp.js delete mode 100644 IDE/jsrealb-ide/ace-src-noconflict/snippets/livescript.js delete mode 100644 IDE/jsrealb-ide/ace-src-noconflict/snippets/logiql.js delete mode 100644 IDE/jsrealb-ide/ace-src-noconflict/snippets/lsl.js delete mode 100644 IDE/jsrealb-ide/ace-src-noconflict/snippets/lua.js delete mode 100644 IDE/jsrealb-ide/ace-src-noconflict/snippets/luapage.js delete mode 100644 IDE/jsrealb-ide/ace-src-noconflict/snippets/lucene.js delete mode 100644 IDE/jsrealb-ide/ace-src-noconflict/snippets/makefile.js delete mode 100644 IDE/jsrealb-ide/ace-src-noconflict/snippets/markdown.js delete mode 100644 IDE/jsrealb-ide/ace-src-noconflict/snippets/matlab.js delete mode 100644 IDE/jsrealb-ide/ace-src-noconflict/snippets/mel.js delete mode 100644 IDE/jsrealb-ide/ace-src-noconflict/snippets/mushcode.js delete mode 100644 IDE/jsrealb-ide/ace-src-noconflict/snippets/mushcode_high_rules.js delete mode 100644 IDE/jsrealb-ide/ace-src-noconflict/snippets/mysql.js delete mode 100644 IDE/jsrealb-ide/ace-src-noconflict/snippets/nix.js delete mode 100644 IDE/jsrealb-ide/ace-src-noconflict/snippets/objectivec.js delete mode 100644 IDE/jsrealb-ide/ace-src-noconflict/snippets/ocaml.js delete mode 100644 IDE/jsrealb-ide/ace-src-noconflict/snippets/pascal.js delete mode 100644 IDE/jsrealb-ide/ace-src-noconflict/snippets/perl.js delete mode 100644 IDE/jsrealb-ide/ace-src-noconflict/snippets/pgsql.js delete mode 100644 IDE/jsrealb-ide/ace-src-noconflict/snippets/php.js delete mode 100644 IDE/jsrealb-ide/ace-src-noconflict/snippets/plain_text.js delete mode 100644 IDE/jsrealb-ide/ace-src-noconflict/snippets/powershell.js delete mode 100644 IDE/jsrealb-ide/ace-src-noconflict/snippets/prolog.js delete mode 100644 IDE/jsrealb-ide/ace-src-noconflict/snippets/properties.js delete mode 100644 IDE/jsrealb-ide/ace-src-noconflict/snippets/protobuf.js delete mode 100644 IDE/jsrealb-ide/ace-src-noconflict/snippets/python.js delete mode 100644 IDE/jsrealb-ide/ace-src-noconflict/snippets/r.js delete mode 100644 IDE/jsrealb-ide/ace-src-noconflict/snippets/rdoc.js delete mode 100644 IDE/jsrealb-ide/ace-src-noconflict/snippets/rhtml.js delete mode 100644 IDE/jsrealb-ide/ace-src-noconflict/snippets/ruby.js delete mode 100644 IDE/jsrealb-ide/ace-src-noconflict/snippets/rust.js delete mode 100644 IDE/jsrealb-ide/ace-src-noconflict/snippets/sass.js delete mode 100644 IDE/jsrealb-ide/ace-src-noconflict/snippets/scad.js delete mode 100644 IDE/jsrealb-ide/ace-src-noconflict/snippets/scala.js delete mode 100644 IDE/jsrealb-ide/ace-src-noconflict/snippets/scheme.js delete mode 100644 IDE/jsrealb-ide/ace-src-noconflict/snippets/scss.js delete mode 100644 IDE/jsrealb-ide/ace-src-noconflict/snippets/sh.js delete mode 100644 IDE/jsrealb-ide/ace-src-noconflict/snippets/sjs.js delete mode 100644 IDE/jsrealb-ide/ace-src-noconflict/snippets/snippets.js delete mode 100644 IDE/jsrealb-ide/ace-src-noconflict/snippets/soy_template.js delete mode 100644 IDE/jsrealb-ide/ace-src-noconflict/snippets/space.js delete mode 100644 IDE/jsrealb-ide/ace-src-noconflict/snippets/sql.js delete mode 100644 IDE/jsrealb-ide/ace-src-noconflict/snippets/stylus.js delete mode 100644 IDE/jsrealb-ide/ace-src-noconflict/snippets/svg.js delete mode 100644 IDE/jsrealb-ide/ace-src-noconflict/snippets/tcl.js delete mode 100644 IDE/jsrealb-ide/ace-src-noconflict/snippets/tex.js delete mode 100644 IDE/jsrealb-ide/ace-src-noconflict/snippets/text.js delete mode 100644 IDE/jsrealb-ide/ace-src-noconflict/snippets/textile.js delete mode 100644 IDE/jsrealb-ide/ace-src-noconflict/snippets/toml.js delete mode 100644 IDE/jsrealb-ide/ace-src-noconflict/snippets/twig.js delete mode 100644 IDE/jsrealb-ide/ace-src-noconflict/snippets/typescript.js delete mode 100644 IDE/jsrealb-ide/ace-src-noconflict/snippets/vbscript.js delete mode 100644 IDE/jsrealb-ide/ace-src-noconflict/snippets/velocity.js delete mode 100644 IDE/jsrealb-ide/ace-src-noconflict/snippets/verilog.js delete mode 100644 IDE/jsrealb-ide/ace-src-noconflict/snippets/vhdl.js delete mode 100644 IDE/jsrealb-ide/ace-src-noconflict/snippets/xml.js delete mode 100644 IDE/jsrealb-ide/ace-src-noconflict/snippets/xquery.js delete mode 100644 IDE/jsrealb-ide/ace-src-noconflict/snippets/yaml.js delete mode 100644 IDE/jsrealb-ide/ace-src-noconflict/theme-ambiance.js delete mode 100644 IDE/jsrealb-ide/ace-src-noconflict/theme-chaos.js delete mode 100644 IDE/jsrealb-ide/ace-src-noconflict/theme-chrome.js delete mode 100644 IDE/jsrealb-ide/ace-src-noconflict/theme-clouds.js delete mode 100644 IDE/jsrealb-ide/ace-src-noconflict/theme-clouds_midnight.js delete mode 100644 IDE/jsrealb-ide/ace-src-noconflict/theme-cobalt.js delete mode 100644 IDE/jsrealb-ide/ace-src-noconflict/theme-crimson_editor.js delete mode 100644 IDE/jsrealb-ide/ace-src-noconflict/theme-dawn.js delete mode 100644 IDE/jsrealb-ide/ace-src-noconflict/theme-dreamweaver.js delete mode 100644 IDE/jsrealb-ide/ace-src-noconflict/theme-eclipse.js delete mode 100644 IDE/jsrealb-ide/ace-src-noconflict/theme-github.js delete mode 100644 IDE/jsrealb-ide/ace-src-noconflict/theme-idle_fingers.js delete mode 100644 IDE/jsrealb-ide/ace-src-noconflict/theme-katzenmilch.js delete mode 100644 IDE/jsrealb-ide/ace-src-noconflict/theme-kr.js delete mode 100644 IDE/jsrealb-ide/ace-src-noconflict/theme-kuroir.js delete mode 100644 IDE/jsrealb-ide/ace-src-noconflict/theme-merbivore.js delete mode 100644 IDE/jsrealb-ide/ace-src-noconflict/theme-merbivore_soft.js delete mode 100644 IDE/jsrealb-ide/ace-src-noconflict/theme-mono_industrial.js delete mode 100644 IDE/jsrealb-ide/ace-src-noconflict/theme-monokai.js delete mode 100644 IDE/jsrealb-ide/ace-src-noconflict/theme-pastel_on_dark.js delete mode 100644 IDE/jsrealb-ide/ace-src-noconflict/theme-solarized_dark.js delete mode 100644 IDE/jsrealb-ide/ace-src-noconflict/theme-solarized_light.js delete mode 100644 IDE/jsrealb-ide/ace-src-noconflict/theme-terminal.js delete mode 100644 IDE/jsrealb-ide/ace-src-noconflict/theme-textmate.js delete mode 100644 IDE/jsrealb-ide/ace-src-noconflict/theme-tomorrow.js delete mode 100644 IDE/jsrealb-ide/ace-src-noconflict/theme-tomorrow_night.js delete mode 100644 IDE/jsrealb-ide/ace-src-noconflict/theme-tomorrow_night_blue.js delete mode 100644 IDE/jsrealb-ide/ace-src-noconflict/theme-tomorrow_night_bright.js delete mode 100644 IDE/jsrealb-ide/ace-src-noconflict/theme-tomorrow_night_eighties.js delete mode 100644 IDE/jsrealb-ide/ace-src-noconflict/theme-twilight.js delete mode 100644 IDE/jsrealb-ide/ace-src-noconflict/theme-vibrant_ink.js delete mode 100644 IDE/jsrealb-ide/ace-src-noconflict/theme-xcode.js delete mode 100644 IDE/jsrealb-ide/ace-src-noconflict/worker-coffee.js delete mode 100644 IDE/jsrealb-ide/ace-src-noconflict/worker-css.js delete mode 100644 IDE/jsrealb-ide/ace-src-noconflict/worker-javascript.js delete mode 100644 IDE/jsrealb-ide/ace-src-noconflict/worker-json.js delete mode 100644 IDE/jsrealb-ide/ace-src-noconflict/worker-lua.js delete mode 100644 IDE/jsrealb-ide/ace-src-noconflict/worker-php.js delete mode 100644 IDE/jsrealb-ide/ace-src-noconflict/worker-xquery.js delete mode 100644 IDE/jsrealb-ide/aide.html delete mode 100644 IDE/jsrealb-ide/css/JSrealIDE.css delete mode 100644 IDE/jsrealb-ide/help.html delete mode 100644 IDE/jsrealb-ide/js/JSrealB-IDE.js delete mode 100644 IDE/jsrealb-ide/js/jsNode.js delete mode 100644 IDE/jsrealb-ide/js/jsTokenizer.js create mode 100644 IDE/nodeIDE.js create mode 100644 build/Constituent.js create mode 100644 build/Date.js create mode 100644 build/Number.js create mode 100644 build/Phrase.js delete mode 100644 build/README.md create mode 100644 build/Terminal.js create mode 100644 build/Utils.js delete mode 100644 build/__pycache__/ppJson.cpython-36.pyc delete mode 100644 build/__pycache__/ppJson.cpython-37.pyc delete mode 100644 build/addLexicon-dme.js delete mode 100644 build/addLexicon-en.js delete mode 100644 build/addLexicon-fr.js delete mode 100644 build/compareDmeEn.py delete mode 100644 build/core.js delete mode 100644 build/coredate.js delete mode 100644 build/dm2lexicon.py delete mode 100644 build/elision.js delete mode 100644 build/elisionTests.js delete mode 100644 build/jsRealB-dme.js delete mode 100644 build/jsRealB-dmefr.js delete mode 100644 build/jsRealB-en.js delete mode 100644 build/jsRealB-enfr.js delete mode 100644 build/jsRealB-fr.js delete mode 100644 build/lemmatization.js delete mode 100644 build/lexicon-dme.js delete mode 100644 build/lexicon-en.js delete mode 100644 build/lexicon-en.json delete mode 100644 build/lexicon-fr.js delete mode 100644 build/lexicon-fr.json delete mode 100644 build/lexicon-var-en.js delete mode 100644 build/lexicon-var-fr.js delete mode 100644 build/makefile create mode 100644 build/module-end.js create mode 100644 build/module-exports.js create mode 100644 build/module-start.js delete mode 100644 build/node-module.js delete mode 100755 build/ppJson.py delete mode 100644 build/rule-en.json delete mode 100644 build/rule-fr.json delete mode 100644 build/rule-var-en.js delete mode 100644 build/rule-var-fr.js rename {build => data}/lexicon-dme.json (99%) create mode 100644 data/lexicon-en.js create mode 100644 data/lexicon-fr.js create mode 100644 data/lexiconFormat.html rename {build => data}/rule-en.js (99%) rename {build => data}/rule-fr.js (99%) delete mode 100644 demos/HuangExamples.js delete mode 100644 demos/VariantesDePhrases/index-dev.html delete mode 100644 demos/elision/index.html delete mode 100644 demos/inflection/index-dev.html delete mode 100644 demos/lemmatize/lemmatizer.js create mode 100644 dist/datedCore.js delete mode 100644 dist/jsRealB-dme.min.js delete mode 100644 dist/jsRealB-dmefr.min.js delete mode 100644 dist/jsRealB-en.min.js delete mode 100644 dist/jsRealB-enfr.min.js rename build/filter-dme.js => dist/jsRealB-filter.js (74%) delete mode 100644 dist/jsRealB-fr.min.js create mode 100644 dist/jsRealB-node.js create mode 100644 dist/jsRealB-node.min.js rename build/server-dme.js => dist/jsRealB-server-dme.js (63%) create mode 100644 dist/jsRealB-server.js create mode 100644 dist/jsRealB.js create mode 100644 dist/jsRealB.min.js rename {build => dist}/testServer.py (83%) mode change 100644 => 100755 delete mode 100644 documentation/in_action/LISEZMOI.html delete mode 100644 documentation/in_action/LISEZMOI.md delete mode 100644 documentation/in_action/README.html delete mode 100644 documentation/in_action/README.md create mode 100644 jsRealB2.html create mode 100644 jsRealB2.js create mode 100644 makefile diff --git a/Architecture/README.md b/Architecture/README.md new file mode 100644 index 00000000..4e3b861e --- /dev/null +++ b/Architecture/README.md @@ -0,0 +1,432 @@ +# Architecture of a Text Realizer + +``` +Guy Lapalme +RALI-DIRO, Université de Montréal +November 2019 +``` + +This document describes the design principles behind [jsRealB](http://rali.iro.umontreal.ca/rali/?q=en/jsrealb-bilingual-text-realiser), a system written in *Javascript* that can produce English or French sentences from a specification inspired by the *constituent syntax* formalism. It can be used either within a web page or as a `node.js` module. + +The text realizer is at the very end of a text generation pipeline. Important decisions about *What to say* have already been made. Sentence structure and most content word choices must also have been decided. + +But there is still interesting work to do: the realizer must take care of many language peculiarities such as conjugation, word order, elision, number and person agreements. These might seem to be small *details*, but users appreciate them and find it very annoying or disturbing when they are not properly dealt with. Our realizer allows creating many variations (e.g. negative, passive or interrogative) from a single affirmative sentence structure. + +`jsRealB` has been developed by my students since 2013. The source code is now available on [GitHub](https://github.com/rali-udem/jsRealB) with a tutorial and demo applications. I recently decided to build on that experience and redesign the system from the ground up. I kept the same external interface using the existing tests and demos to develop the new version. Only the inner workings have been changed and simplified given my experience with the system over the last few years. + +This document takes for granted that the user has some knowledge of constituent syntax and Javascript. The reading of the first sections of the [jsRealB tutorial](http://rali.iro.umontreal.ca/JSrealB/current/Tutorial/tutorial.html "jsRealB tutorial") might also be helpful. + +We first start with a small example to illustrate some of the challenges in building a text realizer that most people take for granted, but in which many details must be taken into account. We will then present the structure of the application. + +## Steps in the realization process + +### Structure creation + +To illustrate the steps to go from a `jsRealB` expression to the corresponding English sentence, we start with the structure for a very simple sentence: `He eats apples.` + + S(Pro("I").g("m"), + VP(V("eat"), + NP(D("a"),N("apple").n("p"))) + ) + +`jsRealB` expressions are standard Javascript expressions built by functions such as (`S`, `VP`,`Pro`, etc.), possibly modified with methods (i.e. object functions using the dot notation), so no special parsing of the input to `jsRealB` is necessary. The system takes for granted that the internal representation is a valid Javascript data structure built by the functions. Conventionally in Javascript, identifiers starting with a capital letter are constructors not functions. But in Linguistics, symbols for constituents start with a capital letter so we kept this convention. Moreover in the previous version of `jsRealB`, constituents were created using constructors, so this allows source code compatibility between the two versions. + +This expression corresponds to the following sentence structure: + +* a sentence (`S`) composed of: + * a personal pronoun `Pro` as subject; its argument `"I"` is used as lemma for all personal pronouns that can be modified in gender here masculine `g("m")`; the number `n("s")` and the person `pe(3)` are not specified because they are the default; + * a verb phrase `VP` composed of: + * a verb `V("eat")` + * a noun phrase `NP` composed of: + * an indefinite determiner `D("a")` + * a plural noun `N("apple").n("p")` + +which corresponds to the following tree structure: + +![Active](images/Active.pdf) + +The diagrams in this document use the following set of drawing conventions: + +![Legend](images/Legend.pdf) + +* Non-terminals (corresponding to a **Phrase**) are shown as a rectangle containing its name and possible options on the next line. + +* A **Terminal** (to be realized as a string of words, possibly none) is displayed as a rounded rectangle containing its name followed by its *lemma* in parentheses; possible options appear on the second line and in the third line is shown the realization string once it has been determined; this string does not appear yet, it will be computed later. + +* Full line arrows indicate child-parent relationships and dashed lines indicate agreement links between terminals (words). In the previous tree, the verb must agree in person and number with the subject (the pronoun) and the determiner must agree in number with the noun. In French, past participle can also agree in some cases with a direct object which is indicated by a dotted line. + +One of the many implementation challenges of `jsRealB` is the building of appropriate data structures using the functions while maintaining the agreement links between nodes in the tree. This will be explained later in the document, but first we explain how to go from an input structure to an English sentence. + +The previous example showed a single Javascript expression to build the internal structure. But a structure is most often incrementally and modified using Javascript instructions as shown below. + +When a realized sentence is needed, the usual Javascript `toString()` object method is called to perform a *stringification* process which involves setting the `realization` property of the object, formatting this string and then detokenization for building a single final string. We now detail these steps. + +### *Stringification* of constituents + +The production of strings from `Terminal`s and `Phrase`s is done recursively. Realization strings are produced for each `Terminal`, but also for each `Phrase` at each level of the tree. At each step, this process builds lists containing the original `Terminal`s which thus can access information from the original tree (e.g. number, gender or agreement links) for proper conjugation and declension. + +#### Setting the realization property +The `toString()` function of a **Phrase** calls `toString()` on its children and builds a single list of terminals with their realization field filled in. + +The `toString()` function of a **Terminal** applies declension or conjugation rules taking into account the gender, number, person and possibly tense information to create the `realization` field of the terminal. The following figure illustrates a few interesting cases. + +![Active-Realization](images/Active-Realization.pdf) + +* `Pro("I").g("m")` is realized as `he` because the gender is set to masculine, but the person and number take the default third person, singular; +* `VP("eat")` is realized with a string `eats` because the verb is conjugated to agree with the pronoun at third person, singular; +* `D("a")` produces an empty string because it is a plural indefinite article which must agree with a plural noun; the fact that it is plural is determined because the number is obtained by following the *agreement links*: `D` agrees with the `NP` which itself agrees with the `N` whose number is plural; +* `N("apple").n("p")` produces `apples`, the plural declension of the lemma `apple`. + +#### Formatting the `realization` property +Formatting is done in a series of optional steps. + +* Apply language dependent token modification rules taking into account the surrounding words: + * English: + * *euphony* of determiner `a` changed to `an` depending on the first letter of the next word, most often a vowel; + * French: + * *elision* for determiners such as `le`, `ce`, `la`, etc. or conjunctions such as `que`, `puisque`: if the next word starts with a vowel, then the last letter is changed to an apostrophe `'` which will be merged with the next word; + * *euphony* for adjectives such as `beau`, `fou` or `vieux` are changed to `bel`, `fol` or `vieil` if the next word starts with a vowel; + * *contraction* combining words such as `de le` to `du`, `si il` to `s'il`, `à les` to `aux`. +* modify the realization string to insert strings that should appear before (`.b(..)`), after (`.a(...)`) or around (`.en(...)`) the realization string; +* surround the realization string with HTML tags given by (`.tag(...)`). + +In the above example, no such modifications are needed, so the strings in the `Terminal` objects are left as is. Later examples will make use of these steps. + +#### Detokenization +When the `toString()` called for a constituent at the *top-level* level of an expression, i.e. its parent constituent link is `null`, a *detokenization* process is applied to produce the well-formed English sentence `He eats apples.` + +This creates a single string by inserting appropriate spacing between the realization strings of the terminals. When this is called for top-level `S`, it capitalizes the first letter of the sentence and adds a full stop at the end, unless indicated otherwise. + +## Structure modifications + +One interesting feature of `jsRealB` is the fact that a single affirmative sentence structure can be rendered as negative, passive, interrogative or with a modality verb using the `.typ({...})` method which can be applied to a sentence or a verb phrase. The object given as parameter of `.typ(...)` is a group of flags that determine the type of modifications on the affirmative sentence. + +We first illustrate the *simple* case of the negation. + +### Negation + + S(Pro("I").g("m"), + VP(V("eat"), + NP(D("a"),N("apple").n("p"))) + ).typ({neg:true}) + +The following diagram shows the sentence structure once the `.typ({neg:true})` is added to the top-level `S` constructor. This will modify the structure of the `VP` by adding an auxiliary *do* and the adverb *not* in front of the verb. But now it is the auxiliary `do` that must agree with the subject. + +![Negative](images/Negative.pdf) + +When this structure is realized it gives the following: + +![Negative-Realization](images/Negative-Realization.pdf) + +### Passivization + +We show here the *passive* transformation of our previous example `pas:true` is added in the object of the `.typ` call) to be realized as `Apples are not eaten by him.` + + S(Pro("I").g("m"), + VP(V("eat"), + NP(D("a"),N("apple")).n("p")) + ).typ({neg:true,pas:true}) + +In the *passivation* process, the object becomes the subject, the main verb becomes `be`, the original verb must be changed to past participle and the original subject becomes a prepositional phrase starting with `by`. In our example, the original subject being a nominative pronoun, it must be put to the accusative, that is why the lemma has changed from `"I"` to `"me"`. The agreement link between the original verb and the subject must be modified to link the verb `be` with the new subject; in this case the verb will be plural, but set to the negative mood because the whole sentence is negative. + +![Negative-Passive](images/Negative-Passive.pdf) + +Calling `.toString()` on this modified structure produces the following tokens: + +![Negative-Passive-Realization](images/Negative-Passive-Realization.pdf) + +### Pronominalization + +Another interesting structure transformation is the pronominalization process that can be applied to a noun phrase. This time we take an example in French because it illustrates more interesting transformation processes coupled with agreement difficulties within the realization process. The original structure is a small variation on our previous example for the sentence `Il a mangé une pomme.` (literal English: `He has eaten the apple.`) in which the verb is conjugated to *passé composé*, roughly corresponding to the English present perfect. This corresponds to the following `jsRealB` expression: + + S(Pro("je"), + VP(V("manger").t("pc"), + NP(D("un"),N("pomme")) + ) + +![French-Active](images/French-Active.pdf) + +which is serialized as the following instances of `Terminal`: + +![French-Active-Realization](images/French-Active-Realization.pdf) + +Now, if we pronominalize the `NP` by writing: + + S(Pro("je"), + VP(V("manger").t("pc"), + NP(D("un"),N("pomme")).pro() + ) + + +The expected sentence is `Il l'a mangée.` (literal English: `*He it has eaten.`). + +Pronominalization occurs when the object method `pro()` is called which modifies the structure as follows: + +![French-Active-Pronoun](images/French-Active-Pronoun.pdf) + +The noun being used as direct object must be replaced by an accusative pronoun. In this case `Pro("le").pe(3)` agreeing in gender and number with the original noun that will not be realized; this is why it is shown as a dotted rounded rectangle in the picture. + +In French, some *interesting* peculiarities must be taken into account: + +* a pronoun used as direct object must appear **before** the verb (except for an imperative verb), so the order of the children of the `VP` must be changed while maintaining the agreement links; +* A verb conjugated at the *passé composé* is built using an auxiliary verb (`avoir` in this case) followed by a past participle; +* a past participle must agree in gender and number with its direct object when it appears before it. This was not the case in the original sentence, but once the pronoun has been shifted before the verb, it must agree. An agreement link must thus be added between the verb and the pronoun which itself agrees with the original noun. + +The modified structure is realized in the same way as in the preceding section to give the following tokens: + +![French-Active-Pronoun-Realization](images/French-Active-Pronoun-Realization.pdf) + +which after the elision process to transform `la a` to `l'a` and the formatting gives: `Il l'a mangée.` + +#### Further modifications + +If we negate the previous expression as: + + S(Pro("je"), + VP(V("manger").t("pc"), + NP(D("un"),N("pomme"))) + ).typ({neg:true}) + +Negation in French negation is indicated by wrapping `ne ... pas` around the verb, so it implies adding the adverb *ne* before the verb. + +![French-Negative](images/French-Negative.pdf) + +This is realized with the following tokens: + +![French-Negative-Realization](images/French-Negative-Realization.pdf) + +When the `NP` in this sentence is pronominalized as: + + S(Pro("je"), + VP(V("manger").t("pc"), + NP(D("un"),N("pomme")).pro()) + ).typ({neg:true}) + +We now have the following structure in which the pronoun appears before the verb but after *ne*, the first part of the negation which gives the following structure: + +![French-Negative-Pronoun](images/French-Negative-Pronoun.pdf) + +realized as the following tokens + +![French-Negative-Pronoun-Realization](images/French-Negative-Pronoun-Realization.pdf) + +resulting in the sentence `Il ne l'a pas mangée.` + +### Remarks on structure modification + +So we see that it is possible to get many variations from a single input structure, we think that this feature is one of the most interesting and fruitful use for a text realizer. We have seen that a single input specification can become quite different once the options have been applied. + +## Other interesting features to take into account + +### Incremental building of *phrases* + +Although our previous examples of `jsRealB` expressions have been created manually, these expressions are most often created by programs by calling the functions from within a Javascript program. Moreover it can happen that not all arguments to a phrase are determined before building the call to the function; for example, the subject and the verb can be determined in one part of the program and only later are the complements specified. To account for this possibility, `jsRealB` allows to add new elements to an existing phrase. This is done with the `add(Constituent,position)` method which adds either a `Phrase` or a `Terminal` to the current `Phrase` at a certain position (given by a non-negative index). If `position` is not specified, the element is added at the end of the current elements. + +For example + + S(Pro("I").g("m"), + VP(V("eat"), + NP(D("a"),N("apple").n("p")).add(A("red")) + ) + ).add(Adv("now"),0) + +is realized as `He eats red apples`. The adjective `red` is added at the end of the `NP` but because all adjectives in English are placed before the noun, it appears before the noun. The adverb `now` having position 0, is inserted at the start of the sentence. + +### Coordination + +Coordinated phrases are specified by a phrase `CP` in which a conjunction must be given with as many elements as needed. All elements except for the last are separated by a comma followed by the conjunction and the final element. For example: + + S(CP(C("and"),NP(D("the"),N("apple")), + NP(D("the"),N("orange")), + NP(D("the"),N("banana"))), + VP(V("be"),A("good"))) + +is realized as `The apple, the orange and the banana are good.` in which `jsRealB` takes into account that the subject is now plural because of the `and`. If `C("or")` had been given, the verb would have been realized as singular. + +Such coordinated sentences are often build incrementally and thus should only one element be needed. For example, + + S(CP(C("and"),NP(D("the"),N("apple"))), + VP(V("be"),A("good"))) + +is realized as `The apple is good.` in which the conjunction is ignored and the number stays singular (unless the single subject is plural). + +The generation of the tokens for a coordinated phrase must be performed at the *last minute*, i.e. at realization time, for which this special case must be checked. + +### Reusing `jsRealB` expressions + +One of the advantages of using a programming language for creating text is the fact that repetitive structures can be coded once and reused as often as needed. `jsRealB` expressions, being Javascript values, can be saved in variables, received as parameters or returned as result from functions. This fact is heavily used in the demos and tutorial. + +As the options modify the original structure of the expression, it is worth pointing out that reusing a modified expression will use the modified expression and not the original one; this is the usual Javascript behavior for objects. So given the following definition: + + var apple = NP(D("a"),N("apple")) + +the expression + + S(Pro("I").g("m"), + CP(C("and"), + VP(V("eat"),apple), + VP(V("love"),apple.pro()))) + +is realized as `He eats an apple and loves it` which is expected. + +But now, the following expression + + S(apple,VP(V("be"),A("red"))) + +is realized as `It is red.` in which the pronominalization of `apple` is still in effect. + +If this is not what was intended, then a new `apple` object should be created before pronominalization. To achieve this, we can call `clone()`which creates a new copy of the `Constituent`. This is implemented by traversing the object and creating a `String` that corresponds to the `jsRealB` expression for building this object. The resulting string is then evaluated in the current context to build a copy of the original expression. So our previous `S` could have been coded as + + S(Pro("I").g("m"), + CP(C("and"), + VP(V("eat"),apple), + VP(V("love"),apple.clone().pro()))) + +after which + + S(a,VP(V("be"),A("red"))) + +is realized as `The apple is red.` + +### Formatting + +`jsRealB` being aimed at web developers, it is important to deal with the generation of HTML tags using the method `tag(name,attributes)` where `attributes` is an optional object whose keys are attribute names and values the corresponding attribute values. When this method is encountered, it only saves the parameters and the values in the constituent. As described above, it is at *stringification* time that these values are used to create the final string while taking into account HTML tags. For example + + S(Pro("I").g("m"), + VP(V("eat"), + NP(D("a"),N("apple").tag("a",{href:'https://en.wikipedia.org/wiki/Apple'})) + )) + +is realized as `He eats an apple.` in which the elision is performed between `a` and `apple` even though the first letter of `apple` does not appear immediately after `a`. + +The punctuation before, after and around constituents is dealt similarly. The appropriate values of the strings to be inserted are saved within the constituent structure and used during the *stringification* process. + +**CAVEAT**: This implementation choice implies a *small* limitation: HTML and other formatting cannot appear anywhere within the text, they must match constituent boundaries. + +### Conclusion + +We have described some aspects of the `jsRealB` system that define an interesting middle ground between a very abstract input specification and a detailed formatting language. It allows automating the *finishing touch* for well-formed language that can be published or sent to a user. This section has merely described the challenges that have been dealt with. The next section give more details on the internals of the system. + +## Organization of the system + +This section is quite *technical* and has been designed as a high-level documentation for a user wishing to modify the system. It is more easily understood in parallel with the source code. + +### Class structure + +Although Javascript is not a class-based object system, the structure of `jsRealB` can be understood as a small hierarchy of three classes shown below in which shared methods for both `Phrase` et `Terminal` objects are defined in `Constituent`. The user does not (in fact, cannot) call the following constructors. The user instead calls functions such as these ones, for a `Phrase` or a `Terminal` that return the value created by the constructor. + + function NP (_){ return new Phrase(Array.from(arguments),"NP"); } + function N (lemma){ return new Terminal("N",lemma) } + +In the figure, each *class* title shows its parameters, the first cell shows in italics the associated properties with their type followed by methods used when creating the object; next are shown the methods for each class. + +![JsRealB-classes](images/JsRealB-classes.pdf) + +All functions validate their input, in the case of errors, they generate a warning message on the console. Realization is not stopped, the resulting string is the original lemma enclosed in double square brackets. + +We now describe the methods in each box. Only the main methods are shown and described here, auxiliary or simple utility methods are ignored here as are methods in other files: `Date.js`, `Elision.js` and `Number.js`): + +#### `Constituent` +The constructor initializes the object properties `constType` with the parameter, `prop` to an empty object, `realization` to `null` and `lang` to the current realization language. + +* `getProp(propName)` : find the current value of the property by first looking if the object has a value for this property; if it is not the case, follow the `agreeWith` links and look for the given property in the final object. If the value is not found, look for a default value which is language dependent: `{g:"n",n:"s",pe:3,t:"p"}` for English and `{g:"m",n:"s",pe:3,t:"p",aux:"av"}` for French. If the value is not found, return `undefined`. +* *option functions* : implement functions that set properties in the object. As these functions all follow the same following pattern, they are created by a generic function that implements these steps: + * check that the value is allowed for this option e.g. only 1,2 or 3 are allowed for `pe`; + * check that the current object is allowed to have this option; + * if the current object is a `CP`, propagate the option to the internal coordinated constituents; + * follow possible `agreesWith` link to find the end object to which the option will be set; + * set the property in the object. +* *special options* : some options that do not follow the previous pattern are dealt specially: + * `tag(name,attrs)` : add `name:attrs` to the current prop list; + * `dOpt` : options for numbers or a date, do validation and save as object property; + * `nat()` : indicates if a number or a date will be realized in letter or numeric format. +* `verbAgreesWith` : set an `agreesWith` link between the current object and the object indicated as subject. +* `doFormat()` : during realization, deals with elision, punctuation, capitalization and HTML tag wrapping. +* `deTokenize()` : add appropriate spacing between the realization of each token then applies the elision process; if the current object is a `S` at the top level, capitalize the first letter unless an option forbids it and add a full stop at the end. +* `toString()` : call `real()` and then `deTokenize()` defined in the current `Phrase` or `Constituent`. +* `toSource()` : produce a string that corresponds to the options of the current object, this is useful for error messages, for debugging and for cloning. +* `clone()` : evaluate the string produced by toSource() which in effect creates a new `jsRealB` object. + +#### `Phrase` +Note that given the applicative order of execution of Javascript, this constructor is only called once all its parameters have been created. +The constructor first calls the `Constituent` prototype and then initializes its list of elements with the `elements` parameter: it copies all elements but the last and then calls `add(element[last])`. + +* `add(constituent, position)` : it adds the `constituent` to the list of elements to the given position (last if undefined); it then calls `setAgreementLinks()`; it checks for some special cases: + * if an element is an adjective, it is placed before the noun in English, but in French some adjectives must be put before the noun, but most are put after; if the adjective has been marked as either pre or post-posed, then it is placed accordingly; + * if an element is a noun that is marked as being pronominalized, then call `pronominalize()`. +* `setAgreementLinks()` : go through all `elements` and adjust agreement links depending on the type of the current element: + * `NP` : check the following: + * make the current `NP` agree with the first `N` taking into account a possible `NO` which can change the number; make elements `D`, `Pro` or `A` agree with this element; + * if there is an internal `SP` containing a `Pro`: + * if the pronoun is `who` (or `qui` in French) make the verb in the `SP` agree with this element because it is subject; + * in French, check for pronoun `que` that might be a direct object occurring before the verb; this will be checked when conjugating because if it occurs as a past participle it must agree with this NP. + * `AP` : agrees with the first internal `A`. + * `VP` : agrees with the first internal `V`. + * `S`,`SP` : agrees with the subject (i.e. first `NP`,`N`,`Pro` or `CP`) and check special cases + * in French, an adjective following the verb `être` must agree with the subject; + * if there is coordination of verbs, then all verbs must agree with the single subject. +* `findGenderNumber(andComb)` : when many `N` occur within an `NP` determine the combined + * gender: feminine if all `N` are feminine, masculine otherwise; + * number: plural if there more than one and they are combined with `and`, singular otherwise. +* `pronominalize()` : **NB**: this applies to a `NP` but it must be called by the *parent* constituent that sets the `parentConst` link + * find the role of the `NP` (subject, direct or indirect object) within the parent constituent to determine the proper pronoun to use; + * create the pronoun, make it agree with the current NP and replace it in the sentence (possibly move it before the verb in French). +* `passivate()` : find the subject and the object and invert them in the sentence, change the verb to passive (i.e. insert the verb `be` and put the original verb to past participle); in French, make the past participle agree with the new subject. +* `typ(types)` : perform structure modification of a `S`, `SP` or `VP` in the following order, when hte appropriate flag is set: + * *passive*: call passivate(); + * *progressive*, *modality*, *negation*, *perfect*: + * in French: + * *progressive*: change the verb to `être en train de` *verb*, where `être` is conjugated like the original verb which is then set to infinitive; + * *modality* : add the appropriate modality verb in front of the verb which is set to infinitive; + * *negation* : insert `ne` before the verb and set a conjugation flag that will used when conjugating the verb at realization time. + * in English: these options are implemented with auxiliary and modality verbs using the "affix hopping" rules by building a list of auxiliaries and affixes; these lists are then processed to create a list of Terminals with the appropriate conjugation flags; this list then replaces the original verb; + * *interrogation* : + * start with the appropriate interrogative pronoun; + * move the auxiliary in front of the verb; + * in some cases, remove the subject, the direct or indirect object. + * *exclamative*: terminate the sentence with an exclamation mark. +* `real()` : if the current object is a `CP`, generate terminals by realizing each element of the `CP` and inserting a comma between the first elements and the conjunction before the last; for other types of phrases, realize each element and combine their list of Terminals into a single list; apply `doFormat()` on the resulting list. +* `toSource()` : create a list of the result of `toSource()` to each element separated by commas and prefixed with the name of the phrase; the options are added by calling `toSource()` of the prototype constituent. + +#### `Terminal` + +* `setLemma(lemma,terminalType)` : initialize the object property `lemma` using the parameter and depending on the `terminalType` do one of these: + * `DT` : initialize the date with the value of the lemma and set the default attributes for a date; + * `NO`: initialize the date with the value of the lemma and set the default attributes for a number; + * `N`, `A`, `Pro`, `D`: search the lexicon for the `lemma`; from this information set the object attributes `tab` and compute the `stem` to be used in the declension process; other information from the lexicon is saved in the objet `prop` attribute. +* `grammaticalNumber()` : computes the grammatical number for a `NO` in both French and English; +* `decline()` : using the `tab` number and `stem` property, find the string corresponding the gender and number of the object; comparative and superlative are dealt also according the the language; +* `conjugate()` : using the `tab` number and `stem` property, find the string corresponding the gender, number and person of the object which should be a `V`; rules handling is specific for French and English; +* `numberToWord()` : realize a number a string of words; +* `numberToOrdinal()` : realize the string corresponding to an ordinal number; +* `dateFormat()` : realize a date according to the language specific options and rules ; +* `real()` : set the `realization` field for this terminal depending on its `constType: + * `N`, `A`, `D`, `Adv`, `Pro`: result of `decline()`; + * `V` : result of `conjugate()`; + * `DT`: result of `dateFormat()`; + * `NO`: result of `numberToWord()`, `numberToOrdinal()`, `numberFormatter()` or the current value, depending on the options; + * `C`, `P`, `Q` : return the lemma; + + Finally call `doFormat()` (defined in `Constituent`) with a singleton string containing this `Terminal`; +* `toSource()` : return the lemma within quotes and parentheses preceded by the `constType`; call the `toSource()` of the prototype to add the options. + +### Utilities + +These functions (except for the first) can be called by the user to change global information for the realizer. They are described in the [documentation](../documentation/user.html#vocExtension). + +* `extend(base,sub)` : create a *subclass* by manipulating prototype links (cannot be called by the user); +* `loadEn(trace)` : set the current lexicon and rule table for realizing sentences in English; +* `loadFr(trace)` : set the current lexicon and rule table for realizing sentences in French; +* `addToLexicon(lemma, infos)` : add a new lemma to the current lexicon by giving information for conjugation and lemmatization; +* `updateLexicon(newLexicon)` : replace the current lexicon by a new one; +* `getLemma(lemma)` : return the lexicon information for a given lemma; +* `getLanguage()` : return the current realization language; +* `oneOf(elems)` : selects randomly an element from a list. + +## Conclusion + +This document has described in some details the inner workings of a bilingual English-French text realizer. `jsRealB` has been used for creating demos and as an intermediary language for realizing sentences either from AMR structures or from Universal Dependencies in the context of the Surface Realization Shared Task (SR'19) at EMNLP. + +We have shown that a seemingly simple task of producing well formed natural language text from a relatively abstract formalism involves a lot of intricate details that must the dealt with in order to create fluent and correct sentences. + + diff --git a/documentation/in_action/githublike.css b/Architecture/githublike.css similarity index 100% rename from documentation/in_action/githublike.css rename to Architecture/githublike.css diff --git a/Architecture/images/Active-Realization.pdf b/Architecture/images/Active-Realization.pdf new file mode 100644 index 0000000000000000000000000000000000000000..91a64215d7766ebd5b3f56e826cdd47a772cfa73 GIT binary patch literal 17972 zcmb7s1wd3y_ctvpA&v9`iZm>+EDK0?gLHS7bR$SBAtBPzDBU6{jS^Cl0@5WRh?MZ{ zq8N|Q`+whW7k1~KJ9pyD+~573b7uCIvbZEGh>Z(yt7G}|@@B#Qvv(a`0B#@$(9y&O zARqu_mp6B?bhQG4VIox^yQH<9tGP4m+s@e4T-@B$(aanuCqkSM`Nib=(ZmbkALfQ1vzq;DzW>G*4e`P4kZN6cS!h6rGyd9;e+-~?; zLVHl9h8FP~J6my;ydzDiCCTf(I)SQ3Wm89YlzRr9!tgSR*;ttP_3*|XoIgo^@gP*0 zc4larc+1{$o#@G~Ap6>hM_>D%&<`P$^OU4E$O0DND=c%5>MIMc+|?^0c}#X>CRmvvx(>21_jb({w>-4r#r+| z6%cE!NS7}w8)2i|v=A&h>?RC5tjtoMFD=D~sUMF&Q|(PRn59#m)f?%5+T&lEs(s`q zFYt)O#$4Cmv;N(F#*GN6RMW6;Zsr8D+q!xr2e;)54s@x<;>7E2_1vON=<7gSyL}gb0?UEL0@ZiBP}aW8slI4MpUd zvF8r)SjpNQP{d4i8t52+Y;&vyOODdk7dIBESJ;=%YZE1Uq)Pcqbqs1-AFMb0Rug+s5R?z;x^J=NC1y-{ zYL)c}@Gx#Tml@;q)7`iA+7Wz-8Dk93cH*_M+z`J>)Yo7))l8TfY85Kely?(PqGAts zbK>YtQNM~S0%zXsR!lLI84!r|XCNNdppslIO1|SoyC|V_@0~_OM)=JLK(OAEY|i># z;Rswhy2mA)pOzRNi{kjwcidm$m1q%1HSKmLaiu3_N@IPwD7jk9-5vLaPnl^{m1*>a z8n-6Lvq;&H0VJ$lKHpG-X*!=+O?|g#YK3`fh3dB*OVNwESc{4e$Da!~89r-!B`9Hy zY0E-Ebf>ebdDl7cAy=;?@@!^&ms6J3y@}d{)Yne=<9uQpQU&S8jBThC#Hiz0F*w)w z?ybqg3am&_y7ZizmQ?5jCX56o^1ZMQ zZb~R6$1)mG@Es;ol7bY~<5RH`FhFmtRZ1dF+!Bs}5YSMzp-EfT1~GkC1?OYH{u}W) zG}Yu-5ew1czF;kI#fK#(`S5JctSSbAXw0w9?OCE=O;QE|Z|!7d+Z11CA~m_0Hu0L4 z*C_b&$BKbnPv7kv6{n5AIPS*ByB##>0Z=np@uazvwYRru>@JwRc#l?alStqIl#kg- zwuMh2=WOflCw#Z8B%3O=7Jsr>yH9k)`O!}5!+3Y$X=C3{9lX!1iF;nmJNm>OifO-e z>`72Uj51cgR#VcX4!cHZ^wv@_ZMFIXbw)&bt8NFbl&} z1#>fNV^K#>pe_eYzy*Q=K@gBWfL+zm6$Y{}5e#5|)Ce!(3Ye9h9Zm0=y8?A#)rw03 z+11QFU4i;Qb}>ggN9Vgv#-`>#IDU({fPj$i6^XfU0(mc!f`TvzhcyG11Hi7P1_pwD zG*(Rw1cZLit)|8a1i@PbYoeMO7Z3!xy7X6jK>zZj0R4DWD8dxLE&_jCIKaEXE^h8_ zZECJ6CHmi=A|dL!;pFN!&f}rIfQEsQsWH}Eu_jl>2Dw_I4|&xoy7ASvWR;U+#3EJk z@n(HnHwWa0G5wf=79JKg%ZM~Kv7!eJd%u2v?Ns%-vWCYdErVdSrwGG=MBN^LycxZ= zO{)2z@BX*BW5?A@((J$*(WcTAkJTAS3pJ#?l-?Z`_uhWp_s*tf1YTSwIAHeq) zWiI{JqAL`u#G!e6+ipkGv7Vg8S?<>757(MCsz-0l6Nm>^*?g#uKns1XL|wOu^pGM{ z;U@Z7cIz@vXjCZ4^buGpez5Zy6qBVWQ54S;)zh~kjQ#7pJC1UzQXKirsG7t9t?hf+ zlmSXHpZc(RDKE&&T!?bj{&b*Q&x--dE;p>27FCuG)C?2@70d|eywv?Na7~E(wYk#i zA&Om7@$>Yk4PO*bh|>!*s!~c4& zbhmoVFb=ht zR2igXA{TUS6FkAU&VBH)+?j*IL%%<`YA~D0Gb$yzzb(Zr;ZwSPiKuxwn!ZOhQ>Q4k z3UUV1!L^CV&AVAQw#nw-Tr3u(zm1B{BqKLAt|hrRonVh_F`2oqMC7jHj$>o7WP1aCuPL^8E@a0KEf2_~pO->S*Tc3$X#!AZT z#-D0InH-a-pDcdHIacv{ug>^6T;Nv0l76|J$6$Y|V_u!}!7@X(+o{W{)`Iqso)Rze z+_$F){SPM~$ooB7Ig7j2*>fhdSbP}vJMrVs!$T$rl_Wnnv6Q*SzA)4mfghgXYDLVBg%sy=&ZzrM)`svA#Z!Eo3 zedpE*(vIw9b>Q*37uVr&cZ=>-vP*MVv%RLkfPbjfg`wwHzny#CWa7-kLp_UBkWi0h z1fb(tmwE;K5qZ zIrXzlU-iE+`x1#RL7M{ty@F6U7Q$sP*pv|y6E$`*Hv?Y6m?}{JDi7#)oc%$7K|erL z5eWJhSd(%#_WECNP2Y+_olvmB#S$6+8g(@`YxM&mdyI9?2n~XVHPZ^OWC-duE$*f= zy>WHt;qN!INK5`epQV&HpGu6fUi3_`D+s-oiHH3#FRwFB7JMCmr}GHN;HSFF&oyo4 zF2dQKe!N}3n&C6xv0a~3xas&|f2&%Sdo|cUD=k$J>L>f@m4dZuVe0OhCB0IJzMLb>fNOWjYVx`#_INN>D*6}qB|C5Vz++M1%zE6L65#scR*SOZBhCT*yd>hy zM9BS21Oqokl9;-Kamx?)YDdIwez_rXPPkjus`G(jQQ&zi(Hv`);M?{WPywVf&fQzg z6h#Q_%?D!d(#)Xc&pN#`zIEu(`bY|CAkCur_Ecjw5^se^l02DM0q!=Ml6bLpu(73z z5VD()2!(ukV^z#vAlB06l1U%;b+kCgv~^ybs^m0>B}~Y9ZE|SV8_%=XF#&pbr`7hA zkSaoGf1jzk-%~GtM9=$*xvreOc_T+;OYd63A;5mN`5s_d5#4vy zL14O7Eq|bOJ0nMx=uV`Vy1*7+?6*ptw2O8uU()J2`lXY2JrLi}% z%Wrp}GT^O7zdk`wd;H9NglIa1K0}J1fxd&;L>cQblL1j!Ck+T|J(l-Ie?*hg$$-D$ zMEL>Rdxeu`EF95d%XY47#ZKIa0!P<22P9K4YT34}w)PuiW`%ZIOiAkmkE)`Y5Kch1 zTV7{l+S1=zF%bHypwuSjCgJ<#efsw1>Y68~oXYHrbnUqDrPI%V=C4a*x!A{+UPL=h zwR(5nU|z)6_tQx7$MuU02&Af1-|Hf8rFr>W!sW0|TfTC=)}-2~S2Q8L=;g&*jQw_j zx(Zbnw(Z@M9n>Fyy$yw5vFNW)$lTi^Z@A{)<@4U^6Ng1;6(R0^+f*Mwj(X1n%{29xD{IUE zIlUpklyy10@~)R8sfIiAAR~cnnX@po*iIAe-AST~IlH90L%Eshoq_uy0dbZO^XW<# z1S&M$%2(UvD0lJ=_1fQuf+u9|;ABir<>Qp$X|@oln>O<6r=jsF(3m_NpmnC^OQXL1 z;(TCIFP;~y>bQ_l-oZA+-lYS6N^ng%WYPW$Z;yHkX)l(gbFPIqmss+7AE-;Ec<4B8 z^5GDTuN3|)*IUpb*IYl@2Y4aVGO7A!ex8}vf~busbW{{ntjKnDVW zc&>mA&i?)azwfm4C-}jc;1$RG#cEyt$y0eioInVa^OA77!I&fr73HkWTwrt*PK#k+ z`WtNpUDXRGq~FUFGj=t$bF}xtqIMn;I*cyP31fz$&sf{mysA&0S2Lt({yQodGbKeMxO49AHii zYX?|M6pT$(9qo-Ben}*)on2hTtc;z3T%0gZi1CjDm_mWJT{O2&i zRr0see<|&|5*3Z@VRZig*0r6nr3(w&b%z>=1Da9`0VhT5&pkN5xWcYr-$_e5Eu!|WxNt;_+TDiguRG4XT*VWu!1J+=e zhsyYJ06BSq>{>r_z=~2Z_PiV=ScM$0eDFB}^Iw^B0yyCsQ2lL!UJ9;y{^Nnq`Q6_6 z;Q)hai-!YN!GCjrl_Uk&k;@Qu&-I;1nK+v8A9fiueA(`5QJuENpN>eSSC}bE=TTr_ zv@i6_#n`+(zAq4dW>Rp+&B}w6;cwS10XUg|PMG;?9 zJKc{J&Mwf9BHvH1A@?u5^MTs#ivX9S#a!cYpO0he*jr6v>HN)`D#rfS4k3NrpZU2R z`waER`e`Z@sv8E%^t5cEFJwFB8lBcd_Me1lq^&3K^HK44WQ2+ftdiU?_bp3y=9}s|$@ycdB%=xK zpEmR`)*?3IXSt-ZxW=L}$QW<5ZbXmTR}TAc{F<>6T&6Bz9=<-;+yHJ=k zQq|IQ2yN2nZTt(o5jl1?v`BDvf|mfb!iaH7mNtv)c$mzJMvwkyBMI+H$&!)f@f)YI zd0iXqDv?%cpLyyUO<}C%I`1bnN3lyc5#+oyShtsN4N=l%WkZIy7 z`&&{j0*Z@j`AHK1pO~`G?9#;R4Z}VR1f&!@t7oi)B>er6DG%Q5NMwlV%=CmPpr80+ z@;zd;(yc>}&}T9oC4Ut{MjNA%0w_|}>ZK0+^7$zgUp-|R^N*-e$$3%7knMVu{cLiF#<4 zPV2VRtf(KygGB)Y4FytVac=R>&dzVu}Yg+?A+{JY*sfR9U=cxSTl0 z3`+t_OiTN*ZaoS;o3RiY`+|=P(`#plZAy;H71op#w;8NBlbsxusotYz3Y-|P-R`r0 z;Pm#sE`e3Uko(sl19!DI7HxWaH7-64xkqgRsib|U_UTq#TKo@PJFhvfMO6mQ7*MU- ztj?;~3QiAf@qoal7+pTd8Cnyo!>0|Z)TtYq@nT&rBQy>Xl4&V9{VSEw>GU{bH=BAB z-@(xyD#!?zY0fdu?1t(v<`7M7q2w7(Dsv%9yF-K7Eb5;mX5D6!>}-ld{(1tLDT;QSW(LbXXhfA^1%@Lih?!An zcj?<=pOCHDJ}V1sM*Ek<6v3r1raV|;1N9W>)mIWUZ(k5RS(h`1Iv0$oA3oAZgWHAr z8f{r6BL=SsuLJ&K8B!0{!=G2EMmQ{Bw^ z8XJ(|yyZSCYGQd|Zg`tyb9Chy!&?i!{z9>Bp5BQqjGgiKO3~FQ-vU){X2i1)AI|hW zZCc*#nAc9H<{;oJ#y$?xfBaN`kC}D)s}`-m8Y7XnH}5|8fP6qlvV^_0rzq{4if&Cq zXgwR25x$#Im0+I-jRDfA0=t7UKRUYRG`XwVJC)3LDnsfbQmB+f@S}ew;uVLBGoH;$ zJi-_;h!=ezedFaqY^z3lo!t!?-bh|tQj037&lZ!zexmrxWIJ4CVPP*(;n&H8@Dw5r)^3b$Imm4mZSx6Nw_dt zlr|3!2`5wswb~XRetNjANRAjbGEMr~J+z4xC%{B=MY*nkCtb7x6^Lko#3Fq%NfvXj;3E32%d19;eb0>vhN@Xrx(xrFRgbu8`W&ex44N+i9_N zm`&}!kjxxXs#hYaUmA-;)SOt3L$();s%k@p)XlyG)%)olLe)RmCLMtujxF1|)m1jj zluIe(p7`|?Elgh|bYr9kze;SAT0&PC4qHcInrE~kJzo&6U8wlzh|TA=w0o2#yV28@ zSA<#gaNnhyxRm8UzIZ@iC#^d!0Fhs%UHEVN6u*c-D9J{y)%q zSrHj+1r25~m>b>tGWZB1a=%C^tb$86$Nr1A|6fcV0;7)qfywi5z*+PE&l`5dkNm$< z-zD&}u4Gr=96)&Lcf;ti>3{3vSLc3b+<&Rzl4Qdz6Sxk4kZc|>7)G)=U@-&^9+=Ob z1Ihu5B>YaYVMO=`#fE^nf2Y{oFr(%d#pZ#)GXA94KWH@o%<(&|=H-Ox@+YeX!jAsI zs(&{nuUPeupvU(^5RjV#0`I_o3oC2-+1(u{5*pv>bhilq)FFcwEtJuc`DwmmKq^(3 zxD^8zGX)8?AzT!Qfw4^I+y3GOFl9IeR5JDCiM^|CcV%r#B&Iq?uZC997cl~|;ZXg(7CUy2r8 zN$lU^653>fv%X;2&-o~S!W_(TbC|A&3bE$C?rAD7S;&&nn#noPDy zq(%=%3Or_B?!W#Z^9}Et7napNak-l70aSiC`or=3!08EHC*HEx`Fj?XaQZ9~X#$h@ zn=jfV&@pUs(CZ6B2Ql@7Ey)YRh?QR!4h^@RuDp}DvC)}3+|7Nl|5R9RC%`Vw)iaX~ z#WGEQ5GQ~u8iKZtLiz0O0btuPhke-{4?`%ceqr+_p0N$@<6HKQpDDYVQ{Pl353zLG zlazZKx8MDuZDL$dWy_mkOg=OeoP{nM8(dz+Pv_a7N&kV-aw^&2eWtrRf7r7HgNzHWQph*}-VX~l4+T8 ziFzewhU{~1eD)FGE|n7tyHaG5rE@F^qCnD^-mMf=DxRzstjV^j(~ElUk&Od z{?_|C>BF@{yyW8tHvaVT;X6rt`o&qVXP)wExsyc{=iEX!L=i{uCU9N>w4UZ;-e7A8 zp}P4r^rlgxZ%Y2VWvcKj#%i)gB`h$vM)IvHO-{K7v>!guY3=xDkdLUJ?e8?yaC$r# z^6`9zl)RqpclTw4S%;~BOhcUZizqF2W!C;}>1869mnMo4qHl?GhKVfK>P5?#s-5t5 z?mr}QnnNEIHC5$SJji9nj+(VnsFA>2(Q97Gf8uVzhOR14iUF$Ps1+d8@!wg+i(zj( zJNeQfkXdF>MYFK?{&s0*IjUJ$H$gc@4$kD}p{H5*2TMj&@|T_SX=t zIjM@6*}KGFr|a~usc$WPyGpW9qH7|=*Wl9cqWOh60CLp6fAQ2|dalBBCsGb4b!V!K zYlnx;8XZM(%&Xe2a#$eY(QT=u^9sw(qcvMca)noS_%);&KQRxc_ts2*ql$UkyRRem zVE#hJIB26sVLboYuxcK@Oi&BYk?li5-sdZLWo#cidWa+wk%G~$y8s@c-x%OdL_#D) zeL7b;ek|Z6!4IUf=dYFr#k0>os;G3%7vH&(nNLMlxV2j5Xnum7Ton5KK)|$~(5q zBt2|jU1+2ln*@!&3|xOj=3Mt}R(eKtk`fa|QFe^%`1#?s8~8P)Tr>rT8_Jz+F~rRL z^Ny8vy85VEgy{PcJUq>`6}9#2v+8CM?VqqGxTVq%>l)sZYpv&$FXW*obd=yUmcT(r_+zT^tLYl<_Y@wPQ z^ir8gx&_xKEH^+#!GrTq)2L@?7uf7g$PC~k74$RYo2XdGVfT~n$G4`oqRtb{Gqu{5 zV?NP|)J_npx$x=Y^+e;9jg#yq;$vdZ5H%>>eF4pWP<5TZ26ai2lBY>V#+corx6ykK zSw<3^pn`3#CPq4@{8thzZz%i{d)LM)XcI3(-3HM|Yh~hw66GitUS8Wy=TNrAv%JtR za|g$bk7wfUQ*6F?u@TuDsQKyr5j(`Ujmcsyr^Ir#>dB(zVBSbF7uV9>Q96}JE2GA4 zZn@f5H;+{ZgL6N&p%SReS*Hgldmb0V-QHyK1^RpVd5d*ti?b!8yj1uNZPasb-Cwfg zj4_rL%~@h=0t#fFhH>hBjz}mFI~E5l;(ck;|}0TZ_l8X6ruwzt-^N)S^=wKl)r^qwI< zrL+rKO8k_RD(1}n<=PhO@*6+u(`93li!YdWDNuJoXU-*UamSrb0!4GvItg4G+AmpZ zd=;$r2K*YruDP#D9W^4fUf3UJzPGs_0NoE5T@9q}TVn4~OCYTs{`Rf;+Q}Os$KEsh z>yMZ(=5H;&5pt3-JeE4Y-ZB%0@h_Ic)uIwk@UOKtmkU(>X38**`hNukq;;euv}Kq@ zoSf{;?|RvrINHJD7;wh=i(vyef2>zgb5wV*zFg4A`8^^6W2Hac|GygzT(ERM_6`Kh1el?`}!uQn)!rDyCj)x6~Ht(?-bQVOP-=qm_M}PJ%-f#tqR8|E!u3{M!mq6 z%JzJm(du}iDel8lm(*8bI@N@`!C%!oao;|0YesZZb|U?kfxZe+adKV;u;6OD9E~ge z{jv~$jo0__`yPY%_u;)Xi(sbBl~n}LW#xidqpVyogNTcRhZh!?;P^-6;g?aw!}CYn z0Sr6y%P0avIRU?nqN}(AFKj+s#T~f0VHN+3J8*&iVIf_uzPhr9VIhmZXUmVk)Rlz< z`Cq~g%#2J5=JO_2Mn)FO;j%2!rU=OSq{6bdp^yrMHcNSgVbyhLqOw;PF)%<$(#8ZJ zp7HT|EYDj6fbh{HdSRVgbalB%Z(R)Wqe};#K-4!e5VyN2!-i4Z0tm1hiBpEvfm8 zA5C(0H4o~it9UU~e7HDjxrXL0-*R!Hkm(VmB9hrzLT~Q2_i5~!{TcHeW*3c>M$1Pv z`$c?qmb*LW5#@){`Hx!8Cm%U?xABWOTzhb#ja6QafOr3~u$LtL;c%lo9Ub!BavF(4}Vgj61A27Sbe|Cu!c>^>?Gr>Tp=nG&#z-XO(B-=V+YJ`B$ zt@jZ1U+%E0h#o9Bcs1v)M89IO@Ehg70IB@lyHW~re@0gSLQ*cc>q8azKRROm45`9A zA-_Ns7Bu~bBZd<)Z^iRjop9s3zca3*y)au z3aw6zL)`JZqYY)!!ph1hyQ4Ry^n^Y;r}HSrhgPrCbt=lpP36keJ<+gd2oX`Y&kmAL zd3W^Iqj;q$>yyH9MpvyCa$qQ%c^yc^a)$KML~0w;wyFBM6IJd>Cw% zN{=(!WJvi?%WyBLcW(&fCNC(G`m`gMFW+{^oBp~&x^j2h+|aE1?r!sf%TVOKrFUx) z3+HBtrsI@3VO?WiaLx@z9=CVrM=sJ=Kah%!CK(^0=t3Tk8pMs%z6KRLFpIOoxI0^N zd(A3!o?Sh|G>WZ!x$_PYrRH<(_D{5{keLB;=i}q((c69@XnUyk6k>iV$RBsCEs|1X z?0ZK%{bhYchH@M4o;mm7+j6D1lRuhBU3ZyaQ;5q==ElW*GRhObx@$I4bJvAKRW7Z+ zD)?39SIWYTj9X|}yTmjIJ+ddg9IsaLcvRn@sCKd8aZz16wT$rR_{yC(*E2YrcWT)n z^8r<>XtK%&TMbpebSrS1)SDlTB|PGOa0dO_M)HuSPwnzjqwN&<1BB<(#yy4T=zgmv z*@xE_M~=&FL+u7BTfau9amV-aYra}M_9Z{Cs;6oUS|0JTI#N|Z)-h*l43`isp9AMu zQ}o&Q_or>R5175$SCnx!w`9Xvv0!uO&-0}!a%FzfX0qLEQ-z-DhA6gtf`H&ztXv`p>T~PPVOt=$-GU&j`g2$8n@r?2 zKwC07&{tOCXcQZ_R_{Uimwmk2k_l|OPv!6Pfm=sGxTUX1gNqyiA5)0r%0wnGQf+zL zYM9Y2)40rTSqJVu-&B2aHcoLKKvSlR3iZqED5M$%D=$3-O5_X(9Z7-93tl1F-B{2QnxbSpDMzhSbnw~rqNJO+=$ApBt zUnl{o^lreZRpN3Rw!yHmq8`|=^2LRV$oDW#!08& z$4rAWzxYOxr~}?RgB#j9BSl`i4cb16FC}={1Q-R%xYnA>PMbW-j$R#6Jr$5-@JsxL zPZepF<|4Glgyj&L@U+!%KXwKl}~SR-O=@o>M{wzaCg`GY9~S@{A&%JC*xm=>E5Nt6v$&~5aYue_I85%-5+qU~ zXD0u%c`AxC>H`m;9SYjU(DTqEnvz&SX)0#~XULLBk9N;jAPKNc_>GiBM6&5~_NiN4 z!{y8!zRq{BM%K9^WisTIEV~~PTm(sU;}k@HJ6^gIKx?;7Cwz*#t%_~*Su~884<%es z;M%A}r@YC62ei$&)GkUqo!esQotCO|#~QOoRYL|-BNv~vSn74ca}ht+XS)O^6DA9v z&DWMXyDWUu#pclKwo`8@7UrR2#h^<#@X{Qj3co^#Ei-EI07~2xZ=^-Sz>^La7Dd6Q zjl~TNM!zWzr1>cd*0tBEc!iX@SHdL!*lL)<_PHfbkqWczJB6yFDaqrom{Mwo5_hzP zh;ZvYoAV<66#ugiBE-866obXoGCnLw4VIvx%GJ$wAy53sEPI6Wv{0eE+yF)BuwD}y zLPW0kq-?O1z$W&7EXUw3ZT1;&xRW6!D~j|0o>&D*giasG5yfGGoMm+;9R;r#*x0n~X$ z1SLdIKO2~?mp|5V+GxqZvwxG62rRz`%gP_ zI!DtP%-60{3rZIhI*8GaD69{3qI`KrXKEUjsDrN<)lN;dHKuhhZC9_Cx0lv-*D{MB z#ILMM^J@T>FqMU&fjq+X!C`d^BMW?*&2{@Up9~ttj=VIrEE3_tz*&}it(b^-cy0O? z<-!1#SR~BcRwTyXlB#V=XW!NYu#9>28F6DU)7%h=SS;DDbv-t5d?KC&iJV6(m--4Q z@PdYT$@BsWK!SlAKIYlMN(s9WP^12El7RtycGvNsC8M?nYiY|5@NVb_DH7#k#04FQ zI>*ZNU`S(Z9kd0ZiD!yPg>P~okK+Q-@u+WNOrqBlaU#}ZW*>QzrE}q;H9sO`O{Ns9ZJR zbR6AL9z{gvbJu~fqGD(y-n9XLl6gz@BeK+kyxe+6N6vbWyX6)2Vf@)?x3LG}5erPm zDF7&D0(}*2+y+c6rdA=}2o3P6&8^+Y`adX= zS!`YI^^=pu$dKPHrs_?2rbNibh%hfGC4d5PbyKVTL{3KT0!etE@C2Oj<=}(t zD&UT5Y0J2N-jKtvO~ZTagCgEAYeZhiW1P=h6ayKu`823(YO)e9Z}2D>j}T%l3N74~ zJ>1ovZj7s^F>^q#0MNLI^~~UMLW29S;YqzOMncht@KFR^9(Bk~@aL{2#+I?ozeY|p z5Ef5=*Qao=jRnt*YUknFX(0a2>Ek?uD!cgluSHeEHfo&2MCdX3Wj&;Cd*v}7j8?F| z`dF)`u0K6c`=l{FnS2_lHg-@ZOzW;?%j)d&05nyHoXP1GN7-Kbs)9Sx7v<0Ep|$4R zgmYD(a{2{_?WnQ!5;m!4{ib}!to1cghwf$ePMzZocbZB#yLlf5FV|cvlMAHo9JSG_ zX-)KbvG|xI0o5kxuBUm#TemY#eh7ERp`v0mi~pklK4DZ>PCPz289N-q4a~fEZKG!& zQ(~3hX#|ZyUal_6$jQeiNVvFL?XEw-ETi;GGTd*OQ1gsA{C38A68uVP$f0{9jdeEW zX7P%FyY%zxp2;B|oJZay$4kJ;v7NrGUDZuPI=fL}yM3nhiTY3B-YT}FEVZo`II$t8 z*XM{%DyBVSG8I&!EkjwNN}8=~dMMVSDIaptv-r#3arP-^B4YFn+eSCjwefJ&U3pA4 zVTxGy&E^R=BB4+&2CXqk7(x`SLQ^_I+%7o90@pFSz$L#3tT*QT^f$~`pt;>^GGW@}qM#!RoY zPx_UMN0)^5%d))u{5*Dw?T7D2#ZTKxd`{2Ko102XPEU{m1`@Za0<#F{Af=ApYSXiG0WiI#pawp=xF=D<%r{8AT!`e8D6W;k=x@%d-860nNlnCWBe z^EZ)Qt`pO=+A0oO8(Z%;0O_+#>S5zv%ze&p#^Y=_re{>uAIMlb9U+kW8;|fEG7L~S zyxE+T2;<%JjIe?l^3MZeC@s?x8}hTIPX*pqce0F_AifqwEU`B*rcJebnEcr46L)EX z;fmJTnKGMYF{YfpplyxHQ=>Mzm;)036%38_Q*h`Tz*LBCXc%#KngNpA`s?Kl$Lkqm zI$K}YuM->D#xLMU$?^0m2I%lA@dG@Rl{7Vl?u_NHsa*KTKWSFbc{w%cOY!t$3-GNn z;t}rd4b>d-8VmMeQ-XTb7Nok^5;Jnrwok6iq_1rvFGTKB?+s<~0qgAMn(sYpsrNXW z-`jhRd@2cvSrpn|68cKpK=`*4KMB{B8=Ar1*i`8*P{Z8W#oEyUW=OMvxY>AsdJM)cF6Q+5cAAmD`v>$=<;lwwnmv6d(^9 z4;$yN60Y2(4B~v893UtN#L2z)~>LUF1rhJ&4{?US~!!Sl}3N&198Jv!TdwU$qQS%@(&qo@d?bO^vAUz5CrBX{!<29qViWh4sK4k zbLo$3zaRZ61989?Nn!p#f$s}2a~ z-{nETFxSyP+6;lfR!;pX195Qi{MhTlr_-K(HmQe_zW9zbF2zgNO6)dU?2hufx^Z z7`DT}`SO=D?pk}p?h%+5OV!a4wm$}@DfrDJ<6z+k+br`vEe_i*Bfw#1VP?<$Dau#TAA=mp36yK|Gv*Tel>XBmwZsuDosk z>Hhy0j03ZQ{(*5&QC{AE!#EZoEWifap$@|Z7!tC97-4%g;5hOFH?DBvCvN=0FEA%3 z2M?I{3cp~RgZ@CPA7}&v?n{0B0vfop@TyDSgGAqV-v8Q456kd#FFi~-?0@gVcXo8T z+?N8&$HT=2g@Cw0fXmJI+#og%C^vj-%&#r@u$}$C@9F=?7XDuiyF$SK0{|hgG5+Vo zf`FmFP0HUVkqm5#2ylo?ii?ZEW{4Q41ng>wA2URPM}k)Z0u_M@3V^}lU~z~jj~G~j zSDaUp8!8SK6%iK~;ekLoAYd^G!SB8KZ65xdoyyMU?!e3W^2g+a{X_ulXI*~ICkTX_ I`^S9xe+>fQJpcdz literal 0 HcmV?d00001 diff --git a/Architecture/images/Active.pdf b/Architecture/images/Active.pdf new file mode 100644 index 0000000000000000000000000000000000000000..d409662360b95cba9796e2d1f5b61271cb70e9e6 GIT binary patch literal 12748 zcmb7r1wd3?*RB!*BOnbTF(4q#%)rpy4bsxXFqFX1DW#;KAV`;lqzFh$ryz||A|=ut z(s2jl)$jGY_y6wprS(gROwAfPgCex;15*QI7)2!zW21&(CZ= zzH?>lsB8CCegYX5>JcWSmZZ5uE=8Gpbz4ldTAi$-eNqjcP*$r3kI1iBph=s&apQ*5 z!R(`2@00f;51jn`mcE!sn_*80`?+Cy<8;In`u4z{mer3$q~+Y`x+zj4ciU`O!}p0} z%7QvyC0(FJi-)jaSO_q$l2z7wemYjg96{G_2LAM|i2c!;{@Mc<3|r_?tF^zXnVP9o zaz*W0DKlDHZ(&>C7rj2t3gpsfH5;rgg$U`C`rHt_K|$A@_b_rdK-qq4Zni*USFmSl>C zWZBU37;Fvt?`9ox=4li~(1R;u5C`F)OBG{Gi?t=9v{x8IJ$RyoM0Hf6~o z-Uga&Wnpc7(7V4anzG&@<~KFxzWjy?)6yIylR+L;guDHT4K1Vmt@%8i`UpFJvq1o( zshvvClL{CInr8_aH3z=5I#iofxlzNwjhB=%+q&p|f|pdTPCHvJyL4KtXrX%YncOWx z5|{T_$%^-vf&yLE@wWx@bldX1O`qH*yJwcZ4609*ejFNPYFSjI^fhd9NFzBVh5U}^ zeEY7aYl|_vSLQ(GuzKN6DruQcZEtsPNHReeiSUyJ0^9!>8;&;?OaRjmP`PuIEx;zCIz=fizsV6eUX_HsZ zOfhh(i-cO#%|9(sC?#8>QrwNbh9G%U8C&J1NIWgM$i8&v)-DhblaG8&>BkE{v5}CicGfpilW|8eFAS?PBQ?{nzGQ7cfAL<}={Bc{5 zIcB#nlN_T|eXP7_xWBNax@278Atw63}-FP`OgFPYi4PzWA)ma{NY?7n;4<3KzI_cWe%gnJzR>}9Z+_>2G+0b;T^-M~HzwYj- z!#1ctJ0%xMeHXnb3QkXSo%zyr6{K-`aP;`*i@`dx$CQMS4+9U$#d9B3o;!?LL{RN! zdvY(9hL&tQe+_Kej`6%LoqRYE9^6+GN=J|W((Qh)m(0O0o zsGQeavWhyJbIL(OSn7xX{i{blec?q;HZ|E4s&3~z?9Mc2=9tYmn9yZG&EFaSG<}p+)K;n1{SqKk;40cc6pSg{xI}%{O7M72j*OE`Xc8vYvt}2xT z8IQ76AEPOmDj%6C+2W%PDE|H10iB-!)R;AX^rqZS7KNt?6%M~j2ORjedLlyq-Q=F0@rwKb^_cL+p8y1JqeIkGOOjp6rDJDGkayEVfTBc(WK4uz(LPAQt5G6Cdh&apJezy z6!lD!Ro#U%(u?3PewKC&Z*|a0;E!a%_YpL8!RRNuwoF)cCFV_#c)TrG6MqM&d*adJ z$z=fAE71RDc2p&-YUq+9?BYkL#wQ_6HWSY-zs9lC>t4@|MS*2PlA(EnrGAqNE?i|e zb+&lr{5>fXnb9gZ(_`TVOz4TIqfJC2Q(B^Z?{2`&dLnAjjWxZ3iW%qqGJ7|AWrsI$ z5CWxvdgNE4((&GAIU|yWua!r(y^q}ap0we6l!i!ZD?xA7nl%iU_SURC7jtcYFsC!3 zDO<#D2tfju=$zis4I!M_5r#Ja&&)#P3{|7PFf{4YQ@C~rV)c~*EMaehxFDt~pYtDS zKFwXJW8K8C*RUXfsXAVJ#?~XGihmnkSs_zg+32xxHW-eVqYKPWte0^#Ah|C8WWnC6 zKXLro=8Y#zig>x=A*y&H&-k9p#ODz`i}r7f<8m^2iQ_*gU|SM;CM)_2iDk=T@8p_qL9REa_x3!0m6L_0i9awxjayh7HLAiLjGi@_QnLYT?$d zK_@m2!L1*^$g3JVBuXoSqdi+lDBg(#;gS+{IJAboQqGtum@P#&taFaC7{ZBtmdhs$ z6yEhCGBk&Vk_4+f) zgW)kl4xwO!YZN<)-nv_qoi@FuTJQBM$E^B>aAis9a&4K0ct#eB@&+8(Z!eQ#CU-OQ zcBe>xs5hUYpF<5)+>wkOM!(NqxR#z~p?+h8r(v&4MFF&%U%pffZcMZie}NwRJjED* zus8q7+)&mf;k#scms!hQw*$$P<&ALpn7!9XsFOY&=f z*O(^t!j zJlSe2pMUxlV^>x3$f~_j%Sp$|4^j-@C?w8Fw#u6HC#mLy^P5PgIm$%4TMGn)(M};- zjBHeeS6UnPqy|#V1xjADd!?PV>C=15is_(DU3<`3e!Y%tE%Y&Y+}Hwes}4@?$#h&nFo$;4tuD57&y+ z-$nllD`UCxp5C3bEDchTSc}Yi5`kmy&+?G!zN5Jx{mWHXqecRZvrOo_gwGV6mlo;l zOl@;o?P-kp%du~a5mz3)Kztyb2x3Z;6Jlm+V>467ea31`8q!V&#$Ar$r|1o6%OhSl0`UF4M5W+VJ&mFQvFllm*i z;5&`Ynb+?#F)kR39jK_aNV&>9_%@QdvAVeA0a3a;Rgiiwdi3kb4xr)S>u@&Sk)|l5`DtScgr0+ZZ*+W=gTSh-X;c2|Q zKlElVb+3M}W)JFRBL0@$Xn9P*aqU(umT!mmh}AmCBDjo%V7KK{4?u}_+x;3m`G`AX z*cd&v)(_4xANoeqQ}(8g8(TjMv0|~4xWFr0-D?BKv3C(%vTpVz=5Ucd{~*6;%kZ4r zufGVF>bjOJwklC?=9n0^js!!;6h!dT#y{oY7Zd6>l4`^2gp5+I398VUh4;}r(F&%} z-YGcm8#j#MhiV|dJTGbE9OUZIhb9nXsRzy3edF)cPP*BJYw472;l(YLc-{le_iXwI zxtM-4GoV7U{`CoICSxnFb64KZ=Rx@UCc&d+I?C+3lVfQA>H(gw)7+ z@>OT^sh90e1h{q<^ig-X;#M?ju(x5RVHn@N9wsm&=U)u12vWwHemyZrwFQ?xPkplT z0K zEPJ7hX9iVesZ@HM1KjkSW~Ka9DPFT7L2HVlm^6-w_Q^+m#+8Oc_&GwyYOEHDTV|UT zZ#R0Fovt7D%Bp^Rsu$4pFi{?@)e_kK#B)$BAh~>ojUbnj!%VyDg^C8VoWkQT`ge%q zh^(_8&6YTUsN9Wu1Izj|Sv{U4J?(8ta(%v@YE&eND7j|jUe4MsNqZMPjdc%e?D48* z2E_*D%=?SE+|=$TPtz%H!C;l-7bj!v6a6{kxGZZd`#eHTUra5>L`U7pyx)?BJ+KEV zPV{$&c2ZBG*))by+Oe9RVLqn3_d2BEHG3p)hj91JT}+kwosMad`k|7t6;`HWL9egI zA~#OSs%iAv-_ndZ_%H{gqun|*kVDq#+oaWhKsahps+N!BPI!?SX=B8$^z|{iNJ#b8 zV3be6W&FIcyAGe`{gg0r5( zht-EMHC{BHGlt$Mic`@xuKC-j{oWhHCui(`N}+dc()~(04oa zvgWp|GpEg_a0PMfHe*KfLxaXhl#q!V*5F;E>1JsVO+*yYXX+FjRm>YWpMByU)tV+Z zCoT2j?as0uv(EF1(KXy5DI8Wy(yuXN^KO~F6N@eCW2kUz~w|ue1oknOgs*JHXYwlO0$s-cFxi81-s9qZxW??OWGy$R*LN$ zHQauq=zYL{(2&7AWg=Fk&$mr;%Ol)sw^wI1{lK88_r{Fhqos%Ev@g;hX#bbA_G?NK z4EoJXFInDSY3&Ce{U@#cnbm%?SLc88QC?KuIE4ThQ<2x_q(sVU*`A(^|oLmt<4qRsE z9|zSH<#Z%8*rZUr+WPyPD~ifWBb?z*)($R6Cjj^-(U!4C&B9vSqk^lz;2KCfnEh`= z*4oM0Mal~11mr_yaAnxf9n@C?kW1Iv+{Nnh3VA^wz$F|0-@j33{Pg~9{Xj0;`i1@4 zf-WPVIQt*t@h8LoJs!U=?gwvIh1p%|jDHV68lHVl-2QL%~~KJMP(vXFbC5?^TUxmQdHGO| znl1=Coy#-yexLv-2o+5Q=J9>Vfcy~DSYF;D)MPjUr6hidjeovLe?6CfOrL{)ijyCz z0u1B<@m*fP|1_Jf>tm}qN-8$G+3sc$y3S9F{;o8=F@1fetxqmloUBQ~iror8vPKUG zU|@J2xrJ9)@R0c>6s|wa$uY51`4nLXB_%H~O(`nTSq)+0$9S=Y&c}+{T1I z$jx?cY7)Pq-~L4rEzLx^_WFHgY1`2p4y>L2aNkU%4+O#k%6s~Oy1eMNdY;cn#E8fn z*8|@QF5!@oQp8EeX|-OE@BB!>+0nrV9@=T%5?A?Dq|5I4*uGKiurKC8uBYvyy056x z3o%t(cM1!z=ENp@Q7|XI|!@`6b5)T-+R)$RRUR=2%>zp>lfgnH!@sCQ#_@&ds~*XLL}CMjdOfdOk!l}uGQ|dcd0IZRt|lBOPaARXgHdU=b~M%G za`;);UVDPJA`@82V2^}mceqe=b*7Bh-?82XAwxfjP|<|Me&N++Fw{6UWksmKsE>Su zIj3?>T^cjlip3dB(Vs2#l{`8F1$Qvst7&1ZVK_{Tn4O%@ID9P4Cmb7%$6%ZZoAH^k zGVXgEZ{ZY0epNVr*pM*^lZN-j1@@aD%YzGN>z$Y&ZyKU!ey2kV6@oAAa&dSwmPb#O z6G+6E=W6w&T5B8~tJg?~?#b0-n@~t!@gjCwfHa-t>{4*nhS4x21T&b{JxIzKn5PMC zW+|tvQ^V!uz1I^xemn6c?AgW|(JS|c&L^v^=SK&r`iZs8OFqKt0X;55X)K?mAz#30 z*^^X2Cl&QFd5qt|yYz?iOIFK?>0}q9v*TEvJim!a{Q^lchag{_F=h{9`TQPOj z5u$cty$VNe?ajM+x9)u*wOu`$)FVY<);cUvgE9GFeZtzBE0OR*7AdmwIFP$hT}?@x zKHc7xLVuVk*Oo8{U-?Q*lU&oHKWx1Pa*Wo(=WoHW)-q)~mW+3z-}%5A|6G(^C-@Av zLWP`uWqx)$I)j3XST{itZLEz{#Sk3i6r>0cg_u7qaw4iOwj=Ng7;a)RrF9_jAUz~? zz(1roH+N!@McX=(R#!%U^r1%Wc|;Yt~cFp zN*2F%h;ew`v}vWg^ve|;DvU&18fSruVQuK3{Cy=mOu-Z_f_oD~Ywhx-CU%@9t9!?R zdJ{QIk$tu%-_}UacBb(zwmysHOdPn`Pt>nvPA=3RukLxP)IagP=n|}oL$LMU4%7S6 z87;QYk<7nyEF>FaKUx_JQ+u~lmg`LYO|)uadB(FS1GaS$2vTtUnpvo+Zk?|Y#?WkX z>$D>1dWzO=sBXN2*;hc8;#JAO5CKeC3|z}3#egdS40WJC+Eo(l7vfhi(U=Lue?TNC z>#8a%Mud=Q5c+V*9a8KlaepnKINDXBOA7;yfdCkA1qVZZOaD7$N+nTjIT&j2B=_mN z6#XO?N;=y@;I2G?@s*?Tx5~gzci-NaZ(t zz79J#k*P(cmHCOwuMH8g+&o872U`vC4e#LZ9X>@@zvz+GS?M-|4@di#^t3=;$i?-y zw6vM!7(0Sc<`0!sXv!=h!J|FIQH3rJ9vCD1%zOW z-x9L0oHc7r8W4=i!(Rpays@=D1T}OYXk+T#d0g9H2ChL zi{SXFYtJc9K^W&(qcLOy(3`@WaAr7Wgtu56FlV4+I7&tB?C;Y*U5LQfgwfX+6|&|4 z)Uo7hbT@Q8K2i-fk7K2NLUYQ(PoB!oF2O1@H?BVnV926;pBD@%$cV6E{lqX$9X17zB!m8y5CZ} zOs;ADJio2S)$vh+%<>_}MYTH%^l3=8@oePgyjL}Q)-cQK!fDGV@z-+|LPH>0J7Ldr zrH-TlvxMs|bPcEXJJmxou7Y`h!PnXb{3$32q|nW*#BuR{g29rPrbHOs#ZpNt-T7>@ z8aY>_WkYmQY-{ybm#yOku&rLjikr9=zSS+_eJB(IttOXdx|~VZWbyvWn8O?Iel;KM zg(`H^li=?0fG!ubv{!9d!<{S3dt#@dS=3Lx>0CrxUWSO4d)@ev==tp~F;gUq?gnBl z9?R%-luH^+(j>RtU4f>wK;F9j$`^V6ZeLzwvHNh#d~^H6!5S6yr$pM>-P0=L-Vzkb3;cy~b94Wv2>I`0`+JCf4A~D6@_!l9zoZDjfI|QZMoAHV zFc2)j&xevCe0(TX`QN3802CzxeoGP56x?qq0^mbQ(%(`<83Fq)@*w>G$Pyqg1a(*b zktGla1p22gK^^>2;rR6|eFuI$Oh3yTkjs*X#;;XAC|v@EpziJeq)UqQ?34{gZ~FF^ z7IX2MG?X6k5G3CR@%BMG#+n}tGX&4569MU3tOAL?T(N^>2FhAj$>t4Z23nth^9MD) z$!S|_v)RSe(ms2n1=WB4di@PclAucWK>4Q1!gXC7!x=3sLB%CyAy{r|W>- z{9KQTbAUFJ?aeZc#4d%&_oH?&z_TDMct*_`S1w1M1GLb8K# zj>$VJrJ0$c{Grz;%3vI07rRa3%nXyW>cX=RACFa!as(b{KpWA*PLyk&SQM~$ppV9X zO+HpU7C9=;q!LIT2W-q}P4!H*xQUb}Ct2SS0KLpfoN9?Zn^0i`S~KZ7KTW9JtT}pb z{?wLYhLb+`kWZd?iS-t>RwpCtm(6DnyPKP-?uERYHeH)orkXgE)f zyq)yf?PB*vL#GL(n~~@zaXGM5!8^;Ev-woNW~@qW;&xEGm=kH)i{}-7J#pTpGxep^ z-0q>M@J1KY(CZ?5rqqolL5os+`{uoQ9vu%zBbxpsiGC{s3;$AI5@pCcxsEa=1zp}} z%C*8Y?k4*kTORweL-Pu`;O;l=BoXb~czqCl1GH*m(^pQ|_f5n0cHZa_-=13Pn$k0N zs zgn4Z&r(`#rlyl+>Ui7@FK@OYYHY1DS5i>wnB)VnTK)H%#4Q1xGio@*x?3 z%ZJH)xv^vGg3WUsJ-W=B1jYmaf9QC3dX0Lf@dceP&N`#b40m3b$k%xZ#n3psyL>AV zcWGrXD+anL_%hB*iYT#LFSfuU=C5z^DpVQlA&=;sE0Y10ctz$P-UWHCUhxU>?LHot z*{AbMYcvzI_3HYJ@Fmg}kO?iFIHi6LON367%L@sl0-^vGq0^2_vHp_C-bF`v6(swLNq>f8r*A8F~jy57O#u zb$BFd`-*!?F6X#g3J!7KS}OwC=qbZ1+uaHoU-jI3hdkI=-Jo0&aVYsb?YO!|%lTm4 z-O@r#uxjx%5!37zEz)J^L@?L7Io~5DM%o>Gcx5IAXeE;i*g|&%VrB<;&fJ`VIFNc! zSL4@RCsA9FC)C&9t@|o}!^8S>?nppFd(r@lC-K>&QI*97j;tm5r~dQpma@i>BrM>1 zxW`DW>BOSbS3r??lSV4_qfJBcBi5&N0K$!yM%pW$IS~72&05zqZz>}|v40saNe_o! zbE)l<+P3Za=GQaU8HAOOY(p%=?m;sqTC?n)tlTi3;wCJ1!ptlsJNb0Bw;Ph|yH^jR zu^Nk4SW8^n7GyYI(|_f49B}eXgd$PQ-H^BegnC|Db^~+!86Zt^v)5X+t?_M0?L)?r*ON_-5xjghb0vG@3s|(kajjo`e z7~5y}_L+zjI-b62Pl!(y^?e|*G+wezm@e_TW7&XBD};}|)SNo*U@lf+?`*75)d8gX zwJj_q`Hs^UX;mK!Dm#EY`fd|<6JmySOVEMZgPfrBGr*^$(brGko@uU`q{7#SwVypIbtrCpUz(+Jf2(4IOaQ&U)+_hz zDl7f%ZL7uwC)Q!#NXi116=Gkxl%}JbheizTkHCyya7GE$IAD=d(AoZGi&0D8K4khK zM!+tbpAAQF^|pQBn4sr;-|8V_DAz^R@MfwA|u+#hzC!t|U82?sMlLO<%KZafwb z8TFm5wW%|)ldoKNkvsV4jrFBq3$+^W!oP#`V^uxx^RMZIjQqJc%#T{=ox5iRiJy0R zmt!-@HAL`7ywZqZW|PuKEo}MrhEgR$fO4+E;Us}bUbatGAbvy?W?aFoH$L^|93Vus zbiYVIkkuy0eNMFa8ZFk*Qm%l_!%x01aBx#hXGmnMwGUXAwJ0U-Tqc|=+b3I84usWc zbpS*3scSpNj2@&0bcK7uL0opSX`iBUD|>}2=&bBIHE#`l4n~=3m*&pL|1@Eq(o!t; z#DwaPvDNQBl{O)LD?FqBEWY6)n~{Namb~C$Dvg?DiA`Cm!=0yY2g*#JH`>hA4h930 zx77h z?Z}~n%%?i7aIeoYw>Y-64idQe36_(`@=unyilj=DaHhUd_y*rAg0g9_ixVl&&oq#B!`klI>RtTB9!cheh)U^C}Knk@M z9aSI!qUiANebiM;qZaM}AU~@nDoFFoec;di-?a%3Cxit`J3#mVpnqOKRC$3L3bX+J zz`$SuZWOt`d;#r$VyKG{K*jq{49d;(7lyiA)NT7uKM0iXFFyz$s+#dHKPdO#7^;%+ zS6}#fK`8C?pE003e1BmOe#l=jctAXVW2maiU+qEo|7s7)gOVrzj>`xAtA9`dRQ2Ou ze*93BTKYF8fGX?!3ljhf{JSrxa@Jpc0fYY@KNQA;dPXi^|J*k)nE$W)fx=M2>@UAR zW4JiMP{kjo@Bbm8Y3+r2j`)D6rEEx4ShM$7<9)}RlF12+(gEq2VaeLpj@GtwkJE?RJ7HM>i~t)0b66f80D~0B z+QiWmzzP;A02oBgEFD4i;BQNPN02bc(8dS^;NydJaI^>MTfw?M&VJu-Kg)*PweK0q zD+x`chD^8$JUtmoPAtpeW#Kec;w++q1!n zI(b9zp$D7P9Jyg8Tzl)tcVT|Z3}x@|N|@Hl z#!Nkh&$hMykA?KRg?p@7-;?P2?LrgSf2~;W*f7 zub?b*HGwNB=9CX79(wbZHI;jElgZ6s@=MrzrL#&bBC_d_T;`0GRj4BJGXvPW0xO=V zXKLphZec0PkOrUWp^*scSJiox14W5@Pz+WksZ%$gT76m;wfTm|tH{5MoQ|`k;8k;= zb0=SnF)~e`zn39h4s{GbKOQ#vlG3rQVn`PzgXlMD=@q@Jz9W*0<2W6pVwL|0l0yLn zwyz_3udF-oG#^m_%kL~A*lRHaBG&wwvbsObumxsNjMh2>*OJZwUrG#bqj3H)9 z2~)BOuj8sv!9mhRMe*QkC4e2}7JLYtSwOppHI#Vi&}YcDXjoE_K4rcQYGi{7!6#zG zY?N1gY1DV^_#=!j-eP^!FP&5sSIUo80=3VKZD71zCS8w~LK>u9z@!vV+o^Olv@Z!m z=*J8PP=Z!nqi67vc1Y`OIF}ZLXFIGjGD`Yt{106G-XtjNeiRexd}O96=fFlr?X=s> z%%RZNda)6gsnueQ`PJ0U|I8ngc8>FotE6DXI^3o+g=G&uRY>*A5-0!T!3=4nrL{m` zinp(F1wp1mPc;o>ThXv23A)~Cva39&@Rz~*ocau>i5BAuN+bm7n`4lf2;wlq@%r2F zCpZd4B{x;xt0iXs0M$@_1|#thr3)H^Z#F~9JMG5HNRf;#EhOKp^J%}#km0*PE;b;4 zU-cqTP^acn#*uzplZ@J!T-`(A9>#CNOFo9`M@O9{V)6#aDr9@w`{cPpQp_gHt8%*u z-x!DO*qG71@4b(Mb<=J3^q8_VIJW2Ols)nBY2Zp5%U_3_|ucwm-!5oGi@DKo&*- z8#6r<8zYeYhZZv%JrgTf6~G{92?81YqX+ zfbHVX9^SY3mpzrUw=q-%IRZ4n-4qrDmkn}t1c2)nvaz(WSG3hP1Oe{Nu8;!|!2Y9S zLJmv-&W9u)AK3DOyA9TWWl&OL0s!y33huj-5)i=gE6EH10)MIh*#_Y6!~D~z1AmUK z3;+o3&Anx}zHd5%Fv!`=5F}==@Af}i{6J-G)91?QeDw|{5U9|El?Zf|{`^)jn@k}p zXkk^e(w`*IYPO9Plc;+fo!Pkijf|5M=E*Z;vzL-EpKcbU^L4&@R!z;uaF(6j@m7)* z2^K{I{8RQ)IN)ZUHF6eUYD>A?t6NX?7;xFEi~G23Gk?5ODao=P;GL12#K-9+x%)}l zOyOhF!G`G4nq)RiXXJMLjg1e%LN@x#y&V(HT|>>Y)qEW6p-(~IR3Ho^DYH>P=0WSP zg|*`Vggkie;WiNboSIbYev`hj6Iw6a^YyrLY;eq5C$Yxf?oZHiZ*HrsSQ_@43|NMW+=FPEt&~AGOqTIjeq&#lHo#__YfpFiCDF$* zpR8HVCY)&iH9HP-JC@xy?U9a?3|3Ul$)w4=UG=CC=_$6rcl3jb7LEDmD?E8E7>jfj ze7$Y?oIFo%m=4Hjo)=p0k{n*u4Cd-lOOZMmm?&?r;FgqYD5#^}6OAWy* z33kYK$nyl=6vNk1;}JDkrPPTUMQWx325+qK2X%pfsh-=9HgevRxnsVSGTYG;ema@D z#9w%BB^@@_iLCT2bK0y4bT}%XAx)uGU#5dbF=hkFQ^mL`$=hiR>tMX@AOgZ~ zMsr~IhcwDw4S4fSm7dT~NMALq82gRYTD(1QcQJMSM55ep`vnGglH@DxI`LYFYV$-K&T7=9$~UVGD)qhy zzDp^nz3YWJZsVybQ*fZ)J7}okH)QKS4@C-dY?7@nEV4*5U|99)`H6w-9&LzoM{HB&?HOjUvL&$szME2#ma*iM4hcmjSP7Q zd;@*nnuO($6o2I@Q*|m`Z+nTqpQEeQHW9=+CBciBIz5wvSc0P3jG=7Uz^$DO#U)K- z5H>(;Pso)_NRj`2U|K7NgH^%i>$}o+`eBAn4c2%xXt}@@t5c3{@Fw2rt!arc%-F!ahiHwSBrFBV$#s&vIi-o2j%#KI~Hy z6~pq+x5tCMdU$;Rfo#8w>%En{mw^qcgpiP+z5~bz@L=o|0NTHFfdAsr0)M)+GT=AN zKaHP)nBae7`!s{`l(E0ZaDIWU9~hk(r^^y*bfl_(S&cEDU74sEQ)z))K0S^pP!SVj z)VD)AAT0 zph3^$+r>+p^)#FhepP~v#n%`g$lBN(zI;5I8#e4|;kw);!p)M$rTwVF`?h}o)mxCJ z__kS-KU$Vim156wU)81#kJkPr+0i_7lS<_n*%F$tUxoR6We8MIt1My7_LH#ZLDHnp zZa%cEu?0m0Va;B!ip30eq;ta27Q_moxI(&mmc3>;Uvfs2Ymt46H#epvazbn|A(=RU zFXU18x=zfEy*7(ouHtys<q0Kd}-zN%S)wjDC{sg68c2J#Xx&~3#G>^nYmV!JKJ$svW8`7Veg>dL~nRlP;JZ zpD;o^tpSp=gT2As`14Q9n}cz!sP%3kLvhuMUpE!gMzMAB^x_;tN;e*LF7h^xlvZp} zlV5SUuj=q3-C))dsC9fIn6mYv^h`{Ojr(NN0_7IMWr>9@oJpZ zHgSaSSB?-b<=rNfsg8nq$Z}V;OD$an`;%<4YwS20a0>mUO~RfT@K}4XRhW?=JQ{TlKN&^_5(#F` z>%D)yUQ%n~MnA&wGW8Yp8XG@R69sy~xNM?EodJ!<=Vgl6XMA2-5_nsywF*N{9YFQa zFLc&yZgy|mT@-gnJ|#Fby>7Bn%tYL!5r>hAz%-3S%cU|P4N)4 zitn%HKe}upDVOv(=QwZ5pj^=9uhC#XB*1eGGd=EC*-ksxEb2#E^6}qz^_?(1%~Sbb z%-Ww`F+1lklXdU${ll#NaCQGMYxnNkFTe6n&)MPczAziu9I|sVJvf<8VDAy^?7cKI zasa!a_dX%mO#bGo0)O{af0QYt@2GESWAei-clha#|K?cU`=Ebq#e zm)18_u(8s&{!=1qX7AuAWU6luUMZ`hN`4{Q&(r6hAzE8GWmJzx?lmW~pxio)D%VI)V>i zgpQ4s6+p+r$O#4qY+xwB$jJx>K@#98G&2;iHnF@%CJX`&hWF5lofSM(_f_3z=$Kg8 zz_>%-RvctzV(JKBV+SiLI)bcJ?w?TmA%$gS1lK05@A@#n01hVbyYs%iU|t9Wh9f^P z$Zu=oUhr#e`~n?6u*^?l2?${2eCWXcKrB_oTiGg3CUgys$CAN8&%Ol}2v=uYG-`h# zE?>ja4_8m>?pz9pet}0t)j?2NX670K@tA%0$xHPXGw0a`!RCqD~o# z9pf4D1c|mj8Rs_mgcG4rdhUu8DJ&)l%+=cz4-knd-%ecY`o712LlhWz9Q!O3J4fsj zV8V5HXM|RrBkVp$>CF9xNZ&kLX=R$rsp_B=W#jG|x0p12^ySlT>+o(nAXHT6E%@Yh9@Ay1(ZHh zUT+8`((l(vb2l*TD5vT9pdd7V4BfX4y}0l_mtpY}m$rNQiIepdEG`Fi%m`1IWml8u zcCQZ=FQZS_MU&^&JLCuh+&XI7h@Q&QM1OW1_~2|}B3xmFZArXEBNMz1^I@{D$EZmg zb@~ymXd)KsN;j;%x}MS)x9r|l8dGkmjc@udJet|hs#s*hL%P}t4hvlq?-+oSM@X<4 zd?eOYd=xB1YPf{)sMS>os_1L`<%&H!8B}kIxqCOqBNjDy$lld1E^@ygpz@cZwR;MT zc!PU>zBVSe$eZwDf`2njtIBO;ah(ugiEDE7o+$Jbj!?~=qi9)mm#}*qN^V{oM zo$@C3q;)P>l}9)>Ig7A%aLH0kHYoGm-|zS^l?qy5CBwU>!tb1k+S(rnQ}MmTi0jCH zpI@Sp`%-0!=?o*=LUNI8O7y6!kc5n1=(ToX`wq;rr`fR=Gj4$OSd%(!`ve@40-!?O zel4YOd=I`Fo=L3+M@3axUR_Tfr%<9IURh`XQr<#A+G^BvFaO50Z=>YFwKiv`{=@!C& z&=(}6SfNm&RBz=MWUFc6@v=OJYrckrdpEWsJjDDLibHf|BJo?(G3{K>q9)q57!EesK#r1?D`+)OHVJptK7?8*3nsQu z%gzp@BY8rE`@U{nd}X*q$^qex@Erj=_covvLvPww=Y&ppQSf9I`x@tZ?YPt!{Z^5f z)#kjk(nIYX-5_T0$9JzJC4>crXd(N_nOUC;v&QEM#~DWAK=*Ozbv|ZBjJInEhcJH5 zxZ?Xm1nj!c?l>iW)}nfTG4t+OW|<6ST*e-%KZEbG$xG}Le|T(2k5&}h=gChLm#hwm zC|6DpWuC9JN31X3vO($;%tNiD+LJ>f9nAIBqSg4GiDnZ$mmkfeqvQ8>>S90BrfghK z6H9f!ZDyeNa=kp$wivkF`b>DMxQEqGljL|iJ(Dh-;LIt;yxEuW{am$#(`|!-L0M^r zaHfe5WvgMmD(*Pt^o?F=E7C2;3E+ky=&qKDiDZruqcsw0)H>d|tr9P1o^dzGj9sc; ze+J=)$RqMT3mnkeQ6m$YAVxG)K&C-`nhh|0i`zCJ^Ch{m0*#w{eP^eAK;~~3f^QEp zBa-riu7FX!fzXa#`VUCn64)T)Gxg8ughnltQ*e>KD@*9{Pi*{=T77&6TLmxR%J~PA zP23J>ky6)MD|lSrLk}J;sT1(@`u`Lr9N*tseqn3V>7HWn)H|yi?U`EwWd8ib3x87! zjPP-a&+cPbh#n+W(qa{Z4XnrQyJ)-0-&3O*-rg;Z1>SUp-nDVdeDqi8pJZXghrLYP z*I_@sP;7<|v{oO(Je)s$rQqkWy^NEeID8~WlvI90;kl%z{5F_&=wnzshwWvHWG*n(G{DT4dgD8a=oZT2< zES~d?Lr}_;O@d=Xpcwj={KB6FVT46|6d?UGF;xX+hMQ$Z$&PCAlF76)QoA$GOjbWY zL7X|fxb~&)_3Qc2`eL1^`RYsmvc>hgEEcUR)ogO0hMm>ak!i=K7-EWi>h*HPBHZKz zt6QQb#&uv6`eY$T1*xa)V3aptrHdGGjj)nH!RJ*>*1JQTNJ9)FDP|!Dy-Wji0|~PC zO8AE?8Vwvl zSX~ESv2~ueg&Dfq!81fIcL09~2RQF<9qG9>LFqG_dy{mbbV_7bR2sf{*Ozr{R>>+Q zjH9JnlB3-dQCHQdNR_47yX8+IOK_8frK^-^j`zO7!_l*lY-wKoeAT5s^?7ogz0=hI z1yqBR?6!M(T<2CD#C58V_hM6;w&soh{NcDuXOd?~C<%j9q1ItX(t5EI?QV%P^pj6% zF)K)MNA=@`aqwS}fQPk}g_hF?Po}e<`d5gU5lVm89R_>)I(dtF1 z1(gtmiV<*pjDu&V=A8cXN+kK&4Eb4nI637(mwFf;I1xe9jyKtjGs%hSAuN4HZc6)` zp-<~Q9J4<(WvtATAX#^at~f>cu=4}Q3b)?}PnvkG%;ML8nBR2YN$p?r<2oE$SIP&o94;ABjH@9U;B=eNS0)3AjaIeEguW~loAY#k-(^@Wp*#6#xCZwQOZDn z6GLpTAS@HwErG&GMNA>GniZVgetpC}+xqQZ-}`chGv zcsO?_pjKH*=IB>Qrz5N(O0Tb(A&wD$6~%VM5M@ENWbWV6!GRLZRMQ@#bEJ}~h%3bk zcpNh$(_!X}$Ar$)i(#L2*?iG!wH5e&tzh5DNd)i7HLlm@KnKLaP`R3r;`a)1$~VsS zR~nAD0V-A@-USu=-xH_KVxiBJ=%XMZ(A=lWFUq8^UA{qYpXkZy%I79)G27Z`Zdbvb zzWK<2JhDv-ed7*Tg6S~S?!7ag&SUR$&dQ5TWC|tR$;8@J;sVuJk!*|W<{7WD->7}# zpU}%Ed)^e#)_abV00+{gTGUI_v&Ef-8#XGXhLapx@_y55#cEOit&T31ELxCMq`CJmQAqh%OS~3)QTglqs z3#oESR(_0<)7yL*g>i{|Bm1{6I5kJ%2B;y7B*%OoJ$uEW7S53M?O8Rc#TL5%GG46} z8620*304@+sZX(FO*?9cfX!`wbMx_L8pYeg_VTDt{$<&IMQtR5Pv3XE@-msp92UL; zN*IV2;&eWOEWWJ|%A6b|Z*4c( z)W}M7OQIw`@JPI)2st8^PbKY%5q5h^DT})HL%9BMD}qv1(j6A zY#nmLx$Oh{AastkfijqpNlzUa)ga6D;H7*sm!5JU47_q_fdmw2KqStrH+GSPb3Qd)xJkHXS^UH`e7AtZmd>39AxEhDgR6X$=Xkh+ zcqaM?Wgv?rQN-VqAI)<3886_wjnuwOpfM@NOAo7pAV$?U-fZxGTCb7a}k5DJ*vIWZT8cox2hunTRtr$=~<(>7*LzeLC zpGNK~I>KJ~w-NuI!_>1*Np2N)G)V%>$FaA5I@=0=k3U>4Ymk)n%h;YDo>cgBqf zNu%7JFU&+V&&SNCj_}OlPTqL#0O_z#A^rWJdLOGlEttQnHBt2u`1n#_`&-7gi*{UUE@`8YSU>%&HfZG9~+NOEeUJS zqDy_N2II5U{qpNpq*hr0#AJwd6F9<71MfmPZR=#Dd6q@T(YXul+Kp>X>rc(6IdzBi zPQzEb?DKKgbPI#E$#)FI2gt_%!mRvaQJC47n0_%U57Dt-p!8434FIf3YY!0I0m_)o|V%XH5QfWvZsauxrHy|{ z;~$*EpG*e$F1Vim`twIgOsx0A^1u180)IWh$_yqfU|HGknJ6Zvd;aLhHwP;dfR**0 zJo;aK{%F&WryffG-<9x7`)?)vuUhe|j33{>m2^MCzq2(D6Z_Al^XJt6&er_r74tyd zaI(QZ&?i5s8%|DUFm=NL1OQpVixkMn&JO16ey48ez)apR@`jU@{de*P$P5m3|3Thx zu>MZoNP+YpNHivnKZqP~3>=*KgUA80f|;y8nH*TAUlHVAKbi-@ub%&8avr81yv%=O zfdCf9`wIT2EkaeQHkO*I82smavkYarH~e-6liuFm)iIqiJMA)B>VrjRYqTROS&^_toqeUHAYKx}6@HHk?niKzsL71aJsw6G-4D;|Y3>16_ zk|XX&V*H|q^XHF(dE~CchrH`^#{<0QF8jChaaA;f^wGkT;_1V1G!AhRKJY%o2D76pENuXs1t$0&3wF- z^N15=H+-I$1V5Wpq+85+Ua00k!>=4Y7f^>Q@FXQeek+%;YTUoNJ3uQ^Emp1c;6}lt zNfLcDcRfdfOJ;p%cEg z>giMI>ZiSKU9okf847T(?^LjSH;>`hntS}V=7MM{!3EL@zSt>SjXSK)^tdLqFx?^CIji`Tqjhdrlr zDO&~C&W!Txx%U-&K*9-UG$I`{JKL;bAE(D6zUR2VujuweUyDGXqo5^FrmkUU^Tdk} z*^`f@&J2QJ9ybUO&*%}Qc&Rb@G5><)b^b@#Ez0#b^_+Zm)k-hOLRCU8hod#l;6w@o zj%c~E=Izq(OhyB+Wup8NShx^1h1p>CD&$zd`EnQT?vndApp%P zuWx1^N7wT~aYinBZJBUDA>*NmuNv$MEeIH=7BtE>7w`@V$LI4d**&`nt`De?a{wbkkoqe1B*mF@PGen5bFw3IX(%~d?vS+}KjN0d+{*86lP}~&z z1IOFkx@(KGoUab6QViPm$%{T( z2z%_ef#^h_Zq!xI?%rq{A@4_ZFqfQJASiWUhYDaUaq9Eh3pSr zVNBh{n>ZVfFT$=$b>3yC7ZT6VS8Brm-u1xbeSc)*q*-T*p)vnBb&IgiRm#d#G(I*j zW8(#`MkGR(M;>z3M=`gnEMM$fq2H1=A1nC@{5Ftxa+}4!KucpDKFFBna69l*25o zfzwi$1tN0cn4Bq51bnQXQv$jJTDycCz+gI#`7Rcv&7RsRz zZV*&l&t`(cgh-{-KWp?loq*CAAiQukdSB>5T`>*C`8C1+CRz}Bkan?&ib_86VBkE- zXlT*QlF`P>crBMyjY!0OR`5XpdmOniGkFC^xveG+DT_qX3umALtJZ9@r$r0+Z7+>r zmoGLfDK~|pV!@~~0%7-iJ|{9^=tqg>wZZqL9&6_1Cu=boU(r&m%F5K3)}qlK4{GV9 z_m0|OFN#;4Tfi(pO1YZ`z-j=^Gvn!=Q^g8i<&-{tvtZTNDy!{YL+F%5mA!4eA#@=* z`i(JwQ&=niBjO3{UEd97*`0!uc(qBqb{q3w%K}fu%Ph>b%W7Sk7Z;ND-R%2DJ$P`Wdd^^~S$k)>y{dOi zN{rA<%I#~D#3&+zMB=_i@S->oaIerb;iS@^rFnihW~PWqr8Es&86djK9DpR|n{Hv5 zg1?X)Gihan!(zjNV4kz^_|)%YW}c9ytCc)``ApY%$8evokEEoDt!j|OJsJ5?wg1T$ zCfgfbS%Ru<_^;6Z7w6dRNKl9V0ylcd{D^sk53*K(H)HT`NnI0U{xgeb^)vzFA%grL z9BAOVgxbNtsoZ7?FWR$#;XjfuI>-85gi$86%MD-|pENx(7 zYzEpgjhS7i`e>e|-Y0D$;!;3{9LgcYE4ti%5o-TebN0Ru@E(Oaabp;zlq1%$2-WzfPgk1WE4k#?mn5Y@IapkjU$;o-tk-n= zZ|f!nd;7U?I}sJ1b_VCkQt5xba2esFTNk7A%dmA_6xi+96| zcdOzZdXycBQY%|?dTfR|-uLxr%r<6nR7Wn;tW{61D@Uw7XQiX{SipMHgdn=Y+D1Gg zxF~fZXTC<=L~lqQdv}x5AMfLU$i5()KfbqGHYt?NlRFECaqB_S_DJg8tIkTr7;pY( z!9$hQc}_tJt#Z_CaiQ8duQHSv-@!iQu_Yme^7JS%;Im(4jPc%!@(1Lg!VSci;E{ty ziiwK?9?3YNpM2bu-@vrZ$hy)iLB!qW8gk+m|0*;^mDWys!EX^~B%&4b+iXZiprnLFZ6`{wrDVwp&9=_^ z%&k<9TzU*O$j>WAJFv=hb~)sKfkXLK7RxC}B<$-Ma7 zWu*;GrPYr5dwriP;CMT#>ejO1o?TK5N1 z4qzDcCv*Uh1M6?l0lcRc+&_iiwiG-Fes%a4bojaX>KAliWoG*?phJCBP?D+P&>|4SrUows*8FMv$sT(y z-i!O5>(`MESF5VuKE54@5#CH#8Kn@v#=ahIV0HLbSur8$B(~hCX zJ_%>f9l~4ZOXgHZ?;cl3KEcwSac(xX-KFW8pf>X9lpuSWt|7vH-Bm16rdL8H5nSOAB;0u!CC@4L4kGm2k zM^MM++r|M?Jt029=NCiJ(y(q~@3X7l)K{1f)URseCTSl#Ld}uW(^nCuw8|3_pa00ztawy+l z;8=eMp9rGthpt+moqCE;impC23-%Wf$@L>ksjaLdOu`3yQaRQ=tNQ(;H9O7&Sc8 z+r2ATF$W-Bmcp!K{)*z?qbEZc-Qg<*1=MSSo5E}W2npf4HP^qsEaXcXHvwUV*_4}B zatx+vc)iut+FdE}JMGp8RX$v7>!OmEpca2ZEVLU9?P1trjq?#7^>z4*J-_FE$$mVr zb&uSj>|u_mv&_xKa~1_InFC}WS4cP%*LPtcR7`zy6)ZAF^kDWeG`)Utw=q;aKQKU7 zlI*@dH@U#ac{j-HlEPajZn>LTg?_8j#zM!aTx9rmlZ$I#@B;mjMtUt#N;F?LHYqeG ztQ+d_~Ew`fXh)5h})9BJBVNzI&#_D z%{kS(XT@iJvvH;<9_v)5%T%>*&GUTia{RJp_EG~#aA#|RqozWtq7F}=nioGcpDitZ zyxoKRQn&#$vWUt`sA*cXy}fr>`cc|oIA9P1RKnj!cx87uzsXD6ux)y{PuoHs$`9gK zi_ooyN@A3*KXAhSg!AT-LxG@=NxsuBoGA4<_&|)>5fs}ut_fGH4;2*tyf`~w^kktt zn5JS{Q{m5yO8*pN>}~b6-3)3=8X;GBcigFN4JFJZPSLIUO>sj!eF%)4skG1+%pDY5-H8?hRyoXY^o> zbKG0Puu!T}*n@Q^F@&N(du0ug9j5&T~1FZ2S z{M>uup;SJ3%!Hd;coZh)73mYq@^qv5zvU1!FBr~3lpJ0#-YcC+8D0=h*TAIUo8j&@ z)Ut!}eC$MBY>nWN=uv$&Rx}@hsGG~nM=fpdb0;j`PpT<>7Mhqn)9V3~b6v+^65uC+* z3tIEc1u363N*G}d6{1*_Kn?2CYbqDuz8{+~*D>Ho4dxmczq+m$^!MYk@bFPxf6>yJ z8oxT8vRuj=`;wJ4*Z%ep0#V13P`di+>+I|;Nr;LKk3)(so%e=$Swej$A_eMemw=gi zQSi^j1r_`*8nr9+O+yQIZ7G9Dgg~3%tc2kAR}H8}wE{g=FAKT>@#EU|w68)nbnA(3 z5XWA0z_AO*QbR_-K?+{HKj;u)Y^^YUs+i2H+0dD?3ru6jwB23QeG>u=&Ao+vP3}U9 zXlzhN#BYPc!x7Kh&&J-xrB(dmhGKZ3v-^dG5z*`<(48YT5r4Pa0HowJ@x{lVxzxiD zkwIC^B8-gL4B0h6W zMMV)E1_DMbT`Y;=dAXon07j>n<~CUyqQAcBc6;p-Cj?WPV0fs9_sE*9Ax1elN8;~oC*i<&)>h zM51h8!sG^#Peg9v;>B0K7R^k6pwp1L%XT4NaP>X6=}4PyACFQ)yCWFDEI%z$Z+~`e zfRCo}Mp3chgyaIipZpSAik<9g>=pZ7b50mL=dM)nc^CoDX zG8~>j!m!Kdd=%H}hp5{OeBC!fLMuBrnEf)F3=WlN+FKaL{KvyRXsD88Otpl~^;f3Y zH7W8>hh^pxT}E|2;jv#y%z5V=(6^Ov@1BKl1ui4vJbOzx$N}KZDul$)_*&| zlD$HDAl+(ef~fw8ef-*^OKGKV zD60ri0ogm4*;s=y7Cn%Ko(-Tysqf$bvN8apG7xwVtQe3H$fQLDkayCzcXS7UPx(C@ zRdjXyv%p_~oKnom4Irg&t8Z!bTXpxbwuc7ET3MTcPvPA+2EaxSKBo9b3C#EC@;INH=lcTAPJpdfDdB}nf zCK@>zg7;!G{oH#k1U}OZ-ir-}zCRQm^5A|8gU<-UJ~RMah_sE-eID>L|L4|US9_2# zIFiN;gk}8W4*=eq%*+Zf2K@8W^B{lMV`2yIk^bwmKp;CfWcF7XBQqx_7|i~)4i+GISM}dy94!A*FYEoG zqrX1O#LoOLGEVRm{Z)^dll>ocuz)-FcRiN-SmEEEWnpLhhaLyZJtOhgIye~_!Snn# z8520B_*WTtT<+)pFM2>GAoz6c-(}1k;Dz*8JyurEf6CbIW66KhV`Ke$n}MwV94oMl z?eF6UUPJeL@PC!(Xs-|6iEjV!KNl#Pxr5gw_-KHFjScwF!_QSOVQp*!J^}Ht48md>|_) O8xt%UnTV_??Ee8MopxXV literal 0 HcmV?d00001 diff --git a/Architecture/images/French-Active-Pronoun.pdf b/Architecture/images/French-Active-Pronoun.pdf new file mode 100644 index 0000000000000000000000000000000000000000..00d693a746f08f76a6b66ddfb36c3e8b16bd569f GIT binary patch literal 17833 zcmb8X1wd6x8#bz-AR*nk5$SG_lJ4#X>D+XOba!`yba!`mgEUAt(#YND@#Od4|6XF^ zS+izl%`D#iyfF|-^9xeZQ8Pdjb#I?RW?yGaXxfetlh_o<4w!3);rkT3^Q;+VN#-q6kpE0rB(6i4p>r$j7_4 z4qSN1Bj2spX+HCPCZ@q5zbj8<+4* zq8i8hb7A6}rhn*vI$Esfs2nkfcZT$zj*lv_`{oREZ)lB!(OOLoE)uhO9C+All;Iv1 zKo8P%1DZ&$O-xS;u>=H3hj}N|iP(46ztAF3YF76Fr;g`(TWZTtI3)9Cu#ajivppM1 zGu%nTIUw9oQ2Wa=^cumI8p=%!=9tt*47k+w9an6ojcLhU3dV8?eCoiQ1yC9o0Rw~o~@`iKRQD-Hr%+{SQ-B? zE?s5BR>556_o!xFQmdh!m@smg@Nxe_=Wp2^;GlSMZ(BFN8gFqG8)zSmtD8`=u*5ZI zt$G=pES5QMu3CMjE<*Xbj}YRG&*sZOIA7ql)%OIShrJ@x^b@8=IP-O!1Vbg@ zKv2My%)mC+v7+=WC-m%5xi-(UCVkyj#tc{`?qD>UXm^}dY$r|PU+`h6p z@F?U9rawunl-04oom?FHyA8IA4WlaFaN;c|X)z9Ci-zIG(AP8{vk4Ux%dkhw6_@;iS zkzz%NnD)^fN6L?*q`y~C3y`D8kt`YCN`xWjDngklhz1g~BG}T#-%2*^ki<+@)gCLZk!ySooHFEYB@^vQ7pg8MqAKkTw9 zA`HH$QlN+MD#hbkaF}_=k;5-ohXK$Nc+@e2@O~T1DyiOSliCBu2Z!jedmMBMhMQ1Q! zG!=b{C)LEZ&|85=x-cT&a)9R{D5T;Xh#u2Er0q+?<7D4?4pTh^vhaprqxEP|3$eUD zin@g%y~+``i9Bh#KqI)oxfysU7~>Lw-zJAAe$bEIJ=P*K()=h6>P_%RRK=Xvqg7@0~sXVKrgn^AW;cH`S3De+k>g4LcOL%<$%* zYxf&D4sn~I3Oh?fvE~Y_#uKd>GbIrk5kWaxhn9ccdN#2*kn&~TQR&QwnH}8a6@66$`MUGS3YZ>)~MhW2@$mJG%t<%M9;?t?~wp# z3O@Wn6Lou>S|lfOf`FE8m|BE)i%4cwoto-9#eV#F0=V6|=0&>|82Xg-CYC+Qd)_e> zhdn0ALAB-ZcKj7Kl|LeG3iJ3J-lYk^F@v9CC`5v7YWod3Y%oE@M*+w)_=@(srU-cF zr51fih8ekFq>eNNe|QRq$`wlvgi4N9%Crz&Vo1fzOb}g(!&Mpd?N|T^CU&gCZwXw}o6Tw~@KsIT7w z4-;SWrp&vr?o#++>OGGjqO{YS%XrplA+)&&;VQ>wW7qXDPUf&k%Aw4H`iVYn-zUZ# zFMCBYMlw{0ReM4M{1=3Uy70JA&d(5WAJQv2_N||#A}z)D|=V)QLhiD?c`_e?UW#@NrlZv zb-Ukl8(3z5LF-%S{lU3FrDv-4%+H>4dPZ8d=c_-+0J8n12C$Knq*YbsNAl4FqvM34J|d9bTX#K#djzFt9KH7}#hvplSH5 zftLS-X_=@QS=ksh05rU2`uckRya>7nKqGH$Z2lh@nuf>P_CF|qMiyubVws>ZK@9Vc zM|z&(Z)PfO4b+v>w*{zyo{L`))VIE)EdVqIAJ7bFEoZ5ts}Fc4uzWUj0G3}*!e>Jd zVEtL-;sSA4&~t)XK-0*}(*f9iwUC#m2hcq~rYvaCzl}>r2f}_2{0AkbqyKe}BxogR zc%FH&#q)G&`1S3Lb@gS1c>nKo*%$O_i>-k1Bbsdhx@mN3afT{~uf>+ENvsxiIk!4V zExOtit8!rmji)L)T5tI9{iygPj2pSvMsQK92v2hh)f=x#=Z;y(d)WeMMTdiTq+HdG zJfxQbb!Y6+dc-Ow$@*ii7musAz@2o=EYBL=mePCFETS%En}ILqUng`2+dtgy5n$!W zU{QWifBosZ?lfecvwZfm~dd(hAx?L&? z`|Gs4z~wvBS<$3XTt1fu{{|r^miinP>8gt*PrLrYQQTfT*qSz3%I?=`uQX*~0@>Dt zK9@1o_=-cWmM%@;oa*xbNDbY0edWkvS*VAX0_lg}red7ac#|p@`%tx3=lRsDJdCq< zs3BK^;Vi=5v08dsy$cKwmStp51-0G#tTF_}X&oUdfG71L9K21l1Q(61J^wOsCIz{< z-|$GDi1-}kVLKk$zp_2Mz0I1F>@tApQLU~j6-T*$oZ%hyrwZ1(6z6q+-$PNZ*LYTm z7Rk4xnzibaaCz)^Qsf4rr=L!08jpubtzm9P1SO}#lsyN$5{1FK3;{!-P7_j|$<=EV z2>Do4pA-f%BxFg2M1nR{Ns!}^jB~u#%dKf~95hCJs>ZU&9Yd4CMmm%1VvbTZN_h3l zAv7GS$$NP5Wx&(OFCpiH4&*X1j@a<)vCSM8G%-+gf2(&U7HK&!`7?rFrEw{#=*Ob5fhQ4<0-tD2;>OzB(6Vo6rd z<}W#;X(+sk-5(t#vgP3$Y0m!^sEHph>2aHZZXTQJ@?(EIcZx{YX=Shhl^eMmQEEI_JazOtjRm=r%;> zXj3yK<#lrj%53Doc>K7{bGTa>r&$HE^8gN_{4I@gGl#K}WMFQc_2o8cmfgM0j`D`e zgt``Y7VwLHJaim89D6iNd9Goh0@Rmz%l> z_WoAA?6_SIol4LEl?AhtRaCcw+#z9OqD`xRtGN=#sJoxhla}MP+lf^l7C!~rME@op zi=V?b_z6;~3$J;?NGhCd z_pa9u{ET#0h5riwpOWZVI?>Ux{3-pPW!^Ie5|1K$e7rg~`g(w$VoVmG@mrkIJ%0xL zTde&d_9X#y|3j<^S?f6cf01h%MmP#6TunBH;7E}8)o-b)y}8Yy_UHo@k%McNBpOAK z>kbU$lF0{c?U~s}^bArGmx(i_a@Ug4UhNfSaP@kHoxysG$i4tXkhelKl0g$@M zp0YD6>DlwpcctDQH|(Ujj5-`Q#D6&eE?*p0i!$!`xM!v$bFsOJ9yLlB%YI2d-4$Hh z7R`m~4LeA90D9o98f3A6=GtHH~M{31lJ8C%|+BV@!Rp|*N6w;b6`7% z0KvK0)W~)`=RU{Is(*AY)c%kM#5C!cL!XX1nWbdkJ5by-(;YG#wJ0xpI21g9Ga%_Z zJMkSu7dJFPa>PH4$_%GH25()emPFA_k#t#)v@T8`Wj4sSrn((S@~|x=YLfKRGzVI6v)>UvzaB_d?_*pW?mVO|2>IQ3Tye)tQ5S)Z~-ruME)-4%&+;ZIY64nUy zv#sh2a-wSSOJ$O@Y*|#!Sc5DT9-sNa$1gx>_qqJ(&()F#5wo6}*;?-gI37i9c6SKO zwaxOnEbug0tKY!SBiG($=ue?8`4XoIv6B*aQ+$$!jU?AZ_3t5|gWZc@#TW@}k-8go z=bA6Sq@I*0xvl$i=+^74nVh$`hEAv_ zEw$>LgD_9g4I>1C>`@~;qa4XH)mFXO?F97&0ybB5D&m!UwV$fB2Y6#ri|U_-pf0*N z>MCSysE<#Z>$r89N3Mh5gKb--nu<$I(~Y=IJd7w7`#!db;frdCu8Jz<6ivRB%{85@ zyiC1pxoo&(a@P9TNU5oRL}L~Gzzg@SO=xi}0hhJWS&p__cmkU66X zp4#N0OSK(PDd!}Jsc26zMusd}X8n<^*h~px{4Q2TpGMH$qFhgxbM&*XN0ec39%1PQ zM}?AI`A(M@?n$1Ode^KU)4T{LT-w579$XosQX8s*ZZo?^3d9Eqf=|Jt@2v4Zq~Mbj z{uo_Qk7i|(1#ZNYcT-Q$^r|u?AVW&~Zkm5*?N>;`9Dp^n&M|Oi;7j~5OxG(@JaHSf z5IjNPDulGcFhuv1%+zg&af18p3zS*5zZwPOj@2sSwg#}H&R{?DLxwR;0h@YR-iL1( z3tS3y=1f@7@~g1oZN`dK-3}~cgm(wucO@mwn{*f-3@EeZ_lYMw>cXQL|A+AVZLOrE zqhtOp*q&M5e}vyJ!uzN2`@8J>iyqtjoA5G&q$>*>{ZC?P2V#sMsVHWwX9J?0zxbcV z-)Z7+8vaZ?fAz_yW2<8ZH2lTAZT=wLe-YZBWb?NK{&mMsUP>cp_sRArXP39O)Bknh zS%&|*C@v=^E-y*J2O{pqKh3cqD$B2Lqibz!X$!Q5ru&1*3s`^*w8j>o!6kHbWr5~8 z7Jngv#@05rd`3Ff00w%Hl~?DF3LPB_fJVt!&(`Sq37KhWp=qB}&~pC%ey;sSe&xSw z&n^C5{(Z+EIjE;!-~YSKKl}RK=6C-4-kX?HV{(qL=OvezkwV-u;-X7kcstgq~6BB?6q>X{}31$XR@>6FL0lf^y zx;z$!X3u&J4UdiPvnIyE#Q3Z>{HjpVGctp;79C4rePcr-&_!A%0F9ijzPaM_9m>B@ zXeL&W(jlSa_;afOtn{GT^VlH!ygo>S`K9mt?JfIF2L5Kzr~9P|{bAszd!8ZF^Ar4E zEd04iF1GSBEq&LC42gOP%?9-F#L)x8dIt32@5NULUXgktL;$i#iMd2S2E2so7yD=) ztBUezqE-!Aj zjGo)h;UoLbVb%3Xi^q=HO1*w8DMB5L0%fboZKxaXeJ~e|55ZHT=Qhi}+jqvkbS;M| zgSHi=QA^5`rn9@3EkIH<-UZvo#iN4z(0rdanp15ix1x{DtbG*?_+BeYSZscGkj%iT z`~5n$t1=A_js0e;0QZabbMu0o;ONW8gE;u&$+B>~m`Ch6;9|#Vh6v!qq-^sCjO>1wb!H0tKJhJL9s@L6{`M6tcx*EgBTAeN4 z1BF&>QfPApwF_*|qtx{lU9M)T%C?UBQznk%rEt-*L_9J1nk51ykDfL7i{kS7~DX5&)gMnA=mQ&1H?vb;Gn4s8o1eU*Zrz{^Q08X6w(89`ljnTb+7xG7yR#>Lq$wj#AFtIH*1rf8^D zlYuhEq|M`aKa3zZJ}eW9m*b;Y$&~|K!TRV>qc`Udo~Jbd3dqOQA3wG!{6ln(`U4fb zIia2+lqXw~R)?Cv`Kp{b62BFur5T6l#%x-`#KT|Fb|y`~!C{i!;6UG&cewSR9_(3; zw})R|S;tJ8nb?GS^0kb*fP{U~lH7WL6!Wh}CsNT>XIjzZ2Q@s(PVEI1ZOhL5eO zlum0gYL#?6ppjfR+x$tkwa0?Zh)qMAlvU$KbOIQJj*?z0%E=PYx}~YBHJXj_sWid= z2ALG8pF(ga9DIR>t9LKOV?0}bT9tffgrtX5V}M9^hExbVg-&s1HdYyY*0LRImm$a| zS$?bmKFY-ghWma=P)>YwI>WXId_OLwNLfnS@f0#jsIXcHqUKEc_H=Ty#!gf~pWocX z%tCHIRa1aU-pi9lX4o?U}0dn&bg=t$O0QmJf6MN$dZQi&Y2Sopg$&LseIyNsMvo@Rb-3em&Gzs4FkNHBv|1W*Ex3+MNJ+ zBUdokIZ+3?Iu~U}q%_^)GHnB?AnEr|0-YRH{xu5{4aDAE$F{K)a7|?Wo#byNLTlp^ zMfqCfN|JStj7myuv{Ymd)s#KDk|J~Dl zr!S23?W)FX@H^5$@Pz{_T6{93ylX=&!~^Qo1%`RV4)#^z;Hedc_^v)oh1;>N$!s1svl#$qXf>t+oX%tm8e-&dvs! zYAR+@TzadxF3NN#4Ug${qwcfD4s~No>8|JVky~YLO&dwF4QZZR!6u=V2%I!tWxijs zQNKX3vdTpUy}YnSJtBbe6_Qd?jbU)gZG9rE#0(v1+mfV~x4HNb9Q-z@DC_-did>4z zj~xMKZ`CBzp}K@zCW=8qT@SgUm|W#eWWr))azdPFv_TXf9lj>WFep~ywS>>QVE-y0 z;Cqho@c7vnkU3WM$0lW@>D8mbn&8zVsl(TLHMMh{vO2;&fIZ+nKs_L%2vZTRY2W#b zy{)m+2_0!XCk=;HU#POrXmUBq4puBxZg%W}=9r(T;Qo@njRFm8>_fUISvEA%_;t^& zK_x!<|0PN6e^X==>@zd_!HaKFEy03!iUHf%pbM6fvx=@UbizEuLe~~MdkJH?cb8eP z?kBXHcu7y(EDlDqIj1@~#F!$!6fI&s@xFmoR5fFbBZT!WvJyJfcYKag-(C(&qIx{D z*AAX;YgVT?H?MCv$IY(zu+qW0YQD%V!r2{}e*wk~4tvPyiZLjP&?ple$#cUmDRjl* zrnl5S(I{{ou+N#bJlz#>%*1PbbD-RB+1npVw~zCEa+vF=D`SAY4gdNujbCdUCv<0D za@5e1l>M!`PC_>H_7Nt|`~cp`z|2F(@;fz#2?9m$C}v%R6=>V_J4oLnyGE8W@gH#4 z=`MS)`y%2ktrbHmVQ;V!b*)i>$xN#m-?=JAN zvZLKGZLsR$a`b0;nKVyI}`7|!!gNVph3V+|a_~#Y6VtLh% z;6(|MkwI$KC{;tlrnQrEiQ91XI7N_ej95mk|b-R1kqhIqKlNPn_raV zQMel8p0(7e9EU?$a?yKxt;70Mo6YgL3WrAt2_NSTIn?nRPO=bOj}(hG<+7&I8K$pC z+QJy?pCVy98bTVae>*@aiWs}->6SG&>=ex zX#wWo)v|`b3atrw;w67P&3ilzHk1qdVzZXk0`ce_XCZ4uAR!epB)t{jezdgfu#9n8LczpDn(wSUahXZC)1!Jt!5v{k1HqG~pGQ{vFB>b8(2Q1E(T$=#3 z9HGzOcRE&3XI#USurxLdwq4G67;-rS-weE|-Q5xc)|;i>rM>fke0)gI++F9Jl1jG_u%||g1^5;Bvj-R|7A-Tz!|96Tl<7&%Unzo@?#4P8mh6P>%2x(looXP%CIdOJ2rAI9!;cUjYjYu zihxseE6di|mPW5SYxCSVWpY}m7p5Wh;w86a;rm$D+|)>wW9S^_9H^XA{%<~&H5puC zVxrYOg{E_4@e~^D$V_L(gVjOW&2-!itLWsWskjUn=AOc|l$*y5k0u_pl#dGUEsrZp zPqEBxED#(*9|s)c?-;BLh;u!Z8LMVx0WD%SbZLpYPgef~*=bTp{TE=rmN zDm#HifsG0Sg&~eDbvwxl!vMz*(_g1oC*j{k@pwi^J;6P_N+#ZYMatnMA9Bozm=s}E8|0WllZq52OSucp24|9U z-G_+@L=G18n89CgspeQXPKWPu>r(rh4%_aJJ&sRE@|PKHmcI$m+&9ObaMN8@H9FNy z?0V}HMALt&x^i%^JxO`G@)Gd3=epFBu{zGPizn$ckLSFXuPos}f>yYh5HYJmznud- zndAavyaEH8DQe2<2#wjJYX4V~Ph?KQyr2UoHuug~M)Zx%NIz|?dnj^c$$Pl;5?O2d zgPKl5)1)!Q8#CX3Cfho{FyeQ?c~&|z?+tx69r5;(sOk;&KF-TZ=F;KYdb^juJp{Y& z(4mE0d2!+?x5fbA6bQI&m`vK{tx`9NgBh{TRH0@Z@-=7}r$qk)q$qiYdb}c9sEuiS z-zE;}8-p#8sK8s!hju_uOp_WFT`LIcwhoF)6Bw=i|7esGzVgaAW!QN2)BN_hiv-+a1M#6;8O}Gx%yf5oQ&L|HB&PZJ8&}r<4 zW$>r#IH65B#n!63@PY8ypm6tmR^&&49VN_T>JQdKquGOmt8S;*vHB~jN*dWwE*ow= z%*0`mCC$1A*R9zXwuaW;R{3`bqLW!>II)_-J~|_$>=?-G!7)??^HD+nJ26(1tsqKe znknyvH63;wG?|Ysa}pJyB8j?jRQ1j~vZk3%I!l)!Ycq;_K#Gd!e>eZWgE-i%GA%!9 za(AHxuZWRidWfOml?dR4X7p#!{`QaDfTS#d_Z0x)MUUz$6WzSD>Key#H2B$#4pk22 zU`W$5Z7RIt9`8Ru5w&2*o>PERLo2k-CpW@ogh1JaSQoMa$`Q*P0cTmN+llD+D&)iG zxd?{4uggM!Ggk^pa2RM`t#-$8SDhcMa%+n}?bA2_)t3=2zwSPElrXrDv)>IgLJ8O`Y~?Tq|*$c-PXlT1D-hxC@= zrs(VC619-Q@81)^-`Kc!&XrGset2Nm85=ac3>s4^ixw$U91V?v7fv-wne+^)?#tdL zb(KRbn*JE;QAMnP+2xvm`Y>4P>lUabq39-;qmS*^lzqhTE>q=5CihEo*7x`(=3-AF z?3UFwrUo}B4MvjyN7vpRpi%1N6mFm^o%K?k&IrmtQWG5JiUA*rZQL3OsVAo4mSf_q z7vi^2$R6`82K-&KX+7M|1Qnsc=>a6pydC`%@xZ+A)@n*Y)10#VDk6~zV#-j}(e zB$g>UlWe^spHQ_i5`h}j*r)3zKY+7t+h;A^=6mXZlRW;KGi9ptmApQ(^xF*Y+{GxO z=3z%z%q)Hv*!I+p<&R0&F|7AvSe39YN$yODS%ZRt`yDP6VGxC9ixa?VEKH*ksN3vMhmGvV+6qdJQOxV&Y5 zn9v?aEe#t>xUJdqPoJC0T@;+Iz~`(FRWFb*j*eA8Zt$sQxV>sGGY+^MQwJ}~tGvNM zqgh21(W1K0yjA>y1{G#hR%F6dF!&jLQtxC|kK&qe6SYL1$%F$szfflLRS^nGpcJuW zzKQ0hU2lwg2y)UEm4s|pCvd4W5>?6d+_g)vT_{R&f7>`7MNKL@bAE2k8^kR}XE|#g^qtpj0!Htx2gROI z00~k{+IjGCi{q*k^7om*y^}HMp8VHy#ry0SDR}U9c;;a}NVqOJ2wg7?MTCUzFZ`p- zJ*D4EoKx*SZcxPKzy6Z5rH@kaE~3rW^pD zTp_v)?b7F~k7B=reX$<-TO34H9bO7?BVVWz+Dug9>P{cUgmGwORf6l!(~Of$`h_S# z8aXyFwebFS`A7VKQd?Zt4JCik+>rQIsu8uqe8upjBFmrE~9b&V# zFxg1xlGQzjL&gssPwJ9ZMD9(+}2dI9*Hq$G)F7;Bn1$?Kt14{{&lF zx1LQPTTus*YK^6eW9J3X?KXs{qU?s0!t$B~ZnZ*lktVh|s)k||p}`;FmEYESFR#5| z1q<_J>3{;*<#}+LrLp7A^ zt?x-v@XPGU;mlk|8|*{v%{;a2%)U)_ zO>Pm_-vUEbcFL=yPZ1ss?#22R7c*=gAaEV;@&QlnDo>V`*uCOg;-2Wm@)!p@E9>QS z!di>(>f>TAr42)n*NnhFcvWL3ra(G3OJx&aJ&U)QFhtiO<4!N_!ZG4a z)AB=@PGE`*vsRpBijH?bny7?bs|6|foZOj7Dk*{TVYi1`0}v}4UX3M0t6jq`vRGwr zZtWtT74dBYmeXY$*}ue&>CExmkD|2ggNi0vfvMWr+E*&>p!pK+KqY3)3Id#hQfVbc z=_Dzx3!|r`FD%kKK|YOWuUwSwVgx)biyunz3YFc)%GTB&DyD9pyyc@>F}C~o7pYgd zWuj;6$*$?RLX(N>Ng5J|Wa1(m*ca4`Qz9y@O*htfqI8o|pq{^`(|SXtK3Q{mE}&pD3tXsop6Q*&bW(J`cA$t* zbG|iSLtb+_HMK-af!Lv~ca?@H?656IPzRs&QtNPN=Q(}li1&b%@+!Zhp<)_eH&9%S zz^b{NhGKtVXW>$Fd=7M0;95zFm0O>;O^3Hlm)B#$=f?)rBN6hQ7|CV4)UFmwW|^B! zB9m64pI#Yo#OKE%l-m*ZMDhKc1Z$f+uht;F%R?yg-6Bi6%BFeb&J+B4sqg;^%lPeu zWM-si`R$o}4mA7!?eF6g7m-qup%B(Lv)8vZ*42^Jw*$GMo*h1aIjErN{)l1w%g6Ws z-RnmW^8Ebi^`mED{nJ+9!v%8KKK>xFkUpXri1AvK%8NkHC2w-A+cJ4AT{7mVd zowC2b8ChvT;V*yljQ#KZ_-k2zE%PtG-~VA7{^R|FR-i7 zT!EmAzk(Tmzkff0-!I@Fk&N`u(T%dd&-%~-n3zH9`+xNWmMFW4tIeUdT`!LHejDo5 z!tkze!qDBE$LQ?XWUV07Z5;+OYf1EssdD;)HzErpvM0b*jtpNyP>DzHJ8h+VW=99R66s6;WNmvxVt+> zT?KT*e3Cp-w=1Z{Zb}GIw^mg1i^D*M9Z|Qv6Qhg19pafCXXLweWaORc?+eg(X)Yv^ z;_=^>Oebp7QrO+{rt4aQ?6}2A{VBgE$7Z zl+Nup2JUpi+qkwUoe$${UYP2_Ag>x@6@ZV2reHtHWr08Sj?2w^;`g4bWj$yl?F&F zL4~J~vr<_D71eKeoX^Z+j<&jr{qqw%+uqs}F~3jKPbkx!n{b}*7(2^+@v`*EcrKR4 zJeS6`unW26yjuL0@vC*73@(+w)}>N`t73(T!6ySnZ#+agBfHJ9JQHuT2silqAMn8K zDpwWpK%gn!gloofCTD32z$r&XBk@>dIoUb96(0BoO*f^DK(hz#yIGPWzC7wn8oojC zwNicIEi7V_m98&)SgdJ`UC`i|*E=1Vi0E&zTwwM;^MfNzO@2nB(MD|s@bGaum2nQX z7?kxKGF?#gXk925vl8NIxrwW*93hpxxb0UBQVLqt&EJ%l8BB!0GnT+a-^do|t}cEZ z^%?f#u@8=Kim&=-bw7^R4bV=QvTSLQ^CuY(uiy2qS7|P&yG$d(T-?m^=d1UaE7my@ zRu$#D&{i3iah4zDPI)-*cGO9YG`raMHOSe7l)2T%eQHy1O#-Bo&$&g-tL-*}BW_xb zzvzL2`q&6i5q@b6d;VezX$yMGxSy%tG-B{fz<`+YZK2kkGR*@tOxvNK?gu_qs{%I8 z@u|nj;kNaOy@stlZtlxaZm^=q_N&*-{__oSF(^dEjKsA*R;8>1;ztvbYLu-Wa2_au zHQ}dc8q=C@GrsF+P|d~y{NA+WDy?QMh9e}IHZEpU<5d|s7Ec`noXz1OTtDU9jCQ|) zKVegRfV{p~-x#}rS3+j7XeTcD0DF&~5nq)#!bR0#oA^mRyf|x^{#{iF;^4a(a8WkS z=J8JGu0gTkFD6Ga!E6R$X9+6IL#~eEr}qYZ{AXE?ZcGHuidy{lVim|kT?d>utX|)T zEP1ItopmCn?7;dhi%q-}6w9|!-}kD`Z?YpWIU{9}5d5E$C?w8G)z%OYSt#RmiZ(SDbW*FFD1x|QjkpRDT6OGq?XK|icO-Ny{r?DD|%3ev%&@^s9@VcL_ zA3Q=Vf+8ZHU=C2mLyFJ-8D2%A1Q6YxH%Ko@S=L)z@J#<{ZIW!mxXmasUk zgZaX@)=kv#2O|ctIP}2LS6Q z=JCQi-C+tM6rS*OZz`m!Bs~4fNJ>ICO-l+=amuz``Dxo%U!+J_YPyT+qiFjhM>XG`rGl(G zLoG?l{%Z5XiY~?3Q(8ob3>3HTL+sn;Xu?Uhj&$PL8<#17z_L0g@Y(JRVv?jLe?DuE zN)aGcSsIJ^(IT1!ZBtT7$8j8%%pMGcTV9@|2PxUy?&Y1Rp}Ct}DE0VEE1|TmnYaa+ z`&wzdW&!COb}?6YNoL+K0pyqVPUAtSx7M8jZ}8PS_efK@D8j&E)jmLXlPJE?%G(cs zVOk7&Gb&NzY*9$p0GG%ceUM?3K#*#bov5jt8Kk^e58e}?y?06c1_6hf<%P&8J}U5y zi`dtLz<8M(pFozXSB7MrfZev^ejv>)5@AkniI-&5iP+qsE{|4Dt2*lJa0J3fz@yJ33hJ8xhz42m)-{q3S zMqCscJOxC#u6JUvcynP+a&%_>93dBMl2-}T>9OoF^xFF}IT}kHXJcOrkSWBeCf$>U zCD31=Hg2dWp`qwUHYmm=gj|ac8qa8Zl*}7a)S`c8z|x=gorvgsmElVsfE=zi&AaI3 zFE32x7-}1i1?lUshte~Q0;fQcN(&vL8J2G|vr=EyVaT!tQO9z3q|de!cl1NKbhJAE zv74D7XD0kMY@dp!u7PfslB>(X7Jily!Zed}esRVO4suEDqKSoe^9jrVZnh1xibyec zWw~$->u3~$r2uOxH`zX4Fbj+i%}xj{h@_!J9!?*8t9GM2H+KkM;@faX>-?VMK$ig< zYN13ex<@f(Q82BUf~i|@g(c$>+Ffaj&X|ROi6}-WT8CIO7qDo`f5en^g~c-s8dTpgiQdKi=Mc(lCU#imOMb%GZWCB(=|4R4^5WXet=% z1wG)_*=QKh+QL++B8?yXGL>Gw#H!LA4xuH8#Nz zJ>^ht(>r|__a`rQG{BZ(nY{&*%_shZ!N+WQ>5a*|8Gc`&p``rlPDHW72ouYE=;c7V zOb}jQ6i#_1No`z+Kd5}LAJVTRjc9a^$!V38w&P2}kI2X3g z|Cq455|&QBw>aqN?TBOuGviOlnyexNd0!odM^%vnE|b9&NXBy0q}t*w%WOPjHu(vx ziyx}QTt!DZ*(^9QQko1;X|R$Ftu1M2rwHraO33Pdag>42Wj8Wk&rT9wjUPd1MP8C& z``4{(T>LU`>$k(chq+DcYy~~e>6$lt>;Wvt+g4>GraRm;n%m1gE>1SY4BcZuxx*Ou zWj)hXLtMQp8xQ5zYm;?44ErW1tE$MtSzPLxm1ZnULxS_9Oa3Q(Y+prsW9!&ji74uL zr!`%rRvOrwu1hCsJN7mW^T%+KQ|1{$wZayjUQDoCqW?F7`KS8ztdcP>urmFrr#)-O z&mgIZjjX$Iz1Uf1szOW22*^r=?}2XQN|QrKKeS{ruVT@2BbH zjcq|a{Z!;ZDkzVgtr5@~K>x=f6wnzzJv&`ch%+d_^{0x;2l_`7pb%$}HR5k|&{Ok+ zj^07jKTiPEi3CvZxeoZF{+G7zXsvGmG9!SjF|>bv0YHJe3`_t6z%PuBh4$HC@cad^ z_yeP*XL=s*pBTsv0otN}Vzji+&+$);o(UAd`)`be0W{TrwqvAyHn98?V`BJEJ34x1 zCXmVGU+wAx5~+rQ^W$IJpcar&=&nOWFCFUUW~U}gnbMgEPk(f(%)X14#% zg_-T|W7t~jfWoM)fByRuIb&zgdjyJ!mjwbrvHzeIcz(e|EDV64g8;wE{GdR24n|#O zeMTKx9X;AlbZoQ+w4azk)+ZKvT?R&GdOiJ5EL_n4_a>mjtDsla#uoG!`twDlW1(YU Nf+ivokP?Lce*nfvkO2Sy literal 0 HcmV?d00001 diff --git a/Architecture/images/French-Active-Realization.pdf b/Architecture/images/French-Active-Realization.pdf new file mode 100644 index 0000000000000000000000000000000000000000..6c0f85005efa332077483076bdfdd7a5fd3406dd GIT binary patch literal 15736 zcmbVz1wa(**S-RRv`F^?(zUz5F5QA4-Q7z`xpad_2^b*VNC*hhB`HXUG)Ol{cf)_t z>-FB>y^5geQjyQ;06Ez_9oUC zf`R}}IhdV=lO=!$0jU5urL1h6U~t5zjj|1_KBSV>mj&VaB!?Znv{EgAw1PGk|)lH+Gzrp1N0Gs1#RIbwK2BQaRClVH8n75%Zwo>dbE}x zTUh8tomK%*G&}-k&b=zv$?Ke@p`&;GRF_r{5^fvEnUhIjP%hYU9MHz2J$g6Uwl1Q_ zIpf8Yn^C2vV#xw?ss}~XDZdisTcaVXqFHoM^5f_AI?yqIVJEZAKS$GNUP&0nQo@`M z71nr~P5ywSLsBi(LHa>S^#|&9PfQZ7I$=`c$Mx@MAl+)5*b>!^7>hgCHMaD`xgLY`qcuIlV6WXbYhUrem!jlvGHLgYc4rujj*@ z^KD+cDL#R4E8K&*so_`E0<_#hESy>j#VEJj-`=9Q^3d|O%{8F_2R`U+sY+mom5^cJ zmf~TjXMMq-i6UQENMIiK1qV2bDI@unvYzP+fip2d>_sPzGMutA4=Abe-QOI99QjPO z6Xx$VIuh(q|JvVFb8HrGw;Q!j_NW{66|MGI+KUV&8RPeAVIDkp$cN~5{08B&FSQIq z=vnBnF{#x$Kv7E++;3Ru-9UHfS?sFKqB*0UeJU>bTq|6@&u8E8DK;YiI&6EB1Ye*KtT8O60!MD+T0%IElKx zo;H>>OGpt4%SawfmbszM#RS;g#EIxMFS6B9dh!Z~Xp}dxXps!X13_HI?UJ{+#Vrhi zZkZK`YU7j5>S~J)OBOX@Udei!S+%M?@i1$?9m|3?wl3+XdE`z@LP|)H5SsRaR!Ii* zUX4#lzI=Z8-Fzc6gJa{DAY={*g;EwuK3sG(=Bb(-p~ja2Ny9A%D25g zh_H!ThLWktz702p&jd|Ve3vZw0;4}R?d1jLm+YF=YD_`Rs$dOD!m_%gS1C0N?`qQg|`>r2`1-t__8g zIGhRZJ^miDOv#nDaY{L=)Wdi47JFd4rQOx8eOb%3-5Q+}mKQOf?tUY8$~p?N4#ol0 zXF@|9!)2Pi^GqYpmwT9H8FD^+m$?5KK5K&dfHbEAKT~x237+umo9tJuY5PhH&a=ke z+^BuCW=rLLi^+Gp2nd2?%O8HoZcL}zO?HrRr=~S&J>SE)N4V)j8I`vf*8#^#cyzck zOyD-BtQ)8YuWQaCn)~#aJ)@NFywN$%c5Jr`hp*SGev(elK7KI%IFLMbxtdf)o>OFh z=HPCvn<`mfl249|-kzJ8)qSJ3<)hTp16uZ|8(K?g+Rsfe3pi z4>Pke7Pof;=mHS{7Y`2r0@cUhRIztL*gph0dx_gN=gAZ z)nIN;0DSEL1Iu0WI-gSK@dtj}xz za^}>2C6zS8zg)bo@SHG%z8T`!@qTZz-?X!l{}f?tGnL8M-fIX&_VnKO5oayDY|s^X ztq9a)+_Kr$w67*-gFmLx@m#h3IiwVo;qMGb0Fq^?{?3Zn>;e{lCAqj3om z6cI!`al#`V)%PWh50foFS{%>qj+<9;Fz4~C3yxBwVkG(GklMoo+9xBj3B8mOp4GwC z((cfzOsG=n{)E4CdtNVPt20)4g9=;AofH%UWz0~%S!utIJmrCMXfuTq{S-TxRU)yf6sYcJRM{uzeixFJX_^z=5 zF2sBgLVu}SS(;3t)&7->mcyi&w=&6NE;w*QR`?Fp(|EhY(_VuLy#btTfip!GbJ-n} z?edzfZYDV9NspAm&`T}_lHzNIT^el66A}nJtUa<((H~+J(XOg>0`Nt%6;o`*-B)_F89z>IRBRzq2r$@p~*9 z2;p83RZ(eusi7Kk@MiK)MIt}ZmA0?du}-NQggsRuQz#qBneZUeS4WBd-rGy>Bqq^Q zo3k8hKpm^#dzwaU8=dTV_5EwsAib&kkm*C>ll*vHQhu(j;yLPO-yqHA?LZN%YmPd0 zZx(O*AbdGr8G>`1>yG&o#PR5==_#m8bFOC7VY zhjXgzKBCUN7a~ZXv#4KW)e|-bMc!}M zdbhA+l`&&7jm3{{yB#%}8xlB1@Yp_n%L=rwKhq=$qzZq1f08l@UEvNc`lNSEz$c@` zri9fV?EN{GGnOTY2u(dBLH@8}f=;ywtLNuA#^}4k-g+|R-xsS?zB+#aX}{=Tw}ZGp zjcjpM-Jq+9cdQStx78Hv^$D`PHgr4o-hSFfCdo?F-@ZTv4RT#V-oBsgDQ+9rQz5c< zT2EIZ>v_z3T%XP~Z75Qy1Kp(}cMG%J@6lLKJ=QJg!JYLDSbcUyotEmQ{!cUg!xH_l z(?BTSFSB`L|86jZsg#kB5I1&&nE`&7F%^LRuQs56;iI5G2&n=9^e<*j8gA_Vzp-oj zmK5p)!k-*1knf{WmtnJ)1&G+9uYp4~@WaX{=*)hj8Uy{=o; zvG3RIr}j6>WVu(K`=lo&3iEl(Zq~?Ksk~3zS(TbylFdSIeYqZYVed;dokj3?Yr{f! z(^U6pF^`nwYfaFy2D0f(rYt;|b6jyYr7?si}wv7CkVeK+cz$n;mhE#&%% zG6e$DBn8j8H}DUsy%6&pIQwZwg0E8^eS?yHIJozIRxHtaG}JHkmVvVZ@vF*%QH!ak z6@wBF4oSqW2zE*vb*3m51alh+XV^=HyPEU(1d%SlJM^p+`L~+u4TpT_S)ODu)Py8zB+vMI>53d^mEd=#X?^ucc8_X@=k?NDB3(j zTkQE*=jD5QC7;opA-^((_17c*2JZ}MI|MIf9amRqY>jNPo9(C!c+2kMj^S6FrojdY zCjuE#qy?B5T3Ah#u->p35C(st0b#AZ<|XL~ty4Vf^${K`I^Y_Jax`7`nPv<3TM~*HcXjc94;&3MRsf9b?c3p*@P$%YfRCN!Hlt5&USg&BB za@o^X@)xyccc*>PNY=E5n$=8&9DWpWzU5Zr0g|&|v zU-lzhl<$L$ChFI-Xk{3ul#5-FnW<2(U!ZTKMOZdn;k;n6rgPCs^JB{GY(u@~kszKi z86ljM@o(8UAMrFB2-Qt%1@x0p`Q>R$!g^`p)ci@*jCohR<9boNJSz6{Z;M(u`Z-&5 zc;fKUlmZuQ4|&_w6G%I-EZ~{u9$XUfSKXjig?gG+xs8r@6X7*NHqW79`u0 z%kR-`-UaKja<4p{!CTU|Z>lu^p3a|U#hJ^e_c5D)nPgm8z0#J43`1=OORm96qqM~p z+DCV`ez>ZjVEf6K`@)>Fv~1-;>f2xIyestWomSN++igt3#cjlIQB zmhAWkJ^oEBZ#d}RC-H-#a;iF;IQ<~kYH(-R&z^2f_|Jpd(h3i?WmzA=Y+PVYR;I=Z zFlPksyg4Qbb2NopIXKzFF+hJ1;D>eyUxJk#Vg~ZYrYiQf#&*9EDJ!_6lZ2%)9Ka1k zI3$e!*a0EV<#Dg zeh}|JTmC-hj~Wlx&5Hiq5IynoZ~=IDAOIdHH-Lxl=6-T<{U{N?VK?~SZq2XX!yA3@ z^Md~Ug8jUJ3dXjGOZi`1U>jo##2p0xY$=WqFBrP)d^{ikJ2x)~0OI3?B6I{4ig;3F z5ck~5RLsu8=0?hJiaDCzNFzQT#HlxT=w^oz8Et zL-PFG1p&CBKt!Malk2HK%Ue!&lu+dOTVE?K5OURs%V@O1R{_F7rAWLNV0vFJ4J(HG z>$utj`sbn*W|HU;XX!5e+3M_3-!2DbZF33|h6d?9d!CrY*U^Tu+vanRVfp~y{#V6&UnBEVQ zIip#=>D|c&DbO?aC-1j;xm;6=MM6Dh^BpaS4t9G?d=57DP6_L_YJ=b>8`XDA1zFRC zL0miq9p$chu3kGlWx$Yt6k2ljH}SmIlC~&cC<5!`*4yIhMH&w4Oy!ZGaf1&W`m>Oa zL!Mo^ot_>GQ{`9a8bWiF%1K!**AqI)lgkRW2oDU)>I(}pdqDLRFt}?8hPlI@OUY=F ze$3f>#Kj4unc!dJIhcIvsCoy`v$)NMkGV+AzeLUv6^>z!SN-MsX@dXv$+5?WdKsu! zM11{})SOY9N^^v*RGcy6tp;G}EuinuRJvV=WCMBDl zOy^28WMafq#P4Fl1H7-5AfOE19+Gup`#^;6f1i>$>GQD~jaDb&W#V`7;ws|xxG(&1 z&*t(Ue%OJT-g&E|YC;*1dE%C4hC$6j!SR*@=lpT?T!sh<*5YGL970*mpvxu`ymxGg zkNmabKAKh_mC^@Y@q0(pX(2x*(A4~r@P5~!$O+~=+<@`8jEG0e+>E38HNdAo4RsjcKoDG9!7l8R`5G-UO_cT;H;cPAaNtZnjb!4M+aXz2L@IvP(L{RL zS_PA{4Q*Yh3L{VeC99`0TkR4{97@_d^=vMTznR#+sc4-cXeza*$O0cK>ft}~4m7#P z2io{V85BKXQss=lCXaRQU#$+TwT+rfYLHA+zzpK_`3zfA^**`I@;WE#9Cwxlxz3hqvxl6P39(a&19#kem)wLsE1}qWTmFeP z2T-|^%Bkn|k>#HNw)9V$&+j$!vu0}Au z<;ypwNE;~%Mc6N;J)2rDvn?okQf`Y7BvqocUrbU3Pf^_KeHxue;w`L<$T$`qbgH1bcp=GXkA?s<6t zaCVs2ykuup^LCm2713{MNU8Tv-Zti-2-ENUh9Z~QO@`0%izHe#AOVVr5=rg>O{GB% zqnO8`K;sZ-fwC^2ps-KXS)b{4ih+S}k4D^*Cq$izZ1$uA(}n0EKh7#)r$ ztL8JtgMgf^l(fe@bE#qM8Y{ldGs35Mcikg>VM5r#;^fe(P=O{`+*aXi$4H?+961dQ z^R593qut$4EG6hv_n64<@4RKeutH7%RuS%UpjL`oXk|-TK9bYI*M9Ki{?*{KTND=+~;D4lv~(2&-~RgVb*!VsV`ygdcwT}JkPdzb6!Z$OsCWd=xP~% zno#MFiFtG;-7#$&+C&+eCGP8V;Ktx+!mZQT%V%`dm_kxlGu+TQR0T21FuiLG!CVSW zxc{D+UcO&(hOt#xOxSy)_$MHCP@w+kiy)dM(Hp&NrmE2SGyxP>o&1omRqZ67Uv1vI zGiBU7-n>fCyY-nn9j)+teXT%OxlsUgL&4tq88ECI^Fn)A&8~(y?pw8Y&L~8v=A+Pj zL86AsX4r!qUCO8_iz7Hkfp5zZbn`_y--M~`A*{mJsH|FOIpD~sOk{E6g|jrK;Vs!@ zuA|$$Ptq?mdRZRvdk9w|ClvJ}$I+V91~~_*V_U*WiK<^SOLAKixe1Bm7x6R}I{0Q< z^p$Zzk_1x+@PdZqCM$D3oq0nDyN>MyJaR&m=b{Q47c%Z%%I;`q<2)j`J1IIFr10b$ zwglN*;A|!h-Rn;PMjB$kE76o^wYREK-0@8&fzQcNb!ie^jfNqTwI8Hw!$V@9;BnHu zH%rPwRPlDfv<6ZwT_J9y2yh-Id2<|Zw_)4GC!I@8b=EyX8K`m{2xPqd`l z#&)l+PK&i{u(oM;T#e|OUHwIe+B8M? z`TCGm@x+r32ps`VVBuD-@$zuz7Trk^;@y1tieaB?GePnCohxmfZ4mB8vm!251>Qt& zs)P;Arx$HGK=ny<3R(ke6KYmjW&0-P5TS<+x|5_>(xYaR_@5KIgP`#sKcJHMS~W(W zY%bMsl+)*QFdMxW>ylhHhdeRH(PrqZQcJ;D)PuS7n6%fKI$3QNR=r~ zJ^!K#e+erv6#PRp-Z0@GUjAQ{__qc?@b3RkZOMv@DQhUQN+9AHRzD)Nf7e+ER{kS& z@LN^=cRGs?p{)K3odp2`5t;^3BKrGl`D^dz=gpB{|NnmEuWIMVr2e_m-}3OUYUdvd z{D;l~=(0l)5gK-GARj{FKoBt!ARiDBt@(GI1LfiVtIpwu{6*&gpg@Fd`BUfop=~gD zcoAagPi?~sM(o|Fv!Bui{3{^yOWOPZey#2gY4bx+A|g1yqzwcNLCoTRk~Ud!m^Nyo z@ojy{0x88@D4rX|Ilu~w!WCx=LGz7W)1nCN#Bl5;_nk-hxau$1i;As!nnnFKk(tu{ z1~=@Y2qY5J)b9gwD?<10fm}3xXAL=AZ6;S2amLBuz(e$|{~_Hr5?JF3Gr%_mGVj;-*(ox6rPu zxmtHt6%Rf2nxe~<$x3}mA4HSauVPxCBEvIQn%$Rr6mj0VJ;}SZzKe}(lT?NpLC1*N zHu!WVQ)>eH`P$q2o0-Kou2BlPoC%UPmbN(}4r)cN&&wNkDX>*9_=yQyJiMcSs+|LFC~51Y(%MrD%FIc#Z?~GJNvM8z>leoAqzXc z5d)<&QiPm^=>aO%=Kl6;DIZ(e#H{JPkKY?~p~M@NwiT{K)9NQ(8Bcq)T9lUKoZrv# zwU&e}Rk6Gr6f;IYtGZ>@u*jB!Df~{l%eqXhmsp>O%V|mOLpc`(dv~Lb?u^p%P?A_r zF1GfUa>~4wZ*B3WN2jUR#@$43N{d69OB+h57zVrXdpdXCTF#MT`g<8*F2p=#3wunX zBeD(;BO();^#P(#AYM2aX3WDTLl{Wx1c1^dzzs zzH@5~#U-HG2q_8mV}NUuy&q`wI&D|l$lW1fQIGaTQdU9tbG-cLd!%92;tPt6dw^!n z>|&$?f8!!FirZ~X`$iZS_b-TewY>3IUzW^&!#u?9r2S%O%Id1l&7hMowZHZ}AyJ16 zpKxnA`<}(}*^)x|5{GVq3O+`D?qYT;qv5#6b^YVOCs$8br9WODFI5D`*p0jQ@!6}d zHaDbt6&SnM6^iJS7BLTI_0H9+&7>1H7`XT4N{F}@SGClec6sj_ohN7-c9v-dBm0x3 zE*j!p?iiw7gJ70YRYok~)Y#ejz|Ch?#B!gEzTFw*h;wNw!~6+pzPv#l6kbZ?o3$sj z8LN?HxCi-hqsXbeI~iw=kMePux3K8#Q@Ge@`FpWw{1aoKjq+9F#a{m4Hu*GucUF__ zR?Mb8m760lC195#e8or*ZGn%ZugMLk^(Qoszr$BWd4<&7m#i8?4y#uF*FqqN4cZAW z1yn)f3sv+YmmN~>N3zT0`om*~4e1gRQEU%)UsLS{iKjTgF8dEu?fV3M+NNW`hMHf= zd%bopvbr0X>u08&#WyRhr_ZL>jJ{43d29}uikt--IZQuWE;^o$lKm2h`9gqvUBaPG zL5Pke(9nw)`4XaREg8|Ms%}}zlCn^!2UbmyRxjozNSu@6btuKEG)elLVi%P7LRBp( zW1fI8=RNPkFU%|o%1>YXfR=Ai7waTe##v*erSP1kXYvv#ItnOcnO3i}#S&1h{;0Hm z;CVC%kT-Qm(ktL*Kr-JLgL%bY5lAuJ;b~rbk-sxcy{)3BKJ4Mt--;_G+<9S;TfNsO z`_QZEh6`L9N1%Qe#>(+=0m) z&x=)i9J&s~qZ>seDD-;}*x8o?9MMxGrBbrYZA}Tf<%@ zO@8tkPn{NYtt+>ESlzWf>ivO2NUvi_wI z8Z*C(4DT~M%OB5;7kCqt$o6VgpK?yrBDRn~bF}R0d;3w(iRFjy#r76QINYl>^c%Z6 zGbd8(8BT`07b|PtxC;pn2Y7-NwS6`tPA&;y;_*F2XESdcx76z)%`rCkhuxN~OmDiv zM<^x3n*ychPs7vmDd?%lA+MbgcK=bguDMB1GcSu zkb>1}H&=IT(5ZX*3q!IC_aFnSRUYj9_!LTbwj_O2q}3Q3ezqi?g-KGpxmX0P`ExPp ziib2!+^Tw0?9Gi#u_}DR!Yw_dKRn?T1$|j>%KE95M zuAOdu;A9Mn%2QCuGG$Pw>{xrCo?O0;C^GY+)SM#`_^?bKzf828!u`0up@R=vFh99a zj9IkX_mG_}Y2xX|BHzDP!3wgUuLxyZt<~lv;`)BA6k{FUx^S8DUEum?D>StYzxX5) zR{*&ma=qM?o^$ay!#{z~FnD zbyE`LDi))CF*=xm#*NSImJQOUCS%}jg@DnfPqR?K`3st{Z;Mn$Bm7=dKy_mY!aep- zG2%f0UOEPOUeP~_)0gTq_ZBHXXAY{TSGDLBn38(zT?jBLBwYtCIW6x+D}rOA8yQoX znkelR<&s21o?fuSroMFN$aZ`QlYJ`Xqg@gL8v>){!kqduDU$Hesb;~nuZ2#e*rOWz z&@Ynyt!O{x^H0TZjl|!H@r;t6-M>#4QxKc;Jd6v6BwDjQX%obAUxE%a$o_9O!#XqQ zjn49zQ&(ChS!$T+M{c)$EElVyE{_ntPR*}r+$cSdD!H_|Vph1SO=cn4A0us8NGn@H zIsp|SW@;>S&%m@y|5`+aD@=C{vb@e^1!-?gU+#pe0bzgf!$Eip~nficpzplR~x>k?1UVuHCP0bo3-Zl*T%1mhanM7$wY*w1n z%=P$!d+46|N@v6?Io8@BM`w!rZ=KQ0yJBr%)p8bUkXrExc8#S%hp*HP!bBr<<(%25 z-yD0@Lc?~`(pf> z)>Y_>W{^nVj>Wso(h&t!{dlU^JcXk>e%NAa3wH#hIW;QZJSMZ;K z!e$?l$r@g=dYaD7);(cnotfS`smio27kDW$U1>K&vA6K%qJ05uz+nB{ns?$Q&vPC& zbxWV@_Dz6t3N2&iy1P33CYqik~VZNEXH%5_cX`RQWwl} zZBBW8&}SbBDWA`8ee%Mrh@d@HJ_dy~*14emdit9{#TFSkDMeSx8w+CO)954NBE0tP z3ETk2M#ov69n2lh*>~d`uPWl6uzF$ERyWMW)bC;oZF^MfFU~ZaB6cD~w$IorlV&^~ z&zzv9x?Ya4uef$xUEg|R<#y+v4w4^w`9?!?@q&1N3F{vb*k8i>f9)WVQBl)*toHYC zH2Y82z)uu+xfH)8L1R2s_rM=bfzh%ln(|Ks+5?1=~TJ1P$R z5rqa~AmXw=W^wb$iwOAM#G(IBv-)#RH*xR3`F8%9xbR;`vj6*g^TW}@2f_H^Y`F<& zBOE<^h(P+!fHn`}arl>jHv3Ja`p=Ly!k=|>dw+$rF@A@%5z9vem;ZG2{A);?3lZP` z)9nM|`4Nr&<@dn=|4i8UohWe$x1j!tnD**yAyH9( zb?r>#9;r{ow4T7s;2KA3uCv_1rXva6y6%LgXU$elUcLLSp0EDLGgtcp{Y{Znm-OKJ znu_6#@i2R1Im4Qh^3D3I`>m5%T|M(s%Oq7aXkIb0BH)}?@LmPA(SF=y1_k% zvAy;1R>(dLIo?%fLhaG4$jI<+GP#J?ww;5>dtbxY;JVyx|Dp5esjm1=j~c=bOV5s< z&P;r#M2pRpUq*2*%Lzdrxm|}ORwcuq@J=v7*)OTcg~2W|<)unO#vz#`!7wKAloaJ)tevGtWubw2iuPEV-z3p(J?(Td7Rux-j4ZbmqS_A|$rt?| z!qermv!YXhN6Au&&Z$QAEhKPRfsW9+KQ|itVnlOMqk2x{USdS6@=1TLj{|16E7{IY zbUj-5H#KWqsk24#_w+3>8dTa=`uQiiOR~+JUFp{ABLlMQ8ece}WJO>K$rmBRQ^zI{ zTJvU-5i}12g(fsTZWkA|)UR%Gc2nQRcejlgzlGCQk{&V^sSZnpXiR*lEz97DCLI5$ zz*Is@_fqOky?jTYDyzCAZT_3MYp$%A08wLBTEQ@>wb|PbgmJ8O!L82c|prJd|IxLsePlmn1HK5q#oX>!JUi*w0TaC)A_G@`Cdn+3L(T z4er7Q`NqSM`LGM(&sJqoSgR-4*YpYZQa+mnZ@}Aej=osWo_|Gpz3A&*2NEVEp0wLGw-j&B zAl0K?+^xEOfkC1dsOgy)WQUxKqce98M$v16CJ&S#dSsh09_WbNlQz|(gcXOh?BC{x z*+@96JgeP0TW~mg zDJn{p%q!F!;8C_r5#E(# z-V~gyfTKGje9ghqmlgBGoW!b(VNLBMuh=OfNc2lMcSXD1H!>TJtj(%p_;wptR}?er zK$$|)_5csumDGfDj?d@;Z=2BzH=h|3bKL8A{$agh1@vk?^o&8|Q+<8SF-SrFDAbd^ zD$1Wig$rqf)2q@axuF<(r%gzJ=9XQ~Y9P*l`an|KhEDmT_e5(3HzoQoZMx2b2bs^U z-zc%)&wD8T8&nI+R1bUZghfZ$d>4Rv+HNO8Cct2}VWA?_ysN=bY>DIr)L3fSG$^AF zf~MEq3BYU0XEDGvkTu+-FKpuVH-nH!W0LD0zC*TasLW$hjw&wG zL6KKY8(JRv+^i6yG@CArzLlO zLm91!cQN$RKHo{GeZAya%hweDu`gb+$6uIP=%vz1LQ3BkHU77s&&<8e8&@a`S&Ea= z28&I*N?ZLG%5zI;>_%Ov?h;Ma7v1N z0Lj|jxqZOz{1G{X1$zuHOaHN)0JdeFl3yT8xy;(3_?F*tKO_~w&S?JFkX!4K$n zwR-diCOMCZrP!bKTHv`fLgQo8_~pHvqfl8QF~h8wm3$j(Y^kH=+_i)L;(M<6}uSn%Jn`aO?gkxpY8r{{rTChS(HX$~d@kPB;cXRgf4ERpupfWwX z_Q|I{kp}y6$w^(!K~_T%yh0)1cbRVb0c~j@;ZEV5y{FslbG066bF~}Ow++<#iq7>I zy3sB77%krj2XoFyKe|lyn_Jf@czU7xY}-0dNay;qxX`YWNQ6YN)0;nl-5(eb1m;Er@cxc*1Az#d{C5li{R0Cb zCj6i65UF_xV)*xS!4O^q75_WN#Rox9@4sW*h?D;lgYrQCb6gOJj|Y)2`uB4Yi~C1^ zUXgWfrt#! zzqdoIjq5+#fxuihNxgp?0|bWr^IUF3CiL%iPH|h d+~lVma&$s`Ren5_2;soPi$PESP*Dow{{br!NFe|K literal 0 HcmV?d00001 diff --git a/Architecture/images/French-Active.pdf b/Architecture/images/French-Active.pdf new file mode 100644 index 0000000000000000000000000000000000000000..65e83df8572fbe6f36d3726a96d2ee78eb62b231 GIT binary patch literal 13602 zcma)@1wa&C)UXuG|B}7WPkxr$%ySw3E^zHZk zzwcw=&dj-Y?wPrFIP;uy?o!H&h%o}0SWzgytsJgwzkqQ@&cHp zp;pEYCIB!@qzGUZGqrGl+QGIK5C^CT)WF&h3gG8Qv3Ib8LM%~S9!4be*iEzJ2A+AK zFsuaNPrrIHbV4QO?~i$ zIX?Nte&+RM*0cQuT$o69|toMm-ILAuCS7p8F|?JBLw^0>=3X3iC5`si%nS4p+*f;6lR~7fT5>SWmhPC?C zvMhz3?Ri};bh9J+@x6n-;%WH|hl(=&AsZp>g9v40?rjt9qcT3D=ALWDY=lXhf?uu9krzsa6q@%V=O;+0>ZEPIs|H z2Rp7%tM-CIJSLeapI@rD=&o)Ocm8mk4S3aUAkB*7=eex7b;vEW=cTA!bm8W|WW(gZ z0op^(#&-Jl<-P0q$gqkCQHi8r0}<2>}-C=5*y#_ujDeD@h!QfdV?74yDQI+3seikVOoCQZsUbaFi(?>k2xv(xzJkV;3Rj z#b}|`ab~_`d^c7pHX|$fa+7erQz8}@(g>LL^k$`$nSeSHe`C04dS!9QM=-A0r=Zzx z#^=vC{OL&rFH*SSsGwoI_!o@%Z_i(->qh`^6^vdq$D4oYck4KGHzqA-DPei}RHl1I ztVoQwx{p5u+_LDbLp*&{?0cKz9{m0iS7L9HO(Oj}cSyt5DIf}2F|>lVUmkT)=L(l^ zqMavYCAl1nMWUvQ9ff2ATZTL|eQ$nhFb^+1v{3M30> z=du}P(Izp=4VGlJYABlMikl_pK+DDW{0}K z4@ZKiRECzJ+vJ;V&^hO9=;^k|+83r~TpM0+=wU{sE5r&2Ojb7@WDfD*2Q$i7L2$B} zUwA`zP{E*6PEq})PZS*?KA)#P%M=~&=o1$xK8iTdZ4}ceC_gwLWNK*iTSiU4dX=LQ zR-zrM_x^f~G^jOCX_hK0+ONkC+jzCkjn)xX5*342uspPi}YxotZA0tkaVseH9=}uTOG$mz+w^=K3bWyWlGW`uVpW> zeI73XtJ-&;6H3h4h}H_ZaGuK;NQdawVrNUwvPP(bsjT;v^J|w!+eZ&>j`EHs`X8g_ z>Hm;t39yw#!(M;1>If&2H6CB+%Pts;RRRh!m13<2rSLEsCA7B0hpDw14jEGF80})R zys{r&l;EajXBy zF5A=JdWm_DC6O=L^)Uf&dwDrmDdDNB4Hu0h`no|>y59_jPh4>Y zQpXn>0v?xz&dL&2OJ&p##rhQX$YeV4t?^H?N4SLZOS&o%8mzGkIPD^d`Ax+Kzu^to z9Vb&D=RHG~=-2|YBr=ohluCedhei{uM8mn z{@$)BhPtlFGh|s3&R~NR`Dn6>O^az^pN}!a2~A9MBXa&BUY{dcl_6C&WQ1~WZ2p~t zxCt2*bucFyEt_YB0j+}L&gD}C?`GV*sRhfAyKyOdNN#YuVRctKk`+`>1?#DQjPSSQp*-^ zqP1q{%9#uDekcpEJ_yyi*)*eg{+uH+pGpuc;}%OROxd3uhqdqLjv965vR31*c}ZoN z441o@jmw#{i_hu6!-d17>?@t{i5tcAHPNf(2QOAN{YQ8~-Ycbv*ezfo@k5Lw4wsI? z0-Y}i?{<|2YaQz0B*}UY-Y_X-skt0JIXD&{c+KMY95ekU@sg*09rgnq_xF4oQ{-WDK6 zVGlJBOVr=(@Ew${JzCsU0LJFNpz}>G>!=S)UeGk8#VOa4>=!9xpP~?W@Wi{2@5Sl1 zM%2s4xVP?t;P*=OH3(P?ps}w$S_rSnKETaj(H16r%KcI`G5?*TweQp7VtR>~(X2eJ z&3LCuEbZG~+MzcH^MPks@$NjA`KAcl7-vP+PGxV=LE90bJ)MGtRQPbu5xUT*T@Nkc zWiw7kTaKioHBqo4B8YLvCErfCwWsFC=WBEHQgZ1C$Uk3U0l}XC?_9h2_Pv~v#k8^x zpLOGUK&AAniB{65dXI+-a^mP-nh!radz?STM}pS%40Fi?eE2CM}Nv$8S} z!1b$zvN8w&yuS)Xn9{%K1p;BR-xdGHy+F{fb7TQP0JGpd{94^#F0%;K$2lfgNw|+T3O@3;`#r9pV`o0i&Tfm61Y@FLX@&!6JQeqOSf>n~1VODS7rWJK zsqX#GyVY@@wybB4w#y~i*4}ufCnxc9c}nio$e1dAO4?r+n_rR4Ms9z*6@P8*O){H} zEw#ICthHmHb-J8SfInChxT*?o@RlYU3u+d)79^q*2O#AoatpVH7vR#OUGp9Di5=B` z>6ZVRJI9*9ta%J?IBIW{foEe&b;-h@$GG3B_{;US*cOHnb;rS8zyO}KvDs4>(*3CP zNS0mrhN*H{Y=dN3_l5U%g=zilM!9y37hQ?o4*8Ug^48&?{-@b-xLdItK4}kh9cA$% zE04#FXKX8mgkPNC3*KVymo;h55HIoOHQ~%Lmhtzr=5z7FU4!;1>4^&-v^E?I4<;LO z6@P4VOTGD~N$xHtpb9sO=+Rk@T8FzG9E$g0d=;=?XMpF*_>GAvNf4V^A5S3Qq}!yB zIaj!`#XgNH>TI|$)1YZygyi#8CPR>b-TK7$SvM?~F6$VsQ@$qi8Ue)zfqlIODxUGK zUJqS-WV0MVUD-qDgv*1C!5o0FM6AQk4s~?TB$Pp$L62iJ6C580%?EUp<d8=Esw&8a9?bp_63 zFNzfDfit2((gkb!h%S6et+xT=N^q%?s~CZ* z6a4_~Gs!P@FS!aW)DQf--1Y+76$-y!L`{T!C-V@0I?LJvyh{Rq zGsfS0zWNE-A~Q&fo^8!`4r@iny1CM5GoAaRDRUl|_Lm&)Rs0Ell}bx6A&T-GnslS7 zYS}kujsc3xt&??GS<6}o+qDrxrt&7$ckjx`XtsY_@SpbT-i85zK=$7a>b+&Wm%)sv zgs`v>#2#u0_-X7E0Xo080p1((e;U8vY_}}T%KzK=DT)jIUu>UNFp&!WZ8TRGN^Sqp zUJVd=yOu3%Yov|;b|i+<@JsGf9wi(v%~5`uO0jF0_( zxHXR=T`A_tt2%Fy)9{zO2+|yjRvz#~8&YYQB|!%~j&9~Itk=>AGJL-Z)fZjiWKg!U z+jo6Boc?am-Nb#dK}MLRK*;b(l`pEV|EZS{ebG&$mcTnX7B%W!i#;{#Y9aMLc>LXnR)DW(Dai1^XuL06Xb463%iT4deZc`#QJs!Dm*yJ0MBqIfqHfoq= z)tsj&#a@@qSNh(ytM?LbZ0jg}#&?t8X`UN<^glqsnWv9DL+P=ZREGMgIh_-K!VDQ~nY%TkEdI|o_G zneS5LK%?EJJ!Ru*T6}Fh&Ohdi>t2Hs;$a1loEqo}?tDH2XVw@@Xi4|_ z1|gJCqbR7Mh#``_owtYJ2tlU)uzilN{zq}yCLPr!x7)HVALcb~6^VLV4avBTCyj3! z9MQR!xOJVTS!(?d)K-yDwtO^q$_-aXW5U(OJilepouhxKMB%RiQl$=B3PC)+x4d z9_UN5&aSjOUZKfwys}?YU)1=nEyoEzcN71hFKnCx{-{$ub7|i+V@`h-jT_l=FM2F5 zIA9!G$~s}!6nLaF*DS(968`S#^z&q7Sp-bvY0nS-wXc(!6W9CDj~3`I=~mbU$Qr1z z3r6G;HLLaM-CGu@V;}Q-YD*ApE>|fII<^5dLc18P*j;U-zBwyxQ`98bHv~0Us`2)F z1)ALHxtw|K*>(_$(BppZTq5BJbY6kqdz#`dWEtOAA#ixnKv62`e#Uv$kWMqJCs3)$ zaX>=k5@vGLr@EDPruDfGbKcv3-S3w4W15G`f0(u3Ly|z2Kgsl-^8RJke(~rZX6>(5 z?N55O|0j>K!|Wyp7w9KgI>Lw%276MbhW0S*{KbDdf5pV#Dfu2efAuL0ae!D@8~;LM z``?)OPoTZ$&fiVzuM>V^DYKHJzQa$VR6l-b)y8;=Afugk~#OhCpn5mt;gRlw24#36& zi|0aqJAl0(0L*Hph7Kk_ZxhUg0s`M(=&uim zEg;6Qc?11wDFpLVP_!7iz(4>a8z&F|y>B_f8A5puNGp z7sLgIoqDhE{(un#dzmr|Lu_6_O^r<)P&i-@7qgNB)Kc~S3~4Cj=S+b(0nF;ZS^(HV zunHN7%g^ZmfIuMduM2^N+o3RD<#%`Hk9YO&PySy5^uXWTpI?3p5WvcLKimIXy#BMA zrL@)kEJuR?(+6(!Vdt}{Y0Zrt=d zyi|AoJ+6VPx;@vulf?_;XEDM(FBD7;r@z5%#8qRrO+`zE$!7M=zSMAYf?R6n)QcJB zr=`|9jG83fiDg}zPyvC^@(tD)Ujhew%hAA6x7F!I(M(1I{;$1#az^ca&fl2?IBbDs z0+t_lt}nk;zX1yD!N;7S9^v7#?!?JEF(u0xu9neE!ncp7@(A+<6-5Uab&6<{=8-E) zpA^R}L_V7I_Fh{#xb8>lr9#$q*cu|^e9y4i`5n5Qu z(oi@(s`ewTYuZi`<|Ui*Hs@7^)cfz$jus#F2)!SLGl>Y83M~YMgNsEhprVB#xL+J8$5d5` z>5E17zH8HpC19x2t-b=+)8Z0_ho-+`q=-El*i|kas zD5JfnZPUbqJ)@L;H-0brc!IMokfMfbdXC8?Eaxq7qHwpF^G+WNI^$sMWbT)y?;rA` z;PGb_-+V{G+c`w+(l2KGfx~p+ht0$n+yX^Xtn!H45Jur?s@A5_E-A3-e4jP*F`%U< z4OQbZ4S0Pgsaq{>=al9lO^z8|ApmJ(>m6HvaR)}piI`B6z5PX6rpR=K}kj%QByI_uU=sMo-xaerp*BPnv6&QWs_&ttwip4+bW z@w4iLxn)yYCY{(_NKAAjer=C8#w?0V@O601qTubL(!x&QmX9&cv+S$&uSMi|QfJ7> zWgMZrYqr4{UwJ-kyb}$Qruq(PG2Hg)FdTk&v{&hp(6dTcUTv}6KFXXhPzmm{wrXgy zwm`fX_?Tf_>%Ve1r@$W(T9_vD6c(k0AYlU)fbyu1eE8?tY;e`#iXM#lj`?aexxd^s zQO}vnI5hT&^ef9C8eL>O0JC~)ebnhO5Iv>y;_#>|I1)Kuj&4I2pRM2T=$Sj;zdr7e z5@$|LqprB=azeThTVo^RT-mjW+8`k$edvMxi1Aa*L-dzVf*$~1<5oS=hPQfP4Oh@~ z1=AF2K{OBT+E?_LnIGxhDyMtGswKpoy(zD!wpKfI_aGDXC{piyXl3p8!RNsA9XV4H zFZ-;MkIytER3$UhHePg1E?P1lUIeY#ZZz;CJ5PVR0%9ts$-QrlZXfpW1o?k?{_+6P zaMH)->zI+YE zn>dnAd}GFORykrO;IU%DtG;S-jHFqZgsDI0k$<~0hUjY0cObI9ZsP2i-kUasR{qwT z=hmO&HHK=bM;zhw#6dUG(s+%BKwMfloLG+Guwed)|A;ULA{(g+w)f=&z83J zo>N4|#a*PLxwN7~0}x{Sz>c3|xlY^n7xrD$R6?w2*7wYv#w}OSnfjF857A#2t$C;V z%(bPD6Dg6Wvb=RMJE%bcBYOu}xS1cSUGGlFVR16=8?(a)CvEN^)g@0o0XrUtVUJJ% zh_*kuLM7}$Dtby4`bpHwU;-};vMSEU4x(yb=~(mS*83FtrGu z_e8s?wIP}h=rnL#oF+0A^>eG1XCC8RTlBz}Xd;iF@Nf%1H}4Bw-6Jfil{`R~wp9ITrhdxS z>fV85(e$^pnQxJwJ$?p_5#5?!8VfBaPeX@uWN9QBc4T+Dv-1oKcmK2vz5R;=9h6Soke=cJ92TT7J9{!V@|0kB_;`kd&!;b!7X?7MC7`MVo81DVG z{QcQ*B=9 zp(hu3ne7mFazy$`Y*Ro=Q%@h((=XrdoMO{3k3N?Kr(FL{=?k)ldwql(KP=F`2Po4tx_F zyp>s_i=-*#lIzu}oPd8a%K)((k;EZvO*g8~{>#0SEYQ|Wx) zRIq15jPo>4gZ@%gWd{#$vF#5+mbc0H#ByzQ(fXEikMGV-O`}t2&$R7XV$BSQ3y6cX zsyukx9w)I<*sw{LY-z{f?VQNwH>-FSTv44-&qSwm#b^!H%|x%Mp2(z1)qGVBEwHd> zg|^$BtS0aDPT($hG;noKHgw6JWxa}s>;aCQUX*v;EG_NYj=tZJ3$d@n$F?mCK*mXc&psa z)NolhT9(zb-t}MW;e^|_lL!9jC=_-b0DaJ5XjK6wV;o8ib|3(*D2=&N&S?2GRWq~g z8suXRmsULb~4l zjP!dI3Iiq!)6z`8OC@VVL`7VM8h>Q$8v<|17fe0!>$^!$o8zwvABVP3=7pz=5K6xB z>>mW6qyJzLejKf%z8gaWDTGV!uBI|!fIst>dCkFzM%84xPw0Ylje&1}gGuO(_yH+L zqMtIONnx^E8oxx6CapA{p6wP6ruCYfut$&-AJM%D%Z8X2DW~a6)1Dw%0rTrNELCmy z^aeqVPv>S9EB&GEE>dL$!Lr5GdD%eS1v4uYJEJ1K-6r+j@)0_4^SeZ83p0g6QAPVq}6C;CG2U$kwZSb8Gczkv{``FC*xOfsVDRj+s2{7!nK1YoiDvhTDXkjP$a zL1>E&IU%dk%}vFMZK39m_w`Dm0cVKK=h2mG;Plw3F(uFrr01&>hW6P|5LamgY5`>- zavZHPZM1Z<3bvu4O3KL@i`Y21pEyN-ippS86drJY>@yoyU%U39(&ij8I7WIn^dD@m zh5$1DY`^Uoj1p#Iu)1Z&yEacjWc_GjOh<$4f8{CzT3Y7 zc`+=?yVah&yL=`RCEsqO{#NCYO<%alx7zO(40+$8B>%I3Y9C=m6uhjV3N=Tuk$IQ^ z3Uyy4NKn))V3tP3lrv`=o(;}+Wb)pOV&V&GjA#31hnD?Ao({$Ew)~)w&|f}<`WaJ$xe9(gvPUC-`0W>CMIkE|2v9G8C~M>>Ai%X)Rn=U%^i zRhvP-7dq;$-zF}*t5b2zY@J*?J6TaTy>YamtNNCtD9brdZuulLDA+~WZ8R_;Jdye~ zx_#}CaAQD~kp3k~xKI5&4d=sDB;)4V`KRwRJ||`#!xxqj8MCo;oJP#pAvWfTDN8Zt zXYmu{*kK+u(cOY72wHrmk1B7?oJ>|_vlgg&THVydJLe{{>DxxYpBwp0Jz4n)3*3&i zHtONgYpjr~`9{YYXKPqS@KA0X-R6X=jM5$Y7L-2BxwY`?i6+P!4He#EE+@OkeCaQy zoD$(Ma%T}946n9yh1~*EK!sC95ZxC$o=6W(%fc*95=0F5$efcpI%5071hS{ zA39IP)ACoTPCrNAT_c+QU~kz$TzL@{cul-&6&*NbhlXMLu{fTdhdw(U6x1EgZ-t%H zcNl8q8jxJLe8NtZjvAJr>=;G&oHcLrl`M7MW}yzOc%hP#l^+e0=gTUNNaP#ZMZLsQ z8e-LteF&nY^T9k9#2!u$5c%+0sxCtkh~E%0MOFH7$*5kv_tTw{Mk(-V*hy`H+Vzdj zGl9sq%#t=zhf4~}hCY8`xl3H}Yd&MmmId`gED8OW1vFArwYmbaR%6#>pShprt9sRJ zB`pbW+-}NeY1+x~Ym4`l2zw?pInnARJk|4K1{)a)$6C--Rxu@@tCXfovMYB5(oM)y z66N2^KSli##t^;8j45s{o>sJjJgftWphl3`kmAE(`tA7|%wu!H&m!UpuJ&d5NRt(K z8a)!M8x|b7=CZtI#(CF8k16wVA7mpi{>aI{^)*~F;ul}%roES|IKstWyZD+49nWhZ z`7MET%UVzUnKA^)g>cxFA;SMG4xbk^kTvnVk;p9*vJI`)>;N5qyQq{)=Dd^Y**IRI zC(UK1zm0^g-Qbx`jOXbS46FF)kR-_+D&>b(@Xvr~0lkMmBcXz>o}t{xBTaw|&a zvCutfDN5AXL?NRoeSZOsNUnuJhD9hX&CHqisf%nz-9)wB62%ZoO--KN*t-B>&2R=i*vGufFDAaxZv3gYu> z{L*gs5|?46KW%5Wx(+-zS>hP!!J*54rMFx}ebK!?MsRBp<1jjDnomCjU)p|xPf|=4 zY*zPrZM}IDWG4a7IE&Cpmz`{$Jfxq)Tb16%omXB%%*gaE5P>U6I)ZID-W>&+l2?4! zaWxu|DD1@>Me3T|-Xjtrk8V6wf>;umh0-^GJ)tA2I>@C*SxV`&YYKHZdi$M}6#c^Q z{h5Di0Q%R3L0f0XyYD=5sSI-M!VAc0S`)V^DNC*0N{P(tW87c993WnMRYb>z;OQyO z#%LB6ikmLKSc>xs=RFc_bj6Qe&Rp@xsSk_%TF^#VqUzD+BJ&>Y1KdSfSJdm3Qk(+! z-Mo5(t)i0m%_Y4Au1;9*^i1~*S7tPuATzsxPjSgMM~%w7=+u@GW1wu2ZMSwLxFxk@{0Lq`KxAcV#eVj!mkP=(sr zn_64JLIO-cFcT1XAAPupBSXkb7FAV!i2rNYjppmn*GKDRayVnX}XJTgp{ay)ECUU=+jz)wV z!~*030zqI92*?2jYqGFV!+v31%UB!!&rSZ426VB58o}Z&AP@@6A3p$Cw1X84FarFN z0YM!1InMhZfYom@7FgO7meKvY49v>*FBuEVeLnN=?Lc6Tf3*W~z=A9PXa{Efw~UR2 z0~QbYdw*cI`@HMlWt^=4p@S3jFCA>#j&r`^x*9VwZ*L1A+VfGrTUhUMe$ zbMCO9kc5?yH7q&*YhMJGp64}WF@ONs4Y{CfTn0u^AQ!tnl#7j%lM@PIGvqXYvhbt) e?@fMXlkFW~kM_@p2*}F9!iGXgDJmz1^8WzWI~>pe literal 0 HcmV?d00001 diff --git a/Architecture/images/French-Negative-Pronoun-Realization.pdf b/Architecture/images/French-Negative-Pronoun-Realization.pdf new file mode 100644 index 0000000000000000000000000000000000000000..6cc99dfd965b802fe3524b740049e515ba6c38fa GIT binary patch literal 16186 zcmb`O1z1#F*Y`yf1PP^^0i|;W7`hRpySux)r9o1W?r!OBkWf;(L%O@`8}tsnz2E0~ zzwi1Ot}}c7XS4S{dmq-U-(KsGNC^ni0BITENj|L{u59HTr4D}Tgl7cM11xn+;5j$| zbYl7zhIU2(CWs^hpc6DUv(vYMyqjs;=?m!VTI%ToxVYeL?QHb5&EcJ(vSL~-@R$+& z_m0pwJ|bs?kcTqbnuTiES=7dSn$_=1GLz5L#Su$ z!aCeUn|UCy;ehO@Sm7zvWhtPJSH0Viu}m z(rB3K=vo3w5z4)fu!Chc_2Dj>8jX#i+WgU;2vLan`52B=wm$cNAG@g?@lwP(KHVyo z+{*41BMXjcgq8(561&*Og4Cg$1=cMkK@EqzFET3nGgQ%Mp-g<5HW42%ABWgYhwQ(R z2okBGu1=l|O|Eo8{a6OjK|jQKx0Hl7?=9@wwRe72F53Qq)UGWNb$>%cy2e)0k#8P1 zurR5U&mnW$AMIhP@&)6n5$0`VGeaAJCa7Zvi#b&l*2!Tav6Cvc}B1s=NW81#i zXfes&(n!$oqSvE#nhdj0*~?ga^~|tJBfR3^qYk352a2F5>?cu(Bn7d(e`_?tGzRFM zp|p31mBDoTESvXKql^l*h@3Ae2vPz4Mu$c_izGlo#sbB~5rhbipG&1p1@W~lbm~2H zC_uR|_6gjd(q;(jH#_EFNiB6y|H?AUb?XsOdIn=jwbv&G&tkkxE~-i z_N%(oxf5MT+%ZZ91WR~z5o8k*I0J*>0p zA!3Hn>szmvpVPhGc~Zw0JI0lDy8gRb~(SI)MyhK&AJ9>E zO818D-n!kt1A(l-`?L3D&`(BC&e=*IKqsYb`2A?3Z(#>u_+b!b^ldHeZFKc*0pK43 zzoms8e~TSA-xI+0_f!Qo$LVW06Kn4GfNv;D{WnUz`b$iw*>)Me)Pj{3j{EKFLH4~ z>@#E(kQ(rGa&im+An->OIXMsjcs~lru;k=`0MdOxY61k;^nWp%t4VM2y~t`Y(u zcbC~`XPDM=;03iOUF_DbCA;=J?$*ZSZduMAZC8jeuK9YTB_?pOx{K`8i5tu0ChV^Z zF06=T!F7gh#a>%_63k_xiSBM2s_y8jo-XHOV-42%uPQ+6hLLAI*EjKB3lLC`0T6QF zx`bFlbF->ata**Ui5gSmamm+W%eKTeX&uKLdA~PC&Azdvuwf>?4S?j7{{+B0Mytiok_gMt>cz?;NRD)EAJlb>;dKUMk3P=^f_zz9A|m3Igl9;9RK{VyGsetJpq2uYS8T% z!3h10oyr4Bk_xe7C9>oU8FbDlgLGwH--$0bxt3BM<2fU5DkQcd#=JB#G>JcR+=$q& zuMwGRnPsY1)h`$iS4F#Pw0+bNKF7V+tczXEbzUCY z_}~&q*4&!@)RdHDRfGFXT(XVd{*~LwSkms++PV`+RC+EyN%{Tw^3@@H)7kQ9CgO#m zGx}a*l^W-lr+1OHeMExn@B4WBITEBRtUGaAh-&g)*`8J_i9Y}X`NUsz#l+!GUUk0#&5ghKIG#Oc7@AGD=#XPSC-kL{FEq|BavLd&A)D z7azZIlq%YnthI~c?`3PMwU7BTO$c)$B~MOeBNabaY(|&YZD3bVgkcjW(h2S-wjpFo zBqYnf?VnVOWMPuA{Pv;b6YW>JP8FtDR9Gp$CG!)OZuxlZ&j^M#nFcNl{BgIvz)tDH zuNUtpgTE5F38Bm}^Z@S?m_8X|?cuNH!kJ|Rs8TVmS@5cPQ zz4~Fzf#5%l>%En{*B}N}n4h0d+g4u>@ZH$S0M!4i1N;}i7x;(cD*-Y1zZ*XpA-?~O z?NbfJmB+e`Wc>_Z-#%8j$6d!Toq2d?z^atFIZssp6 z*HW<4y(;+{KVG4yleB|vKj$9KeAWHZ!gjGigp(A()lS0J^$pWf?SGmb-MG%aCt0ZCd*27>tfAN=3uG3pq!2Y5B znA7J>LXiUX_JcOeDS^pWn4MpjOD4 zxh9iYs{Cl$%f36mAHUNcp|V+q`qSg&M;g*kgIE`Y-V`%c`ia5Lf1Lh`x34R3n-sd~ z_Q;9ZDqoKv5!RouS=l(V?mS60>biWP+Uu@UsTXf!TV1vY%SD*Ib^hai#kytSYZ*rN zBuL$jH_AP5oHh|6uLvX`ghMxL6yamAw&WbgjV7WtbQ|u-k&qsuU9ZHz2b8sBv^3jr zQXB`8+^ANUC*dh|4>Azb>XfonC%P;K_-%`DJtnY@vq-q;*Qin(Lds^pl%zBe+1J^t ztlRA+w|RQrCnzxzrsVb6JMQ(vc0)i3SPBlVwssZf-PHv3^g#9`0>w7PDIvE#r2Lfk*1|tpfA}ArUAu_=#{5kCEYK+@pQ!wGvw6 z*ZUBU7AY?&SHRpvO=M^VqmuC|wK`O;ZHr`4Pq^IGgmE{QYh(uPJAle>Khs!%ovq)0 za+KYEQ5R?16wqX@$kFfNZ*-^WbmqQi-Gw7Sh4Hm}iGbPPaRqu0CCQb~Jhrcj`|zUa zMVW}}8OvEy8u^?iceM)h0RgU4u+dSU!dA+eYEd8Zf~U{A_bp*+iktkun66A`{8;1W!CQ9w?F;Lza3fIf4Zh%h&g0t1$}oi?IGSH#Mu)y*0Y7Up!Yr@ z#7zF=ssexZRe!X}uWhGoW@-4tOSb*PJ^snDy!SzW9mRJal}^@P$L_m#EoWn||D&mU z>-^&+uecJw%xkLG`eqLLcE-Be68iS~G{TUMjCFtbxB~jNx;DmEc9u5qz#rZ(-75>o zu7t4#WF+F+x-ypL+7^E+g2pzscKk-#HUI_?WNSnFj}Jgb$R|Z(Jv*cCm&?oofA1y# ze|h~sw!{Rych2u$Obqwe#l*}AX$b_nUy2{^EKDE(6Vv@VFtOgRFg<{g<$jL;7q5Se z>Ar_w7WdDa>YgxutjPUp{5{n_rd~qZ90CFVd4Hxv7wP2 zfQ5-3KqqUbZ>|8jYRE>F_V;B6u>k0l{-^Zwyg`VTNy&NM7FZ0J0BYRY=o5 zm-|+64>J1urUwyeJx4*AenWHsi(61Zy6QS_+s*_1*7sAe#BS|bvg15!isK&ZfFdn- zgCL6fi>Km=(`t38fz2Lw9YS=m?$e0GYl|n9 zqeliQ7U}qET|CoG-r(9M=auK>mN!IG-#P;NE7#2H*8`Xp35~f^1h{V(Hdo_~_u?>5 zV+bz4L^;fdI~)(KR911S^4*zqeMyk4CLsG#p{j!wwa#WQ@~SiI z`RQ+AKB6WO3_{{d6f$85YrQ%C#S4#NT_5o&>vR_zWxU8PFVJP zHI%93)8SaO5-R7%g6U#&^H){Rf`I9Hh=My%0+eRdd3i7iv6?8d zsPQ<@q2u%O_H}FhE7_0Ab7Ha=f+#txZ(TD#LJMhAwQ|OI9S`0;$-8ohaG1rA8Su)v zdo%Jhh4Z2D8PrfvHy9rhm%o;7SfKu(7RX6EZ< zY(V$tE)~K-OBH56B@7j2X9Ao2%65vd0#ieL-=K~2!1N1(P4ly?9jM?%ZI$> z9Rd?#V08E6BHoO8r5TBg*IpT!{4hkr5v~ACfFhA3-$(xBfCdC-d>f<3v`vUB>Q6L{ zWr`ZvKz2!Odb}7#uJLjmn|#H5;o1!r9AJcMxf*$)1m1)Vs?)14y3sZio%+oQ>@ygX zgi9+!T1-aBsn~`V*(Aqa@D)I?)W(WRTc5jbmC0luo&&Jb2yx4ub55>z9(_-8xrt?* z@C#C&W3NyRQ(i6F8j)+v?23c3T!Luc$ngu?3?U9`4IIJ(hogR4*5+tD9b6)s^$JJ7 z6|3H*5+xFQ9dg;xy5pCU>quKH)wT8Y49UekD?D|0k=K(4H_f>eo;kDjh;s zzBS%r?=gi<9jN&n0xU^J-)Oz6aSrs2AZak|$Si)-^zagXohtQT3Nz{7#auq6cb6?( zVj4@*+WQVtQ-k<}sQcm#0lqmCn(~kN)Sod@gdgOSo}V6iiHI<1wkw}Ls7{so#13Zquqo8m)#xpD|x)kLeKcfUGx67Pw1_vW|HtocouZ+XSLF8`AePF z(Fq<>EH-bp`ODPNE(R@`RO@(@ej{_k_>sq)+GcNQpKZ*(LXiG~H7tF;lUbI=o)*3! z%KwSp8%u_(FAecn<(A-4)mz+IjpQ+%iPt`(!07xCZRE$F!cb7RbEu98EEM6PzaAXP z=1G-mY-_UgCbjlDc}f;zEI$=vR~evIlUKjJ!E|vk^;?Q;onsF^NdFe6-^b8EhQEPx z*|w6_6v;0F>N%NQ%xur`x9vLKWtR}#q$9=L%8Jw77#KkFVUvLpx_#+_JP$`qc>W{` zD*;NAO%M%1`n;qzHfwttZU%Lqv&8CMin^xepkVFRg&e2noaj@DlRXZKe5!}SKTEvE>f{^PiJc1rHoz^>OyFB-*d4g+ z%S@>s(NE(yPP}mts;eulrJq?0f0V;WGrEDLif41KuSorFQv%H_8Z|f)Y&h^vB-4g; zHGY>+O}aLG`jkss{gQ_zQMi+xs`N$^7{i8R7vL^Kx+;@(1A~iz0K0V2on}*&xHE8A zKQ%KEu#i2dD-NF?5(MxjWrmx{RGoQg71<*G5K{h^f=|MuM_j4>O8EqD_-Dj#|<67?J&`Iqz+?e+bu*+4z&$`?kt9V7=Wts zg$Q;f?50|Y4ZNNdPmU&`bGK6=c&`0v!Uxrld^S)(U;~_iK=fs>h@4-FKM>?g{y!Y_ z1mc)7OmrN#I)}Ithn3jtu-Y(Gvkk{X%BcHSuxvuQ=ZL`x*7Wa2Lv>viFE=P1jr?p% zPI)--KlVmb=Ge{kH7tHnbG~-UL!^xHNN{&9uBmqM z#aVxpfmNN-7L1J*v~~EPsCdId&0_q+@v>YQZ=SK20G~H*!EZuh^`1rW^1wi0Kl;58 z@02K}{KE739OJZk`eCOqP*4pkFEyEghlLcRij}3vp`mBUPVmBxofJ-xq5}SPsZD)d z&0glV9s=&62?Pdy-{`t8|Ec}zokJYq{{&J3DzEuuMScaT-v|nH&khh*_itYM zPXxty?{oh}P!M1GCxT*Pg$FVHNiYyzVZL{)|N9Hf_%HQ-qLp9IgTKc$esA>$G5z48 zKg-{1{X|d@p8A8E7#Qy9iQ)S`-#s7vOhVr$RdSK`!BM0D|x%(@y{d0R0FI z{S83hg+DL&kMPfT=7ii8e*qBqp0NH~B0!On`#k`0pK)=sdkEusvWFdMU$Hvi)jOb! zJIIiI9PU&e%2l5(Z14Y2X&j&J7cFN_KK(2UMQ4gQwv$k7%Ky_#tv7>$Ff!KcY4T#z zO4zxcZ~R4=(4Rq5zC6#E9;}+U-YwT1lF5hP$y%GW9jGU4zN%kKblqBsOi@iGWfMhN zSq&dZ0_=P}OJ!m9beU8wD&Na6<8;$Ga4Pb6_jxRnp#}>+ensx$V^7;%we7*&>gw<`m?*as^b)2ZE}8fRJ`uikktG@L*AuNqv8yofh9j-J zsb|l=YcDaJnw`ZJl=R?UzvtOhSL6z9dqLgH{LZN-FE53&M0}@kHQLU~{S_7!pe3nnyuCG zR4$vFe5Eyym)1YAtb4Cgy$adin0i9aB{ z6?Nnow6fAeN0R7DXLh~MKghZhXiK^0BeT5K#hS)Sil<%n`a~8%e)ozZ)I7DK6ba2d z;X$!m%dmQjkx}^jvZF2_#5H~u5W6^>1Q+yS=N-Z>V~}+%d2asZzKtC zJt_7kcv$Os;Yg(ug`<#TBeO4bqmVCjD}o1J5Y|z&obgBvv42=oE^12J$$TD7^x`r; z!ZH8iy_L$k@bWxC9cGn@!Yg!&T?>LlG)Jdp#Q9^~2q?GtmhMf@k9?T zgAHEbHw<`h!<`bREZ)6GdL6z#Wyd|H9tpeLXw*T$8`9X}>BWR)B(ZFfnZRO0 zl?hd==828M9qvDbsMNRiE+-4uS1+Cp0NcsgmZ}%b2=tu&vhO1z zif)!=k8bU5SGIWjs z!~v|^(lB)DG0nMkT75b$L3?|2TooWe`@FzS>hqu_qnPbO*&{a6xR0qe_-%$zgHJjT z;rRUlkrBkpd! zx42JBlU7nnEQ_<|JaBd4HK+W>dDjtHHVK6`+e*anx_CMlM3Dk7D6<>hhSqwse&jdV z{;VYl;|iLHY)wWu)hi+M;l%z)Dl8=vG;aurB9Hx|q+0!zT47jjt;IkXfrZyFP#GoK zmmz8fPfoL@#L&b<@`CQF7*AD&tus2#!6i?P+PzUc+pb2 z!SpeK`q{wc@;sDVGqX~TJJZ{-#qe_yr(?r0nS~cp&f!!ueC`#Y$*83#AVlwL0~5co zr+tr$1ZWHSn$%|B^7_8TeC|MSM)KU6cI3)LCFt^NJ~wSi;QAIu>zFv=$@)^;8+MJ^ zK>z}xJU_Fb$#`2S?vcGVAqzFI4`fqY+^kxB=_8CPdjm|KNnF_|eCZ~AvV~}(AcA0L z6VS0MhLFimsw^O`1L%oVv-Wo*vIl2bggUcbRbP%2x$hupP9(=ioF267_vgkF9^-C@ z(on7T@vG|KV@S5lvEx-7uI|pwS(J0*zeUPdXlxzawlF_aJy}d^GS@B`Vyelz_Aso! z7L?6sHQGC6V=F|YWilJB5?C7bbuX3vph5eU)GQEsgZDgczf}AgckE$sNnO4^a+@LF zY0E4g2&tBkcy~XCD4Z|Zn**5@))`->hro9mijF6f4VdpOjUGaItgv3h)QIT{)ZhS@BM@z(n`Ryu=wqO+(7Avrg5a<}l!avt-e z`lf+m1Y$YJyMZt-mUM`498uh4pm34ZT1Ig^U|1Y@Y*Sm=0vrk>wB>!v;Phqj;<6s+ zWEug+zWOIpAA{Es+MlTV>hjptP=ee?jn!V4>6ja9im;$6jKLX-l`q zoz0HNN}d?F7KXUTu@50HM|OODu=j;4f`+=hFX=Nu4Alo0AaIa?@SrOk&EJI-$p92U z>H;6jiaa>bg8590d4)Ii`846)me958;nlNf3dRE4K^P>ni5Si3Tv){R2m+pJ-6Dst z2dGC0^nyDA6%?a|Ie;ySEoDhw9qEV@G(FD8km8u^zZAVxO|BL`?)j)3k)hw})pw-u zZE5Fslm?|(3o&qMl5T3y88+0y3YC?!7Be#^;5*Z=>2q+g4vvB8vBM=#t1C|=I|Gm; z{M#d81N>LXTwTem4ZV@gi}lV)_s8F!yQT>MYn-UKo?sevn6R>-Wg%s;=;#cJYw=7Z zmau9w@H#4DTl+jeV|!tdYeD}F=EeVT80&`umc4x^Ps98$4AGGhstaasyAYo@$(zXf z(GysKT@^_S;aUt2;;kU7nU5WcGgZJQrB1wV0cL-q7;6RckF=)z#TYuWU#0Y}$LP^+ zJB=O{C(ZcRE5ANBI&q4AQ;Qv&Fb>3hm-pB}7d^+H6kFg_JZ!sMhz#W-jy6n~+r?4K zFyGxD*|I|t<(m`9SZhkVw6_sP%+LwXGM47d+$Rp059zyYw1KRzQm0-y=%_g4Cr1(I z+cQ}Xr9q{og$!9^H;~8&Y`#`nkiw20340<+>};W#rnMP(CCKkkEv&J8SUw;T<%ttm zg_HBLW2#LsCx5Fe=|f}iUG@AZE6%O*f$85#gb zJC%qe6srVaT>z;S|9mj}5Z5Id-fNDK!eYB{-$4_^@&6f`Ad!T>!cJg%`kzqecdYrpQhsX*(mDilen0-H{doW9`Cnk@_c-GJ z92WX*(tg7rfGQ1`i3x&1^sEp90zqKClIU$Gw+$U6NU`T;;xzVq;(n|T=gSq#U(p$ylcJCiWpVKQz3aRmY%E9(dJ?{+x!K4Uv2!N zi_UO+z1ynV#Rt>&iGG^t-r6jYCo5?*$lE=h^K8_$EzUy0cw+=O3V|i%%vBDNH z#B#cFJh5PY4aZ%pEBo4g3vg6yjysv)*;MmsrrKR^I=8k7Ou5GH$WhUgIIgx>XSB9# zZa?MG9O#VkiDK913x2-;cj_tV})$LQM`uF zTCb@wfM3Z?loiLWN!h2#6@mz!Cq+&O%!`|TN+4HhPybe|eEZEbAFJWQbU6LPS`@e( zTl4OWv?+Qy==nkH#EWEf$)h`xRh3;{q7lPSJ7a6Uq>n^1_?5L)BVAre-_j<@8z39L zD!awYQDpWo)m9*vPAT>zj+6F}Q%ZkAjPrtN6Sq6J)ytm3bBcK-L8aFD3-bal;bdYd zOehtzV9pRwQ?O7{eE%-_L-dBY>#Bdo#<9+^QWil|+hHCfPSq-t6_Y^e7ByuM(gnz5 zIDTYGZk1;!azi|uGk$ezAW<{&OQNJpg8G8RL#-4cJD?KW zkk-R(=&lxFE0{#+y*I%Np!0{l^Yo#YkBL{U9K@d*dVE0d$C|oBZH;LuOB)DvAe%}u za!j8M`bXjIA>!dNSb}irm`nGimDMRms5od_ zwI0`CnnAg?Jl|(@dftHK0ey@A!BVT-Q)?f)#LUQ89_Is2OyB&($k(|^jAHX(M~4b# zzw<34NjuVL%HHcx=G}6I%5ARmi(-ju#q#lkR^~H~$`vlj<7E4$_|bOcdCvi=O8eG% zeD~EG@#v7fUPp~vr!yXYqwRI*4Iw-d6JgCWj!~EC^ZZcPF6iWB_vXZSmbbh#-@3O6 zi-blr7l!e_I4RhDL#>A1AWTw9k2kd!i*KQnoc^r!zzsUYE1-4WduaiU<*5haEh1LV zjc=>G*5n(F<36Ezx8rH7E3B*KqY?wG8|8Pg<*tzxu94)L@%^aMB#-6a2R5Y2!>foJ zn6L(#(98PKx_V)=_fBYcA~86`mbQoB8*J0-2KeYHgWBbC=PBkRPlpKbRVds z9OGIsTlULeA;9p$hxjxukh4HZ_)t6Hx;^>A+L(kY#A1E)*r}P{YaA!0wWi)%cn*4| z8noL&liH|kYzCkA`BQWiVRPLQ?iF2h(bZaMj>g@dXfUBho%{Ia(cEQr_$|dz@EAHx z-L08=OSTw0{!*Ua=KjJ}fkFz~bz}@>fe7K0ha~kx<8Eb)?JQy%PwH3L8tp0vE8m2sXQ>`J-Rr+1q64vRS3#r!b!6cerbT|yqL zm3xYd!pOT$u6QpGTvn-72CuBmgT6~8uX>!%V&c!`qhzFv{c#stVpcGzfbchoaZlt! z(sj_#Gjg$Bb&yjEN(0}%m6p4gDzzZ$V3xL8Efg|tE^ms$6EGs#AiP8>Z#;}KPNs20 z_8*096(2^#A;u55L6tNF^tw56oiWCe+P*SU3?UzDzGz$p%)TvX;tiiEz3>T|U%Sm@ z)VNj50)sW2-A4|MR^o(^Qsk4b7R%>N^9wAktE;H8Fu7$C%fD@>XY;#y97AJsV_37C zrJj^rq9(pf6YICaD|n(4j~x$s8_-=A|RcHyOy?M}2 zUa(0F;{$ly*{T6}+6`xgqt`mUzz---Lgh^6t8lVHKn`1M1#+h-qIEf&SQbc_FE79Sym!jM%3*slb*wIl;JleKcH+bxI%*4h#(j5vd&6Dd zv=3XKQLy{A%1Jj$NOPiEXA;vgxp}VAsibq|Y>P`Gj9aaLN5NAK6v8d=X=$jeOuzl9 zUJUWN%;D*_P6!S(SFt5l31QysiC`_+j6GXKve61vt#4|6}DoeQ@?CoqEX&QHF zl9SK$QB1v03nqGu7<;pq=ypaI2YW>_wMlz2Tr?%g2d8tWq7XyX_XymrsKD`sp4auY z?k|e!Ea03Q#+aLC?SNXI_<7TV~gv5#EPwLlx^^tG4>U*34PZF5;=v^eh21P)^yIc4fD;zNy@AAv< zBE9<>DvY96Na7bP7AJ13fM{%-zKV~yMVSH^P%{fmobm}>num9|ypk=8>B zXe_~5TGsDU72#ciAEC=gNsknqXSHa)#Cq>dBrDZ=Dndj?wK?%Ytlc1i2loqpd_UDN zUaq)6DE<29aHE$K2Jc62KnNj%rP;Zv>(Y1zbkgydm*OV%=mC@F-BMO`^4;%N@4nGF z=3-7qf2hiTQT{WB3eDz;XYj5!yp3}yIPDx<;TU* zi5~4{LMl^v6ier=9xm@JvQ!X49U^8w zhRG>yd`1IPP?q`#VHXo?W~`*jFl-tm%&+|1_9#HbHgOG5p?OevvAx{ z;{dgtzscQ59Ru`9kNJ6vY(a&oD<2z zQCFJZG6&x(EYevD#7h_bKS(T092CKy~o`wYAh^OrZ{BxUfMM01x1(UtGu<|(M-&Vk>0gFQYw(w zkw1eCf2li8#_v*dk+u9<^z~h1j>VGYS!OjE<5|_}D0hmJ*i+v|uQ$zKZKN<-amKlK zCz&SDw>KwC6;EM1$<7{e-O8uf_*N1NGa?*jEU8}~*C-TXY6|5`jr7gOn}Hf<8!b)_ z^-U9E_9i%4foyTjFPOf}JG!>w&?7AGmBF?kw@UKDB*J1E91(WvSQJXBTO^0ifadLb zX3o`X)~{48YMW1@YY*z}zh3TC&%|8O%nf8F-qF!vKePRp9g9EHdl|qWhCkDLe@U7( zwu2-`lAGAd=xdwt(Hh!l8yJ}BQ$P}KZ7lWdbs<|5jQwSd@L+#6aZ;^Z5ulm0OaAa?+>gw*-^mL@!H!NSwfl-vUdiE zXoL+pwgCR2ftc?T zaDT1G45t652HD?WfrP|=tq17>vc|t^Kqg3P?>{sUGxP5n3+VUu=iq-6iq zhn33j<3?#`=%403>IfLtlqp56r}( zqYq}#1A>`!Ss8&KRz1i8#KOt|2C{O&|Mx0Ck^yY(Apa`gZ%W9@(6hjkki3!BI?fCK^rcbGu%ATziJcXwxScXxsXO#&gfYjAgWcPF^Jdw_39Ht+7c zyZ7GzpJuA7Po1jjsVYuC&#BX-G6F(0Kw1WP()RU}_1)~#l;QSHct!v{z)IH?o|6+m zCt+Y|WN!>$f{5e*bV4TP_6D|)vpLw_K)^uHO5Xs$%?)p7Z)*UyfOm!pixvO)y%VMD z@CUkw2Eo?@tR6$llBEzNA4Hl2-!J^dlWMOV^;PAbKI3h4^L*GL3*=~v)qH-T5ScGL zRcHEO-&D<$xTzf%5hCxX%~Rb}H*^pd93`Jts=(sx!w+V-{cb>CIq z&`1OmYnQD(S!=6zHwvQlo@V0>ZnwBXEl5=@IRm6Mx4sBqTlwb)ODnGsUD3xS+qMXI z)qS~ZtDc8w$lAIDO5nYJz2<2R9Qr|&#zA=zfbEkzue?Pak8ii`DW&C0xAJ*ze@V(Un0P#38)itPp#nz$uLe`;h;lVGHPr0%>Wh9?^Gyb0%< zH?djsI^J$QuO)*6vBx-vEb)-%Ih;;Ur<7^Yold)M%Vi{WLlK zUf4I6?Yxq2N?z{FuEIwo=}m@r>npth5$U%}mY#Rl*q`uFisTY*R16h-+tuxA7-AbhNQwJ=bGjhr4f)7w;2sDIDkGY$!amBU2Muum>D5?v##{JFJ>}F+ zN5L=d#M#;%yHANIqVe=BM`dxvl{@?IKqJIkC^_@eT?x=1^WL0$pMJ+q}P1CQe5JVb$GeLuOWnCeWz1AbT zb_gb?kUP-BH9`8y?y=I{q;<5)kaim`aUuc^{IN0^=;e8T2OTs-oGGtee(_WoX>$OE z<;1T3EmP9`{E$c8^$i#S(4==Csq$~&e6>hiTRn29uuV5Wo) z!B6(ehtu0RJLLg(Tnh6xn$=ronK56*F%=?hKgX*(BDixUDDtBBZ_2jhSnq)@Y7ej+ zaLCV;qYsz|PAdCyLe*wfR&H#X`c#aQ$sVA*Kpk`Rm+5pFeWyD= z*4zBc9mNh7TGuPV0PC2-v|>vwv-@pcqJV_H@P2e^T@Jp8 zq4O+Xl*KvWyyw)lLVzARAWcfNFZ>yYM1qM+!>xt-lO)E#)pqSyJ zwUqk{Z#pl0r07)-e$TO}P88lvyEwPy`-2EG3K%lZpyR?!&;EpBQPGl*zLISgI&Eoc zI$K2Iq1|pTi+I_}vP3Fhv}ggba&>4Mr1f2A<}X7D(35>~aMSpny6x-myt_ht@R&W; zK^s#JCs?~d6*9~BSXJ3--2keG416ID9~V7{ARj1YbVXEW7=C~E)zL)t)*N*ut0PQ) z%dAYKH-{dvuv&z2WVe78^QexVKPIoNVx)m9N}tPSb+t-hsiJO{LfORzYL`Xig~$l& zs&G8omt=S9nn{k4$!-nucZE%Fxh7slRBVGu2&`kq(Et6F4 z1o#iBXC^vjD(ko_@5s?eaMPK&9J?!gJq9jLPDOO^giVNTwVeR`%;9KLM0V)H5sFs$ zJxa!JE4tacn6)jqTjKm`_H;9gS<6s*CncOOwk(X^91b5Dm#Z9qNmv;#Ss_+0USxlz zI+O{5p|qY+Vs5=cL(up9a9d($m#NrhkMz4e zCgstSp}b_oBDmoG7;%lG3@b2+V6i3%@`S6hPL zsK({zuH{W54`r6LD@7LBKr!RJr{}!xrp+O_j_I<{Erxc3qU~N~FH|tbNx)Q4RY5=R zo3ciEW}%4YAb7!xkE4z`{(*PeNW?{BrW3F$TvceZnxM3U=i*GM?gjP3S)09`d z46=Nv!ME)5Y7KL{sX?YnM6+Q->}??ytmu2)E@cr!&R^Pg`lZU}oDC;FsrhSHq!{rr z4p(*McJ}Ao7*2J1NgRFaXLXZ?uv@|8Ff3;b6Hk_nCvcGg~e-cWS8D&IE zNH4s3HJ5iIvomR!MsH#x8Sf+%42|;~kFG%@ZPMjTntew+&C{oSG09ll2E{a&h`*UY zF6#@BoC4v3BrLLhu7!)eTQE_i5TAPLJByZSzZJFdgd^(0 z>}r~jw*!kDu!C3bsa?6>6`zH%r85(lyk(J*`u%%v1|>!jJgDBUgyc1f^42%dJbypx z+A;}uEB8%C$!V9Eg1g+Am*PyY>X;)^pG?&>-eAc6^ltImYBL!p&8LE|q3{+XjkJx~ zt|#Z@`-om|GyC=SYupT3+_yPOToD6rlb+1O zH7b>llP;kN_>`H>mj}THv`7Et2bMOcH#gaGQJ#Guy;H9$OT<^{9%dk> z)h%JIN^o5c^xqTXh9R_xwT!fJJLO@s6FVXutm5U5Rw`XSMlk2 zA1m^-%?QvJ<}xDf6JNeW{VE%mMpv;XMN*DJSTuM=jU4SOs!4|Laq7yVpvV5a;gqKB3bApsx!Fh;9dDt>;v4T-iOuf#J;fbWL!Kj zxDxB(cKYqyP}a;#%00>pMvmqc9iwUPDJM*~T8tofOMuwiP~V4cg88SWO&@SAsC4dN zf^k&~0~-t9eq`?C?87;Qk!(2WT;ysPEiT)kBD-OCUDM)1{()IdsM1kOIBo4g;gkFn z?@C?Rs$R`BsbS2(Mh;i1d@_5^6;o63S=7$pAgMhs|3H2AMvxX!w3OF%3YJAwqTBt> zaON1Pp3AtNAl6l0tU3-m!$HY1QJYtQa@(Ol&&vne1{x1457NYF?r7RbV$DyqV%p-1 zVnpKF)i-qmpWH6qfUxXHPcX+O3W}?yVpQ0utfGm&uAU%W%eqV|Ql5O^B+XvaEH-x< z8i=>btg<~@r$}?SwcAu#Q615cW`$n7i+M5-GR*>g+O3kldSsHesJrlz{e{J0rz*Eh|76E#~&`+q}2@+mN!63i*?(x;PPA9%4ZfgMXbeZagYMq(qbt5@? z-h_0VT8%EXTkA4;)N^hR4N<(EwQ9LxhYp}>a1V_ovx`kcyOaDLNo}lMV_>6&GUuRY zfboO2^QFh3O&6{JHRee7Dj`dN(>nAaYN8vTMa)1Y&&hQoNvW9ICF^BlD#d~}Pn8=~>u*o61L<_b7vyM^S!$ zKCqpEKH#SrlLKh})&V}6=)aq_KdiD80QfIvP1qLf^8dxIX&U1zqI1{T89}4M5tSp- zl>72nyx0Z>DWQc_%t_XYqE+o0%Ewdn+B-6H4Coss#LknYN@p&`V?Nu?OX2Q(|Gbil zneHMpvm-)`2^k(mEfhfEA$P>VFsJXx3u;TeKB(DDavO9ysEN+mwVFTOD;Hzj^z%$j zi05YW5ZkYnG?B}RKiU#nS{KWF(HXuQ^TW!Ea3K?2{9w;WeP2)gVl5X3d$=}WLkU_h zoFWs&z%*bpP(U*pK*WjX8fpd2!=_HT=`-aWHL3B=HCKl{%L>P|WeRIN;&AdU$M&w$ zs<~dD(V%5<(T_c$T_i*DuH!@hAuI_aQ&eZ7qlnax^as$5bLCR#dI?f)%b#uYlLwg% zvu$avd*Zz8b4ipD zwfkw(M=M>MxQFvj%x-J*wS|s(R+}ZE7Hj!)lA}Aj5&X@Bw-E;vUX}+nU|lb zv@ilYUISlle`3WR2x^eN8T90yExO z@3j8o0?%QS9!?eaRascWlN%s;Q%f3x85!w@7SE-mbSuAup!@k`;=%6bmNQ6Pb|E)W zHDYS*_5{B1a&005@!H4*TiN}7geef zrQ4OdauJ z9GVHR?2@l_Lk5X$iP#f}$aC)pXEY*NndGciz7)69j?i_gF~y+4$@s5YoU?W-#^Ln5 zG_uVwbYF$w_$rkdH*nezwqdPjNe~v-=FB!?(cY%8Dd>o*g!vl zr2_;pLad^=iM|~KcK*VDnty?(z~3nO5qSP;lOJpkHn%eR1&!_gz{Gz7%SWvF+W`Nn z@DrBO$vf!U|3uUZwhjir3LZ`PuR?xFWf?&^Y7ql-M+18kJ+PF40|a+ImI)Zx>DiiC z+gsVf1OGtVf|d|(u!$w)4kW>Pa#j{#%RePTCbo9={KjBg03$ubr40V#0tjLP&?%ef z+Z+Ga8;QiM4&-v%`>3?dOiH!lk#PIl7 z`+5A)(qo>9g%R*r3Ly^+KhvM{z(oH`^Vj*05=i-fP1s)v#h>H<=P>>nRw=LrWPtyN zVK)aGLFN_oOOp@6W8l?k*qDF-8b($i0LaG50wEVHERgjh3Rwvzdc2lK=8vR?j@M4_ zktMM)L8?A>_;^7Bf;^Jx_`%j91|~+v_V6r_#YZP^Z(yPHSVO`9{BtHjtN=QdUm5^r z5Trm7?EG`O03gug)IF{Q$c}&kgx36GK7X#apMu{D?l+P7#fkpdQUC&&K#Yu#M*fd2 zg#r~f3H2!g?oADCJiH_5xfnCO)sPlgbNbE_N?^4i=X-I{*G04TZ=m?RnQ&zJ$_&TS zj3;uReUrZx<}gSc7ahA99uG66g2~DqsdY4)R2nJ&CLfSxIaXVcS9$-rQeAz|V{-w4 z#6&IiTfkw`CfDZWt>;I(z3a$JiO(S0@aJzBT-<*=ljXi4pz!2&aa|~?+>WHk3r~vS zF07zKNi&P#cHGFBWxjer>1JeT`s2ea8Bw~#U<$v5e52NU|M9ikMCBFBmnx$8`0>v3 z2cf#Rzrl2Sv)yy2tUmi4c(ZStw9YIi5TR zM&P84)q1#VOg-_SynilyOGL}#*gbkpSn)!GwshPs25ZfUn#cKc)jYNHD2>)9%f=2| zPx2P4Eu(e~Cp4L%J|{n;KAmf?uN@^T&)N5LFTDrUT&5_;i%8t(0wNAE_1>T73J=x% zKe4a8phMd^yuC43JOlw#eX5?@96j)Yf^!S1Bfo$?e<|r}4_NMA0s)aWlTy#ruMO0G zY}nEr7rs+l9&Rywi*bB=Yv_ix4Q5n%Mj#0?0k@Prk^GY6T`v(d2_<=rpW0{@YZzeXPJ#A`tDXb^r{Deguw%Bf zduc&~=*{PvH(Am$Vy;y(YPFOU8((?r<@`rahJxfy9VsfzL*#a|GNxorefyQ9OgaWA z5#3=^<6jzCwjQxXE!(kxr#%VU!iNl}YbaU#^8L!C{J~S3?bZ{H*k3CZrXnT0? zwONbIhBZg;8xVN>O-3-J!DMbh8faiU`WCX{NLXf47JEP^gn;jo2`W zv1YxD%bT{}_nJqDtG?~apcw)2;j5rM1jrUZ;BH9dvO9>;j|bS#9T5$AgP zfyT0X`nu|c7Eh>v^bT|yqozP^y&vTiq)#(ORO`5O#D%GR0H2=S_&_(yE-_m396di` zEq+%2^2H$5=4b@XtSSZ zmub75uAS9oH(4L{uYM1J3R@AmW}LtCCy)mi3xuNh*^k{70B&7b8={8yrUDbH$C_&@5OyP z!Sg<^Vd=t1AIb4Fp9-m`1~p$F<4yr3LPcF~f6!U?5TE-yY6tSM^Q+C=C#Jh4MM$^7 z-oV~Pkg?UV9RXRnqJ4QMC!-~nalNKv$2PUmw6dp)vzvQNcD4876W^ZANTsp_=~DmwQn zt7)WGE4^vn1q$Ib7#V)S7%c1C6`icOC+^);MXn4SuRD%uz9+2?(0HfT@&1c8M)S*# zLaF9j*r=%`Y~|F|Id4NQlu0!3|D4E{5NcPP!JpBCsY#eu)o}_E20&qwg7=kTF$@AV z#8Ex%;W|s(6Q5gJKDTNkYjQEOIE4<%dq|UwiEsOyzbQy356Aauq4-AE*hjYPMzH3i zxYD*COn2CJ5>`!n>`HQRX@jE>hCke0lKL4Mm+ea|0Y%w6!WfvrCs^Jg&GOCgNAS&e zC5S(c6y?p1-sp=P;Jr}av58+*-&s~lakM9RZXwx3>jx6t1 z3b;G&UaSU__g#2<^Kc~6N;D2?aowQcZ-N~!T~R&dmEAwa9ycZmbW2BzGK6jm)GqJX zCY!*T7Co_+E6vg;c@KVX?so|Fj>q~5D|`a%0URL|A>3E*Xeb&y6nzpAge>ZkTwFNQ z26zqyFxQCoK^1n%T#o)6Pa*g{ww_IOeLuU_{sCC zshda-<(c)?+d^D7QC5zT1#TPlH`oW8!4%(L^anU2M${=S3+6_%1LDxom|5-LQNtHJ z?*)A^kiCi)Jf$lP#3Sq^uanJI37B$mo;b#uyz2RkxnjY+!8f{bKS@ijzT|ApM|2Z; z7SxKD4~qG87xc+&v2nCfU%oc={pf8>*7gjT0VqUICJU1PaxV072&&*_C)AiJg zs{`E()=Tk2W_GkF!uJZXQ(r3U?&jBY4iwkNWAAHmULG}yohhabh1O<(h<#8@d{JH~ zz6cf35qL_1iv79y!!w~b^bq+UqKJr*t6r#le3_wmMHS4&kIR~l^lM|`a70EQvW*TT z#E_sVUHJj8Ei+ic8VO02(k=>0_~a*R74*$SfG95C*K)s6n8>vn(4)d%E@I2+z$7jB zcfBfGCB#}W%5wF4{;38Z6m8XQK8_@lPL&;@jmAr>Gvz6)4_IJPYb)LswyHoR%@bDL zEV!cdCGzldow@uFB23oQZ21hM?dFGJ*CjAz%>paG`EreSb161}DprWAtD0q-(P|X@ zv_$|V^Az4${8<8&(RbKDu@OI8%;}Y&%)6R|8N8@Eex#naQVhohDp$P*HYnaX2?c=wIze^$l2MF?*s^ ze2y51{}$=QT4isntmwhs^u8@lTS|~YszQfiIbDRJO768~7ZFW`GxV})$dJYkQw?-y zvsqx%03q%^!oepRcAF~WPZ~}jrS36u1rIfwK*^>4@JP+P48b}D8@f#=qNm|5CQa|z z#aP6+$+UUbl-j^GKDkjZbF!r1-Rz_W`o(L=**`gm&nYvp=~Q{YTlrv-F}+SLpH}wBNt{s zIjy9Z^|b6p&u25ANwF6TK`b{VQh8)s$unABuuc|v;cKck!<4@p(Uku?ES6&m2Nru9 zHW%k_tz@4%Fs|Fs8{)KRvsGmj3uXhTu+Sxw90F^|m{5jB1IQ|ks*FoBOw&BPs6C_0 zZR9;x+PrF47W2$mqjZb4QB4f7Z~$)BQw!1u0;Si)Y$8Z{m>o`U*C%}#5O_4tU(U0A zuOjE9ci1}{|FO4rbwK%JN8}!%TLZxHFI4(BZDybc0)JEKpF1PJ8N;6x2|`Q$H;O7F z%qJkIO3e@1`7!w!nDjSt`fHDc?oTTEzmZc2nfePkg;1D3$tg2E{a=V6gi`)N`u-q^ z5Z3hnlJ@O!QN!7f3MTW64+wO^Nzy*OrO2xI-f*kxv{o3(;sQrFP_+;)bE z$Y`RJ+SZ%-L{BGNj%`ld=U`rr*QkQeh~}$b2E7ycbR_i72v*g=oAqGuYH2xz!9Un| z-`E{JKtNo%qie5Jt|E^_vHF0By?3(Epl0hPtt{Ej%4tkLD=W)1rO{*PdVVf@==#2~ zY4JKSo+iGs5LLcCkq;x}>xJbO+HBK~9v?*yhHnGjS>p}tl(5qG%8r7|D7xy&3kwyl zoJ+)Y&L)@hS%R5Eyi53H=Wkw$hhle)S3YKDJg^N#jCSYe$d)sOmlJh0gPL`of)|al zo<)|$PHq>M9jZ464h_C}XPbFA+SM%ii}j>)(zcS8)8$mR^$}@J+7#|zshiLZZR#jS zUHK$XTLI&*b`=>BhRmJ51%8blxEG66OGCWeqP@FWDA?tGI5;N~5_gQM??#k&eD+l= z`%N2v*4<*m{k$1z-HB8AVV^buN}5)vuCjls77m6`!!dlAB~ZLwATej9CgMgpX2!PU zU3rM{f-dSQt&327>$?!=oFlUUo|`zTTH3qW9Ey$0;N95Jx>a)MXwk34D_SLzoNtki zt{FX~4bxxkfPn+f0?vL*BgU5>=xM~b@+iEL31vH-K7P<2c%f88`!I5bk}5EN5bm>9 zJj&nos^iu1uw44VAb4W2hIL)CF7P|Qasj@rQ|+yrG7{e1Y!qHzz$oytSS12?>GbA{ zk+bD&tW}{{wh=H~HoQ&Q*_~qGxmhWR^@KzT0;dA{z9Vv;kKngmxi%-V#5TJ~lkBe5 z18h$RS<|bDjIl_m(=U`f@`i7fi-u}q*y4%5(~StLM&Ksx;$v>7zGmBq_%g-dzB&BK z?t_E=Ey>En3s^x3#{L0Zo%cYUG(CYDI}~4=W7mYyrE_Pleul)gs)3OM(r-wHJEGE9 zo$_hO_$*0s;nwreuBDap8bdy^tKW`aPI(riYe2#B!rLzkYWDF-bV@g+EWRmhSGpRK znZC}OqawlPMWHuI$2e8x%aBCHG<@An$@e7~w4d~<3_ad<+FGSyh_#MF^^7iSXT@36 zp(lEyKVyz&;_Jf_rSDeX9?Jy=mrx3N$aOV&Kss+wXy(|vi#}=Vx-CvFHKBq`+eLS! z(2*!J#>tO1O!U-x9{hU#6ME-v`AOXASKzXpAIp*b_ba1Tjo|ZEfHA5CO|K~r|c8L@yz|8 zYQZ4vPcw&$Qi+}ZfE94)4W8kIOP|A@@7!V*ssh%AjaYe=J{Ap)zCDO>5D1C1vrCdYp)1K44(OKUHr6z4|qB3sy#y6W5Bkn=LHKQ#F9${W_ z6~EOh^-4KrqJL{;gy2>Zn=WdCD6=~twA+#h^^6(WrwvI9GswB9cGL%l$cFeJFksl21Bti+Q z$Apfk@-FTdHR@2MMO=^Q&QF!a#dWAqDtQIrc5HerrG-iidvV~Ymvx5IOl^fYjswMJ z0h&KW3G#V36>+h<6fbf#VuG4bP;}aHQxgI&>=+wi)b<8aMquPph|J;KT6nErhI&`E zz%{q-4CJ%62JcF*mi1wjYne=?HOq>T<6(pc$?A|Q99cBTVLi|7Y2V2TOj7q+9b_O4 zdH8nNg7t8@mp`|WKUaFBs4ThE=7sN>YU9aIab{gHlo2|cfA>w_)M=^?0h4h4u6xX2 zy(4}~ljyXH#`8W_Lfv9`GtVwv{e3;$gLKz}Y^IgO^s&M#LMG|C<8p$3PwbK^S4}w9 z*2=BE5P~qT=!p?OKlPQyb+45tIWmt*isV#Zo{3wXfge(Gu52yCNGdoo_cx;ERKEs7 zlI59R0sRql6r}+>A?&II1I{1fs1;ksT)skBB0iqQ1bZ-WEkJt6b{>)UP&3QB&Z>{s zY_`3&DR1HaJz4v*{!SGM)9>*7hjO}c54}ptv(c3P&?v|BDyectgxQ@tADL;4=d8XH zh_|DG+C+5^y#xgq2QHq<^rs6Y46z^4FX5DlkQ?_drITh+ z?KN+!;N5VJtuq}qlzh8cXTDI2?PV~kXy96n zg5<91S@KdY$N$_~{6y=Y2pR?EnAK6>)COi5VCD#KGJi`(@f2Pr2bW?ZMd zkAMijQj^eiY=0utPKq>%y|ft>xggT0e@%MjPG5u-d1sIXTlLH6k;x0C8kK&f%&fRL z%dtK-lZ=~By<^aZZM_*CXPiM4{_1jjl9IHFT@$>(9YQp=G&%>_Iki!T1 z8PY3OZ+YZT@jH-zf|S?z0Bi4Ns6Fq{)qcScG%zblz`rF7h7A58s=;-b&|i;&uez3{?qXX`oqHcl2Ix zH|pJEEH<9(_{WyjQtfM5br19gmDt4=?C=Y6ZM`Nwi0touiiOeLD=AZR9I91wx2_n_ zZ(89ld*VGc6IO=X?RL9j$p&kci#Z_|Qo8a9Om#_*rR87L3cvjE%CyAwEU_C}GQf@R zbk?`A=9EuN)ndMXaeuxVHk^6l`{inX_(G>l_bdC_P`Y{c(-V6t>>r-?oAWYuH5rCO zvTb#R#Z&5vyh$lvm@2U*=nG)d`{z;>-$gP-^$>W08W}gHWM4C>rjo}-xJP_j+V1I3 z5`!w@$eb#}%Sy;n^!y}l$H3y8ykqeaE(&H)%>a|sV2{s&9zTd8s?$vqoLrQ^=LO2q;ApaD3k_^=jq?F~?7#U*W#Au{(^uJ~_4^S;Mo{NwkTY+)#fkP<@X_h9vReoGwqDC(j=xD$i>WkHM`xE{=oupz1*_R;tI7Kf%_0jCaX0ahymR1Dr)^qG?_Ec`qOFis~X!39Drto|%pJR{b zOXW`z6Saf(Aq?P|711bWlM<426;*=3WC@U zGt*<4KhkY|3wvf3wP@a;mqRxuj~6;FrX5)nEr({IluS}g(2Gd20{W4;vuPe>PE)1x zAx3nS>Ju!q4%{>xk`H;yiz6gf=(PhU)f!IdUbH&Su$Vyxfq!|f`|kDhNMwD=MltmB zb!PJ|%-X0pHlixu!=y#tdtabjd=6i!)iOyv?Fyq_q_c}*-tbe{s~OL=gUr|ndm^04 z=wkLQuhoxgjZ#Y9UzChk0nCR%_V?uVkT+tO=YB>}vJ-k;_mplxW1v){%hqrY%S&nf z!KB-_c1p({7qKggKOp-CCQMi z3QX7NEr+}FZJ1{lex|?;+9~hPu)z@Vg(`;LgAQztTzcjVmjES4;t)C>cbUZxOPcNP zj$fD2qNqdhH9%Lj2*`6?+ewG$$u$}hoBwuBNPseu8XC#shN>qk&Ze&-=S&Yl{G*tG zpR5q}zbAIR&(lMTh2+`fKlbDoVoiHd+3osBHVmkey{Z>@O5ODQ*^iR`A2QY7($mt? zDe>7=b|ttQe-LEaYt&b4)Xa$Oat(3uFf#t=uRgkdZ%I@URiZ#<;AUWDWV8_?PtGu( z7+`cTbGvucm2W+~n!|-94<}~_C|J`J%3+8A1L>zh154)9T zwSHYdm8PRA=*tZ%j5b<`UurgawldQ!%ggZgX8&X_3HRZ z^{V{WrmA)^X22i!)3^0Mgb4X+y-@XN9))8iUb;RE2&XZ}M_F}m> z?l-HDD@Yd0p+e>JZbRKEDkPbxD(`xJvP!b;%4wbJU5XpN*q7&;+6YwTtF$ zbWO6xUG{yHUj7QHT15RqM{-Fa%GAkb{%*T&iNJU7=kl}B=o(oM1FdiR@&r$dL>x1A zi!_=X#+q{_XE;t;Xsx+aUaT!X9Ka%bcQqp{As!tr=~*WM7@l$*`D`5T@f-xXtEa9s zl=GPJH97Hlb@(-2IQ6_gUQ^O!y^niwSAljjyC{p$*ksvycaC<0M|Q>{xn&hQyhwHX zfP7P&^yZ(=#-DznM_&;m6Eo;P&PIr@=(qn!!NeXCC_!OrCuaaQ=c6^U1sfWg8&E6_Z9rPexMG6bBp0qqb$-vgm#L5!l`=SLh(E%>3ALNjjbTf2s^j{B*4~SbBo93`62I2LIP+26w(%!CXjf? z$6f)lT*KVQt1H*qz9%q0Nw`hpcCTI`P(bVV%&j@T2V`buU;*msG3tTo+4R^L4D}6Jx#9nBm0z(;cJ`2^{c{lk8CgMW@T8=I I(n9e64-eX%$p8QV literal 0 HcmV?d00001 diff --git a/Architecture/images/French-Negative-Realization.pdf b/Architecture/images/French-Negative-Realization.pdf new file mode 100644 index 0000000000000000000000000000000000000000..4f3ba05471f51f9ed3f841565ac7f9c83b8fd7ec GIT binary patch literal 16267 zcmbWe1zZ(d+deEINJvP7zy_pq)7>E;-JP3;O-h$^BQ2dGDcudyA>Ca{w;=Ux^mxwk zIp=+!_xtbRw`R>XYu2n7?zyjZ-9s)fDozh%U_m7B+C16Z%|Ffj+|`Z93Sa_&4J{CP zc>#>CKsKh1W&kz_qzGUXH@9*G*+ceL296+6kP+Az1mNdKba1o>8CWB_K;@|o*er;n zHJ#Fauj8g0a*gd#zxWgc2*mCq=@*)LX$Py2Q1T+~1EnIg>VEi}<*mvzy)Omu^_&tg;oR=e(R+|#ERx9aju}?1x+ydl({S_M zxo$h^086NDh#n%8nGDqw2^l55D0NC^xPg&)$9-P5JnS#J7f_tYUMERq&QZNI(}(Ak zB0HR~W=hbc;qTA47`FGt2~P}xjp8KJ-B>HL!Q6Jk`6kGMGLOCIk6C?pE zeH)FrSL&`@9CiG8Rrrl1wAw)+|56pHD)|JJ-6@e8mZq18O!Z~i?(XUxPT+2SiXyXf zFOU9^#m0ffaUmHcRX*n5ebhds^Ar6#}4~?2i zZVp;b7TS0`bUF5P7TkuR-dk-F6CX_}*5?>FZZZ-i?~D9#BWetu8u`8oKz-es#KI5} z080-r(V3dmNFBkJKVY%r_DqBd)qXr(&^cj2-BqFTU0wuBelUq7P^SSIh;+Gg{6!P# zwiImuMJp>om`+P<-|_>b4_hQfw-pDPz4wwX8G?gC*3Um`eqkt^;u~FD98sPJzg(kP z6}IvmbwrgRb~8=SD>dZNTfDb>s&Mah@z{;!lJkpkLXn*G~`qD`^$jGiE+cPJPzF)8DkRgn~SzrF1hV+U}2B%+FtwTVVXW~cWN zL6N{ORlq!&Wz7mKtI;NzRkUpW+EVfaZkjO!^&P>9l(bs)0hMqPKiNwJk?LQw>C4-SaZnjQ_BeklcfbeXy$!dmsyt<>Bl@p80R)SJ~AT1YndmF#VC*gKQiD zEI&=LBFF*kWN!p=0I>fAM8GzVkn;|J2lEZF)iNMsa|2VJ0 zM~Ll)AP~F##|z$gN?0^2Lu8W@2953dCg z2Oxms=Y2#Rm;szWvi$szHv^;H00DNeWBBTL-YXk7_ zz5e5+1N@__vXDMA3O&4eY#y4t5 zk!DBgM(G-?#k{Iyt=K9{{EFF0Y@y27SmVLH7sIc{kUVMLtc4Y|ND4JI(?5AL=GHz1 zf2~*`uj;%@O2uF0B1Cm2R(s47YfPbGkpdd=IK5rI0&i#FW&2hOHEuw9P0b{9JAd7#XTCpXz`o9uxRfjIM*Y!a~}pE9|S=!)Wn(On+9 zc$5b*ep`8sBHtz#L$ENREOtg}IVF`mOeo@BA5<^l%2AigAzyhq@9WfCI84~>gk0UK zNZ0i^9adKXDTHf9!sjDfb-*k5<Vwa}?&&C%;JQijv@e$)Reb>mzf@%9NrROA>Z37$z-J#VB}OFoC<>-k zw}cRzt1bWR-DE08Q?Kd1GC9Qw=FMgzVo*g}PFt%zAN5%<`K?xMW!iJ~-p?$g42I>L zwW)5aK>>SG{Evz3-r1yF4eQoukDK!oe4oNr3i3N2bbKE0tzU#5&Am4syInkFSi!ZY(+ztu8(rsvK&L;jT`*)%Q@ z$&o`H$xd7v-Xc?a-LAImhKbT9KYkCj#K&`^BmcH7Y9L%qSSBU1m=Ks00PN#&aXO>n6t z0dCT?NN*ko*(u`7R!!y4yJ737z{c+k50g6zi3~O6Z-wX*C(3$XW#U-Jr@7zle9jvu zH*%dY62rMHdZ&fQ&2mt_O5EuksMdKHAb@<&&`j@1<4K;D$e+j%OR5viAf+e0EJZA> zSNFYfDBAtv1v8EV`3d&;WJy`=bdow34LFfFVf_TDM&8^QW8cDf)qUXM$g&eoA}tm!YSpt2EzfHrWM8S|~A#CgqYf z>kVn$J60*}Bb<$9cz{yn$S%sAQH_mS@SyW4U0=1eP$3z4! zVP>a8s=FEAv`U6hSG@hcytyOJ%Q^KLKlm zugoE;7-7}(G7XX#wYw%tDK!0#ui1Hqj7?JCEmCC3<*lS(!+tHw^vted32*@Z#xSl@#l?zgJdj3O|>p z)P94Ex#EYEqc7qsn^JiQ-I2RVH(+m~r94dOgFRENeIu=ljY2%!&kccFsxU^8RC(wi zi@@z5QJq8pF)x8zI2cBNON)BjciJa@N?XvaP@nrf7|)`88fPNraEgxS>#pj$mC=Cd zuua*=n?3Pe6cfsxO)VzQ!`4q#g5t7I{aQf1v&-`W>v46~c$+tXk5 zC3`y-lDEo(!Jmvs~H!0agHl=hj~=lrn&fhowuM3 zYni^1f1tCFix>Ka`G}nMdC{ZJmNSvhsm5GonV;O!Z@V-}-Ngk|p_kx1daIC{u=j#P zaS~>>07p$mIIi?v3=Ankn2d%v0s-g!X2p#8BCQ<`85A+!CW>>6+Ezq~O0IM0f&}cp z%#JR(p}X{fAqjVg-F7 z0V02m=ENNeX_osw?8QG*cE&Iz^SuQbMY!0slLfxmmKBQk5`K4BJQ<;e;lOO~v?*#y z;IP#Qua^I^GNSp>cOYeJdp43K1^Je)z&9DW4iP6YkMpUtgWc^fF3i#jOND6~G1D8@ zCx|WIHYRhQUYWXL9X8i!^YtU$$JP&#i1Wk@2@Uh6C{)>X6SR@k6^J=p)M~t{_*!FF zrQatUmsV7FKY(!B$y-~l=)iDr)Kn{A#6I*b6gAATMXs^9#4^K7z{1;%cCJUTRhn2z zPik38Ew^awsbZexSjAb|S@T)_8JnA)U;~}b*BME>J%UDfuWt7#vwbF$z)DQC(~h}8 zL}}tvjE0(NDU6`~+ZzKB6;0h&IaXi)6v?J6QQXlOFxr(jS;68tkR{$}JzqTne zHsTxh3Gj|F4SP>ky2e|s=2W)bDNT6zUQfGoDv)hPk`E<)cJ4jOM|8DTEES_B9-UM; zZW$88uwhbrV(wI8%EG(hS?yR(HbwASTv->xC}X!KTM`Dme89T(IcKj*GF~6DseP`A z8;i)hyFp;LLh8!wbpF-h|0^zuUgGjE4!RIM##SJo_~>*wQe+Ey)mK7QQn~# z^{$PIW&Ic9_otHz1hW4!Y!4paKaAf`&+|{?_u#($@+<#xWF7v~HD!kwO%5*RA5Nwd z#CwETMQL+m2Z#&$;1fcO>EGSNzx%2`>l86?G_V4j{`8U^{&0`~a&8}d(BB*J!$oCO zax!%M;an@*JAr=I^kBk&p45<)kyDYSeF?I94RSO$GLQv1LHy2#bD|&zBYSgON3cC2 z@DB%A%m%U!Vr~OzfsBEXBG}r%<}XCt+}^=a#LU1Rz{&(!OfmT500`s+FshjwJDUCI zCL0$bGuuN$e{Rei52O3vH+I&a9mH5v+8y5?J zjpd;N_nR=`6UCIAb|j}-DI`++kt{XR**-i!}S;pfo)K6F2a zQr5s4GN}KWcJOCgltT$ z9!L$Nkb}_!N#bIIT>3Cq4+r$jkoPyEh=J`(kh!UuBO(Xnfn!v11X-&-T=5EI@MHFv zAycCMvjl*h8FE6#z~#pj0U%?*_Ol_7^)C>Fzx<**zy2A10KXoxU*zQv^7Hc$2w-Do zXN6SqUl!0x)U97>P2+iu)VJUgFtOh~T7SgOUIT=KiIfR$XG5TnM+~4aW+x=^N9#=p zr^?b0sCr_pImuiygG)1$UMhuza1hQ|6Dw?3pMNM=v$9lyiK^^kg<$;sjF)>kq$ z`%Ql8ITz4dyGRc(_INvL(LuCiw-#OHbH~D$xP)X%Jl_ye9;(_Y!$+AKu zp;qc-dSX+M+n3A1#kucQfeqJ4EIr#3cQudW+A+fN6RNnUa^_`IQ^&toBJYq5cq2$T zMh6$9Dffs+#rR^sl+ZRWrQ~b?tbwE?91q-1*J|I>x|cGCy|5jvUxXJEY8AMj&>}{~ z!armDYWM-a3NOwz??xQSn${C#B=MZ_)>IM%cuOx=gIyDfp8A}APmC@xm%$91GyIVbO=-kl*T9^|JH1`+Uc#bGm%-|SD2C{n!VTgQ5V}YLdq_OX1tXbkM!uELY2 zk$LOn7}ME#kh(!U5N>Kea9gTfD6o6tvhZ~wp#0T=aO*(qP_|khg(3iZwJ7PlP5W8L zsiIRta}tb_v6^aE>Ib`4N@oMmr|LH^726_mUOb0bfh)#Wwm40n zSvsnc24LQj9KbPlb>bcw)K{nJ@aYFnd!~t3qe`4l^?YV~#owqL2>{+x+bPApg=OV-$UwT;?S(q+ zTq}c`@tQ%OF`v0DlQ59$9B$Y3Re5#ZcgDl%9dJyoKSk?X?W`;@uWseuG+=4?T8q!S z1S|(0(O>?uAGwvrnDKr5-SrYT*ZtC09p?<~7d6N2;%~f)^pnw(XhM^W8^Zf}nD`(2 zz;Vi|vlJ7s!wz&rb{zQfJ#k0A@SJg-DJlys;MJJ&8OU56lZb7b?1ou#dqfM&#eCT^ zAqXBBIK79>Rtn>hy}cT2_J&n+Z{Hs=N59_ERC%UgOa9IrYyTCL!H&(LZTSZk!%+q~r?_S})cZA5#KXbx z@|w|{0PnI#1k^YFo~C?v-2_QW8)H;0L_uI^EWQ3%q;Y1e_k!Kg(hNyPPv^@5BkIG? zmwe6lz5+#2FV6Jk{>LO_vMHoNF|1Ls%R1!sltbfC?x~b*EN{)?q31=PPVAzr8WlE} zei{&`;A*rqh`}LR!I@rf za=s;xV?0_k^o$=7QE$bhycW_%N6c{9AHA$H0(e?c03;^oqyM6@7uX*^c`rzUR+H}OXh?_}Y}SlUDZk#)lRJC{dCF00`2#3*_O zA|vTyV`rMlk(s-5&eL*?AXGA__(WCyAeSx^@TSy}|F%@OYq2iEeX&&w(>1sEey;>z z1O4vmob&R?T6>csyjC&ED>+})r%D7HmiSGWs`@%PZf`!D7~7L5ghF3urm z+}1xVYpdj-l|uhkW@3`Eg6~+8hw&2LnbmF0{iemYRNR@@^PL`Dlis2}y)_>9#H7=g zsj^m(AZ)fRr5)1AXF2E6HI+soUn3Y+9&SvoDiWH&4^Kc`{U=XkHOOsVjS6)sAkkxc z(R&1%`!kMpQ^FM^1jtE|)>s4=1(yt9fJLH%i;4E_E*3io7FMHN7s>_CTRcHuU8wMi z4fkjlmYhtv6ZTJ!12@w82A|FA5+kXq!LJE~zqScGV;9F}UTkj{3F%sG*N3Cchtf2Q z5S`Q-d7q$$sW779Cd{QKoX$iMz`4Hy5FG&%#^#4s^M|}A>9ax{?iB0MakLN3Nw2{l z{bo?8a4m~N=sem-jWS_l9p8j&s(K;}%_nq(C#uN`6P{azD25zHAowK^VXMoim4d;G z7jw<<6VqxVV*wB=7Cs;Bt}RKniV!1xX1$_)7?DRo!&m;kfg;Gj@F*eBC&#g4)=e6~ ztzb!HEzlC{;Cf3|Q&hpG3^sqlg)~y3!{?{+Gz;J5+v7&hgc^BwCWm)zqRhh3P zsU^Z2lh?DbW~AIa`k}ebW~1f`@i~2kV#Z8OY{)vS22i? zS2t2Hh(H69U5q^mU=w}-$S|k=k==<<2{HIoxiQJwPU}K#Q#6!oCM<{!ZD&`|vmMTo zdgSuVz_dKoF(2iOB45$Q*@9-)9k6M_%RHf>HP3|^g6uRg^%_~M0re>x2P)ytK{_E~ zK;Y3G65&kq+m(`)k8t?kt&gW)$b-GfMH-`bX;kLA6e1H=@ z&+2Dax=@2yVuNt>olj|GAIl6fKDv;d>F^spGxm!a2Rlc0)ykZtYaN+V1kMCc9#h)Y zWcIEF1w2s+rVa|>0GCG+<$X{y!s$w0tCv||Le^3%SR4?3=cLL0^|SA11#$CM|G`k# zeO>p7H~vy(NuM{8$nkkN-u5N!kfyiz44KDl*WYwubOvmDuHtu=85b8Cdv;pf6hstp z-ZRG-d#GIXkuW9Du6fhzvhk>*Bde9#V^zCp*^ELTGmyQfdaOjW;NE|CWz<2tzL(CyYzSqHpaH!gpj)^p~~HBZ6111MP$% zZ)Zo}&QpqO!EHyTrE76>^RRFSwTh0lLPe{xNc{^}{zW&Lxwx4Bqz4al>K8ruiw{9K z$p6McMdZ~*q?BnzAS#df56%5|_6cDqKV+W2xaR-HKDju4W1kQv@+bRbXJUddJxB_v z@9*iaqo4b~pLxjtos|D*%0K(}7ghc{-}^_m{=xJBTJ-E}Y!If$#04RF>=5mUiHixM zT>U%K<6why<}aql%KkT|2T{BrJnm1X_XoQ}WMhKxzdzX>Co_Z`KJe3@k`k;mc+0!@&K(j z!zzu9LH2YntxNwr-X^`hPiFqLrsuh8diPVUsf3|+;EX{;A81 z`bFC~EBP=}0R{gWjq{AF^^aR1M{J~xF3bU1n zro7M%6i=b}GAoBY5}c<$NvLiIsu!eZQ0{#UMzDPpo-lvy+G6d!X%({lq7L(Ai3S&K zSHKZ4<1WdpgF*@anJ?iJW~n z2Pj`{JUbXc*!3^Cw`?>fB%J<~nUsA9!N2Y48uPCT10t+!@V zqa{tfy+6~snIrpIw!_xpc_2N94r)g~qCKKqY49o&ZxUO_EYpe7yV3D)4Ldr_+|S=n zJT#(IxWN(I%6)a6rLEwPF{glzT}pmck)?o-AK)-tCWw#yvXjm}FQ#lU+pJ41O@338 zg*Cx%x6Q2#=J}&Z7FPNY6X*^l>{K94TtG|1L z`*?vWSk5`=ZM|0*fl*k`Xr5yrnFV_#|Lx~WtSQO$qGxaXw)@J|1Q?wp;7U(C2O^W3Cs!nEWPjtcQnfDPb z16&OOJe!Nd>PUb9&Ykw<@0r9)%1bnDSZ|@J?GodJ#KDso4PE8|X%p8zI>vXKbY8mZ7#i(;C;C{>z=T` zV|{@d=<#;UQZAk9R^_&kEEgU&Z{2@_$G zCsgx8P3y@=1+$~0fd_?K{j$kb$byx5>SxnG*iMtaGcU+46vD@+t0#fyrxTbFl;>=v zuP=ZVBd4MfQa}iml2?9{{R}fc^TPvV@qn%>Q`Ff*;Uk%~XXv7*$UgfL|Kc-=Ob{#K znB&XwKQgK%BFQM`+`|a=K{2wA>GwJFT8do|m83`(ksH9`Ja$EOTVI2us#DG2AR#D-n!ASzBH=*CH?QaJ%oE4Pt!@H{1V4Aa3zNvc%Kz z@SulizWF-HbZfDkujM4vWh~K*^YXHEGtuj8tehq6yK0pSG*suva9>cZ^!#Lyg?L|3 zQk|Cgl<&JxO|m<&bt5i`ZU^*;0YM_GM~!XPD?&$PwwO2AsgEiOosQz{e4J$0?NJ8H zZ~M%-q!*NxCYfKb%Y!qJv*-nGwHeG8wU_}u&(XzI zlE1!3wHV%xV;r`B!6O=jHIzKPYEoH^{7L;&?mLwRe?NCY7UbIJ9CBI6{e79K|CWTu z^MFS=ALrULySx=6_giLAc2K^QIh5Q(-+SAIoOo-pN@qH$z^vWkiMOsc^ogC`DW>$9 zYzFI@3SNR#=NOGhGwX!fq6+jF+6U(Fmz}|&52miNz0{%X*yICcPBK)XtYmiLCNuJy zT{3vcaa!6h)J+m*MHJz-suU+(QGk92O#*8YYbnZ7iUS*wN(#ZW=qN1EGyh*LJ zSsJjxR%GN3WToPkYRO~0sD}|9Ye4lCU7Aff3)!I>G zZhv|y?5F*VtO_V&RPg3;eysgM_?v(T`)F~lmpRXKf5H=p;}5TNW1yAsR|E~}V(HO* z6&PBLIx@R^WC>vpw(^Ru@xo$vj^`-kQUeiYZXfDhsR-GKzI?8T`gm2M=&gF=wq6+) zzcioWY2(&#G^l}&EPf+2EaKjb*^m#ia;ZBzplzj#K%P&pzg>|-s+Ga{%)Okoul3n2 z@vd4Qb>jiG2``fwyUS$B%&e6qk^FL?ONl8lbpopEQH8`BOF986kG z^9h>O@r_GQ4OW+&7rhkB+EZcjn$V6ciO^29E`RI_;=3Y9W(rr(2={B05VA zn|Wy`HC8G%v;CG03D&dx)dn7gyrdGbf_Ek^T$j)4pcbGvoX!o7FkOzVuA*v^ENO27 z?QFdFT|G}ZS_`jsM+lZ(beC^rDlG1{PP>PepA>cHZ(MpqJy$P*`X`V6L9iZ37Yhp; z+n+r8ftvkdV*h6zEvcd`r~2}DEtmc$m;A~5{^F^K5GwfpgH%7rlYdFNtdOHWNi{^m z{ZokjA*Mp={eRy6A8TR*{*sh`inmM1}sT1hYXD?SD~%=^rHC zKeb@U;>TYr1du@6zqDY8w*B`Nf`8S5Ss=pjpQ{BxHpt?~U&{rE%s*ou{e`!P?IXYAaR`#h^6Ri(S6geR&8FG>c{BKFrq4AW zGi6GxwOtqXw7mUmT#iQ__Fd;uzOP2a_sow_jz$SoRFqrHxo-vB=1H_V<}H59A#8SZ zt+pOX_}uzEZ|E5@N~vkeoU@cmnCeY zcRTTitqxkVN>+!O@cPTMy1reW3BvRAtN6WgUJ+;Y}}){ zr0u8fvD0^+-Up{J{A5J#)De|_3=h{$lk9~Z!G_aG2dTh(=I~WsBJQOHzQu?`F;Q}04aM;cjj^5Mp-Yqf8xs%imKuAnfn;XQ zSH(6{*K1miZsvsdI0+LaA#TQcIwjLV<&i4Iep>o18a;@5Rv&$)aChbd-qH&YELVIv zmCjG7DU}hgp`h4BSBa3bUQE@SYv96D*mY8${l*v2L+Une3hz;43S2fQwa2&A5Ba|J zULAw4v`CACgM%z3xC?i50xsv`5h)gX!i2IPWMMd@06``q7)oYR`BEXHYcB0-c3fKN zNE9ob^PW#}x+SM9ekFZC&~3%rf5MaFW#a*2f$8$NxA0ED2$64B9ZIg_~UUSp`5GuH%RPH%BS4V=BKPl5(1{I(}Pki ztSgtRZ9-gAVNQ#~tn?}Ey4TM>*nQ8sBW7eFBYD>bPupd3X-En0B)H4!)^UA*XI~9Q zkoU2>a9V12;ve)j=Q6koIY&<+sC?e%KQnS=>Cym`yrbf&J2{}caLwQ@Kg%!)-pndoIXISC-vYOYM7^&sa`?P@6x=K3{pM&h2c7dE8*Ky4_=%$5 z1j%kRB|y*51L*{&mo_>>7=_MAMb2--`lTMmSB3X6weBB6y3|Q=s^B6H^zC>eNFPVW zpy2tx5;+Lc_R$XDeOiy=N_4`!q0;LMs=K6!t0nQMmyF$?e4Ay7Nr6;hHZ-0~ql)8( z<%Yb@wq9;fm)B8(KZiW`O0Rrbji@qC8pv?HxUgE&dxy)I2v;QJ{%DBPfrUN`RXH=F z+*gWm`kBoEL8Z!o%~n}hftaQG;qLK!!@E)!Z_;m9^>^~GU-GdNuTJG|DW<~j>AX&y z2Ps%HZzw`djq&Lv4_SfAAd^`JZ-|4SyG=Lblv@`P5AcqXXNl9vW~2}O#a0mcowCFEQ5 z5$1JKq2LFkHx!#d-AUMGU4D7Vf-OtVf%LVD^8pyz>eSXM&bMg<13Wm5rhy$|d~M~ahZ7!C-GlXEbGX-@El^(|Qw zuT9La#$_MVcM8v=F`5y9D$nVHy`DX33Yw4a5Oln`QKnHY#=6Equ{UL6Sy~=1dVB>v zjxx=Rq^6SSeHf6w)YoyG)4t>$dYrxX4m8BlL`nD+|NFvbR!gji6!XCO>}qajexQTI z*?|!ySv5{d148qA9; zk1p4GIn}Q9wa1w91+r1rc8v_U2Y1Q;7<&(eld-{t&xLxw)HP{8QrAkbkxWNtSsnM_ zNaBrBa>9;dI6Vs2O$BYjOD9T1_JNR3Iqaq*SyH+76kEv$#M-L$QS+|_40XN>a;8dl z^U#(z>#-zq<2wd~%v`U${~RlWm>nJhctgQ~ zu#n5M@WM8>O$Hj0|Cfwk3M?#t<`I+wQ&O$#~fO@cd2noMUz>Rd*_XP94N51Mrpx=!4v+r3Vpd%zWla;|lq%6O$ z(IUG681A))2*=rol4d)mC|3U6OQ{I66Wl|WCgbJMkgb4;$ib*LLFp- zF#7RIBXJGvZF^)cabqxg$`EH#?@l+c+4j~ko~KHfi}T8sp0IQ#62}@4J@zRT0#|coW+O^<8XxTNt~j&(bnY zD|M^M(9;zk6yFF=y#V<6cm(-`CmEwf3kkwO;lchhlkAfEN`uTBeTjA6Jo}_u5-6^X zTacN~BFIU~tc9DW#;a>=%0oov$U}i3PF;ogvfRG0A!OlscotgnY*8T|*62p!L3LF@ zxkFgUjw3S{+XuMu+g172B{Iqi`&BkWx-?TL0C!5q`lgUp_e4O--9&6&^8<1;4&{>XlKjbE7ddlrf%W;R8B zDKOZ=^pjGtXRnCAM92t!I}q+Yw^Yezr!Nc>dRdLO-AOsxAZMlXna+W6y+!x$HkQQR zyYEad7VgU*8OE+OR-N;2%&!p~D={D#VS9+CW#T30TpzigVy402olbLhGHNMsJZYp5 zR@Tz4JG{fF$0)-2SgNZbP-}00UOp+j-{1e~+=1zeC++OT!M`x5Us1cv>`Z?~?fyof z%pD;ilT;QCiXa0kVFpus0}~S~5H%!@)*fu^WCW2MsjLl*+o_LL|-q z#8@7v>F?z@nIO#McMJ&Rg7BH&F(x28ByRUVFlJ6jJnw&ETo0eQJpBF|16JTer0;)V z%pCv3*t!034^}S72>-{moJ}I+2o{1n3=rH09W;1wcOBdZ4Nf2gCy?OoP9P90xVyUscXucJhh+2a z?z?;M{eB+}r@K#`s_L#P&OFblGZgY7Vhk*dtcVnCYsYIlxhH8uZ5@bg0A>Khzygt% z7r-QKY-8$Z24IJ(6ah?P=2niz_RzBx*wI+T*bri54B+QSba1pc23sS#z(&VQh0k@M zbspSedTJAil#%S(tjADSZ|YACwSZpp<60J>fYl~?Vc!83_!{4`cP}A>=$;^%C-8k1 zS5v#&VIlb*zMn~ODb-N(QT$@7=qA_wpuzoUy0&(3V0K}H=b{dI-&JOQ4aiNhoW^;e zL(BMTYh`m}YC6W5iPUXUz0SpW4*p{M$-6o}-ir=~iSF-w+y_XvU)>$S$dztG1t;yb z0p~?UUd~_SvFqQR;uCUPCzxcja zH1Nj#z($wPq3U2xz@{I&Fj#LX?uI2iX+9ih?waZT$Km?Az(SY9W&rrr2cC`5&rHGo z>7Ddi`|2Hzp7-ZfjUHF08?z9jMiwF3JLYzV!L{3a&y(FY8|Nc0Td!knxq(U-TjR~6 zn5H7R2D~1y3@>vgKW`-8e0Pyt+xOZbJ6@dLC>T%%MTT=LM`w}_K2H}CZ5f!5I5%+Ua#IP>*q5aIVDiDKM&(L|*D?0! z1xUpIj1g04JIFv74YD+y zF6gWQ2$QB^xBF9mgItih*uXBO=>ku*H*(juxZe)jR95`CBAdsa@|p~8mZ&yKBv`gd z+9q0>VMSaKFI0|?nqhVzKELX_H*oV2BMz|}R%2XT&m}1qF@#@r-S54TFzY_E5ETLB zRx^gf4$OyJXY#?UR_d&U&d_GJYgQ?u=Pq}OV>H82r8X&tXum|0LyG5XlK%3JlsIXB z#sa$*U9wTs5UEe)#_|*1@z~aLVx7>N+e`06H!jYS)2kiY^V_vVOwBZ+D4JLOR)3MbDRc>`Resi!3?_n7(ovecSwOq3vMmS?Qo*kZWuFoZ-~z(mq|s_nj?6 zxdd({2a|I)X0#V=_$;nOF)t?Cr|XGzG9Fuk(^VV{JZDwqS{1V-YnN^HM?}&clQ3)= z-XcZ_iQRZJVU)Fw#k?oQW|9B;g{(;mQ%;p*%D0ETCB`%9)9c;x(`phJLLt}ma|8Oy zN_qO_%o%dr&ZmZZpiu8I>G`eZDWRqaGmFRcI25WDqYysfkcG2X7vDS1IG>1wZpH=b z5Y^~=YB_9kr`A|gJG7x)tjO!Q#|;)SMG-$%*Ng?Mw4wNt?RU(oPDuhQo(3Ak4cZX! z+JBAqBM#+c(+uCcwEiBYf#+D3vEypwy|=|7+EKjuJi6y8WL3c96xcgHk7K-B%0!{{ z$z9dy{to|rk+i8cZ`k}$EH8~4(-hN-^NkxBWQ^c#J2Tz^<%ZXNA?yJg|^@<;S!%KdLiYZtQ6p(Dz z-Yyro(z=O8UPtDL@I}@FgmU#K#YUU#JLZ#hc^*-r#va=u^Qhd)`ISQB+^Ld!Sv?Yp zN|}72BQ2Fdi1qzQ4$_WPioEk&$KA6LEx}a*S1xYSkHj@vx``LNW@m`u4VqL752KYW z`rURu_Fiup5vo`z%@9!;mauGo!zmWqGu&Ffp-ZVVbldI5v?PtZJInbfa|SXo5hWcbO_Is7jj#vmLhP-36@w6mrqJBu zk+?I8k0LL)*nPk+Q-_zIF$ZYq!-VxV)h!7|&%l<3RfID0r);OlgzM{8<5J3b;!Dgg z^Qc%%n8dx>)23ePdrpJFuNZ>O8>XORN}|XN=qyp8-dY)p?WR@Vs>uBjOiGPrf{$kq zDhNj6=LllU@WhLs(+>hlA)9YMB8M$&3#+k&b@+~M4=$rJ)PvTl$5-SMoVSE*dd*!SFSL=g?JF%L}-}$nk z1N@TG0k((6V&#=Zj4o!_oLkx+E>dppUJv+7z*AnEl#dPJR*^y5^b#V9u|^yb8iD;W5CRomx_70LCC>t%1#`ykFQR)ZuQP ze`W6|9XQU5yiV{0ws!Iz#go2)AvH}y1JJMcA&e;8WrYQfeTKjWzCPoo@J44f5(^qZ zykSWl^P%f9M3MWA|RA;Fe!a$HT_9k5ICE8i{lF z9-V<~1a@!Y*%zJV15-}NM%_o|b28Soia|Kk;Z4s+skBLCG#zazvN3lvOC=E2i*XlL zzP&;Q1Eo303Li7P5ZoSe7dE@B$P^o~h}>uIskZDHu95&=cfo2Z!^J+En17v;V1+M) z_hE5Bchng>)_q2}mk?1c2uli%b0Q8Fcc%>?HUOl+Pd7b?wx}qi8V-J zguAKoTnnJFt36escmDPFJxkqb464NwZ9&Bi;{`MgjrEw9I0Teg| zVeFsx%T37#E8|3qML3RT?49KfbilqTw7g9m9#jvSMl# zch9?}PT%9WDj(-=(0*-Qf*|f`FO6HF@TmuRhvMw@Q3s4kipQ}&p|L=E`sW$+tRNmA9bDR^1ScfZMSz z=m&BiCOD#X4s*01E06ajD*QSkCo$*4?$7t$gAv&o?LKThQ*D78T2x4GU@G{5iO~BE zyjPaT)~pTV-Ic=&1i&R&$}@ii*8}9pJxq)^-sYRb%GJgkk0mU7#r{z!FCYwik0{px^~e_>#%4_X`)$*p6V7_h^OcrySe%@ z7CB5;KdjQERC@Rtu0j7K>$$o;`N1UELggG5`meik4@0DHbBbteWAq26hF(2D@dy0< za0YU5fgVbKUjGHAE4$hn1DNE&raz^2YkqvdBoI zzTKAt(j!QowC|Qf3L7K@>*^Vvy&G|Bo`Anm%$HYn-XWvrFLx27J{7Gx;)yh()UZf2 z9`rc5TeyO3q~c}xR0!1<-(Y1>v~oCf=N-=t8}>ADUu}`%XDQ&*=c)2V^beqW3DFhb zHEIcblw($-+P6ATgH#jH+e=X#e}`{SEgz#;#1Qc*v-n;f^whsuj-+Y_E`-ou=H;{7 zjHWdX{}28+vzP4Rk%R4NASC+2XdyJ0CoUeP0ZbQ*Z=TCH$wd&%jVX(sl37kjCJYb> zyH^KPi@S1u%i@$TJDK%y>M9r@>Tp7?XjG(cdy?{4R{<#qv?%WVg}uU08h)X8c9`(c zP~=DQhi#9?E}XUnM#M?*{v?eW=25hN=3MC5+fH)w_mR$ruevxvG-fmIC~CCHbEa+r`@?UJdA0YL7h6;klNh zHIY0tIH;)E@1wRyy6hK|9Sc+U>3$dg8m`q8(EGu4Sk5Q0e39-&E<1hByujD58eh5p&Cjf&haqe%X=w}CWrjcoOY0lYrnwIrVr}!tGvE6I1 zf;?;hlCy)ofn7x3;Vc>h@vUj~@16wXYZM1G6w`-ubny1#ojj4LKkiuIs~;&T+oq+w z=5|}vq+gC3P*6MB@U_6v`DERHMUd4mo1;jopr<3QF$D_JupDw zC@9=tm%ARMOA;&l_9_j>Iy%|?$M#V6D21Wxn4u`nWnsJ)9yjZL=@LonTYt6I13v-e zd&YVOPg+lkbK zBrz+;*Csb&T19>TOS9MCPoCo_8A=y>-r)$(1PB#u4>dP9#+Hzcv7VhF;`a`BT zADwimXRaKYXDk@ZBXc8IA4E>(2l`E6NM#hFD7C?-YQJv?|ApDl9q$%JUhERLXsU75lu4`K<%k`$iq5o^hOZantZii zy^-QR;JjZQo3{h`ezIFG$+q#{D?KTZALJ>yS0iJtn3s6CDYm#KnT^m9wi9;?c}qN> zjVZOiYpS(psCB+tfQLI&@^**Dfx1{E4K68gsSuCz;6&o+SCHwh2$_I zJ)C*}QNwJxET&PVZD0T_;(b z@T${E)9-ebqrxxGa0P#09+ov}ekWYv&2Pe5U?}77Z7l%t!rcN7Dd-3bVOkqbg@=-i zKqYDIZYg(dnq=-`0;+KHPd&QIk?OE_1A}p5rq%(6b%r>u3~h{ziGr9+1~>wKXFX=0 znR102TO3j;BQC~1XBsvwiVzpwWYPx+*l$h`&%2?ybVH&*=X_0;H3Et-{{4N1DxPt! zUa&6SvRRJ6?(ES^{MDhxKu$nN0@`s`r#gyfBI1zkkjE*q8J4%BCJZe_x%8!7|;o397yKC-%>RE#I0 zUvPjoQK8(fgP@7@TfV5nd6kCr*R4u}a{X?hsN}+L_q_-wt-MvGiVlqXhjmo~h8+DD z!KfjQ4RW=gi!4*k1T5Z~(am(eYLp_8)RSD0RLd$HK~c=M9Qk^hd|H26eah~p_o{|o zXKPBrZkM1I-mAlX!fcP(#J>#l#YxLdAEFe=k@Hi-#4FbHaotDBwQmg>)&jpOxr*Vb zzM&hW!I1o7{|fZkO6}>;b+m#plh_-Z5+g&t0dK#z5vCzIJHfo_|48Ys6A9tmDy1dde+BY7jC&W>3PML_$^YV_;f4l8aptvK&>? z#yHH>p~)VH0Wa^jVtvNdrILWxjcjV4W#Yyv9RH(_r9maK79HD$-2&R04y3utWILTZ&73J8r2Qp_dmVS0U!}^L9UoD70a?1y zT(zvtnRAf*dgp9YR@S-}%yw%+pQ*e}IsCRNJd*8SoZs(YF$)U|$8X2>fb#y~{C?rl z|2V(D`o2HWtHXceQ4Xkgb-vg2fan4v!o z#NSt(z=z@cZS$Y=&rhh|HvfHQ2R+Q$AIE=MVg|5tvH^aTv9dl`u(CYN13U9C%U|a| zN}%O`o3OtUia*Ey&td#Etg>Kh=m7r@!)^sOh0ZJRm!%Mt#~^AkfY@083~XF102UAz zCzMfeazfXS1au{s8w%Q(T0M{&CP4?o2bKh4hgN;)@Zp952>nQA5(eA8Ha0gkb428X zE{-me!iY^BOGu@&V=Y(X6+%)vk64EJ3K9 zl_YYTtan>>)<-rP6Y}>jgw!L^D9k4uEih#?qnRr#-j*xPNEESESXQWHCQ70xsgxIg zPpH63;Be~6$e%5@=`AP{7#g!;Slws$+@R)Z)<*ea9uBu~4gnoO(Bb&7;flrE4Wf*@%du`H z&FaTn11nS=6+f(AtnpV^e~%7tXM!~cC&={>RUlQOY_*}`K82IepP}0>R8i~O|&_L~PnNUbA^`?c| zwKLGYf_BZq&au131TJ|EQP+{I))M^~kNbU!Y>eKL`v*UT`yQ#ox(kEI8yxHpu&*&o zGZj;tEpwM2fX{g}S}i>4lhX8QSeW%%lR~uh(vcrKE}hRe(q*0nH>rEI-g5fL!wacn zIK=J{u|{r#rA4hA?IW#9DTQN1M!gT7PTpHvecN^ISZB)7=!>VmKKt>0KbqtH7$MB5 z;!LghO3c{ng-IV4t;}Azf8y>T4)q~D9vwB1j&h;qDr4r`OZKOb{6I+0JVL9VznNLM z$5>*H`*;^%iBDq zMe`k-3QCiEnjl&ocAhT#p@f=j&U!Udja!0q%i>kCLOzpXN>1XbMiKCfNwHK&^M^dl z5*XF&e*at|Y9&d&(-#Brs2YKMUGvK{UO{@}$&-^?IH&g?fg`Y6c*5~ZY*vyl3?YYl zO_byxg1?2yV+zkb3APH933+ApoXBZX-ZD`bc~Xb`@yxzpTW6e_avaZzrr%52mm?vF zeB8qJb(Ew5Wy_ilNl*3!1Nh8Labg#Yg4&KBzqQ&z^RmnTa8HQXsXFpG>i+pTa>!^# zoTGkbm2tf~JYV!9Qoxf_m>cibCi6wFMTJFkeQXyLYN7$jQv#zO$cJEC4qAWqPC9fM z`fAWPtyWy`)&|7L*|GefZ@;F#&a1bO>fYsi=O8K0<^HtNT~-=R>&lEmrcssa1EOqp zVbaT*&=wVMRNpiNJWhGka##=mRT|FJ8>vZjQA7W^3lTLDS+lM{ zYvcLdT4CnhXYnti&DIITeX9Q}?(Dc!VN z#F!;S>~-LJEuz^r-cc~xHePzl|0oO!tv^(#l+DuaR#Iu+&aIVi8WVj@=B)<36u4Ne zOy{VoB8|7GWbpiW-$CRg;8u{zIkt~GXhpF9+3xl2e716LSCzjPfbl&piZi2^z%EVB z{2BhB;W?SHCOJKNZCl;5wzlFSOsv_?XD4U4erc<`@fF$*b6~kC40>?v9&m?Xd3T>& z*yD<~u{>&-Na_o~GYEonQs_q9b}RZ#Ri}w1eKV*qJSP{4bv7+GYnw(;&Rj(f!A){V z>0Ju?X;fP7V?K&asP<14CIqukx$YTHUtCYtmibqN1L|Q%)yt}=R=!qgT*VZ{tYnhS zJtFlVyG$vCi-Ht4k5Sn(2sUzWlMek4xwfPOhDJkpICf+MMEzFop77xDS zw`6+ZS9kAxEk0pjgVY%8TgY-p%23RocRh-1!dry1MRUQ9d!!5B_QS%5-(c(%%Oxby zBFcO&Zp3>wKW+pD0uG`~uIq+-dql9vsy#o}76~Nt-3H0{udd6k_D(MZxZH)^6&)>U zvn746cXs9=oJv9&`#wR5+WvIkB0T(zs@x5-f_+~^zPqqhU*$3vG^=!ERX?k+Zdrg* zbt##IGTpKJI-rq^WhiFX{Fr+$X-+GNnRUrMg#2C(~`g; zN_(FMO#-YG%A^@duwN3^&ay8ZVg`R{2-bA8=jYEsFVFjC6v3j3MF^7`S~Bi0XYd%y z0%pk1h`{jfW=vIMoa~^{tMb9rfvQ}8Z4XfSNsLVMSeU$w+)mD`f*W9C`7KzqB9l6T zXKKdnaKemwgdAC+{KS^09BGsZNf{n#+lO0y={?o}lQL`j!cw})_(K1o^GQKtV(F#H zWi8%pJMvr3)(0Ky?f1W57NQLYPrmmOlF}Ge^p6Q6C`Z1ZtWPiUOLY<-ZPw@B)|Cl> zi@zgEZjFBhV4a&T6~NHvjj=p((X=mBXWTz(b11F!t-ijVYp$#;)fN_henGccKYybPl@0$k3%34T{nJ0WJy;}GbsVoPcxIER9k&07v8j2 z8HAlRw2xFKI6BrN*(2BuYAfidj-`E5gRl{9RS!Q&M?80fC-$84VP&Nsz&+cX@NuBw ziY>P1FozG5Sj%tAG#XJbfoh#?hn7R0l!0?+$z*J|jym0A^*#rwCb&7R1L=Ct3(i-5^vt(k+@ZAB zT*n@x9tMbGe=Fy0^7?j)5K5~VRCaOb1u|~iQ#r)uRI2?JIFoO-XR?isRqTW{qcT1e zpW3=a$(S4QB=;3{(kZJ*Op$b~?P55VmZyDI&vq5&O&{^}%SPA5+1sV`{h{?V6{fw2 z(EVT@klsMqLH;@0%JalFyx26Nld;ET@7G&;+jV@>N?#L&bdjF{u&kR!lVnwF)rYGQ zHA7fm>Ch+14vn>VO1oqrRpGBrMD6P@*Tn6Pk@}JcQ@9hRTjXZ9K+3M@=m)kxX6CkQ zs(yA>xss;Tik?x7&=O z8pSJv<~($cE6l{o;M#D>Juw~;(6bwSKZcf@$8X;;5FgXJqIy)dP*lcBas(-c#D?i@Z=8rG#Jg?A9@Q?|TeUpV*r)5Nt^*`YM&PfiMDE`M@T4rb=R@W20XLg;(^|2Uv6LED4Y{HOe_ z`*nUO|NZy747!!~>y`z;0Rln${XZ#Wyt}Q^WOC==IM&w>uv(Q?PmHu`CU&-Azpe$i#Ipxk z6U$QjP`>WYVPP_Swl3pst(iviB*~;oMiZH)oCqDTRURbF4cK*TSx?^mYHULFvX86m zo-MItwA<)w)@&BwU}KIBL6DV)r>rpk%K)g+!EqndxNvd7)96rP-FrT6kTFHBTzc8C zmgwep6c5ySmTh8ue=K97xiEA+DR_oxsE;PohHq-d z$x&nae+b2ETS;G>>XvyNq@$#Ioy}A%E!Vf3Zj~6D>KC#Fvm$>by56q%qRTL!c);St zl$wA|M&|#iumxSg-*5bLolv$`A0~?eQvseDp{rjsA2oI`2U@?BmBGG@VH=%vd7Pl1 zK-um1pfbz-dMZi?S&AAam?dT4;B$SEFO`4$ia`Ju<W2``X8 zyvg;mwmTLTy}D7>#G8%9CaTz&s=r>W%E|FVKXc)pe1lBG$40O482ljt|I863|3@)} z1f+*`5l_9uqG@z(ORK@6YnxM&TNO3SAceG)tvcoaLRpc19!008lPuY9L|m8@kjm@< zXh+`p$|{eaG3E61L&zI<|FNd!)$iTud_=|R=V4J&qrAz&8#q(}1J2*dm4g*3ZzVNK z=jyB1$tJ9jM)j-)zOsSF_VLm4ePBTwBUx$$Gpx*u`1&N%Z#0t{MbiScp6qGBCg?wB z8;(~!r#As2ep!!z`?5Z+Zd%}L8Y@y8OUa{=ACo})8As&H**p6rdx1@sSp$+atR25n zWMh(VsB_P+1=0ID-6#Y6;=DZ@#NBh^KJ4C~7=nRV>djn+28l;HFN2Th>LjAxA+)`? zil@<4)2%`-Ed0Dvq-MQhtrjxR(4hP^YjyjQ^;A;?vi`Bcd5*PD{pC9N9d5_t_O-)( zvX6Vm4vyiqk|7D>dHJWYp}}Yg_Iwjv&$9jaw8&9DM8E0ZpWM~_qM|)pP*dy~1yW|) z8cc2BJ38F3Zr{{+9*s3_%3kwN3Af8RS@@iohOj1P$ za+H%BlD&SSg{t(rbq1o8aYbp>cZMWd7ln=OHVl$_n&lZ6G_PjTqMcL~RXegqwZ05E z1*_8PEb0y+5kD1x322hAeOiaW=%ZLY5}xM)OK)a|cp_ue5Y)$1v6{aBX|T11bX_i_ z%}f>on_uNkogCRi`&ApUC!4J7ofwT-)H^gs!IuGW<_ZJaW*Wupg2u$^Pba*I^aXGq z=Qe2^V!M#wTHZO+zJ-f{_b0WhrY=?MdmRG9I)S)Gn^-NhCZ+G{y_KsJj~bDNy89Tu z34BQZ+PA71J}v5dY{?2UPndR_$tWhIzNkmxJ0`^1PBsJ0j756G%KZ6IBt&gmW>zff z`j!0N>(AzH+ov7w&U%cx$Kmw?d^f3?tRyLA;Mt6m{h6kKM&fJhmAa=o0;(%zG_6?Y z4MyVj3%3hQ+K%=MgQ-k(Ofxl0i7fY@DVXX%#;f3*UTyOo#ylJLy~{PY&l}+(BUGmi zBu0_qDJg&S@4`OjjlMa2Pxtf?ErSt530NJmzEPcN-p|XRg0CdWBm3 z2v)5mXGwp1(~?|nzO=Angmv=Zxyiiyx&8VA<{-Q?v4Z>OgxYlXsRL)u`FggyHo3PO z7jkiP=#Fn!-Ya?@Wh^60Xkj>%o_TKLDUjDKx1xz~D1co)gz8k-mT|2TP5KWqe= z7XU}U+roR%e=kDL{wNT?pOb-!m7PZ|DoR5ush|)Xtf(B7@lyqYYW+S_6Y%QLrv+b? zCzY9heAWBuRjV1k*eG*?|1eu<4wwxk)BLmMPgNWt#Uzc4UFsH(=t!fqCt{0{$dRT0 z2$uMfl)!8;m&MNMVY$jd(Vg(RQudFYM%wYxhOaw?4B^py7ki$jQ7Z!6=gF^RtbNN$ zHE3#X(-m1L2c%JXYgRf1*qmyZ%BE}N?m#aksI|nV!c;C5`UA~`YKN1U@-HKT|5X^P zoS;QBc`M6c&PJsrppzM6o=G#4Wk*fu5MtY;Oc<5aBXoy)+>T{epTenyNC+?!(|LyGPtmRd)CtN!(Sr9i8M4>va&Mc)BDh@E9M!(rc7ilQ$w243Ylt9 zW#xckXeKa29h=|ncr|l@$4SyWFF*Cielvq*VqLLJg@9|;9u*(Co;E?lPPdKPURrS{ z58c@Eio3JG-Rb`KLG9G**1cgrXHkN=(yx!G-t^br^{Nf%rLs79MYryZ^X(Fn)J9Af z^RpMj^S^J$P%H!X0y4rd?giKAKw>GxtaG$q)(aPZA&hlE`4^RTf#p%zY2im2+z zqg=f{brq1L81hXS_Bu^_1rx#%nKiuij)KiXX5mXZ&x$Gblb0j%k!viTHd;fI{Ay}F z+uNpf?)oR(j^)|sLE^yL7|!h)icNbhJukD4a%CXyZSUd!L1u!vBKwV;rq{u9*ZT2j zA-vv_oA4meg8V+o((B5gr>blQ+TyeyW{6xu@uX=rjPpxA!7Cdq6@+xqL^U~}yU4-~ zN-Tm9c&U6gULGbrPKo@fY*`%;S8jkAaX{}Q^Obz(O77ART4FJQydoAM4n=X8F2EGk zP)+t-I^J>~dh4uPB{L$IfJkVXgV{&_qFhSQ-A6wHQ<}C*rA~2?;f14=U=>YV+i@_n ztmaq=HJ*Pz8!1D=X3z+0pMQeLn5}Q6)d!Jx#&4KwlxloFabTJtSqFdbqX_;=^L~CY#^g#x4!Nrt1 z0vReALJJAwPH&xDTI=e0dN$sB&g-}}0nd)2-8qciESys18tYX-)p_n3QYUAo$Te4=RjZp%9?=WoV6*0JCt0xdVJZgLa|^1N9zX?E z-u7da_AS+4!VXw*ck}D0NNn8Tz!^uUC<+g48By{rw41ymvRlZn||#$>`9;>#Z)wnX1=43yC9Pb z?kx-<991*kA?3HnUpXVu$^81xHPD_eFNfw+Zd4x$7`@8TaW#W`H24n;v5O^aTi(su z)aT?9Y4o+_DcveVkVLK$>5FDWg3l%Y5U!mTW~UAT%>7$=s)S^zJL+z!ZY%xd;`1)w z?P*!v)*}1zmTy)u+8fU*nwvT2ad~eG>=&~8OeL?fr6e`P8rsVOXSARU-Pk6tQT!X$x3jfTo_hienWaJswn^Rgmi-H%f1)QVPcAIn}Lj8 zO51Xe_o#YP9tSbjHxdnb2)~Q zgZ66A9z!yk3I^d|-_oB+L|w zkjk`q^r=>zsyl5rPjh}e`f9g@Aby{*7b%>`#cp%4>4jaqbM3^3wza^^{Su?EN7%w* zv%pp_Ac=#%utv=>g#X7RKGU-(PC7MW4-w5Jj;O-S7ma;V-#9({6=FghJBoto96z-e z%;BB78%|a|K9gU)3R^=FyhANcfWJ2uw-6R`I2XshGuc~7U|K!DsymCR2ZHnMZ!J12 zuUKzcXE^qwoL5$-awo7Rz|W%>x^eP!4HqI1ojMwfpDT2x2uF!Vu}EJ1C?Ngfo0lc8 zEZyfoTZp+*^070>C)+j`b3dvjS@D|^;vdR>JE+RG(eM1Y zJvh;?E0%5q0Nb7Ud1AK%Dd3%!g7*$pkPsuO8EaXqrs(%!E_T8JUdO?N8&)Uw<_-gV^9NpdRYqJ{q}JjX&mr5 zO9aMTUbD$#JaUrlDUC~6WNi-S8@jul%JchO{UL&9jX1V)mZ9(81?V{O!5{G2WfYJT zBcr(K^sFD)5Ns-ina_L6SvEGbtz2AjMc`2Cx+u7+Tsz1-nwQk(!lC6M@Y0kS@yD~`B_oWEuOu^MdTOsrAT~^m+4aXUl}B&on-A9P zw7C{)v}QW)Ri3PH&W$u4JrpQ5Uoupk65I=5okC*o?opIE&|&@=^7#LR?(hGynxBu)U)j0Gg)!GxyoWkp_`T(8RKQu24{T?GUdjmi%XKiB+O}2aJ6~MvB!3g|a2<=SdA{wY?pi#5G+p)2+ z{i7~B=RfV(xwxPq%)i$KaX>R6{!7OSWc`;u9@fI&>q6i6AMLSofc~lDV*Q7X1IYQ0 z_BhxdGBp3*2Z-Y#E#|*;Ah!Rm%fie84fy@t4muxy9cM>-Ff`Z0{^yrvmCW6Yp>qj< z=FUT)sY=ihc!I1P=!2GBGbAcp}M k#LB_KkNAI^{7R&8aD*=HpNoivjT6X%NI@YgCx-a{0LPp=$N&HU literal 0 HcmV?d00001 diff --git a/Architecture/images/JsRealB-classes.graffle b/Architecture/images/JsRealB-classes.graffle new file mode 100644 index 0000000000000000000000000000000000000000..e3f94a7551df9677551e90eb0b698681494bad29 GIT binary patch literal 3395 zcmV-J4ZQLniwFP!000030PS5{SK~Mmer|q+mzSk?f!L03VHoCw01dMlU`S|odb4Mb zVk?Qd9m{Pi1iH8X`! z_oUYsAdg1l@N`{RpD^a`G#c~yd>e79ZIezpq2D<7sEa*z+l9=wfMMHW);c^U%snLz z+_i|w_SW9)e!{nVZIh8}+(oz8J8>+0v)kZzA(1!?kFmEW?lzXEOBQ%GF%g3---kIz zOvv*PKY6q3GY?*Q4?j^>OC2=+VrZ;l?t3ADN%{BOMDK=T3+jkuBbRLB=WkWm+W0*RSHHAb#5v zzUm5`8M5*1TS{C`-?5ROXYEm&#LvvIoE*gT%QBUd#T%0K*sYCY%B93%B4kNF#i@zp zF#W(o^H{7{u+y`oI8dHZK`hVWlduGR{DIQx3hkkToNMHtd1OrDmar_!pd^zO8FTc= z7o4MyN<7Cy?b+06+hpwIWRmhS1=KwknUF<9?_p%`HKFMRCreVe;BEN;v79)vD7CgE zX-gIbS=>>z9Yq)ZF2XM-9nXY%S^jskTcL|wWKVIH1mXxk3;d8} zJ0dpj-?}*#1R9a04cg%WHD^=ou&k;^WhdtfZ_$2zjwS`FooZ?VbD@I1N$RL9>YIYr)VQ9?s=O&kvY6J>5)l*HIzcWjQr9?*Y;&m3dm2AH0JjHC5#d*dBF!0z&8X(6f!9UX-OHd30lbRIqBu$sX3x76*YfTi_ zz79szVQgp*M&e-P&x!93M&<;0K4zkDjO}a80NH=~29zeXsRyJ#4LoegsyY~Z7(4uA zXwNVl1FF9b@QsV0&EN-FR)T{e@G3#>TkY#ZL zIpY}`;|;i^4n7-gU`X}fW}9SKub_^+sO@uPrK>l9CUIMgKma#H3EhBB(=HA?&AdAkE zZ=c1fta)2z-=^DYk>Q-ro7YO)^HKst`GehM<7ILl!Mb>i%-a;>azGNJ5+ZhK{$i>4 z*^1`bJhbs>YPK^7Xj7U{Von#16>6n@PNmfztF$m&xl?InU96S%)hMm1Jw$2c2PJ(1PwQBz$Qtey08cs{~h?lUWz&{<}GnsZYh$ax8mQX!0&2`p4I%^K%;Qf@l2+- ztV+^ac*P(OA1Vjf#PE)5BQ~PmR9tZcyR}bk>*dJ(1SNwQzv7i&4Y*R(R)y!gbh(DB8m_7aSB&=P%rjr2 z!IWF7dFK)9xMXs^bXK~2nyP%PRBob_qd_Q5qfBx-b34>=u*vdk5`P@_@{19Li)UKV ziuZ45?BIJ>&j2M9S<;%iC`(OM)s3dA19nIpJ6e(?YKo}oO;s|=me;cUN-@7$#-F8> z1LVrcBrB`3OU9;M{}%3Ry!cb`;suW~9$~N;MwQW_SsN_1!BRBCF#AtihYD+xZTUi%c*K85!v z`)WRg=MxY4IQU8ps@vZ*spGRMIIjdKuyiQoi^N9dP@wi*sT~Td=TNAuJz@fz}vwZ)JU6`IG4XmoKJo=hI_hP<>6kv zs$CEFsyE+s>sAAMX(D_8XL z_AuYu z`lzR~pXC$z#8l8mWu~$Nn2`)Q!kOxQ9Iv-(oVgcg>VZ`KX+puro|y5SpEq3icZ#Nb zLrb>tc5@7W;n(yGjf2mr&fMTbDu;hhRRu(BNf98nD)-f=A=ZHSV*s&ULCmZmR%OqT z$o@<183K&F;q$beq`3$w0H8wRwJU+)5f5&PM04{_ee#V~k+ z^G1pDh58`xhbQc)Qs}(VG}Kq(yb%=N_jcZBs!w#@$YxOFypf6D$n`B5$RHh-u{WV} zpOfUmD`r}4NbMlk@6#3N(-98e&4`8lE;T=4D;rHO6__GH{hs(_n2*<&c}x(O;v9{! zpNqDa54LwQ1;P%PUJ0|{j=+Zhz}W56bkx8o$VwR1g2(do?~U8XUpx;B*)Wkjov$qA zDLcsiJi~&Nr$2|wRS~CW6BGNZ$?=}x`MueewKymhI%DN+uI-R%A^>EGAOWdKJd^%L zoP$Jo#AUB##NAd*+r!X<22;ox@>H0&fZh(oJaoojo#kY)D9Z`s@VJvad`=fT9mZT7`F{?-2DN)quu_w5fS$F!~dzW@74?{LzdoL!2lG`#xNHpd;f zw$3i450l~Xd%F$kokO+Xmw)~I;p$XupIjZbd!K>k=*FIR-rX&J7mwIeiihLLUHPBG znA%H)vMR_vHx7QyT?g|-Z>9HWD|jex78jUDmBs~a^)=MX1s~2l zXT|iX`yAP)F*T@&GY4~>E-?l!U=Vla*thp9`vsk^8eADjSBk70;BlX@JT7&RgRhaF zvK~T~DU3A(Irz9PG`hkN3FIXWyLhgzDe{dUrErN? zRu#YmT`!1$&du~xG_p8)T9kerC9LtpmseQ4UaL`?~HBI zY-UWEMW1AyAPv$bjdb$^y4@bP|MeZ; zv-kPF@B07Cc-FIGK5O0g7-QaJ&bbDuoQN1LBONmgY1`_->Q?UIo1wN27#08nz)Jra z3=a>0UfRgg#NHIZdbdjfKrd!yZf|6J_i3(YZzN)5U}b0o;Nyd_v$r+Uvw(31PEnr; z!>vYgTUSARu?fzSY0Q4fTb0{@8|a(mqqSyfYh)z~4BZw9H#&+uAi_QIdkAF|)8Y^UCc@_^WcAmun;TK?Kf{ z8hcAIWHO9g*^lZfo?zrwOwkp?&zxzYte=^~Ya=l>IFccb7%47EXwe>>aDf*{2;nf) ze;IcW<}qPt88-K0Vlj3-n(Um(L3ekw@v~WXWqH&_u%c{|1SaHI)E6(}+R)7);+XPy ze3NmGnOQqrzMHL5(S4?&JhW@fMNc&st|*%_!h%E@yg;!wGWWe$#rESeKkHn(4h9qC zU>qN_6wn+{R!N(PVwW$2b=Q~vmpZ%J?sFb|a|FBiVW-vTruN*BORig&Q1aAV$h=4iP8DU-yJhvIAlx*P?n%!Q-U zZ7&#Cwb+{;tuXnqm+#&^m58KJye{6eL>;{N>@2tBkbRJk$ibKzy1*GMowZhFsn)+w ziyNmr`YDub(gt)8b(@1Cc@$SHZtPQwrdqeLac2$MHB;#&{qSr#R>t9jhwWVqFsAx*g;+)HSfAGQYgJLFr4?@nn5dEk7eS~d;$a`(s7bL z!?xZ%Y`s4--DSoTSdG9Ns1uy)#Udh^;f(mk2Bwtxu&RrlP6@bSPxF}dt5ezX^*q;5 zd=&)m7IZBt<}%$w%cn_+nDWSI+bD2HBEz#%i{!ReR4Eys200VnmHM)tdb4vrM#_#D zeZ^pua!JaHUh%e%Kq=*d!nEtD-IMEE4;=X9GIzRMdSVbsHq>TeHdL4OWYI%Vm>lXv za+5?t)lqY*u@AMJl_&GZDW+mNd2LUbPd1ZVNo5qx#Ru%ep=V^5N;Y6|skryRwKo_E zO^~n&ZZ+1ve7vZsN^{e7AU1O$le%TL10J;9=2yI4?;Z_;JtVy@Fb=*+JJ!z^Kl32e zabHgsyJUZix89?imi`7grf9k`VY?BRFQQ#O)%WS^R`IU#Lm&`#GYU_+2q+{HA6Usk zVSzPw{$5R}~(q&+__|I$O>)Y(#SuRP31_trn%=*CW;Biy_o*xzt7l zc=A9{Xa}K6fqUjrl)K|c=4)ml+^RNzUJB%s5);Mm8J*JGGKnDuT0dD=3N`+)^ipZX zmInhFdI6uhg-y00<51#iXNquXN_fmKhR)1cPJN?Oj#pBBWBVO7=@I~q2!fDuX`5nA zO6^$pV6%DeB`}^_BcAxvj23)_*?6RE#{n<+tAjm>{c|AZb#ep-D|`wWqg~K^=!7r@ zJH50mYVL{|JY<>#*!mQ!c#{M&G>U_?*XpbcH@z|~VG-`aXlf&eU2leRkZNUJ-Me2o zV0c*u9A-Z=-!>1sxfLs!lq9@3_qeP?7p>B2O8T@@Xo}Q6 zuaCgX3+f@n|=+6qTaw2-EO2is#=a19Ax2TxeYP2T_A5^S9x#-utV%?20fD??!e}#LRG;q-& z>QBv@Bl;##3+`Ak90>hj#D~=oo3ulpgm47D}|@ zp}RUa7q!O1&~P`ovAk;`IxR9sq^$_A?Lo7bpRj32J~J~_=@xc_cVZF}NT@2}HkYx} z=1~raNQ%$JjCiHoSa;UWWP+l|JdfsM)gai#3rcd7odFlEY(troN9(xhr@?%v$9d^G zUZ>&ioHWeI{~-XaP^4ef<9^h-(Op)to+$H%F-jVLjF=@IWgzIm-gCH(H}3PR%1s+ov8C8Lxb4lCZQ zJW~B<<=_Te**IzypE}7hBzKpgS{j~P%eMmUy_HUQGhl^v6fGK;5v9aE!q_aVkyZhf*)Xc|{ZHodpU!n*-#@07iEk=T-Pk&4T=iBDgqSS_s z2*HvL9M<~zf)931o|@NVlK~+lglvb?PhofgMn^E6NVchBw7&nvap0iuQI3pxSOVJS z87Qc2lo!`UlP=7FWUjt4G&9IeDi{f{rj>@41J#7&rnk4$DO3| zG=wTd=Oj=TLDUnFgcMhFIuiX;gE4WKpp;ha3vsczRcw)0h}4F$(I<%ml-1$yrD20& z9AsDD9%Tn&_eR0P)T^UTFlGb@JJTX8;V6=h+m%~tdLvIsvGYrIB&){4*wB+}GYj;d zcCRzWCXc9H28}4w4N}@XiWRL1$@mbQf-L#q%Jtt4NRoPZR1v>R5ujD7W0 z%&rhU*Errfmn5!Hl#v`lc4!e&<8g7Tzsq%r1L%tm*Ff->lmeV66U9&*Gg`0e3dWB$ z<}CUK-t`VZ`05(AfNF2 zu|5fB6XyRoK~2Ha8u;iLI{y+V@8-tBYfqUhaD#aiG=g)492MnP+81J>{GQBGCXQiz zTbcS3)c}INFDJsU-n|827FsRVxNgN6P6=)?98;`^zKwGn_`PS51we_JCyZd`M<>^yK0L!;@;_1`7)4x5y)2GY; zmOsx|mDPV{WN?28%-zqk02seLmxKi)2Y`j?q20R!ce|OtA7KOB9ea3s2@4JY)Ay5@ z0gMmZ_bo9281DhOL+I{eb^y!wFRTE@Z+CKc0PwvXP5{&Q_U~F@{(e3qGYs?hUtnYf zF#mZqBY^4q^>>Xj|M`Uh!1Vnzb^z1Y#_pK-lZ=Pw{DX~e$=6-$4|n|49R5ItUeQ6{ z{=q;V=mF5Hm>J$>YK-h00Q$#9W+tZgcaO?`_ndczVQX!5pRvK%+dABt(hsDue7iTr zCwg|z0W6$fe@Mv8-cHWQR@lnI+RF0Y>h7BSMe28d+uu{aogqeGARwTYH^;ITa0CGY zdQG0dpb&7F47&f{+DP*Po@W9A{;RV;u=wEN?96|--h(0k#5T(}7yq}|W@2Fc&i0+r z{SMizjDHW=u=IZ)+57mIf=9ms?*Wv1pg6w=$_Kyy2|MQB@s$4ryKfx*r;hSp!R`T+ zf5q-0PX2@)<2UF3x9sl6D03GEf6MN^arB>J2Wj>9*`4kJ0j5yXuMF=2l?U)R{&3od zj^!utn107;89DC|`xc^q*J;1@ko5m4cz;`jz5xa02l^Fo4~RSf$MOeo554eDz%l+7 za6j~IziV}WQ`h!ivbuXz{?+OpWXsRseGB2g?Xq`5>vvq1?QiNTpk@C?m;ES7Sc`%gk;*Qu-pJo|qa;QxKv zP8Jk&@bRyxeW2`~MkZF)?}6uDbpJ%{o%sKsiR$~{{TrH^?QiPt{!XdzzmK+GBn0lD zppBn@#pDA+4@@$D?|bjlm7j?GpURfIl=!!J{F{2-|8@-gH@H4Sfb)9#D+cbNy+@mo z?K=Sv+3-&cF#V3|{!#p}G5j6{|4|?Abr&RoTHl;260G>j{U4c~hJ%9o|5{7k1N=b5 zpQ+=+NW@P>F#k?>^&=6#sY2QRCOz=atI!8T?os0Wu0kJ1ZGHysw^Zm4^8IeG>vw_( z`+wBW|2e?&x2n*8LrC4{M+Uz%P3Aw8DkJls2>+tHW&WM+_D3ak2ib2S{5N&Cj}ZQE zS5gZvbPEoD71bZ8xOV_1#_tO0VZibyr(pW6p7jT(_}ysoH}$Old^CAL#V<*HL(9j{o$X{fB6V5AoZ6oX#olC%ZPb*zJWP?v<8n?3H}bF&w6czJk62VFh^T+(*5i zrj!2|!D3-!`XeT?{o(CDEaqhUHtF}<7J8pD|HB44%^Unm01;wAXIbimXr~DMx*uTw#|9e*RgB-lik^W(;nIc4P1t5aUO+w*%FG7hL z*m`LaMkWIiL60`kp5)9sQr(!Zdqg|H(ico3qC#I$AzIj=2d8ms^kj2Mb$9RLWKCae z($tUHr|_?JRw0;7Rlk0RRQ564j;q(@$o5ghm_uJ~d0*-HDz5++|KfainkPK%DgvgD z!VQ?cDWyjfAm)Jljj+@?C`5V;KQNwp4*>&I_7(K!A%z=HL5fvb0sq$rkZ?lhvNr?s zR`rc(kn5Mh3vM2$LM%>R*R%DIBPt;CFdu-rq?C^S%FhGt_gpYBe3$F2e+℞MJ_( zRu=qw{QNYN@(=S9&sgw^0aG;k?XW6h#U=n1H*0K62CJ=mOjIj{N{GEVePO8aX4>DS zq6Np7KB7DzSTii+G$=v{>ueCnU9jmu<}@Yw^JoR8E=~023UP&)Md$G=L>jL>F1E27 z7L*tJ85}iPx-}#=D|i%0k*sSeWz_VNC8$@4DLfjFJN!_LKIA9C(>&4oLSq|pEYXpJ zv#vCQK&d0LEAnmn}k7X_k#1R1gutcR5^XyG>fO z+oCzhSjjYysA5G}$wyz*H)ncz{2GHuC<6y6-HW#+w1h!Kb2b3#(KeE$k1yfUvyTC> z>BD`P2+HWx4CR|3V56{?FW);k@$-5?qMU(Dh(N6U0{DAC?}2Az`wskrQ2i+;a{LbP zKW7*JFz|7N$ZZTzqR?nINLXP*pW`*(sF)hb$fexHL~6E__T8rpjjhbh!1Pc6+fPl3 zpk5dZ99J*a;>$cE6<6wBQDn0*Jd5PmLNJ>>f$wODWf2ds;~fC*a2e%+49GsV@nU=t zy~-`1-Pk-|;{m!sm3^tg1SfQA1<=a2zm@b8JR`eZxWu`*kzP23O`i`J@miESy>x@T z+=94a-3Q(#s}K4s>JMmsMg9A%+{4V+PpGr~4(dOe`~9rkKa6@3qvb0(MDR$8hyzip z36`Nt_@e;WGcaqA_02#q(aqeDHt}-sSyz3Nk~#})aS%+eDr&cS#o7~+k=N@CGL-`y zJiRp%r_TMo>RU92Tf=ygJq(T2_2W}>hjL+}7dBIT^OXZ88XY&9hU%y46K8IFZYi28 z3O6jalz2B{#W}*n*o#nSr@f{9iL6mJ%L>?wlg9nn-S2HEL#@rrjYADTy^j&&s8TBz zW3tqgB*vX7R3pY>r^`kPvluUo48e)}2-V5s8KAlAhOkkgQGAI=q`2=bV4nD>)NB@;t0Q_R>O4>%zsQe=3g4ZSJ+Zk5ER4oT(=g z69@xE{y(xMjE%MGV-TO2$k3CZh`F{;<74U$n(H}8n$keDFAQQ8nhBHiSLb=4=bkbq zmhU6<4-+^)(a8R7HS52pAOFkF!wBDcCn5xyXhIAH8$cm-^#;+p+Q1V-OI6-Y6D3w2 zAi8yX=r=EzAl%|)Du4)qyiSIUCaz1&DItYWoCfKKFkjH5ikDntAQxcVD|)ptX_pLY zomXM!xnWLPvj^f*?8ei~^1|rdZKK7ro?Et~H2>JfgE+*Y>&T(#d8Hd$zbF`t8>`zB zpmM9_rFp=$-Q~H-(Um@h$cHOT6?Ya0p2l~8caWs}DU({5>E4urJNjKYyi*31&^~jtIuj^teedq#zo+du=nr&;dn=2}X^{aHDZf zs341deqVi8t%tU=_Z=2*??;J+MyPG`&SReW$wQurQYWkFs%1#MWZaN?5_r)0(h2gt zWVaaO^E{Rl8JE{$t|m%V*Pm6D9qian5^Jf#BO8gh1=Zavv^*G3E{d-yMw-;z(JkYZ zb{J$-46LyIt9pc-TuL$49oXmA{Y%;BJBtSltlVrASXx>5bvowkQvGrsk7Hc=AH1yL z(@yJ{+p?)o?tRsWxz&E<5gT%zGf829x@dxR_@q?6gQ8`SX)Q@VGeq7e&8UyPT?{J| zioZABDkzjm49Wd9<2)*kQ3%l$jX?t?TMwq_nOet7Me`WOp#Ac{tD(b_(E2_4Ti21s ztG)Tgt6MddPtw{dpKgk&tEzRU<|IvBr3&XOHT1S8i)eIrj4dqXP1TY#Ea>bAuVb6U zz#D+zIUpXS)4vW3Jy_MfrLi!5Uq1UVVEvQzas2-w;GYWt58(bB0{)oA_#v5N|DEpi z$DHDRHN`(10;Wr$TNx0=^t@mMeO}Zl6Q9lr*6)L)3M4kE@dDR8PEm<}bsJ=lFp%~n z-%f@Ym~25ygV3nb@df`nuPKsN^HtPq08|G z5t^1iZP1E~@60O=F8+BP~hh*hSzla-wUNbkQuF zgge+`zw}|ZjltUpQ7ff0%!MRJTY*JiTe*a$+%%{ylc_ZA^=yebw`!Hq=bq8HK((d< zcg<6B)f0zpYW$McQkj>xN@ks>-1Rr|+zr?@w}lM`7nTv|FJ4uwL!4I}fz@Q^&c9Z+ zLRPSverlC*Yx#t7GCMFgt_Yg4I)Nzb(}_n&%0DIp1y^7KW(74oMg?Alc$`&! z+~}v0x@Q+CtZTXu{-}+mf{W7KRl*=uvVeJ&aaJ6wS2IpIcfjZaJo2Hz?1{38#`??I zVwSOWn<}o(a+!%)Nu#Mjl>)n6DJ(vx;8&^uBK>9nAz~yGjj{+0CJ7jkf?s=30Qf5( z0g;{(Riskg2*iNLSm@M5=y1p&NR+MmqHW%SLI5Ho)xrQ(hR0AMS#ZH1Tvg8i_p zkG87B&N~rmKE6Jx<%|uK zpT195y^jn{hq~$OILomn#t}xkN(lY(WKoRGkLZk+jgZk3sjpFt`){H9rkCRON{RKZnQl^yO6npkSD?b!gW=3pQPQ z``BiMztnTz1Ha+X8wJQUPTe7{yfRZi#>Y~+c`&eg@7fSMW3s74a|XcNG^JwmEkYZJ zO9^A^CC0QBO6KQmlb^dvDitK8pxY9@lw1*F;M0*Ok~EA0omP(y;k_{G#{c_}2T$+`WuUFL+-N$nyS`;&00p6vXdd6#m7_qW`iEA?3BxQ^hHC|G|3p z`XOW@0O=9-3uwSc?#F0g@_`bbav**_WR4=>VyH-z%7#yyfW`fZ3`9|3UwP|KKp!B= zbu`P1h_23tJcr&ZVm+KoyzW$+pIWb;m@?UOo2UhnyYdEWu~!B5WJy;=-Q8-|L`Lat zI|ac+1cp}yZdx=p1`|IM0U5oj=S@g>`?#b0WS7pg3}Y1}MzOpdi|H1u=O~tv$&Zlo%u=b8g*TFd>q+II=0#X)(4i< zkUF`!MAF5~5U_O3c+v%v%$JZx^-m=dfmTl`Mn=w(rGXew6Lk94$Cp_W(c#;6N2~$%puU=GswhOK{|{!Q0#BcED-R>8L-m zU#59m^)&i%o+k9}UMh3vVDNhpOQ10uiLU14=17V3^})f%4H{mbBHk`Hahmmax6&l1 zHDP@5{j4PaIR@G%(6r8%$4fPW&Jf1OV{Fj_lZ_k_%RS{es;Pqxkee^3+EfeSaZCC#A0%AEHx zZw5h*fV6)D!{SB9079et2-lO@8gvc-g7$5+p+ zfkwSv41vjbvspuEf~hn;vWA886c>Q;YnEaFp7Sz;^4>>8%Mi?uK+i%*5E@6sQHOF7 z7L?;a1#K4&j6jSMI3FT=i%In=KV4Xk_lVdYyB138)x{ggApi@+HL#lxQas3r-lIvN zD$l7BZd@qwmfi&sXS8HUjHa1I$@l1d@YO9Ci#Yp0G`>15(NF?iP@uzNs!%vzM1&$# zNq~_EpGOj9f#iuMM!;v`)Pz2cv{?a#@K4u^$3*YITJ~29S=3k78`qa)7>hTESC+3o%_B!{@)*ma)Q6(?rcZ6m`N(!ZIQ`QaF)hLN81)bE}=EjBZY{FW?wRV4xsmWx? zS`1c=FcDJcxz+k;k?f1}2dX*LJ#U0&yM6tagbgqrxE}cP;RGFxNRN@(t z78x&DJz;b=m!Y^Vrka4ZY%xh1K!+3|ieD~A6EkA<1N0O11NC1mv9`;Teu(mlsz#R06WA#ENSaNEEi{tt z^6`DelM1eBqiF^_arUgsk?4)~BZANMN6<#3MjERWtGKJ!tK~fk5G@S4XUqy%*&)#( zbs^!0ENeA`%Y!p)@65DsKTyV=Q(02Ij3tUSjs=bl&zDxR8bcjR$+yUt9c6e%_Dt{D z)U(Smx`NQb+(D<*!4w^q+m$Q-&63){7w<2g9k*`sZboA#VmDx8VJl(Bv2?IvC0ZtS zC$1*0vvgLNs>4=-sjsT9S86lFChYb-H6|?&=1eat-pQpM=F6Hb;4LzETdr!7DN{ax zq7_A_!7f;>S*_?KBr8R)O0V-yelML*KCLJ%t5LjB!=tBZ2r#W1ESS{%Ha#f4Q7=_5 zbJ2h}KeAw$DpNg^yMx1^$|mRw-?9c-NnnaZltgIv6UE8Vxu?3dgB62t&(}=JSPEF{ zIx|W>si_r;jlbb+<>`8v>5_C#4a*y>8k~YYi>^bnL!(H$MMI!QsRpiUQL$Na(K_9h z_*~1tt<&$>vO)Pk&g@!cQ6BBQW8;n+ccNCwEP9Znuwy=Qy5d|Z5ie4%_O4UP>3ZuDn**C5x97qf>G`|B4Im$G0SV1>}1VY0x)z?32R zV40wi!5zR_n}M6_yb0((>X2xTqJs!s2|N1oK(oSWp22oGOi4`HEPGdI%tg7o7kH&6UK_ zHt+P~td#%q_7cqUE*-Px>+CKP#Iv5jRTfk?%uVJ6cIxvFyd`KJ319XEkPZaxiIdyz#qgX5D=bU*tPp ztT|I7b5rcs#Y=E7luogfnj$G&d^$M!uv$*R*_ZtwX3rNPe-Nc0dE( zyxknld}r3Uyy)3X9Fg|$v3~DT(2^|ar>L!YH8+*>*}fB>o%-yP>`SKwM<}OHvm3RC zstNjP+EYWt3tC01eFqr_)paV{4a#~NHo6FA;fCQAOmEBTCEq<0AIsg$+VsK>Ph6|t zbgkY=neLpKXq>n37y%9iZHMH;N5%c%(RC{KyhzZZUGLLkVe8;l#%67!iHDAd$j;+0 zk%QvC;@O=o;SOWmqZ90J*<;vRLZdoLmu)(&t{0AlT~P`)Vl#7aY^x9uUFhV?JqU9c{BBwS4wdOCdHgu z+-@mu^*esoq2u^%>jVPPRXJ0nBDgNRiC zXx+DQe~jZ7IsVl)num8$hs(lW(WLglNoGXX`0B&c{qTk(qD z0(yffP#Gn-a^^{`1WNUmv0@TckG&%scfX-=a>6WGx@`7B5<1vM!5h8~Z>TCNHu{t7 z?Di;0RsN?=GTNC$o%WC#;yF!v>-N!vWIf;+c zO>(F9iJ8LNr2Wrg3#*dZ&>dl0@mE$J_;cB)QoGwG8aoCWCoB0_m_xOGYs#PoVHDX& zM$i1#{YA9m00cZZFG8$9`8hQx*S#h@W5+cGUgYa?tdvBVcGzjajq@x zd3U0ReLiWUoK*UgA7J^_0fdMtWDL3Fv&5d;0@}2d6W7q?lMna z6WTm&IbUyUJ|_>z71KT`HEsb=Yr~Q7P_iLs$(!~Usn>1lM6P1|${=$PFS{yWKcH_1 z1Yx|MTm$TXFu-u3ZKI=05=5of$Kdxp?lCQ-&lSE~Nt;F%bvjy@Y0$JFf?sr*N#oCN z`*~`3?gf%_w^a=132)Q$T7Cr}zy3Z0CAWANcVOqcno;&l-Pt2&*egSg0qlU_M5KeR zPSrlqCVQ^mTFJRjK7c~Ns_Oy>A-0se4i(3cT%k;UA9rB zU!mJA6q8c${UWVbSw6Q~qZjrqt7&0*z7x zk~)&}k}6pRA0H`XKmS;ElyX#mRCC1oLPwyMMr&hI!e$$%4${5Db=-7^!Pu`H74fiT zx(`N*;ENN4LDD&M`j|FoN}Y!R?P@@oqKg=ovLp2%C5q%bTLI2Oa}|i8i&%LhdND`K z5<>&t0Z(6#D3jnE;^HNqQWb}i^;Rjoy&N6Q)^R`9NeN!~)T!wl_;*Mujc7^+AGo!W zA-J9p>IV-H*%ELi6OiZM3`}W8bFeB{Eya|y(GAmgsI$hSK+5?pTO4zADJ5cc!Q~ zk_~%Qhetn*PX6nZ-b1{4NY)t{zpsgTD82QU=yxCOevE#N0r1ZW@8UZ*; zm^aa!-7s|nBhzEFS;F=9lyy>7XtUWBi5k%r&#}v<#?S@JqoWP`wn+x0Kf=0Ec`pSQ zG)M@3sHcVU{`jJK9P&~jPfposi->}+!dZ~wNVNJ3ceEjy+Os61!Iy{E^XFFUX;>Lv zl|uE!muMNJt!#GPZx22V8}u}Boo^6gXUSvJyjA9n>K{OM7osk{Zq(q9kY!LI-!PhY2;tW(OHjQ95{&Ejgaqm;qiL1RFVqiX=8RQ5 zda(TsCoD}ttPqkjxbw?WfBMq}M|im=*(jV(qfbSTh@Ov2CJx{UyVm&Eh`X@A&tjJ= zKb-M$=*l0!>u`XpY*e6W15X9hmWK`GToCts$6Dzt4LM&tGmN`$Aaauuy7>~!ncX_y z5I-5xkDyV_EUWe`MKSiOe4*OwwnMcKcVk;iu?X{p1b6d%@qWc;tANJ}EZiw~=Wcka z^+NO7Mo5a{%L0XiHfk5)p>sCn9wm$=qkQNx*?CGzc7S@d8VBQF)|A=QXv<4^6hL~d zQC*&btJ*chOhl(&%2A#CV$t7sTaphP-zLE_>3l%DO7kOp4)=vDm9gZ${$6G6ZXbm$ z>{-8<%xIXZSGRYzD5eQ#>)`3dIs|`Gf6y_{TmP}7e3Odog6qYKHZQ^z`g?rU z_FDW&Yc~q7G!UFK4RNav>d#W^M~rL~uw^R7b7x+lYbk-nZVn8P+6xNzf5=@6)Fz0N z@i>2jVG*0+db2r{Jwj^WGHM`-aaNF^fyKqVTe?Wl>fxu-y64LecS~1K>qg~9ni9ts zM;A?`6+tJdBQ-BcAf@yEqOL!}^@M~8!;bU-ePpbtq!bF?uu54xzk{Ol2vxK?a?YlhQp=Zy6TeJu%;{r==^m&P=D|wJLqATYUc93S;oBn z92^(4#a{G8UV!f;s+3j2t{LN@)_k)F1Aa&Z@+Z7xXc=$>=ud91U)AX*H79=Ve{{G= zbwRbt#!uKlj#@A#o2Xu+Pwm>WNFEEt=cXxvv$^tKVaTDKQ7x#O){@P|CaTRzahtd{ z!LGr-!9s;+z}?UER>%3&ZO^6?TZ9^YxN8}o-Op(ibPqYjRmdW~zl#6hyn(n(()E<% zv>}~hPKUo*o&5_wj&rc-VZZWL+NnlSKf;2?tIysy1aHz_D*aW}Jw&31xW>T#eUkML zz4kAn?mmqD5Y~QN7X5Vz(|z4UyPqo|-f2YuJ15ga=|YFQ%64~ZPs+^D?ylhB*WqQY z9||LK{x~b~wM}6?dp&b2ldnY??f$67sBC0wXJ%yypl76G`QiG9a)$TMazBdw_4<^`|emEEA&uzAcH;?YWvprPX`SZw+TdWUD+<*N4 z>-l$g^3c}(9dU4QKD2S)&eyh>@AlkZbAR7|wtm0oU+BAs=&$hq3F22!W%MlW2Cx6$ zP&d~zxuf}Ran(IJLU#oQVP+s`X<~j~ zUXxzX&fvasBKzH3+q{bE&c_=e)r-fy`sI5h4TFss^3b2vE5a+ zyJOS&TRlfshPz|;zkZi~7%>4jzrHW|XT`{e9e+ILw~CRR-&RO}{d#ww3~YBd`oA2O zZ&!!4S5&IKIdxfCna#3DwMfj8NNV`_QANlsJ^cvWLefmiqBPb|fkxWPTU8JO0vH@- z`T0}C1ih#Bhy?7k@DTF;y$c#^`3s^*4#~|Eri+_J8A39<9x{^IT4BMJ#m~u1u1y+G zZ%(RjulL+e27*>6oV;Mhfgc^)fz-naT-9hp0tW5r;E%*wF95ZJ_9sOpqOIH7KraTp z=bmGTx0a~`#a>OPDiNWF3s zSAzXWm&4UYclGh5HFj$isaLz!@D-go!N(VI+SU3bG%@e?wB}f&(sbkVK)p*}sDd$l z2BwsI(+p{6otD4Sq?;cRRS|NW1PIceOwTuXK zPKI4mZKrGWadW7CA1GFaT_dxIBfPo?JqKiAUFnT0TL83^IBan^S3OR<-|JnB6w*uK z(M-s~;FP>^7uAR})Nx0X@XCHQLyJUgBFb0FjdI(bmE#V5>clL(rpKZ<2O`hu?Sldi zGy07=5!6O9Xh~pe+-#JS%EzBIUzEFhgtPX#ggQJE3)ptc=b~*@+o|nDA!^mf@qQ%$ zZXz+dVb3dd1EdrovnBvj7sN*GZ|4EyGz(LC)C! zaWsAK%s~ITvE8{QS=>Ojts`Ba)WTABsY2*eS|!OL8AmVd68iAHOr&rGfPzO8NaPXa2|v6%%tXEm9h*oFYFapFGFkg#*~K)$KT$TNB~HKD{ex$yk0 zHCT_v>4eJDiBPlWy`~ytX#5|QedW|Dhm`A8Ej2Y9gly}Flv5u5*1yv>r)DnK*E7HZ za>cCJMzSuSX>N(}0teW_tZFr{;t;P-P6*;di~E^Y6q2Y#AkalPpCK$PP^tz)EIpYN zH(c-}jDp-lgzfgM_VRaHv@*4-YT5gu1)LUTHPquK_K_hRa=dj<*C`8w)|iqn4H?~H zNaT#BjO##Qg`47)JBK6(vN%oTs|e7f{VC|WfT%je?-rTdj)DuQX~67Yy_w+S+JjYWnt%mrZ1=<2i)Y_!_0GpN9iHa|1p5!NTo zBZ=N7*&7j#bcoa_wF-=9!{Pd(2FKnEKM5WlT(ia)SO~vGFMc@%UET70pYo+I1b<3Q zWbCNM5&!2~y`Y4Y$jkr(wyFu>I_S_sj&5_Nw4fM`(A^(lj4J%B%kpbL} zb;j zJVwIxWk;Oww}u~B4j^4JAa^k&$|EmF)I(5{b{BO7w79JRW$=i=H%r(?X*T&oqL5~O z8XbG;sqQ-{GbxCNaW4PSkt@`3gw@_)Me4%lh38F>gx(rMZ~T}vfBCDaezLOYse(yP zb9z^HS5LRtYpWAnZkp1^Y!WArQ)6(~vowLLUoA^8>6b>LIwPkF7uEUiwwIvfM22$Y z_wQpr+e73*z*yksfb#&LFPQ1EC=#CvQ| z15+d2BcbY-17)bhLB(y}JQ@aw-h5l^2&*R!L<|xqY7b_Csl>@9J46-(tNSrNnXj)# zS5roZCD)3De0WmwOeR%n&anLM01>3ydxfr9HEYBsNSO2`fHZ8OU@z>54=$QudFBTqQ`1!@^rZVro0&FO&8oq^3LvPWTIXJ~ zdUUR*O*xfRG?bdv4T3C$|PD) zj!@}MY;a>N(z`M}RH1*%@xk&=_Ipfkm2j zlopQ{)F5Z`)&z_PwiG-kI&zW`x!9kOEQy0f8ms{L=8NQlO~q_@E!1`(VS4QzAXx|Z zKpK&izc-Do)V~RH?@gtJXP$VPF74%ov5*KLH?tS?13d5=4H#vWJ2` zfvWkgHZ;sq@9d&2y`!X6)kY1>&sVfRv~IXC5wUAi0|Kh1l2wF=-T%!eTSN?k7rU(S z$&?hIT5QeXLDkeSBlW}yh~BpOQGxfD9M4?j4(?SeP1nk2$DbmtR{JT7ppitdSvALTzmee^e#67|cy zk%o)Yf^Hot4p=;p&oaO)7U)|AX^p+*@+;_I(7YajlO<>m1(*P)H;7tU`B7RcRa#1J zgD{J6M7jJH69Q^vbl>0TbnX{2!m(emw1#HBM>0gout3F1y=G?o^pX@#$3YaXI)n(X z)tXx05(zVvxu=Al5GrnF(P6od?rPibe3LPz`kG~RClgO_bOLbY78{WV>u5nR_xU7HM>QvTn+D==MyMVYha-iYDnP-|NhM5%B%XQ>c^RSCo9*)TIm6#I0(k5#=Gi zIh5tnEoxBlS!He~smMGI1vqqH{G~Qo=3~xS7m+Dwq2r*UxCwQhPt?jeG9mcU;Twd% zMsqhjtcFZB{Wkq@&cQ`4I5+-1>%ZbKsb|csmCswZU*W1dPxx(d=UxRF-k1 zH0y>bNh}*4A&;FhDSp_cb)6DCzyzSQw(42P%bO$N*Ti~k`+xlS30k*F)a8dBs1%hDhLzJii_LtO|z~N`#3mCLmmc0;d=- z;U$bjzc|`9Ji#M%z(HxfhCcV2!Ek$r2#ZI@J9`blRJ2$@v^~QB>5uR`rP|@M z#zQ#UdBsn~nX-c?*4JHlwd=sP*;MjhS6oj-i^wYTu*EIwNcEV#Fx`tZXmr(e42xaK z`6BxT>88sIbabar$qE;9?qg%uNVCWJPW3tl8trYA$6=*GRxq0Z0f7jf%9}7L`OBO$ z9o z@Q;|dE=Kd)c~bG{v_);tts2*KR&IrgJklN~gt@$&&Dc8IpII#5j$~eMbJ6W|%~U~x zg+y_aB^+hzp%2H6Zf5`+rP}O>}6(>H01Me@+DjjbkVv0eqrqmGR;rmWE zd>?~O+90(Zg#!CdA~K^S)R+*K;5n02$)iIv7NN`)>fzTB7K z9M+a)oNH_Xg(U4w#3`7@+TCN+g{I~bBw^#eZz4<87a#SEj`0%ZlY&Qj-uo3SeGu-a z(d0hRa_rj#*yxa_AyuCz#R&p4gF6;fBiY71Q8ELdiUA43&1BDzg?*+dL&`e04xD*? z!8x`$40b+OuP>UtW}Ax;f#Y)he>gh_=t{PAQOCBej%}x7+qTuQ)v;|S9ox2Tr(>&Q z^QHGb`|fk!J@?-8-biZI%2ds&^{NxM8Df2eNs7YXtf|hQr(R5W=OqU$oEQrRw=7b= zHXJrOTw~O^Xn5;L99vsAsVehKQ9+wXNhumHlNCI!1xBwuTxV$Eau6<4L6s5}r2y^C z_%RuVR_*A#>F_jA#7ZqS^g9n#CRByN9_vJSh?B7>APruV?n*H_xHo8(xJevGs1loV zGpJk=V^W)>&l}RKTc@8bI2j%YxT>us71hh~_N>TlYHZFg+ubsi_qN?-jP>97|OFe(@7OS4>-m~i|_ zvv-gpt-?`J1Z(%qF4$17qHCG*?b}=v=0S>Vyi4j7b@uY)Pi7{u0u!b-{ysTE`zAV{ zLibAdk~EbvWa3F9F4K?+3ArP4%G7%d6*4j>@+At2f)#P~1sAeZoJrig@qnqER5MX7 zI}>tIY|VhA9kqF-`rw&rT1&FARlqx9Z0j;S*r2SsUCVwoh%g`xSQO;zX9E_F{)$fb zn-WUh3_qw-65pLcG@CeIb`*z3ZO=?zfpYwTIV$fKvz5DSIyEFU)tgfu<6}2SWS|=t zWRek5NLSTRUcaLGZmqtr&|u_u1=R`R7V<7-sjh<5t#~dDB z!j1u=6C#kSoYt|$Pww;PxRdHyh&UriJ*G=Cgip8i!BFd0uO8x+17nqkQ!)J%@RRzL zCFNP3bD7&t^Y>`7zwWKK`R`XQpITUeNTH@Ce9sJZQI}2)bnR*8<51gSNdbZiRp zz}!4vk;!K3>g@Y9_zvBQ(aljdgtz#(Mm-aYver;f-inHZR2Dm&!A>|IvDWPl!;r9& zuiR!ZXt6&ND~u7z{B1c%B3y*|M)YOp$BXQB5iF*ciz|{m-EMmeO*$H*HSkdH$o&1m zS>b|WTdzMv4Ml;}GUA+E(7iqSTwtDY_srGHEDUojB^wo+rJ4UIMjfAUos1!Ok!>le zNM6D<#<)p|s3l{nV7|>qF(kqgQhnf;pCB2WWBN~wrjD@)s<33=pmVDETu&kHo@koN z)$7dXuqe|%{60Xk>BP9xIFUo)@qOHEr?Px~c|5?-FQemDK5jr$`*>eL_XTN}E+fZf z=A}_B24Hks31ui{nH6QQO_PQ*?V#c{N*PPJu^ejq)AU$crAR%l;XK|#-r(S&O-6Z% zHOMoz3LsR&EpcTi?Fg}JRs(DNIP8gc;gnL&e)vsORkj^>ii>NLz_OLsAYkHqTYEV~ zrGKQD)j=P8%W=kkl3pJ@d_AA;P(u7*@QM1M`Z!QB6@DbSUwczNo{Kff5ImiM(9&DA zC1ctpn9jH0Ma_!~5KEjw87d)`Xo*bYdm`6ZZcwlYl%zN}Ke%XGqHE4SCHs*c>fD1y zaF6WAF^yesrecSQMiUQ_;BWx7+G#q)oS1?%rN-bgY8cj&qi|x!no6d3T#`ndwFF1rl+o=$dAVBD zh=ih%@xaj@YxqX?`0-i>??6TcNI35x?7LJv*GsLk14fe`(M5Bg@O*O#hJ4&5!vurf z51l!0SaY(SxbM$?OGeERXlPsYMk4n~JARbZIIXUseMuT(Vnx&?myLy!^~_)Gs~eq< z_ACSXuY8hI?2{U%#)m`B(${bIg}+|2=+HMVtcG1*lcq?;*HMiwS^FIJB)2z;$7{8? z_x0DS!G?66}B3UzF55W-A_#xZTjZ6oP>PVO9ncq_ps{%GBo386yy%+lioXYII|ze~K# zR`Cs-0Um}}x1hF|t%K1JsN+$Y(bwl~;d0yDSzyC}!{;2xqABMhRyK9Tj7!Q4+tO>r zzC%4bH@n#8pp`u|HQrySN@YZSttmy>K6#~>o(w5^CL!jrFOGD4Y?;XCF@T*R5Et6} zl;CHxDzfU90RIs5g3#kCUn1RnVa&^2<-UviB~s@3Dtd0v4Ex`6)OoNmmNmeEAZlQo11m_EAwYowePTDaYGg!3FFt{MdpWr zOHZojr1c=Y&lLLC+g(fn*zfo+#|#R-hoB6P#+lJnwjAE-s=HmN7W$->UUipJd59l2 z(=e*rT_CIdP!N@QLbu`pa{=m1X(yWLOl58E&#fxdXE4oUN%!OEj<2&-z&yPlN8X{e zu*T@4hU8N@?Lqcf`_KvDYGR>rA#s5UehT5UL9_nXk_p!2ZE|?w5wF!a5zmlWJrS_G zKD&eYh8>2zKg?UpJ>Qyd3+=YMn{5x9tB0?Q@0_9~b=hen-mv^dU-5U1_md+ebvbF* zxM zzX{-<_~&nK1;z1?B*%ZFzW)jS{iav{0sk03k=@_$?=Q^uH;2#FexJ+l?KdI& zy=VWN`(Leo@9F=5n}5`P9`&zrejnp^+3)TD>E}OY_5alCUmfG$8i|4a-4UGUd8>o4m0r|I;MHOoJ#Ckx|e6#TE$bHc;TQ)yx4 zlEWpNr0(Lyh>vq+qi)ofeqsNrjWL@SV_u)pN@B>>8 z$h@B!v$MszpSl<)7%QO=*+hnJ6M+sZttf;|+REBqX!44~bf?Lp-^$Id@rqCYitJQY zQ~rxL)7oL`(z2W?zKtjw;e<^Yag+HI)(si`&_6PLCX!2PS6Q@k_p zug?ghSstecZ2eXE>}a$3pbs=)+#~XQtLbRe7Dt_Us)YS(;q>#Qc`q?A>;A4ngs`tB zU;2GYT(KCYC04gnI=Jo+)=ze9VpU>BT~yztBsO`kdmHhwzJZ~h2Kev=mLIyu*%LAZ z#2^WJ6d7pSggfGA#N`!}qT&lvfAu?;8K~MeECzw)Bis|>H2Wsz1^WS&cvr>|1-7o> zuhSPSPl6QzrH8`PBrH$Us#sd%;^GJb>u>q&>{YM3bVU9Y5V%q{az`*LtiXYKU!Iwe zB}@b$0cZ~}zi>mJpT?EU9c#-C0BfR0_6G?-8DJKup1Xrbjw1-~$|S^go-1VScC0?= zZkAbfD~)~NOD6dNXO@GH-qRUIqo1u;Sj8_$G3Q_$-e@1+lUVGoh}TC#W*m~;3UI-j zwT9_>a2fzJz?=f6L622!j&o#o*e6Vw2auTXp5QfIqoOw6sVIf!buUT`V}hp!XbJs> zm;4)!2g}Kob7X**9cd3i+X2D{yhH8>cU2S{YZu<#2!m!*ZSIy$$R<4dDR^u9B~!^? zd2GTZUcb%-%(8J*ns30}*WD(m&d2qXy5(eCqMVD2J|;6k*m{lej^^{UR(0de{~u2>WNni^h2TcZWgf;?=6%(e>2y&tzO_pE$Scu^+tv)U<`xsTu@onHh6 z{rQJwzYftIUhG_KIXo(TO@+VI*_gxz$;?4i@>7U`_UjhCqWV?v?HpqxSi+b31r92s zTjZ)tZUm?ArC{_e7*r$&gc##TjVvdhODtj7gOiyU9Ahv$#gOpTyZ=?`n?9SMeZ+iD zt{9$-tq2MlIWv;*rJ_7s1wBi$hJ+KzYH#lT$B7bE!)=D*$DMx9(Yx`gBQG;cLP22^R@a{1jbBS0C6*^@LuVM+_toL}iO3|eF_`GX?lsW- z9^_o$1|}2MxcW-M+U_Meywp>w2OP7c^V22naAvlbQTQBnROB+aaVWNgCbr;oDo>~V z1#r^@n$nhi^)ip_hT^kq?y?BS#t?4HAV=LU(}kD=%sq9MKYp2dnet6zdsN3$0OkjH9DMmwUper;EGP#j=nbZU=K)BP>uW~B83mQQ)KJXS zNal>7F_b56Mz;$7@WFO3502q=wy=y!oMShAXm8enfQ@SjY?%zkYDGOyD@sW!9FeCfJpIuOkrW2Ja%nR!U(5n1mMf#i6ip!rPXC|wuO)CP80l0lK zCYs9&XISo}9=;v@G`oxTzt)!4HhXBJ4lZ_=09-ZzQr}pHucN{J;{jf99O=?R$F5-N zA)9M}mvU8ND&1c}rY!*_q86sdj`Wq##QGp_>BUY}>QO2Ri*j*m9*#SXcw!RVrj4Oj z2NDR$+Ay1MFh+qWp0Aqln%}wIL2nK4ry+Bd?BeoWbnZc*f&?jY_w>56_atxK^<-?9 ztyRKTjF^v{G^G6$2$LbXhZvayq^xNn2W1{Tz;A@?+7g$++13@(PPUf(i%62lP36cr)%A&EfE+JV59XhNZ3 zz!It|30ZYshlMPFyP4&^p*r2g*6fy2j{efIVVUP&c%*a{abL}V*b2>3T6{UljtH8G z(1RHMi2-1B_>iXpNW}Iz+H54c)ipSe_joDl-94cYvEKjCX={Ncl zk?^Y6%O>?5iUhBuu&=0cr1^yGqA>J*(G}Ms+zWDm=O(Mg|c74=NIt{hoReJnrG!+?&S)pa93n4BHmSGkPgxnOixd1 zWJ023$bmWvAa93mTX@(s=C-;c+{TMP`)Y1oFIpVwe{+G4kx)+6wv|`G8gF#evs!2_ z6_ae?L87e!qy7Gvg`b?eRzu);!M4v=7$2MJW> zt*gk^n{LC_6i_dnPTqA(R%pBTXYOUr&mXq(bcIcF%^0?{L@0Q#*?G1jG$^!h4=8XC zJFsFKfXhK7P|0sXD0uc2_9DOY1d`o<4le^_MJ9og z^@=R-I{Hhl`J|CtYd!p!1|b3t;un#b>Xbvw!11pRF<$ZeH|xa#SFID3N& zq5Jt8pHHjM^=fv=o>P)bG&*)qo5nt-jIMMHXlvB+fxz2YduCJxLFW{IAT69U=T12 zm|D~nQiyg?BieA)!Tpc@e7x^kKVhacVXgO`Ovsz~bO7~0FaTx-WyHkG>&VbbgmAop zM)7X3LOa&%<*F^dfUnu7gF`Rb%{FkCKe)qT8tqjFDNCS2ijfqYWF34h0W;SpsT2h( zW+Fl^SELyZvl@nD=Zb~4SpQyvPC}IJsETy`(DL%pWwq5P59O?z8hx#=?2Y6FeEJ;! zh;2dT6xKMMepHo0?vQAGh__vN9r-G}&9Nf4Lb_s}O5UaVUN2B$rsVkpr)n+kQm>ao z`3GewUY@s%mwY^YheGv%$hcd`!ZboW9uj;%RH}SG07M$Oz#*U*=JjoGOmISQLXgru zAt#gzAv4Dv`E9>IT4H9|orOPu@%ZY|1aHky6?`aTA{#+9I8wbzhRj0E1rWGoFQdOo zAzSJM>k30V?q1LLreI}#gpnDnvYFcsmkn3RgempdG|mGJJmSl$j(`v&*Rb+5;#r}^T46dqx`R6gF%`5^G3^1i=- zUD2r~P5i9(7|mpV3cpJc0~6W*9*uc9llNM!Fiq5fc&RT^b_YTNQ3EW&*keKOeL>@e zLG&FYK0Fiuu1BznYIw=Q50G;yaDvuq{t}1h3>{Mt5>4|0!YHs19T&A|_qE|dpYHzM z3z*fbsagNHA#mqK_ZtdtlI=28))37RmuLI#T@^=7^(SLgc;khxPCVMga~)0koZdA5rtY zYgrccFvst>kItm}S`d-U=8XF?kUpl}Rv7m8nq?i@leh=pVs|zHhI7Y*i{2U(w)Zw4ze>v#yWJMTHG` z(5$oUtbMVBY8*uTh?)cwHpXx`?vh}S{^brZaT8B2#fXEvCugLGvqGbfE2p1`6WlN? zcOT6dPT_Qmc)1y8T#r4rn{*MyGE7l%*Hq!k47L)n8dGRIIiwy-`E)BhzgZ&|4X&YKOS`Ya1)wd;L>u;KkOY zYa`HmNu0lt=as;3suwBB-N#^NW4VFw2A zvwnVMpUjeJ!$bpFnB%3<&0pQqb+dlelJ>y$p80RIK!4koPcBsa*+&{GJD@$FpsWuY z6eOUX+uz9ChE9R&Eer6H=*(d|08IwRz>)GpU1VEon4gg?+g}|@rkY{Ck33X3K$QF& z_>R=|0r7E%8($~^{peC(F@cxU4Swwu@!N4C+W@cbz_|MO><)m1u%t>~%8(D$#^b`p zWM(&}&V5}?_<*c)Ir=6NUC7cvpRV4?e!35rx9-U>5Be2R`{lKp#119~xCzQ-gz$>i-Xn~x zBy=%ldyGcP+8vU2{*yKIGwTvhP;I-PdtTi`#-&8*I}?=Vo@i(QxXFlja-B zL-uOdHb}tgFCWy8!z$H&+0G#m)R(8b&5*-^zGTCr_=hX840}Y&%C7Ipp3wRi23O^e z_bgWcT)2-yj(6ZW{y3Lq(1#Q9lQT5(U-J!vuuEYggMwjT=$h-XB5}&*g@X5i296UV z#`T6xtVkPRlvd2b3_y#oPdZE23KmkKLplAu0n`b4SXR_o+-=~5%sKEOn4rK2t`7DN z8|1NNKi+1C3?|iE_j_sw43Kr|?9n}5^Bk)BTNjx`!CHjfXXbhsULyU>K*z zbClH4NK_$L^MzdORgxBW*rE|$M;dXObh&_@m?~B{raTUv;lawUqX*TCKtaKe4D(0G znOf~F(IhN%Q!{d%zW74P`8x6*Hh~^7Cxp#1k{32!U<I2ie2hj!>*L zpn>*MB`yXu&{I=Ij47-rtC;~G$&}9`&=k*W!T7`=wU;vHIVg*eSrs@B>-h-4{fyLa zh?3f*p0I6~iW%uyw1ypXf)NyCQJ_?zS%5HAF;-hv(l0p}rv%I?qPJL!^T)VFJZA@4 zXP6G1&y^zWfAPPA1Lc88i$^kB4sNCHH6NplQ>V-TE2S$fQ4g^|J2qxVe_tl+`??kw z>3aL(%FL>RmaL8N5dK0NLZin(#_$61eSzC452Tqt@2UpAAd`gU3==Icx))fnwpuH% znhLjPZ99#lwgszGZkoclo+nr~j)O(QRGu;sk&;tO2z5XI(FrRH6{kn2?n{_v-`Bdi z3GhrzsL|9S@`LbjT(GYRwOk`A2JjprrT)Mb{*vB-Z2md8J?U}}5jd(7RN6%z6W`3q z*x`jpEcG;okH(LP9cmYGvg6}#pd&&dG~d{De+i?ZOU;l*18OY`De<|*PMF{O5%iXL ze0`T+u!tj8#*R={i`0i=-D%D~k=*0hQ1x?g;G3!kYlgtf1)73dbBX&dbAWzSV=tOr?Qk$Pob{bcB4Tt1-@SC0YIDN-W9RDNWx~5aGCdBhSe#)5YQx=V_bM-4b2BTA z)!>jb&tH**ozZmHO(2cLYc*ho0$FF1)$=i_aw1A7O(%D6)N^~=!RM)eF!}ZoswR4( zCK{9118OmWww@rPCVq3@b&8)1$^w0W$jG_2UFF=K5+x`{?`D~i8IwJrek-i<8n5a& zb-79_76uQ97v+6bz&gVnEi*Jeom~*%bkCOY`T$^YObd_zO-ikw$QPMUEO!ozJQPSo z7s>9REmHoQgXWB6!{PhY`hGC!0m^y4NrmRae4i*#pG-|r>$?Vr%o$2ms6qa)YK!}E zGTFVS=TYy$F*x4`1xQ=Tt(!?iJ?RGOnR_kH|z3xF3Xm*5@YNzRfm5#`Obb=8;IZmYmC%9m7;*8mE~Ec6mPhMKt` zUmI1gYfuXV03MfZYDKErjL zLbAd`GTT03>dL2E@qe*TzVU3UOiM?V({no}!F~f!>Fm-uHeO zk1F7D{(9Swx5i0mdHIemq1$qif6 z1vLIJZOi6^m-+i_5qlX=SzaMzIh%OL!k!f6p6kY*6Q^s-T>j-vI&K?IFh4j(m-sK2 zYL%9_rBXi&)0hU(c*e(^1uO`i+w%x$A7fRmTRLZ7Y6B`0k*En&A+gv8 za62E7V9%r_EJpKO^d+?+M5Rul4pF6RBd8%huCkK z8Q4GUsQrXiyw-65YKg2XHh?bIX_PLRD}8MV^i`GMdz`iHETxi8z6u5M>tsIw+^S$s zw1jO~8?1Aa4{?jAkid<71DM(}DVSf&`ed9@Vtjp05X8|^Mdp^E{z>d{iyK!sdWg;0 zhlCS5A^YQ1Qy(Cw&)BT$0Coy**qH8f6|&&lDL#jjX_~7q1=SU-x)amk#KG849Xvd0 zZE-3o0D~Hc{H& z{B2{I^KK9r>@TyKwjAy1Gn#D(@CmcP`pAF2d?77r3zL0#wkb%gUIZMwm^;Ao8iVia z$zN;k$McE5#ciXG8UQZnY#`oX1r)I8FGz=>6Er|_;KGmY7@6$T#G`EHOLs#dj_KbZ zzyanb(DJ+Ko&-SGXN2AH#l_u$maOFhDu@LsN3Q=vkyAKA%R|dy zQ=cNAuC(=H2?U2+mhin!X`wi?a)x{$=nCTz=;GHc+@~J%r6SKO*`EhHAyIQgJ27Gm z3Pcxee&XCp=)E=>diN}1g-L0 zQiU0tQP>I91Gsz*0e-Ml%g|7;TrNn9$I4YBh@z9f6XyH6~vdi|cUAN<<%|tF*=2|7xzQD(i^zcKT93~Dp4?qMk8^PLm`Ky&5s=JL@EWMeN zC^)2+gcraR2QL#0=yaGZBHbmWj5XRgWgRCuNDnt$lZ?u^3b~he%fxZrD8=B}1Lwpf zh;1}STc7Od{>Y`2HN=K%|F1>_w;3jw8_^(qlvymPsGWdLKM!GtiW?18HpVSj!RZ`i zKXN`SxpzDYR%gkYmZ5YY{qv;#uL|pUcyb-p#!?yzSJ1E*(c&D=viobM@IM8hO@5u| zF*dEGGB-1uAMHW@B&+;InbX;BdbXOWeOhdI;~>KGz#8i;zIZHCZB5+!l_$e1g=8!NXfo$ z4a7CzhS|9Y9Uw0iy*cTwPn|O!*i{kITxa7NXmF7@Dc>%-+W}!Ro>F1LUkw?!V82rXpN2;W)1u2*pyps)#mlOM*&L z)+Lj418Sz|F@qp9Ys6|C;2}Z^yzBu}w>7wdoyB!_fCu#}KNWTfE;J1Ew~@ckpI@B3Ca z&V9oc-KKVzv90aZl*;DJZSa@PHKu^oF))d&OqL=dw{hU2(F4!Rt0hx6PmJiyG#2Ag zZB+5C1=7L@SI4ocMHy?H3??fnSFZ!=F~}I zk=C+i#W^S8v~~S&OGrFN>YHHK-49diUS^w}-x;`ijBVi|Y13Q3;c_W^x_GG$@O1zw zS{nD})s--v>UZYKNuDu18%~?nwsG)qlUuNx<`}v6=q+f%j;sOSdeE;BsgQ_j`DK9q zG~T8`Q~PE-EGQ8;5hMt*;^NL7BVo`E&_UJx-h82^Aq7H&_qjr+P*2Gh=mek<)1a-C z#c1%=TD%YCmM%lOeQbJE=W=C%2L;fhw`zN*W*yAi|G&P=6^zHvpvDI+YrCN&04;c5S^+kVXK-_%8AF<qC#=Z* zBx*7HnK335(=|#OvKg@~0N(JaG4J%QJz*UFnV{LJ=I83!5XB=knR zH$5&f37bw^hk>V?v-}%;3GijmwDx3v-r-JQ=N`DziB{XrHwUVn%#1a0!-m{xbBV1r zjTZDQbC*EsZ_0kGMvGUR4Wku5l-OWZq91TC&d!fSsvz4y@-FUKdmzc2%TZX9CAsXJ z(ax+64{j&J`%8Q1=-8&rXe!F6)H@H6m5ybA1NeAP2B0`U1sOQ1i zY#A3dQL!)|&L(APZJOECB-1f)9;Rp=;L;1p)B5|g@OLVJr5tFmZh#mNdVm}pJt96H zKICru@2~)LfQ|qepSSzApj%iFjKF#TVn7%Ga&YvBIe0mcdK}$g-;)720c3!+K$?MU zVMBTWFbvkgw*uU6Fx;LKAyHo%gP#-Uo)a&QR7uOSIv?PFsp2hGakuKaNp)RkzKt5b zB$C}y$)2fZ%~naVFQRv0zKt@yB%Zz`lB}ExcCEavV!tFF-cn8dQtd3#b<^ppy_L4e zK8#H?*L}S>Rn?iUYA@Dxv+J@~?7Dt?8=ZI?m3&UbZ*4g9C6U&B{idhzu1ovsm-8>A z(!Vm_aIk;+mH$Xz$o$Xh+uv^Ar&H%-;OJ)inat#0rInFW6crSZ{97ueku|U~w{!Yz z{X4hF-(nyX$3HS5{{P6O^#7b$=1;lwb5-Ggp+Nr5>+;`gl>egkGgr!|Jo>r)*Is{V zrGM7^YpL|l5&wAo!;5YJODz2#w9?=DDAa%S`G=|bw^qvd$5JBy zb*}$S$-gCp{x^O9^A-6wM*2f6{ZF#!@6X~dm-6p``a356jFCTO(f=Wi{*XpFejAs6 z=gQ&ubaMZcMp-@=onv5NV*kHV<0KKiXYCUf|^{E4bJneO1PRoEtD-H#YnoF=Zo?(oeNjZEAE_{P8~gLvND%S;@Ur2 z#0k2kif&%+*t(L(l0A|*3ugk+$Efl`4fC}{<-XyEc zx8CID3R#W3w(gs_=y>~!ttn}@*_Lo!sLJf&x7m(ZOugw>Az|_smz1h)RTlkZKb+6$ z&NKzKjjB>_^-SclDIR*dB5|2|m=C^seJnsN-0%|VQM8>Y)Fn*u1Q(&EWkeefvSgJQBe(hq&%^( zsG3RaKoN~Zo?3~Z^~*ktWzjZ|gtw%idqTz!oC4xC2lPyRGIOBF9IX>c9N-N(=)}4F zZzNGV@RkMM^T9t#>T+3~(}>d&cl7AepqHq_sBNcHP{1RC6KX<}7LLilh>~H54x4N-eZc-8%0@I-`M> zdJX?b0~)r;=k*BV5r-b`hm!+piw-NH`|0G@Sy6i$&QACHJ~GXnQp*cfA`Nl5|$ z!&eA@=i=0XzJwPIa6k+wizd^xuYuXaWIuk8r%>q zgLSw=^}2LnMGah#M`N=rm4V%<_}r{FmlQN(;`0?3j(}mjIsJ+0a(!V2KiXXPa%?2Cb4>;kS)1$<;{)2Jpcn0xVTDD@T_OVu=oYj z#+NrTsz*3lhC3N)F*rAoj((te@Y5ybB zbpK{B>B>}@^5M>P5l2URB%39e*AmW0rJzE=4ei2n`$x&s11&h$L}2(}>MyUN)gh@= zWeYad1XT8AeiXEFb}H~WiWa(sv6%$IRC-&RwvbA}4QFW=?~~S$=Yq)(=lxKjiehV$ zB6`Pub@zn(X$FNELQd!h#$@N2v3d+RD^|PmSt2`7M}3aQ3pNM8Hb*1D*0{x)xk^_op{^f_%or8l3agH*PXoq8NSHID&58UdY#Qqqtv&+v8bB0pQca+C~QxX<~ibKii|A{V5t)C^S5=}68|bnKB97uVX4DX z%{;9=6-)*gGRrSvUzB5diNQtoA^GL>wzBV-nxoH{r6Ke42(#V?W=OrdHD-Mzsm|Jp zs}2$#YNEGKAz*D=smC~KP+rPq4$J~f;_#U6mhCx77^-K-{>qPi`i_^DCQ^{jO}4Zc zZpa-ceWu7+q2}ERC4GFcdT8c4TdkH}n;caIsw_Y@Fm%VtuHljFN~c78mG~mAq4Xl- zS7mr5n>Jz!;dzd6Jz58sX!0@X8y}G(!xu?CH|p$(0r{!>Y88E6OXK*!x-&*DqV}n8 z)ix_Mq|ls%Qeucn&_4r2wlgk8^<$g0Jq0{3#9phKD-~FMNS&5YQ%SmqBolSBO<6 z&}zKOVTa6xle_Gr2_GTd2?gk(6ayvnOXTRb? zBkDtwB--q765s&Sm-2hAZQXuw3sxqxji&EC?VvuDwyQL#FXTU~-07Bfo?M-@Eu_y+ zO#h-z*?Ng3&%*6Hb3>mf0#X@qo+fY1R;~uCwgj{W&}k^Ao3N`u6%Bt2{Ia!3*S)x| zHzATnb6#Xw`DI5_Zxo4HLv~8O6Gf71U(G${* zfgkOOnPlaeqatsIW*ta3GezZ4V%4MOU^+MI4E|UV?@h4JF%8 zge+jQw)ucapp%$Mw7r?5jJT%W9bj~iikwCM;7v!3k z90-)Hyaxl7t@M~kQwTrL09mH4yf?&U<>dQRniUM-TN!{S!K%sYt1Dl%v9W3Di)^j9tm5Vv_XYh+7Ah_a-GXo z4|NBcmRM-Xz*>|P)?tmpRGlj_@sjC3tmGv~X&PAUt+PNoY^1SMS>v*AsADbH52x_# zle@f=vcD{4eE=NVkz@kUM}2pKxvft>q=K&zSmA#yvp`@O#|O!{q%b@>AUa|irTxxi z;HNEvp{QS#eWILK*j=IZwBtwGRcvM)HA>faw-4JRNUzZRb=l(EBV4>&%iU>JYqFB7 zgc4-WCSuhd@cIZU*V%AiI_KA9(wrrh*hQ?bolc`EL^hGsw-kI?f_+Yn!3N&hS{60w zV{+g1n4B{FUrCekOsyPJ{af&y<@l|rcC76-w3LeMOKB*(Z(_wIh52hiOKz1M5VN%U zTMWL@vqh*+>(MeUeV0=3vlscifa+if85&R-W>{HfRN==`Dv61({9KsrxNCl6*rU_E z2C~rXRKl3J&BZ>H2O11^_Qwed9$x$r>nd_V@&H~_GPDiZpblfBw#p_&h0`hE3*R#9 zavV$;PwLhy2qx>#&vLUy7ctN)bc_FvkWu)5(xluR| z?E-?|UJ&p$V7C!@qpB+uZOA#0R##C1ZhS}sMBh*XpuLfL12fZ{1)Cu_(d`37KVA@M z&x0;g@I_s%iZ`U^2<<0*YQgTOS8q&VRPn z_}!YbKC_U3d-t>Tfh>RXEg7NKVu?9hfGPhWW7H*XCd5yJv%S;cQ;%lt=M~%=EBs+Z ziV?yDI+(%MXPTt28=_&@C!$~eIN#5dVGB+7G3%9Ed%%kEjUD8&sbQS8lg|q@#Bdjn zscd!puXovt1Qu(;wY2WoZIp0xo!Vh)VUYa!T)v#QKrdzUcOo9!5HQ353Xs2Hap~y_ z(hM#=KOR*_q=wgFj*;l}x&XR+_h*5Abz}ay`^C_ANiiw{Ze-JTOWxa+Jh zO1@RVF+~6jO4xu2y9H78R(S7*3e2nsb@t9Mh}YAQ9}gW-S={@_BWe}7as-J9E|2u# zidtj17jXi#&j6CS|1xnWS;NTwHCt&%>4$>u5{kJ6i*#CaR|gpYp-KMH|+#PTvxQuSATYBtv-RR;1Kv?DzdkCum@)fT+y;}!dIxH zn1OdpR$Xwcs`z7Z(?yt#heo|ZS@+{@^nhN^6`0vatCk!Ci-!i7nGJ?=qjYqga!f^2 z7~&R5G=pLpyp%6h5g?#w}3RXUy*5Zh<>TaT9uOc&Q6xH2#u{pA4;3NUwQ1CV;w z4n}lB2@Dr)I6-eltj2N(NTuZRU`%x`kuMw4hy#vM_uc!eJ5A6!KG=42riqUgp04Qe z-koI{n9OSr1bNN?r`OaDfCKUU+}~>kVlNZ^mj8<%x==HR2-FbJ3{ypK4M-(EuK-Ay zFtge?;`R>-np?x(iPGK|DzXC&zaZ|b%}KH@+|Qdp%(CQ&anCKm!z#`wTu8~*wzJrh zywt3M%~cZY4bH>%>qEs!(n{<;Qs@%O+;sejn}u<~ds>w+Ev6Y!JN#X2eoUH5!|BTFI9LnB8%1Vli zl1-FH!zx*2WoJuPW)X^zz2dn~J^%OmpL3q~eb04Y_c=cIcl_4(d*9b}fBin$_~pFi zP;QJNxAy0bq#kCb>NwJAvN;=Sr3|TH!ky->zIV|%IxpI?D!Q(HuBn}o^!@vEo7i*X zl4^yG7)~>aUkWA(!${!ev<=MS%Qr&CRKwFu{8cM1i<=UZDi@T(N+%;fZ9D9!#tK&M zdOP(#e`048G>;(i^(?vx`HYPp=Yd_RTk3L?F-eiHGu_QyO+z`+znXVC<%(jzarKg~ zk@Ds5b;HuNUNr|6W48lEip&%27qfaL+&*uo6}bgW3v^lRvt4Mavp{{_wpov@c(KK| zxX2&C${zhp(TD$+fmxlFcHtdy?0Q$xjcyj*>!Cs4huCk#)5c16zY{=o66Dp@H-F7} z(cw>pc7v}uKWV@7#{5-F+Rm!k-k4fL4`+F=Muy}$JA1cinvSkJ{5;C-#L~lR-7(Nu+jUPLOa2#M0!$-y0og!+n zu~{A>DBJS*uRDYLn!jH#&VZPsaPwd9j_hxIN81$6cjeaeR*x*CR(zs)S$+ZE_hy7U zJE-u8bnQE>apcPYhk{ia-e>gAyZhk5OOGxO$_;G^(!T9}ED}_T@_3-LU_NV}-o^ak zdV05_CA7zdEnGM{`g7eoLB<(HC_^ZYqcdD8JU=`?av@xv;Yx^kIGwv!<(~p*tjyL_dV;q&@V=w)=<7^tpbq4osq~GQHQT+27#lOiks5SJH8I! zi&4Q^jeD8x_zcW}Vvu>g#c=7RO0W9$)gh)d%_ZJ93pMI3;w^%0*74ox&kND#o`AG^ zQj~2B`?zNL!lrvgCTg!c9OWYZb%dS|!K0fl9)8t8tdFQClqJ9J7kKBc zpU(nvgR?2p=XubJ0{@?P1oj2IvK-;MD_EGnaPnnL)JI_*4fK=~q3NH~2NA zAw6e~oTOcW7Da->B9-00+&f%<=o%lGopzdVQ=Ub*O<_JrCl36aT;#kJFU{sKY$}>_2fLyPy)Rg_+i<(s zwq=oj(`Gvt5$2UXTR4G{&2?K)`q{PBrhen6(sNv+r|Ud!+q@;|=)bVFzT@7qKduch z2^^XKys2wBjN9Cr9kn#Bz&{w!ILg_XwQ?Sw(7^T0mPWJ++!$kca%b*dn*VpJs5E8w z>VdoWc;*~K{`b@00%87vA;}gu?S8l~q$B0g(@YnCoz~@-J;#zUt_@PyDPoXZ z14jry=?UWwh*M@am{S5NXk`Bl25ORif+XuXwBDNCQ)wqcBs;(n!`dK(27#XRlm7`c zjGGu&&tj0Q^iOaK#`dK-W4a&7lzK{1U8Y7|g{aJDTx3wa^* zM7kYk<*kRRSJk~4@Wj)qhJl?)MY3E?Ganm=!isWrZhY8Y={2suOlNoyX_=609R=jk3BUM4ZH+XR2Gs3i@Ar*?BA&j0~ z8LpFKSk|yw%1~cRR^QT)e4(j8uN)iFV+&s6W2~0@(8<$lyD9I4^3P{&e`wfwR_j*B zjpe)hy$=ftV$Vk;4-8sfuRxd zUG88JpCBQ)n#{k}Tx>U`AEa+FwxZ80@G;@j3Gs;-O^O!do2Me2h3&xp8eE`M!!$X#F+0fq<3g2CBI<{UqI3G%`qx_4 zxcrjb`{ka-EYG-$`nlEaVPVH*qRcdB}`39_8cB?3o{T)m4azhA%4)~aeiZ@EOK z@0(kdgB1+RnRHu2Z@Qg_T(W3x25{(3mY?)b;Z!~&uDjfVKd$GY-qax1eNTlBn-lIA z)ROJz-{L1IHTul{g@Sz4B#ef=U6EJ(_$1TjE5@+O;`j36MLU^0@jnUob^o%^z8gI< zTmuOj2yc=e@R5#Hr#s(oRGa?hxoO)FN-}up_ErwR;im4$X#Clr;MwU;2DviEAKE3& zKLTUC+FZ`=hM0bwC{2{<2snS);w&rsiLo(Jv?jNpf5)+fCQ&{tU7(9NUl|vR8Plx- zx(1_Ag|eKDZ*oiUnKL>jRU3a1H_b!cjRm4N_NoiZHiJLtIEzV>-C+IA3(lEKPq-a6 zl((Bi1ZWg0^5{u%pRmLT^nGHhO5n3v?}$Q(Ov~Pw-<$C3W*4j{25o#|&7Qbd89U*6 zbuak{N>(l%Qv6`Vgl8z-iYAY5*87`Je&XSm4ZATAU18p#COT$@t}h7oZs%I&Fo@MXDfT$VE4Ge`FVq2E^yGg%O1)jJ3;;+d|a=2J1)DH5!jFkY~1Ui?^RCJ zh{jKq)^j*_*WDLA#ar-&0VX&sUEXy@tPa7ubuv#Yg;I)5kWM3ClK zVC0okZ4?=*3{21%le-vHG*C_3WZ3p88uBcr__9629W$3Dp{E89`W20o(2BlFY)XQ0 z+8p9neUF~tZ5}99I#RT^>HCyprC88KXD0hd%&kZ1cWR9CW1kaW_Y{G;eAOuhtb#xMp5LNI9*kn(2E! z5JiiXF8^$isr|*h+2>$B0kV2u0=-o->c2Y3wpjTdA?-_89A5u%X1U{I(8h^(wCAi` z=M?UKf~pRDZli1Tn>epmp4fS_(OlT1#8~&!@e45{KG#`NXgmlW59^$r?+$RXXjF{ki<(Kl*WYH@_c zaD;J`7>aPO_P9CG15{9Mf-g5j$^u3tOq+)k4AfdC6KK9h5`U>NR{7XZ6i;8#d*IAn z__M|qqrXGDQ_Y8xgCyA^(lI2Ofb*CSLO(;p`!s zXs_rs5Ip{XZr;)`vn9_v!aMU&GVkQN(b*%{Ua}n?P^yz9r$7E;HldZAED)&?S*z7{tb{ee+hZ=Vn%PZwG;L_m@xl+@^u(k8 z$~?Ni_M+dQS$URc))<0)k#;H7f%dP58l6)=KQxZGtFfFbJb6WEXGy&w=;ub2&0LPr zpumy68HQ@FrID53=aaBqhZ&o}ft==BIk~FQ^Nx#RY?!fq9mhGZx4|VEyX8KuyJP+b z$3vR5@?Dx1_5F)(53Bf!gUZ454%cFw9mQN5GyEm;%Rbja{iTY2)Tk}K>9n21yNQqT zERDn$vN|#ubzri8f%l7v%;TNnb(!0yqbb4Szc!-Uza@SB_ARMzLLV=WKQVYg<5;ls z?k1k;G&kX_68GJwvQhAt1sTkP@IwrC(C&o~$lp4MGTmG@bDy5}L;bV>XB^M{aBt9bM?&-Xcj%M*w_ zttEz~`;$pb!6}nTQP$RLxamN1Iy~%k!;Uh&(jC#cT+^xTt08P3Q;3WbZ)UdxJtuZP3U7-lth8}8 z=T(OauOAJZmRN7q`w^ctAlB{o{QA1SWz4ob`_job{l;sp#v85OOYz2AQ+<{`u>m#O zi@QPAqtdlc)q_1^8lRzXo+e-q3MV@YUKDPFr;L|PyTRlVY-<(A-s0<7x0|T3%CTY0X059?F z!7!XM7HcjE*7qTJdIx|ns;a2~uk`Kxy(K{qB_D4`H^7X#&o!_P!JXjjLNc%7X-@!n ziNL4zTwJdJbeSZtV6+Tc2LAU&fFMbg#1ns7RTd6~;eh?4P;e424eBx!DghjT=?iXl z|F_6L$d&v(?TJ9K1Hi=t0yfI}&j*Y~p%5rA5&Q>3LD8g&5z+_j`X3Am$DsiV9Wo4# zz>um`$S~lK|E7zi)P*9T7@$grOc$^R11b&3FesX|JsAZCh*8O*P$b?ca$OV_3lu3( zU?egjN(==DYB|W|5J(KLH5~k=h~B5`z)%i)mJ^M=E~fTAgKIV^^{Z#XEFsx6q` zThx*3VsKE(z5#S)aH?^}!ckOhM#8aFa!3?FCPmr4-_=Uwez9m0+Y>p4gTkr$hC@QB z);$X79HlN0eN_EG;DG8E3Li)~no6HjJf;+W(NysP1B&{n#|nm`T+c9|yVMwp zDlUOJ!cff-5&@-Z3ve@`@{7Vy+XKR!N*4|!BFesDk<@Vn16D7E91sf#N_#-OQRNai z97UDa;0QETE(WYo+XM0tW#0f7RQ7??GgoI(K#svvSQN=G3 zjsfWD$bA6!?tkVhZ%+b1f9Ls|O40C20Pu)Hsx>umbMprOrfCG~_cUFJz^lkVwS1bY z0JWh!8VV$N6afyT2U{CEtPKu^1WG)SI2&7>JE#VP2>pKKKmj&U MAaU{YdTOA517MkV$^ZZW literal 0 HcmV?d00001 diff --git a/Architecture/images/Legend.pdf b/Architecture/images/Legend.pdf new file mode 100644 index 0000000000000000000000000000000000000000..011a0b4be485cf3278ed3cc359a4d5a262773ec2 GIT binary patch literal 15412 zcmb7r1wa*B*EZ51inR0rC8W>caOm#t?(Xhx1OY)%QMwVNK{}*C8k8FyH#!MI-U zeZTMh{u48M*6i86*M9c1)=(*kh%thhSkbB4zwUqC$U8_MYVSmcf>=QIMpo!NJRoKn zQ#*4P3lJM1QUWoHS=zXmIss=JLl;vKQ)7D*QxG2?y0eRusi7^p$E_D?vd&X1_Zm0U zH=mIx95J3vj2y?VQCRYf3dbSjWXHl=!gE$OH`!B7*DMT~@nFz5cwMN~+jl(B9eMDG zXUuyVT1`aErEJ3NQcrUFwl0B zs9QSC1&SPLMlNGO=%#Y2<;v7*FnQJ{+tS6d{6xRfkqeVLcCz1MSi`ywVb3{ZttlH) z`$3bgE)isyLSQUwydgp3pb;Nz>J)}WVHoI+K_$u%Du>Rm&Ut6E1>Uf^$y=sbd zc5IoqIpr%zG6HWBK1AYlmNIaRf7*xE1_ZBTSm}5&El|pWpX@4rg^nb;1y?Hi^o=(2 zl4~Ujs_%iGPMpod5^FFQB=Ci3P5vr8*IxLUxtU(@t<@=?|tM|?;canra z>oPx(=kdVQ5*PFgBD8d6(iDn9jBMRLzKvgH3o1*6$MyP%2GS87TOY!LyWBd#U=lkx zJBK6pUEH0?9GgFv9anz!u3JwW1B*CIx7}}9xe}3ku?}bWG77!^!;lv4 z*oz%(303A>ZY`xk@TU#;saQ*%Tf{JliuE?oYY!0-q<=%%0PRoi?**)9D_G;@kPAO$~9rDegXjns8! zPfj}WGv~}+78-7|_IB#7k_bKJrU{j zbvBBxDiBtI#A~D0e9ASc@15We_cG{64&Btw(&uIbf_eH*bQFzs+40 zPX|*Fvx1@d_oI`koePNd$2?Xtb+&hPGB$Mv!F~vY?d@EE`_7=7xerWqSyK~BLm_() zkTwe-U}a+ifni`>bY>-c7hvWCB4F14%<(3LU)n;!$=+Dm)CHssWGf;DVpcKrZ~^Ip zn1$_a?46Vy42?}eH%dj=84P0ok&&=71jO+@$j1lh6`&YE40L7{6)=eNM+_Ae2nc*r z3ZPgjDy$$d_*eAbWdQ%Z+CNnm_-9?^fJ!q9-smm6o1!y|n7UaSn<|M5{daX1s;V7M zta|?{p0fwNeqeO!6Jxe;qsyau=_l*nUFv#owB>`D5i-)M>VD zcGT@_i5Z-vsrF}4n$#*kQZ3+!1XfthRz@I)waAlKZ@@>AgvmZcz07?76&4m9MlgNK zCLTZ7k9q8I!FhJVrit(;liJ=`S6;V&|b_C~wct8o;yHFXF`Qqtel3inwtCZ+do4U$H_q`;!Tjq;*D_8BqC6u7tDL~w{ z0L@-BUZ+?oQ8IbB7=&iMB2s+L_j!k}KPBTdbenIfP*LyWUVcqLe_Z}P>wU8m@1w(T zs&CrW6)7Yd-9xODOh#oK)yZC;ABS#A@gb2pzP3v`8_=uL8M&LweJ)RDCbes{^R8~Y zkJjn-X}_4<$EO;BJwdM};M>eWz0sb-@_|W}3-tH$h!~Ajd(vfMLgb1FsdR@Z6HhjjGwyE_ zEqu6M%1h~uews!^Y-m_TaD6esFg=(%iScOj(J_?!{i1>S1mCzjzIPp7gpVCaYI?9Y zyqk0u-l{pA$d=CF8`2XZ&Em&R#SAg9PM%)E10>nT{myyb#*xyBbvo*EF0U_oyqK5x zHDnqcbz~C`zO;d9@WiLu;`R+%R;i7nrjANPa+PCw(_Z+xs)#Sv2L`BI1cmz>@|Gj? z$P?uJ&(aBOU!-_ntq@#_rf0%mPPAEUdHB%#_FP$${ zN&;U3Q#_?^ER&SJ^t=?gw0_NbeSfU?@k0oKGu1x+=%=F6>hV_^oOJdH**boiAv)Aho6MPpHOSVx`%VgB1IxcV>>1KzG&v+pv>D%*!Sx17Es3lB zcMd+&ozs1V@l!O>;J*DNpQu%9MDN}DndSv5pRbN2@%onS-uJt`me0LnXh(ze|hr5@^*u&hvBJ5zNcnjIS>aXJ8KWlnW zF6Di~anh7QJEzZIt;N1aM(h!3anP@}k#?e8)Q`E~AG{iLMV_AKqxx?({aq8?s7Npi zJLfO8d87YsWPqxa6c!dTbT%~seOF^jAl+Ya!2bb>fqz0VIS}|is5NmXL(l(#MZO%{p!3CJ1RuIoqyXN%bCZ->yw~ zvtd7buvsYuT?z5aNKWG8^p)DGleJWOleD`kw(wOd2d(qz#;Z$vf3mq8T@JjvG zu0`oB#;*oHhwRf`dAk9BGyDm`%ZX*sZi6v_Cu2JkQ<5Mqvk?J*=+Os@LgqZ-=2qu4 z>bR4Sg;~b$7evU4F0vRN^E<6h4$paEdGy#n=RD?pZ(YZ)1Q*udXRPY`%G2+bM}SJd%45*abh#d>m%hIRp;rS-zyt+bRYhaVxW=E#SQHhEfcqx|`RAKygjA=8-bc@xH6p+fUER+K^q z=q;X8l#KzgM6@cVZHvu=hL}12on~XgYQEEo=tj76Fimqy=51?gs%1U?6IuCIVOLR~ zqp_6jjg?goh_vEdL5gPF_?L@)^rn+9pR(_qnS0{xG*;>Gez<)dU)xV1#vRu$IKY#n zSn1eF{GOsFU)1@yT2rQct;(pof~~D}M|6sV;$LX>uujsd*{&?6)I#lya;`$`4Zx8xLy_*}U`x>KJs_CL|p< ziR)4PI=#m%wph%Dfvv(QEzdFcFwqA9bOn_a1iG4DV?sDGS!WbT9FMV>Ns*V2_XY0{lseVw+kFt!Ov z-n*%jQ@M9bu+*FJRE-cbLlLjr5Qt($~yJ1e|1be^gk%SUmz6>2E%?Swj0FvFXi_Gdj6&SZs6N5 zT=^TxI{y=!!T_bo&I$PrGF<`m2xvuVOA}`Rg5F?4K$-pxs)GNHRez)@Z0KTWV{iTg zCOiMc$G?H)4F>(Q5Z@sxv$Cs^%Xf6G;^b=jBc&S^{^O>cikyV7G`)nWjhm^9rLm!$ zsVjgxZ|;ehIvYD#I=I+7p@V+{U{O0@7j0<=lt9+dSjpbj(C)WH%+kr(McBg73B(Ek zw&I3AFTfC>lIoTwE*9Ub$ZgK*9o?fz=MU^Rs?8l0Ulh*BW}Wr})tce>U=uMwc_R1)BeV=oA}6bD-CO z*1dUB2-xwUYcq1PfkBK=4loGJ$-xfnJ=ocS(Ip9t6H8-3J9C?x?GLk{v+>P-ijxg^ z^rlyDE*K%eO3y58=pbQgX>Q?y&JGMsW@Q&sTeX`fWK0de_cMe8#H{fn1_%ZLZpa#X zeDBPgwqW~F5P)Yf1$I5ZHb%du&3D1C;rMHt^K+Z@;}Y0c!5~l|k^e%}^lN(CXpejH zuf!%KWIueO?h}bCy1q}L2qn*yRAhcqMfNgN;~6PEzAb&Z4gE_L@4H6*vLjGdu8)!L zGPaOET8|jsR%6&2GgGLdc=3*rZH!8`9uf74jV3F_#1wCE`t3v$q>(36JM{@FrZn{B znf_5DUC!IJCw?ave)9)9#XP(8(uL1-4UyIOd=2;fa(!iJzzr_v`%)6zCYQbU8&78a zkA=2Qsf{}aDpttrE)~*A5thZYi1*5LQSABQha%r`&4qURStGM188h1({C_J#t(mFSk=1^6`{DCcZyJ z(>9^muy1KdX(@fySYv+M?A8G*hrj4mSf^xt-Z7pIfION4xe=Y+4@#CCsm6NiG`XD@ z;sn?)xCUk%H%5>{pb-BPuBD7J`Q(GA#jNyq9SDr&&eM##SX8SnG=pO`vQA;j4qTk? z1{heK2OX}~K5)%neLSbNuD@k@=l03=t+yt$P&Yf5=(P4g2_p)u&c0ZT=n}%rrN=8D zr7YMgxjfC-pk!KlJQZe9RuAMDiqu9j*xXKLIDN=p-!6GUf0eSPlrw_KC$<=@?Qmv= zMB{cX1vX^#R->wBqU{gyLk_SAG-VUlX6j#uhM%^QVN+kIS#!m5}XZMq% zDP26xt`;Z|Fyj`S+W#C|z>hFQ8q!N1w2MdjnVvkTbO}Esg`e1P{OQcSkvo>UM6Id% z_gd#-f=YKDP|ValSYt%Jpm3(AAej)X+0-}Ymb)ENGP7L1>3{S&jbOh@H}=3?^J)FF zIt+&XJJbBwF}BUjO>K1@vM@%e^oOfpTc(g0(RK=0W;B#JFs`s~&cJvxddodT<^eHl zUpb`6dc~2KzdLL<*^Tc#L*>(2!ZWGC3JlfG_S7~g z_K|~C<6#uDqG)mwB9J`JOWSlaGjnunK`S?48^wxwVDza=>vbBERdto+5@M1;bN}1| z>t7&&vP&Nv*?oKl6$t_8l!SgrH$8zL(E+A56zF7t@O&ETIY=R8mwdVW9*L2 z2ArK|(u<-N^c7SESQ6HjUmRj5pYoib)A}M15Y2TId_!Kp)z6TG5#eof_YAg`Cu*Iq zq#bJ^Xe6e^vWU!s#4hnF}yoS<@|Ff3&KOl)X7<3A(q5_O$-&d=-};JvnX{Kb?9|>z0eOCR*@7&FZm+Aky2ly zV;{t7jy>-+;jP6T++jQ{fNeV=cSv8{#keE4nbg!f`|0{JXNUKE&);idb2{OK|Mb0R zXSIJN?|Z#ZCRz_)C$2*zH(f~@(6A5g4FyGDeneVFkPV_scTRsSFfI@ie1+B2unTqUZ2S$Yf8}%OTxi}Y2TP7T-J>CMo!3mPt#sc_>m9!;j@jy zy~Uebu1ic2*+Z6C=WHmB%jh+rFO7nyDs39`WoVGJr2y;p_WiZ3`piK>lg zczfOHm!zfc=4Px-*{#ye#3;UQ3!?%U`{ZYe+UJ5>rDzbD;>R{2ZO^-R7(Wj&iV^gA z=MCawUa#AfZ|pvB*T3MM4x)IKCX*nKfe4S#)vHW!%IzzD5sYx6o0RIeDKmehFF!Xq zoyzHA_@>5()|o~HfpYZJ3*KuA)Il@$nmpE#gVdAw@%)A0wrou=HOZ>0!5Q@%GgHFq z?$UA$`riNH@F{~a)4Yqa-{U@S0pZj!U2Q7Jmp^({&kN8viq9lTGa% zRX)$`1NmzQv4@!`FF#zYNMk*INH#}z$Z*+NR^s>i@N*&`-C-Gvg%Dc!MDLJLgU~at zB=J`ZtS+}QwiKMCIOP3DZ~J7{4KPRA+vA-EzTO%9c-q;bZnQ;wI&voEwwsMYXzg{M zjc*}C=3qyy1Ur~;&w+GBxn@2}$L)@(avNch!5wpghm{ECl3kkc14^XkXdKe-fe^OC z%YX{RWU2**TYnQ(T2OAV#SWoiQ= z#mD)qbYm-&+=dskLKhEnuup)fg>rfa?X7}F*wzXS?a37qeULfMfziwN7?$KSyh9RR zp+eqiK{U8no}wapSkKf&zTo`|nwWj?NNfG#3<}&-5?Q=MVLmUAC;xgncuB^#YM^`} zN%Vun0$~<6C$H2ao)3N8oVr8sZjZQcn`yC(!h41qC}t)e( zsK5+ilZ0uwiRV(h0$C|>8+j6!m_M6~3v?=+GK~8aCwQB`V{PE*u+ug!)#YAj>-y8j zOY1&@q;hA$lb=hulF@2fbq88Q4An%CF{wY589m;#vCwNAbM;@!`Zk$tX4jThJ3L{9XRIl zwZ~)beG%q4yC?r67~JB+^6D=UV`_K>`hZm({(+zfUIdPa45xuoBKP5|4=X_e@eqwW zI-%UQ0kx_1!A2%(6Lm_KT>_@*j2sGt3?$BId-Ml0f5U>T!O?NgpB$WB{us6(=@pH>%0?F;fd*27 z4}T6vN%dFIN(JsIjzBbex)_o|7W@$ro^noU5yjy@~yv zmTwuC77zI}H)&V-1U*~fNQ;KPo+4`ri9iJ0g&wN+v(v_K36i`tx=##-wMp_WC zFDVAhr4Ip2jr^IQlsh$Ui5$uP*Eq9&Dd4uPBDLNaEIyUeQkINKV0Bp z@UU|R@CW>5YrJA&zS3V%W;VJsK&x9%kPlMG-8;<2q!dBpLYgU%$CLQ8%wyad7)0GCV!zFYhnk z!T4OmzxBnFi?hO2lEf!G<@>=RWo@}47xi3`1-gO`yE}8kvnln~;1~KFu@muYtEt`Z zG?OXhGx?4D4-c&7Ylui^r^!C-?1al4=Hn8W`ZR{}jC{EJ?DG+ZP+0XRqmXhD`fvz( zv|f}RZ)g6?XBP@SNo=~LHNz;yG8>fn#zWp!!bLc{Kgy z6O3+7zHi`(a&PZ}Hh<@B+QaspboFshE)C|hXxSx8L~>+5D7pqA5Boj&I;x_fr^o*1 zZESN)k2C4yl-YN}J9OV*An}-w5n6yh#Ep)!3&qSN5-e#myHz>!S(0?lCLdx!4lNC8 z@A#}?5U)mL-!hb%<;=G#Hk5>H3bD;^bQ5~1Y7!=;crITq_hP;e(hhB|%{mw6J4={f z(jQ4v934CeybAW%_|`eWFpH`Pt^E+&9_k@oTC&w-p2B9k&02~CCGjDPAN)v@ac&}; zv`U(oQ2Y(!$uqYtAz$nQ`LRm0R#Rt$o|=fscW)p97jg@8XgT$$Shg?fHnPWT;V_B2 zACHzLmUKA8Ri)mY5j(hte)_a4LyI5*U4oEzA1cHZ8Ms%=_R{^ zLi<4n9`pM@ceuO4VKCjPSg6R&-H?cw0CRdWEb}Zr4-$>wdB!bl%rF{ z*y}DgV>j!|SU09{NnJ)gQ;Vrj48GQfnvy~aKs`yAo7Qj;A~ zp|pMu%r4<0yZvH^l&(KPIAh<(a&^urJo3;)-r9Q5gp2pJt!=+t?uDGJo2zW<`UW@e zYYCZD>YO3b{ceq2BfKleO?1rPe0*PoG)5hbby_u?w^X5f znxUd?r8|Iptu9D>>!q&d5bdoqxdb8FR$yxiX*y2Z$Eh(HZwD~@x#DqZ%Z#@Y<*&5| zTZ9%~-6!cBWJ`XRWq#p3k(uTjT4mbqjo^*j_!g~2u>95IN||S}))zYrJogwIuU=B! z#_VfFsMvkaz{B!C1=~~aUCE>(gS5E#ZuKiRm&4g- zoA)pjyy&8tIE7*un{J^XupGHXNbFz31X{s=u!m3BdZOSKRQ!#Qc)u?`P z9o2h!i~23i-HBbfXVnoj&$5Q_=Ja^i`bj6HJ0*DIQ3_(W-ehted5O$s%y}uQ5Lqi~ zGQYrPa#7sw&+2mgii@}mH)!3@!|-i$b0)cnk#vs0{oH0mlfw7&ZRJlTqH%h?&s(NO z`c7n9%I_6mXg7zBZ07KV=s93FM0?C^?XTApSk)jcC2mQsrxa(;Jsa{yG%^h93e6W& zuE6UZmGRen?z~s+c0%DRe(BJ%o;w%3>-|<=6mxMtUQmtdtZ!OVmXEz2U8k<6WUVMy z=tA2@#~s$dq~)-s^`>zdI(&BmeigUd2Z3nJtvFgC8>_Ysi+fybQ-`?B*|vS)9dOZk z4xIAuyBn;m7dm#EPt0!kaAhN&T5&Bpolmg>*(P^+S)OPcyKCD%Kv1;yh5E#gSfNW-dzR zZsceT(RY}{xeg@&IZt8znMBH>~BmR z2*wWZaDOp%KiN5SHWq-t`-`39fB@v)4NLfgoC7%6n@0Ri6@M4}s@+d=4j?zbxAZS^ z4g%u&CO>zx`pLzI z=7XH`jVCkC&Cc6>12X+jhorcqlFxSt6G^Bx^0km&Omc&vmKT?ZF4J=;=D5@5&4L%= zG+op-`mH`N-m2@25w9!WXG;lv-9x3ka*;#UtZ+7It^z2mIIQ9}Y5ccz>#rB)MmVmC zu3T}1#icGrsZKuxW<+3lU!j*ZLp&Y4a=-ZBO?j0}^r+t)`O>(3cf){r2;J)y$xCq+ z(T7+u3k`ijEGrVM{+@$J#McJwbwv*L1C!^|D0eTtzP1{*@UHMh-ZFm#{}jDTxBcNt z89hO<&vGh#jK)Ssv1cX+UVwAlVxd5}ZF2CiI5Dl{t%5Ed_e&DUv@o{?4%LV7c(0fJ z8P2F5VM2K!XG0;mgx%JM&Z? z-4$kiQ5e@~%JJ4l6(Zcm$!TJV5oOY!9hY^>n55aA$f|hy@I^n?=u7}dd3Z3@t5h~D zL;Xkal}J?A9S_Ab<$LxVn#)GJNo6mbW-Uka3Z(3}eVU(fryb|#MraN=<#uZ%&kan5 zCZ~X->bGbS#EPdA9jJ69%NZkG z(zXx#ab+%58IT*ENi;DK6^(btzdY=Z7yFddkG+5wkf4*)kCff%=x&O*Yc%QFe$U{J z(up7x6fK~oTxe|Tt?jE@q_f4RT!NDV!ao=!e;R)0%6e(bVPV(usJ79V7D?__@w-9qbI37;f4 z7@gJ)9;wBlZ9Ip>>0sU^l~CGE324NwGN{2L!F_|QQ|YBPpPa{KAXo~PXV=>NXtziX^3`$et428;21q!87>9>9u-!U8bt)EWP&%zA!}4~ zXhnVAt**#)%m*d{kk|*Yc@#7td*S_9W{P>?0{2K`RmFBL{LlAYIh=S!f)OduBzil> zKGrEo)@4_nQ&+u?81dXZ?|7|R$h5qMYJJO`@Z~1a)wXPPS6q)^+V#s7d+sZ{a>i#f zr^4-joIOwVzs|G9|^kxg@z0AE(@j9Awu|`%;JLFUm&xJnjxa5N}?i5l=2>wal(V|i`cF+J~ z5d+Q~C;&OhLD6d^hboo$UKLSP@RTc%^>$d4;9cR=Ad<%oNSwFN;P*+hz1YzYaH9Ar zM(jjHKAJtu6hIs`Ed3y5yOUpJZ%?m_qJBsCWP`m-)+WOF)tITJ(WOHH6+S&*srBYu zX0xKa>#Tpd`!QSN*nu3wOxcElggoM@16-s2<*tgEezv46+iFV_>C}P)YrXCr(QorE zomsZa>I)7RpY*?2`Uol=4#N8-pSE}J!54|uEpC@|mL)O5QY17=*MjVjrwopK(ABz$ z^rOp;oleG4DXrP6ug@!k{ND$HNq3V?%mvtODuWbJQ(qKuNrIJ5j2@QJXzo4fZ3 zd6Z3}-*gshPw9|yYbp|ngj!%`-FX<>Fum?gK!=a{>$R`8jS-q18n8aAa^*8#q{ zBG95Tyo3oad0{;LOq9@z=B`^`)TYp|F*Go8%9p{aOzH&&WkkR7zb${!h~>65wnK6z{)bq@tJpHrncVU4xB-gUkcoPq)mw4Fb(n;3T8?iR7dJ6No+7InGKP?ft?7w}RIkhCZ!#sjWYuPMs z@Kfg@s_iuiwUzN$Bn(zvRaTf`o>0lZPV4v;i8S~yryVU z)8!?>%XQ59 zg{r6V`TL#bS77t1=Cd`0t7la?5#$r+={s++4tFB0hY0Vu|yBjJ@DQO-+b?B7zNvO^xsqO{uc7xCObcX=qRRS;0Lvp=FVe;Y7Px zN+Gu5PM02@xT*JZX`-)*^BXp3UGQpXv?WrmX|iS0kn=Z`DO`8F&h;gDcPDKrRo$QA z3#m?t60sGG^CLg!d$!B8-)bDIUqaD*b^ps;3`qQZHV<&Pl+>BJimj$>^KbsvjhhnmZqNfuv;+Rfq7ehHTyK4TEyN^5G!s7VihAyY;Cz32hzo|= z!>-jyi&q!SqrU&*Jj6mS+=QLRMuFx{^RyyVyCbSX1MZKfJNX};dq>sWGmUwTYV(c9*DjSV#B-@4h}~8EGk)*qK9dn;J5m>pVA(8H#9}P; z6613dZhj$kgTO$+DHv{$i5>%*e+5w9PWT*fAqG%>lp%!EKzM`EgFl>cha@T`Y!`<` z#8HCZ1j7m2iL4ys4E+o87uc6O-AVUWENf25xcoyLl9kHrNShU?(6tVwIU-03lW3j^ z^9P;9y|cMzN9gc2qzcE@96c|t|2FrR9O{fog3psO{!9iZS%hY?3{&_!8=}mEh0a#i zi*pUHdST!myQai)q@{d(dGGd>5$`E%dGa;OEi#t7GGR50_%Ggx<;|KVB$>3_GcBsV zzrzLj_|?qIj3Z6Cw(V1La`c_jvoVYG;cavn$^$#e(nn&3>8u2<9mWleOp{@?6WIkR z+a)mbZ={pqiyLHf=k>$e&J(8Qg*AEiEA}(6R?gXz-##t%HGL5WvVYJPWI(NsooUdE zKA`n>cw9gq!S~J~+t7aqxUE{Jmjv=D;p0C-Iu_j5kVb0J&b<4UIb$AqzR%ghInUcE zEP{m$sfFk(&!DJm(}jn=eZ3-gSj8rlU0U-9yROtJL^*W(!I{a@b1x6jtEU%}3u7gu z&%PLVLmS1fDo73(^<)#8U22LBO&;@u<0Q;^wdk;4Jw0?q)~a_H6lA3GB4=wYRM-1R zfu-QERK{bp+kLwmL$h|9f9*t%tL**YK!3`dPq;SnMR#?%W=lYHpGDyDxIU+2n+*5; z;e7Q_b0D7ir-1*so(KSX++4bs3fi33EjlIVXE#^ch*<0enb zZK0*xZ+;}h^F~WNA!Q(dp1=<(DD5*O?Io#-ly~CW*W>p0GbZ1+LPgdR%i7axF*8QV z4a*4&&bg}Ka(8w-pop|UXfn{Q)U~<`Ww&W;K4jOAg`B#?YyWb zLX=y$=CT!50QfxmsIFveQCid|Kb#qFFNd;8r9I)vsS=hx-QR^DQ*J~Bc>2+$M8&E( zEE-|%8euIEjF*O`7{R9Z8QKg8k$VB@Z&5B*4ziz}j2<%OXha+2LXH(uls)(Wqi7Z5 za9I&yy`zS4J7SanC8Hh>iN9Twhh>9t0h@CTO`@%H^)ZP|G^rQ2tBb(S_2vHVrP1}u z%Y&4!N?b$3 zK9PS!XBtYa#w>lEFV1NXJK^?~;{VF0`Xxwx!_HAuhbgCHZIpvv=l$!s2F@l|^}U{= zI(6*R5LuTq5<3*>mlPnC#)0h-<%=fFZKgZK_Hyp zeJ^jY6`+fL2x+aHl}rt7gqX~o49(1JOdtL7BZK^MoTIfhG?rHeshK)CTiV+JSdj?~ zWrBfpXbqj6O>K<;bZH8Bp^0;{={y1{x*9sUc!7ZTdcMCb4+x+iS=m5lpdT_Y zl~MU_P5H{mdXu$zHlfSa_5 hDJLKLe~&^LPC%bq?PXO?(POj2_>XK`dd&RpZdS= z`w@5No;y2t>YhF4H)oboUR0bB$i#+3*|~AFv6FM0KHAxh#13Eq*cw_Q@$v$gWlU_$ z9L)h7V38t#S=_?P(ZnA7YGvSPB5Gn}Yit7G=SOmIv^O!ZMskIWQ}46?B#zQ_uI6Zy z(J{IkF);Sh{*cThUZsz0Sm<5W?67%RmQ>vFsT=win`pL7%s5;qA}Cb$Lz2;J%jNl! z>aMg&w;gx07M;1}-6F5U?Y6lA_?`8Uj;shHvy}bai06oM!cPUa6TburPGuH%P3@p6 ze9~uLt*H_j2qrtplML9oF{UlAsr`ca2#xBEZ0hGdE|eI2Y_5)sM?}}8%5(#&BHh6u zs3q}d6AYIxC{76On$1H?mL$)Lyv~sbS4HP|8qmkG$>yXp2{j2P%mJu&iQ=2A)rr(o z?BawxB^U+cY%f2_T1V&5M!1=k=Seb!Na!B2tA2o4*5#C(TrX3bQpSP_G%E$_Fw1$c zG3v@tGDK*Nk8rPSG<6{NG;}!&0Mr_1G{*ZRc;3Kq-?`f8#Gikx@L1-sc0`Om9>Rn7 z@HWy*POAV7m+b93pKmU_?^>8$Y+6p46WG0Yadlkh^+MLuL14APdcHbvZ^ILN+0iKc zgMcPXRgl==x6SRrR3D6%9H3cCMMBeypfWw=Il%hjRfU;bOryvQDh|(E&xOl!Sn+E8 zbLz);BL{{{irPsm^(*yUF6N~fb078*`mTCm{5$W_{iyd!A3vvW$ z_YfE7LCc2q{=6y7rBDnT~IlxNQ3L>VV0UW)Trz+P6sccK0giL7^*nGCtU zfb`ZX9G9{ua4S+|e$7atv!Aq@{NSQuRd=vaXC=PIi<(=E&xd1Ia0|bChI-~cyuwB# z%FfH)Ovp>ygb~&Nk|iFiD(usKoqqzC6}o@~9mk52pQp^tdlZTjnN5od3@6CR1%!;F zNAz|=zy$gtxGh?C%R6+kBE_zlo!Y+9GQb1%3$PoF@Rz#0!Qwy5!Z7x~MucFYkI-MW z%Xf!oFGElMK2gru5H`hMdH|~OE5rA%^o#qFYUx4v?JVzW#|pgJ*mJExTQce-``lfJV5N!>i2ydl$a)ZLLzHRHXi?wjz!LodGeied~ zmmcDso6Z6}XpP=c#6}a3#loU9kylol=H;WKsYRkd5&zH;)+(gvjliX@DxdrDxnBj| z$g@T@+>-1NOk&Z`R5YR2>@-l_l~Zj9SaX3P$0R-RXhs|MP|F12IJeV6W1LL^MnqD$ zsmL_NOe8t|Nh!5Bsb*0tFr3v%el~)J0}CWk)(x+OkcU3*+ZFOiUB3)K#X*~SEH}i$ zCHqRESbFpPd_+3Aa-*8u%XyPr7e%}XVK|g~$6mHwx~^U)0_{3zsRpEBG~2`ZEcIO*){+gSh8vksTA01dV@L9@UWNd)x@E$+FTSF~_=gZnnzgLY#(Jq5Pa z;kCHIBX`=o-pvhsY!ih%dbAMleD9>3`D9tY+c?%o4N}$*_7wCqv=rM65S;RQv1+Yo ziDplPFso+Ld%{EU+1Ear4&@`%wK@HWkfMnBG)w+#rFt~WSGg}((splx^ulk2Ij*a^ zz9?*3(h28a#mb8158#L#dAwGK8zs2GN$C#35Qejg&KS2a;1W@BEgQ|FJL*Gp%yaDb z=rW{QU%sG+-&NojChG}_@%}J@2YeMPCz~H7OG}%QuUyNUB&AMi(^tNEFd6QL&cEY` z^ltm+>|$>Su7KgXr~(NssMu#M`N9jk8o9>-WJ3PrhEc94SL#Byyp2|C=}aUBqUW>G z=C=-p+{f(SVWJ`6Y^=;R&P1WnuqSefSvXYL1>ahBs?&kB(7Bw2iU-PZena< zAZ+Uj&|(1#I6$lbASX}ndA;Q0njKT6B)Wb_ zXAsYjv1#)AMXC>SSu066FkcJO`MdoQs_8(?XIWWY(NY}fNEn*o02(jF10J>oV`m}O zj+BdUbz7+(!!FJtM8N^?ZE1(fXiGRcNC(G+7uXmO)#=qB`*aQeHy$a9d~rZY|m^ zzZu`SX>CFGeEp}{w)mE9Gq{t{`_l|OUw2eLTNw?Q4cnBKT;L4a; zV!DzZM1P26`3Bv*P$`RLlq~D9`qsWMZ5U*lW6yZem+0e|PuU`G8_qh6nH7(-6UXVB z2BGUDiyK*UGGn&*vU);<;uKHl7VDs*RdbQ(GjCoi_A+Ay|3F7RH!svR>j5P_Q2|6p z^NGl4vN3mQdY60ZO{eA)4{-ris3kbh-b&;~oZXO6+;_8^fP+ROTsOu}CZ;4IEM`Mo zfxy##^Frnvk(PFcG^*(H$-)ey))i5bqN@ysU;+Ctb7M>H7_NP`vD{~TtuN{Y6d{6! z28~p_65PBYU43OU9a;ObCcYD_kG6zx0>Tn8j(U64QN5CoM(svDPf*OUeH}F+=qM{? zPSmMWGZeA;;!Hnk2)&x^zsa?g_nyg_^sSWLiJJD)&Cq+&$9p5?@MVk4THh+W!-hnc zs}ccy_Hp$^y2%9gLLgPD1P={WC%vIO%3C^J?BFgkAj;P$F1(@FO>&pR-u$zrCrs1N zFPl-&gbU3&*x(E8*dckp!|x1>Cn8oeeKX%ZZj4+K*l#hyui^h*5zz#338Zdm`-uF4 zigHs|;QYBrh}r9rWDlP4ImzO@Ya+mIxu}Z zXsi)10u7yqqK7#)%QX}hy+|_`u=FvfpYIWDktUVWlUkNi%Pbg2Rm^%ZUVf5t(sWXH z!r`tbSkIvIbyo7_E@1<_cels1`5udDPzBbbNK1Pfi zA>~SL;`pl0^dq#7rAq7txeKk-;6^Xw6ik@Kooz~ujrfLr1AU^+!m`PW*Lcg+oJzMk zq>1;l^|U*tgE(d-`Os45=CjdCFw|PGRg4;WbduqoJ|{B_8-8L>`ZSr8I{$WfPCJH+ zL(z6EwzQLJjJaErBjGW;eBfv6Q?6c>MEpJ!Gy6j*wsOoPLp&wQewAzcyvaP~N5*^Qno9VgILQf6!O=N)-qM{-N6M zHRinxtXw5UM1&0-OpE~!%1#lW^Gg{6|E!IF`i#II`juH0to{F~{1hdG{}(-+^gXbD8gv8Yjhv)Wg) zts`Wxm!>>ggl|@@oTOZNEb3QbxmfucE~rh8v}Ok?j40?i1;X{m)(uclL=f)6cMge| zk*;)ZWQKw`VGLJTSI@Fw=JOS2H2GG!Xu?mE%3>!^UQA0R4ik%b)CJc`xN+8Ia>`d6 zFZen2<_{BhJE2syC^B@yro!kdAiw5bk?<|ys0x&UUoKu4BRVh=y-kVO_Jncew97Xp zNrn$1ZPBpEtpA>(6n9;*QsZ~mtv*Qfbyr8J2+v)Tr)|0Tpz@1t$TLNDo)mE2uf7@s zh5RuR=x<$k|+^sn$@28R+#eUDKp~{0`G1GhnsU zo`uLoXXsVM$VWQYh{QKT?TJpYdnr0a!X~9~IxdxTUBaXa(5ZAM@Ux*iN+0mP5v=sz zea=Z4hWOOMAx7)4HZ_Hp@Tbg5yz-{o2z8Ahj?u5YkJ$ z2xZw4LSRj&e*+szpivy$T+9#&>gFB5KZbqYbkx1f*EC*Qu}w#H`P6+~mk<3Kr4 zJ{Re@)^RBwx7(vx6O=}7lSX2=-wWPr;Xh^jR<=so;S;3Ru^%Xaa>vxf=tbv6nG(+* z&lK}SCyGf*PkLF3R9dh0vSBF7X>B-^YS`;!ftk4{$(Tk2~XW7=|D(91Uo5JO?JoY2R;>KUI8EIuw9 zE}=X{wBC=I$qNab#gevt|IGq;th3xE%0dzzh53m%8BrD%9r2UbyMPA$q_)H_L#W5A zbeD7+AOW&wYOI1OxkSx6Lwb+)Rq8kdelKlF!tM21#Zjj&phjpPqYcRIWpt;D(k^-Z zdxz%WW@|OxVecUGJ3ZHPul<)j1fujfW4)hAID=d^p!YFTJcO+ihN=aQE}F^9r995L z&YM5bEa?f1pHyfGK<-ONuGrbxCYM+ zj1+CH4Qzf(#4YR{97W6x>;Y`7U>s=h^90BWK2x(Wb~JxzCMOrty`}v7mz9GXaR2{X z^1q}&?BL!3m&D0(Z%qIFmlJ$X7QjQEKdyluto6U=1iKDw;PC~Q#KFz>kY?ou0XR7C zOJ#j1g#+C7pDB)CS6BdSZ1*G1_V6*t!SbtAb}kmAzYO8OkI3(i{n62~2G-y%|33!8 z%D@af(%?S49};1($AhHB$jt!+FtT$20YGjpPO$62$qAlOlHj>vVI*W@W_9oWFbg>t z-TPDA9N@R!-|+r~krnKkFpC)2Ju|T|Gj~Md1W!k1B}Wr$)%$nIm>4{aEh`s*S^Y;2 z0EiWQ;kkk9!vNm*1ILewfcdToD*$})-s$;010Mvxrr^&{ch;X?(vMRhxO2JK!G-)6 zKwPBmA)_^eFR(Q`gGf)vT-I)x*yJw#;JE&*BY zz|2m}LZ1teCM`oYX1hYg*GKI zn&fH32`W@kpth7<%$Hu+6CL9jYWpW5nAgkvnkMyj0r8G_kJTb@i=ywyx3R|rLk-ku zjmhQ3Wxj)A>^Jb`y05>L(ei!#-rl8q?Um9f8*zfi*JG)nI8opx-Js#2S}Vpy#Y@YZ z!}g^)=c)*lz>e7`S6&eo zS;`hxv@6C!s%x2(wHtZh{A!u5OB6b+GMkC|Oahs?Dw8AxlCM=(pVSV83pN>!1b!Hj z86t~Z2kL_ORSSd_3@9wr;rY;;XCdM<-D~A<=L@TLB)5RphxSGMu2P$#a~e^3xXDvi6N=736y*)rwvT7lmAYPQ~Z7bpeC1F_G69KKw67(h#&R z5hnS=8O$Gxazp3}_`Krm!21jXu-17yTmbQqjl%A4YA8NzOAm-;{|Gy0t` zuHPsK!bi3(&2U^GhsdH>7usJ`F_VF^ot)$}$PF+^-q=bbfcE6mj4(1}j6{W0Z*hAC5SYr?^vxl5d5$Qw7&P!KSb%GILldUZr=@B6)&OE+_?siiS^$3 zYRxViO5|S9xO9>z<)$pmFSl^q&G4zA5j}PEl~q~{QqE5rPYDBVe+cgBL8q;vNKW(> z@T^dC=yGd!pj@K}D{M;(l-=ynH7eO{KoTY~NYeuY;gRvH!Pddd*M&JXho6qwCH3{B zBw;flDBv@RUbZ4b@;rIfFxU%)XzT}uwon=XKZYnloM!-JiYQpj%#gJ2@Bm&YmgHg> z%t&PJ9bP*1)HOndJ<06)U4B@JIzun^@&L;X}W-64jb^ zBAYpMA}>xovu9Z)LojnSgAvCS%7q~Cg&9RQ_N86nl851GDosag7)dAZbV_J@fq?ZY z1U&?r&`--xa)n9o@D%IS1cXSl6`eY(M53D2cCxMI*|xEZ*W@!37X)hRzBNhI5n#C% zb-!eUedVC4M<(SrHY8p`I_hxzUH(4m$j)^qGBfMrr;@re%GNR0)9NLrA#P9M{OzBv z;uLk6uw_>jS$`m?m@q3WxjNkSN-Bb9lCZ4au;7i-Ujyc zTY*GpmoJGvbtyU*Tr!j_bR_haFRpKUk)Rztz`w1DSaXW4q#s-T0~GziA;daFp*e+( zp_23aNVtomOj=X#!8oRn6Glo&^UX2y*PMB0uVS+hpQG(AXJ!=>Xh%q@C zz=V^yq#YiDn-qRzFV_(Kn-5V{d<(it3#oe{s0-@N&77<63<-Dm_+Hk~ziV!1+7Pgt z)CeWGI_v)I!3n!V=uu1F?>4@|i*NVTdFTVLU}pyrz07BmcGh6kS-DkgAua!Eits_L zpiqmsNV;TJCbd;DBo6J(yv`0i^%c%q0(La*)K4|FSfATqMl3O8fS01TtQ9j7lxmY( zvt=1v#K;tc{j^PKb88LbV^;COQ6`%|n*q-+7SRJUGK(XCF$uQeV__qzlba@OvD(mZxzI+jdy<9G!_gg|K~VS)wG z>-EMQ!RCu)t`#960jbLjwi$jLwHKn{msAY1ESf-e3z7Ud|}A zqd}tK)I=E(B%Rz?Bu5}aV(Ujlyl$UP>ew%<8P#r-_96(okIv{`^`es5i-df7^n~*v zITdijHSf@hEO;-~KJAoN=gIsM_o#&FppBER&X?Fpn2oawu|jmxO&f>ostq&#CPcAB zqq^_Y)s%t-2OUNj(yRUKk|?%!0q-~A^Nh5PgBCEcIjngWG|Qb$i*1o-h54z84N+5W zQkiA%$fN8Chn7G-BEq2ee0xHd!OtTi-ZEx<_>vmo$MO7I_tLY7rEPnddEV^D%TZb$ z#iVs0-3FH46@! zUCPUQ+g0#A2U=N>`tgT~1kufdtY&!>MwtlGVnj$-Yq12c01tkG8d3I_8tgg2aA{9V z54PXBeCN0;cz)qC)~weknI=C&GrOlwToHKn_SMv^G&=1mBy+`qERxgAj0yIzY8!I$?SJb3bCwe|0ZeXvJzN&$ZJKDZZk-TqskrvlvwfS9s{<~(o+LF5b{5s}O z^)(~=`wI*6Pp5GaPF8DZ&MF@3K@a-x9UtB(52!c$Wa*bE7ty=%Wq(W1T?BeFOME=7 zeVdUYGOce*!Ka4{MGrC~>UqfjwG}`-Hl`|T`3GK1x$D(dNJNYC}WmJeLt;7E!OCiCy zJtOjL%jX-S>X$2ypd;4#z};T!&JvYNoHw7IPX*qZmFpSkEjaigUKE}5gsC0!wYM>}5Z^_g6iCIh{Y33ICg$sT0*?(+PO=$|KcqK>B5Sbu1d07;eh?6M@he z_}0?us9|Ky&+WFPfMGGIGFZ0bw$h_K~hqp&8IY zt9Nd=R-p07SZt(epjqyUTgm732;Y-+@%QFFbaN|q5#3J+6BTl^$F|+4p!#kq(Dakv z7|&R$3)(5J8 z-)#@0@vHxSkMqA%ihm#82S{=6)&FJ`Y~VS?$Od8qu(5!+0Nfy!{}WMwK%9R@6dYjU z@CTv*V;NSYeZD~9I!`lj+BQVh?GAfU7H1*NFDIm;m0&14|P6~A)F$-8yq z0DR=cEe(-GQ&-WWKm!m+g5Sfb1T`tiYciqwBO%6#xG(xxE(ic=jGSdqmi!&W06j8h zASd?6R78qmg(y93s0|(n3uriRI7k3vF8~Gy8!q~ZAOq4SkR?RO0;UVWn6+%ljH@lZ zzqK1;jSPY<3LVqHM4#nTrLz-n%aEG54O*#Z#C8zeqtD&=G0Z;4w^CA$6(!L2-1rHC z9|a*Mdk8Kg{S2x)(^}l_@+s=a2I1!WD?{4?otQ;P)j2v%Nzw^jeLcl;hX666cx%2C zj{}gSo*ALSc0=(%2b86MOn>^QfrYm28anh=bFbb0tOf`zUmfZ9RwdE|BLF4$ zS8+`gIr9zOBkzD`Uf;IE`$b;w-S*t^v6LEJ-ptruHa-qVx@557pe+cqE#Wu+toK#p zeFf_lpHX3o-jo4PfX}(yt11arlk3wF(^wvyB}983yz3D|-z?Y=h;W#GHrBHEO%noq z`~-hke7{3@L<|s|K2Z>SU@aW1IS&rjdM2FOCe_9kRzR$fvafnNSNsJ!EC7-#NdXbh z0|f=5ul5z;zdT>RmbW;7oPX%idjR&&=L<~U{u7s#mKS;^ss2|k%lL!w{ZpU*TtNE` zWB)(!ESN$62R!==ZQj4Ka^559|NeXbK!bDr4fOu^_x;Xs4_)tp?7ajGXdg=A0OQvm zAod5EeS z!LMof>tpgK*Z+gfvfSh1|EBqx)U{-^d+<}=SKyvOd2oBo@_BIMp0!&8Jpwr3m}hkn z@PzG9&J2^dX1jxCVFs#ns8y8D$yB776`yn|#^$0&VC8wyzRgD zw0c`4u{wV~|9Px(^_;iEuyAs3-bcD^Kc6jk)7y(%+vfL+VYo~~7@T!dFsyd=FVA>^ zBm=}0wyBMt3Ty+8#1at?0oOcLma&XK_CO4@GXDqrXl&p8z-=$d>?)d#W zuujuQQ|O|6&Uu7dY)P&d1D^I#kiad>3b$tud>84e>fPGw_(+dS{><_N>ZOe-FVd0Y zla!fDDVNFTQMY}$NaV>Ex|cG_x*txiCJHJq zPv~fSij7R#4<(+mC~8i?;r7#?C}61*U|T=67uF=y#E2F_S6iEyFR$jcx6~jU-!zje zQjZo74XWGtDr+4`RLHR6Q2wz5MMk2!!eL^ff#pqLWPsYJmm2{&uPPyAp2CzHZc5=- z1#7Wq&y~@XRg2$|(?f534Jm#RK+j1{N6$Hc;pI-yWVMjmZq)2PVaDTGUG<@9m}mpg z-TG)^V8Bx*R$WT3uC9?tqgyIGv9?)CvIvTP!|T=h3LSAm?m@O+Ey*hOOTOZc$giy3 z&Y2SEs&K2XhxuOKx;)cac=NG@@LL_qvz-=-XN1iNnW@Y$c`geRazfhyBf4mLK7`|b zy-0IG?8PP8Hz?`r4j4;8o-6!OdK_de?xek49)O;+E8lgRYRJJ3-P|R^vu%l8!Be!D z*D+ZIF1`CQkEs-bS?MuI=V!hKO!1tcPeocVkG*XUx-qbX@PnG~9Z{I>#Sp=cYT7rl z?Db0emWTDN?~YjmncYtS^m#&dJA6_oxf51yN5K+6BElFBx5gGt#wtp;u66R{hOnXi zmew`!mEA;iMWI$tq1-%X^>H<625CUZqf6;CIG8@!Hx4Q7&R<`FTDKc#1$J20=is*G zs{u|{k3!n?VY7yNoxZ$jVAm-qJwl={J48aRf9zP}USdSD8X)s-n_uVTEB|H85b3zY zF?~Z!(TWDlkS75kMF)AS;gGQ#~Rayu!sxntSZ0Tpxn+ zBJi|TTz{ezcJ^_pZAWVG4T3ZA8M68fia0DgW>nltr7%TwK*kGo**CROT9jUdc%Q^C z0sCGQuscDhZD?(>9ZVg~hz)Qa_-AyxPT;p`dlJ4s*S9i_h<%X(J%WJ=8pVfvDi%Kc zmhMSOx_4&+2&Klcmczdi)XD)gMbn@jrP3ZDCRsEUd`&fn^|>Lo1L+9S!LRpu%Co2-v%+`NkJOk*Or>#m~~$FH(V*Q$_lYWPPd6vI6f5vOCz zwJzURwe8y;ddu~5g0`?-(u;hK_1sxkO6#^CZ>V#(x#>13-9(ACCOwi}kbW`CS`H}~ zFcXp&p3tuajC&i0p@a{NgG>USKFI!juEM* z=#}gan?cB?qYwXJgA}7p@0H)i$Ro= zXf25i)q#A_=0J-BKga(iou_IW7k0SPza47u?lVBZz~H@g^tUyj!O-)-MMcw0lh z{L1yQCtn;+H@PXrqREVE3HdpU=8 zg}GyE`3YD~(^7HL*D-oU(Juj8h4`SZ(edx0HujX$_HP?gh zMb{01s7quk)=yDbqu&GWH=8|1J>38r{WI`a4W4mHtF*`x8dwx->y;>G-QLMrWoJTJCX zlj>r=@fCbe(ceK~tI;y=Fzz)QE^!@m-@ll0y_|1*QqjY6)OIxYcGJ#)U5zWs(0dyh zxBKYk>d8gf;G;J$5L5v~@!QUP_IWi9o;iuVdp;RAy|=?Ht-XVvKg1CfJIU(1P6|1 zgrhn!9+nAo*VQ7)c=XY~m~~CWc!n)x-C_M2zG`Ta5i$8~H5a)b8|HsJTw~I|1%0+R z(N^Z1wu7Dwv7D?eg-2T9g_U-(#iKSIPe@Hm0LgUdlpQ|zm-P(D4S^b(vC+70M4_vV zdKtafT2}YGow(2~c+@1S^lfUgB^??iX27C*DL3J}ioB@FNh+~&$=A;B~=kM4KaEV z@J0cPhrNb>jag#5cL2eV@qcrQxxud3AGi?+W>>$RVh{@p68Iln8aSrtk654I=l8Nd z|Np-7BlY9zpPkT$s{OOQ|4!Wg(ae8D1cCid5C;d??_}WyyPRO;24vx80q=$Q_lO`) z4lpnK9TCJ1`ZI3hWB~{G{1FlK6R{z2-1D|S5F6KD2^-sw_@3W{?LqLXbw3?VZ~)W8 zVEo}|{%=7*2|jjOQ*k}}Q!$kEQrAl5(4p3R(sJ(6*v11bm^`wNpYU{Mvqwcg`w)v~ z*dy7uuV>6d9Q`3`Ez0J73RPxcwa5ZQN_EI9Nvs^=@p42H=LA#JoUf+cgS({2fhih6 zdr%EoqDv!QayU}&&eDoao88Y-J(j(;Qun#HQqRwJ=Xt0$Uk3<3E|`h@hKD;nlD2hJ zf^J2;XmDOdG_wkSwud8y+2N-{taEZj+axm171U6aVTw zn_ug<0jA>B*F_#ALlPP?Dg1a6%+K8%Mr3Ha!u%u;1Xy=Wh! z%6T9aT+xqyLT`oK*TaumaHC<@ze`57cqc}R-ywKTpXII=zE%{K&BaY+! zr*c7AV`}QD#22h&d@gqOtSo)}p*M}Sb^(H+gs=mlPz-GZ>V_=L=*6Z$CNjQs7&5-h z3^UMB1>ftp9PfqLrz(&Gk5PeWXaSC8d>fud*@7NWh43~0DC#Ii)yqggT-kS{q}ZHf z4x|3hc6`o8Ufb3kKrW=fzGS%~M=I1y+jU@g*;sVSWn1#)<&e{ei=0ZTanWHraLctT zQhkI`)i9qz96pZYdyh%_CC3(C@poSmMiMb;qfcy%!xJi(TnobvPU!&^MNJvaswEsJ znqHr1`R9sY`P~Za26avad_HZ2(y9=x9So8t2Uo??^&3bgaU+1Nb zDAnOXem5&DTxhA#W^FH4&RfS%tqDjWdzzFewg^`9inPM13TG+S;jK1x2z;R4cxZTI zL@Wrx$@m7ha<(e1xJALYK;A($?k;t_`Mg`ZXYUc*C>Erts57Al+BP>{nm zH9EV9ZIC&6KJ(<{O53`e19NJ;Dd}m8gXPtHaEa>DX~Cgw+D*yVW-sZQy}HlB(n{+? zX`8y=)aPsxM;H(q)|GYkM5$8TPO6vDmR}x??cX%kcQ<(~;KqpG>E!4!oN!8XtWKv7 z`M7WLZINT=(#&r(AAck+UV*~R&&aasZ@x?E?rEJrHzX(!#Ib^dZ~eRi;|iG!T@p|r zxYv;4iiG1Cu`$|D&J&8haT;;GvkqOtx07#>uEIF=>-6&Rd7u2an~G>#)AY>@@=^YBR)l+ z&EzPVp5$$|zExW0Jv#bIo$5OG(%iiEAg!fN-PP9B*h$};%L>FTHi{DLWu9T*%EhhU zA;Q?Dcy2xF3mt>lY4iJ$Vc=7F?g;riVgPU3Od5$bd#98 zlLI7N_sNW^J65vM4#s~x$TX?YP07$rIC)KlAD``+EP~cYWzY`80GgN7s2Y`eHq1ajjEa=J$~ysJsYi5=!)e+=7;}aBYD{in zX|mc|WtZK?`VhWu2GD{gX)#sJ(Xq5BTqkANJmfJ_INTaHpOB=%4pZLv)xn}f3 zp`Q6%V2l>&>}fx3EVcnm6S&tFQ7*RFQRp+guBpc54<+cUEV0R*V3+&iEwMXrBXZ8( zSyRMY*tu0b!SAGZNltA2!MYN1dua*IS*+46_3ar9O zq#SaPjgxfE+B84Oks+E?Lc0OAYfPbVkL&>zlUcNi%$W`NP#!9&3hbk!(&(ZnNHE5p zkUCJwHGMZ;4_@+v;At{~n@2tjT$;oB_KbsFGHi9HwyOO4^meV(=qmE`>#!?p9ocB( z_P&76wOOC?le+aGlT}we^MTp#6CWrK4@Tdosx!Rj&ws{#5_IY4e!(n@b9ri~Z2Lwc zX#@St+sVGM^aD46t*Um+@l4FI%ZnU@U2!)T-N9gH#*3QN(_@3OH+$0xK=&1=x_&GY z*1%wyRWc>l-hU(&3fq@H9+Js_)e8V1*<5dDN84VyHd-$of532cn-DV-fe&P&n_Wa z$UG^L=F1%m_3PwYVo0Z+sxZ~#QlsU&$?e0m|9(gu>IGi`=kVuLIV|7|$66>UGo0g2 z!Q~fk49~@D$o5Q?va^@KbS-qw^R0>)nTq7YbzFVpk z%?j$O&A^U`7k=1(rgdMajNr9GL?;8=RJyyOiBp5`_rgJIco1x|61Lq&T*{~K-V}xu z$n-<%Tl!u%`euWf&!q3ZH_w<%g}Yi0#UXV4Qu=g^%yW5<_2ILbMV<)rk17kZmal{Zl>`!J4MAUtBgPJT?aVv6aomD!Iun<_*o0-3-@QV` zeXJ#Mff*B9b6o6yM<}TBgdgjK);2AmViARiCm#Mgmj22f+>*_|9S-Wv?XvLt5RniVl8%nKpVTGJU4!a+l{kpZxAvEOh zHN=kW%O?wR31GW1bVO0v`FbOPEsoGGHty5PL_$(l3vZ)kk?)Ice#ZEz<4+&Q=HI@_ z#P(DTnLLIn(0#f0vFf>dXjb7V|7V9fV!vt?oig(eY!;#!YH5tTZZCo@`n$#6P9lk@ zO6xh6(wBd4F&gXqh(Csj92n5p-ao?aUC^FEX$e=N<0KkjT1kl&3Uh(*u{q#?{u+Av zx-bpbKoiBj-^WkR(gf)4jM zPvX2cMrxW@-!1wGM%*zAVWFY_(_Me?+wOfiHg@(u0)rm*zT69GEFBb046KBi%IJp624D1Z7tp9YgUu*6(a@IB$;JxzqRRMsQ zKuoN^OZc_yOC$P}l?BKR1cJYlfE5U22WhgfP=o*e$oZGWdJ9KzNe|5hg9ITbM{`^7 z?xvqx^}$~yVC-ZB1`iL71z#5df432MvlM{sXEe#fIk?rL;GO(P_q&YlX~c6|wW$IULFXHGX5%K1KkIW{Z+=n!V1Pae~|&%+3#t`Uu7)!>-K+@ z{W$xZjGOg-d)NKXpW4gD_4o2v*dDOVU-PknIKW;0R~b7O+u!TQ!p_b44;jZl>&(Id z;`~Q@xq)CX^0#|%gSh|Er`&9u|CE9LMaKPaef5v=0OK8wzu)(MLjOa?eout{T0iiN z=lpyB0m1X-@AU(6v9tcY@4+&5@Z|qXpMquo=szGA2M0LV;BWajxc(^v{rMh__6Fcx zW%du>CZ=TJ4t_?!QCNz$w%~1&KVlh}C2dS?!Fwhj9wbRo@UBT-Ag74|t0|BjXkcJ! z#LB{DYQWA0u8;u-JG%jkF$)_%(tpqLBR<5z5v+Y49zq}&Cl?5bl2S}g9O?f7g>&F8 literal 0 HcmV?d00001 diff --git a/Architecture/images/Negative-Passive.pdf b/Architecture/images/Negative-Passive.pdf new file mode 100644 index 0000000000000000000000000000000000000000..c935fc1294eee49e1e4cd26456f1b6f15ae67ac4 GIT binary patch literal 19891 zcmb5U1z29mvM!9fI|TXg;O+#6;O_43?iSnw!QGwU?(VL^-6gmLxGY^m%GP>S6P$2{V>b`dVr0-ISe;9fKJlL+QiWm z!14yk1L#D|EFF#P-%?9GM@eUoV9v1WYqbcOtqc9CKRxa!UJJ&sDD_ zuZvtS5ezpBGS4zLj~#cs*Vcp2-`mc4_s?5iW+uFEpH1j2bB=X9A)*?(9M*a73<&n8 z+q~ChvSq4#CT!6zbbS%=LsZc3z0+?%){qdMk2AAxu8u!VZAcJ2f6Vb||BSVtc7CpN z$HP(&-7fmX-T3n2^?LZ+_BrRN;dwPY(M9LwdV8dW_tz;RT_*fGa4Y2fj+)DB#p`h! zjSG64-66p)icFHDi`Tl(^X^E?_w1LwIXaP!SG;SlBWX-vua_qf3?IKfDu#Q3&R|4D z8?4Go0xWO(izWE+=rbL|8R`1(!MAiBUaoF;nFMQ|cLO@!j|-_XJgtvQzOU_`^`|*z zV337Ycbwdr{X9E)GtoO$-9x!Gp|>SS)IFqHAgYXt;&Z`0u(qhMu44-4S+y;5ipPm_zIhD6)qFH<#zsSsF)Fbf!@Ub(M*{N9$M+veU_ShO>wS6hA&`R^cm&p7ayk1Y$Gx*vh{Ve6S3JPWmwoZnX;Z6)H}kn6+Z2dU z%8{r%xm6pB)|7kKC+^DW)eBS#k+<4M2^+(QjCANgNRmHXd>kMoRa_xXC*s} zt|q^@O~e3~A{8~L%iqU~BkcWEP16_2J;llm$Js4b$Et|cm#F3ji#7$mmVR9p+2ZRm zhMK&}g6#+=6x zS{kK3+=lf;scPEBnd*)CXOV{Vf~e;nQ-YN{?a{dYe&%kkk07Wl<;k;N(&mtlq;nN>dvr19`x&6c|83^7f znCMw!(q{C9jTr*Tprn5F`*M4=77{7J4(Ic53ftj#Ji%@Sa3Mo4BSxsNCOQiP;k07` z{AsNiogd)I#6SW>%>DfROR=cT4drr*bc{y`h%jpm9DG>)uGVB(-ljVrV#B;XEAYYJ zT%V=MD*hP9ngS{tXE$j;5WWjIW~$kfr68`wO1=6D2vgDJ#hhtle}>*|FzzK|7cLw= z4wEO6hpRS^&>Ls^#2TuNZBK*o+%%R9(R#FTene>J&Wayj{HNUtviAJTX3uMfBim>f zfmoByRUpguX6ftY4*HxAwxKpvbm^1&z82F5%O*}bqu4n&Y{PL0y4-K8VTqjQ3C80> z$;TPtvL1bQUUnmPU)Kj=W8y2f_v%Gz%xQ2NSd6_>78q5fC46hZU$!hNt zPgV~T({di`CK+Hpz#RLHTHq_00+L$ufvcTcRiHwU~N%s^pilPlgcc+Wx1@#?dwfTBQE z;nHczmWoVX<3oh^x=Y{OZ-d9nfr=B zQrbLQE*{@OGBJuMcTl>gP*RGn6X1uxc?^pwbTw6pe$mHy02M9E;A15kL<(R|Th>aK zUs*QEvJl>UR7EkgZqTY!bD?s^P+-c8xZfmxEaPm%XbN|?MoA-WptEG?8ShiLU>g^? zJFfmudO}IaokV(r(-?Aw#Xdop6tfh>B3glSbPr5}38S^Iigvmb_eLT4Qdi8tYzoeT zqNw8C{B-GGjJgK&Zh{PrvVh9-yWp=@%k39@#S}}!!=3WXyQmCD z?a-Up!5PL~6B6He+AHj0$>T1HkNo5y*%n3Snk*U?<>&E=ifmO+V&Q4A;5O*TWm+Q& zIRJA|#_rx=dKz`+YOwufOqO-jdpXxY{I_)c@x6NUpjQKQK zl2E6rZuH@x=&@8Ui&O~VGA495Dt`WcuxW-jzcf;OQ7*7(6-?c~s+aa>-yUhS8&*{j!r!j0U_?MIvMN!kSm4bC*9{88a?M_cFK-WoNXBNa6 zeT3}*57dKT5)fy}Y9G+H5VGu?^C5{|eq_`v<`_{G*MeVdw$XMrUx|x5U7Ir@35c+3 zOiU#IV1sB21#DWfJdzFWK7b;2&&_PW5*@+W)3?oRKuLpPb5g{B+RxaDnPf*18?ua$ zi;9)BkpW@RU8K8&1iociZ(;0buPlmxK#`gYttAJ!6@V+UZMGD+ZTNt_Ep3Sw63da@ z0EXNHpJKp~S(0BOon=+o5(cW0W)aIjX^9C(isqre(JlUBn5r2&tRT}A0X=|gKO0M)BnspCE`^|?~L77M(vrz7qI!@?}n<50BI^WE7s5_{nyN`oXUdCJp)qICJ)Bzk*0 z95asqPA7-KG|5lQw)5+T+EvbQDdvETE=#?>f%KXYSyo?p)F6m0CV7TW2bQ>^UZFwg zs}M@CV9M6rK-T(Y2U5LGq{axxAx>JQ382uffRyDQ9Ir4`z*bVm9+Slf`G^Xqoe&`u zTu5aVk=Hfdu9Qn%;s7EGE1eGkhFfZx)i~9|=8&vXXGz+!q;ilsG`J6DKhdHdWt5Vv zNo7gb=ZU!%Md}V>M>MB@DC(N{K0wi(ldQfg%EK*6!dJ&}v zW$U?z(4xF@1e};mif?v>3^OQ_zR9A{mZyM_e50zH zmze%EYq+y!zXjLSjLYprI#FbWQ=gv;?*SX90wxR{kvnaUsmcT)8E=3qNRl$6MNa>j z5p%l;t}%kfEd+A$X=gLGu$DNk=vcogFe)T9ufvyzn7{g3k{QYqDgZkMI*>tKAXyAm z3|m|Vew&;ZgJcB8?}!au224iyNf6)3_jyp;akwoa7lp#JG%TXb3i&gs+sYZ0*4QIs zH>V~EydFs*eboLU$%qpjJJ|^ON2NKQppWxZQ1X1r0>x1*zDTX(8pIdzDR6Bz;Nr$h z;&$0kid;SJ8ie%*$xAG4Tv0}OgeuF;h8KlWS}eMW8yCA3bv|wf)s>Q~zQU>;@w53j zO;7^sgTZl(9b^k;9f3cbLhe}|GhNy29171M`$V(Ua^)E#=jmjUG?EX4%rl4+zhpHN zBrZlD0I?;g7O_u15WBaGQjj?gv6s}2Hk#KbV~Fk+xm_6sLf}qReQh`b3PpQPSRSga zA39b~qVxH9SZUe5A-^iTCJhKEHIw7eGb#$A5vQ;ch6y7kmclc(0l3b0qBSfw zOM%O<=WD5HLJG_RY%@0Z>%?>%!RD`I(5yOsWSa{mWO7`HQ&n!wr$pQ%&D|l|TovK7 zTwQ&P@q#K>A>|}4gSjcWdEk(ZGK)l^q7zxw@tWIMhWcUO`dK&nVE2JF098t9d&|l5 z~&JI(yKEYkJiFyHnJr(*UDiTjG<4cz$==jJUCkAN}_qEF35q7%3hto!mNNZfzX zqhrj!MjT)aaGLcRO@|qSwxmocw8)b@q0Z8xs|cYMiIo{z#CbbCLyl1#CbxezAOA+w z)chj!VlpyKU(7!Mk?QNDyUu^n$f|#BIYj^PEjODISW0%5P9iWIu=RRLnqXAq$bzZ3 zM!n7tMN}-rOF5hLy$I!vp(wXh@PBrtsruGllANWKiLSab8KLk5L$tV{LGBXyyqekm zd>4;%9C4&)9Qs9QtXQ%Mh?9^`t7Zb(XT=AsDn9|%&g`jp5R3;z^cid`USGsG)RSsVVz{okbbkimPL;5}ugXJ>fVzRQe%3nwVL*%|@p zWc5t`c-k9TI|7(~hZf|G9BiEI4U8NBtiJ(48*9fmy#wGq9Pt)=kTNnf(-W|91!&N} z0jx~S045eTEf_jMdmG!|FfBbJ2Lt`vtN+w9va-@LaIi6J0q6uQjf@QcQ5is|Xm4iq z4;Y4y-`?>bD1c7h#_=ue@z(fT$m7qkz4!HfjPIcmS$i7;1tUj*#+xW4^47MIt0Um; z-GVljHueg(dIm;-_hNz$3;?#bYHvdlbYKL$cUJzb#kZi!+koFnz|biwG6ERh2l-Y+ zQIP?_@mG<5zn6jG4g2fGf5vDS-Y5F4iuBu*((%6sYOLS8ODAOHY-V62|5@OFkKY6; zX@q=G!g`707=mdTpZPIIlPB2bNYNrukG`5;o1zg{Yk^a}G>5@o6BlPVdO|WTISuPY z>Aw|T+AhZ5+C~HAKkeQ%5BVftEUWBtO!Seb)|LO`wQ$2vt~f(7HS<)X3D2wN^#_~% zOza%LI)S!|C-fZB9#)5;qRW*jgW*ojheJY~JUJZdBIQr9W8)~^0#p^x9U8nbGW06s zXO`zGHccO>?IlPrS0US#YiCI}P=)+z%vWneA%ePO2pWz-!f}J7NT7b@bndbSMFwFm z-?Myt7eICeclE3arn}p4Mv(24iT$uLt0;U;WHB$EGL9$c(G=YD*^R9+ zk4?7bYT3_euw)#s-wCd+L!P=9JOfNy4mOlyt5hbLMJb&I68bmu#K-Fs@y%IgL=j^(aGWEPkPXUe|m! z`q3WteoRDqHcHiR$Uj*Wq{jp>66rQ2e>00FiMwJj+F13_>0t9lP8I;$Mi($tK*;r>d z8^f>Lh3O-aQJFX&^z`a6U!NAKmnRCA;3!TgZkf3{w{%Swc@|tSJetu%J*@%a%M&9Z zgLtbT<{cq8R+PHW;9)pw6~XNl)X}W{+#}dm;8Jau{p+9FrYmcXD9Ii<-FLJ z#8>TW#$UAc`skMl^5I_NvrVhIc}Clek)1q_bnSfMvO9*B5?K7v_&BK}zu;JF;a;dV zL87$JLl&l0e7eWW(PaJ%se#+9fiUKMX|e`3C(~KgCP9x+kV?;aATQi2Z5xdjr59;> zB2OZ19FbNGt+?#CRbCx?C2Eww348FtY1=Om!9@I^Mzt3lP=?F+M< zb^SFsPH3z1xP{`7z(q6(o8&VyhAXZ0E+KmSh!~U=yfkQOa75@8uY@lxx~W|$2V?M8 zo0N}~yR5u~?c`{sb22IFP5M+G-J9g`P&{6mVjqrn8s#UQ`WV#0hG?u=-Rxp}T@+4; zo0A>dgWIiCxW~PNOkZ_e@4U|K25^L^Fs25#@!5i0c0tck(me#MlE&(JFCW^8tHnL; z*zel2Kd$NUHmI}x#Q)$LZhAGQe4KfwQ9g#a;q&Fd|Ainc(^Ki6Ux7a?(YtkGpl9Rw z%T&JGym#!)JcT9to>>Kr2!28#jJg{*K_;-W7o7y zah1?`S{zJ3Q6LFw;c05W@LEA1GKMOnhSx1iHH)D(92+a7QVu&hvvQ3Y8mA?%l4Z-} zZ=_;?9hPSC^!r2AQ?kz;_l?Wi<{@@;A1Io*xL9y?*;2S@$$>(08%UNK9 zZQiwjIU9REPtA3Bth{Y$Fk&)pUHSdjiO4a6G5NsH^S}vANfUDvSAvV!>}dKk(Dvn8 zX*7d0X^+jX_GOvltj2}*G!H{5K8_`%9kMnNjN>Tzi5SQ6Y`&R5+D_7#(GAxNCaZS! zGlC>HSo|+&7d4>GL_T#hvKuG&MXUJtZ96Aio$dNU3m3fqL4n1t-%CIV!XI+%ukg z)rmYrc$GocAUp?aVOudyLc%Z;7WV)btp=EGG`+O6sr+bk`k1_dH^Zi7bcKQ)-42;# zv3Ij&xdxpZLipuRxzxeD_6JK-YwpOdLpI+yZa;NeH1o;>1&xgwD0wBhc>}xpO6NH; z4&~3>OwoNE)qyBUYbCE$$un~0(Lco-=cw@q zEDk>x*~oe?6wdnAN*~9}`)TLu5DjrZi#r_b6I$t77W7!-YqQrvAugiUKV%urpf3lK zWqjuPNY+cGFAMjTQX4(EkB|ZGFoqp#EVNDLaon3{vGSUBUh1(O4nd&Iq=yNz%$6CL z`yTRmTqFg$p7zZ2>Zf7nJ{=viz{k*MS^V2ZwYh2S9p$J#(82>nTs$8vI z|A$V(#$sWI+Xgks>ce{dTHPUmZ|S9tuOrY`J=_gd@(#3T7p)Dv2CQRuVTj?5?J_N8 zlPp`oNSurwy9k;$uLw8&a*{CW5W(Of^A)D*oM` zkE6^|1!D3sUe1V4#M!#i(BRX!Z=g@CNq7Nq#TIv!ic{r&j|AR%fsSU+d=Sf`*e8UH zr5^$cDzE$?pPSN$Nvm~KH z$_8#*-LMZTrC<-inb_wUyE6$Uzl<{U%au(%#4d$T5qf?`Sz{Vucui&LHNiT^+be>$ z%njC{V&1n~N8Z)4>1r@O%I3^6qbugn{9eGhhqc6`)L_Me1EaVOC)r`9T+{2qHbMM& zd~+ZzZPlX3{L7d+SMi8!%BLYZj`_bBzrT*p7#J8>|1xavUfw^9-*3Z#=-c9W9jtfF}_(v2{S{7H@EY*|EKjg_mtr;fBfC?{N1LYo}-?njmd8( z+~H5}`)`iryWjbj1^!**55JU7!Aalo59eLc-pS~<;@yV-R;uyK3keHTi5git8#$U8 z=t&zny*ZxmIw2zm1A8-DM;m(>hCdy9Ve7YZLo@5QE=cJa$lF-yS^pamF|&7Y6g1Vd z2QbsW9X{&)nPFgj8>Nbwp`+;^<7DB0VPtvtivM3OR_6Cbpa-zgzc0|gE|}jE8{_-z z{Z-~)=^r1cf0g}rtv@6dj`t;_2e7dH(c+&iz2#Y0|G<9hnV8;7G5xU=EcCzIdQbny zI{lqT{Cn2_J$b(;Q(DjJZCd|7CficaU#MtPK&HN@jf7@n% zc>{ktV`lhGh5kHpW&p4-z3+kl?Z~-2$xHIXKHfm)e$_-UJQhJcuz{`R_~LyaQ~zQs zRuS~M9tod#m>M)`0MZXbA!w;o>&P6jaFhb+(>!B|7Tyx+WA*Y?Q#PZ3a`W1f)gN`J zC9Fy#Ic9X~4Ni0Oys=6a;Y)W-Tv%o^lqu%-YghIz6IUKQ6Xy@B4h^=~XV~(5(#W7g zk^~u?0<)RL2tzW3(R8kLj9w^aOMb*P!8ezr0ud}V!P2;s!#Q7Kx~sl0DLmCNJ|LML z0Vr!3t@w_3U0pY|%c+0Co2_R*m_4^1;(Y@REY`U9ls$d@4FCynjq;37DoT-B0A4Nosk)fGni{J<{ATN|&ShPY~G zZGk&XerS~{p#d{fen$HEI35Yp-;ELvA5{`sM0bT%Es|C=!V7Y=ZSFJ|P})GjF@%K| zgVP9)PSqF{?;;|G)XsBUs(fB^8U{RU&0k}y)TQk7jTt^%(SBVuaA05K+|w8~Tuog{ zwyXy~#d70n1W%+hp6X6_hZUVGS;V15$pKv>71TAgbhSKGO!T0biFbPPTszB`5HyfT zY+h-%#863Qr3viwyiXY;vSbakg-;Rb`N836iT?%XAqRZ}HPSyoBcp%E&-WYz2+z6&rkC9XLIm zjr zYb-Soi*(A(>4^~Ar7!~Cn!rpYk)5&aMMhADN@9=2&lXk!8s(k1wDCj2(hdwWX3Bt zftN@=wT)sIv-Drjb2SA;WDA8=&}=SEWWO`5ZI}Z)k=1D{Mz>DLJSNYfCLBxe_f!ka zs%8@n7G%WF8W22iK76X1-o6I8s@z}v5JcQhxt;DW?5e5CqLf^pn$hnRK?0Tky-EjQ z8EzOfU>}f)rBCzCM37rOP#@DSdy~@K3KO}(ZQL^u(CHjaNZY^CIz62+M+K%$h(!FI zehcE-{{z_0MMR@IW+BgzNunppr%aD@GL$B@+rb|_C%@F0o;VKr=VxkTo)NZ_H)KLR z^?ij!G=e|mMdX3O@KF>&{s6`EjS?)(c9=w+1V1n;vds|$bnx%dA*K3`<#0AOyP64P z4+SaaTINd!2e-{nEzkd0sB%ydE85LB@Zo&uDW)J1hvK3SeM?J_#R@_9W(!Sd;is|wv}ZCLB%DG#3wHJ>8=&T!-fTUoAyxFCYzJq zP2`<&toi4W-biB#vY-j5K%2(wSSmhu@EE$>jt0W?fDjF#7$klHFlc0we+p0yKkCh# zkU6)t(3g(3BIR?|deRU|<|}1 zFLwd@_ae0deD;B=*P2=@w4`}pQlix)GhKEf=REA=_9ly^78LXKw?xzXYUJlS+f9hi z`+63R7}?spp{L>FGocw)8x*G8;1_7Dt}q)EzJ)*;ApcD$G5M)BtkcI%eK1^h#ca^Y zUGUQyda?WE5v5T*=F;z5o?PY%2(7Gw3E7PBVMZO=%?$C=-GoEN z-0^v}Sy{O8Whcx}-GPDB>#PT)dRuM+fmeL%FRVn6B0Gy%UqOlOi&R*NPlKx`aUDT8 zVbg;%{AmTg^LdufenGTh@d97lBJ!^LfZ5Ef7d+I$tS7{rjkQBb^{daoe}cYATu%(U zRPzeA@0+FR=k|aXgS0^RJJx>k$K0-{uTx*6vKq2`G_IPA-MCpjRV+N+KV~nqSZHu_ zksbO>=SuBX^j0Xg67N)Fs!+~#Jr09>Zp^JWs2)>D!LpXV{b(Jmh<`a$73OcvbMARA zwFtMDP8U|r)AtO$KNo*kGXn8z>Cn>pQRSo#l%UfN-`J%*e}nDi#$q(=>6Ap=yIRtm zAz3;=fJgI;sZMr|5{#TwWmZ(o7UvvW7UszBmhTtd9=jtBC*&t!Enn@RYf&*I3OyRp z#4IH%JktlpYuO-tS1+sw`m&H1%B_G0b*pb4I4(y-D2kC(-K~n<=uO%2p6I2Eb53RB zp`8n(dy0A@@{!Q{VyPW0C{~CV5`OcdMKq>`h*69dqH?&0md(>~C~797A2SY z?w~Ij{ggH(PmCTccjwbqx2>YD?fv~;TseNChy+lJeWp=juFegy`zj$hTD58{Cdwr$xZ-zB$yo z?|e37T{|je*F%jwVVHsW6%ko%EST@RdTe^NfYZRd+2LAbVIc6m|H@PYUqKV0Iw#6` zYg=(ywULa3SABq(UqYniK4zPln+24mimNCkX0cYWym^p1MQTTOf-~D;J>>LL&+`iGPbrmh;Hsz_P)K@74-65bF=9 zLoCvf{ydU$WFI}F(X)Dk?(w;nqoaRVFB;GLe#A%~^ao)P1O~e@;SO($Q%*noXufc` z9Y!zvh)6_@ZkGmqC`N!NtbQ6e!?-_|34cTlpkEDXn>ysZ$U7_zYV)z%Y6bNE@$1bE zu>-9}LBc@o#;X7hlG>7(3iIhzer`pi<4Wq%@;uMipYBYkr&bVb1XAW8OC)RDnYJSql|L&pNu^Fb>*?K80mM4ktx>g zKMrc}`!2+1Re(8p_G{rFV}>-chBU@F`Gvp=X#%!D-T}T|a3WeHyFVfMTpk-Wk&)_K z$-OoIa~%2s1OfaPa3HtnGY;r>w0i`9r_vF6}Z7Opv`6gXSZ zWf8oocA>j_*15v<5&}u3h?;qg3+OO?%K+u-fy#QG*PkJMF8i$n$Q02^`AOhwsjpk##1Y?#Ob_q(n6NY_ol5n_woyiR#%=QE(}x;*PH5#YyNQq9WC(4BDfzdW_JG zlP?Z(L7NDka*g(YzvMTDIK!E44?ID7!LFNGA3b2W^E?50m|miw+V@;TS`g?)xEZ{%4uLa(~ypV}JeqTlyFBua^EA)4S$>@ZK=}Yb4}|W z<3l7pBuqnwWP(YOdv1GpWK3?TA>6S*(7K*_`bzi$aI+WQk43WKqOPi?yLwaVB~Y}b z$XZzbO5c@B$~6zoC5*Iw6_!#utBqKdD&dgb-JLoZGeWnyG$mlp)0v!mjh`$%dHia( z@iCb%SL^tOUP&XVkH>Y_9=o#XZZ_o-9)L~&E0jya^7wJ`DXKBRD6Tk-7eDs z+YRlHTJg4t@$Dn+sv?)-ADQeKkEO~LT7|b%5Vl&4=40}wZfl`0+WkKp(s+B}PNWlv z-6JA<#*@&xy_>MQm{K*T{lNEzGOwn&8CGQ)N*30AJo-!$*Kl!0ms9Q-tqu+cWTlY{lcpwds%dU&&>17)?LqN0x>lAj z;YK3YmOqM27A=yBKoO06BwhLjNLVed2O!jF+v(WC`WiLP)L7fG*Rk|kmPBr`mV-Mc zvd_iJjU_n;$p(Xyf*H7R-fZw=)Ho*l`V32Fa07g$@jmp4wz@6V&ZvR4%SiQ}cRLcE z791!tqPqO(>JK`K@&)I|<`u8A_9cnOmGZL;VTng0VNE*&GaZ$c)rpE@&7h727x%|P zXAZ`(d@Zdw`e@0k4Pw{U@32hN3&x#FaD8;!*=edREjlocj@mOz9r;UBymd_@n?D;h z9(B$SPJG&yHV==w6&^>$tMq@gHScMbsS$KNb2}v*b3PSvKB}qc5RAEL6;8}_+u>EK9H{MW9sXrDRgPiomV3`ZRihm}ajfcM z{(U9=iUgN6aV#LYSI?GDo6vI`j_{=Sfbmj$ITfei7Q)npyN?dMy z=oXR8*DZ=m#}P}@@*S*4`Z~6S>)rMFgPvMLyz_7F`8OPFdJQ~#KsGTaB$pbJ=3R-? zi8Aa8$s22YvL(e8Ry#u|u`E|nt2~}@f{xEQ~MK0mVZOJ)QB-Y7o*le{5mpa=BylUOhr#{0Kp1$2kPP1 z(`mPXW{W|;#z+(F71F=&dxnt{pD+%*7s4g2>jN&O^}{zAVsvzJHn2_YrpY~hOkJOD zpS5%?I1=2EWiFwaOgo*wqN}fV&R~HeV5+L;}_8iI%iGi zS6qc1rc@N^tj9p->~`N&ynMR4<$p}%EcMX!Y;U+lM@qJ$_bj2&9h9SpI;>u4l3byZc zm9hh;Yg?Xz(t2mRI!QE~W&#zY>!tv@{a=$8>vKX6{X)41y+6}M)4V5psW!XSk3Fkeg%78WNTtkB4fUJQHO&@G&Q|>uV~cgzEvyC$ z#wR}_v{I}74i>t+>-877Ef$2;PLZMWNVB=hLy6Ew2LovE@naW=ANOmpY`CCl4wHo^ z6A8*~&ZtNdQB_Of>T7k^5kv>0k9)7opyT5LhHF&2q(INg{6KI%%9aZwh3>g_d-n1L zWP}vSplv+q_TKYAukVUX_~J|MqB6IGI5u={A5SHLJA!=bB-;Si<+TOF0$PJugN$f^ zqo20q;lP=<7F-T;hOQuO+%p)Bs>eJ1*%%efM7f()uHM)&Q93~r=HCQvgV}XgOh~GR z{7Z4yKk}?}xa0mJcjRZl=}#EpQ0aO!=?Yo@sR7>muwd)Pf@j3f<*?2Y(+?e<&eG)1 z$4ni(s1b+bAR&t@;J$wWd9x0E2!(9PG?H{?G*2L%pJ)ux@25PQ7sEVC?T z3qBdpM{17!DZUKOtcj4h0GbrD7Ay)hf9KqNeouL@C%_DLjm8=9a~EB1tLP6dHk@>i z2XZ?f0P9_}k7Xtnl;QzK@3Xk@6M+ktpkCrSfxY;$re5FvU9gs*3xE75lc(I8pBGDY zcu63JuFjXTFz`BhH<0W&YU=%8K&9Q)+z07=?PUY1N}E8bu~qd{tXd)-)FZL}#uCJ3 z__^fzYBGl5!b$7w?)sVu8%L&D(s+ZY{&AHkc)f~HXuw8Tb$qU0R4wq{ekR5YM^D%9 z7Jd`>}YNb{X)o}g;?(Fp*zCS%yJ@ID3k%~naFaikaDb_Z<-*OjX||K8FiT|LD_+D z!KH!Df%bten~)3*G2O?4wZj=qu=BQhSYoFN!%0qu<;S7eWFh+1_^1a-zwzbiiiAV) zJL%YK3|9|YNl^4qPPf*pGVLU?@w>>5BwAkqKY|84d7jzU9&E7zOO=lonS zk;g~7K96#tT&KnQfHsVn!2rVAv<76m2 zXH~wF{ugP>KSX|V)`MP%^u;XH501Y@9p9Wss%P_qVvUg%7c zFtsjDy@?`d3Gx*-L*{>d0MCW^noB||68nEc26poOTCT{Hj>A}j%s440D8eEj!cx|O zLzw$NZpI>!!S}mgUyP4dnP$FF*9(20&>gfCXj{36Lh%z$jjwbT>HX5+yJG@#j)E{y{oVxO6JauaLJXzlh#Xh z(4k(sZ^k=h(V+i^pKTi~03P zqY)MiSg=b(98NSi<(-~c9~OaD5Kq7nKnMI3I@NSX#gMP`+d)QEd><&{3TC^d)*&AP zgsF>0Y<+xpFm?M!-Kt|CU~0B({UK18ZBfo5hclrd0+V2q8^!q`kb-~%^nmoR_^|#{ zfoG$`z$M zAO|CC_MP;+9ySvbUq@f1MqFwiN;E{x+*!EKcdvQ56#rAb{Y%^aWyN#!8A1E6yQ?@> z=5kfGbEib6i>{hyI#OfhAc5%kha1mH`PrGJl_sls534H#8;@Tc4ti%l&=&^c`z>@l zdFE8{ubL4TxQa%L5m7#=vp+)*hWBOIH>YO*%4jM^u$+zD!3sx1v z62ch>(l@sgdIN6*m+z^fw;g`5fsh9Z5!#|w`XpxFhm@oY>UoBOD7gxlW+i&DbI?yB zTv*+o+!Bx=2K6!OYey)cR~HnHwe!C`e2?PI-&8o)KTyQLyxH|hRre{EuM{24umYZ$Wz+% zqvV!-7x~cfi@HITT(e*hl~4Z!eYfTKZc2GbrA^BUQlR~|fpT2~H0&+b!g7Ephn9iPe8d^!#4BA^28)iJOE35_{vd?*)WwJ)q%w!a=RvZXyN9eh<2^wv- z1zQx8ttHA68pNV|z8~GE#4ScivLbYp_$&1eeh-l%tt;3~qjkp1cPEcsuK9mBK_y zBmA3->2VwH^I_W^k6V-e!lUZ)ifTTUwf9Ex7*nCo&5z^64`gH2YF_OzAGm^b0EO{| zz9x8Okyu@{(hUzW5dGO~B}{|ZH0W^%VRMTKiFPIW*+!gelAW}8wIgLaS)yY|MV8c; z;OXbd!lAY?4IIM{B;P2v5=XvliUut2tX5R6>&XB54vL@F{p?K;%g&S5&B+4+sX5l+ z6g$U%72mCX$f8hXI>smAWUU@7m)3E(V$4NM{qP~p@BmCuT07V+HwHo}qI}=$Zr9n@R ze4$51z#)qV*mHzg(n^h>0|;=_jw=0=vK}eaVSx!oEc<6@^62H5hog=ZT;-Z$^QL19 zIz=)n$nCx*3QvE38GEsfbgU>TJ{1}HR=MC}Gds7UI&~&X_PI5_n9g6kb;;bU93~LK z)w21bJhFV9GPEqI$;m)Zq4#_l7v_M{dA;69$vhj?55T-Sgg9Z*QC0AG$)Oqw8=9lg zFo$>fa3W64n15I@^jTYOCTQ3^$pGG` z$0B!|388h)ujrDXK_&n#YDNi~I;sC1>}n#+s=PLj{L)kjBeC4)(%}d=w68f~)s9@T zI2*8s@PWnz#DRS{kD~C0%K7!ctO(&y`7*(TLfDS8z6Ab5fqeFaC!fG#Vf}Ul08L1u zw10{m^i+dG0X1TxOv?61b@*RtUwbFN`_jzjqemP?p@MtM`zSXhQ6|71HqsSbh#N#NH>iFFFvG+j@J#h3;?zBERuVZsziT#h3+34T z^Xu2Iri9_<$m;-jl9^w7W*Z00(F*>ByZFs#pVv8^HaayrCO@Tfz77S>x}9~{`cYY| zuQZ&OH{723d|7v7b^3~#@o8kNID9cAO6s$<9f5r~Qt94Zx}g~L1SK~TgB?kOsKB_` zAO|!DIpIFZPFg@(T#N&Xz4RYo@;FUwjD!4}wrvVJ=14-!lAzFFP*Ws-Jd8_ZC7V2? z2CpQt*On)wczpW5evz>KFq!6zYm1etKjUgpu|>j}n%L}+rx;k=kZ&#;ME^JxuLrB9 z5S*kz(=OJP*mQKp5kW!uzueN~gnA@|dV~c6)SslwUOJc>juu4^jKmLWn7rC|^Z{AD z3QU5VB?((w2_?2rVjfotuxpzIdbcCH17ue}(g(Cpj*or3lQ!FYm!mZWSdl3-tishb z6fk8v;>~U5K6PCAVLrNC-+W2@nTqE|>dGz7Q#5A+t@hIO-7sxnb23271h01kC{F!jG4>g6qKz9HO*CR${2Fpeo|7&#h^T# zqd-RpbuY$r{fO`y(!;xT5zYRK_&>!M+|ni&+!tibu!){lx02md-G_qO z_a~WZJ9L7L|35`BRUT3_7XPsVlM@{(lE|c%TNo?Dtc-4DFXgCdAy6r1K1IOPF-lrz zN~M=tdFpVbEj9*iPq&e3BOGj^-XDbBA7HLE<=b6&T)^12g6cHmPK^%Ee#3ot zb6okuO}cy+*)P#RDNLP4NtQ-wdQKkvrxL%X5|R#jugbqf)e`^v5Y#qVR706MF3?t@ z+P7S9dyXlewU+7Z=aMT_qedjMd*pb&A0hWlJ*d#UXWbnlS)s3JYV5Zg>#1Yh-dAZo zn#R?+Aj>y?ygK9#S$n~r`E?IpTRu=`uBSkn4rG^KWb(i*tSnW}?p$2R^sV|UTq${q z2(xh02j0M?q@oZZ`SteATbumh5&zKszUaELSG!5|Ye^DWuO4$!tSfPeR#*5q&RfHY z%b1zCO33F^tM)(%O;7x5dGBU29BJog9L6-3UljIfUy5*Ej!9k)eyS(0v1~nmi6Kju z(h^8<7mdzK4yS5ktc0bL%3_f(EE&EpbB@5Wn}WF<3@bBq1c8?vyi}uucb!{N5GM%k z;7>Q)u@s=IDmJx17Y3q>1EYu&1Ea?wfrlDeFeLfJc`8W|Sz~jxwrk7oi884od#7nO<=4rbUi%PvvlpSgF~c@NUT)ac&NAHhDh3>4axCj-`-X#bf1=B05|7U4u zRm~LkUA3H6azstE=lvWB%UkBP*%zXp8BLeHS85V-G1BDSDi?P9x3_A4Oq>@sS>@^W zDrR@RHPQQ5xU5(3KQ+0iHb3XjkC_X$AJzEy=bN=$-K?%6+fI8 zDA}i)ANADq&z9ov58J1oUl!`e%QF9G#pBs=dviYQ+^e|P@7uhn@`oM<7N+sbjkkTX z`}CwaLhV!aNByq`I-l?V)jqCJw}|7?qC-W3ar!KR$AwmyUwO1V`s^Ckjq7`3d*_SB zA6}PweWP^3OLHZ$dp+?DdLqI_0dnHHwqFjXoqzjgMs;qtG{dAj zjt?Rqh(3sIsN4Kk(|~2+Gv-tWo*6u681vZPF}!0dV`OhkZwzlJZ~S~<`2hj5+5A%& z4HJwE(j$Ji|BPIAHu2ly-x^W9yZV(Ltf;H-k^kJk%f8U3{?d%P&olnLG5lMZ{7W|Z z*Y)0)=jAWQn=IR3;S>Ky&My1^mv2hZa^*cQyYIhFx80v~=I_+xU#pLOx!wajaOJZ2 z{^RFo)&HIGd-m}!A0N*Pe7(2**MH_KY3HLbr>4P^exQj!a{~+b(sA&@WRRdnR&h{j zVvdtudQoCpT287aeEtx&a$F-fG1)&@AuP41I5R&FIIF2=XrgDP5TlV;T%4Ml1e^y= zRWP)0w=|8>R0u3hEGnr|0Pa)-Z?vo^K^O;Hz^>t5TB+cZSdf^Li)0yWNx6o9ZeAvE z`whq`3TAp{dPWEnV9S{`T&#=?3@r@}jSLKojm?dXq6`ewfe5Y=c^hL$W(m+Fuy=!i z%aTh=GV+TQj6jY7a)FyGQ%aM8v+TgRRIq?E@W?6Ps&WP3LSqCU=xZ0?o<}Yt=u&gv z{1gyh0m?_LKdvZBO#{w48<}$%z<~mAPT1H~Ax!}yW@u?(4zvpd6!M^A1}4D$r08P6 zDPRnB1_mI1pzAfq&}(7>S{jY24!E2gI75soW^RC?&d?B3%)s2x0_b&Ay(Xr{SnMza zPN}1+Gc`BI&}(LCi6Lfg2%L#V(`#;OhUsPt17P%`*a4hp$1u;(&;+>l0ZpBu8F11a zP0Yf=7{fdZ3*fSK40RY`U}#}!223X)0FO(cm?egor2(=XB}IwA=>pt?VPlkLW?*7&ZjqRrWR#qoXp)?2W}cXsY?NY< koM@PAoNC8KSP5k9LvaZ(hk_F-Fb7!z&uCM1^>^a}0E5~}od5s; literal 0 HcmV?d00001 diff --git a/Architecture/images/Negative-Realization.pdf b/Architecture/images/Negative-Realization.pdf new file mode 100644 index 0000000000000000000000000000000000000000..d6fa8ad996d3e7e1ff25fbed501797508840b96a GIT binary patch literal 19126 zcmb7s1wd5W_BSEjT>=A2=g=L}-ALEa-O?f5NJ&UZhXMl9ozfr;5(3iQ={FeH>-E0> zdml5Lv(MUfcCGlWy@x_kRGb0G$cjkOxpuU+U2vQ=(%Fs324Du*8CfFo@d21*O>E7a z%>nFSk}`lv+``(~#1VYAHgq--H38Wfn*am^5S^SIO$==i-5?W_GC-* zvj)BPc1ToegwjMt0Z%;5J(!K_q-bZtY)(e>7thzccD6wC4-m*5A3Jh2cuC4P7uIY= zj9siqQx*jaQnZ3KF|DAN;X%+4APrG=g{N$~fHVmpC4+Wyn0TME_gIX?4}cjIs~N5r0jFjo0kQ*JrVO;?xFHUi$&tXQ7> zC~vr)?w2)xNP9Sm(oqyws4rN@swm=T`&7(Pk940*m- z4xt!_D3pDq!{E<-D}~aEstnytM%G5ys-+wbVO#`tL6r!J;Yds^j;R%$DD=33x3GZ% z5@|l_*%NNJOv)FE`c*P;kM`AjQh2GUp;mR1f}Tm^%vsVlc7Q&oH#}a7l3CB5CBQRP zp+#_i5qSAH(MUx$4|%ONZ`z$IZ!=4;eZjA}e?EX}|5XH3f#90YsrI9#&ao3-7C+1mLiFmlJ!_tvG9W~!;8}s zDp`9Z!*(Lwl-AaF%mL)G_UynHxeq1SjlJxjrhpp;TvqB#o`A!#wj{v+Ku=2rr$?!8 z51VNsgcTI^Bq<0%n!TcgMkRv;3u~SNxD3b3x(v-Ll|fVVm{JszGA@C$EFZa~Q;stH z#xdu>oZ)4PeSKyrbnB~>A)+oO6!K_dJzH$blgVz@DV(U`%=3stWB;CtW3jSw5z-as zFBJ(Fun*;)Sw$4^4!n6SE5{jWJxY(8tvS#qIdd%RdEza)E8+$1VH#Y@bz@O5?K6Jc zQ91jGucS&?FsEj|4eG&;KX{&8+B)30z*B1%R=eXl*RB}eoqjsrQ(6o2c~<%LVt??s zC*+!K`dL9hQ=uy2u$DKkKfk6exC#zQ;ENu>$=+pWwf38Ygv>t214ldQ&7RY^kgkTnTx zP<(C|-vg(P6LFI)mz~SfzUJH`t31<~%+iO+seo`v_eE|#chR4+uFz}@>=At&}> zL!*Y|NQq6dSH1ZVMe#U>kPAVsdU+vv+oox06s_aKjW}s!tbSVM;!!0XGsWpv-k5>3 zRJnvEoSaUh1vcwv+`Q@3EOt*YscTg$8??xGiEj|F=b_r0D+TlwvosI%1`FY_u`#iw zXz6i9ve{~9wbwVanyS)j3Nzu^k+tty;))~P1UD_#|IN7;4 zf=rwM9N!5dcDByocqhQUganI2ITK?G!zXrb0BvS4fsG3Y0CEC#5t)?joWb%DOajZs zA2r^W@KdHLI@*C$Oq>DQ;A%z10ZghUZq5K*0F#KFwVk7iy&=d1a4&jAoPYq%?-hwS zu>iQf1qB4a(ii+1;1q~Vs;cY&;E$J8Rb>SLf!~v>se}-xYu$HSJI$HT=7H?hl9!Lmy`+7;;6L zoM{?l-s61At4h_5ud*V1H#31NTp1s4Jh1b4NOla#oA&wVh>~V0;l?Hg_~&CDZIf`< z%0-Im&$h{_1*+VHsZYde4te8^DK#zAOoqLVZx=7^)-wrS`&U0{dV7uYnxccl=|kbs z{3xiemFIGkj4)S;kiJlzKW=ac)8`4@+uIgx!B_?6r&N2^`%mrai0B<&e~i~#meJ3f0y3kA>wWq z`c9aP2YO0KVcbg+er4>{L9%d*Z|6oI9)Lve(xbM#9=LJZ7aNnjf(s^X(X_~|zera} zys2EO@&DSbG4OD6M_1(yzK0ZV+v3}UstvnPNo6+Pba2{DKh1swe#cm8F%kuc80Z$g zH^jKytpz736R)rud(C!LDJYMyZ`NKShP-RdX>D=jr#T6wxYe$yOn<1+JHkrNXjH*f z^U7m6Bxpxk0EWaN#WwA7NbkMQ7-~N6l>)7)^nuZSb^YD|wIkBSpt$^aw1)qO=P8m< z9cF<3DECnX|Fo(lI`jfU1|zi(S#rwM5>nxxwWzR?FfDQemdhQPA3oC^46Gb}P3snw z8a>#a>XNXVuKVVRNja?UvntxIC!|Wy8MG&G)8X4H+4y^eOMPEg3ex+dqB9AJ3=QAo zeZ8KhpBv7fL8jTEIb-8({cK=1Eim;A*Rvic%*z%aJvZDR+DrTi%CaSt(1zCF7ABlf z^KD4;TlyG|ZoYnkV;H%nqwYoirm^zMEn3Pe9*P=sa~`<5Y7Y{(hK4Adg+&G%3%-Quk-n7oz0AV1Nlf>=+ZxIH zNC9#m2Z`Zbl%!}A@UZSxER%Nl20!iC4-!QF%Gku9qKN}uQ zv&*Y-JXxcD?Q-q3uJKuOR7Zgedhs?HVlZNw6Z*JUBWLBn;`O4@0x}PR&3^n;QE1RK zwv1iMo(1q&cd<>BnItk6bDsDWf;bsqL?>qDmiqheZ_O6g{20vSa-p5S$d}5P4_+IenviZ?FY0q=6^X6>o1%1I9EzUy{ zBDV0UOWnNV77%)c)kz-#F1Xrp?UB{gZ{>^TK-?m~Bdlh&(ZL zGBE~xV`Ity-JfZIf9JD5Y!~1UCMpjA{tH`^a5QxPU-+7?`9n2qfd(ftXiPZLDinsQ z06`msO_nfqtcdD4xq2zAnr%~+G}=CAR}S7mW7AhDpD42x@|MzYA8eLn33NY)e^1N7 zbe5Ob6(`M(hKQjR383~?KHz1YGjD_uc3+2MJgAMVeHR(Kr?&$608#`Z;g*HhX|CC?iq>hkBu>nuM9f4)r6yA8;{vTSH|4sSzR6(x1Cz#p5lV)Pz$hLy;Vq! zxI3ZYcuCV=00)gAJa>jpM#eN@Y$hW-!JyMV^HQb)k(PF+OvyjwRo9i6< z5JAU{nb8Fg47U$<3EXG=tycAd$`HYW10Xf;WOpA(H$VAYXO<6nA1?@3M_NKT0THPf zN4-57DBfv^BlaU+C&=bFe$HADv=mjcCmK{4Im$TviKeeLg#)MiZVT-ceWnV={i@`* zV<-Lfa`eeR@ZCx~ZLE{o7+B|b*pldRRl%c8W4*u3GWm!z7etvM!AniqNoS;p{DM{w zC!~uEh`brgg+Cb9q;NIlBQRZl!Z;~+)r^e#q|~f~6|U5t4U+EyZhJ^P72!SOp83vk zW6Xl!ehY}8M&P0{stMu>NY&Ez8p(>1;)|Z(xtv0~h>Mul>16ue_WFh!i;U7jak^&Q z)avySV)OaxL@vsunLEyY(|aBMKBTYlb%SK$ym5oVLwspURSw-mtz@-DVoql@nzHXU z-y2mKe0Y+OUQ+wDAK|!zuckuTiE;0su|^QYF?b%17UA5i&`|ouD$`uh($}1BwnwN% zhE!T#dQtjmZpj#ma-P-LyOZ>jrjxo8b`O1_dV1Z>X(@*tq6RphZqG^cU1rnZN^JDw z_SpeM8PdaNu%NU{*6ayA==26(5W`yNI~8|v0(DoqVHzyyGDjiqQtPL%BUgz^CQRb4 zw&lhk{vp30-#D{~{6}v;^Hn@`DPQl9A>Pl|*XfuHW}lYgN6na-%||W6c-n%a25RKh zeFe)SM`jc;MD9q+^NN(J_-<%MC!UL4+3s^fc_-s2Q@0j-G8UX-(2C6|SFc(s!3ShB z$6QknR*{su0bsXM>F8zLOvEUemjvblYd`R78hfW1{yy=SLImra5N$fPb%#ZaHC?;5 z8q=+8o-7NdB5s|se4a1(GXiQgHtd9ms*A|7Ef(sPozFOjA6;#qZph2qG#Ikon9}E{ zZc&c<*2KiK{R{K^$>@MUAjeO}cCY>Y!Ti3frGGKMdrk1Cj`>Tgb^52C$^m2naB{PJ zQ#f6~nk1Mj%2*gXfz{D_wHVAy|E9JAf7W}ikbW;y#L(H$+Rp5|%Ix$*SN@w~`R7}F z(^r{PT#TH*soJWJE+*fLy655FBgHkJh{{UQ3ESISo2aX&h7f1iL#CWe>3N-h{457%1$K6VI6Yo*-;-+*W=xCV0Mz)%y(9we>+fRZnej6hnJxCDo|wQlnf?k)HAB9@du6Kmhz!_lxauyU{hSeZGv0NfnR;8`jKo^KW) zVOulndy|Su*a>uRqj7L>-diT$9~fBJ!7(C+_L3$RX6DWSc5W6#CKYEB8}<7fvL=Sc z7Pe*pF7V{g_>qE*4P3FDq1(6l0bm8PfaC7pA3XFXEC818E8*9y{zmxO+Ml!KhvoJC z5p1h5bAikFF9<0e4XvEXl99QAfvIAsG`%DU0y>{SNScb9vjU>sOcr8Hd6PR)(Y+fN z;Hw~RX@n@6v5XeW(GP(rbP-7@q($+lCKswN24d_X_vHuXOF}><17`)4r9cNUK%a~W z$cghh1L5&orC5C(s5M>)3+ViKU(RESflZmZ44isCZN}?Gm%+%)m^1l$-W<2Hw`YY6 z$upG>2Mh`=cVUL85N|BL+(nDnGrp^dy zr>FyK%lAw+pi5w9I$B$youScU)dOddF|iCoq2pwc8HLEB*s(WgU14EC!eYWM09Qk0 z$4fZu+v?e%wH-T9Y}z$GzUHY0E>M!08fXqp+|JlTP1`<{UznRe^w#!mkGW;Lf%Rib z+o88Tg{7SUT5`&v57egCod%Y#yJ?^9n(=zxw&>5uI2Jcq-B=TV7T4bn74jua@A=*= zLPPWBFZ$l*5A(JaW(|KD&6{D zt;Op=%jtlcfVQvnuo_x^@U4VTF`$C>kAY(Qf z28O$+EwN7OlDi9F63Yx-@xV{xiy*e&gC%Qm3WFUWGXz9g>#MncS$;oRDm&X>2*y1x z{5caK!krmvF_k;3-CvvlcdEz&4 ziJOZPjO%c6{zs83HO666UtMJ>LW5jv8HvbZV-#OF`A%?T#4pM_&}M6l zSsVsi{8Ew4W_waC6c}X#4`fq{rFJ-L*ykooKy|^AkKV64|Kz#H-QoncxZIDHY*un3 zA3h?Co2jtdflv~t*JCT&<>K2^zdmuO8q$Sx-KRSn#(Zrv-*g_WYpLJpj~@Tb$jiE5 zmWnh-PS!wZ_hX`Y6V^3lOriHOskz-ugRjJ4-G*q3$>Q{j&v&bsS9{t$XHg}`#KSo@ zeC1z9j4OuMZFubM8@V#SjF46}pI4)W45#QdufNy-2rU9v4Bu54{|ey2B3u&B zZ}Vs;ug_^<6lN-OPJPrNC6!%=$|~I^I+ur|(|sicJTe$WvdK+A$c;>=GUY=>89={P+>?@SNy*GcIv;Y5pJg3U zue8}l3`MN_G{gVt;|Z>_20XMd!Yj(vy_Crd4~{RZjh=n{6E#kKpH?#P=eXaT(lC%j zDy%))vv362qBV1_|G|W zdkAwkD^*n9(rCPn>>Wd<=z`SfTQ~QbAxI_YJCq>MbUcLAjHB3iu^(*hZNAj4gPSU; zg9S#lC_eQA7<84fo%*x%il8hm@g5W%dH~+kGD^zHr1~H#vpRD)NYa&|6y0$9F_OKi zgKh6o4UEx+Hta7zfA1sE{+^;KJC}HN7CVqwAH98OTexx%Jq!c7fU8<>+*iVmuS~1e{eXh~c>L-|E*6r3mbe1O=L}w*Lvb!UHO8@@LR{gF zjBpO$p#Z9?FfJ+N8dqK7Ovpdb+JqWk;1fSikA12z7e?~tMYAxVE?EJ=7K@lWqB+g_ zQdZAcGVtr1M2Rfk+X~4Lpu>#Y2bMc5^|EqUWyGewHX>o1&OkfXBGnAdSWTOyT9lg= zMWV5Y7CSJE^nxV6K$BR;%7fj`V#-1RffGI?s3*wG1@;q~i!b&*rasmp!}2@)FbrvZ z!xsNUa)R||5M$~OxCvE_o{*$LiwzmP{^A{(Is{mBlJ^Y*0L`3w3o!6V*>aD&ApOzc zMf>5ZH2ieSg&;y2)^5L0Cl17Q(Wh*FXfI*IrQ0zr_(Ez-wXQuAAtd;2M81C})9{eG zMOQiume4{@m+?XpDWWY+<#J6ki$i-f3g(>I_p=Qq1M8@pOH3nb>e&o%~g^xapM_Rdku1RU)Jvyn&{tKt`F zc%mHA`|w;ad&Qg=U@MfU3*l5?5dE}-y|eht(Kb*=ZnNUENd1QV^q>-BhR|7il=a7D zBJ;AJCSR`cQ0IR%!%l2W$ry@uYWNBhg}SRie6>Bw`}N6myM*5vuLZpgE2h7 z+ZeYnB0ROTbKkkPLuY38q04Bpm6zAKTi8Hy<5` zA>jeyd%AhN(xL1EHJ=Tm<8>-?1$zdPbLarBDTF)_0Q#Lib^+m%p&H~+2pE!~LQfuG zlE$%I2V91%p`{4bu&vnGtFSBy%NuLHjr|Qcf&*0dxhRS#zUI4)tB*q7`L<6A! z>4w;<0+9iAfb9pS{vs)oM|c)Fqq^dkCpL!`kiZ_l>Zze<#l5PT#<2A1L#d#`HaFu$ zMz*HD@t*5yx<22}i&w3ojNi<6KK6RI7JCTAC}uD3)t42T0SW0ON5U28!uFT2(icJqq{%RokrxI#$cMtNC~*%}Ye@&B z76^jIC=6a@i7O(GBlY=H3P}i2jC_Pc*;@97B`{>{K-TH-1IXTFJvL|9pd7Is*#&e> zt{BMs;UAeeDaC7I>W&pTz2)Be_#q>>_C;R?v%GvN#Ye&nka3KB!bie2^OQGd8Zu*c z*lrxE^7yRNw{iL;a=j((Z|gT`rSv9rK=DwMqGhJZ?!2%fjvQ+kZ}MSHjvAA{V$Vl3eWLP!ILPl;+das`GIua?@76XNx_gwsk-P`Qo zd=lGG#|$bK1G@eDMYc-N_5#K8VSUcs1rYIeGzsma^S4us14k}T|j;y!op z)!L=j8|m7!H7=&cYDYUow}82!YIc1SmdxA~6%ol+e?>=E9dSs%`Ss8c!{E0`eea1o zc%OM}$&|?SZ}odz*}kp}BH`g3*>AL9mk`5yguuM}S=ZtJc?RaV^YK#AZNPIOIqwZUs1B*KozqnF;R|{tvt8Y97j#{>h8e&2yRu-EhEnWAun9xGr49WS@%d&eeEnD zMcTl^8Tze?uZoKGtp-=Kjg7rnWkC_AdPz+^aT`b3=Ek$tNs^hVrgsa(`n!i`@B1FE z&_g9nku);G_+X3lJ4`@5wJnPF)KjD^gp@Z-q+pyn>faeZV4f2I0(pF41OTf+)mNc}yv6q6UmZWRjv6??V%%#Ye>U+)2%XhN6AX7%-6{3GUe2#Y~ckOdZ z=`H&yr?3X(K7hL~fvE&y;w>GAYaD1#MQ&aY=Hr%hy-d}_*0a2|3XCR zQMop2nZe1Z2=`pVD~;GWy$rG_2nqcn-AL- z(1=LTP?LVeJ->bFCjG$QpTsQn7dRT-6-(Tjj9-jXRvgvj&zSUF5JkmZt7yj=rFOH6 zyIecdXJ%7K25Ud1j5@DRMy9=!)R%E_k)cXxy zn+Cd+wkxD0j5F!v`}*0<_F^?guDml-S}aUiKnciM`XntLDxOf!hbXFqS{N!0DTf^@ z?r;7dE{Qzvs*=qD%xwTZraW%ZQrLFk4>-lL`DMHIWtg2!RSqvvg}sYOM~x zC@enNs(*XMbKrbOw4*&Y#FAa^f9HIMIQd9!ngv;Xoxjs5!Iopp}z@hHI}s|(5q$R?a*t8B!0xgj^G(LEL6*5jBDI}JNxl4}vu9(|t zJkbGeU4}J)=mWEDO&YpwPWXfHMV465;b?X{pagE})QpquGfvU@c#{+s3_cjeuqvNz9W<0ZRB5OJ|fExhvP521{H_{v|1$KUDyA^Zc2`Hq+Thcy48yn9^aKF1H-&_s=osz?BGHE z7oddU9s&7*A9J(+h93i25r07?U}pgsIr#%W{?AYe@E#TVg&!k=Q{H=0{sxu&-H-AU zKfdo&<)2$@fdDqP{{<>(dTIlPN(g+0o9;pdKgU=tPEWadd#{wSxf1$5cKDbZjU*o) zUrJg9Ni=C{kv1kILW@g25;#f9940F=`!omZ{(_b*tD~jo z-EN-d^ZaOOE%7+r!3k@3y{i{_b44cLof0`C{}O zm*dLiv*djn%a@xEi1WBpdqfpHBVRoyID>TuKH~jIJ{NY?AIU#uUUA0CP`uX=+}n9s z39Ugx6d}i`mbOD@4zKBaVpSM6Gp(v3EB{G5hSO-f;&e9XbXs+1tUV~7rsyTUhK?O_ zcdB!7bKv=A{bVUyyXQog_zLjQ!)jyT*<$$ zna-RetpJX-!UY^Z=&D4Y%EEVpf~j2rnRgS1*zp1u-k%@y$X#U-2psklw}jOz&i2Zq zHtpu_$$!O`Q%cV;eLBtCUVMP2g#J`6Zj<|1`1oTonb70VTWL4q=b$|Iw<1{`fLgTe zBR^7Y=J6n#lWdzO7IT!b-tVF(4K4_syEJW`c?KGx-yWi3_CVn2SX=&0p83K!3%ip)>BaIG3DhY!!b@bex!e`ly|#MtpiS z-Kw34x5Ze@TJ*_v#~Iv?T$>Dtt)mln(5Q{64H3Sz!n;$}w>5gdHIP-J9b#4((OS?N zTRni?K&G6^aJXI1?-t$_<;+RroS+m@(ilM7F+u%7^*}l&4gDC3ThVItf&;f^gv;3T zm2x@8H1>|bwAeJ^4pBMEv`qO^gR-{z;nuDi#Y-evu1cwip{>>maWdlgRI_+#jr0|j zC;Z`esm(U}iT zLPWv?==9WmUS`dRqdQ=^EaH@}Xvw@GCw{x9(ad?gHq$sJSp3O_oIV-TA;fb3eJum( zOOf#bRF}fkSwY_B#SWvOFh?m&Yg_JyWPB4DX+DFRS`kO;t%`8U0(F92x~@+}fg@?} zQYjx)%EVpqEyhLgZyJqn?q^P479^d_(MRuzy6CgFwa~fGk;0q3U=rTSq2fH8(BXjy zmypnc97Bv%_p5@+#R0s5uz-=I6Z%C;)csB!df+vH9jzB_g;+c5M_)GQXNrhBKeWbf zYt28V2&Rh;P(cc110zb4O)BD_6YGaF-`awy|_*i!K%+1J$1i)@%h^52lJ$nZZ zPImtUZ%*u&HXt)nQX)Qe<&~h#DONODv>}o$Py6@GZ`N66Ui9yiy##TsWZEg=qNW1O z=V|2o=m+XxM0`rbyNgD#miZ%!J zme}Dy;i^k-yU=Yl*+(~wAlW9dWpETJ98e?WaSaziw;w1fvnuaD^b{|r=jUit?7u*A zO1ztKoD`sviwSltBH?&{tgX$)n-sZz#(lRZdGRu{ccO*klQ!?Gy$=sRtcL5kFcWHo zqMpMf+;((k9djYX!qIv=#Y4q9?@71ju+AZv@;*!1?R@6)d`6ym4&jKa&6+BC_d#X4 z!F#L$*Y8AA5lf6FtmG>{KeS|6#i?3xN0-likC&kXFPadv9aUf7U_%}wN6}U)r??!o zA~tOSKo$Aki!)sO3pj`ms8))|MvaZ04a#XWL{Ewjbp>|Rhl))o`4)0!RP{mDS*^<@ zMMt|)(LqB)9TNgS>SM4@sdQj{9_S`n^tn5M)rSc1oObgcRQbwjeTVh(>vQo&=glMH z(F6D|+N71d*$$;S&>Z&dG7eXA5ttYBQW{W;eZ4wWN;S`hxIZifJwi#lvW*DoQ58QEu|5LD>Z8~q+ZOuKGET;ZNZ{xxsK^~Gb!O5s5 z&Pa7vtX*gXr^kVD#nplH)@a_=Bi2psJm&NmJWqbb0YV~odmAGQ_f`LD zNByQGq+E&DMc0;fpd0IX%NPU<0%Yk4& zR3b+YhZR++@@}|rND*-}#QI2#ONd#5=gcJ=9e z668k4aA zHydrnRMbu1W?Yv%-%z;@*ejgdMRvVb^H(EzF3@<;J}~4`u$bNHrLM$f%F=Ml5fim$ z8p#?zyN^|^zk0qr$H#aQHWH1@s4lTdlA68Z9JiOJG7@lodWq~DQoK^J%cYr&UcCm|6*L-tFQNV6blCz@Gs-)UiJU~Hm=0A z?uyL>i*XjAn*>Vzu8k9%=g~k|DO*y$G7zN z_n+Y(`4NB8{(k?J`tNqnw+8&#E5A&}zuP^3bjBY(VX&zKwr9bn4l_5{$^mbd0Wxzl zgO45j`$ic~cCZ8Xmrs}t+#$a<%5XA+UA%u8IzRlti0t<}W&YY6!}a^#7}oEbq<+~p z-v~cj_rtaUyRd(=ZP?kt&inuB22RxQyti$>MwfwjUE;aWs2HM&_2;IVr(AbB-4kqQ#xb?bcVCYMQ`#zT1T^yo<<|HP`~G5?m92-R&Yo$;x@Q?K!PlLWQr#L^bnN zQ%CU21r@sxXX__t_UEmL3Pj>fH`l>CZHM{qhW4+$7rCeA-dmGqVb01xoxa_fdj&XE zIep0JtJ#okS2>BNTx+Y>07_HYuB5Bw!AzU78M)#?!kDYy^Zzunep(qypVa2x?6WJN z+f(g=4*O;})!`J`cKW@{Hd4%ILN9}lvpe2RShoa3SFR?$nUo{XY{$fw?2Dj zosWQqe(Rd)dV6vgwW#Cy^(xsSa}#?Ycn4X7mM0$>mLRyS$#<9kWAhF1sk>LoM^Q+^ z09}BtU(^ddtHuCvv}%=P9n~m@{8rurYj%d$+}H!!$ZU3f_#SXrr$&m)p!%;KvRN=H zq(qM%`3&Rxu@1cr2{9EtjPT)+<=x~WZaXj8h)9783pCrny*+-6X=q+fB^SIfy&ZYW zmth)z{Smu5vwJIO;(W3o3?_Z(ZMJ#%8(|5&z&57W6c5rr(Fkwp5jypxOPM(u`i{-) zKHS+>*rYfOCxZUqHl6a?q=L+A5eG{p-9fvV8$G55M8cm57h~YY5=}5^X4b049%N^r zs8rsQg4x(q!3!#CQqnGFC9Da1T}kJX&zZ!7RULN7B~EYzwsD$02F)IMaa=eo<_^B2 zPui-=qt1{$;(pmRZ)9o5Vj*KhJmZr(G;eI+T$#;k1%Z_eE$f^&v!Ev%9HCw15TNZG zallH_WrqjnnbcLkRD@qfb?Yt-VFwN8r}17eUr;bb*b`j?VIJ0A*Q%Z(H9C1d3isBxtWn)XO>7Bc-RG)I_BS3<)_^|>STe8qz5CxwQ2KtmR?Fw7J~@7EhJ z@N<&K!e;pXkg~Yu8&Iv+Ngr! z6oJ66yGT3z*7pSgN7CK#90P2SXZwZ?pCV#jz4`L}*1YC-U9Z0pMOUBEi>*mf!DASr5IKkjhVEIM{GZYXb&e=$!I zqx|faOfMEy)~84i@Jduxd)gpXtL+omHBd1TmoKeD*D>#MJK@eg9xl#V{!kKv*RRLV z(BJ_+%n&3VE#K z7oqFbK-0eIUCZQU{kHb$ukm%5`{<^Iztsh%uga|LtFIWw_ zw<0Qx1l1o3F>8j_>B3s6xv1n;=jCG)lc+v;m!CHi!F$45SRAwtCXIQxrp<6C1NOzuBCUl0bCdcJE2pC6^zX|LT&S5bWkb|5~{t;)yQ8fYt<)A|osmxHfdBkN6Tde2~a5I+(+*#JK)#TQngc9$s&6a(H zuH4hXm)IwSJ4CBRiy%n>S@al?_#ijVPZcv(8cJD8=m&B2KDhhSb_U^BqYB6Qb8T6zZZ$xNW;uRT(%64)n^YI=R_2`9V#FOVs}0? z#KyjiD$hiXW^(|5=dA0{ig?NLiXT`X0Vg{+rGp8FKYZf&MxMwi(z3`X`r-Ky6{(Vrdn5yr)Mw>+)KtXoRRj++z^B}!=P(~K_*%_nHiU7Z(Ib{DyP z7v=kPT6&ta&$hPE%04x4S9UXk=voGc#FI`+%`KW85NL~>WZvo44AV4xVpkp!G}}`! zZ8^zT-y%vS>k-~CKs&ocodiY)5taKo1Zj*q7H^U~Aj5|a8fgCz0` zZ%~yJ0?8iTvS1AuY=!V@`1|_+A_ySxo*jSekUATuW)z z)ra+1Zo-e~075v6M9aKC(M30Rc4!=4A?%F@OIk5rdeYpYx_H{n@&REQXqgF@^iqTi z6M49Ke)F)VVG8YWhQsigXT5|r4#h+MfdJ~TiNw*3MotM9;@3S?JU0Sxp0?K_A4E-~ zI@X^ZXn^+h!ctq*xcocc8a^wqfc;DnDBQWI!qR#IK@yvqK^+d)DbAy}$**yuYz??$AzUG1AUj&&nGs(>GeXTsD@97TDJUPn zL$)J9JF~NvMSZP+ws7c*c`s~s?2psRV?bpO!3EU_{|ZU~LIC<*4`+Ku04s`5f((}3 zU@9%LB8;HF(U_)r7P>GFY+*Zu8h#ccw5p*WI3@_Pm{|zt2J9vJ^hPUxrL?=4x@Bqu zvu7xS*W+Y|)P>2EviXjdwT(~TyDRt2J}I~3+0KiCMGzg6>09Rhu82~4r=V-m8WWOn zL2^E%YW7NrZkp$$h03fWLF(uXiRPSa;W5W1H&k;Hp=1+RDRoV#(8ha2AkJUf#93q(sKQ3?& zi;1n0U5BeC^}Jq|sL`^n$7QFZh*WkHtz*Ha7V-brOTw#rvXaHS)>G!PtyxI&hEw^X zc`c(AzU&_L-86FlJ375G?4f~|iTQ8)`rcBC`OF$d+}WN=lsd-=X!sg&Sn)f5jxuIB zoqg=iCs5GCzQNRc6El2AkqFe7PAof(vMJA=~ zX=EFXL*e0yXAv|bT`i&7RQ36MFjCz|omdqDdbf#zU=fDYMlT{t$D5-XX{TrrRxY-H zf4zKzZNyy+w75eYDmiV2U4r-Q|ckLVUrxEw3frKmM-WUUc%Vh55kdjpth2 z!de7WjooasiMfHy8EWQ>uV&K-Cs0-pclwKZO9)Hc0GL;hjIySJ<|@sDv05tE-khh` zc3UN1*>U;4w#uDPd=)_2vuoVE%TK$SUwq;_{+017w0Y|I&7YR{H{;V9uQ~!4O-Oc$|aX)weQcJkF17r>D4Xthd zR@qP2E46}+tp)gy<^8JwI2bt?S$>u9(;Y}H%EQ78CAQ$%^d0AQ5z>WSrFB|)x z<#90I?{NPu9gvk9Z1?|z#?1ETJAcdddpc$|4sP&pe2e+3y)4XZf3$-Yd|2q8=~!97 zUg3Y_Wn*Xllg7dJ2aO%b2}YcLua}MM{xrewG(Ae$|0so$kgBc8r{FBDU`DZ%L z`$KTQ}M>d-ae>jP-}7=Y-~UX+KWTrj!`aagd?L#6+iyXsSa^Wf2>85!vYj3H*dVx9 z?iY`gt*IUO4B_{%DEOoupD~*$8+ZU&O}T*}Ah!uCGbhl5jSIwT$^|lHXXi8(K>Y7X czV91wat3psZ;KGf#lp;mNI@Z{AddL|066xM#sB~S literal 0 HcmV?d00001 diff --git a/Architecture/images/Negative.pdf b/Architecture/images/Negative.pdf new file mode 100644 index 0000000000000000000000000000000000000000..47ea7ddbc744f6951de3c7508bbe1f7c324aa89c GIT binary patch literal 16004 zcmb7r1wd3!^e&Bbr^Eu%xpcQ6-QBS?EZs;60)j}lAl=ek0uo9}N+aD!H*Yb1{eS=W zcH!Q+-<&%$ckXyR-!}(pWl1S!APWaFb@$rQ+D^f7)<|~`GADoy05-Kj78C@q%7Yv% zU9A9I5J(lkDrIfw3UY>=?Mz%jk{~m%IS3#ujO^m-3^K7t_JmGIm5W}j!|FY_!WAsX zpgN|AF?9%!lkjD;+Xe7V3lpvwu;O#EEBk>m$9AZ(M|xwhycct0q3VCWy1_W|F-MD6?Gs`vm) zt`0+m3NC{r^MVliSqa^_L;W$=#(J2F^vUa$J;|5!ksR29_mp?wbC%U|?&fAM)X%H? zUw9SrCP5AU&Y6pgpB2u*^CeT6jo0V<PrZ#=L4v__(|6F8qjfesy_|jNJA~09qD#&Km;3rYtfbjMXNlF2X>RlePOS zWgfKNsT)$A-uN6ZOKBc=xUXLK)-`*7?UluZk4aayL#1Lp zQ9DZLGCv`0WHUW(C8n$a@nN z@Jqj4q-l{xz!?0tn@NzhM|m!1?DN)nft|oCNp)cjw84dfnuaUNG7fj0^};8L zc`+(Z#qvr;GQE(GGSKLyR4dNB$G)RyTs##t{k9@X&mvQSprxi%--1JWM8*h45)Dy-d~n9j{)7x4S73ol&LgZoGz0 zgLb%UPOR4Cga>`;g0_xY2lcaY+U5xYQ59=7CD*z@c3+bTnDE`uSbX!xwG2i&AZlzx zzZv>^4nf4%m^dAUf}z2ZPY;#o^PD51 zD)vovn0djn*bTHO|(ZG7bFuu-qj) ztf{5>3(5c~LUK-&u$KTc6eU#DwC3H2y2-?#!B2T7U5S_2|B+dsP-|$14Vn9rfuDX>{#rN~LB?TUF);0X3CkeB* zDYo5rj)WEU*sMuG{46hUxX!yjZNMgCb`?nyp{00vq{`^nQ0OS|p}LG?!&PS?b=Omt zYKBiYO+{hc6g7@fNi?vf;HTRihCDH~!xCdbfwQL45`|59ZirWIS0$N!f$9C2Pq2~W zER>C?e$q#O1Cl z@f+47D^xgzOlfewpLtP7UPRLC7k7wfMaa)VQ^hFMO@$aKWE;`=Z8*^wT&-l$Pcokm zp$Srm?b}F6Q5h4%vyyN03!zc;=406dss^c?9f-SBlaE~6k7v2g;ZgQ)9Z6_Zl&X#P zC{L5Su*&okWxFruaX6++Y*@cbe&>QhgfV%-$U$Sy)?>&Aqh>i^@!0tjlRJsi;0=r* zoUt|XT9|gDMv#b-T$Z~hg>hfeqv*FsfRGoQK;S8zpz)oVk!ss=QUvMET&10tYWks^Axn0Jt z*MO*YKfAnzevzs*+=sH0C|*D<5)bMQL51yaf_e)0P|UbMuw(+GoanF?n%g2bob82m zg&huj7OopQazY(qZSBbWZN6(+kLUZj(1(i^nFxz#qNUe;eo3;JTYy0SCt5W~6!{5H zdlS?t3Wf&8aPOavmD1L~5l`yaMC0h)hR53Xpn`^XreAkE`qX@Yp2GU*@@$|-Y{hLJ zHMz%WZ8`jV%|Oo!Q#48$f`r*j=Y;WhNigi*gz^Vy9MQ+ajdUQqSu&xCxcENG(3FAn zEVED;p0zv%@1xu^^pTMzU{ZPrCPt7s)gHNWFm9~sHg}N23Yq&H>tPhX@XTQT^a#f= z{x@?h`gM2x#)()7Wqp}dRl7Hz67K?bpwHjAgmT;zdTG=U+i++Id(OLfVJ}$B#pVmu z9^RG?i*vy&cZ4*>dj?COy@kfaoN^gLJ$u$ZVCcu#$TQdA?lRw@ z^6sEdPt`6wGBcfy0!t7M>!abAT8od==M*9kqg2~%iB^R+XQ zqPwwZf}W|BhC1hyOCoKjnmS|hCGU<%d~JA1dj8oU2hj{iOPAhOfE~&8Y=FyA_0WWI zAS+NJPAB;uUX__!H;i_mmH_V+wLvXiL%bAP=xRdQcs7Y+dj}so3lyRn$rf&+eDQ>b zx8oqrr2d)TH)+d{7W#pzXm^&Ty z%&sx`AXp=;osJ|E<&76QM;BHMrB28xh7#2p;rZ2iU+qk&jM6S`*X1}6w6$s<=b-8` zPiDC0;RR2Ik=MQJBs5r^2^*U(qTWb{dE1(5TIBI;_7Ku)0scg2yVU9OK}99Q)MiAM zlKb&{I`gr2GdlLLAL`KjbMU!u@ID?Uy|GcxB)2cEa<0`YFxcAIkoJCGTA8ircUqo^ zz(A1D;l^^j#aOK6fBU_i)?f6KPgJ!v{HTSAd_%kA0$?`(9 z{tn>gRP;0NON+yj^Fy?+VVix5ZAz%8u%ljq+Io_P)M4!AuciS_PC*9!9OiN%6ar@+ z5xQGwqo25~O#151rOvo>RBqjRdaT|}GS^wQ>iBc2u}j8*XC`8~%cxT8*9jy!&{_da z%yyKYrqD*O973pbGKLsBWKE?xb@{WWc&I|HvKp&W_g`C4)KSb7;*BzvP&Ccj7t9T1 z<#tm&shzvSc(h$Svl9s`U*hbN!~5~1eF)Q!`2=&!W4tNARRM2ywuX$Iv2gLm5oTNA zhPm_Aqw))?g7g{3b=RnYO8*>t&SUwbsaPgghM{nY{kmKxq;1kq+4Th^xi*H8k2is`%anOq z?r*VKs-Fpu`_HlIyq}qO?6^gIPRJ?69(5EvHGvi7`aM4;l5a9^Q!(%Qg|#^eaI%U2 zTWa$nVcVsM8;)BfGRVRF7g>Rn9yrbev3WRiuyb%e)IOBi|H6ONy&ORRR%H{*A4g}9 zgDZgJCl^u$xq#iA%|I>y?w^1J*ufQ2?*e$>PY|-C05Z2W5eIt$^w=N(CpQOxotw)5 znN=0+3SmzW2*R9x_4v@jL(dP4OW7H0rUr5a=s}8-QUF$Ukf$ra0Kh5%wgWq>IhvS( z01svoE0kN<0wLJ% zj(<@-;KSoXhOY>DP*$-AzUS~TTvkbtyR{ieRa*Rir-30FdSQ<>2=C(f`jMN5#%3m% zb0u0`>6_*1@aFSsQuX3$Y>BJBPT-4G$Hkcs>^>Qi|AOMj5cKU;Nt=vVODprEpfBDZ zCK0byib(XmMb4f`J7E?$B+GKsPSYsFj3uko^}ySQEY z3y18_4h~^I7iTQLZPycdqr|2~yKi@(1#W!I_P( zSu;+(gd-VPZ8KjJju84miM)OX<`qe(!jnfg*&S=#p;4g(vlm>_al;?8_)wTi62!4Q z;XQpTU$UMrxuYw0D8)XW8&`jNLTNiGn>s`);nVoCQQC{AA(uzF`gk_bt*>~9w8ss# zwq2E}8~!bvp$bYk-;#8|d#>6LdBnx?*-?^1Gs(M*sBK?3Pael&bFy^AQ1W&i>)fV` z47G%t>ZSU?`yTB9lC50>wK76)8G#Rr<%cz!;IL<^oB|mT+pPed&qzYfZ)Bg6DM3ZU zwi}j_;`4PBoTN;od5J6cNU^Q38TK%tFO)=(e4}Jpky(v zIIEmQSxxvd7&TJ$e27@oEhqDRW? zbp-d<(@e9&`Cn1#cj?bK1v}Sv)-jNiDzReCWWlUAzJUf@!uHS*wX2xKU`xSzxFLCxqW@(Ufqg=T&)xP& z-Wau+*SOhJf{T(AJtBUN{mNzXF8@%iu7eN})O(gzWWn1eB$hZzgEuU)Mska? z^z1C z)4+N4&L?Yh*>2Y^8`|G=M)j3=VHarcHPx?58jDczd-$b;Ru>P$#0F*@4^3DYn}~ZI`Mk#ii|Ko4uCc(DP8M zdn3^R{<%3q~UKx;)>> z9(%sBIv&*A$voF98^l=h58e#ABhSk8)%dq>{^5xpyc3X(hwrzmeDHY>7{oowNJxmA zxPZ(7Kirrqz~HwH@WDm@)2;pT%8CHsf4DViXA`gg7r$m;MWTT#-0Wfri;YNLgT`DF zEMkwe#U8GS^Qv}Mp-Bd(e#b&Bjp384JGa1~xkY-)Jk2|$yrndJxUG^b;hvyJbqw6B zXL)%aV`aH8kg;?l0d#()$hCKEglL~jh^T)e2vYZ<)p1(^^ z6Xx@i-D^^?RxM0B+>}~clg&fwdA*Z-1NJ9d$itP}-?h}+Gt)a;EhZuyX$oD}gf)9j zmxl$i3Eg-pX^;dU7kum;35FHn)1%)AoC-*o)ED(GHs;R<6WM&2A{dW7m}C;z+R;zl-Ga9F`$5PsfxM*+wkP>v?7L{Teb~0y8bw^QbVZ-#80XT=A#RHT zXXeZPRDaiE>UL#tB>NC{UK0LJ0#86Dl%bm$ClVv+=6n@dAHCn+cI#65NQr2|EFk#y)u6QC z?}kMXBu=jb4qMC!yqLRLSklCBSxpH(!`#Rm*$vtEJ>1;UFR^p z6mj1CI=bME<=GF8=Q|VXux%1ig$f-UFw^i$_IeKO8K9W!%HE$hc0s&4(jLYGc$JEE z)Yq$x=9h*%;yB`af@*~q;HnG7KwTq$qD}iYM-@*f!6I8n?8Wq_+d{DN^QnUIfEvY} zH2LSuAtN@;r7(`bTVUqXJgZoT~1}8I726P zYW4aEx$S&)A{Xt_(hKjPwN78?6Uu#D;~<5UKnl}VSoRNF>P5`B2hSrgUb(g@HJ6szW?G5Z_**f~^oq92 zk;@v%F3M`k z4i)BRLPG%|{;`&?@~O(d307*kRcv(0ksjn5>32mQX zARU2Ufx`6F5T!FYe>ypB@!il@{WxAORq(g?if)!s)*fB1WE@20kQMt=-ad^~qJC6M z=UfYK4vCbz0bq|x>F8zb*H@zyzS7tW9G`*rXMge4@n>1H7V+u7&*xt!{3@(bZ_h=HtiFgU-)^m0-R;3MOm($$x~ZsW-)zEpW5JZ8 zzD+agUmqR!BlP@xU<&-L!UKUo?%$5>AihnTUS0kfk8(r2D-R$0 zkHFFm5-~!&qMWt43nc9P8UGplHB9^+B|ik7KiiZraW%06TmB4ybR09Gw)b62Z} zC*)>hLw<;c|EDjc{(r3dSIv)>e&6wM{#pKwJlOw6|9bwb-2?u&`Ti>(_;dFDoQj`O zzM_f!11tIGq}iERLS6{_PaE+c1caHJiwnTa$;Jm^0T3PnWaDFl5D^*3E3`HfbFj2~ zU?Z$zE@lt(hKGyuA=v+U!OYId4dEIlj?X~WmR68THZB0Gnk&d&^WhHdpC~dHFN7*6 zn0Wq}U;r;W{VrTk@W{QfWeFZ)ZtpZw+5b`ylzu<=4(-~YDVl&6E@ zs5X@%EUop7yR+`*jX}fYifq%DiLO|tulUo+FfnM;A^an7;qnm*9n-kSG#wUtS@GEN zTlsM;p`0gT*w5H!B`Jt7ozq5gS1U>D26kU05?SWQS*PZX^|O6_W3T$={Q4l_#i0ee zKy~V+>+t2lXyeAs{kh1{#A|zjsY>L!Xrxl`L`R}n{&R~xvq)(&LZa#H(~wsU!bcs! z0wlVbM!gf<4WQew$*C0J^Xsc9pQHAv6_3P|k*2`f89#TNsXB^BHNxNz6GEI-X7!T< zZ7+A`qSDCw7N^eN9Y7k3@){q8JLN%(EFEjAzA9=59iNe2w!uza>eZEfj^2RL}t{;5{Nu-Wz8NqcYs4?EBx!8^1cZ(McrwE@%ez%E{Hw=YkPQ zaCG=}mBH?l$6eF@@Dzt~R!Cyf9=dOulV}a-dkf86`)5?7>&>i;?R8m8wC1#VQjrC| z*gbV7TwHu6yLCxlIjx^0TWdxpG#H#|d|`#mVb?btP{M$`*qLSh!BATF@Pzt6G5?&p z`{YJaHvWmU)|IIdyC0B3wg^{>D1z~0g!TDMYLs^Mhv;k23=?DQ)}?7`o|Lrp5S~m@ z`~nX@!)sIW%jcm6>6A-$#m3JKp%jeKt+E-r&QDF)_4Q+)!6dE5Rt%}b46|UIl|OSg z$x|&3-(sy6y9GT*o=OUo5LJz<3~sPEO`>&aK!+{~2x_&2L0HN;MSd+ zpo;Z+vu$^sU=Bw;g-o8BmCiS^6!k4vMhYMqTD?N{R8!!ZIeL>)JmawH?$r7;G^=vq zqQ0s<=^)uqyUMPKOp0>2DI*n2efxoG&uBZY{rdQ^igdCd4__2WePib`%WX_>@2DKosW@(xV;Zb?aH24hq8 z779aY-~b9%iSUF&Z`xVD*Q`Po6Ntzq;H(LriU_Zw8+VIXV~g+(Q5e`gR*~#TI8bT_ zRCQnqn;tc;8a$_{sU|i0NiJiIg^phHi;4QW8n?r3afvVPcuNzVm3e_3U-a4^H4A;n zJ7}AIeB_zxTGHjvSad$0qxsR&qZzNnab!Qvz@dKl`7s6Z{!5z0DROK>7+Sqc<$A+cMfN$VJ1LixrI-HiQ0kADdH&|>Y=WElI(+=i+%Iq$|2=}Kq{t7iByx_6dAc8&3VS)R^ z=S5yBk}8VaO=yC8YC`eyPcT^S{D!N>5dE+86TUY1jq!9k_Z|^s4!cdaIMk0pe-g8o znZB>I)?By1S`Z#GpSEctW+5J}D&)6+fdEtN2UlwJNbPxDg_MQ>^zJ9rA|iKG5%@Ba+k&q(@#rgL)c}RB$>SI`#B>U;Ikm8tWMTAW0vM4T zsiDiCbR@tv#6tZ7=^l#WTuB%gl=#LfTQMF_kUk|Le@e>og`EF(C`tTr$;Ox7+he8z zk)@?n`P4LqFlS)(6V<1_xq(>k%xT|O&*1u7?ag-i5BYUxkl)e1$H35-*DVlGJsprh z9R98roqkhSFiLD~<*?jidvKU4}CIVNUZ_Y`LH>*s0B)WOg+8UA(N> zhyx}w7bUWB6I4FRe;hV6j>(95pi~tw>*!zFd|DO~E3^#V20f`Y=w}yri?61GA8f8T zN`=dwr1}lZ1p9>?9M_XVlQrDOXrA~-c&NooNbwf<%1_3yorPn8wVblzyl}e+WC*We zm0wxkDZZ5dxOM$-rOxZ*iStLMRS0_g06cPIo z^Xs=|H-w4FOWyE?qQ=?1hVb;l{646uQxaaks}7Ih^yL_-ja`3{7JJ@x?0Rkgo8b(R zee!lEj^>k5!%_Zxy3umtce~?vtxAHG9tUytsn07ormHy#D_@q7J+~Ro4#{kF{yv$0 z_A!w^NzTc5s=1KPbg@{Oszsr0-Yyrc?G!)V1hi=aodB0=^K2@*#Qkk!5KOd5~K39W|W6D(}plRQj&CZ8T)B9nSH<<)6 zZpGM{ME-SfzZ2U}u)*T<`A7paX5310NV?!_FM2I~V|2H(N2`W?t$oB9xvyIiSOc6+ zPMRI>_p^sgbE~zHVrFGV3@MY9f-b3pWUp$htp%GT`7D8AStFcp1ygSAd! zx7IG_KgXc|YH&wKXKc%*=?q~v{B^#e%G(_eDd$Y@HOK7oe1UvA+9$7u&Ie!bUvJ;0 z;qNVi-fnm_pV5&SjEy3m+4rC7;l;b7l--_Xf#F9FMD$TPcRPITWH%S!9ZH!7&-{{@nU2f^Rh{c`T4w0rSYxm$&V-}u zm#~f?ol`;_l`>iAg|eCF`8ImRivq9e1_@f~tA|{xP|zhmV!uy?o1hMo!sbj&W*?58 z)o^8uvdY5>LH6dyf5(=Azlv*4 z6132bHjc$Tu!p@i&qaf6`Qp4^`QQc$?dw=9P*EFqjP_y4SR;D>UV`28_fhx08xlFe zjnC7jz*KrUiFzT##?6k2L-sdsQLmAAsb662-ACXaHl{k`b1u!%{9k{hkWi|Vx6%=o zaFx-UO(VEDn*x0T#g@dDt~-EBoQ~+8qz%ZcO3-UzxavA%{qaX6mv;k{JZ-s@{RK=6 z8$_yT62&IZxKN8iDJIx*i9^-9-q;X6fbW<>4DR8hl%T!oRB*t#oSK9k$ow(JwAG`c z02oG8;}Galwg5bYicYA98dz-;D8@}eiGm95!7-KQV}8w2A=lt&1Ml1JaJlx0jD7{* z3o(bFW|514&$C94A2+*N?_QMnPE5?XIkb5vXswlxrA~{F<0C5T(Updf6I!YWW+|SE zu6EDXKE?HZEk3NW$%iZ?{ceNqge2r`&WOtoa5U(ls6OwE>z<=V(n=9#dTlY0bc#cy z`BH#p?j06x_0uRSF~=u`MIdxyxd2=?)Lm$FSlR%~0F(~B4z2*+Z{70tPi@zgy6Q=1 z6%B1zopybZqOag~a#q^qsmuq*iX88=$Ji2%qMkKbOfZ5Xk7AyN6A80*AzEB?ppqvq z!*ci@FoWv0=Rps((R9BCUa-+8R zoxMpR|J7xJFE6FX!ajRSmo7#&kQgtDH9~9U^HAX0e{X{pmN-=*wR@&jd2zOSU-~^( zlE-)M_{%QQZ>z;mfQ|ols8Z?WYwQ ztDP%wy+HFhTej)uiezkseTD0W`2-nW&aiPcA)5w8RxdOh=KbbgL{SGRPJ?1-uf z9qKh!lr;7q4Eyc8Jw0Eui&|KJ%|+Ynem9_}bz8bP<~*$V^|33mZAR7S1cB?-5rmHn zTs)rhtwQB@weD^5v3_-*%b<-oPX#s|zppN0-jnz0#rQ|Ad=8kJx)Q}lgpPWuUO%g0 zPh4UAB_B&mAQ#O>&_N1i<8ehP!nx^F|Dh!9`rF2E^?CJg!`08&N}i|)$SjQ?RVni_ z+=vXlso&xDu9RWT+a8CFjYDEE3CAXT)@lyD7jH1mIWdt+TBEDrGq38M7Hu~zd=%GZ znACe;*Gp!De$mqVRPTQIz0heqHP-1>k3Qw%RR(E}#7*w%QA6HkeWHLlLpzSp_YI?^ z_pu^8QcGoFJKMD9bf%{Se#L;Apgg2E4#2zY3;w&phBRhN#%ZA}V{8w;fxOmeZe{C< z`U>#qJR^*U{X(O?=X~7_X==({#wP3)^cA@!`Qf8O7XX?*Tsf3KO!-(%0Fk5ox(H^4 zX}4vFIxAr3@KpR z`FnDOZ#?+_v5)avw&P^ye+y(9nyLy~GK|kacJ3foYcmr?kQ+n+deB<_ z)P|6OzczjU6vh5;G8rdC$N5txV~5Cqf5>F)TztroU&uiJf45P6M<2coO~x4g#3 z1ySbyl-D3zRe#EB$UG2H_D^|D9%S-E=46LRVZWp{05?12ef=S|v9q&7^teB@Hb~{q zJ^tUT><93Bnf=<}hrHt-8~i^nfdDR!hc)oOX>Dc6_VRjDM7_g&XQv+#B3bL8%^dB@ zKU{>^Mpk+Om2nJ7rC@S%lM|H1AH7qMiXW-jnxspup#yD?E85i6Tr0cjPTA~9HPchs zY2;|^O_paU*B0sGEBK5ym6g;zf2LW+Y;o^$5E8>#mR)0}OF* z71SAbPmo1$AmCecLsaV16S1|uql=rRX)~A4vYPY(-0*cBc_*u{3cb88=uR4cJ8pR* z_nqD8#TN2g3mM%|92x#2JRxlN_xBG|mJJlys5YGJ6Nx=9Ub#%Epb^>xnKE3*O$ z9yuM}!3y&}MwC`m)#kV~JcJ=euk^MRc*&e`Z|IyhUA>La5e(kdS24Hn^ly_3!ekGqi znDm%AuX=xQSDt$|;(25XxnR)xE1eU^f(2OBT85@jDRJ|TX7fTK;>Toq{1bbIvL2T6 z!kP7!Ti-^ezkGD4XH9#`IF_GRk*s7?t@C0qA9H`hx^-8Ie3P=dq3>EUeBvUJg@vVw z0Ekm7b;higt!13w67{ahG9~|I&qZ0yuFEmAJ^$X;iSyz23&*(R!wrgsNX! z;jQoT-&yHF9Up1rhGb%??hFE$o9J`v6y)BEF?_IiEUoKnmU~nHHUA{N4SHFPcv+1H zVAmd6u`-4vz_S+`LtQahgw1jr`6y`~)nrNmi)FFqgt*gTT7L*h%MM$yIjJvyEa9Pm$GdE>>#`z=EW_(8|gC9>B_f}~=0*Y)6 zmo8N3y9kgc;$`l_~zu`j!!UPaa^@;oDwK~jgMerITf;R?l%o)J1Et|Y$kPAjW3TruzlA*Ef^ z4u<>H_Ug7-o>K@7ahyU`0zWC)nYX2pkDmX=kOB3F$)xDptyO}1N7u8~mDvL!ex=Q; z>mB+d+lhR72esu;1(?PcodTF?0f83g`pTF#f$Yloslke(7@`|l1@BNsN|cwo*<*O+ zsvVLD4+0F3QToUTE!Yb*;%>GU&gzmZ@8Ms)9^@gvKJLH1dp3QAD0+>#5QSh|EJZGL zLLs`oiCp-qIHkL1aZnq*s3A{yJ>RK0uqVwo&*^F#$$j|T`9K~`1+<~Rf50h<=pvH4 zXeifqihs4*R*91&9aC?rd(Mi()0C%8*hY!lwj3(U0=oqgZF}*3A>Czt^K1FIhE5%OT31{0 zm32|~`o<$vyRZpN)9RPq1tysGv+WP)iV@1MV7GInLUwSocZPW=Oy)a^+^@RkA^ZoD*@9xlDfWO5}o{WBS@q#nfbM zsox%TE^7sga9fWHdCzdy=qB_F?*!V{to%x}Qgwj^S>JIx)TWo{0}7zt!gwP8SE2Cj zM=g4PyyFUEy6T~^NTlQBo|n|dDA$i=mu#Rv(W=I(kCvliprUTv@q2BJ+}uz!i7FUu zx$@-sOva8YMei<(40~z5Z|}{oWYz5pX6z2eAwT#MydTWl`P~`9# zeW34Mot;=}VATkTD~vZ3KcWztL4aY%g`qVR`GV~>d&|eCH`{D1sMeiGaTwN}kyiS^ zJ`K%_SG{nVCe8_+*zE3&>wFRPqtk)DNVmPbC}(^25env%fkQE)F+&0Mm1BC>jrd-I z{JvUxcHVU5Q_VZNLIN~f{;D~HYvmW^=A|5)RRmfL6M>jRh-8U>^?`MQZjzEO(P^k{DFpns-v1l~9k&bI;9-VXUk3W5qMXdG0 zt>^`#vjpQMi)LlXwYC9H;6ch@UT4IUv~NRk-2QsJU$E#BZDu+@oCRbEbABond+L;1 zRV1s#Fq=r?QKhfo?~=g!RcqzIzW9j7hoy4L`JQFoVi?8pjEie;7OM#9{3txYAbvgh zg@?yuFOv|urWHoEsP<2d*1kz>g+$dhp_ezX#X1>y@7>CaCGjvdMAe~H;QynLfR>FM z#sFv%_a)R*xjqfdA$U6=y}$H!S88|;muCR`yW+YR)+Hcj+!yntnEER{qq>J(M&kaw zrygMdYX_+xih1he>^!Q<^4YY{40`7^+~#u0>SM&t4A4BJpxQmyJ67f!j&XfZLa|I{Q32&iy+G&kML9h+@GC)a$$RAUUdBOmuyx@CSm08jF;A;}-(hZD!S4Ohd41np z`&dH@N>5(y#!Q3F#Nwjnz*tt*I7u#?oEa379}g~6lL5vDcVwCp=wPleg*oAO^P>DP zfxv-d9giap3D2S0{LTID`_exr=B)vl58K}$NNT!&!IQc4Eef-xB0bMPuk(=4ZCyB# zl)hf5Nvg8Sf7jANffHq6y0%s+Ujs6tAspDXwN4p&A)aFGHtbqfpiO#_K(Qd$ERV~i zL}Ua^R!0a$MfI|g{1i=se58rFe-w^?yO*g~L9Hqt&IYagFs$9%#vCh!hz2@K9dS`+QDqco#^4*HK8Xsq9){Tzw5} z1jA?QdvH>#KAhHvk~V0?>dMyRZG?=!VaG&z;qx9tAPeRm+zWd1)kzWA@qX$x^V}ke ziOX{6pv8RGU~0y;u)??_?5s3t%$?`(1@}b3q64A4W@L4p-XRX|$GJyk=Fw(gzq=Kz zSD8bXyp*bBC9;*szVc*RB!a|hT*S5q-untt^J$S*q9e+p+xj7v)R=ndPDtnp*+{2; z^dE6Hq`EtK~g+D+A}EZ)4bx13swgO9~*?T&`RPw?!>lJ8a+L`%+v3 zd_0dRah$tO5N*j#UwiEUyD^}#&N%O3mfeq8QNsP7J$nK^{@mHmn6AfgqJ*XH-+F0cfcjlHd~f8XQGe+7kjAvg&LO5o1HaI39zv&ZfjH>Ti675% zuzTv!%!#;cUJP{3os16=-4x5*p=49={vfu0Pht5%G#CkW21%q{9*amglctbS4c}g2rnd` zTFlMW3hWGEe;5qp5|ZX^?q&wba)D$^`~V~%e?tq&asfaX-JjQx=az(IUn8^sN_|lP zn?GDbGRc1!{h3tZ=?t=f5My>8WVSy(07%vc2N%Es@Dl@a0eK;}J$wKTzc4lq4lW31 z{5!@Ce4x*N$Jp2&p5yNrgmM4Nj)RjM@_>K0gk2wVb zxgMmCe_%YEkoWp`jFXS^pK}W2mTK4pS}@ yE_MqZP7^*(Gjldh5U&LXACEBd|8DYAgmH0&{0sfDP=Q<=Y~0Ay)K8V9kpB;ZX%Bh; literal 0 HcmV?d00001 diff --git a/Architecture/images/jsRealB.graffle b/Architecture/images/jsRealB.graffle new file mode 100644 index 0000000000000000000000000000000000000000..cd8b20ca7d6d11c01f2cba0d1359130c9b58923a GIT binary patch literal 15211 zcmaL8Q*OASN##uj zj-tH~AfaGYD`oFb*&yy9;Y46a0Pw)7a#3ckpfl&EdA>~rzprh-n2jk+{&eoHClSnt z2D>mXAHP5D{omTUH{ZR@T)*Ci3$DJF2isFQzFIvOvD>FukH3FB&aZPY@NCv&GE5B{ zr*^wLI5^F=dcGaL7L&x>><(6p+m*Z_f$d%Cb+~(bpRYQqR$s;L_nbskLvPas(uQ@eihz7qyC(09I|lycb8vTN zhpZ#(`uZKywI`M07vd03-Bg^bxS~Y=w&gxgB+r)ws=!S@9pbLS(ouJg&qYV$a1+n& z8H=y$ci%ggEbbyc*!PFpUH)N2OkY3tUA>ymEIfukBK$AN5nkWlJJUFvAiQ6fuKW&z z9`3$($z+q^`JBmS$I|T?1Ko^#$F!Q$Mp(O*5_^(n3JI3nK!-p4Nx^&|Zdw?0CB{hpu4tGwvD{9YnAH~#p2+`NU!T)a<)X&f#4 zg)<3!o$z;gXZyU^zxXH~-Vn09J!>>67A;S4@}*{EL@iP@Ol)35s($Q!ZOIOAgc>*+-L3iaW%SZ7rD+8> z_;K`PIFz2jh+j1(<9C;S)pB>ke9YsMc%@&eVJ*gMGw4ZYpiZ>Mz4kE!S}%jh|> z9Qc~vb_Hv>`kGn=Py%lI1XB7LvQAbSyY-%IH5`gc_uR9;ao=jZt{qyNP=i?8oJ!}+ zGw?PB8(U);d#(v3jk(z5%_FccrB-=v{>Hcrnt44{%0=#sM7`p}4rQZ&XFZd9=j(Nks1I)Y;iJobyxJL5 z>?>`GKhp0k!}Wf7vr|*2SK{eXuf6>V@236B0Jaj@B3r-ZEd&yns(*|9b+m0{v+ec~ zf%QJ!4*ktw=rR;_itlAu!fj~q>c_%Y*PdUDt>GNR_|5KJdw{?BqXek6gqyJ!Gt^h} z^YLYD*Si~GJn-rAqU(C4p`hS8zj)<*Sh{she^QM+b~4ob4qc3*6EedM4im+ zteQ0MPt*y!E+TLJF>@*HJ9?B2W60;(tp1dD_YXVpzqPy1?rYz{Pw;v zyxlU+rE8LeCPF5a(LHwzwxpC8;Oz#El}bhKV(y6MD3DvH*7MF!3)|lg`tMU6<#F>j zyy-8KS7&uEj@JbFD|9pl$aF{k?(PjStHtNoyKUGgxADrff{Bt&XDwZ@N#`SjI;UEh zhgh9wyxs;7RuvG;*CKgG3kzg7$X&A`c_Y0;K!3_?XF|v`?&-|{ZYcU3mP8U681*ea zXfQtDjUuYJ2XBkKjjd(4n5c0cnYc`1CL42v=-{m@evxYGPY|SJ@U1$!DtA1Iz~U$P zLM01dQ_Qp7_yzxXmf<*Hh_-wlU)X05?jst22~)&DFx2K0ok;0+Mnjk_vWg#eADyU<@$%8#zW8HGftU93R{H)ZrPC@8V z=nUZ)FYB%Q&J1EWVY(nm-8?So>Vfq94D!o?I*f|B zM5S0DV`p{mE;I!C7X%+Y9mkJTkRif*Uhf9T_15yyvjG7>`Lx8nFsh9Hr{s;aNUXj{eL>OIof zAG?>I;XDWI_VH>>Q;?|Jw{pM{piyX_>l%zNF!rVu%i|Fg{27FZ{ahL4GuPc$ZREkF z!B>a9${sGNGz%a1`l^*A@5ajE`6)na(&_+IL-~@~ej~P%JRNgJ`LfR;*{4DvPFXIb z`F+Cvi(8vdxwJ4q8mF|dtSjO0ha0NNG0$6I0{!eMSqb~@VgK^wk9yiew{A+B=H`Hi zB@*>>iQ?~uO&%4X)|FwqsI*K0hAS^C^VzYBJ54%gmB-o==~4Ku?66V-bQB-q+EOPR z3Opkdk|2T^c!ueOmypz#U;~}AGoY61BGAgrazI=@3=Q(o%Bm*jI`XufIesvv89K;v zor(Om!8PqhlZ#72l8q%(ZA}kC+ZW?FyDZ0q$gaF+Y>>FK&so z+$1X*rNe%#&+$;I5(Hvc`1^QEtjVTfsOdj6yQo^ak_6zR5s@1`IxKaiGK6_sCiBfGzh zv>-1kLaT`9Z?TlPm;<}Q$z*W{dj<9K%T-wE*JDOpFZB)_nc-m@7*|+Uue9@sK?vMZ z=cGYrbkXln81ne`Hd*bT&I)urKo#JaNuDegW#S`sV$Jr@!}6@ec6O6=#P@;Zkqn^6 z;dqw*&Squx=A^7hJ@Onk=^}q5u?W$9SI&x zS!FQ}cE?dRYZtm*3m~o55=&gB+#kGDte?4HgQZS4wjYDR6`{bG54Sv_q)lV;lM29@Coli2Igo_C<eLTQ)i2#OpH#8!OEbh+3BI9%zX}NT9&W4aBOF9)y%RpfVVsl={Z#c6H<;#i$V|- z;p`$1uoVT{_W%fs00>5_yhJD&I+Oj!2Gm0od`BR%^0Mov6(V1bjQey$jvb7m0`y{9 zo@JlGFV`tWL?vOyTGmOU48|+>`sYXz1AL`Ue?N-}M_f|L_ z7R-qF)^Zc*BEvT#xWC^Us=@Q8NvR%-Fc{FM$*UgskJ;BXaS7kDQ?jca2OV&16bq~1 z9`s7EyN(#vMfxMM*s}g4ULo<06eGyL6~pj|HCMySGdefiy*FNXLhu}E=k$7I2Y3K( zS7N!RJZnPo#5S((=1Na%2O&i4)a^!K-?q)wz(B?ziKQV#nijlVAdq3szUnYaZ?XE= zk^OI#!V@?g)G-jUlOasZ4}^ABQ+gWGL*L_$NpSZ&^cM%ZnwV3e2|K1i|pQjq|c ztu34Bjx_VZ)_LW$1*L6JPtr-?VG)fy51BUJOP*c{+sld#xw*Vg@7CS41k0p4{ZuLL8{GlNNH1vn;xkFa;Rt~ zhuMqQmdA)vDM_EhE8GjZUz4o$6vr${)TJ*#y-Icn6|t4$ftbsC7^g!NX|8e&WiEy| zTPzI-$K?%c?C#MZzaJC%=}!|S#(rv;Zd$#~=-SSH7QS`Y#jk-)ZY#QFI8@bPy#&G+O;+yqf{SCp@b^rVz@j@omRa6>s zQZn{JQ$NOVxpPk2AbfLM7-QE17^2p<9qrSOHCj1m0~?WaibEr2P|HxmhAG`^dkX|y z9jCQYTik%qu*lL=8=~ip+U{4p^kQrx+FNh2)|0F(AzE2JpMw~|+(=WzDdz5^4j&^rc`HS=K{4bgX<4}W7KN$)9sACGLJS;Q(c?=^{dgXbzMb79m=0tS3ExOK1 zKk6G88sbUip>>o!S@HWMgTh%&Rx8)o(}(uY-bQn7w|)GQ?ixEAIvE~S!xI#-PROwN z&h8VU&B*Yl4zdoslqT*rS4U`wzt2W*+>)uDX_of5cyV?kEI4#bA>zN#_}JcwG5KW9 zOr@tVJ2h{^>_Ot#=*#-DGO>~c6qC|jSh3oR5O%(X}Vrs?se8oQ@d9ZXVS^7#P~LH(>L#9iU8V_Aj4 zUhuuSfuJ8Qui#iefOAMS+&`^Y>{qldPsLh>AJ_5sx__)4*Ssp(QpEF*I#Af1rdx8AXTasdJyo&$@TSAl{=R55*9o}( z@UWYohxc=~^ZVr|e_3@iR6+a^$(J4aArVF?Mi1{9ThBDOPZrkmONbi;|F1E4)AS~c zhu7>!96$hNeQu3go`5suIe4Id3OlO4GMH#v35L6n$v0?4@_1&$T-mh>*{LEVT|a!E z`%TM=q>Rw_o=NG9nCyfe zR$Vue$y*V4!P!{|TXj4aTburU&?A*K4qb%co*&)Yqt<@dg+rP!TueuMCj3OA;+7ve z1Q%{$hQctDgw#IBNF{_{Gk^dTM$R?~^4sbPQP?Ookbk0KmNn8K_L>UABV5gytF%o) z*zz327Udsau=t*A!M7sZY-QKiP&VrYic4UN3Rc>-qqJiHbsNP6yVyWCuZk|ys439jO42F6P{2p887LP1fKj5aDTtjX?-71OQ)TGR+YZic`^|VT zLTNqjK*X9`fsrU4X>-gn7+HLR4!_0ez9++?9m^rF)%TsiSzZq{+hLLxTb7}lW-6(D zSB$nrd)x4?$MIH`ocD}rsfOWqy6N6Y(dJDP>A}JG`9E<%B3;${fe!;;wSbufcWGDm zcr=wHd`1P!gS3L0T00YRJ@7Pgc)bKR%Cmb(`~NQy;@= zXsQmV{)*)TX>Y|sv8~3l`xn+PvQ6%HrsbV_^|TgWKMa%VTBm93RS=EJ6xA?huKX+6 z*U#!0w;kENW&sHgXbp3=&kR^0Se>EbVhcVxwqbaNw`2}y-bEMqcR>e3f@V(@SpIM_AE;Xq<_d8ZUru!rA z|D@0_k?%;qc+hYtpt@5uplwYke6PP^eZ2Bo?dv)|58IVeac78?^fyMVkSkMM2L{4){Cpb;$YW2f#9cUqhN9U1qBJQ zcfrkab#D;cRM*iIGaI>7GfPt~SgrE$0RLDmv=g)PD-?3H=h?@cZ<7sHM3N+E5;9ho z(RjB*rCMAP&`SR9KGUZe0R&Yj=E1}T-4$ucN?RS$~Kd z+_C+N1@Rq3_<$*3)cSa&!z-?9-fB zUS6v+NW9PWn9p-{HJMp+NF5WGNN!pgQ)eg3Sbht1C^u zRH(~>G%KdsgFn7>tjU1LP`G0KZgqjQlyre-YE^fq0`Y_Cp^!fQtz0uG6!ooKR&XP; zp2sL<1K)53Db1jY%Vg;iN=&>?DeD|s42m_;QkNy&lU)XjIASs(8@Uq;qrtAs+&-Vx zJTvl8Y~1LuG^_5f=AyXjp{`*OLKFG`qVEQ$n@Z`KL@Jk&Qk9o4)kP+8i8ZQ^7G!W! zXOb1|03{S@$!>@z16%bxETVEXVI}oaidNa;I~2jRreN>jvrZm<6pJLVFcvq5|6tp8 z3@rqX{Mgc{L>}jRepbugdcU#eLt{)?LX{2`>u?H(E{U*67D1tqtQtDUIsB!oua)?o zqaXs8z#}TSn5@dh+TXd?)_4{IVfpQc;w|M*kZ#2DSmBAISCPNWpwuN>@aC`ZKa}Hn zPCFVyunbA`-GlnInZi1SZkQ@R4Ds zjvX$c&Qp~mu=M=G3QR$2un}UR3eZAP8Yg_*bkBOWBA9|xlIKI73?IR{jvS!zq`8p> zFI+O!F$6K7ngZXH>`_)wkV#A;Z75bCC=pOgiK8!SvSvRG(WTUSN^envRHd zPUHBpRe`4?;rovQ(`q)I*D05FD!?b%0jaF{t(XmKp%V-MvLYd=7B@JDJOTiE-NCfelgzROicqP_%*Fsf3Xoh|D)brn zbvoAtMu|8DB^l%rFL-E)v1sWdR0FKj)y7mUpZc>n<(>PrB*{#+q?jQmLH z+RhdsZ6~L#Z8aP)1NT0dwk2`{4aQEsUc24njP$B&CtLUTwmQI#B7gPM8Z+}{f)a{e z026B$R78C%A%}4*17p1D&=qyEhTf!xCSTE}?o+V^k1rOw1wP|ffR~~#(#6R(GPD)h zSUW`~`i2#q%MoPyYkC5YQ!ogT@B?P9B4$!$vr?QT(*b=8UKuk$FrrQ2Vj^q(kmx5U zq71V%@sSMj#8_JuxlClp*15q-etJ@5#S~$nZ|w>mNjd z5aV7(u*>#vxR5g{$DzHN-`-Kgut5jxxOYuJ!{~y(p6iu?WYEo6_Uv#rJ4TKLbCy!R zq2~2UB{eiqZNj|5hR!Wt#AlJxy36)~w|28BWa|#7G~!S?Ccv@i?f=IkQ&Rwi8uk2B z8dT8rjW6zWbS5zdEnig_!9*Lfi={`qwZ599;(W^Y1O-H8aViEK3Ol%m>cIvk1g^57 z$VeFuqYuyY>9L>VWkbsI?*k10e@vq+@!#~tE3-z5#0g-m!N>XwU@%=V#)sQ` z{Z}TdyC*9-p?>GYB{3+_5aAnPtP^9s{-}jZtKJKLb)Uv1bxEs~mga=VbO{mIiur=j zVloJq^T0pHaXT5jqc1;a&>x|L2Ma#++HI#xZV?6DiuM3oYwLq>Y+;GnZlFVS84?JS zTogZcyX%iD1#xX<-K7$E$anr40hkXqjp$pys91Ju#=Ht*cvo8djLXbRDSP(~d=~}z zs~GO=sf)#%3y0M8-d)iDk%kn1rD3JYX-?LC$KIvpJ4TSar!wZ&NAg^No8Qr*kHa`_ zSHUu>d7LUtEyp*h&7d#NyIHg2Y#qIqL66MUbQp^6@O!d-Y zCHn$+K9>KP!yHL_=QiM#VY2wK{GLCWe_wV!yB_`?Hmz;6oBmQy=oO#sH6=OHX4G1# zugTf*pLE&G9T7fl_0ERbX9XE^RrG(t%bYk1{kf2izj&FKj!B_iqxMfCgZzWqW%n8j zoPpi_epvpJ>x}qGo>H1fWHde95tF{djUcrygNXj>W0GJn~ z(dG42GQf1#O?i7{w%a2HshsnDq+@ekj+@E@v*PI0=N9DG)4@UT*xt_?hX2iXiXWEb zAwIWy57i#jBqx&T-9R5(41U5g>%(F8jj3E<&qUd$XZn4`Z55s=?va^OkF#6k zY=whS6fceAX}jc@Ibm}9@nNFya@8d;_Ohk7wuR|MT_}AVbAK95;OZ$SUZ0@o$z}dv zgof(#Hz$vT(q<)Tu7qZzQCwbj+53OHPHO+SP7CQ~EG%x3BdWG^8;B{QS=^UorCfB5 zJ-WM^H1qA$rG3=66^m?(5KKbitMEqONjEAauc(uTt48GJ>h1EJ)9T}~^@@xet0+s= z!L6We5JY(0W7ED5eOe@$IJWY@2vnHsq#g6g4fhd7zCk~Q!msX1t{ZZ?2dU`uqI|Cm z;|tbBbWA)smosRW?>>A!G0Sr^GWr_2SjmpRfWP|et(uzHi@$!VBlRI5#7sz`*isW_ z&~)k){8>{7%CyGbDJaO`uUATM?IROXqYQcU1oF!nf)}ZJz^N-FV4S=Zn9jwHC@*QJ z1trhB>h+k8I(lDcV-No)Bjk^$NFXXYX+kocK+qpBFp5W7P6xMGr&b~fx+<|$J@{Xw zeOR5Me4YX~oAKUy@)Nk_WGh5^pD3dvV4Q-?3a(?JwitrUHIu+~T7MIR%p$eQMizV9 zSkuGB`hH>&a(}LcG!f7VCDg-_qP)zBb(M@l)pa5nmG zP&wR(ua_U@+zVBZa&di%aem#0V87?;UIep!@koCUOTSf?Y~=EC^h#$(|3Nv!GC{j+ zfR!$eIG8OBk_ML~HeY1PN5bEWh8hkHAKGlo=xquq+|bz=fE%fnv7C~YpC5(4qm6^D zk{&TuNdQ|0T?h%W0M>4yZ2?f`Hn9pU2~g{gfa1U5+7lcQM6wldQ}FC{aNE$2M;84K z#=<~M0#$EIhTW@)N4!hCvbG2eSKBxxtSVh3S{I@1#2X-9Ij-e2LYZQ2Vm8to=;70i z`WR`0kp(frryO98`t4$E?GN5o`h3O|*+tOSNo{nXid@`aKExKKDwan6gwDc>N>0ls zusMLmIv-#`uD+oU1aU_vOZuLL6IEm(q|H0W%1%7^ofq4_ngEP$R{ zQCAcPB}|w+<0^(|5+>0tPL|Gc`4J0EuI#h*31v7TCc zI2TQjN>J@Su~9VCb*+{bzC0hD8%#)zbphq?P!$ugVkmqRR&zF0n`Lw88Fe*qq68(A zwpN6YP6CVxYO$(Pfh2)Y&hIW2(x+;gOc)yklh%Y=F9-3NXrmb*x}++@)<7mnh4u!wwgoU{WD~n+TW|L5{_KOnmQR<1Dk62 zv85rR0`oK+!_XmT6O@2;+3d$s)01#392V!DK(kU9(laGWGxA02jw>7}%qyZgHlTE+jCrN2JUK5Rx6gp@ zmQ_bvJcLi}wl<)Aq=Gtw@n-0F@Q`Fs@%#3N@m5(w3aL_)vPkl(uR3XC=PPkoU+YaWCKuX)W@+GIo?|`~r6Xls zZr%h4k~m8RCUNx6E$LVPP{z1+k3>T?en4!{laU2z?=U;5O7gra$g>6TnNr`dbrKoi z4R{7zgWRh$_QW!x>tD`_oQpK-0Bd8VkMRM%;k9U)Fwea(T_b__aB9Q+&fvk!Ou4Z> z!r%O1aKd4JyV|`LwL*?}m;KJGJV+h;Y^4*JmtA?V82lY(#@~G)5!!dJ!uWyY4hXOH zYbW@X&`$6`sxIj;9}<&xWoxkKPb7Xo#|g(aK#B6xti=X0hAyVY6_Xi|+y>jff$dUQ zRs*$*^frLE8d(UV=4{gZh7+Q{uXWP6K)yR7Vx(#nqt^YKj$JUKVO{i66UL>3$F=cq z#?CNS6>4M~ixdb^Y5&5Th&V;)uGmVd9jkVpl+`{pqms&IaT+*`qo(bnCrvK0A&yVF z5iSXdFSDKh7V$Se{|7>65E`A)$9n$dor$+Geblz0~Ob3T~K{}oa@GBMT95pWcbLJR^1 zpY(~+a*-ZIh~nxd4J&iH#8D!&)Opfe&gm%(Ac(u4i0v2pkfj)Z=C}0x&X2TOQrY@m zde9Og?OM$dm!LaH85bx^s|Ldyboub|%W$^sk2rfZLx#lW0Gf$~9^!*s4{kf^mS*(* zpliH8W*sm;lzzbrl%Y~Rp~S`s4E$nP3wbN{p00vgUJ2Pfw+7m5Np8QqV-OrE!KNjd znR;Y}$V(bEGHa}^76m^Jpx96^RNoY`m$rVca)c z4E?U*5N=Z5NliJCApx)_3fV;s+qBH}FQ)U)`3W}n55mtu(3pZg=sM;m$D$@33evp8 zO-pwVai=NX{x+x72z5LtO7vBuSRUEKG(3jh(Tk27c6I z(d&J1b!)y!CJ!_unWv^lSP5kYhyA5FSG&4RL!#6ws>v__vk=OT;5k>il;1>crOb7nz+3E z3E5Uy%q^Z+8LdgA)Thrqob7k=jD^ALv)WC}SXOo+qV{<0UEUUlz~C18$We-oGXcqx zVN?QX<@J%;e~`P3Q*#?^k%VfbBwk(N;cb79?+S7Xlb}3?qc8Nmj5DE_^Wuf}dK&VV z*$o*%g?lV7WBZo}XT06YoYESp5tX^^L4_soAsAghbReEn_rB43)QdLCznT))LuQIH+fQN5GZ_}f{+;=^Vw@YZ=i+-jqJLtYSsi(@9-K49n$hD{ z2fn%R7))U%)rSgVqrhX9QZ0p~5(AJe;VCZXwW&JY=vtU+S>2)KJ)s5D{1l3DLZm*5AP+G<*8 zM_R2iLQ@uqsEL;{V)W(ybS?c^r(5cK#$?f)m}3ScBw2TK-NH&8Zu5x=HZc#V|KbzYW5~ZkE_T!d>z9Z zd-BF9FYbISU*NlS9C__T%3UMt6nfncVv#Hi8e(SA8kDrAL#HLtwS`=%dqRx*tEY!{DJg)4E(2NBdwcEOy!`L-r!Vc@XG8~is*WHiBGlZi zLb-eUp@m`yoFkyLd~E1zLUEAKuc=kIFfMkSG@Bko=5a?6B8BZ7SqB!|00)B7gLR+v zZycgnK(!705Whu@TmeXwIUgV)GAK$za&SL<=?WyFQkHy4d=HW=^Nq)yy8(>`#GM?Uq{BZI#pDnte%rXbEpsR92yXB$yGi zk(75J)9)h8ox||UP~hus?}i*ykl;S+uU#%M>V%N3QVz;Ct+nj5j&28@txW-18@HiH zRuiJ`H^^pgmRJcnNiQv80Yq2W_;C^D+Ri}66Jep;8X*{?23r_lP#^$YN!Qz0W)i6% zK*$P`5L=KrZVjXiKW?qInsI;E{V?Q>qCUe_z7PWhEKd}v ztuYhkPyg9Np(xS;4H7o%mp^_5nI&MNdAOP4$1aAY$b_JF^a`I!t zGegQ+J2ph8Nwr|s4Bl!rrOK`^h0bP`-ELgH{Ce|p8ED;uF%Z{IBDDB3Qc5v|SVD_a zB_a2BJp|!6*pfe}DLf(1zTl)RiSgX#Yz@KuHIl&@*&y?3IHD-C6}VhAX4v?`S}-bTw^H4GY$edY)cB36Hj3@XN= z$oj9*|494K(;YiL;j#C;+C~dD`WTMwx=V<(=ZcH14H@56%Zbse*}}}(Yey&n5qx8P zxLz2s=M21}=$G?Bx=ne<3RDR7s|y`a?Y;&TrqNtc4AB8PTt*Px$3^Y_VWG!Rn5e>< zBqe~`vxnK=G&hFe^cZBi!TFb%dUI=?kFfoOadPQ6Ft&QTQH_FH4B!xCUD z9>pik?%*?B zHi+_NDW|3JwT>$Ek&2??vsa*PdeZ!ey$ikt8~mYdE^OpfpBPHN_n`J^fo2|8Mqx@x z$_VD!2A_sNU6SiqPL!;&UZd4q4THCGLg<3sBi0(d52e>4<=Qrxtoq<0{A({J$j!il z=Iuu?Jl<5K^AE-J%zENS2m=YNsLc_2Jh5~i5LduCV5Rmci}?YZcYlc&j8|2s4C%U* z^bfLjRy{F!iRZae%NU2PeWX7HlzXYIYrOf&i1bB=b!++vD3TB;a_{2QWEbm$!2`!Z zMPnZ9G&?H;y4wy&g}xAG4jq&_&TLZkuMGr7}didoJTp(n!Q^AAg;N@iN862Mr zUvTm7-BoQSqtF?p`)WZvV`@=B+4+2hq2Kr$Z;A0Ks>u(QeXwms#R%KV{Biv7AFkS*I`of&*16-lABGANmAf@mZ&@pt;l{o~<5?HFU z0p-L6H3#5o_gOuZ&1OPm9z2vJQuxSyS<$Qnkq;(f{Qg-fs{15Wr3nCpYCa_tQ%jzE zR*h+ut~jZLOH>H9Sp+u2zoCcXakKfou(;H(e&R9!RNVw^oqX%xl@SRb_BIbTBt$h| zyhEpvo%|UzwnS(O={}p_zE0mTIB~Z~y!m>R_vj}Mm4O{UvNS2Tl+v}KwBY`e-o6~t zOCNE!6t$F8*}{^@gMuU(1d~k^7EU{CyD6EaQaV4iNVgzQ0aVD6>W6MPooMKq%)f>GB78`_Vk9ySyJ!AM3AXO#nJ!Wd3hM9B0@x#l zU^LVFh;F^}URk5GVaIZ;w-V7yTWW-GT!Z1SSlEtAR)MzAM$EE1n7H z8^hN$5i(tp^C@Y6*Fl=2VbmikToY~A6Eh(?$_O0+iemUH>%Ed_LP~p>GC?tpX$(+S zkCCB4Q~)Gv&|HN!*7(H`{nfg-c7poGPi)rN;CDb7zoz?Xzv+AIz~Z_>Px{F4^>ylw zImPPx=2V$_?V!F_-HOD)^TV5gP3+9FjLXh_wYnp3uk5$=AIM19yB7TCy4z2>r%>pv zx50?(e6USsHrZfqsccSO@!lwSf{)rnuc@|?PE;$E5k*I{;*F61*t>A}ndFBGerojm zuyPqCfs>gVw<$^IK(N6nB>Wvy?Hu*;;ag!o+S7fA48<5Kfr9eIh}2)r5m&|exQ%8I zJwWu!N}GQxnNl>B7v+@Sn}Fn|g(SpfD^;U~vrxNBJ@LS^xs#uP^QoE2?*M#?^rlUn z!FsEt7xkE!zDNf9XGiC%DDNVn_xU(QO|JqBMMs9t($~|!*4|rIc=>osr{Nod2OXGyw-9)6sY@I@-L%$zJ+yzn zX|(ox50N?R%0Q(zw8~vH%Bff_yPN%c6f@EXR6yoI+u*7{V)yCHKr8bG{cWu_xaK_6 zj}SFC2@0Iq6Wfj+Lh94j1ZU_7G@TX%!zHCS=p n|Ffx5s7>2$*;+8Hy7~RB$~RUwugRD9^-JHP@-Sl!4DkN|UuaDM literal 0 HcmV?d00001 diff --git a/IDE/.html b/IDE/.html new file mode 100644 index 00000000..91c8de4b --- /dev/null +++ b/IDE/.html @@ -0,0 +1,17 @@ + + + + + + + + jsRealB-IDE + + + +
+ require("jsRealB-IDE-repl.js") +
+ + + diff --git a/IDE/README.md b/IDE/README.md new file mode 100644 index 00000000..59bd1cf4 --- /dev/null +++ b/IDE/README.md @@ -0,0 +1,85 @@ +# `jsRealB` Interactive Development Environment (IDE) + +One way of testing and developing `jsRealB` expressions is by using the Javascript console in a browser. But we found it much more convenient to use a command line environment built on top of the `node.js` *Read-Eval-Print Loop*. + +The system is started by typing + + node jsRealB-IDE-repl.js en + +which displays a prompt indicating the version and the date the system was compiled, it also loads a default language lexicon and rule set. The second parameter is either `en`, `dme` or `fr` (the default) which indicates the initial realization language, `dme` is a larger English lexicon. + + ** jsRealB 2.0 (2019-11-25 21:17) Development Environment [help() for info]** + English lexicon and rules loaded + jsRealB > + + +The *read-eval-print* loop allows the evaluation of any Javascript expression. If the result of the evaluation is an *object* whose prototype chain contains `Constituent` (i.e. *object* `instanceof Constituent` returns `true`), then it calls `toString()` on this value in order to show the realized sentence. If the result is a String, it is displayed without enclosing quotes. Otherwise, the value is shown as it would be in the standard *read-eval-print loop* using `util.inspect(...)`. + +This allows the use of `jsRealB` functions such as `loadEn()` or `loadFr()` for setting the realization language for the following expressions. + +The IDE also adds a few commands (i.e. expressions starting with a period) for querying the current lexicon and rule tables. This is useful to find the appropriate information when adding new words with `addToLexicon(lemma,information)`. + +These commands also accept a regular expression in place of a specific value, in which case they will return the result for each form that matches the regular expression. + +* `.ce` *ending* : conjugation information for tables with a given *ending*. + For example, to show the conjugation information for verbs ending with `ve`: + + jsRealB > .ce ve + v83: + { ending: 've', + t: + { b: 've', + ps: 'd', + pr: 'ving', + pp: 'd', + p: [ 've', 've', 's', 've', 've', 've' ] } } + +* `.cn` *no* : conjugation information for table *no*. + For example, to show the content of table `v2`: + + jsRealB > .cn v2 + { ending: '', + t: + { b: '', + ps: 'ed', + pr: 'ing', + pp: 'ed', + p: [ '', '', 'es', '', '', '' ] } } + + +* `.de` *ending* : declension information for table with a given *ending*. + For example, to show the declension information for words ending by `ouse` + + jsRealB > .de ouse + n16: + { ending: 'ouse', + declension: [ { val: 'ouse', n: 's' }, { val: 'ice', n: 'p' } ] } + +* `.dn` *no* : declension information for table *no*. + For example, to show the declension information for table `n1` + + jsRealB > .dn n1 + { ending: '', + declension: [ { val: '', n: 's' }, { val: 's', n: 'p' } ] } + +* `.lx` *lemma* : dictionary information for lemma in a format that can be used as input for `addToLexicon()`; this is useful for adding a new lemma that is conjugated or declensed similarly to a word already in the lexicon. + For example, to show the lexicon information for the word `love` + + jsRealB > .lm love + { N: { tab: [ 'n1' ] }, V: { tab: 'v3' } } + +* `.lm` *form* : find jsRealB expressions that can realize this form. + For example, to find how to realize `his` + + jsRealB > .lm his + Pro("mine").g("m").ow("s") + D("my").g("m").ow("s") + + to find to how to realize all forms matching the pattern `l.ve` + + jsRealB > .lm l.ve + live: A("live"); V("live").t("b"); V("live").pe(1); V("live").pe(2); V("live").pe(1).n("p"); V("live").pe(2).n("p"); V("live").n("p") + love: N("love"); V("love").t("b"); V("love").pe(1); V("love").pe(2); V("love").pe(1).n("p"); V("love").pe(2).n("p"); V("love").n("p") + + + diff --git a/IDE/index-dev.html b/IDE/index-dev.html deleted file mode 100644 index 78772d67..00000000 --- a/IDE/index-dev.html +++ /dev/null @@ -1,84 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - Environnement de programmation jsRealB - - -

jsRealB : construction d'une expressionbuilding an expression - - -

- -
-
-
-
-
-
- -
-
-
-

Interrogation des ressources - Resource query -

- - - -
-
-
-
- - diff --git a/IDE/index.html b/IDE/index.html deleted file mode 100644 index 428faf35..00000000 --- a/IDE/index.html +++ /dev/null @@ -1,76 +0,0 @@ - - - - - - - - - - - - - - Environnement de programmation jsRealB - - -

jsRealB : construction d'une expressionbuilding an expression - - -

- -
- -
-
- Réalisationrealisation - - - - -
-
-
- Cliquer sur un noeud pour voir l'état de sa réalisation - Click on a node to see the state of its realisation -
-
-
-
-
-
-
- -
-
-
-

Interrogation des ressources - Resource query -

- - - -
-
-
-
- - diff --git a/IDE/jsRealB-IDE-repl.js b/IDE/jsRealB-IDE-repl.js new file mode 100644 index 00000000..6be95a16 --- /dev/null +++ b/IDE/jsRealB-IDE-repl.js @@ -0,0 +1,113 @@ +/* + Customized node.js READ-EVAL-PRINT loop for developing jsRealB expressions + - when the expression is a Constituent, call toString() to get its realization + - output a string as is without enclosing quotes + - usual util.inspect for all other types of values + - history of previous commands is saved on a normal exit (^D) only + + example call: + node /path/to/jsRealB-IDE/jsRealB-IDE-repl.js [en|dme|fr] (fr is the default...) +*/ + +// preload jsRealB module +jsRealB=require("./jsRealB-IDE.min.js"); +// import constructors and other functions +for (var v in jsRealB){eval (''+v+"=jsRealB."+v)} +// select language +var args=process.argv +console.log("** jsRealB "+jsRealB_version+" ("+jsRealB_dateCreated+") Development Environment [help() for info]**") +if (args.length>2){ + if (args[2]=="en")loadEn(true); + if (args[2]=="dme"){ + loadEn(true); + updateLexicon(require("../data/lexicon-dme.json")); + console.log("dme lexicon loaded") + } else if (args[2]=="fr")loadFr(true); + else { + console.log("Language "+args[2]+" not implemented"); + loadFr(true); + } +} else loadFr(true); + +// customize Read-Eval-Print loop +var repl = require('repl'); +// specialized output +function myWriter(output) { + if (isConstituent(output)) // realize the sentence + return "=> "+output.toString(); + if (typeof output == "string") // output a string as is + return output; + return util.inspect(output); // inspect other types of output +} + +const replServer=repl.start({ + prompt: 'jsRealB > ', + useGlobal: true, + ignoreUndefined: true, + writer:myWriter, + replMode: repl.REPL_MODE_STRICT +}); + +// add commands for querying the linguistic resources +replServer.defineCommand('cn', { + help: 'conjugation information for table no', + action(no) { + console.log(getConjugation(no)); + this.displayPrompt(); + } +}); +replServer.defineCommand('ce', { + help: 'conjugation information for table with ending', + action(ending) { + console.log(getConjugationEnding(ending)); + this.displayPrompt(); + } +}); +replServer.defineCommand('dn', { + help: 'declension information for table no', + action(no) { + console.log(getDeclension(no)); + this.displayPrompt(); + } +}); +replServer.defineCommand('de', { + help: 'declension information for table with ending', + action(ending) { + console.log(getDeclensionEnding(ending)); + this.displayPrompt(); + } +}); +replServer.defineCommand('lm', { + help: 'lemmatize: get jsRealB expression for form', + action(word) { + console.log(lemmatize(word)); + this.displayPrompt(); + } +}); +replServer.defineCommand('lx', { + help: 'get lexicon info for form', + action(word) { + var info=getLexiconInfo(word); + if (info===undefined) + console.log(word+":"+(getLanguage()=="en"?" not found":"pas trouvé")); + else console.log(util.inspect(info,{depth:null})); + this.displayPrompt(); + } +}); + +// save the history of commands... which is not done when a custom repl is used +// adapted from https://medium.com/@tjwebb/a-custom-node-repl-with-history-is-not-as-hard-as-it-looks-3eb2ca7ec0bd + +// load saved history +const historyFile=require('os').homedir()+'/.node_repl_history' + +fs.statSync(historyFile) +fs.readFileSync(historyFile,"utf8").split('\n') + .reverse() + .filter(line => line.trim()) + .map(line => replServer.history.push(line)) + +// save the commands from this session on normal exit +process.on('exit', function () { + fs.appendFileSync(historyFile, replServer.lines.join('\n')) +}); \ No newline at end of file diff --git a/IDE/jsRealB-IDE.js b/IDE/jsRealB-IDE.js new file mode 100644 index 00000000..16aae041 --- /dev/null +++ b/IDE/jsRealB-IDE.js @@ -0,0 +1,22577 @@ +/** + jsRealB 2.0 + Guy Lapalme, lapalme@iro.umontreal.ca, nov 2019 + */ + + +// global variables +var exceptionOnWarning=false; // throw an exception on Warning instead of merely write on the console +var defaultProps; // to be filled by loadEn | loadFR +var currentLanguage, rules, lexicon; + +/////////////// Constructor for a Constituent (superclass of Phrase and Terminal) +function Constituent(constType){ + this.parentConst=null; + this.constType=constType; + this.prop={}; + this.realization=null; + this.lang=currentLanguage; +} + +// warning message on the console prefixed with an identification or throws an Exception +Constituent.prototype.warning = function(messEn,messFr){ + const mess=this.me()+":: "+(messFr!==undefined && getLang()=="fr"?messFr:messEn); + if (exceptionOnWarning) throw mess; + console.warn(mess); + return this; +} + +// error message for internal error that should never happen !!! +Constituent.prototype.error = function(mess){ + throw "Internal error: this should never have happened, sorry!\n"+this.me()+":: "+mess; +} + +////////// access functions + +Constituent.prototype.isA = function(type){ + return this.constType==type +} + +Constituent.prototype.isOneOf = function(types){ + return types.indexOf(this.constType)>=0; +} + +Constituent.prototype.isFr = function(){return this.lang=="fr"} +Constituent.prototype.isEn = function(){return this.lang=="en"} + +// get the property by following the "agreesWith" links, but keeping track of last verb +// in case of "tense" so that it does not take the "default" tense of the subject... +Constituent.prototype.getProp = function(propName){ + // check for specific property on this element + const val = this.prop[propName]; + if (val !== undefined) return val ; + // follow the agreement list + let lastVerb; + let current=this; + let next=current.agreesWith; + while (next !== undefined){ + if (current.isOneOf(["V","VP"]))lastVerb=current; + current=next; + next=next.agreesWith; + } + if (propName=="t" && lastVerb !== undefined)return lastVerb.prop["t"] || defaultProps["t"] + return current.prop[propName] || defaultProps[propName] +} + +// get the property in the first surrounding sentence (S or SP) +Constituent.prototype.getSentProp = function(propName){ + const value=this.prop[propName]; + if (value!==undefined) return value; + if (this.parentConst==null || this.constType=="S" || this.constType=="SP") + return undefined; + return this.parentConst.getSentProp(propName); +} + +// get a given constituent with a path starting at this +// path is a list of node type , or list of node types (an empty string in this list means optional) +// returns undefined if any node does not exist on the path +Constituent.prototype.getFromPath = function(path){ + if (path.length==0) return this; + const current=path.shift(); + const c=this.getConst(current); + if (c===undefined){ + if (typeof current == "object" && current.indexOf("")>=0 && path.length>0){// optional + return this.getFromPath(path); + } + return undefined; + } + return c.getFromPath(path); +} + +// Creation of "standard" options +function genOptionFunc(option,validVals,allowedConsts,optionName){ + Constituent.prototype[option]=function(val){ + if (val===undefined){ + if (validVals !== undefined && validVals.indexOf("")<0){ + return this.warning("Option "+option+" without value; should be one of ["+validVals+"]") + } + val=null; + } + if (this.isA("CP")){// propagate an option through the children of a CP + for (let i = 0; i < this.elements.length; i++) { + const e=this.elements[i]; + if (allowedConsts.length==0 || e.isOneOf(allowedConsts)){ + e[option](val) + } + } + return this; + } + if (allowedConsts.length==0 || this.isOneOf(allowedConsts)) { + if (validVals !== undefined && validVals.indexOf(val)<0){ + return this.warning("Option "+option+" with invalid value:"+val+" ignored"); + } + // start of the real work... + if (optionName===undefined)optionName=option; + let current=this; + if (!contains(["pro","cap","lier","ow"],optionName)){// follow the "agreement" links except for some options + while (current.agreesWith!==undefined)current=current.agreesWith; + } + current.prop[optionName]=val; + return this; + } else { + return this.warning("Option "+option+" is applied to a "+this.constType+ + " but it should be applied only on one of "+allowedConsts) + } + } +} + +genOptionFunc("t",["p", "i", "f", "ps", "c", "s", "si", "ip", "pr", "pp", "b", // simple tenses + "pc", "pq", "cp", "fa", "spa", "spq"],["V","VP","S"]); // composed tenses +genOptionFunc("g",["m","f","n","x"],["D","N","NP","A","AP","Pro","V","VP","S"]); +genOptionFunc("n",["s","p"],["D","N","NP","A","AP","Pro","V","VP","S"]); +genOptionFunc("pe",[1,2,3],["D","Pro","N","NP","V","VP","S"]); +genOptionFunc("f",["co","su"],["A","AP","Adv"]); +genOptionFunc("aux",["av","êt","aê"],["V","VP"]); + +genOptionFunc("pos",["post","pre"],["A","AP"]); +genOptionFunc("pro",undefined,["N","NP"]); +// English only +genOptionFunc("ow",["s","p","x"],["D","Pro"],"own"); + +/// Formatting options +genOptionFunc("cap",undefined,[]); +genOptionFunc("lier",undefined,[]); + +// creation of option lists +function genOptionListFunc(option){ + Constituent.prototype[option]=function(val){ + if (this.prop[option] === undefined)this.prop[option]=[]; + this.prop[option].push(val); + return this; + } +} + +genOptionListFunc("b"); +genOptionListFunc("a"); +genOptionListFunc("en"); + +///////// specific options + +// HTML tags +Constituent.prototype.tag = function(name,attrs){ + if (attrs === undefined)attrs=""; + if (this.prop["tag"] === undefined)this.prop["tag"]=[]; + this.prop["tag"].push([name,attrs]); + return this; +} + +// date options +Constituent.prototype.dOpt = function(dOptions){ + if (this.isA("DT")){ + const allowedKeys =["year" , "month" , "date" , "day" , "hour" , "minute" , "second" , "nat", "det", "rtime"]; + const keys=Object.keys(dOptions); + for (let i = 0; i < keys.length; i++) { + const key = keys[i]; + if (allowedKeys.indexOf(key)>=0){ + const val = dOptions[key]; + if (typeof val == "boolean"){ + this.dateOpts[key]=val + } else { + this.warning("dOpt: the value of "+key+" should be a boolean not "+val); + } + } else { + this.warning(key+ "is not an allowed key in dOpt fo DT"); + } + } + } else if (this.isA("NO")){ + const allowedKeys = ["mprecision","raw","nat","ord"]; + const keys=Object.keys(dOptions); + for (let i = 0; i < keys.length; i++) { + const key = keys[i]; + if (allowedKeys.indexOf(key)>=0){ + const val = dOptions[key] + if (key=="mprecision"){ + if (typeof val == "number"){ + this.noOptions["mprecision"]=val + } else { + this.warning("mprecision should be a number not "+val) + } + } else if (typeof val =="boolean"){ + this.noOptions[key]=val + } else { + this.warning(".dOpt("+key+") for NO should be boolean not "+val) + } + } else { + this.warning(key+ "is not an allowed key in dOpt for NO"); + } + } + } else { + this.warning(".dOpt should only be applied to a DT or a NO not a "+this.constType); + } + return this; +} + +// number option +Constituent.prototype.nat= function(isNat){ + if (this.isOneOf(["DT","NO"])){ + const options=this.isA("DT")?this.dateOpts:this.noOptions; + if (isNat === undefined){ + options.nat=false; + } else if (typeof isNat == "boolean"){ + options.nat=isNat; + } else { + this.warning("nat: the value of the argument should be a boolean not "+isNat); + } + } else { + this.warning(".nat should only be applied to a DT or a NO not a "+this.constType); + } + return this; +} + +// propagate information from the subject to the verb in this Phrase or Terminal +Constituent.prototype.verbAgreeWith = function(subject){ + if (this.isA("VP")){ + const v=this.getConst("V"); + if (v!==undefined){ + this.agreesWith=v; + v.agreesWith=subject; + if (v.lemma=="être"){// attribut du sujet + const apa=this.getConst(["AP","A"]) + if (apa !== undefined){ + if (apa.isA("AP")){ + const a=apa.getConst("A"); + if (a!== undefined){ + apa.agreesWith=a; + a.agreesWith=subject; + } + } else { // apa is A + apa.agreesWith=subject + } + } + } + } + } else if (this.isA("V")){ // this is a V + this.agreesWith=subject; + } else { + this.error("verbAgreeWith should be called on VP or V, not a "+this.constType) + } +} + +// regex for matching (ouch!!! it is quite subtle...) +// 1-possible non-word chars and optional html tags +// 2-the real word +// 3-the rest after the word +const sepWordREen=/((?:[^<\w'-]*(?:<[^>]+>)?)*)([\w'-]+)?(.*)/ + +function doElisionEn(cList){ + //// English elision rule only for changing "a" to "an" + // according to https://owl.english.purdue.edu/owl/resource/591/1/ + const hAnRE=/^(heir|herb|honest|honou?r(able)?|hour)/i; + //https://www.quora.com/Where-can-I-find-a-list-of-words-that-begin-with-a-vowel-but-use-the-article-a-instead-of-an + const uLikeYouRE=/^(uni.*|ub.*|use.*|usu.*|uv.*)/i; + const acronymRE=/^[A-Z]+$/ + const punctuationRE=/^\s*[,:\.\[\]\(\)\?]+\s*$/ + + // search for terminal "a" and check if it should be "an" depending on the next word + var last=cList.length-1; + for (var i = 0; i < last; i++) { + var m1=sepWordREen.exec(cList[i].realization) + if (m1 === undefined) continue; + var w1=m1[2] + if (w1=="a" && cList[i].isA("D")){ + if (/^[aeio]/i.exec(w1) || // starts with a vowel + (w1.charAt(0)=="u" && !uLikeYouRE.exec(w1)) || // u does not sound like you + hAnRE.exec(w1) || // silent h + acronymRE.exec(w1)) { // is an acronym + cList[i].realization=m1[1]+"an"+m1[3]; + i++; // skip next word + } + } + } +} + +// same as sepWordREen but the [\w] class is extended with French accented letters and cedilla +// const sepWordREfr=/(([^<\wàâéèêëîïôöùüç'-]*(<[^>]+>)?)*)([\wàâéèêëîïôöùüç'-]+)?/i +const sepWordREfr=/((?:[^<\wàâéèêëîïôöùüç'-]*(?:<[^>]+>)?)*)([\wàâéèêëîïôöùüç'-]+)?(.*)/i + +function doElisionFr(cList){ + //// Elision rules for French + // implements the obligatory elision rules of the "Office de la langue française du Québec" + // http://bdl.oqlf.gouv.qc.ca/bdl/gabarit_bdl.asp?Th=2&t1=&id=1737 + // for Euphonie, rules were taken from Antidote (Guide/Phonétique) + + const elidableWordFrRE=/^(la|le|je|me|te|se|de|ne|que|puisque|lorsque|jusque|quoique)$/i + const euphonieFrRE=/^(ma|ta|sa|ce|beau|fou|mou|nouveau|vieux)$/i + const euphonieFrTable={"ma":"mon","ta":"ton","sa":"son","ce":"cet", + "beau":"bel","fou":"fol","mou":"mol","nouveau":"nouvel","vieux":"vieil"}; + + const contractionFrTable={ + "à+le":"au","à+les":"aux","ça+a":"ç'a", + "de+le":"du","de+les":"des","de+des":"de","de+autres":"d'autres", + "des+autres":"d'autres", + "si+il":"s'il","si+ils":"s'ils"}; + + + function isElidableFr(realization,lemma,pos){ + // check if realization starts with a vowel + if (/^[aeiouàâéèêëîïôöùü]/i.exec(realization,lemma,pos)) return true; + if (/^h/i.exec(realization)){ + // check for a French "h aspiré" for which no elision should be done + var lexiconInfo=getLemma(lemma); // get the lemma with the right pos + if (typeof lexiconInfo == "undefined") return true; // elide when unknown + if (pos in lexiconInfo && lexiconInfo[pos].h==1) return false; // h aspiré found + return true; + } + return false; + } + + var contr; + var last=cList.length-1; + for (var i = 0; i < last; i++) { + var m1=sepWordREfr.exec(cList[i].realization) + if (m1 === undefined) continue; + var m2=sepWordREfr.exec(cList[i+1].realization) + if (m2 === undefined) continue; + // HACK: m1 and m2 save the parts before and after the first word (w1 and w2) which is in m_i[2] + // for a single word + var w1=m1[2]; + var w2=m2[2]; + if (elidableWordFrRE.exec(w1) && isElidableFr(w2,cList[i+1].lemma,cList[i+1].constType)){ + cList[i].realization=m1[1]+w1.slice(0,-1)+"'"+m1[3]; + i++; + } else if (euphonieFrRE.exec(w1) && isElidableFr(w2,cList[i+1].lemma,cList[i+1].constType)){ // euphonie + if (/ce/i.exec(w1) && /(^est$)|(^étai)/.exec(w2)){ + // very special case but very frequent + cList[i].realization=m1[1]+w1.slice(0,-1)+"'"+m1[3]; + } else { + cList[i].realization=m1[1]+euphonieFrTable[w1]+m1[3]; + } + i++; + } else if ((contr=contractionFrTable[w1+"+"+w2])!=null){ + // check if the next word would be elidable, so instead elide it instead of contracting + if (elidableWordFrRE.exec(w2) && i+2<=last && + isElidableFr(cList[i+2].realization,cList[i+2].lemma,cList[i+2].constType)){ + cList[i+1].realization=m2[1]+w2.slice(0,-1)+"'"+m2[3] + } else { // do contraction of first word and remove second word (keeping start and end) + cList[i].realization=m1[1]+contr+m1[3]; + cList[i+1].realization=m2[1]+m2[3].trim(); + } + i++; + } + } +} + +/// useful function for skipping the possible HTML tag at the start of the string +function indexOfFirstLetter(lang,s){ + const sepWordRE=lang=="en"?sepWordREen:sepWordREfr; + if (s.length==0) return null; + const m=sepWordRE.exec(s); + if (m==null||m[4]==undefined)return 0; + return m[1].length; +} + + +// applies to a list of Constituents (can be a single one) +// adds either to the first or last token (which can be the same) +Constituent.prototype.doFormat = function(cList){ + const punctuation=rules["punctuation"]; + + function getPunctString(punct){ + const punc=lexicon[punct]; + if (punc !== undefined && punc["Pc"] !== undefined){ + const tab=punc["Pc"]["tab"][0]; + const puncRule=rules["punctuation"][tab]; + return puncRule["b"]+punct+puncRule["a"] + } + return punct // default return string as is + } + + function getBeforeAfterString(punct){ + const punc=lexicon[punct]; + if (punc !== undefined && punc["Pc"] !== undefined){ + const compl=punc["Pc"]["compl"]; + if (compl !== undefined){ + const before=punct; + const after=compl; + const tab=punc["Pc"]["tab"] + const tabBefore=tab[0]; + const tabAfter=tab.length==2?tab[1]: + lexicon[compl]["Pc"]["tab"][0]; //get from table of compl + const puncRuleBefore=rules["punctuation"][tabBefore]; + const puncRuleAfter=rules["punctuation"][tabAfter]; + return {"b":puncRuleBefore["b"]+before+puncRuleBefore["a"], + "a":puncRuleAfter["b"]+after+puncRuleAfter["a"]} + } + } + return {"b":punct,"a":punct} + } + + // add before the first element of cList and after the last element of cList + function wrapWith(before,after){ + cList[0].realization=before+cList[0].realization; + cList[cList.length-1].realization+=after; + } + function startTag(tagName,attrs){ + let attString=""; + if (attrs !== "") { + attString=Object.entries(attrs).map( + function(entry){return " "+entry[0]+'="'+entry[1]+'"'}).join("") + } + return "<"+tagName+attString+">"; + } + + // start of processing + + if (this.isFr()) + doElisionFr(cList); + else + doElisionEn(cList); + + const as = this.prop["a"]; + if (as !== undefined){ + as.forEach(function(a){wrapWith("",getPunctString(a))}) + } + const bs = this.prop["b"]; + if (bs !== undefined){ + bs.forEach(function(b){wrapWith(getPunctString(b),"")}) + } + const ens = this.prop["en"]; + if (ens !== undefined){ + ens.forEach(function(en){ + const ba=getBeforeAfterString(en); + wrapWith(ba["b"],ba["a"]) + }) + } + const cap = this.prop["cap"]; + if (cap !== undefined && cap !== false){ + const r=cList[0].realization; + if (r.length>0){ + cList[0].realization=r.charAt(0).toUpperCase()+r.substring(1); + } + } + const tags=this.prop["tag"]; + if (tags !== undefined) { + tags.forEach(function(tag){ + const attName=tag[0]; + const attVal=tag[1]; + wrapWith(startTag(attName,attVal),""); + }) + } + return cList; +} + +// merge all tokens (i.e. Terminal with their realization field) into a single string, +// if at "top level", apply elision and default sentence formatting +Constituent.prototype.detokenize = function(terminals){ + let s=""; // final realized string + const last=terminals.length-1; + if (last<0) return s; + for (let i = 0; i < last; i++) { + const terminal=terminals[i]; + if (terminal.prop["lier"]!== undefined){ + s+=terminal.realization+"-"; + } else if (/[- ']$/.exec(terminal.realization)){ + s+=terminal.realization; + } else if (terminal.realization.length>0) { + s+=terminal.realization+" "; + } + } + s+=terminals[last].realization; + // apply capitalization and final full stop + if (this.parentConst==null){ + if (this.constType=="S" && s.length>0){ // if it is a top-level S + // force a capital at the start unless .cap(false) + if (this.prop["cap"]!== false){ + const idx=indexOfFirstLetter(this.lang,s); + s=s.substring(0,idx)+s.charAt(idx).toUpperCase()+s.substring(idx+1); + } + // and a full stop at the end unless there is already one + // taking into account any trailing HTML tag + const m=/ ?(<[^>]+>)*$/.exec(s); + const idxLastChar=s.length-1-m[0].length; + if (!contains("?!./",s.charAt(idxLastChar))){ + s=s.substring(0,idxLastChar+1)+"."+s.substring(idxLastChar+1) + } + } + } + return s; +} + +// produce a string from a list of realization fields in the list of terminal +// created by .real(), applies elision if it is the top element +Constituent.prototype.toString = function() { + // this launches the whole realization process which forces + // the creation of the realization field in each Terminal + const terminals=this.real(); + return this.detokenize(terminals); +} + +Constituent.prototype.clone = function(){ + return eval(this.toSource()); +} + +// create the source for the options from the properties +Constituent.prototype.toSource = function(){ + let res=""; + let typs=[]; + Object.entries(this.prop).forEach( + function (e) { + const key=e[0]; + let val=e[1]; + switch (key){ + case "tag": // special case of HTML tag + val.forEach( + function (tagE){ + res+=".tag("+quote(tagE[0]) + if(tagE[1]!="")res+=","+JSON.stringify(tagE[1]) + res+=")"; + } + ) + break; + // options to be combined in a single .typ + case "neg": case"pas": case "prog": case "perf": case "exc":case "mod": case "int": + if (val===false)break; + if (val!==true)val=quote(val); + typs.push(key+":"+val); + break; + case "h": case "cod":// option to ignore + break; + case "own": // internal option name differs from external one... + res+=".ow("+quote(val)+")"; + break; + default: // standard option but ignoring default values + if ( !(key in defaultProps) || val!=defaultProps[key]){ + if (typeof val === "object"){ + val.forEach(function(ei){res+="."+key+"("+quote(ei)+")"}) + } else { + res+="."+key+"("+quote(val)+")"; + } + } + } + } + ) + return res+(typs.length==0?"":(".typ({"+typs.join()+"})")); +}/** + jsRealB 2.0 + Guy Lapalme, lapalme@iro.umontreal.ca, nov 2019 + */ + +////// Constructor for a Phrase (a subclass of Constituent) + +// phrase (non-terminal) +function Phrase(elements,constType){ + Constituent.call(this,constType); // super constructor + this.elements=[]; + if (elements.length>0){ + const last=elements.length-1; + // add all elements except the last to the list of elements + for (let i = 0; i < last; i++) { + let e=elements[i]; + if (typeof e=="string"){ + e=Q(e); + } + e.parentConst=this; + this.elements.push(e); + } + // terminate the list with add which does other checks on the final list + this.add(elements[last],undefined) + } +} +extend(Constituent,Phrase) + +// add a new constituent, set agreement links +Phrase.prototype.add = function(constituent,position){ + // create constituent + if (typeof constituent=="string"){ + constituent=Q(constituent); + } + constituent.parentConst=this; + // add it to the list of elements + if (position == undefined){ + this.elements.push(constituent); + } else if (position=0){ + this.elements.splice(position,0,constituent) + } else { + warning("Bad position for .add:"+position+"should be less than "+this.elements.length) + } + // change content or content position of some children + this.setAgreementLinks(); + for (let i = 0; i < this.elements.length; i++) { + const e=this.elements[i]; + if (e.isA("A")){// check for adjective position + const idx=this.getIndex("N"); + const pos=this.isFr()?(e.prop["pos"]||"post"):"pre"; // all English adjective are pre + if (idx >= 0){ + if ((pos=="pre" && i>idx)||(pos=="post" && i=0){ + let subject=this.elements[iSubj]; + if (this.isA("SP") && subject.isA("Pro") && contains(["que","that"],subject.lemma)){ + // HACK: the first pronoun should not be a subject... + // so we try to find another... + const jSubj=this.elements.slice(iSubj+1).findIndex( + e => e.isOneOf(["NP","N","CP","Pro"]) + ); + if (iSubj>=0){ + subject=this.elements[iSubj+1+jSubj]; + } else { + // finally this generates too many spurious messages + // this.warning("no possible subject found"); + return this; + } + } + this.agreesWith=subject; + const vpv=this.getFromPath([["VP",""],"V"]); + if (vpv !== undefined){ + vpv.verbAgreeWith(subject); + if (this.isFr() && vpv.lemma=="être"){// check for a French attribute of "ëtre" + const attribute=vpv.parentConst.getFromPath([["AP",""],"A"]); + if (attribute!==undefined){ + attribute.agreesWith=subject; + } + } + } else { + // check for a coordination of verbs that share the subject + const cvs=this.getFromPath(["CP","VP"]); + if (cvs !==undefined){ + this.getConst("CP").elements.forEach(function(e){ + if (e instanceof Phrase)e.verbAgreeWith(subject) + }) + } + if (this.isFr()){ + // in French, check for a coordinated object of a verb in a SP used as cod + // occurring before the verb + const cp=this.getConst("CP"); + const sp=this.getConst("SP"); + if (cp !==undefined && sp !== undefined){ + var sppro=sp.getConst("Pro"); + if (sppro !== undefined && sppro.lemma=="que"){ + var v=sp.getFromPath([["VP",""],"V"]); + if (v!==undefined){ + v.prop["cod"]=cp; + } + } + } + } + } + } else { + // finally this generates too many spurious messages + // this.warning("no possible subject found") + } + break; + default: + this.error("setAgreementLinks,unimplemented type:"+this.constType) + } + return this; +} + +//////// tools + +// returns an identification string, useful for error messages +Phrase.prototype.me = function(){ + const children=this.elements.map(function(e){return e.me()}); + return this.constType+"("+children.join()+")"; +} + +Phrase.prototype.setLemma = function(lemma,terminalType){ + this.warning("***: should never happen: setLemma: called on a Phrase"); + return this; +} + +// find the index of a Constituent type (or one of the constituents) in the list of elements +Phrase.prototype.getIndex = function(constTypes){ + if (typeof constTypes == "string")constTypes=[constTypes]; + return this.elements.findIndex(e => e.isOneOf(constTypes),this); +} + +// find a given constituent type (or one of the constituent) in the list of elements +Phrase.prototype.getConst = function(constTypes){ + const idx=this.getIndex(constTypes); + if (idx < 0) return undefined; + return this.elements[idx] +} + +//////////// information propagation + +// find the gender and number of NP elements of this Phrase +// set masculine if at least one NP is masculine +// set plural if one is plural or more than one combined with and +Phrase.prototype.findGenderNumber = function(andCombination){ + let g="f"; + let n="s"; + let nb=0; + for (let i = 0; i < this.elements.length; i++) { + const e=this.elements[i]; + if (e.isOneOf(["NP","N"])){ + nb+=1 + if (e.getProp("g")=="m")g="m"; + if (e.getProp("n")=="p")n="p" + } + } + if (nb==0) g="m"; + else if (nb>1 && n=="s" && andCombination)n="p"; + return {"g":g,"n":n} +} + +////////////// Phrase structure modification + +// Phrase structure modification but that must be called in the context of the parentConst +// because the pronoun depends on the role of the NP in the sentence +// and its position can also change relatively to the verb +Phrase.prototype.pronominalize = function(){ + if (this.isA("NP")){ + const npParent=this.parentConst + let proS,idxV=-1; + if (npParent!==null){ + const myself=this; + const idxNP=npParent.elements.findIndex(e => e==myself,this); + if (this==npParent.agreesWith){// is subject + proS=this.isFr()?"je":"I"; + } else if (npParent.isA("PP")){ // is indirect complement + proS=this.isFr()?"je":"I"; + } else { + proS=this.isFr()?"le":"me"; // is direct complement; + idxV=npParent.getIndex("V"); + } + const pro=Pro(proS); + pro.agreesWith=this.agreesWith; + pro.prop=this.prop; + if (this==npParent.agreesWith){ + npParent.agreesWith=pro + } + if (this.isFr() && proS=="le" && + // in French a pronominalized NP as direct object is moved before the verb + idxV>=0 && npParent.elements[idxV].getProp("t")!="ip"){ // (except at imperative tense) + npParent.elements.splice(idxNP,1); // remove NP + npParent.elements[idxV].prop["cod"]=this; + npParent.elements.splice(idxV,0,pro);// insert pronoun before the V + } else { + npParent.elements.splice(idxNP,1,pro);// insert pronoun where the NP was + } + pro.parentConst=npParent; + } else {// special case without parentConst so we leave the NP and change its elements + var pro=Pro(this.isFr()?"je":"I"); + prop.prop=this.prop; + pro.agreesWith=this.agreesWith; + this.elements=[pro]; + } + } else { + this.warning(".pro() should be applied only to an NP") + } +} + +// modify the sentence structure to create a passive sentence +Phrase.prototype.passivate = function(){ + let subject,vp,newSubject; + const nominative=this.isFr()?"je":"I"; + const accusative=this.isFr()?"moi":"me"; + // find the subject at the start of this.elements + if (this.isA("VP")){ + subject=null; + vp=this; + } else { + vp=this.getConst("VP"); + if (vp !== undefined){ + if (this.elements.length>0 && this.elements[0].isOneOf(["N","NP","Pro"])){ + subject=this.elements.shift(); + if (subject.isA("Pro")){ + if (subject.lemma==nominative)subject.setLemma(accusative); + else if (subject.lemma==accusative)subject.setLemma(nominative); + } + } else { + subject=null; + n=vp.getProp("n"); // useful for French imperative + } + } else { + return this.warning("Phrase.passivate: no VP found.") + } + } + // remove object (first NP or Pro within VP) from elements + if (vp !== undefined) { + let objIdx=vp.getIndex(["NP","Pro"]); + if (objIdx>=0){ + var obj=vp.elements.splice(objIdx,1)[0]; // splice returns [obj] + if (obj.isA("Pro")){ + if (objIdx==0){// a French pronoun inserted by .pro() + obj.setLemma(nominative); // make the new subject nominative + objIdx=vp.getIndex("V")+1 // ensure that the new object will appear after the verb + } else + if (obj.lemma==accusative)obj.setLemma(nominative); + } + // swap subject and obj + newSubject=obj; + this.elements.unshift(newSubject); // add object that will become the subject + newSubject.parentConst=this; // adjust parentConst + this.agreesWith=newSubject; + if (subject!=null){ // insert subject where the object was + vp.elements.splice(objIdx,0,PP(P(this.isFr()?"par":"by"),subject)); + subject.parentConst=vp; // adjust parentConst + } + } else if (subject !=null){ // no object, but with a subject that we keep as is + newSubject=subject; + if (subject.isA("Pro")){ + // the original subject at nominative will be reinserted below!!! + subject.setLemma(nominative); + } else { + //create a dummy subject with a "il" unless it is at the imperative tense + if (vp.getProp("t")!=="ip"){ + subject=Pro(nominative).g(this.isFr()?"m":"n").n("s").pe(3); + } + } + this.elements.unshift(subject); + this.agreesWith=subject; + } + if (this.isFr()){ + // do this only for French because in English this is done by processTyp_en + // change verbe into an "être" auxiliary and make it agree with the newSubject + const verbeIdx=vp.getIndex("V") + const verbe=vp.elements.splice(verbeIdx,1)[0]; + const aux=V("être").t(verbe.getProp("t")); + aux.parentConst=vp; + aux.prop=verbe.prop; + aux.agreesWith=newSubject; + const pp = V(verbe.lemma).t("pp"); + pp.agreesWith=newSubject; + pp.parentConst=vp; + vp.elements.splice(verbeIdx,0,aux,pp); + } + } else { + this.warning("passivate: without VP"); + } +} + +// generic phrase structure modification for a VP, called in the .typ({...}) for .prog, .mod, .neg +// also deals with coordinated verbs +Phrase.prototype.processVP = function(types,key,action){ + const v=this.getFromPath(["CP","VP"]); + if (v!==undefined){// possibly a coordination of verbs + this.getConst("CP").elements.forEach(function(e){ + if (e.isA("VP")){ e.processVP(types,key,action) } + }); + return; + } + const val=types[key]; + if (val !== undefined && val !== false){ + let vp; + if (this.isA("VP")){vp=this} + else { + const idxVP=this.getIndex(["VP"]); + if (idxVP >=0 ) {vp=this.elements[idxVP]} + else { + this.warning('.typ("'+key+":"+val+'") without VP'); + return; + } + } + const idxV=vp.getIndex("V"); + if(idxV!==undefined){ + const v=vp.elements[idxV]; + action(vp,idxV,v,val); + } + } +} + +Phrase.prototype.processTyp_fr = function(types){ + // process types in a particular order + this.processVP(types,"prog",function(vp,idxV,v){ + vp.elements.splice(idxV+1,0,Q("en train de"),V(v.lemma).t("b")); + v.setLemma("être"); + }); + this.processVP(types,"mod",function(vp,idxV,v,mod){ + var vUnit=v.lemma; + for (key in rules.verb_option.modalityVerb){ + if (key.startsWith(mod)){ + v.setLemma(rules.verb_option.modalityVerb[key]); + break; + } + } + vp.elements.splice(idxV+1,0,V(vUnit).t("b")); + }); + this.processVP(types,"neg",function(vp,idxV,v,neg){ + if (neg === true)neg="pas"; + v.prop["neg"]=neg; // HACK: to be used when conjugating at the realization time + // insert "ne" before the verb or before a possible pronoun preceding the verb + if (idxV>0 && vp.elements[idxV-1].isA("Pro")){ + vp.elements.splice(idxV-1,0,Adv("ne")); + } else { + vp.elements.splice(idxV,0,Adv("ne")); + } + }) +} + +// negation of modal auxiliaries +const negMod={"can":"cannot","may":"may not","shall":"shall not","will":"will not","must":"must not", + "could":"could not","might":"might not","should":"should not","would":"would not"} + +Phrase.prototype.processTyp_en = function(types){ + // replace current verb with the list new words + // TODO: take into account the fact that there might be already a verb with modals... + let vp; + if (this.isA("VP")){vp=this} + else { + const idxVP=this.getIndex(["VP"]); + if (idxVP !==undefined) {vp=this.elements[idxVP]} + else { + this.warning('.typ("'+key+'") without VP'); + return; + } + } + const idxV=vp.getIndex("V"); + if(idxV!==undefined){ + let v = vp.elements[idxV]; + const pe = this.getProp("pe"); + const g=this.getProp("g"); + const n = this.getProp("n"); + let t = vp.getProp("t"); + const neg = types["neg"]===true; + // English conjugation + // it implements the "affix hopping" rules given in + // N. Chomsky, "Syntactic Structures", 2nd ed. Mouton de Gruyter, 2002, p 38 - 48 + let auxils=[]; // list of Aux followed by V + let affixes=[]; + let isFuture=false; + if (t=="f"){ + isFuture=true; + t="p"; // the auxiliary will be generated here so remove it from the V + } + const prog = types["prog"]!==undefined && types["prog"]!==false; + const perf =types["perf"]!==undefined && types["perf"]!==false; + const pas =types["pas"]!==undefined && types["pas"]!==false; + const interro = types["int"]; + const modality=types["mod"]; + const compound = rules.compound; + if (modality !== undefined && modality !== false){ + auxils.push(compound[modality].aux); + affixes.push("b"); + } else if (isFuture){ + // caution: future in English is done with the modal will, so another modal cannot be used + auxils.push(compound.future.aux); + affixes.push("b"); + } + if (perf || prog || pas){ + if (perf){ + auxils.push(compound.perfect.aux); + affixes.push(compound.perfect.participle); + } + if (prog) { + auxils.push(compound.continuous.aux); + affixes.push(compound.continuous.participle) + } + if (pas) { + auxils.push(compound.passive.aux); + affixes.push(compound.passive.participle) + } + } else if (interro !==undefined && interro !== false && + auxils.length==0 && v.lemma!="be" && v.lemma!="have"){ + // add auxiliary for interrogative if not already there + if (interro!="wos"){ + auxils.push("do"); + affixes.push("b"); + } + } + auxils.push(v.lemma); + // realise the first verb, modal or auxiliary + v=auxils.shift(); + let words=[]; + if (neg) { // negate the first verb + if (v in negMod){ + if (v=="can"){ + words.push(Q("cannot")) + } else { + words.push(V(v).t("b")) + words.push(Adv("not")) + } + } else if (v=="be" || v=="have") { + words.push(V(v).pe(pe).n(n).t(t)); + words.push(Adv("not")); + } else { + words.push(V("do").pe(pe).n(n).t(t)); + words.push(Adv("not")); + if (v != "do") words.push(V(v).t("b")); + } + } else // conjugate the first verb + words.push(V(v).pe(v in negMod?1:pe).n(n).t(t)); + // realise the other parts using the corresponding affixes + while (auxils.length>0) { + v=auxils.shift(); + words.push(V(v).t(affixes.shift())); + } + // HACK: splice the content of the array into vp.elements + words.forEach(function(w){w.parentConst=vp}); + Array.prototype.splice.apply(vp.elements,[idxV,1].concat(words)); + } else { + this.warning("no V found in a VP") + } +} + +Phrase.prototype.getIdxCtx = function(cst1,cst2){ + if (this.isA(cst1)){ + var idx=this.getIndex(cst2) + if (idx!==undefined)return [idx,this.elements]; + } else if (this.isOneOf(["S","SP"])){ + var cst=this.getConst(cst1); + if (cst!==undefined)return cst.getIdxCtx(cst1,cst2); + } + return undefined +} + +Phrase.prototype.moveAuxToFront = function(){ + // in English move the auxiliary to the front + if (this.isEn()){ + if (this.isOneOf(["S","SP"])){ + var idxCtx=this.getIdxCtx("VP","V"); + if (idxCtx!==undefined){ + var aux=idxCtx[1].splice(0,1)[0]; // remove first V + this.elements.splice(0,0,aux); + } + } + } +} + +// modify sentence structure according to the content of the .typ(...) option +Phrase.prototype.typ = function(types){ + const allowedTypes={ + "neg": [false,true], + "pas": [false,true], + "prog":[false,true], + "exc": [false,true], + "perf":[false,true], + "mod": [false,"poss","perm","nece","obli","will"], + "int": [false,"yon","wos","wod","wad","woi","whe","why","whn","how","muc"] + } + if (this.isOneOf(["S","SP","VP"])){ + // validate types and keep only ones that are valid + const entries=Object.entries(types); + for (let i = 0; i < entries.length; i++) { + const key=entries[i][0]; + const val=entries[i][1]; + const allowedVals=allowedTypes[key]; + if (allowedVals===undefined){ + if (!(key=="neg" && typeof val == "string")){ + this.warning(""+key+" is not allowed as key of .typ"); + delete types[key] + } + } + } + if (types["pas"]!==undefined && types["pas"]!== false){ + this.passivate() + } + if (this.isFr()){ + this.processTyp_fr(types) + } else { + this.processTyp_en(types) + } + const int=types["int"]; + if (int !== undefined && int !== false){ + const sentenceTypeInt=rules.sentence_type.int; + const prefix=sentenceTypeInt.prefix; + switch (int) { + case "yon": case "whe": case "why": case "whn": case "how": case "muc": + this.moveAuxToFront() + break; + // remove a part of the sentence + case "wos":// remove subject (first NP,N, Pro or SP) + if (this.isOneOf(["S","SP"])){ + const subjIdx=this.getIndex(["NP","N","Pro","SP"]); + if (subjIdx!==undefined)this.elements.splice(subjIdx,1) + } + break; + case "wod": case "wad": // remove direct object (first NP,N,Pro or SP in the first VP) + if (this.isOneOf(["S","SP"])){ + this.moveAuxToFront(); + const objIdxCtx=this.getIdxCtx("VP",["NP","N","Pro","SP"]); + if (objIdxCtx!==undefined){ + objIdxCtx[1].splice(objIdxCtx[0],1); + } + } + break; + case "woi": // remove direct object (first PP in the first VP) + if (this.isOneOf(["S","SP"])){ + this.moveAuxToFront(); + const objIdxCtx=this.getIdxCtx("VP","PP"); + if (objIdxCtx!==undefined){ + objIdxCtx[1].splice(objIdxCtx[0],1); + } + } + break; + default: + this.warning(int+" interrogative type not yet implemented") + } + if(this.isFr() || int !="yon") // add the interrogative prefix + this.elements.splice(0,0,Q(prefix[int])); + this.elements[this.elements.length-1].a(sentenceTypeInt.punctuation); + } + const exc=types["exc"]; + if (exc !== undefined && exc === true){ + this.elements[this.elements.length-1].a(rules.sentence_type.exc.punctuation); + } + } else { + this.warning(".typ("+JSON.stringify(types)+") applied to a "+this.constType+ " should be S, SP or VP"); + } + return this; +} + +////////////////// Realization + +// special case of realisation of a cp for which the gender and number must be computed +// at realization time... + +Phrase.prototype.cpReal = function(res){ + // realize coordinated Phrase by adding ',' between elements except the last + const idxC=this.getIndex("C"); + // take a copy of all elements except the coordonate + const elems=this.elements.filter(function(x,i){return i!=idxC}) + var last=elems.length-1; + // compute the combined gender and number of the coordination + if(idxC >= 0 ){ + // var c=this.elements.splice(idxC,1)[0] + var c=this.elements[idxC] + var and=this.isFr()?"et":"and"; + var gn=this.findGenderNumber(c.lemma==and) + this.prop["g"]=gn.g; + this.prop["n"]=gn.n; + } + if (last==0){// coordination with only one element, ignore coordinate + Array.prototype.push.apply(res,elems[0].real()); + } else { + for (let j = 0; j < last; j++) { //insert comma after each element + const ej=elems[j]; + if (j=0) + Array.prototype.push.apply(res,this.elements[idxC].real()); + Array.prototype.push.apply(res,elems[last].real()); + } +} + +// creates a list of Terminal each with its "realization" field now set +Phrase.prototype.real = function() { + let res=[]; + if (this.isA("CP")){ + this.cpReal(res) + } else { + const es=this.elements; + for (let i = 0; i < es.length; i++) { + const e = es[i]; + if (e.isA("CP")){ + e.cpReal(res); + } else { + // we must flatten the lists + Array.prototype.push.apply(res,e.real()) + } + } + } + return this.doFormat(res); +}; + +// recreate a jsRealB expression +Phrase.prototype.toSource = function(){ + // create source of children + let res=this.constType+"("+this.elements.map(e => e.toSource()).join()+")"; + // add the options by calling "super".toSource() + res+=Constituent.prototype.toSource.call(this); + return res; +} + +/////////////// Constructors for the user + +// functions for creating Phrases +function S (_){ return new Phrase(Array.from(arguments),"S"); }; +function NP (_){ return new Phrase(Array.from(arguments),"NP"); } +function AP (_){ return new Phrase(Array.from(arguments),"AP"); } +function VP (_){ return new Phrase(Array.from(arguments),"VP"); } +function AdvP(_){ return new Phrase(Array.from(arguments),"AdvP"); } +function PP (_){ return new Phrase(Array.from(arguments),"PP"); } +function CP (_){ return new Phrase(Array.from(arguments),"CP"); } +function SP (_){ return new Phrase(Array.from(arguments),"SP"); } +/** + jsRealB 2.0 + Guy Lapalme, lapalme@iro.umontreal.ca, nov 2019 + */ + +////// Creates a Terminal (subclass of Constituent) + +// Terminal +function Terminal(terminalType,lemma){ + Constituent.call(this,terminalType); + this.setLemma(lemma,terminalType); +} +extend(Constituent,Terminal) + +Terminal.prototype.me = function(){ + return this.constType+"("+quote(this.lemma)+")"; +} + +Terminal.prototype.morphoError = function (lemma,type,fn,vals){ + this.warning("morphology error:"+fn+"("+vals+")"); + return "[["+lemma+"]]" +} + +// Phrase structure modifications (should not be called on Terminal)==> warning +Terminal.prototype.typ = function(types){ + this.warning(".typ("+JSON.stringify(types)+") applied to a "+this.constType+ " should be S, SP or VP") + return this; +} +Terminal.prototype.pro = function(args){ + this.warning(".typ("+JSON.stringify(args)+") applied to a "+this.constType+ " should be a NP"); + return this; +} + +Terminal.prototype.add = function(){ + this.warning(".add should be applied to Phrase, not a "+this.constType); + return this; +} + +// set lemma, precompute stem and store conjugation/declension table number +Terminal.prototype.setLemma = function(lemma,terminalType){ + if (terminalType==undefined) // when it is not called from a Constructor, keep the current terminalType + terminalType=this.constType; + this.lemma=lemma; + switch (terminalType) { + case "DT": + this.date = lemma==undefined?new Date():new Date(lemma); + this.dateOpts={year:true,month:true,date:true,day:true,hour:true,minute:true,second:true, + nat:true,det:true,rtime:false} + break; + case "NO": + this.value=+lemma; // this parses the number if it is a string + this.nbDecimals=nbDecimal(lemma); + this.noOptions={mprecision:2, raw:false, nat:false, ord:false}; + break; + case "Q": + break; + case "N": case "A": case "Pro": case "D": case "V": case "Adv": case "C": case "P": + let lexInfo=lexicon[lemma]; + if (lexInfo==undefined){ + this.tab=null + } else { + lexInfo=lexInfo[terminalType]; + if (lexInfo===undefined){ + this.tab=null + } else { + const keys=Object.keys(lexInfo); + for (let i = 0; i < keys.length; i++) { + const key=keys[i]; + if (key=="tab"){ // save table number and compute stem + var ending; + this.tab=lexInfo["tab"] + if (typeof this.tab == "object") {// looking for a declension + this.tab=this.tab[0]; + const declension=rules.declension[this.tab]; // occurs for C, Adv and P + if (declension !== undefined)ending = declension.ending; + } else { + ending = rules.conjugation[this.tab].ending; + } + if (lemma.endsWith(ending)){ + this.stem=lemma.substring(0,lemma.length-ending.length); + } else { + this.tab=null + } + } else { // copy other key as property + let info=lexInfo[key] + if (typeof info === "object" && info.length==1)info=info[0] + this.prop[key]=info + } + } + } + } + break; + default: + this.warning("setLemma: unknown terminal type:"+terminalType) + } +} + +Terminal.prototype.grammaticalNumber = function(){ + if (!this.isA("NO")){ + return this.warning("grammaticalNumber must be called on a NO, not a "+this.constType); + } + + if (this.noOptions.ord==true)return "s"; // ordinal number are always singular + + const number=this.value; + if (this.isFr()){ + // according to http://bdl.oqlf.gouv.qc.ca/bdl/gabarit_bdl.asp?id=1582 + return (-2 < number && number < 2) ? "s" : "p"; + } else { + // according to https://www.chicagomanualofstyle.org/book/ed17/part2/ch09/psec019.html + // any number other than 1 is plural... + // even 1.0 but this case is not handled here because nbDecimal(1.0)=>0 + return (Math.abs(number)==1 && this.nbDecimals==0)?"s":"p"; + } +}; + +Terminal.prototype.getIndex = function(constTypes){ + return ((typeof constTypes == "string")?this.isA:this.isOneOf)(constTypes)?0:-1; +} + +Terminal.prototype.getConst = function(constTypes){ + return this.getIndex(constTypes)==0?this:undefined; +} + +// try to find the best declension match +// value equal = 2 +// equal with x = 1 +// no match = 0 +// but if the person does not match set score to 0 +Terminal.prototype.bestMatch = function(declension,fields){ + let matches=[]; + for (var i = 0; i < declension.length; i++) { + const d=declension[i]; + let nbMatches=0; + for (let j = 0; j < fields.length; j++) { + const f=fields[j]; + if (d[f]!==undefined){ + const fVal=this.getProp(f) + if (f == "pe" && d[f]!=fVal){ + nbMatches=0; + break; + } + if (d[f]==fVal)nbMatches+=2; + else if (d[f]=="x") nbMatches+=1; + } + } + matches.push([nbMatches,d["val"]]); + } + matches.sort((a,b)=>b[0]-a[0]) + const best=matches[0]; + return (best[0]==0)?null:best[1]; +} + +// constant fields +const gn=["g","n"]; +const gnpe=gn.concat(["pe"]) +const gnpeown=gnpe.concat(["own"]) +const fields={"fr":{"N":gn, "D":gnpe, "Pro":gnpe}, + "en":{"N":["n"],"D":gnpeown,"Pro":gnpeown}}; + + +/// French and English declension +Terminal.prototype.decline = function(setPerson){ + const g=this.getProp("g"); + const n=this.getProp("n"); + const pe=setPerson?this.getProp("pe"):3; + if (this.tab==null){ + if (this.isA("Adv")) // this happens for some adverbs in French with table in rules.regular... + return this.lemma; + return this.morphoError(this.lemma,this.constType,"decline:tab",[g,n,pe]); + } + const declension=rules.declension[this.tab].declension; + let res=null; + if (this.isOneOf(["A","Adv"])){ // special case of adjectives or adv + if (this.isFr()){ + const ending=this.bestMatch(declension,gn); + if (ending==null){ + return this.morphoError(this.lemma,this.constType,"decline",[g,n]); + } + res = this.stem+ending; + const f = this.getProp("f");// comparatif d'adjectif + if (f !== undefined && f !== false){ + if (this.isFr()){ + const specialFRcomp={"bon":"meilleur","mauvais":"pire"}; + if (f == "co"){ + const comp = specialFRcomp[this.lemma]; + return (comp !== undefined)?A(comp).g(g).n(n).toString():"plus "+res; + } + if (f == "su"){ + const comp = specialFRcomp[this.lemma]; + const art = D("le").g(g).n(n)+" "; + return art+(comp !== undefined?A(comp).g(g).n(n):"plus "+res); + } + } + } + } else { + // English adjective/adverbs are invariable but they can have comparative + res = this.lemma; + const f = this.getProp("f");// usual comparative/superlative + if (f !== undefined && f !== false){ + if (this.tab=="a1"){ + res = (f=="co"?"more ":"the most ") + res; + } else { // look in the adjective declension table + const ending=this.bestMatch(declension,["f"]) + if (ending==null){ + return this.morphoError(this.lemma,this.constType,"decline:adjective",[f]); + } + res = this.stem + ending; + } + } + } + } else if (declension.length==1){ + res=this.stem+declension[0]["val"] + } else { // for N, D, Pro + const ending=this.bestMatch(declension,fields[this.lang][this.constType]); + if (ending==null){ + return this.morphoError(this.lemma,this.constType,"decline",[g,n,pe]); + } + res = this.stem+ending; + } + return res; +} + +// French conjugation +Terminal.prototype.conjugate_fr = function(){ + let pe = this.getProp("pe"); + let g = this.getProp("g"); + let n = this.getProp("n"); + const t = this.getProp("t"); + let neg; + if (this.tab==null) return this.morphoError(this.lemma,this.constType,"conjugate_fr:tab",[pe,n,t]); + switch (t) { + case "pc":case "pq":case "cp": case "fa": case "spa": case "spq":// temps composés + const tempsAux={"pc":"p","pq":"i","cp":"c","fa":"f","spa":"s","spq":"si"}[t]; + const aux=this.prop["aux"]; + const v=V("avoir").pe(pe).n(n).t(tempsAux); + neg=this.prop["neg"]; + if (neg!==undefined){ // apply negation to the auxiliary and remove it from the verb... + v.prop["neg"]=neg; + delete this.prop["neg"] + } + if (aux=="êt"){ + v.setLemma("être"); + return VP(v,V(this.lemma).t("pp").g(g).n(n))+""; + } else { + // check the gender and number of a cod appearing before the verb to do proper agreement + // of its part participle + g="m" + n="s"; + var cod = this.prop["cod"]; + if (cod !== undefined){ + g=cod.getProp("g"); + n=cod.getProp("n"); + } + } + return VP(v,V(this.lemma).t("pp").g(g).n(n))+""; + default:// simple tense + var conjugation=rules.conjugation[this.tab].t[t]; + if (conjugation!==undefined){ + let res; + switch (t) { + case "p": case "i": case "f": case "ps": case "c": case "s": case "si": case "ip": + if (t=="ip"){ // French imperative does not exist at all persons and numbers + if ((n=="s" && pe!=2)||(n=="p" && pe==3)){ + return this.morphoError(this.lemma,this.constType,"conjugate_fr",[pe,n,t]); + } + } + if (n=="p"){pe+=3}; + const term=conjugation[pe-1]; + if (term==null){ + return this.morphoError(this.lemma,this.constType,"conjugate_fr",[pe,n,t]); + } else { + res=this.stem+term; + } + neg=this.prop["neg"]; + if (neg !== undefined){ + res+=" "+neg; + } + return res; + case "b": case "pr": case "pp": + res=this.stem+conjugation; + neg=this.prop["neg"]; + if (neg !== undefined){ + if (t=="b")res = neg+" "+res; + else res +=" "+neg; + } + if (t=="pp"){ + res+={"ms":"","mp":"s","fs":"e","fp":"es"}[this.getProp("g")+this.getProp("n")] + } + return res; + default: + return this.morphoError(this.lemma,this.constType,"conjugate_fr",[pe,n,t]); + } + } + return this.morphoError(this.lemma,this.constType,"conjugate_fr:t",[pe,n,t]); + } +} + +Terminal.prototype.conjugate_en = function(){ + let pe = this.getProp("pe"); + const g=this.getProp("g"); + const n = this.getProp("n"); + const t = this.getProp("t"); + if (this.tab==null) return this.morphoError(this.lemma,this.constType,"conjugate_en:tab",[pe,n,t]); + const conjugation=rules.conjugation[this.tab].t[t]; + switch (t) { + case "p": case "ps": + if (typeof conjugation == "string"){ + return this.stem+conjugation; + } + if (n=="p"){pe+=3}; + const term=conjugation[pe-1]; + if (term==null){ + return this.morphoError(this.lemma,this.consType,"conjugate_en:pe",[pe,n,t]) + } else { + return this.stem+term; + } + case "f": + return "will "+this.lemma; + case "ip": + return this.lemma; + case "b": case "pp": case "pr": + return this.stem+conjugation; + default: + return this.morphoError(this.lemma,"V","conjugate_en: unrecognized tense",[pe,n,t]); + } + +} + +Terminal.prototype.conjugate = function(){ + if (this.isFr())return this.conjugate_fr(); + else return this.conjugate_en(); +} + +// For numbers + +Terminal.prototype.numberFormatter = function (rawNumber, maxPrecision) { + let precision = (maxPrecision === undefined) ? 2 : maxPrecision; + const numberTable = rules.number; + precision = nbDecimal(rawNumber) > precision ? precision : nbDecimal(rawNumber); + return formatNumber(rawNumber, precision, numberTable.symbol.decimal, numberTable.symbol.group); +}; + +Terminal.prototype.numberToWord = function(number, lang, gender) { + if (parseInt(number) !== number){ + console.log("cannot show a decimal number in words"); + return number+""; + } + if (lang=="fr" && gender=="f"){ + if (number==1)return "une"; + if (number==-1) return "moins une"; + } + return enToutesLettres(number,lang); +}; + +Terminal.prototype.numberToOrdinal = function(number,lang,gender){ + if (parseInt(number) !== number){ + console.log("cannot show a decimal number as ordinal"); + return number+""; + } else if (number<=0){ + console.log("cannot show 0 or a negative number as an ordinal") + } + return ordinal(number,lang, gender); +}; + + +////// Date + +Terminal.prototype.dateFormat = function(dateObj,dOpts){ + // useful abbreviations for date format access + const dateRule = rules.date + const naturalDate = dateRule.format.natural + const nonNaturalDate =dateRule.format.non_natural + const relativeDate = dateRule.format.relative_time + + // name of fields to be used in date formats + const dateFields = ["year","month","date","day"] + const timeFields = ["hour","minute","second"] + let res; + if (dOpts["rtime"]==true){ + // find the number of days of difference between today and the current date + const today=new Date() + const diffDays=Math.ceil((dateObj.getTime()-today.getTime())/(24*60*60*1000)); + today.setDate(today+diffDays); + const res=relativeDate[""+diffDays]; + if (res!==undefined) return this.interpretDateFmt(dateObj,relativeDate,""+diffDays,false); + const sign=diffDays<0?"-":"+"; + return relativeDate[sign].replace("[x]",Math.abs(diffDays)) + } + dfs = dateFields.filter(function(field){return dOpts[field]==true}).join("-"); + tfs = timeFields.filter(function(field){return dOpts[field]==true}).join(":"); + if (dOpts["nat"]==true){ + res=this.interpretDateFmt(dateObj,naturalDate,dfs,dOpts["det"]==false); + const hms=this.interpretDateFmt(dateObj,naturalDate,tfs); + if (res=="")return hms; + if (hms != "")return res+" "+hms; + return res; + } + if (dOpts["nat"]==false){ + res=this.interpretDateFmt(dateObj,nonNaturalDate,dfs,dOpts["det"]==false); + const hms=this.interpretDateFmt(dateObj,nonNaturalDate,tfs); + if (res=="")return hms; + if (hms != "")return res+" "+hms; + return res; + } + this.warning("not yet implemented:"+JSON.stringify(dOpts)) + return "[["+dateObj+"]]" +} + +Terminal.prototype.interpretDateFmt = function(dateObj,table,spec,removeDet){ + // fields: 1 what is before [..] 2: its content, 3=content if no [..] found + const dateRE = /(.*?)\[([^\]]+)\]|(.*)/y; + if (spec=="") return ""; + let res=""; + let fmt=table[spec]; + if (fmt!==undefined){ + if (removeDet){ // remove determinant at the start of the string + var idx=fmt.indexOf("[") + if (idx>=0)fmt=fmt.substring(idx); + } + dateRE.lastIndex=0; + let match=dateRE.exec(fmt); + while (match[0].length>0){ // loop over all fields + if (match[1]!==undefined){ + res+=match[1]; + const pf=dateFormats[match[2]]; + if (pf!==undefined){ + const val=pf.param.call(dateObj); // call function to get the value + res+=pf.func(val) // format the value as a string + } + } else if (match[3]!==undefined){ + res+=match[3] // copy the string + } else { + return this.warning("bad match: should never happen:"+fmt); + } + match=dateRE.exec(fmt); + } + return res; + } else { + this.warning("unimplemented format specification:"+spec); + return "[["+dateObj+"]]" + } +} + +// Realize (i.e. set the "realization" field) for this Terminal +Terminal.prototype.real = function(){ + switch (this.constType) { + case "N": case "A": case "D": case "Adv": + this.realization=this.decline(false); + break; + case "C": case "P": case "Q": + this.realization=this.lemma; + break; + case "Pro": + this.realization=this.decline(true); + break; + case "V": + this.realization=this.conjugate(); + break; + case "DT": + this.realization=this.dateFormat(this.date,this.dateOpts); + break; + case "NO": + const opts=this.noOptions; + if (opts.nat==true){ + this.realization=this.numberToWord(this.value,this.lang,this.getProp("g")); + } else if (opts.ord==true){ + this.realization=this.numberToOrdinal(this.value,this.lang,this.getProp("g")); + } else if (opts.raw==false){ + this.realization=this.numberFormatter(this.value,opts.mprecision); + } else { //opts.raw==true + this.realization=this.value+""; + } + break; + default: + this.warning("Terminal.real:"+this.constType+": not implemented"); + } + return this.doFormat([this]) +} + + +// produce the string form of a Terminal +Terminal.prototype.toSource = function(){ + // create the source of the Terminal + let res=this.constType+"("+quote(this.lemma)+")"; + // add the options by calling "super".toSource() + res+=Constituent.prototype.toSource.call(this); + return res; +} + +// functions for creating terminals +function N (lemma){ return new Terminal("N",lemma) } +function A (lemma){ return new Terminal("A",lemma) } +function Pro(lemma){ return new Terminal("Pro",lemma) } +function D (lemma){ return new Terminal("D",lemma) } +function V (lemma){ return new Terminal("V",lemma) } +function Adv(lemma){ return new Terminal("Adv",lemma) } +function C (lemma){ return new Terminal("C",lemma) } +function P (lemma){ return new Terminal("P",lemma) } +function DT (lemma){ return new Terminal("DT",lemma) } +function NO (lemma){ return new Terminal("NO",lemma) } +function Q (lemma){ return new Terminal("Q",lemma) } + +/** + jsRealB 2.0 + Guy Lapalme, lapalme@iro.umontreal.ca, nov 2019 + */ + +///////// date formatting +// mainly rule based (should language independent) + +function numberWithoutLeadingZero(n){return ""+n} +function numberWithLeadingZero(n){return (n<10?"0":"")+n} +function numberToMonth(n){return rules.date.text.month[""+n]} +function numberToDay(n){return rules.date.text.weekday[n]} +function numberToMeridiem(n){return rules.date.text.meridiem[n<12?0:1]} +function numberTo12hour(n){return n%12} +// HACK: add to the standard Date prototype +Date.prototype.getRealMonth=function (){return this.getMonth()+1} + +//// Based on format of strftime [linux] +var dateFormats = { + Y: { param: Date.prototype.getFullYear, func: numberWithoutLeadingZero }, + F: { param: Date.prototype.getRealMonth,func: numberToMonth }, + M0: { param: Date.prototype.getRealMonth,func: numberWithLeadingZero }, + M: { param: Date.prototype.getRealMonth,func: numberWithoutLeadingZero }, + d0: { param: Date.prototype.getDate, func: numberWithLeadingZero }, + d: { param: Date.prototype.getDate, func: numberWithoutLeadingZero }, + l: { param: Date.prototype.getDay, func: numberToDay }, + A: { param: Date.prototype.getHours, func: numberToMeridiem }, + h: { param: Date.prototype.getHours, func: numberTo12hour }, + H0: { param: Date.prototype.getHours, func: numberWithLeadingZero }, + H: { param: Date.prototype.getHours, func: numberWithoutLeadingZero }, + m0: { param: Date.prototype.getMinutes, func: numberWithLeadingZero }, + m: { param: Date.prototype.getMinutes, func: numberWithoutLeadingZero }, + s0: { param: Date.prototype.getSeconds, func: numberWithLeadingZero }, + s: { param: Date.prototype.getSeconds, func: numberWithoutLeadingZero }, + x: { param: function(x){return x}, func: function(n){return ""+n} } +}; +/** + jsRealB 2.0 + Guy Lapalme, lapalme@iro.umontreal.ca, nov 2019 + */ + +// https://stackoverflow.com/questions/10454518/javascript-how-to-retrieve-the-number-of-decimals-of-a-string-number +// but this does not always work because ''+1.0 => "1" so nbDecimal(1.0)=>0 +function nbDecimal(n) { + var match = (''+n).match(/(?:\.(\d+))?(?:[eE]([+-]?\d+))?$/); + if (!match) { return 0; } + return Math.max( + 0, + // Number of digits right of decimal point. + (match[1] ? match[1].length : 0) + // Adjust for scientific notation. + - (match[2] ? +match[2] : 0)); +}; + +function formatNumber(number, decimals, dec_point, thousands_sep) { + // discuss at: http://phpjs.org/functions/number_format/ + // original by: Jonas Raoni Soares Silva (http://www.jsfromhell.com) + number = (number + '') + .replace(/[^0-9+\-Ee.]/g, ''); + var n = !isFinite(+number) ? 0 : +number, + prec = !isFinite(+decimals) ? 0 : Math.abs(decimals), + sep = (typeof thousands_sep === 'undefined') ? '' : thousands_sep, + dec = (typeof dec_point === 'undefined') ? '.' : dec_point, + s = '', + toFixedFix = function (n, prec) { + var k = Math.pow(10, prec); + return '' + (Math.round(n * k) / k) + .toFixed(prec); + }; + // Fix for IE parseFloat(0.55).toFixed(0) = 0; + s = (prec ? toFixedFix(n, prec) : '' + Math.round(n)) + .split('.'); + if (s[0].length > 3) { + s[0] = s[0].replace(/\B(?=(?:\d{3})+(?!\d))/g, sep); + } + if ((s[1] || '') + .length < prec) { + s[1] = s[1] || ''; + s[1] += new Array(prec - s[1].length + 1) + .join('0'); + } + return s.join(dec); +}; + + + +//Fonctions pour la sortie en lettres: +//Fonction EnToutesLettres par Guy Lapalme , légèrement modifiée par Francis pour accomoder le genre + +function enToutesLettres(s,lang){ + const en=lang=="en" + const trace=false; // utile pour la mise au point + + // expressions des unités pour les "grands" nombres >1000 + // expressions donnent les formes [{singulier, pluriel}...] + // noms de unités selon l'échelle courte présentée dans le Guide Antidote + // elle diffère de celle présentée dans http://villemin.gerard.free.fr/TABLES/NbLettre.htm + const unitesM=[ {sing:"mille" ,plur:"mille"} // 10^3 + ,{sing:"un million" ,plur:"millions"} // 10^6 + ,{sing:"un milliard" ,plur:"milliards"} // 10^9 + ,{sing:"un trillion" ,plur:"trillions"} // 10^12 + ,{sing:"un quatrillion",plur:"quatrillions"} // 10^15 + ,{sing:"un quintillion",plur:"quintillions"} // 10^18 + ]; + const unitsM =[ {sing:"one thousand" ,plur:"thousand"} // 10^3 + ,{sing:"one million" ,plur:"million"} // 10^6 + ,{sing:"one billion" ,plur:"billion"} // 10^9 + ,{sing:"one trillion" ,plur:"trillion"} // 10^12 + ,{sing:"one quatrillion" ,plur:"quatrillion"} // 10^15 + ,{sing:"one quintillion" ,plur:"quintillion"} // 10^18 + ]; + + const maxLong=21; // longueur d'une chaîne de chiffres traitable (fixé par la liste unitesM) + + // séparer une chaine en groupes de trois et complétant le premier groupe avec des 0 au début + function splitS(s){ + if(s.length>3) + return splitS(s.slice(0,s.length-3)).concat([s.slice(s.length-3)]); + else if (s.length==1)s="00"+s; + else if (s.length==2)s="0"+s + return [s]; + } + // est-ce que tous les triplets d'une liste correspondent à 0 ? + function tousZero(ns){ + if(ns.length==0)return true; + return (ns[0]=="000")&&tousZero(ns.slice(1)); + } + + // création d'une liste de triplets de chiffres + function grouper(ns){ // ns est une liste de chaines de 3 chiffres + const l=ns.length; + if(trace)console.log("grouper:"+l+":"+ns); + const head=ns[0]; + if(l==1)return centaines(head); + const tail=ns.slice(1); + if(head=="000")return grouper(tail); + const uM=en?unitsM:unitesM; + return (head=="001"?uM[l-2].sing:(grouper([head])+" "+uM[l-2].plur))+" " + +(tousZero(tail)?"":grouper(tail)); + } + + // traiter un nombre entre 0 et 999 + function centaines(ns){ // ns est une chaine d'au plus trois chiffres + if(trace)console.log("centaines:"+ns); + if(ns.length==1)return unites(ns); + if(ns.length==2)return dizaines(ns); + const c=ns[0]; // centaines + const du=ns.slice(1); // dizaines+unités + if(c=="0") return dizaines(du); + const cent=en?"hundred":"cent" + if(du=="00"){ + if(c=="1") return (en?"one ":"")+cent; + return unites(c)+" "+cent+(en?"":"s"); + } + if(c=="1") return (en?"one ":"")+cent+" "+dizaines(du); + return unites(c)+" "+cent+(en?" and ":" ")+dizaines(du); + } + + // traiter un nombre entre 10 et 99 + function dizaines(ns){// ns est une chaine de deux chiffres + if(trace)console.log("dizaines:",ns); + const d=ns[0]; // dizaines + const u=ns[1]; // unités + switch (d){ + case "0": return unites(u); + case "1": + return (en?["ten","eleven","twelve","thirteen","fourteen","fifteen","sixteen","seventeen","eighteen","nineteen"] + :["dix","onze","douze","treize","quatorze","quinze","seize","dix-sept","dix-huit","dix-neuf"])[+u]; + case "2": case "3": case "4": case "5": case "6": + var tens = (en?["twenty","thirty","forty","fifty","sixty"] + :["vingt","trente","quarante","cinquante","soixante"])[d-2]; + if (u==0) return tens; + return tens + (u=="1" ? (en?"-one":" et un"): ("-"+unites(u))); + case "7": + if(u==0) return en?"seventy":"soixante-dix" + return en?("seventy-"+unites(u)):("soixante-"+dizaines("1"+u)); + case "8": + if(u==0) return en?"eighty":"quatre-vingts"; + return (en?"eighty-":"quatre-vingt-")+unites(u); + case "9": + if(u==0) return en?"ninety":"quatre-vingt-dix"; + return en?("ninety-"+unites(u)):("quatre-vingt-"+dizaines("1"+u)); + } + } + + // traiter un chiffre entre 0 et 10 + function unites(u){ // u est une chaine d'un chiffre + return (en?["zero","one","two","three","four","five","six","seven","eight","nine"] + :["zéro","un","deux","trois","quatre","cinq","six","sept","huit","neuf"])[+u];// conversion + } + +/// début de l'exécution de la fonction + if(typeof s=="number")s=""+s; // convertir un nombre en chaîne + if(!/^-?\d+$/.test(s)) + throw "nombreChaineEnLettres ne traite que des chiffres:"+s; + let neg=false; + if(s[0]=="-"){ + neg=true; + s=s.slice(1); + } + if(s.length>maxLong) + throw "nombreChaineEnLettres ne traite que les nombres d'au plus "+maxLong+" chiffres:"+s; + return (neg?(en?"minus ":"moins "):"")+grouper(splitS(s)).trim(); +} + +// si l'orthographe française rectifiée est demandée, appliquer cette fonction à la sortie +// de enToutesLettres() pour mettre des tirets à la place des espaces partout dans le nombre... +function rectifiee(s){ + return s.replace(/ /g,"-"); +} + +// écriture des nombres ordinaux //GL + +// rules taken from https://www.ego4u.com/en/cram-up/vocabulary/numbers/ordinal +ordEnExceptions={"one":"first","two":"second","three":"third","five":"fifth", + "eight":"eighth","nine":"ninth","twelve":"twelfth"} +// règles tirées de https://francais.lingolia.com/fr/vocabulaire/nombres-date-et-heure/les-nombres-ordinaux +ordFrExceptions={"un":"premier","une":"première","cinq":"cinquième","neuf":"neuvième"} +var ordinal = function(s,lang,gender){ + const en = lang=="en"; + s=enToutesLettres(s,lang); + if (s=="zéro" || s=="zero") return s; + const m=/(.*?)(\w+)$/.exec(s) + const lastWord=m[2] + if (en) { + if (lastWord in ordEnExceptions)return m[1]+ordEnExceptions[lastWord] + if (s.charAt(s.length-1)=="y") return s.substring(0,s.length-1)+"ieth"; // added from the reference + return s+"th" + } else { + if (s == "un")return gender=="f"?"première":"premier"; + if (s.endsWith("et un")) return s+"ième"; + if (lastWord in ordFrExceptions) return m[1]+ordFrExceptions[lastWord]; + if (s.charAt(s.length-1)=="e" || s.endsWith("quatre-vingts")) return s.substring(0,s.length-1)+"ième"; + return s+"ième" + } +} + +/** + jsRealB 2.0 + Guy Lapalme, lapalme@iro.umontreal.ca, nov 2019 + */ + +// https://stackoverflow.com/questions/4152931/javascript-inheritance-call-super-constructor-or-use-prototype-chain +function extend(base, sub) { + // Avoid instantiating the base class just to setup inheritance + // See https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/create + // for a polyfill + // Also, do a recursive merge of two prototypes, so we don't overwrite + // the existing prototype, but still maintain the inheritance chain + const origProto = sub.prototype; + sub.prototype = Object.create(base.prototype); + for (let key in origProto) { + sub.prototype[key] = origProto[key]; + } + // Remember the constructor property was set wrong, let's fix it + sub.prototype.constructor = sub; + // In ECMAScript5+ (all modern browsers), you can make the constructor property + // non-enumerable if you define it like this instead + Object.defineProperty(sub.prototype, 'constructor', { + enumerable: false, + value: sub + }); +} + +// create a quoted string taking account possible escaping +function quote(s){ + if (typeof s != "string")return s; + if (s.indexOf("'")<0)return "'"+s+"'"; // try with single quotes + if (s.indexOf('"')<0)return '"'+s+'"'; // try with double quotes + return '"'+s.replace('"','\\"')+'"'; // double quotes escaping double quotes +} + +function contains(arr,elem){ + return arr.indexOf(elem)>=0; +} + +function loadEn(trace,lenient){ + currentLanguage="en"; + lexicon=lexiconEn; + rules=ruleEn; + defaultProps={g:"n",n:"s",pe:3,t:"p"}; // language dependent default properties + if (trace===true)console.log("English lexicon and rules loaded"); + if (lenient==true)console.log("Lenient mode not implement"); +} + +function loadFr(trace,lenient){ + currentLanguage="fr"; + lexicon=lexiconFr; + rules=ruleFr; + defaultProps={g:"m",n:"s",pe:3,t:"p",aux:"av"}; // language dependent default properties + if (trace===true)console.log("French lexicon and rules loaded"); + if (lenient==true)console.log("Lenient mode not implement"); +} + +//// add to lexicon and return the updated object +/// to remove from lexicon (pass undefined as newInfos) +var addToLexicon = function(lemma,newInfos){ + if (newInfos==undefined){// convenient when called with a single JSON object as shown in the IDE + newInfos=Object.values(lemma)[0]; + lemma=Object.keys(lemma)[0]; + } + const infos=lexicon[lemma] + if (infos!==undefined && newInfos!==undefined){ // update with newInfos + for (ni in newInfos) { + infos[ni]=newInfos[ni] + } + lexicon[lemma]=infos + return infos + } else { + lexicon[lemma]=newInfos + return newInfos + } +} + +/// update current lexicon by "merging" the new lexicon with the current one +// i.e. adding new key-value pairs and replacing existing key-value pairs with the new one +// newLexicon is a single object with the "correct" structure +var updateLexicon = function(newLexicon){ + Object.assign(lexicon,newLexicon) +} + +//// get lemma from lexicon (useful for debugging ) +var getLemma = function(lemma){ + return lexicon[lemma]; +} + +// return the current realization language +var getLanguage = function(){ + return currentLanguage; +} + +//// select a random element in a list useful to have some variety in the generated text +// if the first argument is a list, selection is done within the list +// otherwise the selection is among the arguements +// (if the selected element is a function, evaluate it with no parameter) +var oneOf = function(elems){ + if (!Array.isArray(elems)) + elems=Array.from(arguments); + e=elems[Math.floor(Math.random()*elems.length)]; + return typeof e=='function'?e():e; +} + +// set the flag so that a warning generates an exception +function setExceptionOnWarning(val){ + exceptionOnWarning=val; +} + +var jsRealB_version="3.0"; +var jsRealB_dateCreated=new Date(); // might be changed in the makefile +jsRealB_dateCreated="2019-12-02 21:49" +var lexiconEn = //========== lexicon-en.js +{" ":{"Pc":{"tab":["pc1"]}}, + "!":{"Pc":{"tab":["pc4"]}}, + "\"":{"Pc":{"compl":"\"", + "tab":["pc5","pc6"]}}, + "'":{"Pc":{"compl":"'", + "tab":["pc5","pc6"]}}, + "(":{"Pc":{"compl":")", + "tab":["pc5"]}}, + ")":{"Pc":{"compl":"(", + "tab":["pc6"]}}, + "*":{"Pc":{"compl":"*", + "tab":["pc5","pc6"]}}, + ",":{"Pc":{"tab":["pc4"]}}, + "-":{"Pc":{"tab":["pc1"]}}, + ".":{"Pc":{"tab":["pc4"]}}, + "...":{"Pc":{"tab":["pc4"]}}, + ":":{"Pc":{"tab":["pc4"]}}, + ";":{"Pc":{"tab":["pc4"]}}, + "?":{"Pc":{"tab":["pc4"]}}, + "I":{"Pro":{"tab":["pn1"]}}, + "[":{"Pc":{"compl":"]", + "tab":["pc5"]}}, + "]":{"Pc":{"compl":"[", + "tab":["pc6"]}}, + "a":{"D":{"tab":["d1"]}}, + "abandon":{"V":{"tab":"v1"}}, + "abbey":{"N":{"tab":["n1"]}}, + "ability":{"N":{"tab":["n3"]}}, + "able":{"A":{"tab":["a2"]}}, + "abnormal":{"A":{"tab":["a1"]}}, + "abolish":{"V":{"tab":"v2"}}, + "abolition":{"N":{"tab":["n5"]}}, + "abortion":{"N":{"tab":["n1"]}}, + "about":{"Adv":{"tab":["b1"]}, + "P":{"tab":["pp"]}}, + "above":{"Adv":{"tab":["b1"]}, + "P":{"tab":["pp"]}}, + "abroad":{"Adv":{"tab":["b1"]}}, + "abruptly":{"Adv":{"tab":["b1"]}}, + "absence":{"N":{"tab":["n1"]}}, + "absent":{"A":{"tab":["a1"]}}, + "absolute":{"A":{"tab":["a1"]}}, + "absolutely":{"Adv":{"tab":["b1"]}}, + "absorb":{"V":{"tab":"v1"}}, + "absorption":{"N":{"tab":["n5"]}}, + "abstract":{"A":{"tab":["a1"]}}, + "absurd":{"A":{"tab":["a1"]}}, + "abuse":{"N":{"tab":["n1"]}, + "V":{"tab":"v3"}}, + "academic":{"A":{"tab":["a1"]}, + "N":{"tab":["n1"]}}, + "academy":{"N":{"tab":["n3"]}}, + "accelerate":{"V":{"tab":"v3"}}, + "accent":{"N":{"tab":["n1"]}}, + "accept":{"V":{"tab":"v1"}}, + "acceptable":{"A":{"tab":["a1"]}}, + "acceptance":{"N":{"tab":["n5"]}}, + "access":{"N":{"tab":["n5"]}, + "V":{"tab":"v2"}}, + "accessible":{"A":{"tab":["a1"]}}, + "accident":{"N":{"tab":["n1"]}}, + "accommodate":{"V":{"tab":"v3"}}, + "accommodation":{"N":{"tab":["n1"]}}, + "accompany":{"V":{"tab":"v4"}}, + "accomplish":{"V":{"tab":"v2"}}, + "accord":{"N":{"tab":["n1"]}, + "V":{"tab":"v1"}}, + "accordance":{"N":{"tab":["n1"]}}, + "accordingly":{"Adv":{"tab":["b1"]}}, + "account":{"N":{"tab":["n1"]}, + "V":{"tab":"v1"}}, + "accountant":{"N":{"tab":["n1"]}}, + "accumulate":{"V":{"tab":"v3"}}, + "accumulation":{"N":{"tab":["n1"]}}, + "accuracy":{"N":{"tab":["n3"]}}, + "accurate":{"A":{"tab":["a1"]}}, + "accurately":{"Adv":{"tab":["b1"]}}, + "accusation":{"N":{"tab":["n1"]}}, + "accuse":{"V":{"tab":"v3"}}, + "achieve":{"V":{"tab":"v3"}}, + "achievement":{"N":{"tab":["n1"]}}, + "acid":{"N":{"tab":["n1"]}}, + "acknowledge":{"V":{"tab":"v3"}}, + "acquaintance":{"N":{"tab":["n1"]}}, + "acquire":{"V":{"tab":"v3"}}, + "acquisition":{"N":{"tab":["n1"]}}, + "acre":{"N":{"tab":["n1"]}}, + "across":{"Adv":{"tab":["b1"]}, + "P":{"tab":["pp"]}}, + "act":{"N":{"tab":["n1"]}, + "V":{"tab":"v1"}}, + "action":{"N":{"tab":["n1"]}}, + "activate":{"V":{"tab":"v3"}}, + "active":{"A":{"tab":["a1"]}}, + "actively":{"Adv":{"tab":["b1"]}}, + "activist":{"N":{"tab":["n1"]}}, + "activity":{"N":{"tab":["n3"]}}, + "actor":{"N":{"g":"m", + "tab":["n85"]}}, + "actress":{"N":{"g":"f", + "tab":["n88"]}}, + "actual":{"A":{"tab":["a1"]}}, + "actually":{"Adv":{"tab":["b1"]}}, + "acute":{"A":{"tab":["a1"]}}, + "adapt":{"V":{"tab":"v1"}}, + "adaptation":{"N":{"tab":["n1"]}}, + "add":{"V":{"tab":"v1"}}, + "addition":{"N":{"tab":["n1"]}}, + "additional":{"A":{"tab":["a1"]}}, + "address":{"N":{"tab":["n2"]}, + "V":{"tab":"v2"}}, + "adequate":{"A":{"tab":["a1"]}}, + "adequately":{"Adv":{"tab":["b1"]}}, + "adjacent":{"A":{"tab":["a1"]}}, + "adjective":{"N":{"tab":["n1"]}}, + "adjust":{"V":{"tab":"v1"}}, + "adjustment":{"N":{"tab":["n1"]}}, + "administer":{"V":{"tab":"v1"}}, + "administration":{"N":{"tab":["n1"]}}, + "administrative":{"A":{"tab":["a1"]}}, + "administrator":{"N":{"tab":["n1"]}}, + "admiration":{"N":{"tab":["n5"]}}, + "admire":{"V":{"tab":"v3"}}, + "admission":{"N":{"tab":["n1"]}}, + "admit":{"V":{"tab":"v14"}}, + "adopt":{"V":{"tab":"v1"}}, + "adoption":{"N":{"tab":["n1"]}}, + "adult":{"A":{"tab":["a1"]}, + "N":{"tab":["n1"]}}, + "advance":{"N":{"tab":["n1"]}, + "V":{"tab":"v3"}}, + "advanced":{"A":{"tab":["a1"]}}, + "advantage":{"N":{"tab":["n1"]}}, + "adventure":{"N":{"tab":["n1"]}}, + "adverse":{"A":{"tab":["a1"]}}, + "advertise":{"V":{"tab":"v3"}}, + "advertisement":{"N":{"tab":["n1"]}}, + "advice":{"N":{"tab":["n1"]}}, + "advise":{"V":{"tab":"v3"}}, + "adviser":{"N":{"tab":["n1"]}}, + "advisory":{"A":{"tab":["a1"]}}, + "advocate":{"N":{"tab":["n1"]}, + "V":{"tab":"v3"}}, + "aesthetic":{"A":{"tab":["a1"]}}, + "affair":{"N":{"tab":["n1"]}}, + "affect":{"V":{"tab":"v1"}}, + "affection":{"N":{"tab":["n1"]}}, + "affinity":{"N":{"tab":["n3"]}}, + "afford":{"V":{"tab":"v1"}}, + "afraid":{"A":{"tab":["a1"]}}, + "after":{"P":{"tab":["pp"]}}, + "afternoon":{"N":{"tab":["n1"]}}, + "afterwards":{"Adv":{"tab":["b1"]}}, + "again":{"Adv":{"tab":["b1"]}}, + "against":{"P":{"tab":["pp"]}}, + "age":{"N":{"tab":["n1"]}, + "V":{"tab":"v72"}}, + "agency":{"N":{"tab":["n3"]}}, + "agenda":{"N":{"tab":["n1"]}}, + "agent":{"N":{"tab":["n1"]}}, + "aggression":{"N":{"tab":["n1"]}}, + "aggressive":{"A":{"tab":["a1"]}}, + "ago":{"Adv":{"tab":["b1"]}}, + "agony":{"N":{"tab":["n3"]}}, + "agree":{"V":{"tab":"v16"}}, + "agreement":{"N":{"tab":["n1"]}}, + "agricultural":{"A":{"tab":["a1"]}}, + "agriculture":{"N":{"tab":["n5"]}}, + "ahead":{"Adv":{"tab":["b1"]}}, + "aid":{"N":{"tab":["n1"]}, + "V":{"tab":"v1"}}, + "aim":{"N":{"tab":["n1"]}, + "V":{"tab":"v1"}}, + "air":{"N":{"tab":["n1"]}}, + "aircraft":{"N":{"tab":["n4"]}}, + "airline":{"N":{"tab":["n1"]}}, + "airport":{"N":{"tab":["n1"]}}, + "alarm":{"N":{"tab":["n1"]}, + "V":{"tab":"v1"}}, + "album":{"N":{"tab":["n1"]}}, + "alcohol":{"N":{"tab":["n1"]}}, + "alert":{"A":{"tab":["a1"]}, + "V":{"tab":"v1"}}, + "alien":{"A":{"tab":["a1"]}}, + "alike":{"Adv":{"tab":["b1"]}}, + "alive":{"A":{"tab":["a1"]}}, + "all":{"Adv":{"tab":["b1"]}, + "Pro":{"tab":["b1"]}}, + "allegation":{"N":{"tab":["n1"]}}, + "allege":{"V":{"tab":"v3"}}, + "allegedly":{"Adv":{"tab":["b1"]}}, + "alliance":{"N":{"tab":["n1"]}}, + "allocate":{"V":{"tab":"v3"}}, + "allocation":{"N":{"tab":["n1"]}}, + "allow":{"V":{"tab":"v1"}}, + "allowance":{"N":{"tab":["n1"]}}, + "allowed":{"A":{"tab":["a1"]}}, + "ally":{"N":{"tab":["n3"]}}, + "almost":{"Adv":{"tab":["b1"]}}, + "alone":{"A":{"tab":["a1"]}, + "Adv":{"tab":["b1"]}}, + "along":{"Adv":{"tab":["b1"]}, + "P":{"tab":["pp"]}}, + "alongside":{"P":{"tab":["pp"]}}, + "aloud":{"Adv":{"tab":["b1"]}}, + "already":{"Adv":{"tab":["b1"]}}, + "alright":{"A":{"tab":["a1"]}, + "Adv":{"tab":["b1"]}}, + "also":{"Adv":{"tab":["b1"]}}, + "altar":{"N":{"tab":["n1"]}}, + "alter":{"V":{"tab":"v1"}}, + "alteration":{"N":{"tab":["n1"]}}, + "alternative":{"A":{"tab":["a1"]}, + "N":{"tab":["n1"]}}, + "alternatively":{"Adv":{"tab":["b1"]}}, + "altogether":{"Adv":{"tab":["b1"]}}, + "aluminium":{"N":{"tab":["n5"]}}, + "always":{"Adv":{"tab":["b1"]}}, + "amateur":{"N":{"tab":["n1"]}}, + "amazing":{"A":{"tab":["a1"]}}, + "ambassador":{"N":{"tab":["n1"]}}, + "ambiguity":{"N":{"tab":["n3"]}}, + "ambiguous":{"A":{"tab":["a1"]}}, + "ambition":{"N":{"tab":["n1"]}}, + "ambitious":{"A":{"tab":["a1"]}}, + "ambulance":{"N":{"tab":["n1"]}}, + "amend":{"V":{"tab":"v1"}}, + "amendment":{"N":{"tab":["n1"]}}, + "amid":{"P":{"tab":["pp"]}}, + "among":{"P":{"tab":["pp"]}}, + "amongst":{"P":{"tab":["pp"]}}, + "amount":{"N":{"tab":["n1"]}, + "V":{"tab":"v1"}}, + "amp":{"N":{"tab":["n1"]}}, + "ample":{"A":{"tab":["a2"]}}, + "amuse":{"V":{"tab":"v3"}}, + "amusement":{"N":{"tab":["n1"]}}, + "analogy":{"N":{"tab":["n3"]}}, + "analyse":{"V":{"tab":"v3"}}, + "analysis":{"N":{"tab":["n8"]}}, + "analyst":{"N":{"tab":["n1"]}}, + "ancestor":{"N":{"tab":["n1"]}}, + "ancient":{"A":{"tab":["a1"]}}, + "angel":{"N":{"tab":["n1"]}}, + "anger":{"N":{"tab":["n5"]}, + "V":{"tab":"v1"}}, + "angle":{"N":{"tab":["n1"]}}, + "angrily":{"Adv":{"tab":["b1"]}}, + "angry":{"A":{"tab":["a4"]}}, + "animal":{"N":{"tab":["n1"]}}, + "ankle":{"N":{"tab":["n1"]}}, + "anniversary":{"N":{"tab":["n3"]}}, + "announce":{"V":{"tab":"v3"}}, + "announcement":{"N":{"tab":["n1"]}}, + "annoy":{"V":{"tab":"v1"}}, + "annual":{"A":{"tab":["a1"]}}, + "annually":{"Adv":{"tab":["b1"]}}, + "anonymous":{"A":{"tab":["a1"]}}, + "answer":{"N":{"tab":["n1"]}, + "V":{"tab":"v1"}}, + "ant":{"N":{"tab":["n1"]}}, + "antibody":{"N":{"tab":["n3"]}}, + "anticipate":{"V":{"tab":"v3"}}, + "anticipation":{"N":{"tab":["n1"]}}, + "anxiety":{"N":{"tab":["n3"]}}, + "anxious":{"A":{"tab":["a1"]}}, + "anybody":{"Pro":{"tab":["pn5"]}}, + "anyone":{"Pro":{"tab":["pn5"]}}, + "anything":{"Pro":{"tab":["pn5"]}}, + "anyway":{"Adv":{"tab":["b1"]}}, + "anywhere":{"Adv":{"tab":["b1"]}}, + "apart":{"Adv":{"tab":["b1"]}}, + "apartment":{"N":{"tab":["n1"]}}, + "apology":{"N":{"tab":["n3"]}}, + "appalling":{"A":{"tab":["a1"]}}, + "apparatus":{"N":{"tab":["n2"]}}, + "apparent":{"A":{"tab":["a1"]}}, + "apparently":{"Adv":{"tab":["b1"]}}, + "appeal":{"N":{"tab":["n1"]}, + "V":{"tab":"v1"}}, + "appear":{"V":{"tab":"v1"}}, + "appearance":{"N":{"tab":["n1"]}}, + "appendix":{"N":{"tab":["n2"]}}, + "appetite":{"N":{"tab":["n1"]}}, + "apple":{"N":{"tab":["n1"]}}, + "applicable":{"A":{"tab":["a1"]}}, + "applicant":{"N":{"tab":["n1"]}}, + "application":{"N":{"tab":["n1"]}}, + "applied":{"A":{"tab":["a1"]}}, + "apply":{"V":{"tab":"v4"}}, + "appoint":{"V":{"tab":"v1"}}, + "appointment":{"N":{"tab":["n1"]}}, + "appraisal":{"N":{"tab":["n1"]}}, + "appreciate":{"V":{"tab":"v3"}}, + "appreciation":{"N":{"tab":["n1"]}}, + "approach":{"N":{"tab":["n2"]}, + "V":{"tab":"v2"}}, + "appropriate":{"A":{"tab":["a1"]}}, + "appropriately":{"Adv":{"tab":["b1"]}}, + "approval":{"N":{"tab":["n5"]}}, + "approve":{"V":{"tab":"v3"}}, + "approximately":{"Adv":{"tab":["b1"]}}, + "aquarium":{"N":{"tab":["n1"]}}, + "arbitrary":{"A":{"tab":["a1"]}}, + "arc":{"N":{"tab":["n1"]}}, + "arch":{"N":{"tab":["n2"]}}, + "archaeological":{"A":{"tab":["a1"]}}, + "archbishop":{"N":{"tab":["n1"]}}, + "architect":{"N":{"tab":["n1"]}}, + "architectural":{"A":{"tab":["a1"]}}, + "architecture":{"N":{"tab":["n5"]}}, + "archive":{"N":{"tab":["n1"]}}, + "area":{"N":{"tab":["n1"]}}, + "arena":{"N":{"tab":["n1"]}}, + "argue":{"V":{"tab":"v3"}}, + "argument":{"N":{"tab":["n1"]}}, + "arise":{"V":{"tab":"v63"}}, + "arm":{"N":{"tab":["n1"]}, + "V":{"tab":"v1"}}, + "armchair":{"N":{"tab":["n1"]}}, + "army":{"N":{"tab":["n3"]}}, + "around":{"Adv":{"tab":["b1"]}, + "P":{"tab":["pp"]}}, + "arouse":{"V":{"tab":"v3"}}, + "arrange":{"V":{"tab":"v3"}}, + "arrangement":{"N":{"tab":["n1"]}}, + "array":{"N":{"tab":["n1"]}}, + "arrest":{"N":{"tab":["n1"]}, + "V":{"tab":"v1"}}, + "arrival":{"N":{"tab":["n1"]}}, + "arrive":{"V":{"tab":"v3"}}, + "arrow":{"N":{"tab":["n1"]}}, + "art":{"N":{"tab":["n1"]}}, + "article":{"N":{"tab":["n1"]}}, + "articulate":{"V":{"tab":"v3"}}, + "artificial":{"A":{"tab":["a1"]}}, + "artist":{"N":{"tab":["n1"]}}, + "artistic":{"A":{"tab":["a1"]}}, + "as":{"Adv":{"tab":["b1"]}, + "P":{"tab":["pp"]}}, + "ascertain":{"V":{"tab":"v1"}}, + "ash":{"N":{"tab":["n2"]}}, + "ashamed":{"A":{"tab":["a1"]}}, + "aside":{"Adv":{"tab":["b1"]}}, + "ask":{"V":{"tab":"v1"}}, + "asleep":{"A":{"tab":["a1"]}}, + "aspect":{"N":{"tab":["n1"]}}, + "aspiration":{"N":{"tab":["n1"]}}, + "assault":{"N":{"tab":["n1"]}, + "V":{"tab":"v1"}}, + "assemble":{"V":{"tab":"v3"}}, + "assembly":{"N":{"tab":["n3"]}}, + "assert":{"V":{"tab":"v1"}}, + "assertion":{"N":{"tab":["n1"]}}, + "assess":{"V":{"tab":"v2"}}, + "assessment":{"N":{"tab":["n1"]}}, + "asset":{"N":{"tab":["n1"]}}, + "assign":{"V":{"tab":"v1"}}, + "assignment":{"N":{"tab":["n1"]}}, + "assist":{"V":{"tab":"v1"}}, + "assistance":{"N":{"tab":["n5"]}}, + "assistant":{"N":{"tab":["n1"]}}, + "associate":{"N":{"tab":["n1"]}, + "V":{"tab":"v3"}}, + "association":{"N":{"tab":["n1"]}}, + "assume":{"V":{"tab":"v3"}}, + "assumption":{"N":{"tab":["n1"]}}, + "assurance":{"N":{"tab":["n1"]}}, + "assure":{"V":{"tab":"v3"}}, + "astonishing":{"A":{"tab":["a1"]}}, + "asylum":{"N":{"tab":["n1"]}}, + "at":{"P":{"tab":["pp"]}}, + "athlete":{"N":{"tab":["n1"]}}, + "atmosphere":{"N":{"tab":["n1"]}}, + "atom":{"N":{"tab":["n1"]}}, + "atomic":{"A":{"tab":["a1"]}}, + "attach":{"V":{"tab":"v2"}}, + "attachment":{"N":{"tab":["n1"]}}, + "attack":{"N":{"tab":["n1"]}, + "V":{"tab":"v1"}}, + "attacker":{"N":{"tab":["n1"]}}, + "attain":{"V":{"tab":"v1"}}, + "attainment":{"N":{"tab":["n1"]}}, + "attempt":{"N":{"tab":["n1"]}, + "V":{"tab":"v1"}}, + "attend":{"V":{"tab":"v1"}}, + "attendance":{"N":{"tab":["n1"]}}, + "attention":{"N":{"tab":["n1"]}}, + "attitude":{"N":{"tab":["n1"]}}, + "attract":{"V":{"tab":"v1"}}, + "attraction":{"N":{"tab":["n1"]}}, + "attractive":{"A":{"tab":["a1"]}}, + "attribute":{"N":{"tab":["n1"]}, + "V":{"tab":"v3"}}, + "auction":{"N":{"tab":["n1"]}}, + "audience":{"N":{"tab":["n1"]}}, + "audit":{"N":{"tab":["n1"]}}, + "auditor":{"N":{"tab":["n1"]}}, + "aunt":{"N":{"g":"f", + "tab":["n87"]}}, + "author":{"N":{"g":"m", + "tab":["n85"]}}, + "authority":{"N":{"tab":["n3"]}}, + "automatic":{"A":{"tab":["a1"]}}, + "automatically":{"Adv":{"tab":["b1"]}}, + "autonomous":{"A":{"tab":["a1"]}}, + "autonomy":{"N":{"tab":["n3"]}}, + "autumn":{"N":{"tab":["n1"]}}, + "availability":{"N":{"tab":["n5"]}}, + "available":{"A":{"tab":["a1"]}}, + "avenue":{"N":{"tab":["n1"]}}, + "average":{"A":{"tab":["a1"]}, + "N":{"tab":["n1"]}}, + "aviation":{"N":{"tab":["n5"]}}, + "avocado":{"N":{"tab":["n1"]}}, + "avoid":{"V":{"tab":"v1"}}, + "await":{"V":{"tab":"v1"}}, + "awake":{"A":{"tab":["a1"]}, + "V":{"tab":"v163"}}, + "award":{"N":{"tab":["n1"]}, + "V":{"tab":"v1"}}, + "aware":{"A":{"tab":["a1"]}}, + "awareness":{"N":{"tab":["n5"]}}, + "away":{"Adv":{"tab":["b1"]}}, + "awful":{"A":{"tab":["a1"]}}, + "awkward":{"A":{"tab":["a1"]}}, + "axis":{"N":{"tab":["n8"]}}, + "aye":{"N":{"tab":["n1"]}}, + "baby":{"N":{"tab":["n3"]}}, + "back":{"Adv":{"tab":["b1"]}, + "N":{"tab":["n1"]}, + "V":{"tab":"v1"}}, + "background":{"N":{"tab":["n1"]}}, + "backing":{"N":{"tab":["n1"]}}, + "backwards":{"Adv":{"tab":["b1"]}}, + "bacon":{"N":{"tab":["n5"]}}, + "bad":{"A":{"tab":["a14"]}}, + "badly":{"Adv":{"tab":["b2"]}}, + "bag":{"N":{"tab":["n1"]}}, + "bail":{"N":{"tab":["n1"]}}, + "bake":{"V":{"tab":"v3"}}, + "balance":{"N":{"tab":["n1"]}, + "V":{"tab":"v3"}}, + "balcony":{"N":{"tab":["n3"]}}, + "ball":{"N":{"tab":["n1"]}}, + "ballet":{"N":{"tab":["n1"]}}, + "balloon":{"N":{"tab":["n1"]}}, + "ballot":{"N":{"tab":["n1"]}}, + "ban":{"N":{"tab":["n1"]}, + "V":{"tab":"v11"}}, + "banana":{"N":{"tab":["n1"]}}, + "band":{"N":{"tab":["n1"]}}, + "bang":{"N":{"tab":["n1"]}, + "V":{"tab":"v1"}}, + "bank":{"N":{"tab":["n1"]}}, + "banker":{"N":{"tab":["n1"]}}, + "banking":{"N":{"tab":["n5"]}}, + "bankruptcy":{"N":{"tab":["n3"]}}, + "banner":{"N":{"tab":["n1"]}}, + "bar":{"N":{"tab":["n1"]}, + "V":{"tab":"v13"}}, + "bare":{"A":{"tab":["a2"]}}, + "barely":{"Adv":{"tab":["b1"]}}, + "bargain":{"N":{"tab":["n1"]}, + "V":{"tab":"v1"}}, + "barn":{"N":{"tab":["n1"]}}, + "barrel":{"N":{"tab":["n1"]}}, + "barrier":{"N":{"tab":["n1"]}}, + "base":{"N":{"tab":["n1"]}, + "V":{"tab":"v3"}}, + "basement":{"N":{"tab":["n1"]}}, + "basic":{"A":{"tab":["a1"]}}, + "basically":{"Adv":{"tab":["b1"]}}, + "basin":{"N":{"tab":["n1"]}}, + "basis":{"N":{"tab":["n8"]}}, + "basket":{"N":{"tab":["n1"]}}, + "bass":{"N":{"tab":["n4"]}}, + "bastard":{"N":{"tab":["n1"]}}, + "bat":{"N":{"tab":["n1"]}}, + "batch":{"N":{"tab":["n2"]}}, + "bath":{"N":{"tab":["n1"]}}, + "bathroom":{"N":{"tab":["n1"]}}, + "battery":{"N":{"tab":["n3"]}}, + "battle":{"N":{"tab":["n1"]}, + "V":{"tab":"v3"}}, + "bay":{"N":{"tab":["n1"]}}, + "be":{"V":{"tab":"v151"}}, + "beach":{"N":{"tab":["n2"]}}, + "beam":{"N":{"tab":["n1"]}}, + "bean":{"N":{"tab":["n1"]}}, + "bear":{"N":{"tab":["n1"]}, + "V":{"tab":"v51"}}, + "beard":{"N":{"tab":["n1"]}}, + "bearing":{"N":{"tab":["n1"]}}, + "beast":{"N":{"tab":["n1"]}}, + "beat":{"N":{"tab":["n1"]}, + "V":{"tab":"v78"}}, + "beautiful":{"A":{"tab":["a1"]}}, + "beautifully":{"Adv":{"tab":["b1"]}}, + "beauty":{"N":{"tab":["n3"]}}, + "become":{"V":{"tab":"v41"}}, + "bed":{"N":{"tab":["n1"]}}, + "bedroom":{"N":{"tab":["n1"]}}, + "bee":{"N":{"tab":["n1"]}}, + "beef":{"N":{"tab":["n9"]}}, + "beer":{"N":{"tab":["n1"]}}, + "before":{"Adv":{"tab":["b1"]}, + "P":{"tab":["pp"]}}, + "beg":{"V":{"tab":"v7"}}, + "begin":{"V":{"tab":"v106"}}, + "beginning":{"N":{"tab":["n1"]}}, + "behalf":{"N":{"tab":["n9"]}}, + "behave":{"V":{"tab":"v3"}}, + "behaviour":{"N":{"tab":["n5"]}}, + "behind":{"Adv":{"tab":["b1"]}, + "P":{"tab":["pp"]}}, + "being":{"N":{"tab":["n1"]}}, + "belief":{"N":{"tab":["n1"]}}, + "believe":{"V":{"tab":"v3"}}, + "bell":{"N":{"tab":["n1"]}}, + "belly":{"N":{"tab":["n3"]}}, + "belong":{"V":{"tab":"v1"}}, + "below":{"Adv":{"tab":["b1"]}, + "P":{"tab":["pp"]}}, + "belt":{"N":{"tab":["n1"]}}, + "bench":{"N":{"tab":["n2"]}}, + "bend":{"N":{"tab":["n1"]}, + "V":{"tab":"v23"}}, + "beneath":{"P":{"tab":["pp"]}}, + "beneficial":{"A":{"tab":["a1"]}}, + "beneficiary":{"N":{"tab":["n3"]}}, + "benefit":{"N":{"tab":["n1"]}, + "V":{"tab":"v1"}}, + "berry":{"N":{"tab":["n3"]}}, + "beside":{"P":{"tab":["pp"]}}, + "besides":{"Adv":{"tab":["b1"]}, + "P":{"tab":["pp"]}}, + "bet":{"N":{"tab":["n1"]}, + "V":{"tab":"v38"}}, + "betray":{"V":{"tab":"v1"}}, + "between":{"P":{"tab":["pp"]}}, + "beyond":{"Adv":{"tab":["b1"]}, + "P":{"tab":["pp"]}}, + "bias":{"N":{"tab":["n2"]}}, + "bicycle":{"N":{"tab":["n1"]}}, + "bid":{"N":{"tab":["n1"]}, + "V":{"tab":"v117"}}, + "big":{"A":{"tab":["a7"]}}, + "bike":{"N":{"tab":["n1"]}}, + "bile":{"N":{"tab":["n5"]}}, + "bill":{"N":{"tab":["n1"]}}, + "bin":{"N":{"tab":["n1"]}}, + "bind":{"V":{"tab":"v25"}}, + "binding":{"A":{"tab":["a1"]}}, + "biography":{"N":{"tab":["n3"]}}, + "biological":{"A":{"tab":["a1"]}}, + "biology":{"N":{"tab":["n5"]}}, + "bird":{"N":{"tab":["n1"]}}, + "birth":{"N":{"tab":["n1"]}}, + "birthday":{"N":{"tab":["n1"]}}, + "biscuit":{"N":{"tab":["n1"]}}, + "bishop":{"N":{"tab":["n1"]}}, + "bit":{"N":{"tab":["n1"]}}, + "bitch":{"N":{"tab":["n2"]}}, + "bite":{"N":{"tab":["n1"]}, + "V":{"tab":"v74"}}, + "bitter":{"A":{"tab":["a1"]}}, + "bitterly":{"Adv":{"tab":["b1"]}}, + "bizarre":{"A":{"tab":["a1"]}}, + "black":{"A":{"tab":["a3"]}, + "N":{"tab":["n1"]}}, + "blade":{"N":{"tab":["n1"]}}, + "blame":{"N":{"tab":["n5"]}, + "V":{"tab":"v3"}}, + "blank":{"A":{"tab":["a1"]}}, + "blanket":{"N":{"tab":["n1"]}}, + "blast":{"N":{"tab":["n1"]}, + "V":{"tab":"v1"}}, + "bleak":{"A":{"tab":["a3"]}}, + "bleed":{"V":{"tab":"v22"}}, + "bless":{"V":{"tab":"v86"}}, + "blessing":{"N":{"tab":["n1"]}}, + "blind":{"A":{"tab":["a1"]}}, + "blink":{"V":{"tab":"v1"}}, + "block":{"N":{"tab":["n1"]}, + "V":{"tab":"v1"}}, + "bloke":{"N":{"tab":["n1"]}}, + "blonde":{"A":{"tab":["a1"]}}, + "blood":{"N":{"tab":["n1"]}}, + "bloody":{"A":{"tab":["a4"]}, + "Adv":{"tab":["b1"]}}, + "blow":{"N":{"tab":["n1"]}, + "V":{"tab":"v27"}}, + "blue":{"A":{"tab":["a2"]}, + "N":{"tab":["n1"]}}, + "board":{"N":{"tab":["n1"]}, + "V":{"tab":"v1"}}, + "boast":{"V":{"tab":"v1"}}, + "boat":{"N":{"tab":["n1"]}}, + "bodily":{"A":{"tab":["a1"]}}, + "body":{"N":{"tab":["n3"]}}, + "boil":{"V":{"tab":"v1"}}, + "boiler":{"N":{"tab":["n1"]}}, + "bold":{"A":{"tab":["a3"]}}, + "bolt":{"N":{"tab":["n1"]}}, + "bomb":{"N":{"tab":["n1"]}, + "V":{"tab":"v1"}}, + "bomber":{"N":{"tab":["n1"]}}, + "bond":{"N":{"tab":["n1"]}}, + "bone":{"N":{"tab":["n1"]}}, + "bonus":{"N":{"tab":["n2"]}}, + "book":{"N":{"tab":["n1"]}, + "V":{"tab":"v1"}}, + "booklet":{"N":{"tab":["n1"]}}, + "boom":{"N":{"tab":["n1"]}}, + "boost":{"N":{"tab":["n1"]}, + "V":{"tab":"v1"}}, + "boot":{"N":{"tab":["n1"]}}, + "border":{"N":{"tab":["n1"]}}, + "boring":{"A":{"tab":["a1"]}}, + "borough":{"N":{"tab":["n1"]}}, + "borrow":{"V":{"tab":"v1"}}, + "boss":{"N":{"tab":["n2"]}}, + "bother":{"V":{"tab":"v1"}}, + "bottle":{"N":{"tab":["n1"]}}, + "bottom":{"N":{"tab":["n1"]}}, + "bounce":{"V":{"tab":"v3"}}, + "boundary":{"N":{"tab":["n3"]}}, + "bourgeois":{"A":{"tab":["a1"]}}, + "bow":{"N":{"tab":["n1"]}, + "V":{"tab":"v1"}}, + "bowel":{"N":{"tab":["n1"]}}, + "bowl":{"N":{"tab":["n1"]}, + "V":{"tab":"v1"}}, + "bowler":{"N":{"tab":["n1"]}}, + "box":{"N":{"tab":["n2"]}}, + "boxing":{"N":{"tab":["n5"]}}, + "boy":{"N":{"g":"m", + "tab":["n85"]}}, + "boyfriend":{"N":{"tab":["n1"]}}, + "bracket":{"N":{"tab":["n1"]}}, + "brain":{"N":{"tab":["n1"]}}, + "brake":{"N":{"tab":["n1"]}}, + "branch":{"N":{"tab":["n2"]}}, + "brand":{"N":{"tab":["n1"]}}, + "brandy":{"N":{"tab":["n3"]}}, + "brass":{"N":{"tab":["n2"]}}, + "brave":{"A":{"tab":["a2"]}}, + "breach":{"N":{"tab":["n2"]}}, + "bread":{"N":{"tab":["n5"]}}, + "break":{"N":{"tab":["n1"]}, + "V":{"tab":"v138"}}, + "breakdown":{"N":{"tab":["n1"]}}, + "breakfast":{"N":{"tab":["n1"]}}, + "breast":{"N":{"tab":["n1"]}}, + "breath":{"N":{"tab":["n1"]}}, + "breathe":{"V":{"tab":"v3"}}, + "breed":{"N":{"tab":["n1"]}, + "V":{"tab":"v22"}}, + "breeding":{"N":{"tab":["n5"]}}, + "breeze":{"N":{"tab":["n1"]}}, + "brewery":{"N":{"tab":["n3"]}}, + "brick":{"N":{"tab":["n1"]}}, + "bride":{"N":{"g":"f", + "tab":["n87"]}}, + "bridge":{"N":{"tab":["n1"]}}, + "brief":{"A":{"tab":["a3"]}}, + "briefly":{"Adv":{"tab":["b1"]}}, + "brigade":{"N":{"tab":["n1"]}}, + "bright":{"A":{"tab":["a3"]}}, + "brilliant":{"A":{"tab":["a1"]}}, + "bring":{"V":{"tab":"v103"}}, + "broad":{"A":{"tab":["a3"]}}, + "broadcast":{"N":{"tab":["n1"]}, + "V":{"tab":"v58"}}, + "broadly":{"Adv":{"tab":["b1"]}}, + "brochure":{"N":{"tab":["n1"]}}, + "broker":{"N":{"tab":["n1"]}}, + "bronze":{"N":{"tab":["n1"]}}, + "brother":{"N":{"tab":["n85"]}}, + "brow":{"N":{"tab":["n1"]}}, + "brown":{"A":{"tab":["a3"]}}, + "brush":{"N":{"tab":["n2"]}, + "V":{"tab":"v2"}}, + "bubble":{"N":{"tab":["n1"]}}, + "bucket":{"N":{"tab":["n1"]}}, + "budget":{"N":{"tab":["n1"]}}, + "build":{"V":{"tab":"v23"}}, + "builder":{"N":{"tab":["n1"]}}, + "building":{"N":{"tab":["n1"]}}, + "bulb":{"N":{"tab":["n1"]}}, + "bulk":{"N":{"tab":["n5"]}}, + "bull":{"N":{"tab":["n1"]}}, + "bullet":{"N":{"tab":["n1"]}}, + "bulletin":{"N":{"tab":["n1"]}}, + "bump":{"V":{"tab":"v1"}}, + "bunch":{"N":{"tab":["n2"]}}, + "bundle":{"N":{"tab":["n1"]}}, + "burden":{"N":{"tab":["n1"]}}, + "bureau":{"N":{"tab":["n14"]}}, + "bureaucracy":{"N":{"tab":["n3"]}}, + "bureaucratic":{"A":{"tab":["a1"]}}, + "burial":{"N":{"tab":["n1"]}}, + "burn":{"N":{"tab":["n1"]}, + "V":{"tab":"v26"}}, + "burning":{"A":{"tab":["a1"]}}, + "burst":{"N":{"tab":["n1"]}, + "V":{"tab":"v18"}}, + "bury":{"V":{"tab":"v4"}}, + "bus":{"N":{"tab":["n2"]}}, + "bush":{"N":{"tab":["n2"]}}, + "business":{"N":{"tab":["n2"]}}, + "businessman":{"N":{"tab":["n7"]}}, + "busy":{"A":{"tab":["a4"]}}, + "butter":{"N":{"tab":["n5"]}}, + "butterfly":{"N":{"tab":["n3"]}}, + "button":{"N":{"tab":["n1"]}}, + "buy":{"V":{"tab":"v59"}}, + "buyer":{"N":{"tab":["n1"]}}, + "by":{"P":{"tab":["pp"]}}, + "bye":{"N":{"tab":["n1"]}}, + "cab":{"N":{"tab":["n1"]}}, + "cabin":{"N":{"tab":["n1"]}}, + "cabinet":{"N":{"tab":["n1"]}}, + "cable":{"N":{"tab":["n1"]}}, + "cage":{"N":{"tab":["n1"]}}, + "cake":{"N":{"tab":["n1"]}}, + "calcium":{"N":{"tab":["n5"]}}, + "calculate":{"V":{"tab":"v3"}}, + "calculation":{"N":{"tab":["n1"]}}, + "calendar":{"N":{"tab":["n1"]}}, + "calf":{"N":{"tab":["n9"]}}, + "call":{"N":{"tab":["n1"]}, + "V":{"tab":"v1"}}, + "calm":{"A":{"tab":["a3"]}, + "N":{"tab":["n1"]}, + "V":{"tab":"v1"}}, + "calorie":{"N":{"tab":["n1"]}}, + "camera":{"N":{"tab":["n1"]}}, + "camp":{"N":{"tab":["n1"]}}, + "campaign":{"N":{"tab":["n1"]}, + "V":{"tab":"v1"}}, + "can":{"N":{"tab":["n1"]}, + "V":{"tab":"v161"}}, + "canal":{"N":{"tab":["n1"]}}, + "cancel":{"V":{"tab":"v9"}}, + "cancer":{"N":{"tab":["n1"]}}, + "candidate":{"N":{"tab":["n1"]}}, + "candle":{"N":{"tab":["n1"]}}, + "canvas":{"N":{"tab":["n2"]}}, + "cap":{"N":{"tab":["n1"]}}, + "capability":{"N":{"tab":["n3"]}}, + "capable":{"A":{"tab":["a1"]}}, + "capacity":{"N":{"tab":["n3"]}}, + "capital":{"A":{"tab":["a1"]}, + "N":{"tab":["n1"]}}, + "capitalism":{"N":{"tab":["n5"]}}, + "capitalist":{"N":{"tab":["n1"]}}, + "captain":{"N":{"tab":["n1"]}}, + "capture":{"V":{"tab":"v3"}}, + "car":{"N":{"tab":["n1"]}}, + "caravan":{"N":{"tab":["n1"]}}, + "carbon":{"N":{"tab":["n1"]}}, + "card":{"N":{"tab":["n1"]}}, + "care":{"N":{"tab":["n1"]}, + "V":{"tab":"v3"}}, + "career":{"N":{"tab":["n1"]}}, + "careful":{"A":{"tab":["a1"]}}, + "carefully":{"Adv":{"tab":["b1"]}}, + "cargo":{"N":{"tab":["n2"]}}, + "carpet":{"N":{"tab":["n1"]}}, + "carriage":{"N":{"tab":["n1"]}}, + "carrier":{"N":{"tab":["n1"]}}, + "carrot":{"N":{"tab":["n1"]}}, + "carry":{"V":{"tab":"v4"}}, + "cart":{"N":{"tab":["n1"]}}, + "carve":{"V":{"tab":"v3"}}, + "case":{"N":{"tab":["n1"]}}, + "cash":{"N":{"tab":["n5"]}}, + "cassette":{"N":{"tab":["n1"]}}, + "cast":{"N":{"tab":["n1"]}, + "V":{"tab":"v18"}}, + "castle":{"N":{"tab":["n1"]}}, + "casual":{"A":{"tab":["a1"]}}, + "casualty":{"N":{"tab":["n3"]}}, + "cat":{"N":{"tab":["n1"]}}, + "catalogue":{"N":{"tab":["n1"]}}, + "catch":{"N":{"tab":["n2"]}, + "V":{"tab":"v84"}}, + "category":{"N":{"tab":["n3"]}}, + "cater":{"V":{"tab":"v1"}}, + "cathedral":{"N":{"tab":["n1"]}}, + "cattle":{"N":{"tab":["n6"]}}, + "causal":{"A":{"tab":["a1"]}}, + "cause":{"N":{"tab":["n1"]}, + "V":{"tab":"v3"}}, + "caution":{"N":{"tab":["n1"]}}, + "cautious":{"A":{"tab":["a1"]}}, + "cave":{"N":{"tab":["n1"]}}, + "cease":{"V":{"tab":"v3"}}, + "ceiling":{"N":{"tab":["n1"]}}, + "celebrate":{"V":{"tab":"v3"}}, + "celebration":{"N":{"tab":["n1"]}}, + "cell":{"N":{"tab":["n1"]}}, + "cellar":{"N":{"tab":["n1"]}}, + "cemetery":{"N":{"tab":["n3"]}}, + "census":{"N":{"tab":["n2"]}}, + "central":{"A":{"tab":["a1"]}}, + "centre":{"N":{"tab":["n1"]}, + "V":{"tab":"v3"}}, + "century":{"N":{"tab":["n3"]}}, + "cereal":{"N":{"tab":["n1"]}}, + "ceremony":{"N":{"tab":["n3"]}}, + "certain":{"A":{"tab":["a1"]}}, + "certainly":{"Adv":{"tab":["b1"]}}, + "certainty":{"N":{"tab":["n3"]}}, + "certificate":{"N":{"tab":["n1"]}}, + "chain":{"N":{"tab":["n1"]}}, + "chair":{"N":{"tab":["n1"]}, + "V":{"tab":"v1"}}, + "chairman":{"N":{"tab":["n7"]}}, + "chalk":{"N":{"tab":["n1"]}}, + "challenge":{"N":{"tab":["n1"]}, + "V":{"tab":"v3"}}, + "chamber":{"N":{"tab":["n1"]}}, + "champagne":{"N":{"tab":["n1"]}}, + "champion":{"N":{"tab":["n1"]}}, + "championship":{"N":{"tab":["n1"]}}, + "chance":{"N":{"tab":["n1"]}}, + "chancellor":{"N":{"tab":["n1"]}}, + "change":{"N":{"tab":["n1"]}, + "V":{"tab":"v3"}}, + "channel":{"N":{"tab":["n1"]}}, + "chaos":{"N":{"tab":["n5"]}}, + "chap":{"N":{"tab":["n1"]}}, + "chapel":{"N":{"tab":["n1"]}}, + "chapter":{"N":{"tab":["n1"]}}, + "character":{"N":{"tab":["n1"]}}, + "characteristic":{"A":{"tab":["a1"]}}, + "characterize":{"V":{"tab":"v3"}}, + "charge":{"N":{"tab":["n1"]}, + "V":{"tab":"v3"}}, + "charity":{"N":{"tab":["n3"]}}, + "charm":{"N":{"tab":["n1"]}}, + "charming":{"A":{"tab":["a1"]}}, + "chart":{"N":{"tab":["n1"]}}, + "charter":{"N":{"tab":["n1"]}}, + "chase":{"N":{"tab":["n1"]}, + "V":{"tab":"v3"}}, + "chat":{"N":{"tab":["n1"]}, + "V":{"tab":"v14"}}, + "cheap":{"A":{"tab":["a3"]}}, + "check":{"N":{"tab":["n1"]}, + "V":{"tab":"v1"}}, + "cheek":{"N":{"tab":["n1"]}}, + "cheer":{"V":{"tab":"v1"}}, + "cheerful":{"A":{"tab":["a1"]}}, + "cheese":{"N":{"tab":["n1"]}}, + "chemical":{"A":{"tab":["a1"]}, + "N":{"tab":["n1"]}}, + "chemist":{"N":{"tab":["n1"]}}, + "chemistry":{"N":{"tab":["n5"]}}, + "cheque":{"N":{"tab":["n1"]}}, + "chest":{"N":{"tab":["n1"]}}, + "chew":{"V":{"tab":"v1"}}, + "chicken":{"N":{"tab":["n1"]}}, + "chief":{"A":{"tab":["a1"]}, + "N":{"tab":["n1"]}}, + "child":{"N":{"tab":["n15"]}}, + "childhood":{"N":{"tab":["n5"]}}, + "chimney":{"N":{"tab":["n1"]}}, + "chin":{"N":{"tab":["n1"]}}, + "chip":{"N":{"tab":["n1"]}}, + "chocolate":{"N":{"tab":["n1"]}}, + "choice":{"N":{"tab":["n1"]}}, + "choir":{"N":{"tab":["n1"]}}, + "choke":{"V":{"tab":"v3"}}, + "choose":{"V":{"tab":"v93"}}, + "chop":{"V":{"tab":"v12"}}, + "chord":{"N":{"tab":["n1"]}}, + "chorus":{"N":{"tab":["n2"]}}, + "chronic":{"A":{"tab":["a1"]}}, + "church":{"N":{"tab":["n2"]}}, + "cigarette":{"N":{"tab":["n1"]}}, + "cinema":{"N":{"tab":["n1"]}}, + "circle":{"N":{"tab":["n1"]}}, + "circuit":{"N":{"tab":["n1"]}}, + "circular":{"A":{"tab":["a1"]}, + "N":{"tab":["n1"]}}, + "circulate":{"V":{"tab":"v3"}}, + "circulation":{"N":{"tab":["n1"]}}, + "circumstance":{"N":{"tab":["n1"]}}, + "cite":{"V":{"tab":"v3"}}, + "citizen":{"N":{"tab":["n1"]}}, + "citizenship":{"N":{"tab":["n1"]}}, + "city":{"N":{"tab":["n3"]}}, + "civic":{"A":{"tab":["a1"]}}, + "civil":{"A":{"tab":["a8"]}}, + "civilian":{"A":{"tab":["a1"]}, + "N":{"tab":["n1"]}}, + "civilization":{"N":{"tab":["n1"]}}, + "claim":{"N":{"tab":["n1"]}, + "V":{"tab":"v1"}}, + "clarify":{"V":{"tab":"v4"}}, + "clarity":{"N":{"tab":["n5"]}}, + "clash":{"N":{"tab":["n2"]}}, + "class":{"N":{"tab":["n2"]}}, + "classic":{"A":{"tab":["a1"]}, + "N":{"tab":["n1"]}}, + "classical":{"A":{"tab":["a1"]}}, + "classification":{"N":{"tab":["n1"]}}, + "classify":{"V":{"tab":"v4"}}, + "classroom":{"N":{"tab":["n1"]}}, + "clause":{"N":{"tab":["n1"]}}, + "clay":{"N":{"tab":["n5"]}}, + "clean":{"A":{"tab":["a3"]}, + "V":{"tab":"v1"}}, + "cleaner":{"N":{"tab":["n1"]}}, + "clear":{"A":{"tab":["a3"]}, + "V":{"tab":"v1"}}, + "clearance":{"N":{"tab":["n1"]}}, + "clearing":{"N":{"tab":["n1"]}}, + "clearly":{"Adv":{"tab":["b1"]}}, + "clergy":{"N":{"tab":["n3"]}}, + "clerical":{"A":{"tab":["a1"]}}, + "clerk":{"N":{"tab":["n1"]}}, + "clever":{"A":{"tab":["a3"]}}, + "client":{"N":{"tab":["n1"]}}, + "cliff":{"N":{"tab":["n1"]}}, + "climate":{"N":{"tab":["n1"]}}, + "climb":{"N":{"tab":["n1"]}, + "V":{"tab":"v1"}}, + "climber":{"N":{"tab":["n1"]}}, + "cling":{"V":{"tab":"v21"}}, + "clinic":{"N":{"tab":["n1"]}}, + "clinical":{"A":{"tab":["a1"]}}, + "clock":{"N":{"tab":["n1"]}}, + "close":{"A":{"tab":["a2"]}, + "Adv":{"tab":["b1"]}, + "V":{"tab":"v3"}}, + "closely":{"Adv":{"tab":["b1"]}}, + "closure":{"N":{"tab":["n1"]}}, + "cloth":{"N":{"tab":["n1"]}}, + "clothes":{"N":{"tab":["n6"]}}, + "clothing":{"N":{"tab":["n5"]}}, + "cloud":{"N":{"tab":["n1"]}}, + "club":{"N":{"tab":["n1"]}}, + "clue":{"N":{"tab":["n1"]}}, + "cluster":{"N":{"tab":["n1"]}}, + "clutch":{"V":{"tab":"v2"}}, + "co-operate":{"V":{"tab":"v3"}}, + "co-operation":{"N":{"tab":["n1"]}}, + "co-operative":{"A":{"tab":["a1"]}}, + "coach":{"N":{"tab":["n2"]}, + "V":{"tab":"v2"}}, + "coal":{"N":{"tab":["n1"]}}, + "coalition":{"N":{"tab":["n1"]}}, + "coast":{"N":{"tab":["n1"]}}, + "coastal":{"A":{"tab":["a1"]}}, + "coat":{"N":{"tab":["n1"]}}, + "code":{"N":{"tab":["n1"]}, + "V":{"tab":"v3"}}, + "coffee":{"N":{"tab":["n1"]}}, + "coffin":{"N":{"tab":["n1"]}}, + "coherent":{"A":{"tab":["a1"]}}, + "coin":{"N":{"tab":["n1"]}}, + "coincide":{"V":{"tab":"v3"}}, + "coincidence":{"N":{"tab":["n1"]}}, + "cold":{"A":{"tab":["a3"]}, + "N":{"tab":["n1"]}}, + "collaboration":{"N":{"tab":["n5"]}}, + "collapse":{"N":{"tab":["n1"]}, + "V":{"tab":"v3"}}, + "collar":{"N":{"tab":["n1"]}}, + "colleague":{"N":{"tab":["n1"]}}, + "collect":{"V":{"tab":"v1"}}, + "collection":{"N":{"tab":["n1"]}}, + "collective":{"A":{"tab":["a1"]}}, + "collector":{"N":{"tab":["n1"]}}, + "college":{"N":{"tab":["n1"]}}, + "colon":{"N":{"tab":["n1"]}}, + "colonel":{"N":{"tab":["n1"]}}, + "colonial":{"A":{"tab":["a1"]}}, + "colony":{"N":{"tab":["n3"]}}, + "colour":{"N":{"tab":["n1"]}, + "V":{"tab":"v1"}}, + "coloured":{"A":{"tab":["a1"]}}, + "colourful":{"A":{"tab":["a1"]}}, + "column":{"N":{"tab":["n1"]}}, + "combat":{"V":{"tab":"v1"}}, + "combination":{"N":{"tab":["n1"]}}, + "combine":{"V":{"tab":"v3"}}, + "come":{"V":{"tab":"v41"}}, + "comedy":{"N":{"tab":["n3"]}}, + "comfort":{"N":{"tab":["n1"]}, + "V":{"tab":"v1"}}, + "comfortable":{"A":{"tab":["a1"]}}, + "comfortably":{"Adv":{"tab":["b1"]}}, + "coming":{"A":{"tab":["a1"]}}, + "command":{"N":{"tab":["n1"]}, + "V":{"tab":"v1"}}, + "commander":{"N":{"tab":["n1"]}}, + "commence":{"V":{"tab":"v3"}}, + "comment":{"N":{"tab":["n1"]}, + "V":{"tab":"v1"}}, + "commentary":{"N":{"tab":["n3"]}}, + "commentator":{"N":{"tab":["n1"]}}, + "commerce":{"N":{"tab":["n5"]}}, + "commercial":{"A":{"tab":["a1"]}}, + "commission":{"N":{"tab":["n1"]}, + "V":{"tab":"v1"}}, + "commissioner":{"N":{"tab":["n1"]}}, + "commit":{"V":{"tab":"v14"}}, + "commitment":{"N":{"tab":["n1"]}}, + "committee":{"N":{"tab":["n1"]}}, + "commodity":{"N":{"tab":["n3"]}}, + "common":{"A":{"tab":["a3"]}}, + "commonly":{"Adv":{"tab":["b1"]}}, + "commons":{"N":{"tab":["n6"]}}, + "commonwealth":{"N":{"tab":["n1"]}}, + "communicate":{"V":{"tab":"v3"}}, + "communication":{"N":{"tab":["n1"]}}, + "communism":{"N":{"tab":["n5"]}}, + "communist":{"A":{"tab":["a1"]}, + "N":{"tab":["n1"]}}, + "community":{"N":{"tab":["n3"]}}, + "compact":{"N":{"tab":["n1"]}}, + "companion":{"N":{"tab":["n1"]}}, + "company":{"N":{"tab":["n3"]}}, + "comparable":{"A":{"tab":["a1"]}}, + "comparative":{"A":{"tab":["a1"]}}, + "comparatively":{"Adv":{"tab":["b1"]}}, + "compare":{"V":{"tab":"v3"}}, + "comparison":{"N":{"tab":["n1"]}}, + "compartment":{"N":{"tab":["n1"]}}, + "compatible":{"A":{"tab":["a1"]}}, + "compel":{"V":{"tab":"v9"}}, + "compensate":{"V":{"tab":"v3"}}, + "compensation":{"N":{"tab":["n1"]}}, + "compete":{"V":{"tab":"v3"}}, + "competence":{"N":{"tab":["n5"]}}, + "competent":{"A":{"tab":["a1"]}}, + "competition":{"N":{"tab":["n1"]}}, + "competitive":{"A":{"tab":["a1"]}}, + "competitor":{"N":{"tab":["n1"]}}, + "compile":{"V":{"tab":"v3"}}, + "complain":{"V":{"tab":"v1"}}, + "complaint":{"N":{"tab":["n1"]}}, + "complement":{"V":{"tab":"v1"}}, + "complementary":{"A":{"tab":["a1"]}}, + "complete":{"A":{"tab":["a1"]}, + "V":{"tab":"v3"}}, + "completely":{"Adv":{"tab":["b1"]}}, + "completion":{"N":{"tab":["n5"]}}, + "complex":{"A":{"tab":["a1"]}, + "N":{"tab":["n2"]}}, + "complexity":{"N":{"tab":["n3"]}}, + "compliance":{"N":{"tab":["n5"]}}, + "complicate":{"V":{"tab":"v3"}}, + "complicated":{"A":{"tab":["a1"]}}, + "complication":{"N":{"tab":["n1"]}}, + "comply":{"V":{"tab":"v4"}}, + "component":{"N":{"tab":["n1"]}}, + "compose":{"V":{"tab":"v3"}}, + "composer":{"N":{"tab":["n1"]}}, + "composition":{"N":{"tab":["n1"]}}, + "compound":{"N":{"tab":["n1"]}, + "V":{"tab":"v1"}}, + "comprehensive":{"A":{"tab":["a1"]}}, + "comprise":{"V":{"tab":"v3"}}, + "compromise":{"N":{"tab":["n1"]}, + "V":{"tab":"v3"}}, + "compulsory":{"A":{"tab":["a1"]}}, + "compute":{"V":{"tab":"v3"}}, + "computer":{"N":{"tab":["n1"]}}, + "conceal":{"V":{"tab":"v1"}}, + "concede":{"V":{"tab":"v3"}}, + "conceive":{"V":{"tab":"v3"}}, + "concentrate":{"V":{"tab":"v3"}}, + "concentration":{"N":{"tab":["n1"]}}, + "concept":{"N":{"tab":["n1"]}}, + "conception":{"N":{"tab":["n1"]}}, + "concern":{"N":{"tab":["n1"]}, + "V":{"tab":"v1"}}, + "concerned":{"A":{"tab":["a1"]}}, + "concerning":{"P":{"tab":["pp"]}}, + "concert":{"N":{"tab":["n1"]}}, + "concession":{"N":{"tab":["n1"]}}, + "conclude":{"V":{"tab":"v3"}}, + "conclusion":{"N":{"tab":["n1"]}}, + "concrete":{"A":{"tab":["a1"]}, + "N":{"tab":["n5"]}}, + "condemn":{"V":{"tab":"v1"}}, + "condition":{"N":{"tab":["n1"]}}, + "conduct":{"N":{"tab":["n5"]}, + "V":{"tab":"v1"}}, + "conductor":{"N":{"g":"m", + "tab":["n85"]}}, + "confer":{"V":{"tab":"v13"}}, + "conference":{"N":{"tab":["n1"]}}, + "confess":{"V":{"tab":"v2"}}, + "confession":{"N":{"tab":["n1"]}}, + "confidence":{"N":{"tab":["n1"]}}, + "confident":{"A":{"tab":["a1"]}}, + "confidential":{"A":{"tab":["a1"]}}, + "configuration":{"N":{"tab":["n1"]}}, + "confine":{"V":{"tab":"v3"}}, + "confirm":{"V":{"tab":"v1"}}, + "confirmation":{"N":{"tab":["n1"]}}, + "conflict":{"N":{"tab":["n1"]}, + "V":{"tab":"v1"}}, + "conform":{"V":{"tab":"v1"}}, + "confront":{"V":{"tab":"v1"}}, + "confrontation":{"N":{"tab":["n1"]}}, + "confuse":{"V":{"tab":"v3"}}, + "confusion":{"N":{"tab":["n5"]}}, + "congratulate":{"V":{"tab":"v3"}}, + "congregation":{"N":{"tab":["n1"]}}, + "congress":{"N":{"tab":["n2"]}}, + "conjunction":{"N":{"tab":["n1"]}}, + "connect":{"V":{"tab":"v1"}}, + "connection":{"N":{"tab":["n1"]}}, + "conscience":{"N":{"tab":["n1"]}}, + "conscious":{"A":{"tab":["a1"]}}, + "consciousness":{"N":{"tab":["n5"]}}, + "consensus":{"N":{"tab":["n2"]}}, + "consent":{"N":{"tab":["n5"]}}, + "consequence":{"N":{"tab":["n1"]}}, + "consequently":{"Adv":{"tab":["b1"]}}, + "conservation":{"N":{"tab":["n5"]}}, + "conservative":{"A":{"tab":["a1"]}, + "N":{"tab":["n1"]}}, + "consider":{"V":{"tab":"v1"}}, + "considerable":{"A":{"tab":["a1"]}}, + "considerably":{"Adv":{"tab":["b1"]}}, + "consideration":{"N":{"tab":["n1"]}}, + "considering":{"P":{"tab":["pp"]}}, + "consist":{"V":{"tab":"v1"}}, + "consistency":{"N":{"tab":["n3"]}}, + "consistent":{"A":{"tab":["a1"]}}, + "consistently":{"Adv":{"tab":["b1"]}}, + "consolidate":{"V":{"tab":"v3"}}, + "consortium":{"N":{"tab":["n11"]}}, + "conspiracy":{"N":{"tab":["n3"]}}, + "constable":{"N":{"tab":["n1"]}}, + "constant":{"A":{"tab":["a1"]}}, + "constantly":{"Adv":{"tab":["b1"]}}, + "constituency":{"N":{"tab":["n3"]}}, + "constituent":{"N":{"tab":["n1"]}}, + "constitute":{"V":{"tab":"v3"}}, + "constitution":{"N":{"tab":["n1"]}}, + "constitutional":{"A":{"tab":["a1"]}}, + "constrain":{"V":{"tab":"v1"}}, + "constraint":{"N":{"tab":["n1"]}}, + "construct":{"V":{"tab":"v1"}}, + "construction":{"N":{"tab":["n1"]}}, + "constructive":{"A":{"tab":["a1"]}}, + "consult":{"V":{"tab":"v1"}}, + "consultant":{"N":{"tab":["n1"]}}, + "consultation":{"N":{"tab":["n1"]}}, + "consume":{"V":{"tab":"v3"}}, + "consumer":{"N":{"tab":["n1"]}}, + "consumption":{"N":{"tab":["n5"]}}, + "contact":{"N":{"tab":["n1"]}, + "V":{"tab":"v1"}}, + "contain":{"V":{"tab":"v1"}}, + "container":{"N":{"tab":["n1"]}}, + "contemplate":{"V":{"tab":"v3"}}, + "contemporary":{"A":{"tab":["a1"]}, + "N":{"tab":["n3"]}}, + "contempt":{"N":{"tab":["n5"]}}, + "contend":{"V":{"tab":"v1"}}, + "content":{"A":{"tab":["a1"]}, + "N":{"tab":["n1"]}}, + "contest":{"N":{"tab":["n1"]}, + "V":{"tab":"v1"}}, + "context":{"N":{"tab":["n1"]}}, + "continent":{"N":{"tab":["n1"]}}, + "continental":{"A":{"tab":["a1"]}}, + "continually":{"Adv":{"tab":["b1"]}}, + "continuation":{"N":{"tab":["n1"]}}, + "continue":{"V":{"tab":"v3"}}, + "continuity":{"N":{"tab":["n5"]}}, + "continuous":{"A":{"tab":["a1"]}}, + "continuously":{"Adv":{"tab":["b1"]}}, + "contract":{"N":{"tab":["n1"]}, + "V":{"tab":"v1"}}, + "contraction":{"N":{"tab":["n1"]}}, + "contractor":{"N":{"tab":["n1"]}}, + "contractual":{"A":{"tab":["a1"]}}, + "contradiction":{"N":{"tab":["n1"]}}, + "contrary":{"A":{"tab":["a1"]}, + "N":{"tab":["n3"]}}, + "contrast":{"N":{"tab":["n1"]}, + "V":{"tab":"v1"}}, + "contribute":{"V":{"tab":"v3"}}, + "contribution":{"N":{"tab":["n1"]}}, + "control":{"N":{"tab":["n1"]}, + "V":{"tab":"v9"}}, + "controller":{"N":{"tab":["n1"]}}, + "controversial":{"A":{"tab":["a1"]}}, + "controversy":{"N":{"tab":["n3"]}}, + "convenience":{"N":{"tab":["n1"]}}, + "convenient":{"A":{"tab":["a1"]}}, + "convention":{"N":{"tab":["n1"]}}, + "conventional":{"A":{"tab":["a1"]}}, + "conversation":{"N":{"tab":["n1"]}}, + "conversely":{"Adv":{"tab":["b1"]}}, + "conversion":{"N":{"tab":["n1"]}}, + "convert":{"V":{"tab":"v1"}}, + "convey":{"V":{"tab":"v1"}}, + "convict":{"V":{"tab":"v1"}}, + "conviction":{"N":{"tab":["n1"]}}, + "convince":{"V":{"tab":"v3"}}, + "convincing":{"A":{"tab":["a1"]}}, + "cook":{"N":{"tab":["n1"]}, + "V":{"tab":"v1"}}, + "cooking":{"N":{"tab":["n5"]}}, + "cool":{"A":{"tab":["a3"]}, + "V":{"tab":"v1"}}, + "cooperation":{"N":{"tab":["n1"]}}, + "cop":{"V":{"tab":"v12"}}, + "cope":{"V":{"tab":"v3"}}, + "copper":{"N":{"tab":["n1"]}}, + "copy":{"N":{"tab":["n3"]}, + "V":{"tab":"v4"}}, + "copyright":{"N":{"tab":["n1"]}}, + "cord":{"N":{"tab":["n1"]}}, + "core":{"N":{"tab":["n1"]}}, + "corn":{"N":{"tab":["n1"]}}, + "corner":{"N":{"tab":["n1"]}}, + "corporate":{"A":{"tab":["a1"]}}, + "corps":{"N":{"tab":["n4"]}}, + "corpse":{"N":{"tab":["n1"]}}, + "correct":{"A":{"tab":["a1"]}, + "V":{"tab":"v1"}}, + "correction":{"N":{"tab":["n1"]}}, + "correctly":{"Adv":{"tab":["b1"]}}, + "correlation":{"N":{"tab":["n1"]}}, + "correspond":{"V":{"tab":"v1"}}, + "correspondence":{"N":{"tab":["n1"]}}, + "correspondent":{"N":{"tab":["n1"]}}, + "corresponding":{"A":{"tab":["a1"]}}, + "corridor":{"N":{"tab":["n1"]}}, + "corruption":{"N":{"tab":["n5"]}}, + "cost":{"N":{"tab":["n1"]}, + "V":{"tab":"v58"}}, + "costly":{"A":{"tab":["a4"]}}, + "costume":{"N":{"tab":["n1"]}}, + "cottage":{"N":{"tab":["n1"]}}, + "cotton":{"N":{"tab":["n5"]}}, + "cough":{"V":{"tab":"v1"}}, + "council":{"N":{"tab":["n1"]}}, + "councillor":{"N":{"tab":["n1"]}}, + "counsel":{"N":{"tab":["n5"]}}, + "counsellor":{"N":{"tab":["n1"]}}, + "count":{"N":{"g":"m", + "tab":["n85"]}, + "V":{"tab":"v1"}}, + "counter":{"N":{"tab":["n1"]}, + "V":{"tab":"v1"}}, + "counterpart":{"N":{"tab":["n1"]}}, + "country":{"N":{"tab":["n3"]}}, + "countryside":{"N":{"tab":["n5"]}}, + "county":{"N":{"tab":["n3"]}}, + "coup":{"N":{"tab":["n1"]}}, + "couple":{"N":{"tab":["n1"]}, + "V":{"tab":"v3"}}, + "courage":{"N":{"tab":["n5"]}}, + "course":{"N":{"tab":["n1"]}}, + "court":{"N":{"tab":["n1"]}}, + "courtesy":{"N":{"tab":["n3"]}}, + "courtyard":{"N":{"tab":["n1"]}}, + "cousin":{"N":{"tab":["n1"]}}, + "covenant":{"N":{"tab":["n1"]}}, + "cover":{"N":{"tab":["n1"]}, + "V":{"tab":"v1"}}, + "coverage":{"N":{"tab":["n5"]}}, + "cow":{"N":{"tab":["n69"]}}, + "crack":{"N":{"tab":["n1"]}, + "V":{"tab":"v1"}}, + "craft":{"N":{"tab":["n1"]}}, + "craftsman":{"N":{"tab":["n7"]}}, + "crash":{"N":{"tab":["n2"]}, + "V":{"tab":"v2"}}, + "crawl":{"V":{"tab":"v1"}}, + "crazy":{"A":{"tab":["a4"]}}, + "cream":{"N":{"tab":["n1"]}}, + "create":{"V":{"tab":"v3"}}, + "creation":{"N":{"tab":["n1"]}}, + "creative":{"A":{"tab":["a1"]}}, + "creature":{"N":{"tab":["n1"]}}, + "credibility":{"N":{"tab":["n5"]}}, + "credit":{"N":{"tab":["n1"]}, + "V":{"tab":"v1"}}, + "creditor":{"N":{"tab":["n1"]}}, + "creed":{"N":{"tab":["n1"]}}, + "creep":{"V":{"tab":"v29"}}, + "crew":{"N":{"tab":["n1"]}}, + "cricket":{"N":{"tab":["n1"]}}, + "crime":{"N":{"tab":["n1"]}}, + "criminal":{"A":{"tab":["a1"]}, + "N":{"tab":["n1"]}}, + "crisis":{"N":{"tab":["n8"]}}, + "criterion":{"N":{"tab":["n26"]}}, + "critic":{"N":{"tab":["n1"]}}, + "critical":{"A":{"tab":["a1"]}}, + "criticism":{"N":{"tab":["n1"]}}, + "criticize":{"V":{"tab":"v3"}}, + "critique":{"N":{"tab":["n1"]}}, + "crop":{"N":{"tab":["n1"]}, + "V":{"tab":"v12"}}, + "cross":{"N":{"tab":["n2"]}, + "V":{"tab":"v2"}}, + "crossing":{"N":{"tab":["n1"]}}, + "crouch":{"V":{"tab":"v2"}}, + "crowd":{"N":{"tab":["n1"]}, + "V":{"tab":"v1"}}, + "crown":{"N":{"tab":["n1"]}}, + "crucial":{"A":{"tab":["a1"]}}, + "crude":{"A":{"tab":["a2"]}}, + "cruel":{"A":{"tab":["a8"]}}, + "cruelty":{"N":{"tab":["n3"]}}, + "crush":{"V":{"tab":"v2"}}, + "cry":{"N":{"tab":["n3"]}, + "V":{"tab":"v4"}}, + "crystal":{"N":{"tab":["n1"]}}, + "cult":{"N":{"tab":["n1"]}}, + "cultivate":{"V":{"tab":"v3"}}, + "cultural":{"A":{"tab":["a1"]}}, + "culture":{"N":{"tab":["n1"]}}, + "cup":{"N":{"tab":["n1"]}}, + "cupboard":{"N":{"tab":["n1"]}}, + "cure":{"N":{"tab":["n1"]}}, + "curiosity":{"N":{"tab":["n3"]}}, + "curious":{"A":{"tab":["a1"]}}, + "curiously":{"Adv":{"tab":["b1"]}}, + "curl":{"N":{"tab":["n1"]}, + "V":{"tab":"v1"}}, + "currency":{"N":{"tab":["n3"]}}, + "current":{"A":{"tab":["a1"]}, + "N":{"tab":["n1"]}}, + "currently":{"Adv":{"tab":["b1"]}}, + "curriculum":{"N":{"tab":["n1"]}}, + "curtain":{"N":{"tab":["n1"]}}, + "curve":{"N":{"tab":["n1"]}, + "V":{"tab":"v3"}}, + "cushion":{"N":{"tab":["n1"]}}, + "custody":{"N":{"tab":["n5"]}}, + "custom":{"N":{"tab":["n1"]}}, + "customer":{"N":{"tab":["n1"]}}, + "cut":{"N":{"tab":["n1"]}, + "V":{"tab":"v17"}}, + "cutting":{"N":{"tab":["n1"]}}, + "cycle":{"N":{"tab":["n1"]}}, + "cylinder":{"N":{"tab":["n1"]}}, + "daily":{"A":{"tab":["a1"]}, + "Adv":{"tab":["b1"]}}, + "dairy":{"N":{"tab":["n3"]}}, + "damage":{"N":{"tab":["n1"]}, + "V":{"tab":"v3"}}, + "damn":{"V":{"tab":"v1"}}, + "damp":{"A":{"tab":["a3"]}}, + "dance":{"N":{"tab":["n1"]}, + "V":{"tab":"v3"}}, + "dancer":{"N":{"tab":["n1"]}}, + "dancing":{"N":{"tab":["n5"]}}, + "danger":{"N":{"tab":["n1"]}}, + "dangerous":{"A":{"tab":["a1"]}}, + "dare":{"V":{"tab":"v158"}}, + "dark":{"A":{"tab":["a3"]}, + "N":{"tab":["n5"]}}, + "darkness":{"N":{"tab":["n5"]}}, + "darling":{"N":{"tab":["n1"]}}, + "dash":{"V":{"tab":"v2"}}, + "data":{"N":{"tab":["n4"]}}, + "date":{"N":{"tab":["n1"]}, + "V":{"tab":"v3"}}, + "daughter":{"N":{"g":"f", + "tab":["n87"]}}, + "dawn":{"N":{"tab":["n1"]}}, + "day":{"N":{"tab":["n1"]}}, + "daylight":{"N":{"tab":["n5"]}}, + "dead":{"A":{"tab":["a1"]}, + "Adv":{"tab":["b1"]}}, + "deadline":{"N":{"tab":["n1"]}}, + "deadly":{"A":{"tab":["a4"]}}, + "deaf":{"A":{"tab":["a3"]}}, + "deal":{"N":{"tab":["n1"]}, + "V":{"tab":"v55"}}, + "dealer":{"N":{"tab":["n1"]}}, + "dealing":{"N":{"tab":["n1"]}}, + "dear":{"A":{"tab":["a3"]}, + "N":{"tab":["n1"]}}, + "death":{"N":{"tab":["n1"]}}, + "debate":{"N":{"tab":["n1"]}, + "V":{"tab":"v3"}}, + "debt":{"N":{"tab":["n1"]}}, + "debtor":{"N":{"tab":["n1"]}}, + "debut":{"N":{"tab":["n1"]}}, + "decade":{"N":{"tab":["n1"]}}, + "decay":{"N":{"tab":["n5"]}}, + "decent":{"A":{"tab":["a1"]}}, + "decide":{"V":{"tab":"v3"}}, + "decision":{"N":{"tab":["n1"]}}, + "decisive":{"A":{"tab":["a1"]}}, + "deck":{"N":{"tab":["n1"]}}, + "declaration":{"N":{"tab":["n1"]}}, + "declare":{"V":{"tab":"v3"}}, + "decline":{"N":{"tab":["n1"]}, + "V":{"tab":"v3"}}, + "decorate":{"V":{"tab":"v3"}}, + "decoration":{"N":{"tab":["n1"]}}, + "decorative":{"A":{"tab":["a1"]}}, + "decrease":{"N":{"tab":["n1"]}, + "V":{"tab":"v3"}}, + "decree":{"N":{"tab":["n1"]}}, + "dedicate":{"V":{"tab":"v3"}}, + "deed":{"N":{"tab":["n1"]}}, + "deem":{"V":{"tab":"v1"}}, + "deep":{"A":{"tab":["a3"]}, + "Adv":{"tab":["b1"]}}, + "deeply":{"Adv":{"tab":["b1"]}}, + "deer":{"N":{"tab":["n4"]}}, + "default":{"N":{"tab":["n5"]}}, + "defeat":{"N":{"tab":["n1"]}, + "V":{"tab":"v1"}}, + "defect":{"N":{"tab":["n1"]}}, + "defend":{"V":{"tab":"v1"}}, + "defendant":{"N":{"tab":["n1"]}}, + "defender":{"N":{"tab":["n1"]}}, + "defense":{"N":{"tab":["n1"]}}, + "defensive":{"A":{"tab":["a1"]}}, + "deficiency":{"N":{"tab":["n3"]}}, + "deficit":{"N":{"tab":["n1"]}}, + "define":{"V":{"tab":"v3"}}, + "definite":{"A":{"tab":["a1"]}}, + "definitely":{"Adv":{"tab":["b1"]}}, + "definition":{"N":{"tab":["n1"]}}, + "defy":{"V":{"tab":"v4"}}, + "degree":{"N":{"tab":["n1"]}}, + "delay":{"N":{"tab":["n1"]}, + "V":{"tab":"v1"}}, + "delegate":{"N":{"tab":["n1"]}}, + "delegation":{"N":{"tab":["n1"]}}, + "delete":{"V":{"tab":"v3"}}, + "deliberate":{"A":{"tab":["a1"]}}, + "deliberately":{"Adv":{"tab":["b1"]}}, + "delicate":{"A":{"tab":["a1"]}}, + "delicious":{"A":{"tab":["a1"]}}, + "delight":{"N":{"tab":["n1"]}, + "V":{"tab":"v1"}}, + "delightful":{"A":{"tab":["a1"]}}, + "deliver":{"V":{"tab":"v1"}}, + "delivery":{"N":{"tab":["n3"]}}, + "demand":{"N":{"tab":["n1"]}, + "V":{"tab":"v1"}}, + "democracy":{"N":{"tab":["n3"]}}, + "democrat":{"N":{"tab":["n1"]}}, + "democratic":{"A":{"tab":["a1"]}}, + "demolish":{"V":{"tab":"v2"}}, + "demonstrate":{"V":{"tab":"v3"}}, + "demonstration":{"N":{"tab":["n1"]}}, + "demonstrator":{"N":{"tab":["n1"]}}, + "denial":{"N":{"tab":["n1"]}}, + "denounce":{"V":{"tab":"v3"}}, + "dense":{"A":{"tab":["a2"]}}, + "density":{"N":{"tab":["n3"]}}, + "dentist":{"N":{"tab":["n1"]}}, + "deny":{"V":{"tab":"v4"}}, + "depart":{"V":{"tab":"v1"}}, + "department":{"N":{"tab":["n1"]}}, + "departmental":{"A":{"tab":["a1"]}}, + "departure":{"N":{"tab":["n1"]}}, + "depend":{"V":{"tab":"v1"}}, + "dependence":{"N":{"tab":["n5"]}}, + "dependency":{"N":{"tab":["n3"]}}, + "dependent":{"A":{"tab":["a1"]}}, + "depict":{"V":{"tab":"v1"}}, + "deploy":{"V":{"tab":"v1"}}, + "deposit":{"N":{"tab":["n1"]}, + "V":{"tab":"v1"}}, + "depot":{"N":{"tab":["n1"]}}, + "depression":{"N":{"tab":["n1"]}}, + "deprivation":{"N":{"tab":["n1"]}}, + "deprive":{"V":{"tab":"v3"}}, + "depth":{"N":{"tab":["n1"]}}, + "deputy":{"N":{"tab":["n3"]}}, + "derive":{"V":{"tab":"v3"}}, + "descend":{"V":{"tab":"v1"}}, + "descent":{"N":{"tab":["n1"]}}, + "describe":{"V":{"tab":"v3"}}, + "description":{"N":{"tab":["n1"]}}, + "desert":{"N":{"tab":["n1"]}, + "V":{"tab":"v1"}}, + "deserve":{"V":{"tab":"v3"}}, + "design":{"N":{"tab":["n1"]}, + "V":{"tab":"v1"}}, + "designate":{"V":{"tab":"v3"}}, + "designer":{"N":{"tab":["n1"]}}, + "desirable":{"A":{"tab":["a1"]}}, + "desire":{"N":{"tab":["n1"]}, + "V":{"tab":"v3"}}, + "desk":{"N":{"tab":["n1"]}}, + "despair":{"N":{"tab":["n5"]}}, + "desperate":{"A":{"tab":["a1"]}}, + "desperately":{"Adv":{"tab":["b1"]}}, + "despite":{"P":{"tab":["pp"]}}, + "destination":{"N":{"tab":["n1"]}}, + "destiny":{"N":{"tab":["n3"]}}, + "destroy":{"V":{"tab":"v1"}}, + "destruction":{"N":{"tab":["n5"]}}, + "detail":{"N":{"tab":["n1"]}}, + "detain":{"V":{"tab":"v1"}}, + "detect":{"V":{"tab":"v1"}}, + "detection":{"N":{"tab":["n5"]}}, + "detective":{"N":{"tab":["n1"]}}, + "detector":{"N":{"tab":["n1"]}}, + "detention":{"N":{"tab":["n1"]}}, + "deter":{"V":{"tab":"v13"}}, + "deteriorate":{"V":{"tab":"v3"}}, + "determination":{"N":{"tab":["n5"]}}, + "determine":{"V":{"tab":"v3"}}, + "develop":{"V":{"tab":"v1"}}, + "developer":{"N":{"tab":["n1"]}}, + "development":{"N":{"tab":["n1"]}}, + "deviation":{"N":{"tab":["n1"]}}, + "device":{"N":{"tab":["n1"]}}, + "devil":{"N":{"tab":["n1"]}}, + "devise":{"V":{"tab":"v3"}}, + "devote":{"V":{"tab":"v3"}}, + "devoted":{"A":{"tab":["a1"]}}, + "diagnose":{"V":{"tab":"v3"}}, + "diagnosis":{"N":{"tab":["n8"]}}, + "diagram":{"N":{"tab":["n1"]}}, + "dialogue":{"N":{"tab":["n1"]}}, + "diameter":{"N":{"tab":["n1"]}}, + "diamond":{"N":{"tab":["n1"]}}, + "diary":{"N":{"tab":["n3"]}}, + "dictate":{"V":{"tab":"v3"}}, + "dictionary":{"N":{"tab":["n3"]}}, + "die":{"V":{"tab":"v28"}}, + "diet":{"N":{"tab":["n1"]}}, + "differ":{"V":{"tab":"v1"}}, + "difference":{"N":{"tab":["n1"]}}, + "different":{"A":{"tab":["a1"]}}, + "differential":{"A":{"tab":["a1"]}}, + "differentiate":{"V":{"tab":"v3"}}, + "differentiation":{"N":{"tab":["n1"]}}, + "differently":{"Adv":{"tab":["b1"]}}, + "difficult":{"A":{"tab":["a1"]}}, + "difficulty":{"N":{"tab":["n3"]}}, + "dig":{"V":{"tab":"v109"}}, + "digital":{"A":{"tab":["a1"]}}, + "dignity":{"N":{"tab":["n3"]}}, + "dilemma":{"N":{"tab":["n1"]}}, + "dimension":{"N":{"tab":["n1"]}}, + "diminish":{"V":{"tab":"v2"}}, + "dine":{"V":{"tab":"v3"}}, + "dinner":{"N":{"tab":["n1"]}}, + "dioxide":{"N":{"tab":["n1"]}}, + "dip":{"V":{"tab":"v12"}}, + "diplomat":{"N":{"tab":["n1"]}}, + "diplomatic":{"A":{"tab":["a1"]}}, + "direct":{"A":{"tab":["a1"]}, + "Adv":{"tab":["b1"]}, + "V":{"tab":"v1"}}, + "direction":{"N":{"tab":["n1"]}}, + "directive":{"N":{"tab":["n1"]}}, + "directly":{"Adv":{"tab":["b1"]}}, + "director":{"N":{"tab":["n1"]}}, + "directory":{"N":{"tab":["n3"]}}, + "dirt":{"N":{"tab":["n5"]}}, + "dirty":{"A":{"tab":["a4"]}}, + "disability":{"N":{"tab":["n3"]}}, + "disadvantage":{"N":{"tab":["n1"]}}, + "disagree":{"V":{"tab":"v16"}}, + "disagreement":{"N":{"tab":["n1"]}}, + "disappear":{"V":{"tab":"v1"}}, + "disappoint":{"V":{"tab":"v1"}}, + "disappointment":{"N":{"tab":["n1"]}}, + "disaster":{"N":{"tab":["n1"]}}, + "disastrous":{"A":{"tab":["a1"]}}, + "disc":{"N":{"tab":["n1"]}}, + "discard":{"V":{"tab":"v1"}}, + "discharge":{"N":{"tab":["n1"]}, + "V":{"tab":"v3"}}, + "disciplinary":{"A":{"tab":["a1"]}}, + "discipline":{"N":{"tab":["n1"]}, + "V":{"tab":"v3"}}, + "disclose":{"V":{"tab":"v3"}}, + "disclosure":{"N":{"tab":["n1"]}}, + "disco":{"N":{"tab":["n1"]}}, + "discount":{"N":{"tab":["n1"]}, + "V":{"tab":"v1"}}, + "discourage":{"V":{"tab":"v3"}}, + "discourse":{"N":{"tab":["n1"]}}, + "discover":{"V":{"tab":"v1"}}, + "discovery":{"N":{"tab":["n3"]}}, + "discretion":{"N":{"tab":["n5"]}}, + "discrimination":{"N":{"tab":["n5"]}}, + "discuss":{"V":{"tab":"v2"}}, + "discussion":{"N":{"tab":["n1"]}}, + "disease":{"N":{"tab":["n1"]}}, + "disguise":{"V":{"tab":"v3"}}, + "dish":{"N":{"tab":["n2"]}}, + "disk":{"N":{"tab":["n1"]}}, + "dislike":{"V":{"tab":"v3"}}, + "dismiss":{"V":{"tab":"v2"}}, + "dismissal":{"N":{"tab":["n1"]}}, + "disorder":{"N":{"tab":["n1"]}}, + "disperse":{"V":{"tab":"v3"}}, + "display":{"N":{"tab":["n1"]}, + "V":{"tab":"v1"}}, + "disposal":{"N":{"tab":["n5"]}}, + "dispose":{"V":{"tab":"v3"}}, + "disposition":{"N":{"tab":["n1"]}}, + "dispute":{"N":{"tab":["n1"]}, + "V":{"tab":"v3"}}, + "disrupt":{"V":{"tab":"v1"}}, + "disruption":{"N":{"tab":["n1"]}}, + "dissolve":{"V":{"tab":"v3"}}, + "distance":{"N":{"tab":["n1"]}}, + "distant":{"A":{"tab":["a1"]}}, + "distinct":{"A":{"tab":["a1"]}}, + "distinction":{"N":{"tab":["n1"]}}, + "distinctive":{"A":{"tab":["a1"]}}, + "distinctly":{"Adv":{"tab":["b1"]}}, + "distinguish":{"V":{"tab":"v2"}}, + "distinguished":{"A":{"tab":["a1"]}}, + "distort":{"V":{"tab":"v1"}}, + "distortion":{"N":{"tab":["n1"]}}, + "distract":{"V":{"tab":"v1"}}, + "distress":{"N":{"tab":["n5"]}}, + "distribute":{"V":{"tab":"v3"}}, + "distribution":{"N":{"tab":["n1"]}}, + "distributor":{"N":{"tab":["n1"]}}, + "district":{"N":{"tab":["n1"]}}, + "disturb":{"V":{"tab":"v1"}}, + "disturbance":{"N":{"tab":["n1"]}}, + "dive":{"V":{"tab":"v3"}}, + "diverse":{"A":{"tab":["a1"]}}, + "diversity":{"N":{"tab":["n5"]}}, + "divert":{"V":{"tab":"v1"}}, + "divide":{"V":{"tab":"v3"}}, + "dividend":{"N":{"tab":["n1"]}}, + "divine":{"A":{"tab":["a1"]}}, + "division":{"N":{"tab":["n1"]}}, + "divorce":{"N":{"tab":["n1"]}, + "V":{"tab":"v3"}}, + "do":{"V":{"tab":"v96"}}, + "dock":{"N":{"tab":["n1"]}}, + "doctor":{"N":{"tab":["n1"]}}, + "doctrine":{"N":{"tab":["n1"]}}, + "document":{"N":{"tab":["n1"]}, + "V":{"tab":"v1"}}, + "documentation":{"N":{"tab":["n5"]}}, + "dog":{"N":{"tab":["n1"]}}, + "doll":{"N":{"tab":["n1"]}}, + "dollar":{"N":{"tab":["n1"]}}, + "dolphin":{"N":{"tab":["n1"]}}, + "domain":{"N":{"tab":["n1"]}}, + "dome":{"N":{"tab":["n1"]}}, + "domestic":{"A":{"tab":["a1"]}}, + "dominance":{"N":{"tab":["n5"]}}, + "dominant":{"A":{"tab":["a1"]}}, + "dominate":{"V":{"tab":"v3"}}, + "domination":{"N":{"tab":["n5"]}}, + "donate":{"V":{"tab":"v3"}}, + "donation":{"N":{"tab":["n1"]}}, + "donor":{"N":{"tab":["n1"]}}, + "door":{"N":{"tab":["n1"]}}, + "doorway":{"N":{"tab":["n1"]}}, + "dose":{"N":{"tab":["n1"]}}, + "dot":{"N":{"tab":["n1"]}}, + "double":{"A":{"tab":["a1"]}, + "N":{"tab":["n1"]}, + "V":{"tab":"v3"}}, + "doubt":{"N":{"tab":["n1"]}, + "V":{"tab":"v1"}}, + "doubtful":{"A":{"tab":["a1"]}}, + "doubtless":{"Adv":{"tab":["b1"]}}, + "down":{"Adv":{"tab":["b1"]}, + "P":{"tab":["pp"]}}, + "downstairs":{"Adv":{"tab":["b1"]}}, + "dozen":{"N":{"tab":["n1"]}}, + "draft":{"N":{"tab":["n1"]}, + "V":{"tab":"v1"}}, + "drag":{"V":{"tab":"v7"}}, + "dragon":{"N":{"tab":["n1"]}}, + "drain":{"N":{"tab":["n1"]}, + "V":{"tab":"v1"}}, + "drainage":{"N":{"tab":["n5"]}}, + "drama":{"N":{"tab":["n1"]}}, + "dramatic":{"A":{"tab":["a1"]}}, + "dramatically":{"Adv":{"tab":["b1"]}}, + "draw":{"N":{"tab":["n1"]}, + "V":{"tab":"v54"}}, + "drawer":{"N":{"tab":["n1"]}}, + "drawing":{"N":{"tab":["n1"]}}, + "dreadful":{"A":{"tab":["a1"]}}, + "dream":{"N":{"tab":["n1"]}, + "V":{"tab":"v26"}}, + "dress":{"N":{"tab":["n2"]}, + "V":{"tab":"v2"}}, + "dressing":{"N":{"tab":["n1"]}}, + "drift":{"N":{"tab":["n1"]}, + "V":{"tab":"v1"}}, + "drill":{"N":{"tab":["n1"]}, + "V":{"tab":"v1"}}, + "drink":{"N":{"tab":["n1"]}, + "V":{"tab":"v65"}}, + "drive":{"N":{"tab":["n1"]}, + "V":{"tab":"v42"}}, + "driver":{"N":{"tab":["n1"]}}, + "drop":{"N":{"tab":["n1"]}, + "V":{"tab":"v12"}}, + "drown":{"V":{"tab":"v1"}}, + "drug":{"N":{"tab":["n1"]}, + "V":{"tab":"v7"}}, + "drum":{"N":{"tab":["n1"]}}, + "drunk":{"A":{"tab":["a3"]}}, + "dry":{"A":{"tab":["a4"]}, + "V":{"tab":"v4"}}, + "dual":{"A":{"tab":["a1"]}}, + "duck":{"N":{"tab":["n1"]}}, + "due":{"A":{"tab":["a1"]}}, + "duke":{"N":{"g":"m", + "tab":["n85"]}}, + "dull":{"A":{"tab":["a3"]}}, + "duly":{"Adv":{"tab":["b1"]}}, + "dump":{"V":{"tab":"v1"}}, + "duration":{"N":{"tab":["n1"]}}, + "during":{"P":{"tab":["pp"]}}, + "dust":{"N":{"tab":["n5"]}}, + "duty":{"N":{"tab":["n3"]}}, + "dwelling":{"N":{"tab":["n1"]}}, + "dynamic":{"A":{"tab":["a1"]}}, + "eager":{"A":{"tab":["a1"]}}, + "eagle":{"N":{"tab":["n1"]}}, + "ear":{"N":{"tab":["n1"]}}, + "earl":{"N":{"tab":["n1"]}}, + "early":{"A":{"tab":["a4"]}, + "Adv":{"tab":["b1"]}}, + "earn":{"V":{"tab":"v1"}}, + "earth":{"N":{"tab":["n5"]}}, + "ease":{"N":{"tab":["n5"]}, + "V":{"tab":"v3"}}, + "easily":{"Adv":{"tab":["b1"]}}, + "east":{"N":{"tab":["n5"]}}, + "eastern":{"A":{"tab":["a1"]}}, + "easy":{"A":{"tab":["a4"]}, + "Adv":{"tab":["b1"]}}, + "eat":{"V":{"tab":"v70"}}, + "echo":{"N":{"tab":["n2"]}, + "V":{"tab":"v172"}}, + "economic":{"A":{"tab":["a1"]}}, + "economically":{"Adv":{"tab":["b1"]}}, + "economics":{"N":{"tab":["n5"]}}, + "economist":{"N":{"tab":["n1"]}}, + "economy":{"N":{"tab":["n3"]}}, + "edge":{"N":{"tab":["n1"]}}, + "edit":{"V":{"tab":"v1"}}, + "edition":{"N":{"tab":["n1"]}}, + "editor":{"N":{"tab":["n1"]}}, + "educate":{"V":{"tab":"v3"}}, + "education":{"N":{"tab":["n5"]}}, + "educational":{"A":{"tab":["a1"]}}, + "effect":{"N":{"tab":["n1"]}, + "V":{"tab":"v1"}}, + "effective":{"A":{"tab":["a1"]}}, + "effectively":{"Adv":{"tab":["b1"]}}, + "effectiveness":{"N":{"tab":["n5"]}}, + "efficiency":{"N":{"tab":["n5"]}}, + "efficient":{"A":{"tab":["a1"]}}, + "efficiently":{"Adv":{"tab":["b1"]}}, + "effort":{"N":{"tab":["n1"]}}, + "egg":{"N":{"tab":["n1"]}}, + "ego":{"N":{"tab":["n1"]}}, + "either":{"Adv":{"tab":["b1"]}}, + "elaborate":{"A":{"tab":["a1"]}}, + "elbow":{"N":{"tab":["n1"]}}, + "elder":{"N":{"tab":["n1"]}}, + "elderly":{"A":{"tab":["a1"]}}, + "elect":{"V":{"tab":"v1"}}, + "election":{"N":{"tab":["n1"]}}, + "electoral":{"A":{"tab":["a1"]}}, + "electorate":{"N":{"tab":["n1"]}}, + "electric":{"A":{"tab":["a1"]}}, + "electrical":{"A":{"tab":["a1"]}}, + "electricity":{"N":{"tab":["n5"]}}, + "electron":{"N":{"tab":["n1"]}}, + "electronic":{"A":{"tab":["a1"]}}, + "electronics":{"N":{"tab":["n5"]}}, + "elegant":{"A":{"tab":["a1"]}}, + "element":{"N":{"tab":["n1"]}}, + "elephant":{"N":{"tab":["n1"]}}, + "eligible":{"A":{"tab":["a1"]}}, + "eliminate":{"V":{"tab":"v3"}}, + "elite":{"N":{"tab":["n1"]}}, + "else":{"Adv":{"tab":["b1"]}}, + "elsewhere":{"Adv":{"tab":["b1"]}}, + "embark":{"V":{"tab":"v1"}}, + "embarrassing":{"A":{"tab":["a1"]}}, + "embarrassment":{"N":{"tab":["n1"]}}, + "embassy":{"N":{"tab":["n3"]}}, + "embody":{"V":{"tab":"v4"}}, + "embrace":{"V":{"tab":"v3"}}, + "embryo":{"N":{"tab":["n1"]}}, + "emerge":{"V":{"tab":"v3"}}, + "emergence":{"N":{"tab":["n5"]}}, + "emergency":{"N":{"tab":["n3"]}}, + "emission":{"N":{"tab":["n1"]}}, + "emotion":{"N":{"tab":["n1"]}}, + "emotional":{"A":{"tab":["a1"]}}, + "emperor":{"N":{"g":"m", + "tab":["n85"]}}, + "emphasis":{"N":{"tab":["n8"]}}, + "emphasize":{"V":{"tab":"v3"}}, + "empire":{"N":{"tab":["n1"]}}, + "empirical":{"A":{"tab":["a1"]}}, + "employ":{"V":{"tab":"v1"}}, + "employee":{"N":{"tab":["n1"]}}, + "employer":{"N":{"tab":["n1"]}}, + "employment":{"N":{"tab":["n5"]}}, + "empty":{"A":{"tab":["a4"]}, + "V":{"tab":"v4"}}, + "enable":{"V":{"tab":"v3"}}, + "enclose":{"V":{"tab":"v3"}}, + "encompass":{"V":{"tab":"v2"}}, + "encounter":{"N":{"tab":["n1"]}, + "V":{"tab":"v1"}}, + "encourage":{"V":{"tab":"v3"}}, + "encouragement":{"N":{"tab":["n1"]}}, + "end":{"N":{"tab":["n1"]}, + "V":{"tab":"v1"}}, + "ending":{"N":{"tab":["n1"]}}, + "endless":{"A":{"tab":["a1"]}}, + "endorse":{"V":{"tab":"v3"}}, + "endure":{"V":{"tab":"v3"}}, + "enemy":{"N":{"tab":["n3"]}}, + "energy":{"N":{"tab":["n3"]}}, + "enforce":{"V":{"tab":"v3"}}, + "enforcement":{"N":{"tab":["n5"]}}, + "engage":{"V":{"tab":"v3"}}, + "engagement":{"N":{"tab":["n1"]}}, + "engine":{"N":{"tab":["n1"]}}, + "engineer":{"N":{"tab":["n1"]}}, + "engineering":{"N":{"tab":["n5"]}}, + "enhance":{"V":{"tab":"v3"}}, + "enjoy":{"V":{"tab":"v1"}}, + "enjoyable":{"A":{"tab":["a1"]}}, + "enjoyment":{"N":{"tab":["n1"]}}, + "enormous":{"A":{"tab":["a1"]}}, + "enormously":{"Adv":{"tab":["b1"]}}, + "enough":{"Adv":{"tab":["b1"]}}, + "enquire":{"V":{"tab":"v3"}}, + "enquiry":{"N":{"tab":["n3"]}}, + "ensure":{"V":{"tab":"v3"}}, + "entail":{"V":{"tab":"v1"}}, + "enter":{"V":{"tab":"v1"}}, + "enterprise":{"N":{"tab":["n1"]}}, + "entertain":{"V":{"tab":"v1"}}, + "entertainment":{"N":{"tab":["n1"]}}, + "enthusiasm":{"N":{"tab":["n5"]}}, + "enthusiast":{"N":{"tab":["n1"]}}, + "enthusiastic":{"A":{"tab":["a1"]}}, + "entire":{"A":{"tab":["a1"]}}, + "entirely":{"Adv":{"tab":["b1"]}}, + "entitle":{"V":{"tab":"v3"}}, + "entitlement":{"N":{"tab":["n1"]}}, + "entity":{"N":{"tab":["n3"]}}, + "entrance":{"N":{"tab":["n1"]}}, + "entry":{"N":{"tab":["n3"]}}, + "envelope":{"N":{"tab":["n1"]}}, + "environment":{"N":{"tab":["n1"]}}, + "environmental":{"A":{"tab":["a1"]}}, + "envisage":{"V":{"tab":"v3"}}, + "enzyme":{"N":{"tab":["n1"]}}, + "episode":{"N":{"tab":["n1"]}}, + "equal":{"A":{"tab":["a1"]}, + "V":{"tab":"v9"}}, + "equality":{"N":{"tab":["n5"]}}, + "equally":{"Adv":{"tab":["b1"]}}, + "equation":{"N":{"tab":["n1"]}}, + "equilibrium":{"N":{"tab":["n5"]}}, + "equip":{"V":{"tab":"v12"}}, + "equipment":{"N":{"tab":["n5"]}}, + "equity":{"N":{"tab":["n3"]}}, + "equivalent":{"A":{"tab":["a1"]}, + "N":{"tab":["n1"]}}, + "era":{"N":{"tab":["n1"]}}, + "erect":{"V":{"tab":"v1"}}, + "erosion":{"N":{"tab":["n5"]}}, + "error":{"N":{"tab":["n1"]}}, + "escape":{"N":{"tab":["n1"]}, + "V":{"tab":"v3"}}, + "especially":{"Adv":{"tab":["b1"]}}, + "essay":{"N":{"tab":["n1"]}}, + "essence":{"N":{"tab":["n1"]}}, + "essential":{"A":{"tab":["a1"]}}, + "essentially":{"Adv":{"tab":["b1"]}}, + "establish":{"V":{"tab":"v2"}}, + "establishment":{"N":{"tab":["n1"]}}, + "estate":{"N":{"tab":["n1"]}}, + "estimate":{"N":{"tab":["n1"]}, + "V":{"tab":"v3"}}, + "eternal":{"A":{"tab":["a1"]}}, + "ethical":{"A":{"tab":["a1"]}}, + "ethics":{"N":{"tab":["n5"]}}, + "ethnic":{"A":{"tab":["a1"]}}, + "evaluate":{"V":{"tab":"v3"}}, + "evaluation":{"N":{"tab":["n1"]}}, + "even":{"Adv":{"tab":["b1"]}}, + "evening":{"N":{"tab":["n1"]}}, + "event":{"N":{"tab":["n1"]}}, + "eventual":{"A":{"tab":["a1"]}}, + "eventually":{"Adv":{"tab":["b1"]}}, + "ever":{"Adv":{"tab":["b1"]}}, + "everybody":{"Pro":{"tab":["pn5"]}}, + "everyday":{"A":{"tab":["a1"]}}, + "everyone":{"Pro":{"tab":["pn5"]}}, + "everything":{"Pro":{"tab":["pn5"]}}, + "everywhere":{"Adv":{"tab":["b1"]}}, + "evidence":{"N":{"tab":["n5"]}}, + "evident":{"A":{"tab":["a1"]}}, + "evidently":{"Adv":{"tab":["b1"]}}, + "evil":{"A":{"tab":["a1"]}, + "N":{"tab":["n1"]}}, + "evoke":{"V":{"tab":"v3"}}, + "evolution":{"N":{"tab":["n1"]}}, + "evolutionary":{"A":{"tab":["a1"]}}, + "evolve":{"V":{"tab":"v3"}}, + "exact":{"A":{"tab":["a1"]}}, + "exactly":{"Adv":{"tab":["b1"]}}, + "exaggerate":{"V":{"tab":"v3"}}, + "exam":{"N":{"tab":["n1"]}}, + "examination":{"N":{"tab":["n1"]}}, + "examine":{"V":{"tab":"v3"}}, + "example":{"N":{"tab":["n1"]}}, + "excavation":{"N":{"tab":["n1"]}}, + "exceed":{"V":{"tab":"v1"}}, + "excellent":{"A":{"tab":["a1"]}}, + "except":{"P":{"tab":["pp"]}}, + "exception":{"N":{"tab":["n1"]}}, + "exceptional":{"A":{"tab":["a1"]}}, + "exceptionally":{"Adv":{"tab":["b1"]}}, + "excess":{"A":{"tab":["a1"]}, + "N":{"tab":["n2"]}}, + "excessive":{"A":{"tab":["a1"]}}, + "exchange":{"N":{"tab":["n1"]}, + "V":{"tab":"v3"}}, + "excite":{"V":{"tab":"v3"}}, + "excitement":{"N":{"tab":["n1"]}}, + "exciting":{"A":{"tab":["a1"]}}, + "exclaim":{"V":{"tab":"v1"}}, + "exclude":{"V":{"tab":"v3"}}, + "exclusion":{"N":{"tab":["n1"]}}, + "exclusive":{"A":{"tab":["a1"]}}, + "exclusively":{"Adv":{"tab":["b1"]}}, + "excuse":{"N":{"tab":["n1"]}, + "V":{"tab":"v3"}}, + "execute":{"V":{"tab":"v3"}}, + "execution":{"N":{"tab":["n1"]}}, + "executive":{"A":{"tab":["a1"]}, + "N":{"tab":["n1"]}}, + "exemption":{"N":{"tab":["n1"]}}, + "exercise":{"N":{"tab":["n1"]}, + "V":{"tab":"v3"}}, + "exert":{"V":{"tab":"v1"}}, + "exhaust":{"V":{"tab":"v1"}}, + "exhibit":{"V":{"tab":"v1"}}, + "exhibition":{"N":{"tab":["n1"]}}, + "exile":{"N":{"tab":["n1"]}}, + "exist":{"V":{"tab":"v1"}}, + "existence":{"N":{"tab":["n1"]}}, + "exit":{"N":{"tab":["n1"]}}, + "exotic":{"A":{"tab":["a1"]}}, + "expand":{"V":{"tab":"v1"}}, + "expansion":{"N":{"tab":["n5"]}}, + "expect":{"V":{"tab":"v1"}}, + "expectation":{"N":{"tab":["n1"]}}, + "expected":{"A":{"tab":["a1"]}}, + "expedition":{"N":{"tab":["n1"]}}, + "expel":{"V":{"tab":"v9"}}, + "expenditure":{"N":{"tab":["n1"]}}, + "expense":{"N":{"tab":["n1"]}}, + "expensive":{"A":{"tab":["a1"]}}, + "experience":{"N":{"tab":["n1"]}, + "V":{"tab":"v3"}}, + "experienced":{"A":{"tab":["a1"]}}, + "experiment":{"N":{"tab":["n1"]}, + "V":{"tab":"v1"}}, + "experimental":{"A":{"tab":["a1"]}}, + "expert":{"A":{"tab":["a1"]}, + "N":{"tab":["n1"]}}, + "expertise":{"N":{"tab":["n5"]}}, + "explain":{"V":{"tab":"v1"}}, + "explanation":{"N":{"tab":["n1"]}}, + "explicit":{"A":{"tab":["a1"]}}, + "explicitly":{"Adv":{"tab":["b1"]}}, + "explode":{"V":{"tab":"v3"}}, + "exploit":{"V":{"tab":"v1"}}, + "exploitation":{"N":{"tab":["n5"]}}, + "exploration":{"N":{"tab":["n1"]}}, + "explore":{"V":{"tab":"v3"}}, + "explosion":{"N":{"tab":["n1"]}}, + "export":{"N":{"tab":["n1"]}, + "V":{"tab":"v1"}}, + "expose":{"V":{"tab":"v3"}}, + "exposure":{"N":{"tab":["n1"]}}, + "express":{"A":{"tab":["a1"]}, + "V":{"tab":"v2"}}, + "expression":{"N":{"tab":["n1"]}}, + "extend":{"V":{"tab":"v1"}}, + "extension":{"N":{"tab":["n1"]}}, + "extensive":{"A":{"tab":["a1"]}}, + "extensively":{"Adv":{"tab":["b1"]}}, + "extent":{"N":{"tab":["n5"]}}, + "external":{"A":{"tab":["a1"]}}, + "extra":{"A":{"tab":["a1"]}}, + "extract":{"N":{"tab":["n1"]}, + "V":{"tab":"v1"}}, + "extraordinary":{"A":{"tab":["a1"]}}, + "extreme":{"A":{"tab":["a1"]}, + "N":{"tab":["n1"]}}, + "extremely":{"Adv":{"tab":["b1"]}}, + "eye":{"N":{"tab":["n1"]}}, + "eyebrow":{"N":{"tab":["n1"]}}, + "fabric":{"N":{"tab":["n1"]}}, + "face":{"N":{"tab":["n1"]}, + "V":{"tab":"v3"}}, + "facilitate":{"V":{"tab":"v3"}}, + "facility":{"N":{"tab":["n3"]}}, + "fact":{"N":{"tab":["n1"]}}, + "faction":{"N":{"tab":["n1"]}}, + "factor":{"N":{"tab":["n1"]}}, + "factory":{"N":{"tab":["n3"]}}, + "faculty":{"N":{"tab":["n3"]}}, + "fade":{"V":{"tab":"v3"}}, + "fail":{"V":{"tab":"v1"}}, + "failure":{"N":{"tab":["n1"]}}, + "faint":{"A":{"tab":["a3"]}}, + "fair":{"A":{"tab":["a3"]}, + "Adv":{"tab":["b1"]}, + "N":{"tab":["n1"]}}, + "fairly":{"Adv":{"tab":["b1"]}}, + "fairy":{"N":{"tab":["n3"]}}, + "faith":{"N":{"tab":["n1"]}}, + "faithful":{"A":{"tab":["a1"]}}, + "fall":{"N":{"tab":["n1"]}, + "V":{"tab":"v76"}}, + "false":{"A":{"tab":["a1"]}}, + "fame":{"N":{"tab":["n5"]}}, + "familiar":{"A":{"tab":["a1"]}}, + "family":{"N":{"tab":["n3"]}}, + "famous":{"A":{"tab":["a1"]}}, + "fan":{"N":{"tab":["n1"]}, + "V":{"tab":"v11"}}, + "fancy":{"V":{"tab":"v4"}}, + "fantastic":{"A":{"tab":["a1"]}}, + "fantasy":{"N":{"tab":["n3"]}}, + "far":{"A":{"tab":["a17"]}, + "Adv":{"tab":["b4"]}}, + "fare":{"N":{"tab":["n1"]}}, + "farm":{"N":{"tab":["n1"]}}, + "farmer":{"N":{"tab":["n1"]}}, + "fascinate":{"V":{"tab":"v3"}}, + "fascinating":{"A":{"tab":["a1"]}}, + "fashion":{"N":{"tab":["n1"]}}, + "fashionable":{"A":{"tab":["a1"]}}, + "fast":{"A":{"tab":["a3"]}, + "Adv":{"tab":["b1"]}}, + "fat":{"A":{"tab":["a11"]}, + "N":{"tab":["n1"]}}, + "fatal":{"A":{"tab":["a1"]}}, + "fate":{"N":{"tab":["n1"]}}, + "father":{"N":{"g":"m", + "tab":["n85"]}}, + "fault":{"N":{"tab":["n1"]}}, + "favour":{"N":{"tab":["n1"]}, + "V":{"tab":"v1"}}, + "favourable":{"A":{"tab":["a1"]}}, + "favourite":{"A":{"tab":["a1"]}, + "N":{"tab":["n1"]}}, + "fear":{"N":{"tab":["n1"]}, + "V":{"tab":"v1"}}, + "feasible":{"A":{"tab":["a1"]}}, + "feast":{"N":{"tab":["n1"]}}, + "feather":{"N":{"tab":["n1"]}}, + "feature":{"N":{"tab":["n1"]}, + "V":{"tab":"v3"}}, + "federal":{"A":{"tab":["a1"]}}, + "federation":{"N":{"tab":["n1"]}}, + "fee":{"N":{"tab":["n1"]}}, + "feed":{"N":{"tab":["n1"]}, + "V":{"tab":"v22"}}, + "feedback":{"N":{"tab":["n5"]}}, + "feel":{"N":{"tab":["n5"]}, + "V":{"tab":"v129"}}, + "feeling":{"N":{"tab":["n1"]}}, + "fellow":{"N":{"tab":["n1"]}}, + "female":{"A":{"tab":["a1"]}, + "N":{"tab":["n1"]}}, + "feminine":{"A":{"tab":["a1"]}}, + "feminist":{"N":{"tab":["n1"]}}, + "fence":{"N":{"tab":["n1"]}}, + "ferry":{"N":{"tab":["n3"]}}, + "fertility":{"N":{"tab":["n5"]}}, + "festival":{"N":{"tab":["n1"]}}, + "fetch":{"V":{"tab":"v2"}}, + "fever":{"N":{"tab":["n1"]}}, + "fibre":{"N":{"tab":["n1"]}}, + "fiction":{"N":{"tab":["n1"]}}, + "field":{"N":{"tab":["n1"]}}, + "fierce":{"A":{"tab":["a2"]}}, + "fiercely":{"Adv":{"tab":["b1"]}}, + "fig":{"N":{"tab":["n1"]}}, + "fight":{"N":{"tab":["n1"]}, + "V":{"tab":"v67"}}, + "fighter":{"N":{"tab":["n1"]}}, + "figure":{"N":{"tab":["n1"]}, + "V":{"tab":"v3"}}, + "file":{"N":{"tab":["n1"]}, + "V":{"tab":"v3"}}, + "fill":{"V":{"tab":"v1"}}, + "film":{"N":{"tab":["n1"]}, + "V":{"tab":"v1"}}, + "filter":{"N":{"tab":["n1"]}, + "V":{"tab":"v1"}}, + "final":{"A":{"tab":["a1"]}, + "N":{"tab":["n1"]}}, + "finally":{"Adv":{"tab":["b1"]}}, + "finance":{"N":{"tab":["n1"]}, + "V":{"tab":"v3"}}, + "financial":{"A":{"tab":["a1"]}}, + "financially":{"Adv":{"tab":["b1"]}}, + "find":{"V":{"tab":"v25"}}, + "finding":{"N":{"tab":["n1"]}}, + "fine":{"A":{"tab":["a2"]}, + "N":{"tab":["n1"]}}, + "finger":{"N":{"tab":["n1"]}}, + "finish":{"N":{"tab":["n2"]}, + "V":{"tab":"v2"}}, + "fire":{"N":{"tab":["n1"]}, + "V":{"tab":"v3"}}, + "firm":{"A":{"tab":["a3"]}, + "N":{"tab":["n1"]}}, + "firmly":{"Adv":{"tab":["b1"]}}, + "firstly":{"Adv":{"tab":["b1"]}}, + "fiscal":{"A":{"tab":["a1"]}}, + "fish":{"N":{"tab":["n2"]}, + "V":{"tab":"v2"}}, + "fisherman":{"N":{"tab":["n7"]}}, + "fishing":{"N":{"tab":["n5"]}}, + "fist":{"N":{"tab":["n1"]}}, + "fit":{"A":{"tab":["a11"]}, + "N":{"tab":["n1"]}, + "V":{"tab":"v14"}}, + "fitness":{"N":{"tab":["n5"]}}, + "fitting":{"N":{"tab":["n1"]}}, + "fix":{"V":{"tab":"v2"}}, + "fixed":{"A":{"tab":["a1"]}}, + "fixture":{"N":{"tab":["n1"]}}, + "flag":{"N":{"tab":["n1"]}}, + "flame":{"N":{"tab":["n1"]}}, + "flash":{"N":{"tab":["n2"]}, + "V":{"tab":"v2"}}, + "flat":{"A":{"tab":["a11"]}, + "N":{"tab":["n1"]}}, + "flavour":{"N":{"tab":["n1"]}}, + "flee":{"V":{"tab":"v73"}}, + "fleet":{"N":{"tab":["n1"]}}, + "flesh":{"N":{"tab":["n5"]}}, + "flexibility":{"N":{"tab":["n5"]}}, + "flexible":{"A":{"tab":["a1"]}}, + "flick":{"V":{"tab":"v1"}}, + "flight":{"N":{"tab":["n1"]}}, + "fling":{"V":{"tab":"v21"}}, + "float":{"V":{"tab":"v1"}}, + "flock":{"N":{"tab":["n1"]}}, + "flood":{"N":{"tab":["n1"]}, + "V":{"tab":"v1"}}, + "floor":{"N":{"tab":["n1"]}}, + "flour":{"N":{"tab":["n5"]}}, + "flourish":{"V":{"tab":"v2"}}, + "flow":{"N":{"tab":["n5"]}, + "V":{"tab":"v1"}}, + "flower":{"N":{"tab":["n1"]}}, + "fluctuation":{"N":{"tab":["n1"]}}, + "fluid":{"N":{"tab":["n1"]}}, + "flush":{"V":{"tab":"v2"}}, + "fly":{"N":{"tab":["n3"]}, + "V":{"tab":"v80"}}, + "focus":{"N":{"tab":["n2"]}, + "V":{"tab":"v172"}}, + "fog":{"N":{"tab":["n1"]}}, + "fold":{"N":{"tab":["n1"]}, + "V":{"tab":"v1"}}, + "folk":{"N":{"tab":["n1"]}}, + "follow":{"V":{"tab":"v1"}}, + "follower":{"N":{"tab":["n1"]}}, + "following":{"A":{"tab":["a1"]}}, + "fond":{"A":{"tab":["a3"]}}, + "food":{"N":{"tab":["n1"]}}, + "fool":{"N":{"tab":["n1"]}, + "V":{"tab":"v1"}}, + "foolish":{"A":{"tab":["a1"]}}, + "foot":{"N":{"tab":["n19"]}}, + "football":{"N":{"tab":["n1"]}}, + "footstep":{"N":{"tab":["n1"]}}, + "for":{"P":{"tab":["pp"]}}, + "forbid":{"V":{"tab":"v118"}}, + "force":{"N":{"tab":["n1"]}, + "V":{"tab":"v3"}}, + "forecast":{"N":{"tab":["n1"]}, + "V":{"tab":"v58"}}, + "forehead":{"N":{"tab":["n1"]}}, + "foreign":{"A":{"tab":["a1"]}}, + "foreigner":{"N":{"tab":["n1"]}}, + "forest":{"N":{"tab":["n1"]}}, + "forestry":{"N":{"tab":["n5"]}}, + "forever":{"Adv":{"tab":["b1"]}}, + "forge":{"V":{"tab":"v3"}}, + "forget":{"V":{"tab":"v125"}}, + "forgive":{"V":{"tab":"v43"}}, + "fork":{"N":{"tab":["n1"]}}, + "form":{"N":{"tab":["n1"]}, + "V":{"tab":"v1"}}, + "formal":{"A":{"tab":["a1"]}}, + "formally":{"Adv":{"tab":["b1"]}}, + "format":{"N":{"tab":["n1"]}}, + "formation":{"N":{"tab":["n1"]}}, + "formerly":{"Adv":{"tab":["b1"]}}, + "formidable":{"A":{"tab":["a1"]}}, + "formula":{"N":{"tab":["n1"]}}, + "formulate":{"V":{"tab":"v3"}}, + "formulation":{"N":{"tab":["n1"]}}, + "forth":{"Adv":{"tab":["b1"]}}, + "forthcoming":{"A":{"tab":["a1"]}}, + "fortnight":{"N":{"tab":["n1"]}}, + "fortunate":{"A":{"tab":["a1"]}}, + "fortunately":{"Adv":{"tab":["b1"]}}, + "fortune":{"N":{"tab":["n1"]}}, + "forum":{"N":{"tab":["n1"]}}, + "forward":{"A":{"tab":["a1"]}, + "Adv":{"tab":["b1"]}}, + "forwards":{"Adv":{"tab":["b1"]}}, + "fossil":{"N":{"tab":["n1"]}}, + "foster":{"V":{"tab":"v1"}}, + "found":{"V":{"tab":"v1"}}, + "foundation":{"N":{"tab":["n1"]}}, + "founder":{"N":{"tab":["n1"]}}, + "fountain":{"N":{"tab":["n1"]}}, + "fox":{"N":{"tab":["n2"]}}, + "fraction":{"N":{"tab":["n1"]}}, + "fragile":{"A":{"tab":["a1"]}}, + "fragment":{"N":{"tab":["n1"]}}, + "frame":{"N":{"tab":["n1"]}, + "V":{"tab":"v3"}}, + "framework":{"N":{"tab":["n1"]}}, + "franchise":{"N":{"tab":["n1"]}}, + "frankly":{"Adv":{"tab":["b1"]}}, + "fraud":{"N":{"tab":["n1"]}}, + "free":{"A":{"tab":["a2"]}, + "V":{"tab":"v16"}}, + "freedom":{"N":{"tab":["n1"]}}, + "freely":{"Adv":{"tab":["b1"]}}, + "freeze":{"V":{"tab":"v49"}}, + "freight":{"N":{"tab":["n5"]}}, + "frequency":{"N":{"tab":["n3"]}}, + "frequent":{"A":{"tab":["a1"]}}, + "frequently":{"Adv":{"tab":["b1"]}}, + "fresh":{"A":{"tab":["a3"]}}, + "fridge":{"N":{"tab":["n1"]}}, + "friend":{"N":{"tab":["n1"]}}, + "friendly":{"A":{"tab":["a4"]}}, + "friendship":{"N":{"tab":["n1"]}}, + "frighten":{"V":{"tab":"v1"}}, + "frightened":{"A":{"tab":["a1"]}}, + "fringe":{"N":{"tab":["n1"]}}, + "frog":{"N":{"tab":["n1"]}}, + "from":{"P":{"tab":["pp"]}}, + "front":{"N":{"tab":["n1"]}}, + "frontier":{"N":{"tab":["n1"]}}, + "frown":{"V":{"tab":"v1"}}, + "fruit":{"N":{"tab":["n1"]}}, + "frustrate":{"V":{"tab":"v3"}}, + "frustration":{"N":{"tab":["n1"]}}, + "fuck":{"V":{"tab":"v1"}}, + "fucking":{"A":{"tab":["a1"]}}, + "fuel":{"N":{"tab":["n1"]}}, + "fulfill":{"V":{"tab":"v181"}}, + "full":{"A":{"tab":["a3"]}}, + "full-time":{"A":{"tab":["a1"]}}, + "fully":{"Adv":{"tab":["b1"]}}, + "fun":{"N":{"tab":["n5"]}}, + "function":{"N":{"tab":["n1"]}, + "V":{"tab":"v1"}}, + "functional":{"A":{"tab":["a1"]}}, + "fund":{"N":{"tab":["n1"]}, + "V":{"tab":"v1"}}, + "fundamental":{"A":{"tab":["a1"]}}, + "fundamentally":{"Adv":{"tab":["b1"]}}, + "funeral":{"N":{"tab":["n1"]}}, + "funny":{"A":{"tab":["a4"]}}, + "fur":{"N":{"tab":["n1"]}}, + "furious":{"A":{"tab":["a1"]}}, + "furnish":{"V":{"tab":"v2"}}, + "furniture":{"N":{"tab":["n5"]}}, + "furthermore":{"Adv":{"tab":["b1"]}}, + "fury":{"N":{"tab":["n3"]}}, + "fusion":{"N":{"tab":["n1"]}}, + "fuss":{"N":{"tab":["n2"]}}, + "future":{"A":{"tab":["a1"]}, + "N":{"tab":["n1"]}}, + "gain":{"N":{"tab":["n1"]}, + "V":{"tab":"v1"}}, + "galaxy":{"N":{"tab":["n3"]}}, + "gall":{"N":{"tab":["n1"]}}, + "gallery":{"N":{"tab":["n3"]}}, + "gallon":{"N":{"tab":["n1"]}}, + "game":{"N":{"tab":["n1"]}}, + "gang":{"N":{"tab":["n1"]}}, + "gap":{"N":{"tab":["n1"]}}, + "garage":{"N":{"tab":["n1"]}}, + "garden":{"N":{"tab":["n1"]}}, + "gardener":{"N":{"tab":["n1"]}}, + "garlic":{"N":{"tab":["n5"]}}, + "garment":{"N":{"tab":["n1"]}}, + "gas":{"N":{"tab":["n2"]}}, + "gasp":{"V":{"tab":"v1"}}, + "gastric":{"A":{"tab":["a1"]}}, + "gate":{"N":{"tab":["n1"]}}, + "gather":{"V":{"tab":"v1"}}, + "gathering":{"N":{"tab":["n1"]}}, + "gay":{"A":{"tab":["a3"]}}, + "gaze":{"N":{"tab":["n5"]}, + "V":{"tab":"v3"}}, + "gear":{"N":{"tab":["n1"]}}, + "gender":{"N":{"tab":["n1"]}}, + "gene":{"N":{"tab":["n1"]}}, + "general":{"A":{"tab":["a1"]}, + "N":{"tab":["n1"]}}, + "generally":{"Adv":{"tab":["b1"]}}, + "generate":{"V":{"tab":"v3"}}, + "generation":{"N":{"tab":["n1"]}}, + "generous":{"A":{"tab":["a1"]}}, + "genetic":{"A":{"tab":["a1"]}}, + "genius":{"N":{"tab":["n2"]}}, + "gentle":{"A":{"tab":["a2"]}}, + "gentleman":{"N":{"tab":["n7"]}}, + "gently":{"Adv":{"tab":["b1"]}}, + "genuine":{"A":{"tab":["a1"]}}, + "genuinely":{"Adv":{"tab":["b1"]}}, + "geographical":{"A":{"tab":["a1"]}}, + "geography":{"N":{"tab":["n5"]}}, + "geological":{"A":{"tab":["a1"]}}, + "gesture":{"N":{"tab":["n1"]}}, + "get":{"V":{"tab":"v125"}}, + "ghost":{"N":{"tab":["n1"]}}, + "giant":{"N":{"tab":["n1"]}}, + "gift":{"N":{"tab":["n1"]}}, + "gig":{"N":{"tab":["n1"]}}, + "girl":{"N":{"g":"f", + "tab":["n87"]}}, + "girlfriend":{"N":{"tab":["n1"]}}, + "give":{"V":{"tab":"v43"}}, + "glad":{"A":{"tab":["a6"]}}, + "glance":{"N":{"tab":["n1"]}, + "V":{"tab":"v3"}}, + "glare":{"V":{"tab":"v3"}}, + "glass":{"N":{"tab":["n2"]}}, + "glimpse":{"N":{"tab":["n1"]}}, + "global":{"A":{"tab":["a1"]}}, + "gloom":{"N":{"tab":["n1"]}}, + "glorious":{"A":{"tab":["a1"]}}, + "glory":{"N":{"tab":["n3"]}}, + "glove":{"N":{"tab":["n1"]}}, + "glow":{"N":{"tab":["n5"]}, + "V":{"tab":"v1"}}, + "go":{"N":{"tab":["n2"]}, + "V":{"tab":"v122"}}, + "goal":{"N":{"tab":["n1"]}}, + "goalkeeper":{"N":{"tab":["n1"]}}, + "goat":{"N":{"tab":["n1"]}}, + "god":{"N":{"g":"m", + "tab":["n85"]}}, + "gold":{"N":{"tab":["n5"]}}, + "golden":{"A":{"tab":["a1"]}}, + "golf":{"N":{"tab":["n5"]}}, + "good":{"A":{"tab":["a15"]}, + "N":{"tab":["n5"]}}, + "goodness":{"N":{"tab":["n5"]}}, + "gospel":{"N":{"tab":["n1"]}}, + "gossip":{"N":{"tab":["n1"]}}, + "govern":{"V":{"tab":"v1"}}, + "government":{"N":{"tab":["n1"]}}, + "governor":{"N":{"tab":["n1"]}}, + "gown":{"N":{"tab":["n1"]}}, + "grab":{"V":{"tab":"v5"}}, + "grace":{"N":{"tab":["n1"]}}, + "grade":{"N":{"tab":["n1"]}}, + "gradual":{"A":{"tab":["a1"]}}, + "gradually":{"Adv":{"tab":["b1"]}}, + "graduate":{"N":{"tab":["n1"]}, + "V":{"tab":"v3"}}, + "grain":{"N":{"tab":["n1"]}}, + "grammar":{"N":{"tab":["n1"]}}, + "grammatical":{"A":{"tab":["a1"]}}, + "grand":{"A":{"tab":["a3"]}}, + "grandfather":{"N":{"g":"m", + "tab":["n85"]}}, + "grandmother":{"N":{"g":"f", + "tab":["n87"]}}, + "grant":{"N":{"tab":["n1"]}, + "V":{"tab":"v1"}}, + "graph":{"N":{"tab":["n1"]}}, + "graphics":{"N":{"tab":["n5"]}}, + "grasp":{"N":{"tab":["n1"]}, + "V":{"tab":"v1"}}, + "grass":{"N":{"tab":["n2"]}}, + "grateful":{"A":{"tab":["a1"]}}, + "grave":{"A":{"tab":["a2"]}, + "N":{"tab":["n1"]}}, + "gravel":{"N":{"tab":["n5"]}}, + "gravity":{"N":{"tab":["n5"]}}, + "great":{"A":{"tab":["a3"]}}, + "greatly":{"Adv":{"tab":["b1"]}}, + "green":{"A":{"tab":["a3"]}, + "N":{"tab":["n1"]}}, + "greenhouse":{"N":{"tab":["n1"]}}, + "greet":{"V":{"tab":"v1"}}, + "greeting":{"N":{"tab":["n1"]}}, + "grey":{"A":{"tab":["a3"]}}, + "grid":{"N":{"tab":["n1"]}}, + "grief":{"N":{"tab":["n1"]}}, + "grim":{"A":{"tab":["a9"]}}, + "grin":{"N":{"tab":["n1"]}, + "V":{"tab":"v11"}}, + "grind":{"V":{"tab":"v25"}}, + "grip":{"N":{"tab":["n1"]}, + "V":{"tab":"v12"}}, + "groan":{"V":{"tab":"v1"}}, + "gross":{"A":{"tab":["a1"]}}, + "ground":{"N":{"tab":["n1"]}}, + "group":{"N":{"tab":["n1"]}, + "V":{"tab":"v1"}}, + "grow":{"V":{"tab":"v27"}}, + "growth":{"N":{"tab":["n1"]}}, + "guarantee":{"N":{"tab":["n1"]}, + "V":{"tab":"v16"}}, + "guard":{"N":{"tab":["n1"]}, + "V":{"tab":"v1"}}, + "guardian":{"N":{"tab":["n1"]}}, + "guerrilla":{"N":{"tab":["n1"]}}, + "guess":{"N":{"tab":["n2"]}, + "V":{"tab":"v2"}}, + "guest":{"N":{"tab":["n1"]}}, + "guidance":{"N":{"tab":["n5"]}}, + "guide":{"N":{"tab":["n1"]}, + "V":{"tab":"v3"}}, + "guideline":{"N":{"tab":["n1"]}}, + "guild":{"N":{"tab":["n1"]}}, + "guilt":{"N":{"tab":["n5"]}}, + "guilty":{"A":{"tab":["a4"]}}, + "guitar":{"N":{"tab":["n1"]}}, + "gun":{"N":{"tab":["n1"]}}, + "gut":{"N":{"tab":["n1"]}}, + "guy":{"N":{"tab":["n1"]}}, + "habit":{"N":{"tab":["n1"]}}, + "habitat":{"N":{"tab":["n1"]}}, + "hair":{"N":{"tab":["n1"]}}, + "half":{"Adv":{"tab":["b1"]}, + "N":{"tab":["n9"]}}, + "hall":{"N":{"tab":["n1"]}}, + "halt":{"N":{"tab":["n1"]}, + "V":{"tab":"v1"}}, + "ham":{"N":{"tab":["n1"]}}, + "hammer":{"N":{"tab":["n1"]}}, + "hand":{"N":{"tab":["n1"]}, + "V":{"tab":"v1"}}, + "handful":{"N":{"tab":["n1"]}}, + "handicap":{"N":{"tab":["n1"]}, + "V":{"tab":"v12"}}, + "handle":{"N":{"tab":["n1"]}, + "V":{"tab":"v3"}}, + "handsome":{"A":{"tab":["a1"]}}, + "handy":{"A":{"tab":["a4"]}}, + "hang":{"V":{"tab":"v160"}}, + "happen":{"V":{"tab":"v1"}}, + "happily":{"Adv":{"tab":["b1"]}}, + "happiness":{"N":{"tab":["n5"]}}, + "happy":{"A":{"tab":["a4"]}}, + "harbour":{"N":{"tab":["n1"]}}, + "hard":{"A":{"tab":["a3"]}, + "Adv":{"tab":["b1"]}}, + "hardly":{"Adv":{"tab":["b1"]}}, + "hardship":{"N":{"tab":["n1"]}}, + "hardware":{"N":{"tab":["n5"]}}, + "harm":{"N":{"tab":["n5"]}, + "V":{"tab":"v1"}}, + "harmful":{"A":{"tab":["a1"]}}, + "harmony":{"N":{"tab":["n3"]}}, + "harsh":{"A":{"tab":["a3"]}}, + "harvest":{"N":{"tab":["n1"]}}, + "hastily":{"Adv":{"tab":["b1"]}}, + "hat":{"N":{"tab":["n1"]}}, + "hate":{"V":{"tab":"v3"}}, + "hatred":{"N":{"tab":["n1"]}}, + "haul":{"V":{"tab":"v1"}}, + "haunt":{"V":{"tab":"v1"}}, + "have":{"V":{"tab":"v83"}}, + "hay":{"N":{"tab":["n5"]}}, + "hazard":{"N":{"tab":["n1"]}}, + "head":{"N":{"tab":["n1"]}, + "V":{"tab":"v1"}}, + "heading":{"N":{"tab":["n1"]}}, + "headline":{"N":{"tab":["n1"]}}, + "headmaster":{"N":{"tab":["n1"]}}, + "headquarters":{"N":{"tab":["n6"]}}, + "heal":{"V":{"tab":"v1"}}, + "health":{"N":{"tab":["n5"]}}, + "healthy":{"A":{"tab":["a4"]}}, + "heap":{"N":{"tab":["n1"]}}, + "hear":{"V":{"tab":"v16"}}, + "hearing":{"N":{"tab":["n1"]}}, + "heart":{"N":{"tab":["n1"]}}, + "heat":{"N":{"tab":["n1"]}, + "V":{"tab":"v1"}}, + "heating":{"N":{"tab":["n5"]}}, + "heaven":{"N":{"tab":["n1"]}}, + "heavily":{"Adv":{"tab":["b1"]}}, + "heavy":{"A":{"tab":["a4"]}}, + "hectare":{"N":{"tab":["n1"]}}, + "hedge":{"N":{"tab":["n1"]}}, + "heel":{"N":{"tab":["n1"]}}, + "height":{"N":{"tab":["n1"]}}, + "heir":{"N":{"g":"m", + "hAn":1, + "tab":["n85"]}}, + "helicopter":{"N":{"tab":["n1"]}}, + "hell":{"N":{"tab":["n1"]}}, + "helmet":{"N":{"tab":["n1"]}}, + "help":{"N":{"tab":["n1"]}, + "V":{"tab":"v1"}}, + "helpful":{"A":{"tab":["a1"]}}, + "helpless":{"A":{"tab":["a1"]}}, + "hemisphere":{"N":{"tab":["n1"]}}, + "hen":{"N":{"tab":["n1"]}}, + "hence":{"Adv":{"tab":["b1"]}}, + "herb":{"N":{"hAn":1, + "tab":["n1"]}}, + "herd":{"N":{"tab":["n1"]}}, + "here":{"Adv":{"tab":["b1"]}}, + "heritage":{"N":{"tab":["n1"]}}, + "hero":{"N":{"g":"m", + "tab":["n86"]}}, + "heroin":{"N":{"tab":["n5"]}}, + "hesitate":{"V":{"tab":"v3"}}, + "hide":{"V":{"tab":"v146"}}, + "hierarchy":{"N":{"tab":["n3"]}}, + "high":{"A":{"tab":["a3"]}, + "Adv":{"tab":["b1"]}}, + "highlight":{"N":{"tab":["n1"]}, + "V":{"tab":"v1"}}, + "highly":{"Adv":{"tab":["b1"]}}, + "highway":{"N":{"tab":["n1"]}}, + "hill":{"N":{"tab":["n1"]}}, + "hint":{"N":{"tab":["n1"]}, + "V":{"tab":"v1"}}, + "hip":{"N":{"tab":["n1"]}}, + "hire":{"N":{"tab":["n5"]}, + "V":{"tab":"v3"}}, + "historian":{"N":{"tab":["n1"]}}, + "historic":{"A":{"tab":["a1"]}}, + "historical":{"A":{"tab":["a1"]}}, + "historically":{"Adv":{"tab":["b1"]}}, + "history":{"N":{"tab":["n3"]}}, + "hit":{"N":{"tab":["n1"]}, + "V":{"tab":"v17"}}, + "hitherto":{"Adv":{"tab":["b1"]}}, + "hobby":{"N":{"tab":["n3"]}}, + "hold":{"N":{"tab":["n1"]}, + "V":{"tab":"v34"}}, + "holder":{"N":{"tab":["n1"]}}, + "holding":{"N":{"tab":["n1"]}}, + "hole":{"N":{"tab":["n1"]}}, + "holiday":{"N":{"tab":["n1"]}}, + "holly":{"N":{"tab":["n5"]}}, + "holy":{"A":{"tab":["a4"]}}, + "home":{"Adv":{"tab":["b1"]}, + "N":{"tab":["n1"]}}, + "homeless":{"A":{"tab":["a1"]}}, + "homework":{"N":{"tab":["n5"]}}, + "homosexual":{"A":{"tab":["a1"]}}, + "honest":{"A":{"hAn":1, + "tab":["a1"]}}, + "honestly":{"Adv":{"tab":["b1"]}}, + "honey":{"N":{"tab":["n1"]}}, + "honour":{"N":{"hAn":1, + "tab":["n1"]}, + "V":{"tab":"v1"}}, + "honourable":{"A":{"hAn":1, + "tab":["a1"]}}, + "hook":{"N":{"tab":["n1"]}, + "V":{"tab":"v1"}}, + "hope":{"N":{"tab":["n1"]}, + "V":{"tab":"v3"}}, + "hopefully":{"Adv":{"tab":["b1"]}}, + "horizon":{"N":{"tab":["n1"]}}, + "horizontal":{"A":{"tab":["a1"]}}, + "horn":{"N":{"tab":["n1"]}}, + "horrible":{"A":{"tab":["a1"]}}, + "horror":{"N":{"tab":["n1"]}}, + "horse":{"N":{"tab":["n1"]}}, + "hospital":{"N":{"tab":["n1"]}}, + "hospitality":{"N":{"tab":["n5"]}}, + "host":{"N":{"g":"m", + "tab":["n85"]}, + "V":{"tab":"v1"}}, + "hostage":{"N":{"tab":["n1"]}}, + "hostile":{"A":{"tab":["a1"]}}, + "hostility":{"N":{"tab":["n3"]}}, + "hot":{"A":{"tab":["a11"]}}, + "hotel":{"N":{"tab":["n1"]}}, + "hour":{"N":{"hAn":1, + "tab":["n1"]}}, + "house":{"N":{"tab":["n1"]}, + "V":{"tab":"v3"}}, + "household":{"N":{"tab":["n1"]}}, + "housewife":{"N":{"tab":["n10"]}}, + "housing":{"N":{"tab":["n5"]}}, + "hover":{"V":{"tab":"v1"}}, + "how":{"Adv":{"tab":["b1"]}}, + "however":{"Adv":{"tab":["b1"]}}, + "hug":{"V":{"tab":"v7"}}, + "huge":{"A":{"tab":["a1"]}}, + "human":{"A":{"tab":["a1"]}, + "N":{"tab":["n1"]}}, + "humanity":{"N":{"tab":["n5"]}}, + "humble":{"A":{"tab":["a2"]}}, + "humour":{"N":{"tab":["n1"]}}, + "hunger":{"N":{"tab":["n5"]}}, + "hungry":{"A":{"tab":["a4"]}}, + "hunt":{"N":{"tab":["n1"]}, + "V":{"tab":"v1"}}, + "hunter":{"N":{"tab":["n1"]}}, + "hunting":{"N":{"tab":["n5"]}}, + "hurry":{"N":{"tab":["n3"]}, + "V":{"tab":"v4"}}, + "hurt":{"V":{"tab":"v18"}}, + "husband":{"N":{"g":"m", + "tab":["n85"]}}, + "hut":{"N":{"tab":["n1"]}}, + "hydrogen":{"N":{"tab":["n5"]}}, + "hypothesis":{"N":{"tab":["n8"]}}, + "ice":{"N":{"tab":["n1"]}}, + "idea":{"N":{"tab":["n1"]}}, + "ideal":{"A":{"tab":["a1"]}, + "N":{"tab":["n1"]}}, + "ideally":{"Adv":{"tab":["b1"]}}, + "identical":{"A":{"tab":["a1"]}}, + "identification":{"N":{"tab":["n5"]}}, + "identify":{"V":{"tab":"v4"}}, + "identity":{"N":{"tab":["n3"]}}, + "ideological":{"A":{"tab":["a1"]}}, + "ideology":{"N":{"tab":["n3"]}}, + "ignorance":{"N":{"tab":["n5"]}}, + "ignore":{"V":{"tab":"v3"}}, + "ill":{"A":{"tab":["a1"]}, + "Adv":{"tab":["b1"]}}, + "illegal":{"A":{"tab":["a1"]}}, + "illness":{"N":{"tab":["n2"]}}, + "illuminate":{"V":{"tab":"v3"}}, + "illusion":{"N":{"tab":["n1"]}}, + "illustrate":{"V":{"tab":"v3"}}, + "illustration":{"N":{"tab":["n1"]}}, + "image":{"N":{"tab":["n1"]}}, + "imagination":{"N":{"tab":["n1"]}}, + "imaginative":{"A":{"tab":["a1"]}}, + "imagine":{"V":{"tab":"v3"}}, + "immediate":{"A":{"tab":["a1"]}}, + "immediately":{"Adv":{"tab":["b1"]}}, + "immense":{"A":{"tab":["a1"]}}, + "immigrant":{"N":{"tab":["n1"]}}, + "immigration":{"N":{"tab":["n1"]}}, + "imminent":{"A":{"tab":["a1"]}}, + "immune":{"A":{"tab":["a1"]}}, + "impact":{"N":{"tab":["n1"]}}, + "imperial":{"A":{"tab":["a1"]}}, + "implement":{"V":{"tab":"v1"}}, + "implementation":{"N":{"tab":["n1"]}}, + "implication":{"N":{"tab":["n1"]}}, + "implicit":{"A":{"tab":["a1"]}}, + "imply":{"V":{"tab":"v4"}}, + "import":{"N":{"tab":["n1"]}, + "V":{"tab":"v1"}}, + "importance":{"N":{"tab":["n5"]}}, + "important":{"A":{"tab":["a1"]}}, + "importantly":{"Adv":{"tab":["b1"]}}, + "impose":{"V":{"tab":"v3"}}, + "impossible":{"A":{"tab":["a1"]}}, + "impress":{"V":{"tab":"v2"}}, + "impression":{"N":{"tab":["n1"]}}, + "impressive":{"A":{"tab":["a1"]}}, + "imprison":{"V":{"tab":"v1"}}, + "imprisonment":{"N":{"tab":["n5"]}}, + "improve":{"V":{"tab":"v3"}}, + "improvement":{"N":{"tab":["n1"]}}, + "impulse":{"N":{"tab":["n1"]}}, + "in":{"Adv":{"tab":["b1"]}, + "P":{"tab":["pp"]}}, + "inability":{"N":{"tab":["n5"]}}, + "inadequate":{"A":{"tab":["a1"]}}, + "inappropriate":{"A":{"tab":["a1"]}}, + "incapable":{"A":{"tab":["a1"]}}, + "incentive":{"N":{"tab":["n1"]}}, + "inch":{"N":{"tab":["n2"]}}, + "incidence":{"N":{"tab":["n1"]}}, + "incident":{"N":{"tab":["n1"]}}, + "incidentally":{"Adv":{"tab":["b1"]}}, + "include":{"V":{"tab":"v3"}}, + "inclusion":{"N":{"tab":["n5"]}}, + "income":{"N":{"tab":["n1"]}}, + "incorporate":{"V":{"tab":"v3"}}, + "increase":{"N":{"tab":["n1"]}, + "V":{"tab":"v3"}}, + "increasingly":{"Adv":{"tab":["b1"]}}, + "incredible":{"A":{"tab":["a1"]}}, + "incredibly":{"Adv":{"tab":["b1"]}}, + "incur":{"V":{"tab":"v13"}}, + "indeed":{"Adv":{"tab":["b1"]}}, + "independence":{"N":{"tab":["n5"]}}, + "independent":{"A":{"tab":["a1"]}}, + "independently":{"Adv":{"tab":["b1"]}}, + "index":{"N":{"tab":["n2"]}}, + "indicate":{"V":{"tab":"v3"}}, + "indication":{"N":{"tab":["n1"]}}, + "indicator":{"N":{"tab":["n1"]}}, + "indigenous":{"A":{"tab":["a1"]}}, + "indirect":{"A":{"tab":["a1"]}}, + "indirectly":{"Adv":{"tab":["b1"]}}, + "individual":{"A":{"tab":["a1"]}, + "N":{"tab":["n1"]}}, + "individually":{"Adv":{"tab":["b1"]}}, + "indoor":{"A":{"tab":["a1"]}}, + "induce":{"V":{"tab":"v3"}}, + "indulge":{"V":{"tab":"v3"}}, + "industrial":{"A":{"tab":["a1"]}}, + "industry":{"N":{"tab":["n3"]}}, + "inequality":{"N":{"tab":["n3"]}}, + "inevitable":{"A":{"tab":["a1"]}}, + "inevitably":{"Adv":{"tab":["b1"]}}, + "infant":{"N":{"tab":["n1"]}}, + "infect":{"V":{"tab":"v1"}}, + "infection":{"N":{"tab":["n1"]}}, + "infinite":{"A":{"tab":["a1"]}}, + "inflation":{"N":{"tab":["n5"]}}, + "inflict":{"V":{"tab":"v1"}}, + "influence":{"N":{"tab":["n1"]}, + "V":{"tab":"v3"}}, + "influential":{"A":{"tab":["a1"]}}, + "inform":{"V":{"tab":"v1"}}, + "informal":{"A":{"tab":["a1"]}}, + "information":{"N":{"tab":["n5"]}}, + "infrastructure":{"N":{"tab":["n1"]}}, + "ingredient":{"N":{"tab":["n1"]}}, + "inhabitant":{"N":{"tab":["n1"]}}, + "inherent":{"A":{"tab":["a1"]}}, + "inherit":{"V":{"tab":"v1"}}, + "inheritance":{"N":{"tab":["n1"]}}, + "inhibit":{"V":{"tab":"v1"}}, + "inhibition":{"N":{"tab":["n1"]}}, + "initial":{"A":{"tab":["a1"]}, + "N":{"tab":["n1"]}}, + "initially":{"Adv":{"tab":["b1"]}}, + "initiate":{"V":{"tab":"v3"}}, + "initiative":{"N":{"tab":["n1"]}}, + "inject":{"V":{"tab":"v1"}}, + "injection":{"N":{"tab":["n1"]}}, + "injunction":{"N":{"tab":["n1"]}}, + "injure":{"V":{"tab":"v3"}}, + "injured":{"A":{"tab":["a1"]}}, + "injury":{"N":{"tab":["n3"]}}, + "inland":{"A":{"tab":["a1"]}}, + "inn":{"N":{"tab":["n1"]}}, + "inner":{"A":{"tab":["a1"]}}, + "innocence":{"N":{"tab":["n5"]}}, + "innocent":{"A":{"tab":["a1"]}}, + "innovation":{"N":{"tab":["n1"]}}, + "innovative":{"A":{"tab":["a1"]}}, + "input":{"N":{"tab":["n1"]}}, + "inquest":{"N":{"tab":["n1"]}}, + "inquiry":{"N":{"tab":["n3"]}}, + "insect":{"N":{"tab":["n1"]}}, + "insert":{"V":{"tab":"v1"}}, + "inside":{"Adv":{"tab":["b1"]}, + "N":{"tab":["n1"]}, + "P":{"tab":["pp"]}}, + "insider":{"N":{"tab":["n1"]}}, + "insight":{"N":{"tab":["n1"]}}, + "insist":{"V":{"tab":"v1"}}, + "insistence":{"N":{"tab":["n5"]}}, + "inspect":{"V":{"tab":"v1"}}, + "inspection":{"N":{"tab":["n1"]}}, + "inspector":{"N":{"tab":["n1"]}}, + "inspiration":{"N":{"tab":["n1"]}}, + "inspire":{"V":{"tab":"v3"}}, + "instal":{"V":{"tab":"v9"}}, + "install":{"V":{"tab":"v1"}}, + "installation":{"N":{"tab":["n1"]}}, + "instance":{"N":{"tab":["n1"]}}, + "instant":{"A":{"tab":["a1"]}, + "N":{"tab":["n1"]}}, + "instantly":{"Adv":{"tab":["b1"]}}, + "instead":{"Adv":{"tab":["b1"]}}, + "instinct":{"N":{"tab":["n1"]}}, + "institute":{"N":{"tab":["n1"]}}, + "institution":{"N":{"tab":["n1"]}}, + "institutional":{"A":{"tab":["a1"]}}, + "instruct":{"V":{"tab":"v1"}}, + "instruction":{"N":{"tab":["n1"]}}, + "instructor":{"N":{"tab":["n1"]}}, + "instrument":{"N":{"tab":["n1"]}}, + "instrumental":{"A":{"tab":["a1"]}}, + "insufficient":{"A":{"tab":["a1"]}}, + "insurance":{"N":{"tab":["n1"]}}, + "insure":{"V":{"tab":"v3"}}, + "intact":{"A":{"tab":["a1"]}}, + "intake":{"N":{"tab":["n1"]}}, + "integral":{"A":{"tab":["a1"]}}, + "integrate":{"V":{"tab":"v3"}}, + "integration":{"N":{"tab":["n5"]}}, + "integrity":{"N":{"tab":["n5"]}}, + "intellectual":{"A":{"tab":["a1"]}, + "N":{"tab":["n1"]}}, + "intelligence":{"N":{"tab":["n5"]}}, + "intelligent":{"A":{"tab":["a1"]}}, + "intend":{"V":{"tab":"v1"}}, + "intense":{"A":{"tab":["a1"]}}, + "intensify":{"V":{"tab":"v4"}}, + "intensity":{"N":{"tab":["n3"]}}, + "intensive":{"A":{"tab":["a1"]}}, + "intent":{"A":{"tab":["a1"]}, + "N":{"tab":["n1"]}}, + "intention":{"N":{"tab":["n1"]}}, + "interaction":{"N":{"tab":["n1"]}}, + "interactive":{"A":{"tab":["a1"]}}, + "intercourse":{"N":{"tab":["n5"]}}, + "interest":{"N":{"tab":["n1"]}, + "V":{"tab":"v1"}}, + "interested":{"A":{"tab":["a1"]}}, + "interesting":{"A":{"tab":["a1"]}}, + "interface":{"N":{"tab":["n1"]}}, + "interfere":{"V":{"tab":"v3"}}, + "interference":{"N":{"tab":["n5"]}}, + "interior":{"A":{"tab":["a1"]}, + "N":{"tab":["n1"]}}, + "intermediate":{"A":{"tab":["a1"]}}, + "internal":{"A":{"tab":["a1"]}}, + "international":{"A":{"tab":["a1"]}}, + "interpret":{"V":{"tab":"v1"}}, + "interpretation":{"N":{"tab":["n1"]}}, + "interrupt":{"V":{"tab":"v1"}}, + "interval":{"N":{"tab":["n1"]}}, + "intervene":{"V":{"tab":"v3"}}, + "intervention":{"N":{"tab":["n1"]}}, + "interview":{"N":{"tab":["n1"]}, + "V":{"tab":"v1"}}, + "intimate":{"A":{"tab":["a1"]}}, + "into":{"P":{"tab":["pp"]}}, + "introduce":{"V":{"tab":"v3"}}, + "introduction":{"N":{"tab":["n1"]}}, + "invade":{"V":{"tab":"v3"}}, + "invaluable":{"A":{"tab":["a1"]}}, + "invariably":{"Adv":{"tab":["b1"]}}, + "invasion":{"N":{"tab":["n1"]}}, + "invent":{"V":{"tab":"v1"}}, + "invention":{"N":{"tab":["n1"]}}, + "invest":{"V":{"tab":"v1"}}, + "investigate":{"V":{"tab":"v3"}}, + "investigation":{"N":{"tab":["n1"]}}, + "investigator":{"N":{"tab":["n1"]}}, + "investment":{"N":{"tab":["n1"]}}, + "investor":{"N":{"tab":["n1"]}}, + "invisible":{"A":{"tab":["a1"]}}, + "invitation":{"N":{"tab":["n1"]}}, + "invite":{"V":{"tab":"v3"}}, + "invoke":{"V":{"tab":"v3"}}, + "involve":{"V":{"tab":"v3"}}, + "involved":{"A":{"tab":["a1"]}}, + "involvement":{"N":{"tab":["n1"]}}, + "ion":{"N":{"tab":["n1"]}}, + "iron":{"N":{"tab":["n1"]}}, + "ironically":{"Adv":{"tab":["b1"]}}, + "irony":{"N":{"tab":["n3"]}}, + "irrelevant":{"A":{"tab":["a1"]}}, + "irrespective":{"A":{"tab":["a1"]}}, + "island":{"N":{"tab":["n1"]}}, + "isolation":{"N":{"tab":["n5"]}}, + "issue":{"N":{"tab":["n1"]}, + "V":{"tab":"v3"}}, + "item":{"N":{"tab":["n1"]}}, + "ivory":{"N":{"tab":["n5"]}}, + "jacket":{"N":{"tab":["n1"]}}, + "jail":{"N":{"tab":["n1"]}, + "V":{"tab":"v1"}}, + "jam":{"N":{"tab":["n1"]}}, + "jar":{"N":{"tab":["n1"]}}, + "jaw":{"N":{"tab":["n1"]}}, + "jazz":{"N":{"tab":["n5"]}}, + "jealous":{"A":{"tab":["a1"]}}, + "jeans":{"N":{"tab":["n6"]}}, + "jerk":{"V":{"tab":"v1"}}, + "jet":{"N":{"tab":["n1"]}}, + "jewel":{"N":{"tab":["n1"]}}, + "jewellery":{"N":{"tab":["n5"]}}, + "job":{"N":{"tab":["n1"]}}, + "jockey":{"N":{"tab":["n1"]}}, + "join":{"V":{"tab":"v1"}}, + "joint":{"A":{"tab":["a1"]}, + "N":{"tab":["n1"]}}, + "jointly":{"Adv":{"tab":["b1"]}}, + "joke":{"N":{"tab":["n1"]}, + "V":{"tab":"v3"}}, + "journal":{"N":{"tab":["n1"]}}, + "journalist":{"N":{"tab":["n1"]}}, + "journey":{"N":{"tab":["n1"]}}, + "joy":{"N":{"tab":["n1"]}}, + "judge":{"N":{"tab":["n1"]}, + "V":{"tab":"v3"}}, + "judgement":{"N":{"tab":["n1"]}}, + "judgment":{"N":{"tab":["n1"]}}, + "judicial":{"A":{"tab":["a1"]}}, + "juice":{"N":{"tab":["n1"]}}, + "jump":{"N":{"tab":["n1"]}, + "V":{"tab":"v1"}}, + "junction":{"N":{"tab":["n1"]}}, + "jungle":{"N":{"tab":["n1"]}}, + "junior":{"A":{"tab":["a1"]}}, + "jurisdiction":{"N":{"tab":["n1"]}}, + "jury":{"N":{"tab":["n3"]}}, + "just":{"A":{"tab":["a1"]}, + "Adv":{"tab":["b1"]}}, + "justice":{"N":{"tab":["n1"]}}, + "justification":{"N":{"tab":["n1"]}}, + "justify":{"V":{"tab":"v4"}}, + "keen":{"A":{"tab":["a3"]}}, + "keep":{"V":{"tab":"v29"}}, + "keeper":{"N":{"tab":["n1"]}}, + "kettle":{"N":{"tab":["n1"]}}, + "key":{"N":{"tab":["n1"]}}, + "keyboard":{"N":{"tab":["n1"]}}, + "kick":{"N":{"tab":["n1"]}, + "V":{"tab":"v1"}}, + "kid":{"N":{"tab":["n1"]}}, + "kidney":{"N":{"tab":["n1"]}}, + "kill":{"V":{"tab":"v1"}}, + "killer":{"N":{"tab":["n1"]}}, + "killing":{"N":{"tab":["n1"]}}, + "kilometre":{"N":{"tab":["n1"]}}, + "kind":{"A":{"tab":["a3"]}, + "N":{"tab":["n1"]}}, + "kindly":{"Adv":{"tab":["b1"]}}, + "king":{"N":{"tab":["n1"]}}, + "kingdom":{"N":{"tab":["n1"]}}, + "kiss":{"N":{"tab":["n2"]}, + "V":{"tab":"v2"}}, + "kit":{"N":{"tab":["n1"]}}, + "kitchen":{"N":{"tab":["n1"]}}, + "kite":{"N":{"tab":["n1"]}}, + "knee":{"N":{"tab":["n1"]}}, + "kneel":{"V":{"tab":"v130"}}, + "knife":{"N":{"tab":["n10"]}}, + "knight":{"N":{"tab":["n1"]}}, + "knit":{"V":{"tab":"v38"}}, + "knitting":{"N":{"tab":["n5"]}}, + "knock":{"N":{"tab":["n1"]}, + "V":{"tab":"v1"}}, + "knot":{"N":{"tab":["n1"]}}, + "know":{"V":{"tab":"v27"}}, + "knowledge":{"N":{"tab":["n5"]}}, + "lab":{"N":{"tab":["n1"]}}, + "label":{"N":{"tab":["n1"]}, + "V":{"tab":"v9"}}, + "laboratory":{"N":{"tab":["n3"]}}, + "labour":{"N":{"tab":["n1"]}}, + "labourer":{"N":{"tab":["n1"]}}, + "lace":{"N":{"tab":["n1"]}}, + "lack":{"N":{"tab":["n5"]}, + "V":{"tab":"v1"}}, + "lad":{"N":{"tab":["n1"]}}, + "ladder":{"N":{"tab":["n1"]}}, + "lady":{"N":{"tab":["n3"]}}, + "lake":{"N":{"tab":["n1"]}}, + "lamb":{"N":{"tab":["n1"]}}, + "lamp":{"N":{"tab":["n1"]}}, + "land":{"N":{"tab":["n1"]}, + "V":{"tab":"v1"}}, + "landing":{"N":{"tab":["n1"]}}, + "landlord":{"N":{"tab":["n1"]}}, + "landowner":{"N":{"tab":["n1"]}}, + "landscape":{"N":{"tab":["n1"]}}, + "lane":{"N":{"tab":["n1"]}}, + "language":{"N":{"tab":["n1"]}}, + "lap":{"N":{"tab":["n1"]}}, + "large":{"A":{"tab":["a2"]}}, + "large-scale":{"A":{"tab":["a1"]}}, + "largely":{"Adv":{"tab":["b1"]}}, + "laser":{"N":{"tab":["n1"]}}, + "last":{"V":{"tab":"v1"}}, + "late":{"A":{"tab":["a2"]}, + "Adv":{"tab":["a2"]}}, + "lately":{"Adv":{"tab":["b1"]}}, + "laugh":{"N":{"tab":["n1"]}, + "V":{"tab":"v1"}}, + "laughter":{"N":{"tab":["n5"]}}, + "launch":{"N":{"tab":["n2"]}, + "V":{"tab":"v2"}}, + "law":{"N":{"tab":["n1"]}}, + "lawn":{"N":{"tab":["n1"]}}, + "lawyer":{"N":{"tab":["n1"]}}, + "lay":{"A":{"tab":["a1"]}, + "V":{"tab":"v19"}}, + "layer":{"N":{"tab":["n1"]}}, + "lazy":{"A":{"tab":["a4"]}}, + "lead":{"N":{"tab":["n1"]}, + "V":{"tab":"v77"}}, + "leader":{"N":{"tab":["n1"]}}, + "leadership":{"N":{"tab":["n5"]}}, + "leading":{"A":{"tab":["a1"]}}, + "leaf":{"N":{"tab":["n9"]}}, + "leaflet":{"N":{"tab":["n1"]}}, + "league":{"N":{"tab":["n1"]}}, + "leak":{"V":{"tab":"v1"}}, + "lean":{"V":{"tab":"v26"}}, + "leap":{"V":{"tab":"v26"}}, + "learn":{"V":{"tab":"v26"}}, + "learner":{"N":{"tab":["n1"]}}, + "learning":{"N":{"tab":["n5"]}}, + "lease":{"N":{"tab":["n1"]}}, + "leather":{"N":{"tab":["n1"]}}, + "leave":{"N":{"tab":["n1"]}, + "V":{"tab":"v155"}}, + "lecture":{"N":{"tab":["n1"]}}, + "lecturer":{"N":{"tab":["n1"]}}, + "left":{"A":{"tab":["a1"]}, + "N":{"tab":["n5"]}}, + "leg":{"N":{"tab":["n1"]}}, + "legacy":{"N":{"tab":["n3"]}}, + "legal":{"A":{"tab":["a1"]}}, + "legally":{"Adv":{"tab":["b1"]}}, + "legend":{"N":{"tab":["n1"]}}, + "legislation":{"N":{"tab":["n5"]}}, + "legislative":{"A":{"tab":["a1"]}}, + "legislature":{"N":{"tab":["n1"]}}, + "legitimate":{"A":{"tab":["a1"]}}, + "leisure":{"N":{"tab":["n5"]}}, + "lemon":{"N":{"tab":["n1"]}}, + "lend":{"V":{"tab":"v23"}}, + "lender":{"N":{"tab":["n1"]}}, + "length":{"N":{"tab":["n1"]}}, + "lengthy":{"A":{"tab":["a4"]}}, + "less":{"Adv":{"tab":["b1"]}}, + "lesser":{"A":{"tab":["a1"]}}, + "lesson":{"N":{"tab":["n1"]}}, + "let":{"V":{"tab":"v17"}}, + "letter":{"N":{"tab":["n1"]}}, + "level":{"A":{"tab":["a1"]}, + "N":{"tab":["n1"]}, + "V":{"tab":"v9"}}, + "lexical":{"A":{"tab":["a1"]}}, + "liability":{"N":{"tab":["n3"]}}, + "liable":{"A":{"tab":["a1"]}}, + "liaison":{"N":{"tab":["n1"]}}, + "liberal":{"A":{"tab":["a1"]}, + "N":{"tab":["n1"]}}, + "liberation":{"N":{"tab":["n1"]}}, + "liberty":{"N":{"tab":["n3"]}}, + "librarian":{"N":{"tab":["n1"]}}, + "library":{"N":{"tab":["n3"]}}, + "licence":{"N":{"tab":["n1"]}}, + "license":{"V":{"tab":"v3"}}, + "lick":{"V":{"tab":"v1"}}, + "lid":{"N":{"tab":["n1"]}}, + "lie":{"N":{"tab":["n1"]}, + "V":{"tab":"v111"}}, + "life":{"N":{"tab":["n10"]}}, + "lifestyle":{"N":{"tab":["n1"]}}, + "lifetime":{"N":{"tab":["n1"]}}, + "lift":{"N":{"tab":["n1"]}, + "V":{"tab":"v1"}}, + "light":{"A":{"tab":["a3"]}, + "N":{"tab":["n1"]}, + "V":{"tab":"v68"}}, + "lightly":{"Adv":{"tab":["b1"]}}, + "like":{"A":{"tab":["a1"]}, + "Adv":{"tab":["b1"]}, + "N":{"tab":["n1"]}, + "P":{"tab":["pp"]}, + "V":{"tab":"v3"}}, + "likelihood":{"N":{"tab":["n5"]}}, + "likely":{"A":{"tab":["a4"]}}, + "likewise":{"Adv":{"tab":["b1"]}}, + "limb":{"N":{"tab":["n1"]}}, + "limestone":{"N":{"tab":["n5"]}}, + "limit":{"N":{"tab":["n1"]}, + "V":{"tab":"v1"}}, + "limitation":{"N":{"tab":["n1"]}}, + "line":{"N":{"tab":["n1"]}, + "V":{"tab":"v3"}}, + "linear":{"A":{"tab":["a1"]}}, + "linen":{"N":{"tab":["n5"]}}, + "linger":{"V":{"tab":"v1"}}, + "linguistic":{"A":{"tab":["a1"]}}, + "link":{"N":{"tab":["n1"]}, + "V":{"tab":"v1"}}, + "lion":{"N":{"tab":["n1"]}}, + "lip":{"N":{"tab":["n1"]}}, + "liquid":{"A":{"tab":["a1"]}, + "N":{"tab":["n1"]}}, + "list":{"N":{"tab":["n1"]}, + "V":{"tab":"v1"}}, + "listen":{"V":{"tab":"v1"}}, + "listener":{"N":{"tab":["n1"]}}, + "literacy":{"N":{"tab":["n5"]}}, + "literally":{"Adv":{"tab":["b1"]}}, + "literary":{"A":{"tab":["a1"]}}, + "literature":{"N":{"tab":["n5"]}}, + "litigation":{"N":{"tab":["n5"]}}, + "litre":{"N":{"tab":["n1"]}}, + "little":{"A":{"tab":["a2"]}, + "Adv":{"tab":["b5"]}}, + "live":{"A":{"tab":["a1"]}, + "V":{"tab":"v3"}}, + "lively":{"A":{"tab":["a4"]}}, + "liver":{"N":{"tab":["n1"]}}, + "living":{"A":{"tab":["a1"]}, + "N":{"tab":["n1"]}}, + "load":{"N":{"tab":["n1"]}, + "V":{"tab":"v1"}}, + "loan":{"N":{"tab":["n1"]}}, + "lobby":{"N":{"tab":["n3"]}}, + "local":{"A":{"tab":["a1"]}, + "N":{"tab":["n1"]}}, + "locality":{"N":{"tab":["n3"]}}, + "locally":{"Adv":{"tab":["b1"]}}, + "locate":{"V":{"tab":"v3"}}, + "location":{"N":{"tab":["n1"]}}, + "lock":{"N":{"tab":["n1"]}, + "V":{"tab":"v1"}}, + "locomotive":{"N":{"tab":["n1"]}}, + "lodge":{"V":{"tab":"v3"}}, + "log":{"N":{"tab":["n1"]}}, + "logic":{"N":{"tab":["n1"]}}, + "logical":{"A":{"tab":["a1"]}}, + "lone":{"A":{"tab":["a1"]}}, + "lonely":{"A":{"tab":["a4"]}}, + "long":{"A":{"tab":["a3"]}, + "Adv":{"tab":["b1"]}, + "V":{"tab":"v1"}}, + "long-term":{"A":{"tab":["a1"]}}, + "look":{"N":{"tab":["n1"]}, + "V":{"tab":"v1"}}, + "loose":{"A":{"tab":["a2"]}}, + "lord":{"N":{"tab":["n1"]}}, + "lordship":{"N":{"tab":["n1"]}}, + "lorry":{"N":{"tab":["n3"]}}, + "lose":{"V":{"tab":"v143"}}, + "loss":{"N":{"tab":["n2"]}}, + "lot":{"N":{"tab":["n1"]}}, + "loud":{"A":{"tab":["a3"]}, + "Adv":{"tab":["b1"]}}, + "loudly":{"Adv":{"tab":["b1"]}}, + "lounge":{"N":{"tab":["n1"]}}, + "love":{"N":{"tab":["n1"]}, + "V":{"tab":"v3"}}, + "lovely":{"A":{"tab":["a4"]}}, + "lover":{"N":{"tab":["n1"]}}, + "low":{"A":{"tab":["a3"]}, + "Adv":{"tab":["b1"]}}, + "lower":{"V":{"tab":"v1"}}, + "loyal":{"A":{"tab":["a8"]}}, + "loyalty":{"N":{"tab":["n3"]}}, + "luck":{"N":{"tab":["n5"]}}, + "lucky":{"A":{"tab":["a4"]}}, + "lump":{"N":{"tab":["n1"]}}, + "lunch":{"N":{"tab":["n2"]}}, + "lung":{"N":{"tab":["n1"]}}, + "luxury":{"N":{"tab":["n3"]}}, + "machine":{"N":{"tab":["n1"]}}, + "machinery":{"N":{"tab":["n5"]}}, + "mad":{"A":{"tab":["a6"]}}, + "magazine":{"N":{"tab":["n1"]}}, + "magic":{"A":{"tab":["a1"]}, + "N":{"tab":["n5"]}}, + "magical":{"A":{"tab":["a1"]}}, + "magistrate":{"N":{"tab":["n1"]}}, + "magnetic":{"A":{"tab":["a1"]}}, + "magnificent":{"A":{"tab":["a1"]}}, + "magnitude":{"N":{"tab":["n5"]}}, + "maid":{"N":{"tab":["n1"]}}, + "mail":{"N":{"tab":["n1"]}}, + "main":{"A":{"tab":["a1"]}}, + "mainland":{"N":{"tab":["n1"]}}, + "mainly":{"Adv":{"tab":["b1"]}}, + "mainstream":{"N":{"tab":["n5"]}}, + "maintain":{"V":{"tab":"v1"}}, + "maintenance":{"N":{"tab":["n5"]}}, + "majesty":{"N":{"tab":["n3"]}}, + "major":{"A":{"tab":["a1"]}}, + "majority":{"N":{"tab":["n3"]}}, + "make":{"N":{"tab":["n1"]}, + "V":{"tab":"v61"}}, + "make-up":{"N":{"tab":["n1"]}}, + "maker":{"N":{"tab":["n1"]}}, + "making":{"N":{"tab":["n1"]}}, + "male":{"A":{"tab":["a1"]}, + "N":{"tab":["n1"]}}, + "mammal":{"N":{"tab":["n1"]}}, + "man":{"N":{"g":"m", + "tab":["n89"]}}, + "manage":{"V":{"tab":"v3"}}, + "management":{"N":{"tab":["n1"]}}, + "manager":{"N":{"tab":["n1"]}}, + "managerial":{"A":{"tab":["a1"]}}, + "mandatory":{"A":{"tab":["a1"]}}, + "manifest":{"V":{"tab":"v1"}}, + "manifestation":{"N":{"tab":["n1"]}}, + "manipulate":{"V":{"tab":"v3"}}, + "manipulation":{"N":{"tab":["n1"]}}, + "mankind":{"N":{"tab":["n5"]}}, + "manner":{"N":{"tab":["n1"]}}, + "manor":{"N":{"tab":["n1"]}}, + "manpower":{"N":{"tab":["n5"]}}, + "manual":{"A":{"tab":["a1"]}, + "N":{"tab":["n1"]}}, + "manufacture":{"N":{"tab":["n5"]}, + "V":{"tab":"v3"}}, + "manufacturer":{"N":{"tab":["n1"]}}, + "manuscript":{"N":{"tab":["n1"]}}, + "many":{"Adv":{"tab":["b1"]}}, + "map":{"N":{"tab":["n1"]}, + "V":{"tab":"v12"}}, + "marathon":{"N":{"tab":["n1"]}}, + "marble":{"N":{"tab":["n1"]}}, + "march":{"N":{"tab":["n2"]}, + "V":{"tab":"v2"}}, + "margin":{"N":{"tab":["n1"]}}, + "marginal":{"A":{"tab":["a1"]}}, + "marine":{"A":{"tab":["a1"]}}, + "mark":{"N":{"tab":["n1"]}, + "V":{"tab":"v1"}}, + "marked":{"A":{"tab":["a1"]}}, + "marker":{"N":{"tab":["n1"]}}, + "market":{"N":{"tab":["n1"]}, + "V":{"tab":"v1"}}, + "marketing":{"N":{"tab":["n1"]}}, + "marriage":{"N":{"tab":["n1"]}}, + "married":{"A":{"tab":["a1"]}}, + "marry":{"V":{"tab":"v4"}}, + "marsh":{"N":{"tab":["n2"]}}, + "marvellous":{"A":{"tab":["a1"]}}, + "mask":{"N":{"tab":["n1"]}}, + "mass":{"N":{"tab":["n2"]}}, + "massive":{"A":{"tab":["a1"]}}, + "master":{"N":{"tab":["n1"]}, + "V":{"tab":"v1"}}, + "match":{"N":{"tab":["n2"]}, + "V":{"tab":"v2"}}, + "mate":{"N":{"tab":["n1"]}}, + "material":{"A":{"tab":["a1"]}, + "N":{"tab":["n1"]}}, + "mathematical":{"A":{"tab":["a1"]}}, + "mathematics":{"N":{"tab":["n5"]}}, + "matrix":{"N":{"tab":["n2"]}}, + "matter":{"N":{"tab":["n1"]}, + "V":{"tab":"v1"}}, + "mature":{"A":{"tab":["a1"]}}, + "maturity":{"N":{"tab":["n5"]}}, + "maximum":{"A":{"tab":["a1"]}, + "N":{"tab":["n1"]}}, + "may":{"V":{"tab":"v153"}}, + "maybe":{"Adv":{"tab":["b1"]}}, + "mayor":{"N":{"tab":["n1"]}}, + "me":{"Pro":{"tab":["pn2"]}}, + "meadow":{"N":{"tab":["n1"]}}, + "meal":{"N":{"tab":["n1"]}}, + "mean":{"A":{"tab":["a3"]}, + "V":{"tab":"v55"}}, + "meaning":{"N":{"tab":["n1"]}}, + "meaningful":{"A":{"tab":["a1"]}}, + "meantime":{"N":{"tab":["n5"]}}, + "meanwhile":{"Adv":{"tab":["b1"]}}, + "measure":{"N":{"tab":["n1"]}, + "V":{"tab":"v3"}}, + "measurement":{"N":{"tab":["n1"]}}, + "meat":{"N":{"tab":["n1"]}}, + "mechanical":{"A":{"tab":["a1"]}}, + "mechanism":{"N":{"tab":["n1"]}}, + "medal":{"N":{"tab":["n1"]}}, + "medical":{"A":{"tab":["a1"]}}, + "medicine":{"N":{"tab":["n1"]}}, + "medieval":{"A":{"tab":["a1"]}}, + "medium":{"A":{"tab":["a1"]}, + "N":{"tab":["n1"]}}, + "meet":{"V":{"tab":"v123"}}, + "meeting":{"N":{"tab":["n1"]}}, + "melt":{"V":{"tab":"v127"}}, + "member":{"N":{"tab":["n1"]}}, + "membership":{"N":{"tab":["n5"]}}, + "membrane":{"N":{"tab":["n1"]}}, + "memorable":{"A":{"tab":["a1"]}}, + "memorandum":{"N":{"tab":["n1"]}}, + "memorial":{"N":{"tab":["n1"]}}, + "memory":{"N":{"tab":["n3"]}}, + "mental":{"A":{"tab":["a1"]}}, + "mentally":{"Adv":{"tab":["b1"]}}, + "mention":{"N":{"tab":["n1"]}, + "V":{"tab":"v1"}}, + "menu":{"N":{"tab":["n1"]}}, + "merchant":{"N":{"tab":["n1"]}}, + "mercy":{"N":{"tab":["n3"]}}, + "mere":{"A":{"tab":["a18"]}}, + "merely":{"Adv":{"tab":["b1"]}}, + "merge":{"V":{"tab":"v3"}}, + "merger":{"N":{"tab":["n1"]}}, + "merit":{"N":{"tab":["n1"]}}, + "mess":{"N":{"tab":["n2"]}}, + "message":{"N":{"tab":["n1"]}}, + "metal":{"N":{"tab":["n1"]}}, + "metaphor":{"N":{"tab":["n1"]}}, + "method":{"N":{"tab":["n1"]}}, + "methodology":{"N":{"tab":["n3"]}}, + "metre":{"N":{"tab":["n1"]}}, + "metropolitan":{"A":{"tab":["a1"]}}, + "microphone":{"N":{"tab":["n1"]}}, + "mid":{"A":{"tab":["a1"]}}, + "middle":{"N":{"tab":["n1"]}}, + "middle-class":{"A":{"tab":["a1"]}}, + "midnight":{"N":{"tab":["n5"]}}, + "mighty":{"A":{"tab":["a4"]}}, + "migration":{"N":{"tab":["n1"]}}, + "mild":{"A":{"tab":["a3"]}}, + "mile":{"N":{"tab":["n1"]}}, + "military":{"A":{"tab":["a1"]}}, + "milk":{"N":{"tab":["n5"]}}, + "mill":{"N":{"tab":["n1"]}}, + "mind":{"N":{"tab":["n1"]}, + "V":{"tab":"v1"}}, + "mine":{"N":{"tab":["n1"]}, + "Pro":{"tab":["pn3"]}}, + "miner":{"N":{"tab":["n1"]}}, + "mineral":{"N":{"tab":["n1"]}}, + "minimal":{"A":{"tab":["a1"]}}, + "minimum":{"A":{"tab":["a1"]}, + "N":{"tab":["n1"]}}, + "mining":{"N":{"tab":["n5"]}}, + "minister":{"N":{"tab":["n1"]}}, + "ministerial":{"A":{"tab":["a1"]}}, + "ministry":{"N":{"tab":["n3"]}}, + "minor":{"A":{"tab":["a1"]}}, + "minority":{"N":{"tab":["n3"]}}, + "minus":{"P":{"tab":["pp"]}}, + "minute":{"A":{"tab":["a2"]}, + "N":{"tab":["n1"]}}, + "miracle":{"N":{"tab":["n1"]}}, + "mirror":{"N":{"tab":["n1"]}}, + "miserable":{"A":{"tab":["a1"]}}, + "misery":{"N":{"tab":["n3"]}}, + "miss":{"V":{"tab":"v2"}}, + "missile":{"N":{"tab":["n1"]}}, + "missing":{"A":{"tab":["a1"]}}, + "mission":{"N":{"tab":["n1"]}}, + "mist":{"N":{"tab":["n1"]}}, + "mistake":{"N":{"tab":["n1"]}, + "V":{"tab":"v20"}}, + "mistress":{"N":{"g":"f", + "tab":["n88"]}}, + "mix":{"N":{"tab":["n2"]}, + "V":{"tab":"v2"}}, + "mixed":{"A":{"tab":["a1"]}}, + "mixture":{"N":{"tab":["n1"]}}, + "moan":{"V":{"tab":"v1"}}, + "mobile":{"A":{"tab":["a1"]}}, + "mobility":{"N":{"tab":["n5"]}}, + "mode":{"N":{"tab":["n1"]}}, + "model":{"N":{"tab":["n1"]}, + "V":{"tab":"v9"}}, + "moderate":{"A":{"tab":["a1"]}}, + "modern":{"A":{"tab":["a1"]}}, + "modest":{"A":{"tab":["a1"]}}, + "modification":{"N":{"tab":["n1"]}}, + "modify":{"V":{"tab":"v4"}}, + "module":{"N":{"tab":["n1"]}}, + "mole":{"N":{"tab":["n1"]}}, + "molecular":{"A":{"tab":["a1"]}}, + "molecule":{"N":{"tab":["n1"]}}, + "moment":{"N":{"tab":["n1"]}}, + "momentum":{"N":{"tab":["n5"]}}, + "monarch":{"N":{"tab":["n1"]}}, + "monarchy":{"N":{"tab":["n3"]}}, + "monastery":{"N":{"tab":["n3"]}}, + "monetary":{"A":{"tab":["a1"]}}, + "money":{"N":{"tab":["n50"]}}, + "monitor":{"N":{"tab":["n1"]}, + "V":{"tab":"v1"}}, + "monk":{"N":{"tab":["n1"]}}, + "monkey":{"N":{"tab":["n1"]}}, + "monopoly":{"N":{"tab":["n3"]}}, + "monster":{"N":{"tab":["n1"]}}, + "month":{"N":{"tab":["n1"]}}, + "monthly":{"A":{"tab":["a1"]}}, + "monument":{"N":{"tab":["n1"]}}, + "mood":{"N":{"tab":["n1"]}}, + "moon":{"N":{"tab":["n1"]}}, + "moor":{"N":{"tab":["n1"]}}, + "moral":{"A":{"tab":["a1"]}, + "N":{"tab":["n1"]}}, + "morale":{"N":{"tab":["n5"]}}, + "morality":{"N":{"tab":["n3"]}}, + "more":{"Adv":{"tab":["b1"]}}, + "moreover":{"Adv":{"tab":["b1"]}}, + "morning":{"N":{"tab":["n1"]}}, + "mortality":{"N":{"tab":["n5"]}}, + "mortgage":{"N":{"tab":["n1"]}}, + "mosaic":{"N":{"tab":["n1"]}}, + "most":{"Adv":{"tab":["b1"]}}, + "mostly":{"Adv":{"tab":["b1"]}}, + "mother":{"N":{"g":"f", + "tab":["n87"]}}, + "motif":{"N":{"tab":["n1"]}}, + "motion":{"N":{"tab":["n1"]}}, + "motivate":{"V":{"tab":"v3"}}, + "motivation":{"N":{"tab":["n1"]}}, + "motive":{"N":{"tab":["n1"]}}, + "motor":{"N":{"tab":["n1"]}}, + "motorist":{"N":{"tab":["n1"]}}, + "motorway":{"N":{"tab":["n1"]}}, + "mould":{"N":{"tab":["n1"]}}, + "mount":{"V":{"tab":"v1"}}, + "mountain":{"N":{"tab":["n1"]}}, + "mouse":{"N":{"tab":["n16"]}}, + "mouth":{"N":{"tab":["n1"]}}, + "move":{"N":{"tab":["n1"]}, + "V":{"tab":"v3"}}, + "movement":{"N":{"tab":["n1"]}}, + "movie":{"N":{"tab":["n1"]}}, + "much":{"Adv":{"tab":["b1"]}}, + "mud":{"N":{"tab":["n5"]}}, + "mug":{"N":{"tab":["n1"]}}, + "multiple":{"A":{"tab":["a1"]}}, + "multiply":{"V":{"tab":"v4"}}, + "municipal":{"A":{"tab":["a1"]}}, + "murder":{"N":{"tab":["n1"]}, + "V":{"tab":"v1"}}, + "murderer":{"N":{"tab":["n1"]}}, + "murmur":{"V":{"tab":"v1"}}, + "muscle":{"N":{"tab":["n1"]}}, + "museum":{"N":{"tab":["n1"]}}, + "mushroom":{"N":{"tab":["n1"]}}, + "music":{"N":{"tab":["n5"]}}, + "musical":{"A":{"tab":["a1"]}}, + "musician":{"N":{"tab":["n1"]}}, + "must":{"N":{"tab":["n1"]}, + "V":{"tab":"v166"}}, + "mutation":{"N":{"tab":["n1"]}}, + "mutter":{"V":{"tab":"v1"}}, + "mutual":{"A":{"tab":["a1"]}}, + "my":{"D":{"tab":["d2"]}}, + "myself":{"Pro":{"tab":["pn4"]}}, + "mysterious":{"A":{"tab":["a1"]}}, + "mystery":{"N":{"tab":["n3"]}}, + "myth":{"N":{"tab":["n1"]}}, + "nail":{"N":{"tab":["n1"]}}, + "naked":{"A":{"tab":["a1"]}}, + "name":{"N":{"tab":["n1"]}, + "V":{"tab":"v3"}}, + "namely":{"Adv":{"tab":["b1"]}}, + "narrative":{"N":{"tab":["n1"]}}, + "narrow":{"A":{"tab":["a3"]}, + "V":{"tab":"v1"}}, + "nasty":{"A":{"tab":["a4"]}}, + "nation":{"N":{"tab":["n1"]}}, + "national":{"A":{"tab":["a1"]}}, + "nationalism":{"N":{"tab":["n5"]}}, + "nationalist":{"N":{"tab":["n1"]}}, + "nationality":{"N":{"tab":["n3"]}}, + "nationally":{"Adv":{"tab":["b1"]}}, + "native":{"A":{"tab":["a1"]}, + "N":{"tab":["n1"]}}, + "natural":{"A":{"tab":["a1"]}}, + "naturally":{"Adv":{"tab":["b1"]}}, + "nature":{"N":{"tab":["n1"]}}, + "naval":{"A":{"tab":["a1"]}}, + "navy":{"N":{"tab":["n3"]}}, + "near":{"A":{"tab":["a3"]}, + "Adv":{"tab":["b1"]}, + "P":{"tab":["pp"]}}, + "nearby":{"A":{"tab":["a1"]}}, + "nearly":{"Adv":{"tab":["b1"]}}, + "neat":{"A":{"tab":["a3"]}}, + "neatly":{"Adv":{"tab":["b1"]}}, + "necessarily":{"Adv":{"tab":["b1"]}}, + "necessary":{"A":{"tab":["a1"]}}, + "necessity":{"N":{"tab":["n3"]}}, + "neck":{"N":{"tab":["n1"]}}, + "need":{"N":{"tab":["n1"]}, + "V":{"tab":"v1"}}, + "needle":{"N":{"tab":["n1"]}}, + "negative":{"A":{"tab":["a1"]}}, + "neglect":{"N":{"tab":["n5"]}, + "V":{"tab":"v1"}}, + "negligence":{"N":{"tab":["n5"]}}, + "negotiate":{"V":{"tab":"v3"}}, + "negotiation":{"N":{"tab":["n1"]}}, + "neighbour":{"N":{"tab":["n1"]}}, + "neighbourhood":{"N":{"tab":["n1"]}}, + "neither":{"Adv":{"tab":["b1"]}}, + "nephew":{"N":{"tab":["n1"]}}, + "nerve":{"N":{"tab":["n1"]}}, + "nervous":{"A":{"tab":["a1"]}}, + "nest":{"N":{"tab":["n1"]}}, + "net":{"A":{"tab":["a1"]}, + "N":{"tab":["n1"]}}, + "network":{"N":{"tab":["n1"]}}, + "neutral":{"A":{"tab":["a1"]}}, + "never":{"Adv":{"tab":["b1"]}}, + "nevertheless":{"Adv":{"tab":["b1"]}}, + "new":{"A":{"tab":["a3"]}}, + "newcomer":{"N":{"tab":["n1"]}}, + "newly":{"Adv":{"tab":["b1"]}}, + "news":{"N":{"tab":["n5"]}}, + "newspaper":{"N":{"tab":["n1"]}}, + "next":{"Adv":{"tab":["b1"]}}, + "nice":{"A":{"tab":["a2"]}}, + "nicely":{"Adv":{"tab":["b1"]}}, + "night":{"N":{"tab":["n1"]}}, + "nightmare":{"N":{"tab":["n1"]}}, + "nitrogen":{"N":{"tab":["n5"]}}, + "no":{"Adv":{"tab":["b1"]}, + "N":{"tab":["n1"]}}, + "no-one":{"Pro":{"tab":["pn5"]}}, + "noble":{"A":{"tab":["a2"]}}, + "nobody":{"Pro":{"tab":["pn5"]}}, + "nod":{"V":{"tab":"v6"}}, + "node":{"N":{"tab":["n1"]}}, + "noise":{"N":{"tab":["n1"]}}, + "noisy":{"A":{"tab":["a4"]}}, + "nominal":{"A":{"tab":["a1"]}}, + "nominate":{"V":{"tab":"v3"}}, + "nomination":{"N":{"tab":["n1"]}}, + "nonetheless":{"Adv":{"tab":["b1"]}}, + "nonsense":{"N":{"tab":["n1"]}}, + "norm":{"N":{"tab":["n1"]}}, + "normal":{"A":{"tab":["a1"]}}, + "normally":{"Adv":{"tab":["b1"]}}, + "north":{"N":{"tab":["n5"]}}, + "northern":{"A":{"tab":["a1"]}}, + "nose":{"N":{"tab":["n1"]}}, + "not":{"Adv":{"tab":["b1"]}}, + "notable":{"A":{"tab":["a1"]}}, + "notably":{"Adv":{"tab":["b1"]}}, + "note":{"N":{"tab":["n1"]}, + "V":{"tab":"v3"}}, + "notebook":{"N":{"tab":["n1"]}}, + "nothing":{"Pro":{"tab":["pn5"]}}, + "notice":{"N":{"tab":["n1"]}, + "V":{"tab":"v3"}}, + "noticeable":{"A":{"tab":["a1"]}}, + "notify":{"V":{"tab":"v4"}}, + "notion":{"N":{"tab":["n1"]}}, + "notorious":{"A":{"tab":["a1"]}}, + "noun":{"N":{"tab":["n1"]}}, + "novel":{"A":{"tab":["a1"]}, + "N":{"tab":["n1"]}}, + "novelist":{"N":{"tab":["n1"]}}, + "now":{"Adv":{"tab":["b1"]}}, + "nowadays":{"Adv":{"tab":["b1"]}}, + "nowhere":{"Adv":{"tab":["b1"]}}, + "nuclear":{"A":{"tab":["a1"]}}, + "nucleus":{"N":{"tab":["n12"]}}, + "nuisance":{"N":{"tab":["n1"]}}, + "number":{"N":{"tab":["n1"]}}, + "numerous":{"A":{"tab":["a1"]}}, + "nun":{"N":{"tab":["n1"]}}, + "nurse":{"N":{"tab":["n1"]}, + "V":{"tab":"v3"}}, + "nursery":{"N":{"tab":["n3"]}}, + "nut":{"N":{"tab":["n1"]}}, + "oak":{"N":{"tab":["n1"]}}, + "obey":{"V":{"tab":"v1"}}, + "object":{"N":{"tab":["n1"]}, + "V":{"tab":"v1"}}, + "objection":{"N":{"tab":["n1"]}}, + "objective":{"A":{"tab":["a1"]}, + "N":{"tab":["n1"]}}, + "obligation":{"N":{"tab":["n1"]}}, + "oblige":{"V":{"tab":"v3"}}, + "obscure":{"A":{"tab":["a1"]}, + "V":{"tab":"v3"}}, + "observation":{"N":{"tab":["n1"]}}, + "observe":{"V":{"tab":"v3"}}, + "observer":{"N":{"tab":["n1"]}}, + "obstacle":{"N":{"tab":["n1"]}}, + "obtain":{"V":{"tab":"v1"}}, + "obvious":{"A":{"tab":["a1"]}}, + "obviously":{"Adv":{"tab":["b1"]}}, + "occasion":{"N":{"tab":["n1"]}}, + "occasional":{"A":{"tab":["a1"]}}, + "occasionally":{"Adv":{"tab":["b1"]}}, + "occupation":{"N":{"tab":["n1"]}}, + "occupational":{"A":{"tab":["a1"]}}, + "occupy":{"V":{"tab":"v4"}}, + "occur":{"V":{"tab":"v13"}}, + "occurrence":{"N":{"tab":["n1"]}}, + "ocean":{"N":{"tab":["n1"]}}, + "odd":{"A":{"tab":["a3"]}}, + "odds":{"N":{"tab":["n6"]}}, + "odour":{"N":{"tab":["n1"]}}, + "of":{"P":{"tab":["pp"]}}, + "off":{"Adv":{"tab":["b1"]}, + "P":{"tab":["pp"]}}, + "offence":{"N":{"tab":["n1"]}}, + "offend":{"V":{"tab":"v1"}}, + "offender":{"N":{"tab":["n1"]}}, + "offensive":{"A":{"tab":["a1"]}}, + "offer":{"N":{"tab":["n1"]}, + "V":{"tab":"v1"}}, + "offering":{"N":{"tab":["n1"]}}, + "office":{"N":{"tab":["n1"]}}, + "officer":{"N":{"tab":["n1"]}}, + "official":{"A":{"tab":["a1"]}, + "N":{"tab":["n1"]}}, + "officially":{"Adv":{"tab":["b1"]}}, + "offset":{"V":{"tab":"v17"}}, + "offspring":{"N":{"tab":["n4"]}}, + "often":{"Adv":{"tab":["b1"]}}, + "oil":{"N":{"tab":["n1"]}}, + "okay":{"A":{"tab":["a1"]}, + "Adv":{"tab":["b1"]}}, + "old":{"A":{"tab":["a16"]}}, + "old-fashioned":{"A":{"tab":["a1"]}}, + "omission":{"N":{"tab":["n1"]}}, + "omit":{"V":{"tab":"v14"}}, + "on":{"Adv":{"tab":["b1"]}, + "P":{"tab":["pp"]}}, + "once":{"Adv":{"tab":["b1"]}}, + "one":{"Pro":{"tab":["pn5"]}}, + "onion":{"N":{"tab":["n1"]}}, + "only":{"A":{"tab":["a1"]}, + "Adv":{"tab":["b1"]}}, + "onto":{"P":{"tab":["pp"]}}, + "onwards":{"Adv":{"tab":["b1"]}}, + "open":{"A":{"tab":["a1"]}, + "V":{"tab":"v1"}}, + "opening":{"N":{"tab":["n1"]}}, + "openly":{"Adv":{"tab":["b1"]}}, + "opera":{"N":{"tab":["n1"]}}, + "operate":{"V":{"tab":"v3"}}, + "operation":{"N":{"tab":["n1"]}}, + "operational":{"A":{"tab":["a1"]}}, + "operator":{"N":{"tab":["n1"]}}, + "opinion":{"N":{"tab":["n1"]}}, + "opponent":{"N":{"tab":["n1"]}}, + "opportunity":{"N":{"tab":["n3"]}}, + "oppose":{"V":{"tab":"v3"}}, + "opposite":{"A":{"tab":["a1"]}, + "N":{"tab":["n1"]}}, + "opposition":{"N":{"tab":["n5"]}}, + "opt":{"V":{"tab":"v1"}}, + "optical":{"A":{"tab":["a1"]}}, + "optimism":{"N":{"tab":["n5"]}}, + "optimistic":{"A":{"tab":["a1"]}}, + "option":{"N":{"tab":["n1"]}}, + "optional":{"A":{"tab":["a1"]}}, + "oral":{"A":{"tab":["a1"]}}, + "orange":{"A":{"tab":["a1"]}, + "N":{"tab":["n1"]}}, + "orbit":{"N":{"tab":["n1"]}}, + "orchestra":{"N":{"tab":["n1"]}}, + "order":{"N":{"tab":["n1"]}, + "V":{"tab":"v1"}}, + "ordinary":{"A":{"tab":["a1"]}}, + "organ":{"N":{"tab":["n1"]}}, + "organic":{"A":{"tab":["a1"]}}, + "organism":{"N":{"tab":["n1"]}}, + "organization":{"N":{"tab":["n1"]}}, + "organizational":{"A":{"tab":["a1"]}}, + "organize":{"V":{"tab":"v3"}}, + "orientation":{"N":{"tab":["n5"]}}, + "origin":{"N":{"tab":["n1"]}}, + "original":{"A":{"tab":["a1"]}, + "N":{"tab":["n1"]}}, + "originally":{"Adv":{"tab":["b1"]}}, + "originate":{"V":{"tab":"v3"}}, + "orthodox":{"A":{"tab":["a1"]}}, + "otherwise":{"Adv":{"tab":["b1"]}}, + "out":{"A":{"tab":["a1"]}, + "Adv":{"tab":["b1"]}}, + "outbreak":{"N":{"tab":["n1"]}}, + "outcome":{"N":{"tab":["n1"]}}, + "outdoor":{"A":{"tab":["a1"]}}, + "outer":{"A":{"tab":["a1"]}}, + "outfit":{"N":{"tab":["n1"]}}, + "outlet":{"N":{"tab":["n1"]}}, + "outline":{"N":{"tab":["n1"]}, + "V":{"tab":"v3"}}, + "outlook":{"N":{"tab":["n1"]}}, + "output":{"N":{"tab":["n5"]}}, + "outset":{"N":{"tab":["n1"]}}, + "outside":{"A":{"tab":["a1"]}, + "Adv":{"tab":["b1"]}, + "N":{"tab":["n1"]}, + "P":{"tab":["pp"]}}, + "outsider":{"N":{"tab":["n1"]}}, + "outstanding":{"A":{"tab":["a1"]}}, + "oven":{"N":{"tab":["n1"]}}, + "over":{"Adv":{"tab":["b1"]}, + "N":{"tab":["n1"]}, + "P":{"tab":["pp"]}}, + "overall":{"A":{"tab":["a1"]}, + "N":{"tab":["n1"]}}, + "overcome":{"V":{"tab":"v41"}}, + "overlook":{"V":{"tab":"v1"}}, + "overnight":{"Adv":{"tab":["b1"]}}, + "overseas":{"A":{"tab":["a1"]}, + "Adv":{"tab":["b1"]}}, + "overtake":{"V":{"tab":"v20"}}, + "overview":{"N":{"tab":["n1"]}}, + "overwhelm":{"V":{"tab":"v1"}}, + "owe":{"V":{"tab":"v3"}}, + "owl":{"N":{"tab":["n1"]}}, + "own":{"V":{"tab":"v1"}}, + "owner":{"N":{"tab":["n1"]}}, + "ownership":{"N":{"tab":["n5"]}}, + "oxygen":{"N":{"tab":["n5"]}}, + "ozone":{"N":{"tab":["n5"]}}, + "pace":{"N":{"tab":["n1"]}}, + "pack":{"N":{"tab":["n1"]}, + "V":{"tab":"v1"}}, + "package":{"N":{"tab":["n1"]}, + "V":{"tab":"v3"}}, + "packet":{"N":{"tab":["n1"]}}, + "pad":{"N":{"tab":["n1"]}}, + "page":{"N":{"tab":["n1"]}}, + "pain":{"N":{"tab":["n1"]}}, + "painful":{"A":{"tab":["a1"]}}, + "paint":{"N":{"tab":["n1"]}, + "V":{"tab":"v1"}}, + "painter":{"N":{"tab":["n1"]}}, + "painting":{"N":{"tab":["n1"]}}, + "pair":{"N":{"tab":["n1"]}}, + "pal":{"N":{"tab":["n1"]}}, + "palace":{"N":{"tab":["n1"]}}, + "pale":{"A":{"tab":["a2"]}}, + "palm":{"N":{"tab":["n1"]}}, + "pan":{"N":{"tab":["n1"]}}, + "panel":{"N":{"tab":["n1"]}}, + "panic":{"N":{"tab":["n1"]}}, + "papal":{"A":{"tab":["a1"]}}, + "paper":{"N":{"tab":["n1"]}}, + "par":{"N":{"tab":["n1"]}}, + "parade":{"N":{"tab":["n1"]}}, + "paragraph":{"N":{"tab":["n1"]}}, + "parallel":{"A":{"tab":["a1"]}, + "N":{"tab":["n1"]}}, + "parameter":{"N":{"tab":["n1"]}}, + "parcel":{"N":{"tab":["n1"]}}, + "pardon":{"N":{"tab":["n1"]}}, + "parent":{"N":{"tab":["n1"]}}, + "parental":{"A":{"tab":["a1"]}}, + "parish":{"N":{"tab":["n2"]}}, + "park":{"N":{"tab":["n1"]}, + "V":{"tab":"v1"}}, + "parking":{"N":{"tab":["n5"]}}, + "parliament":{"N":{"tab":["n1"]}}, + "parliamentary":{"A":{"tab":["a1"]}}, + "part":{"N":{"tab":["n1"]}, + "V":{"tab":"v1"}}, + "part-time":{"A":{"tab":["a1"]}}, + "partial":{"A":{"tab":["a1"]}}, + "partially":{"Adv":{"tab":["b1"]}}, + "participant":{"N":{"tab":["n1"]}}, + "participate":{"V":{"tab":"v3"}}, + "participation":{"N":{"tab":["n5"]}}, + "particle":{"N":{"tab":["n1"]}}, + "particular":{"A":{"tab":["a1"]}, + "N":{"tab":["n1"]}}, + "particularly":{"Adv":{"tab":["b1"]}}, + "partly":{"Adv":{"tab":["b1"]}}, + "partner":{"N":{"tab":["n1"]}}, + "partnership":{"N":{"tab":["n1"]}}, + "party":{"N":{"tab":["n3"]}}, + "pass":{"N":{"tab":["n2"]}, + "V":{"tab":"v87"}}, + "passage":{"N":{"tab":["n1"]}}, + "passenger":{"N":{"tab":["n1"]}}, + "passion":{"N":{"tab":["n1"]}}, + "passionate":{"A":{"tab":["a1"]}}, + "passive":{"A":{"tab":["a1"]}}, + "passport":{"N":{"tab":["n1"]}}, + "past":{"A":{"tab":["a1"]}, + "Adv":{"tab":["b1"]}, + "N":{"tab":["n1"]}, + "P":{"tab":["pp"]}}, + "pasture":{"N":{"tab":["n1"]}}, + "pat":{"V":{"tab":"v14"}}, + "patch":{"N":{"tab":["n2"]}}, + "patent":{"N":{"tab":["n1"]}}, + "path":{"N":{"tab":["n1"]}}, + "patience":{"N":{"tab":["n5"]}}, + "patient":{"A":{"tab":["a1"]}, + "N":{"tab":["n1"]}}, + "patrol":{"N":{"tab":["n1"]}}, + "patron":{"N":{"tab":["n1"]}}, + "pattern":{"N":{"tab":["n1"]}}, + "pause":{"N":{"tab":["n1"]}, + "V":{"tab":"v3"}}, + "pavement":{"N":{"tab":["n1"]}}, + "pay":{"N":{"tab":["n5"]}, + "V":{"tab":"v19"}}, + "payable":{"A":{"tab":["a1"]}}, + "payment":{"N":{"tab":["n1"]}}, + "peace":{"N":{"tab":["n5"]}}, + "peaceful":{"A":{"tab":["a1"]}}, + "peak":{"N":{"tab":["n1"]}}, + "peasant":{"N":{"tab":["n1"]}}, + "peculiar":{"A":{"tab":["a1"]}}, + "pedestrian":{"N":{"tab":["n1"]}}, + "peer":{"N":{"tab":["n1"]}, + "V":{"tab":"v1"}}, + "pen":{"N":{"tab":["n1"]}}, + "penalty":{"N":{"tab":["n3"]}}, + "pencil":{"N":{"tab":["n1"]}}, + "penetrate":{"V":{"tab":"v3"}}, + "penny":{"N":{"tab":["n3"]}}, + "pension":{"N":{"tab":["n1"]}}, + "pensioner":{"N":{"tab":["n1"]}}, + "people":{"N":{"tab":["n6"]}}, + "pepper":{"N":{"tab":["n1"]}}, + "per":{"P":{"tab":["pp"]}}, + "perceive":{"V":{"tab":"v3"}}, + "percentage":{"N":{"tab":["n1"]}}, + "perception":{"N":{"tab":["n1"]}}, + "perfect":{"A":{"tab":["a1"]}}, + "perfectly":{"Adv":{"tab":["b1"]}}, + "perform":{"V":{"tab":"v1"}}, + "performance":{"N":{"tab":["n1"]}}, + "performer":{"N":{"tab":["n1"]}}, + "perhaps":{"Adv":{"tab":["b1"]}}, + "period":{"N":{"tab":["n1"]}}, + "permanent":{"A":{"tab":["a1"]}}, + "permanently":{"Adv":{"tab":["b1"]}}, + "permission":{"N":{"tab":["n5"]}}, + "permit":{"V":{"tab":"v14"}}, + "persist":{"V":{"tab":"v1"}}, + "persistent":{"A":{"tab":["a1"]}}, + "person":{"N":{"tab":["n1"]}}, + "personal":{"A":{"tab":["a1"]}}, + "personality":{"N":{"tab":["n3"]}}, + "personally":{"Adv":{"tab":["b1"]}}, + "personnel":{"N":{"tab":["n1"]}}, + "perspective":{"N":{"tab":["n1"]}}, + "persuade":{"V":{"tab":"v3"}}, + "pest":{"N":{"tab":["n1"]}}, + "pet":{"N":{"tab":["n1"]}}, + "petition":{"N":{"tab":["n1"]}}, + "petrol":{"N":{"tab":["n5"]}}, + "petty":{"A":{"tab":["a4"]}}, + "phase":{"N":{"tab":["n1"]}}, + "phenomenon":{"N":{"tab":["n26"]}}, + "philosopher":{"N":{"tab":["n1"]}}, + "philosophical":{"A":{"tab":["a1"]}}, + "philosophy":{"N":{"tab":["n3"]}}, + "phone":{"N":{"tab":["n1"]}, + "V":{"tab":"v3"}}, + "photo":{"N":{"tab":["n1"]}}, + "photograph":{"N":{"tab":["n1"]}, + "V":{"tab":"v1"}}, + "photographer":{"N":{"tab":["n1"]}}, + "photographic":{"A":{"tab":["a1"]}}, + "photography":{"N":{"tab":["n5"]}}, + "phrase":{"N":{"tab":["n1"]}}, + "physical":{"A":{"tab":["a1"]}}, + "physically":{"Adv":{"tab":["b1"]}}, + "physician":{"N":{"tab":["n1"]}}, + "physics":{"N":{"tab":["n5"]}}, + "piano":{"N":{"tab":["n1"]}}, + "pick":{"V":{"tab":"v1"}}, + "picture":{"N":{"tab":["n1"]}, + "V":{"tab":"v3"}}, + "pie":{"N":{"tab":["n1"]}}, + "piece":{"N":{"tab":["n1"]}}, + "pier":{"N":{"tab":["n1"]}}, + "pig":{"N":{"tab":["n1"]}}, + "pigeon":{"N":{"tab":["n1"]}}, + "pile":{"N":{"tab":["n1"]}, + "V":{"tab":"v3"}}, + "pill":{"N":{"tab":["n1"]}}, + "pillar":{"N":{"tab":["n1"]}}, + "pillow":{"N":{"tab":["n1"]}}, + "pilot":{"N":{"tab":["n1"]}}, + "pin":{"N":{"tab":["n1"]}, + "V":{"tab":"v11"}}, + "pine":{"N":{"tab":["n1"]}}, + "pink":{"A":{"tab":["a3"]}}, + "pint":{"N":{"tab":["n1"]}}, + "pioneer":{"N":{"tab":["n1"]}}, + "pipe":{"N":{"tab":["n1"]}}, + "pit":{"N":{"tab":["n1"]}}, + "pitch":{"N":{"tab":["n2"]}}, + "pity":{"N":{"tab":["n3"]}}, + "place":{"N":{"tab":["n1"]}, + "V":{"tab":"v3"}}, + "plain":{"A":{"tab":["a3"]}, + "N":{"tab":["n1"]}}, + "plaintiff":{"N":{"tab":["n1"]}}, + "plan":{"N":{"tab":["n1"]}, + "V":{"tab":"v11"}}, + "plane":{"N":{"tab":["n1"]}}, + "planet":{"N":{"tab":["n1"]}}, + "planner":{"N":{"tab":["n1"]}}, + "plant":{"N":{"tab":["n1"]}, + "V":{"tab":"v1"}}, + "plasma":{"N":{"tab":["n5"]}}, + "plaster":{"N":{"tab":["n1"]}}, + "plastic":{"N":{"tab":["n1"]}}, + "plate":{"N":{"tab":["n1"]}}, + "platform":{"N":{"tab":["n1"]}}, + "plausible":{"A":{"tab":["a1"]}}, + "play":{"N":{"tab":["n1"]}, + "V":{"tab":"v1"}}, + "player":{"N":{"tab":["n1"]}}, + "plea":{"N":{"tab":["n1"]}}, + "plead":{"V":{"tab":"v165"}}, + "pleasant":{"A":{"tab":["a1"]}}, + "please":{"V":{"tab":"v3"}}, + "pleased":{"A":{"tab":["a1"]}}, + "pleasure":{"N":{"tab":["n1"]}}, + "pledge":{"V":{"tab":"v3"}}, + "plot":{"N":{"tab":["n1"]}, + "V":{"tab":"v14"}}, + "plug":{"V":{"tab":"v7"}}, + "plunge":{"V":{"tab":"v3"}}, + "plus":{"P":{"tab":["pp"]}}, + "pocket":{"N":{"tab":["n1"]}}, + "poem":{"N":{"tab":["n1"]}}, + "poet":{"N":{"tab":["n1"]}}, + "poetry":{"N":{"tab":["n5"]}}, + "point":{"N":{"tab":["n1"]}, + "V":{"tab":"v1"}}, + "poison":{"N":{"tab":["n1"]}, + "V":{"tab":"v1"}}, + "pole":{"N":{"tab":["n1"]}}, + "police":{"N":{"tab":["n4"]}}, + "policeman":{"N":{"tab":["n7"]}}, + "policy":{"N":{"tab":["n3"]}}, + "polish":{"V":{"tab":"v2"}}, + "polite":{"A":{"tab":["a2"]}}, + "political":{"A":{"tab":["a1"]}}, + "politically":{"Adv":{"tab":["b1"]}}, + "politician":{"N":{"tab":["n1"]}}, + "politics":{"N":{"tab":["n5"]}}, + "poll":{"N":{"tab":["n1"]}}, + "pollution":{"N":{"tab":["n5"]}}, + "polytechnic":{"N":{"tab":["n1"]}}, + "pond":{"N":{"tab":["n1"]}}, + "pony":{"N":{"tab":["n3"]}}, + "pool":{"N":{"tab":["n1"]}}, + "poor":{"A":{"tab":["a3"]}}, + "poorly":{"Adv":{"tab":["b1"]}}, + "pop":{"N":{"tab":["n1"]}, + "V":{"tab":"v12"}}, + "popular":{"A":{"tab":["a1"]}}, + "popularity":{"N":{"tab":["n5"]}}, + "population":{"N":{"tab":["n1"]}}, + "port":{"N":{"tab":["n1"]}}, + "portable":{"A":{"tab":["a1"]}}, + "porter":{"N":{"tab":["n1"]}}, + "portfolio":{"N":{"tab":["n1"]}}, + "portion":{"N":{"tab":["n1"]}}, + "portrait":{"N":{"tab":["n1"]}}, + "portray":{"V":{"tab":"v1"}}, + "pose":{"V":{"tab":"v3"}}, + "position":{"N":{"tab":["n1"]}, + "V":{"tab":"v1"}}, + "positive":{"A":{"tab":["a1"]}}, + "positively":{"Adv":{"tab":["b1"]}}, + "possess":{"V":{"tab":"v2"}}, + "possession":{"N":{"tab":["n1"]}}, + "possibility":{"N":{"tab":["n3"]}}, + "possible":{"A":{"tab":["a1"]}}, + "possibly":{"Adv":{"tab":["b1"]}}, + "post":{"N":{"tab":["n1"]}, + "V":{"tab":"v1"}}, + "postcard":{"N":{"tab":["n1"]}}, + "poster":{"N":{"tab":["n1"]}}, + "postpone":{"V":{"tab":"v3"}}, + "pot":{"N":{"tab":["n1"]}}, + "potato":{"N":{"tab":["n2"]}}, + "potential":{"A":{"tab":["a1"]}, + "N":{"tab":["n1"]}}, + "potentially":{"Adv":{"tab":["b1"]}}, + "pottery":{"N":{"tab":["n3"]}}, + "pound":{"N":{"tab":["n1"]}}, + "pour":{"V":{"tab":"v1"}}, + "poverty":{"N":{"tab":["n5"]}}, + "powder":{"N":{"tab":["n1"]}}, + "power":{"N":{"tab":["n1"]}, + "V":{"tab":"v1"}}, + "powerful":{"A":{"tab":["a1"]}}, + "practical":{"A":{"tab":["a1"]}}, + "practically":{"Adv":{"tab":["b1"]}}, + "practice":{"N":{"tab":["n1"]}}, + "practise":{"V":{"tab":"v3"}}, + "practitioner":{"N":{"tab":["n1"]}}, + "praise":{"N":{"tab":["n1"]}, + "V":{"tab":"v3"}}, + "pray":{"V":{"tab":"v1"}}, + "prayer":{"N":{"tab":["n1"]}}, + "preach":{"V":{"tab":"v2"}}, + "precaution":{"N":{"tab":["n1"]}}, + "precede":{"V":{"tab":"v3"}}, + "precedent":{"N":{"tab":["n1"]}}, + "precious":{"A":{"tab":["a1"]}}, + "precise":{"A":{"tab":["a1"]}}, + "precisely":{"Adv":{"tab":["b1"]}}, + "precision":{"N":{"tab":["n5"]}}, + "predator":{"N":{"tab":["n1"]}}, + "predecessor":{"N":{"tab":["n1"]}}, + "predict":{"V":{"tab":"v1"}}, + "predictable":{"A":{"tab":["a1"]}}, + "prediction":{"N":{"tab":["n1"]}}, + "predominantly":{"Adv":{"tab":["b1"]}}, + "prefer":{"V":{"tab":"v13"}}, + "preference":{"N":{"tab":["n1"]}}, + "pregnancy":{"N":{"tab":["n3"]}}, + "pregnant":{"A":{"tab":["a1"]}}, + "prejudice":{"N":{"tab":["n1"]}}, + "preliminary":{"A":{"tab":["a1"]}}, + "premature":{"A":{"tab":["a1"]}}, + "premier":{"A":{"tab":["a1"]}}, + "premise":{"N":{"tab":["n1"]}}, + "premium":{"N":{"tab":["n1"]}}, + "preoccupation":{"N":{"tab":["n1"]}}, + "preparation":{"N":{"tab":["n1"]}}, + "prepare":{"V":{"tab":"v3"}}, + "prescribe":{"V":{"tab":"v3"}}, + "prescription":{"N":{"tab":["n1"]}}, + "presence":{"N":{"tab":["n5"]}}, + "present":{"A":{"tab":["a1"]}, + "N":{"tab":["n1"]}, + "V":{"tab":"v1"}}, + "presentation":{"N":{"tab":["n1"]}}, + "presently":{"Adv":{"tab":["b1"]}}, + "preservation":{"N":{"tab":["n5"]}}, + "preserve":{"V":{"tab":"v3"}}, + "presidency":{"N":{"tab":["n3"]}}, + "president":{"N":{"tab":["n1"]}}, + "presidential":{"A":{"tab":["a1"]}}, + "press":{"N":{"tab":["n2"]}, + "V":{"tab":"v2"}}, + "pressure":{"N":{"tab":["n1"]}}, + "prestige":{"N":{"tab":["n5"]}}, + "presumably":{"Adv":{"tab":["b1"]}}, + "presume":{"V":{"tab":"v3"}}, + "pretend":{"V":{"tab":"v1"}}, + "pretty":{"A":{"tab":["a4"]}, + "Adv":{"tab":["b1"]}}, + "prevail":{"V":{"tab":"v1"}}, + "prevalence":{"N":{"tab":["n5"]}}, + "prevent":{"V":{"tab":"v1"}}, + "prevention":{"N":{"tab":["n5"]}}, + "previous":{"A":{"tab":["a1"]}}, + "previously":{"Adv":{"tab":["b1"]}}, + "prey":{"N":{"tab":["n1"]}}, + "price":{"N":{"tab":["n1"]}, + "V":{"tab":"v3"}}, + "pride":{"N":{"tab":["n1"]}}, + "priest":{"N":{"tab":["n1"]}}, + "primarily":{"Adv":{"tab":["b1"]}}, + "primary":{"A":{"tab":["a1"]}, + "N":{"tab":["n3"]}}, + "prime":{"A":{"tab":["a1"]}}, + "primitive":{"A":{"tab":["a1"]}}, + "prince":{"N":{"tab":["n1"]}}, + "princess":{"N":{"g":"f", + "tab":["n88"]}}, + "principal":{"A":{"tab":["a1"]}, + "N":{"tab":["n1"]}}, + "principally":{"Adv":{"tab":["b1"]}}, + "principle":{"N":{"tab":["n1"]}}, + "print":{"N":{"tab":["n1"]}, + "V":{"tab":"v1"}}, + "printer":{"N":{"tab":["n1"]}}, + "printing":{"N":{"tab":["n1"]}}, + "prior":{"A":{"tab":["a1"]}}, + "priority":{"N":{"tab":["n3"]}}, + "prison":{"N":{"tab":["n1"]}}, + "prisoner":{"N":{"tab":["n1"]}}, + "privacy":{"N":{"tab":["n5"]}}, + "private":{"A":{"tab":["a1"]}}, + "privately":{"Adv":{"tab":["b1"]}}, + "privatization":{"N":{"tab":["n5"]}}, + "privilege":{"N":{"tab":["n1"]}}, + "privileged":{"A":{"tab":["a1"]}}, + "prize":{"N":{"tab":["n1"]}}, + "probability":{"N":{"tab":["n3"]}}, + "probable":{"A":{"tab":["a1"]}}, + "probably":{"Adv":{"tab":["b1"]}}, + "probe":{"N":{"tab":["n1"]}, + "V":{"tab":"v3"}}, + "problem":{"N":{"tab":["n1"]}}, + "procedure":{"N":{"tab":["n1"]}}, + "proceed":{"V":{"tab":"v1"}}, + "proceeding":{"N":{"tab":["n1"]}}, + "process":{"N":{"tab":["n2"]}, + "V":{"tab":"v2"}}, + "procession":{"N":{"tab":["n1"]}}, + "proclaim":{"V":{"tab":"v1"}}, + "produce":{"N":{"tab":["n5"]}, + "V":{"tab":"v3"}}, + "producer":{"N":{"tab":["n1"]}}, + "product":{"N":{"tab":["n1"]}}, + "production":{"N":{"tab":["n1"]}}, + "productive":{"A":{"tab":["a1"]}}, + "productivity":{"N":{"tab":["n5"]}}, + "profession":{"N":{"tab":["n1"]}}, + "professional":{"A":{"tab":["a1"]}, + "N":{"tab":["n1"]}}, + "professor":{"N":{"tab":["n1"]}}, + "profile":{"N":{"tab":["n1"]}}, + "profit":{"N":{"tab":["n1"]}, + "V":{"tab":"v1"}}, + "profitable":{"A":{"tab":["a1"]}}, + "profound":{"A":{"tab":["a1"]}}, + "program":{"N":{"tab":["n1"]}, + "V":{"tab":"v10"}}, + "programme":{"N":{"tab":["n1"]}}, + "progress":{"N":{"tab":["n2"]}, + "V":{"tab":"v2"}}, + "progressive":{"A":{"tab":["a1"]}}, + "prohibit":{"V":{"tab":"v1"}}, + "project":{"N":{"tab":["n1"]}, + "V":{"tab":"v1"}}, + "projection":{"N":{"tab":["n1"]}}, + "prolonged":{"A":{"tab":["a1"]}}, + "prominent":{"A":{"tab":["a1"]}}, + "promise":{"N":{"tab":["n1"]}, + "V":{"tab":"v3"}}, + "promote":{"V":{"tab":"v3"}}, + "promoter":{"N":{"tab":["n1"]}}, + "promotion":{"N":{"tab":["n1"]}}, + "prompt":{"V":{"tab":"v1"}}, + "promptly":{"Adv":{"tab":["b1"]}}, + "prone":{"A":{"tab":["a1"]}}, + "pronounce":{"V":{"tab":"v3"}}, + "proof":{"N":{"tab":["n1"]}}, + "prop":{"V":{"tab":"v12"}}, + "propaganda":{"N":{"tab":["n5"]}}, + "proper":{"A":{"tab":["a1"]}}, + "properly":{"Adv":{"tab":["b1"]}}, + "property":{"N":{"tab":["n3"]}}, + "proportion":{"N":{"tab":["n1"]}}, + "proportional":{"A":{"tab":["a1"]}}, + "proposal":{"N":{"tab":["n1"]}}, + "propose":{"V":{"tab":"v3"}}, + "proposition":{"N":{"tab":["n1"]}}, + "proprietor":{"N":{"tab":["n1"]}}, + "prosecute":{"V":{"tab":"v3"}}, + "prosecution":{"N":{"tab":["n1"]}}, + "prospect":{"N":{"tab":["n1"]}}, + "prospective":{"A":{"tab":["a1"]}}, + "prosperity":{"N":{"tab":["n5"]}}, + "protect":{"V":{"tab":"v1"}}, + "protection":{"N":{"tab":["n1"]}}, + "protective":{"A":{"tab":["a1"]}}, + "protein":{"N":{"tab":["n1"]}}, + "protest":{"N":{"tab":["n1"]}, + "V":{"tab":"v1"}}, + "protocol":{"N":{"tab":["n1"]}}, + "proud":{"A":{"tab":["a3"]}}, + "prove":{"V":{"tab":"v52"}}, + "provide":{"V":{"tab":"v3"}}, + "provider":{"N":{"tab":["n1"]}}, + "province":{"N":{"tab":["n1"]}}, + "provincial":{"A":{"tab":["a1"]}}, + "provision":{"N":{"tab":["n1"]}}, + "provisional":{"A":{"tab":["a1"]}}, + "provoke":{"V":{"tab":"v3"}}, + "psychiatric":{"A":{"tab":["a1"]}}, + "psychological":{"A":{"tab":["a1"]}}, + "psychologist":{"N":{"tab":["n1"]}}, + "psychology":{"N":{"tab":["n3"]}}, + "pub":{"N":{"tab":["n1"]}}, + "public":{"A":{"tab":["a1"]}, + "N":{"tab":["n1"]}}, + "publication":{"N":{"tab":["n1"]}}, + "publicity":{"N":{"tab":["n5"]}}, + "publicly":{"Adv":{"tab":["b1"]}}, + "publish":{"V":{"tab":"v2"}}, + "publisher":{"N":{"tab":["n1"]}}, + "pudding":{"N":{"tab":["n1"]}}, + "pull":{"V":{"tab":"v1"}}, + "pulse":{"N":{"tab":["n1"]}}, + "pump":{"N":{"tab":["n1"]}, + "V":{"tab":"v1"}}, + "punch":{"N":{"tab":["n2"]}, + "V":{"tab":"v2"}}, + "punish":{"V":{"tab":"v2"}}, + "punishment":{"N":{"tab":["n1"]}}, + "pupil":{"N":{"tab":["n1"]}}, + "purchase":{"N":{"tab":["n1"]}, + "V":{"tab":"v3"}}, + "purchaser":{"N":{"tab":["n1"]}}, + "pure":{"A":{"tab":["a2"]}}, + "purely":{"Adv":{"tab":["b1"]}}, + "purple":{"A":{"tab":["a1"]}}, + "purpose":{"N":{"tab":["n1"]}}, + "pursue":{"V":{"tab":"v3"}}, + "pursuit":{"N":{"tab":["n1"]}}, + "push":{"N":{"tab":["n2"]}, + "V":{"tab":"v2"}}, + "put":{"V":{"tab":"v17"}}, + "puzzle":{"V":{"tab":"v3"}}, + "qualification":{"N":{"tab":["n1"]}}, + "qualified":{"A":{"tab":["a1"]}}, + "qualify":{"V":{"tab":"v4"}}, + "quality":{"N":{"tab":["n3"]}}, + "quantitative":{"A":{"tab":["a1"]}}, + "quantity":{"N":{"tab":["n3"]}}, + "quantum":{"N":{"tab":["n11"]}}, + "quarry":{"N":{"tab":["n3"]}}, + "quarter":{"N":{"tab":["n1"]}}, + "queen":{"N":{"g":"f", + "tab":["n87"]}}, + "query":{"N":{"tab":["n3"]}}, + "quest":{"N":{"tab":["n1"]}}, + "question":{"N":{"tab":["n1"]}, + "V":{"tab":"v1"}}, + "questionnaire":{"N":{"tab":["n1"]}}, + "queue":{"N":{"tab":["n1"]}}, + "quick":{"A":{"tab":["a3"]}, + "Adv":{"tab":["b1"]}}, + "quickly":{"Adv":{"tab":["b1"]}}, + "quid":{"N":{"tab":["n1"]}}, + "quiet":{"A":{"tab":["a3"]}}, + "quietly":{"Adv":{"tab":["b1"]}}, + "quit":{"V":{"tab":"v38"}}, + "quite":{"Adv":{"tab":["b1"]}}, + "quota":{"N":{"tab":["n1"]}}, + "quotation":{"N":{"tab":["n1"]}}, + "quote":{"V":{"tab":"v3"}}, + "rabbit":{"N":{"tab":["n1"]}}, + "race":{"N":{"tab":["n1"]}, + "V":{"tab":"v3"}}, + "racial":{"A":{"tab":["a1"]}}, + "racism":{"N":{"tab":["n5"]}}, + "rack":{"N":{"tab":["n1"]}}, + "radiation":{"N":{"tab":["n1"]}}, + "radical":{"A":{"tab":["a1"]}, + "N":{"tab":["n1"]}}, + "radio":{"N":{"tab":["n1"]}}, + "rage":{"N":{"tab":["n1"]}}, + "raid":{"N":{"tab":["n1"]}}, + "rail":{"N":{"tab":["n1"]}}, + "railway":{"N":{"tab":["n1"]}}, + "rain":{"N":{"tab":["n1"]}, + "V":{"tab":"v1"}}, + "raise":{"V":{"tab":"v3"}}, + "rally":{"N":{"tab":["n3"]}, + "V":{"tab":"v4"}}, + "ram":{"N":{"tab":["n1"]}}, + "range":{"N":{"tab":["n1"]}, + "V":{"tab":"v3"}}, + "rank":{"N":{"tab":["n1"]}, + "V":{"tab":"v1"}}, + "rape":{"N":{"tab":["n1"]}, + "V":{"tab":"v3"}}, + "rapid":{"A":{"tab":["a1"]}}, + "rapidly":{"Adv":{"tab":["b1"]}}, + "rare":{"A":{"tab":["a2"]}}, + "rarely":{"Adv":{"tab":["b1"]}}, + "rat":{"N":{"tab":["n1"]}}, + "rate":{"N":{"tab":["n1"]}, + "V":{"tab":"v3"}}, + "rather":{"Adv":{"tab":["b1"]}}, + "rating":{"N":{"tab":["n1"]}}, + "ratio":{"N":{"tab":["n1"]}}, + "rational":{"A":{"tab":["a1"]}}, + "raw":{"A":{"tab":["a1"]}}, + "ray":{"N":{"tab":["n1"]}}, + "reach":{"N":{"tab":["n2"]}, + "V":{"tab":"v2"}}, + "react":{"V":{"tab":"v1"}}, + "reaction":{"N":{"tab":["n1"]}}, + "reactor":{"N":{"tab":["n1"]}}, + "read":{"V":{"tab":"v18"}}, + "reader":{"N":{"tab":["n1"]}}, + "readily":{"Adv":{"tab":["b1"]}}, + "reading":{"N":{"tab":["n1"]}}, + "ready":{"A":{"tab":["a4"]}}, + "real":{"A":{"tab":["a1"]}}, + "realism":{"N":{"tab":["n5"]}}, + "realistic":{"A":{"tab":["a1"]}}, + "reality":{"N":{"tab":["n3"]}}, + "realize":{"V":{"tab":"v3"}}, + "really":{"Adv":{"tab":["b1"]}}, + "realm":{"N":{"tab":["n1"]}}, + "rear":{"N":{"tab":["n1"]}, + "V":{"tab":"v1"}}, + "reason":{"N":{"tab":["n1"]}}, + "reasonable":{"A":{"tab":["a1"]}}, + "reasonably":{"Adv":{"tab":["b1"]}}, + "reasoning":{"N":{"tab":["n5"]}}, + "reassure":{"V":{"tab":"v3"}}, + "rebel":{"N":{"tab":["n1"]}}, + "rebellion":{"N":{"tab":["n1"]}}, + "rebuild":{"V":{"tab":"v23"}}, + "recall":{"V":{"tab":"v1"}}, + "receipt":{"N":{"tab":["n1"]}}, + "receive":{"V":{"tab":"v3"}}, + "receiver":{"N":{"tab":["n1"]}}, + "recent":{"A":{"tab":["a1"]}}, + "recently":{"Adv":{"tab":["b1"]}}, + "reception":{"N":{"tab":["n1"]}}, + "recession":{"N":{"tab":["n1"]}}, + "recipe":{"N":{"tab":["n1"]}}, + "recipient":{"N":{"tab":["n1"]}}, + "reckon":{"V":{"tab":"v1"}}, + "recognition":{"N":{"tab":["n5"]}}, + "recognize":{"V":{"tab":"v3"}}, + "recommend":{"V":{"tab":"v1"}}, + "recommendation":{"N":{"tab":["n1"]}}, + "recommended":{"A":{"tab":["a1"]}}, + "reconcile":{"V":{"tab":"v3"}}, + "reconstruction":{"N":{"tab":["n1"]}}, + "record":{"N":{"tab":["n1"]}, + "V":{"tab":"v1"}}, + "recorder":{"N":{"tab":["n1"]}}, + "recording":{"N":{"tab":["n1"]}}, + "recover":{"V":{"tab":"v1"}}, + "recovery":{"N":{"tab":["n3"]}}, + "recreation":{"N":{"tab":["n1"]}}, + "recruit":{"N":{"tab":["n1"]}, + "V":{"tab":"v1"}}, + "recruitment":{"N":{"tab":["n1"]}}, + "recycle":{"V":{"tab":"v3"}}, + "red":{"A":{"tab":["a6"]}, + "N":{"tab":["n1"]}}, + "reduce":{"V":{"tab":"v3"}}, + "reduction":{"N":{"tab":["n1"]}}, + "redundancy":{"N":{"tab":["n3"]}}, + "redundant":{"A":{"tab":["a1"]}}, + "refer":{"V":{"tab":"v13"}}, + "referee":{"N":{"tab":["n1"]}}, + "reference":{"N":{"tab":["n1"]}}, + "referendum":{"N":{"tab":["n1"]}}, + "reflect":{"V":{"tab":"v1"}}, + "reflection":{"N":{"tab":["n1"]}}, + "reform":{"N":{"tab":["n1"]}, + "V":{"tab":"v1"}}, + "reformer":{"N":{"tab":["n1"]}}, + "refuge":{"N":{"tab":["n1"]}}, + "refugee":{"N":{"tab":["n1"]}}, + "refusal":{"N":{"tab":["n1"]}}, + "refuse":{"V":{"tab":"v3"}}, + "regain":{"V":{"tab":"v1"}}, + "regard":{"N":{"tab":["n1"]}, + "V":{"tab":"v1"}}, + "regime":{"N":{"tab":["n1"]}}, + "regiment":{"N":{"tab":["n1"]}}, + "region":{"N":{"tab":["n1"]}}, + "regional":{"A":{"tab":["a1"]}}, + "register":{"N":{"tab":["n1"]}, + "V":{"tab":"v1"}}, + "registration":{"N":{"tab":["n1"]}}, + "regret":{"N":{"tab":["n1"]}, + "V":{"tab":"v14"}}, + "regular":{"A":{"tab":["a1"]}}, + "regularly":{"Adv":{"tab":["b1"]}}, + "regulate":{"V":{"tab":"v3"}}, + "regulation":{"N":{"tab":["n1"]}}, + "regulatory":{"A":{"tab":["a1"]}}, + "rehabilitation":{"N":{"tab":["n1"]}}, + "rehearsal":{"N":{"tab":["n1"]}}, + "reign":{"N":{"tab":["n1"]}}, + "reinforce":{"V":{"tab":"v3"}}, + "reject":{"V":{"tab":"v1"}}, + "rejection":{"N":{"tab":["n1"]}}, + "relate":{"V":{"tab":"v3"}}, + "relation":{"N":{"tab":["n1"]}}, + "relationship":{"N":{"tab":["n1"]}}, + "relative":{"A":{"tab":["a1"]}, + "N":{"tab":["n1"]}}, + "relatively":{"Adv":{"tab":["b1"]}}, + "relax":{"V":{"tab":"v2"}}, + "relaxation":{"N":{"tab":["n1"]}}, + "release":{"N":{"tab":["n1"]}, + "V":{"tab":"v3"}}, + "relevance":{"N":{"tab":["n1"]}}, + "relevant":{"A":{"tab":["a1"]}}, + "reliable":{"A":{"tab":["a1"]}}, + "reliance":{"N":{"tab":["n5"]}}, + "relief":{"N":{"tab":["n1"]}}, + "relieve":{"V":{"tab":"v3"}}, + "religion":{"N":{"tab":["n1"]}}, + "religious":{"A":{"tab":["a1"]}}, + "reluctance":{"N":{"tab":["n5"]}}, + "reluctant":{"A":{"tab":["a1"]}}, + "reluctantly":{"Adv":{"tab":["b1"]}}, + "rely":{"V":{"tab":"v4"}}, + "remain":{"V":{"tab":"v1"}}, + "remainder":{"N":{"tab":["n1"]}}, + "remark":{"N":{"tab":["n1"]}, + "V":{"tab":"v1"}}, + "remarkable":{"A":{"tab":["a1"]}}, + "remarkably":{"Adv":{"tab":["b1"]}}, + "remedy":{"N":{"tab":["n3"]}}, + "remember":{"V":{"tab":"v1"}}, + "remind":{"V":{"tab":"v1"}}, + "reminder":{"N":{"tab":["n1"]}}, + "remote":{"A":{"tab":["a2"]}}, + "removal":{"N":{"tab":["n1"]}}, + "remove":{"V":{"tab":"v3"}}, + "renaissance":{"N":{"tab":["n1"]}}, + "render":{"V":{"tab":"v1"}}, + "renew":{"V":{"tab":"v1"}}, + "renewal":{"N":{"tab":["n1"]}}, + "rent":{"N":{"tab":["n1"]}}, + "repair":{"N":{"tab":["n1"]}, + "V":{"tab":"v1"}}, + "repay":{"V":{"tab":"v19"}}, + "repayment":{"N":{"tab":["n1"]}}, + "repeat":{"V":{"tab":"v1"}}, + "repeated":{"A":{"tab":["a1"]}}, + "repeatedly":{"Adv":{"tab":["b1"]}}, + "repetition":{"N":{"tab":["n1"]}}, + "replace":{"V":{"tab":"v3"}}, + "replacement":{"N":{"tab":["n1"]}}, + "reply":{"N":{"tab":["n3"]}, + "V":{"tab":"v4"}}, + "report":{"N":{"tab":["n1"]}, + "V":{"tab":"v1"}}, + "reportedly":{"Adv":{"tab":["b1"]}}, + "reporter":{"N":{"tab":["n1"]}}, + "represent":{"V":{"tab":"v1"}}, + "representation":{"N":{"tab":["n1"]}}, + "representative":{"A":{"tab":["a1"]}, + "N":{"tab":["n1"]}}, + "reproduce":{"V":{"tab":"v3"}}, + "reproduction":{"N":{"tab":["n1"]}}, + "republic":{"N":{"tab":["n1"]}}, + "republican":{"N":{"tab":["n1"]}}, + "reputation":{"N":{"tab":["n1"]}}, + "request":{"N":{"tab":["n1"]}, + "V":{"tab":"v1"}}, + "require":{"V":{"tab":"v3"}}, + "requirement":{"N":{"tab":["n1"]}}, + "rescue":{"N":{"tab":["n1"]}, + "V":{"tab":"v3"}}, + "research":{"N":{"tab":["n2"]}, + "V":{"tab":"v2"}}, + "researcher":{"N":{"tab":["n1"]}}, + "resemble":{"V":{"tab":"v3"}}, + "resent":{"V":{"tab":"v1"}}, + "resentment":{"N":{"tab":["n5"]}}, + "reservation":{"N":{"tab":["n1"]}}, + "reserve":{"N":{"tab":["n1"]}, + "V":{"tab":"v3"}}, + "reservoir":{"N":{"tab":["n1"]}}, + "residence":{"N":{"tab":["n1"]}}, + "resident":{"A":{"tab":["a1"]}, + "N":{"tab":["n1"]}}, + "residential":{"A":{"tab":["a1"]}}, + "residue":{"N":{"tab":["n1"]}}, + "resign":{"V":{"tab":"v1"}}, + "resignation":{"N":{"tab":["n1"]}}, + "resist":{"V":{"tab":"v1"}}, + "resistance":{"N":{"tab":["n1"]}}, + "resolution":{"N":{"tab":["n1"]}}, + "resolve":{"V":{"tab":"v3"}}, + "resort":{"N":{"tab":["n1"]}}, + "resource":{"N":{"tab":["n1"]}}, + "respect":{"N":{"tab":["n1"]}, + "V":{"tab":"v1"}}, + "respectable":{"A":{"tab":["a1"]}}, + "respective":{"A":{"tab":["a1"]}}, + "respectively":{"Adv":{"tab":["b1"]}}, + "respond":{"V":{"tab":"v1"}}, + "respondent":{"N":{"tab":["n1"]}}, + "response":{"N":{"tab":["n1"]}}, + "responsibility":{"N":{"tab":["n3"]}}, + "responsible":{"A":{"tab":["a1"]}}, + "rest":{"N":{"tab":["n1"]}, + "V":{"tab":"v1"}}, + "restaurant":{"N":{"tab":["n1"]}}, + "restoration":{"N":{"tab":["n1"]}}, + "restore":{"V":{"tab":"v3"}}, + "restrain":{"V":{"tab":"v1"}}, + "restraint":{"N":{"tab":["n1"]}}, + "restrict":{"V":{"tab":"v1"}}, + "restriction":{"N":{"tab":["n1"]}}, + "restrictive":{"A":{"tab":["a1"]}}, + "result":{"N":{"tab":["n1"]}, + "V":{"tab":"v1"}}, + "resume":{"V":{"tab":"v3"}}, + "retailer":{"N":{"tab":["n1"]}}, + "retain":{"V":{"tab":"v1"}}, + "retention":{"N":{"tab":["n5"]}}, + "retire":{"V":{"tab":"v3"}}, + "retired":{"A":{"tab":["a1"]}}, + "retirement":{"N":{"tab":["n1"]}}, + "retreat":{"N":{"tab":["n1"]}, + "V":{"tab":"v1"}}, + "retrieve":{"V":{"tab":"v3"}}, + "return":{"N":{"tab":["n1"]}, + "V":{"tab":"v1"}}, + "reveal":{"V":{"tab":"v1"}}, + "revelation":{"N":{"tab":["n1"]}}, + "revenge":{"N":{"tab":["n5"]}}, + "revenue":{"N":{"tab":["n1"]}}, + "reverse":{"N":{"tab":["n1"]}, + "V":{"tab":"v3"}}, + "revert":{"V":{"tab":"v1"}}, + "review":{"N":{"tab":["n1"]}, + "V":{"tab":"v1"}}, + "revise":{"V":{"tab":"v3"}}, + "revision":{"N":{"tab":["n1"]}}, + "revival":{"N":{"tab":["n1"]}}, + "revive":{"V":{"tab":"v3"}}, + "revolution":{"N":{"tab":["n1"]}}, + "revolutionary":{"A":{"tab":["a1"]}}, + "reward":{"N":{"tab":["n1"]}, + "V":{"tab":"v1"}}, + "rhetoric":{"N":{"tab":["n5"]}}, + "rhythm":{"N":{"tab":["n1"]}}, + "rib":{"N":{"tab":["n1"]}}, + "ribbon":{"N":{"tab":["n1"]}}, + "rice":{"N":{"tab":["n5"]}}, + "rich":{"A":{"tab":["a3"]}}, + "rid":{"V":{"tab":"v39"}}, + "ride":{"N":{"tab":["n1"]}, + "V":{"tab":"v47"}}, + "rider":{"N":{"tab":["n1"]}}, + "ridge":{"N":{"tab":["n1"]}}, + "ridiculous":{"A":{"tab":["a1"]}}, + "rifle":{"N":{"tab":["n1"]}}, + "right":{"A":{"tab":["a1"]}, + "Adv":{"tab":["b1"]}, + "N":{"tab":["n1"]}}, + "rightly":{"Adv":{"tab":["b1"]}}, + "rigid":{"A":{"tab":["a1"]}}, + "ring":{"N":{"tab":["n1"]}, + "V":{"tab":"v46"}}, + "riot":{"N":{"tab":["n1"]}}, + "rip":{"V":{"tab":"v12"}}, + "rise":{"N":{"tab":["n1"]}, + "V":{"tab":"v63"}}, + "risk":{"N":{"tab":["n1"]}, + "V":{"tab":"v1"}}, + "ritual":{"N":{"tab":["n1"]}}, + "rival":{"N":{"tab":["n1"]}}, + "river":{"N":{"tab":["n1"]}}, + "road":{"N":{"tab":["n1"]}}, + "roar":{"V":{"tab":"v1"}}, + "rob":{"V":{"tab":"v5"}}, + "robbery":{"N":{"tab":["n3"]}}, + "rock":{"N":{"tab":["n1"]}, + "V":{"tab":"v1"}}, + "rocket":{"N":{"tab":["n1"]}}, + "rod":{"N":{"tab":["n1"]}}, + "role":{"N":{"tab":["n1"]}}, + "roll":{"N":{"tab":["n1"]}, + "V":{"tab":"v1"}}, + "romance":{"N":{"tab":["n1"]}}, + "romantic":{"A":{"tab":["a1"]}}, + "roof":{"N":{"tab":["n1"]}}, + "room":{"N":{"tab":["n1"]}}, + "root":{"N":{"tab":["n1"]}, + "V":{"tab":"v1"}}, + "rope":{"N":{"tab":["n1"]}}, + "rose":{"N":{"tab":["n1"]}}, + "rotation":{"N":{"tab":["n1"]}}, + "rotten":{"A":{"tab":["a1"]}}, + "rough":{"A":{"tab":["a3"]}}, + "roughly":{"Adv":{"tab":["b1"]}}, + "round":{"A":{"tab":["a3"]}, + "N":{"tab":["n1"]}, + "P":{"tab":["pp"]}, + "V":{"tab":"v1"}}, + "route":{"N":{"tab":["n1"]}}, + "routine":{"N":{"tab":["n1"]}}, + "row":{"N":{"tab":["n1"]}, + "V":{"tab":"v1"}}, + "royal":{"A":{"tab":["a1"]}}, + "royalty":{"N":{"tab":["n3"]}}, + "rub":{"V":{"tab":"v5"}}, + "rubbish":{"N":{"tab":["n5"]}}, + "rude":{"A":{"tab":["a2"]}}, + "rug":{"N":{"tab":["n1"]}}, + "rugby":{"N":{"tab":["n5"]}}, + "ruin":{"N":{"tab":["n1"]}, + "V":{"tab":"v1"}}, + "rule":{"N":{"tab":["n1"]}, + "V":{"tab":"v3"}}, + "ruler":{"N":{"tab":["n1"]}}, + "ruling":{"A":{"tab":["a1"]}, + "N":{"tab":["n1"]}}, + "rumour":{"N":{"tab":["n1"]}}, + "run":{"N":{"tab":["n1"]}, + "V":{"tab":"v33"}}, + "runner":{"N":{"tab":["n1"]}}, + "running":{"A":{"tab":["a1"]}}, + "rural":{"A":{"tab":["a1"]}}, + "rush":{"N":{"tab":["n2"]}, + "V":{"tab":"v2"}}, + "sack":{"N":{"tab":["n1"]}, + "V":{"tab":"v1"}}, + "sacred":{"A":{"tab":["a1"]}}, + "sacrifice":{"N":{"tab":["n1"]}, + "V":{"tab":"v3"}}, + "sad":{"A":{"tab":["a6"]}}, + "sadly":{"Adv":{"tab":["b1"]}}, + "safe":{"A":{"tab":["a2"]}}, + "safely":{"Adv":{"tab":["b1"]}}, + "safety":{"N":{"tab":["n5"]}}, + "sail":{"N":{"tab":["n1"]}, + "V":{"tab":"v1"}}, + "sailor":{"N":{"tab":["n1"]}}, + "saint":{"N":{"tab":["n1"]}}, + "sake":{"N":{"tab":["n1"]}}, + "salad":{"N":{"tab":["n1"]}}, + "salary":{"N":{"tab":["n3"]}}, + "sale":{"N":{"tab":["n1"]}}, + "salmon":{"N":{"tab":["n4"]}}, + "salon":{"N":{"tab":["n1"]}}, + "salt":{"N":{"tab":["n1"]}}, + "salvation":{"N":{"tab":["n5"]}}, + "same":{"A":{"tab":["a1"]}}, + "sample":{"N":{"tab":["n1"]}, + "V":{"tab":"v3"}}, + "sanction":{"N":{"tab":["n1"]}}, + "sanctuary":{"N":{"tab":["n3"]}}, + "sand":{"N":{"tab":["n1"]}}, + "sandwich":{"N":{"tab":["n2"]}}, + "satellite":{"N":{"tab":["n1"]}}, + "satisfaction":{"N":{"tab":["n1"]}}, + "satisfactory":{"A":{"tab":["a1"]}}, + "satisfy":{"V":{"tab":"v4"}}, + "sauce":{"N":{"tab":["n1"]}}, + "sausage":{"N":{"tab":["n1"]}}, + "save":{"V":{"tab":"v3"}}, + "saving":{"N":{"tab":["n1"]}}, + "say":{"N":{"tab":["n1"]}, + "V":{"tab":"v19"}}, + "saying":{"N":{"tab":["n1"]}}, + "scale":{"N":{"tab":["n1"]}}, + "scan":{"V":{"tab":"v11"}}, + "scandal":{"N":{"tab":["n1"]}}, + "scar":{"V":{"tab":"v13"}}, + "scarcely":{"Adv":{"tab":["b1"]}}, + "scatter":{"V":{"tab":"v1"}}, + "scenario":{"N":{"tab":["n1"]}}, + "scene":{"N":{"tab":["n1"]}}, + "scent":{"N":{"tab":["n1"]}}, + "schedule":{"N":{"tab":["n1"]}, + "V":{"tab":"v3"}}, + "scheme":{"N":{"tab":["n1"]}}, + "scholar":{"N":{"tab":["n1"]}}, + "scholarship":{"N":{"tab":["n1"]}}, + "school":{"N":{"tab":["n1"]}}, + "science":{"N":{"tab":["n1"]}}, + "scientific":{"A":{"tab":["a1"]}}, + "scientist":{"N":{"tab":["n1"]}}, + "scope":{"N":{"tab":["n5"]}}, + "score":{"N":{"tab":["n1"]}, + "V":{"tab":"v3"}}, + "scramble":{"V":{"tab":"v3"}}, + "scrap":{"N":{"tab":["n1"]}}, + "scrape":{"V":{"tab":"v3"}}, + "scratch":{"V":{"tab":"v2"}}, + "scream":{"N":{"tab":["n1"]}, + "V":{"tab":"v1"}}, + "screen":{"N":{"tab":["n1"]}, + "V":{"tab":"v1"}}, + "screw":{"N":{"tab":["n1"]}, + "V":{"tab":"v1"}}, + "script":{"N":{"tab":["n1"]}}, + "scrutiny":{"N":{"tab":["n3"]}}, + "sculpture":{"N":{"tab":["n1"]}}, + "sea":{"N":{"tab":["n1"]}}, + "seal":{"N":{"tab":["n1"]}, + "V":{"tab":"v1"}}, + "search":{"N":{"tab":["n2"]}, + "V":{"tab":"v2"}}, + "season":{"N":{"tab":["n1"]}}, + "seasonal":{"A":{"tab":["a1"]}}, + "seat":{"N":{"tab":["n1"]}, + "V":{"tab":"v1"}}, + "second":{"N":{"tab":["n1"]}}, + "secondary":{"A":{"tab":["a1"]}}, + "secondly":{"Adv":{"tab":["b1"]}}, + "secret":{"A":{"tab":["a1"]}, + "N":{"tab":["n1"]}}, + "secretary":{"N":{"tab":["n3"]}}, + "secretion":{"N":{"tab":["n1"]}}, + "section":{"N":{"tab":["n1"]}}, + "sector":{"N":{"tab":["n1"]}}, + "secular":{"A":{"tab":["a1"]}}, + "secure":{"A":{"tab":["a1"]}, + "V":{"tab":"v3"}}, + "security":{"N":{"tab":["n3"]}}, + "sediment":{"N":{"tab":["n5"]}}, + "see":{"V":{"tab":"v50"}}, + "seed":{"N":{"tab":["n1"]}}, + "seek":{"V":{"tab":"v131"}}, + "seem":{"V":{"tab":"v1"}}, + "seemingly":{"Adv":{"tab":["b1"]}}, + "segment":{"N":{"tab":["n1"]}}, + "seize":{"V":{"tab":"v3"}}, + "seldom":{"Adv":{"tab":["b1"]}}, + "select":{"A":{"tab":["a1"]}, + "V":{"tab":"v1"}}, + "selection":{"N":{"tab":["n1"]}}, + "selective":{"A":{"tab":["a1"]}}, + "self":{"N":{"tab":["n9"]}}, + "sell":{"V":{"tab":"v31"}}, + "seller":{"N":{"tab":["n1"]}}, + "semantic":{"A":{"tab":["a1"]}}, + "semi-final":{"N":{"tab":["n1"]}}, + "seminar":{"N":{"tab":["n1"]}}, + "senate":{"N":{"tab":["n1"]}}, + "send":{"V":{"tab":"v23"}}, + "senior":{"A":{"tab":["a1"]}, + "N":{"tab":["n1"]}}, + "sensation":{"N":{"tab":["n1"]}}, + "sense":{"N":{"tab":["n1"]}, + "V":{"tab":"v3"}}, + "sensible":{"A":{"tab":["a1"]}}, + "sensitive":{"A":{"tab":["a1"]}}, + "sensitivity":{"N":{"tab":["n3"]}}, + "sentence":{"N":{"tab":["n1"]}, + "V":{"tab":"v3"}}, + "sentiment":{"N":{"tab":["n1"]}}, + "separate":{"A":{"tab":["a1"]}, + "V":{"tab":"v3"}}, + "separately":{"Adv":{"tab":["b1"]}}, + "separation":{"N":{"tab":["n1"]}}, + "sequence":{"N":{"tab":["n1"]}}, + "sergeant":{"N":{"tab":["n1"]}}, + "series":{"N":{"tab":["n4"]}}, + "serious":{"A":{"tab":["a1"]}}, + "seriously":{"Adv":{"tab":["b1"]}}, + "serum":{"N":{"tab":["n5"]}}, + "servant":{"N":{"tab":["n1"]}}, + "serve":{"V":{"tab":"v3"}}, + "server":{"N":{"tab":["n1"]}}, + "service":{"N":{"tab":["n1"]}, + "V":{"tab":"v3"}}, + "session":{"N":{"tab":["n1"]}}, + "set":{"N":{"tab":["n1"]}, + "V":{"tab":"v17"}}, + "setting":{"N":{"tab":["n1"]}}, + "settle":{"V":{"tab":"v3"}}, + "settlement":{"N":{"tab":["n1"]}}, + "severe":{"A":{"tab":["a2"]}}, + "severely":{"Adv":{"tab":["b1"]}}, + "sex":{"N":{"tab":["n2"]}}, + "sexual":{"A":{"tab":["a1"]}}, + "sexuality":{"N":{"tab":["n5"]}}, + "sexually":{"Adv":{"tab":["b1"]}}, + "shade":{"N":{"tab":["n1"]}}, + "shadow":{"N":{"tab":["n1"]}}, + "shaft":{"N":{"tab":["n1"]}}, + "shake":{"V":{"tab":"v20"}}, + "shall":{"V":{"tab":"v162"}}, + "shallow":{"A":{"tab":["a1"]}}, + "shame":{"N":{"tab":["n5"]}}, + "shape":{"N":{"tab":["n1"]}, + "V":{"tab":"v3"}}, + "share":{"N":{"tab":["n1"]}, + "V":{"tab":"v3"}}, + "shareholder":{"N":{"tab":["n1"]}}, + "sharp":{"A":{"tab":["a3"]}}, + "sharply":{"Adv":{"tab":["b1"]}}, + "shatter":{"V":{"tab":"v1"}}, + "shed":{"N":{"tab":["n1"]}, + "V":{"tab":"v39"}}, + "sheep":{"N":{"tab":["n4"]}}, + "sheer":{"A":{"tab":["a3"]}}, + "sheet":{"N":{"tab":["n1"]}}, + "shelf":{"N":{"tab":["n9"]}}, + "shell":{"N":{"tab":["n1"]}}, + "shelter":{"N":{"tab":["n1"]}}, + "shield":{"N":{"tab":["n1"]}}, + "shift":{"N":{"tab":["n1"]}, + "V":{"tab":"v1"}}, + "shilling":{"N":{"tab":["n1"]}}, + "shine":{"V":{"tab":"v66"}}, + "ship":{"N":{"tab":["n1"]}, + "V":{"tab":"v12"}}, + "shirt":{"N":{"tab":["n1"]}}, + "shit":{"N":{"tab":["n5"]}}, + "shiver":{"V":{"tab":"v1"}}, + "shock":{"N":{"tab":["n1"]}, + "V":{"tab":"v1"}}, + "shoe":{"N":{"tab":["n1"]}}, + "shoot":{"V":{"tab":"v40"}}, + "shop":{"N":{"tab":["n1"]}, + "V":{"tab":"v12"}}, + "shopping":{"N":{"tab":["n5"]}}, + "shore":{"N":{"tab":["n1"]}}, + "short":{"A":{"tab":["a3"]}, + "Adv":{"tab":["b1"]}, + "N":{"tab":["n1"]}}, + "short-term":{"A":{"tab":["a1"]}}, + "shortage":{"N":{"tab":["n1"]}}, + "shortly":{"Adv":{"tab":["b1"]}}, + "shot":{"N":{"tab":["n1"]}}, + "shoulder":{"N":{"tab":["n1"]}}, + "shout":{"N":{"tab":["n1"]}, + "V":{"tab":"v1"}}, + "show":{"N":{"tab":["n1"]}, + "V":{"tab":"v57"}}, + "shower":{"N":{"tab":["n1"]}}, + "shrink":{"V":{"tab":"v64"}}, + "shrub":{"N":{"tab":["n1"]}}, + "shrug":{"V":{"tab":"v7"}}, + "shut":{"V":{"tab":"v17"}}, + "shy":{"A":{"tab":["a3"]}}, + "sick":{"A":{"tab":["a1"]}}, + "sickness":{"N":{"tab":["n2"]}}, + "side":{"N":{"tab":["n1"]}}, + "sideways":{"Adv":{"tab":["b1"]}}, + "siege":{"N":{"tab":["n1"]}}, + "sigh":{"N":{"tab":["n1"]}, + "V":{"tab":"v1"}}, + "sight":{"N":{"tab":["n1"]}}, + "sign":{"N":{"tab":["n1"]}, + "V":{"tab":"v1"}}, + "signal":{"N":{"tab":["n1"]}, + "V":{"tab":"v9"}}, + "signature":{"N":{"tab":["n1"]}}, + "significance":{"N":{"tab":["n5"]}}, + "significant":{"A":{"tab":["a1"]}}, + "significantly":{"Adv":{"tab":["b1"]}}, + "silence":{"N":{"tab":["n1"]}}, + "silent":{"A":{"tab":["a1"]}}, + "silently":{"Adv":{"tab":["b1"]}}, + "silk":{"N":{"tab":["n1"]}}, + "silly":{"A":{"tab":["a4"]}}, + "silver":{"N":{"tab":["n5"]}}, + "similar":{"A":{"tab":["a1"]}}, + "similarity":{"N":{"tab":["n3"]}}, + "similarly":{"Adv":{"tab":["b1"]}}, + "simple":{"A":{"tab":["a2"]}}, + "simplicity":{"N":{"tab":["n5"]}}, + "simply":{"Adv":{"tab":["b1"]}}, + "simultaneously":{"Adv":{"tab":["b1"]}}, + "sin":{"N":{"tab":["n1"]}}, + "since":{"Adv":{"tab":["b1"]}, + "P":{"tab":["pp"]}}, + "sincerely":{"Adv":{"tab":["b1"]}}, + "sing":{"V":{"tab":"v46"}}, + "singer":{"N":{"tab":["n1"]}}, + "single":{"A":{"tab":["a1"]}, + "N":{"tab":["n1"]}}, + "sink":{"N":{"tab":["n1"]}, + "V":{"tab":"v64"}}, + "sip":{"V":{"tab":"v12"}}, + "sir":{"N":{"tab":["n1"]}}, + "sister":{"N":{"g":"f", + "tab":["n87"]}}, + "sit":{"V":{"tab":"v44"}}, + "site":{"N":{"tab":["n1"]}}, + "situation":{"N":{"tab":["n1"]}}, + "size":{"N":{"tab":["n1"]}}, + "skeleton":{"N":{"tab":["n1"]}}, + "sketch":{"N":{"tab":["n2"]}}, + "ski":{"N":{"tab":["n1"]}}, + "skill":{"N":{"tab":["n1"]}}, + "skilled":{"A":{"tab":["a1"]}}, + "skin":{"N":{"tab":["n1"]}}, + "skipper":{"N":{"tab":["n1"]}}, + "skirt":{"N":{"tab":["n1"]}}, + "skull":{"N":{"tab":["n1"]}}, + "sky":{"N":{"tab":["n3"]}}, + "slab":{"N":{"tab":["n1"]}}, + "slam":{"V":{"tab":"v10"}}, + "slap":{"V":{"tab":"v12"}}, + "slave":{"N":{"tab":["n1"]}}, + "sleep":{"N":{"tab":["n5"]}, + "V":{"tab":"v29"}}, + "sleeve":{"N":{"tab":["n1"]}}, + "slice":{"N":{"tab":["n1"]}}, + "slide":{"N":{"tab":["n1"]}, + "V":{"tab":"v75"}}, + "slight":{"A":{"tab":["a3"]}}, + "slightly":{"Adv":{"tab":["b1"]}}, + "slim":{"A":{"tab":["a9"]}}, + "slip":{"N":{"tab":["n1"]}, + "V":{"tab":"v12"}}, + "slogan":{"N":{"tab":["n1"]}}, + "slope":{"N":{"tab":["n1"]}}, + "slot":{"N":{"tab":["n1"]}}, + "slow":{"A":{"tab":["a3"]}, + "V":{"tab":"v1"}}, + "slowly":{"Adv":{"tab":["b1"]}}, + "slump":{"V":{"tab":"v1"}}, + "small":{"A":{"tab":["a3"]}}, + "smart":{"A":{"tab":["a3"]}}, + "smash":{"V":{"tab":"v2"}}, + "smell":{"N":{"tab":["n1"]}, + "V":{"tab":"v99"}}, + "smile":{"N":{"tab":["n1"]}, + "V":{"tab":"v3"}}, + "smoke":{"N":{"tab":["n1"]}, + "V":{"tab":"v3"}}, + "smooth":{"A":{"tab":["a3"]}, + "V":{"tab":"v1"}}, + "smoothly":{"Adv":{"tab":["b1"]}}, + "snake":{"N":{"tab":["n1"]}}, + "snap":{"V":{"tab":"v12"}}, + "snatch":{"V":{"tab":"v2"}}, + "sniff":{"V":{"tab":"v1"}}, + "snow":{"N":{"tab":["n1"]}}, + "so":{"Adv":{"tab":["b1"]}}, + "so-called":{"A":{"tab":["a1"]}}, + "soak":{"V":{"tab":"v1"}}, + "soap":{"N":{"tab":["n1"]}}, + "soar":{"V":{"tab":"v1"}}, + "soccer":{"N":{"tab":["n5"]}}, + "social":{"A":{"tab":["a1"]}}, + "socialism":{"N":{"tab":["n5"]}}, + "socialist":{"A":{"tab":["a1"]}, + "N":{"tab":["n1"]}}, + "socially":{"Adv":{"tab":["b1"]}}, + "society":{"N":{"tab":["n3"]}}, + "sociological":{"A":{"tab":["a1"]}}, + "sociology":{"N":{"tab":["n5"]}}, + "sock":{"N":{"tab":["n1"]}}, + "socket":{"N":{"tab":["n1"]}}, + "sodium":{"N":{"tab":["n5"]}}, + "sofa":{"N":{"tab":["n1"]}}, + "soft":{"A":{"tab":["a3"]}}, + "soften":{"V":{"tab":"v1"}}, + "softly":{"Adv":{"tab":["b1"]}}, + "software":{"N":{"tab":["n5"]}}, + "soil":{"N":{"tab":["n1"]}}, + "solar":{"A":{"tab":["a1"]}}, + "soldier":{"N":{"tab":["n1"]}}, + "sole":{"A":{"tab":["a1"]}}, + "solely":{"Adv":{"tab":["b1"]}}, + "solicitor":{"N":{"tab":["n1"]}}, + "solid":{"A":{"tab":["a1"]}}, + "solidarity":{"N":{"tab":["n5"]}}, + "solo":{"N":{"tab":["n1"]}}, + "solution":{"N":{"tab":["n1"]}}, + "solve":{"V":{"tab":"v3"}}, + "solvent":{"N":{"tab":["n1"]}}, + "somebody":{"Pro":{"tab":["pn5"]}}, + "somehow":{"Adv":{"tab":["b1"]}}, + "someone":{"Pro":{"tab":["pn5"]}}, + "something":{"Pro":{"tab":["pn5"]}}, + "sometimes":{"Adv":{"tab":["b1"]}}, + "somewhat":{"Adv":{"tab":["b1"]}}, + "somewhere":{"Adv":{"tab":["b1"]}}, + "son":{"N":{"tab":["n1"]}}, + "song":{"N":{"tab":["n1"]}}, + "soon":{"Adv":{"tab":["b1"]}}, + "sophisticated":{"A":{"tab":["a1"]}}, + "sore":{"A":{"tab":["a1"]}}, + "sorry":{"A":{"tab":["a4"]}}, + "sort":{"N":{"tab":["n1"]}, + "V":{"tab":"v1"}}, + "soul":{"N":{"tab":["n1"]}}, + "sound":{"A":{"tab":["a1"]}, + "N":{"tab":["n1"]}, + "V":{"tab":"v1"}}, + "soup":{"N":{"tab":["n5"]}}, + "source":{"N":{"tab":["n1"]}}, + "south":{"N":{"tab":["n5"]}}, + "southern":{"A":{"tab":["a1"]}}, + "sovereignty":{"N":{"tab":["n5"]}}, + "space":{"N":{"tab":["n1"]}}, + "spare":{"A":{"tab":["a1"]}, + "V":{"tab":"v3"}}, + "spatial":{"A":{"tab":["a1"]}}, + "speak":{"V":{"tab":"v138"}}, + "speaker":{"N":{"tab":["n1"]}}, + "special":{"A":{"tab":["a1"]}}, + "specialist":{"N":{"tab":["n1"]}}, + "specially":{"Adv":{"tab":["b1"]}}, + "species":{"N":{"tab":["n4"]}}, + "specific":{"A":{"tab":["a1"]}}, + "specifically":{"Adv":{"tab":["b1"]}}, + "specification":{"N":{"tab":["n1"]}}, + "specify":{"V":{"tab":"v4"}}, + "specimen":{"N":{"tab":["n1"]}}, + "spectacle":{"N":{"tab":["n1"]}}, + "spectacular":{"A":{"tab":["a1"]}}, + "spectator":{"N":{"tab":["n1"]}}, + "spectrum":{"N":{"tab":["n11"]}}, + "speculation":{"N":{"tab":["n1"]}}, + "speech":{"N":{"tab":["n2"]}}, + "speed":{"N":{"tab":["n1"]}, + "V":{"tab":"v133"}}, + "spell":{"N":{"tab":["n1"]}, + "V":{"tab":"v98"}}, + "spelling":{"N":{"tab":["n1"]}}, + "spend":{"V":{"tab":"v23"}}, + "sphere":{"N":{"tab":["n1"]}}, + "spider":{"N":{"tab":["n1"]}}, + "spill":{"V":{"tab":"v60"}}, + "spin":{"V":{"tab":"v104"}}, + "spine":{"N":{"tab":["n1"]}}, + "spirit":{"N":{"tab":["n1"]}}, + "spiritual":{"A":{"tab":["a1"]}}, + "spit":{"V":{"tab":"v44"}}, + "spite":{"N":{"tab":["n5"]}}, + "splendid":{"A":{"tab":["a1"]}}, + "split":{"N":{"tab":["n1"]}, + "V":{"tab":"v17"}}, + "spoil":{"V":{"tab":"v26"}}, + "spokesman":{"N":{"tab":["n7"]}}, + "sponsor":{"N":{"tab":["n1"]}, + "V":{"tab":"v1"}}, + "spontaneous":{"A":{"tab":["a1"]}}, + "spoon":{"N":{"tab":["n1"]}}, + "sport":{"N":{"tab":["n1"]}}, + "spot":{"N":{"tab":["n1"]}, + "V":{"tab":"v14"}}, + "spouse":{"N":{"tab":["n1"]}}, + "spray":{"N":{"tab":["n1"]}, + "V":{"tab":"v1"}}, + "spread":{"N":{"tab":["n1"]}, + "V":{"tab":"v18"}}, + "spring":{"N":{"tab":["n1"]}, + "V":{"tab":"v46"}}, + "spy":{"N":{"tab":["n3"]}}, + "squad":{"N":{"tab":["n1"]}}, + "squadron":{"N":{"tab":["n1"]}}, + "square":{"A":{"tab":["a1"]}, + "N":{"tab":["n1"]}, + "V":{"tab":"v3"}}, + "squeeze":{"V":{"tab":"v3"}}, + "stab":{"V":{"tab":"v5"}}, + "stability":{"N":{"tab":["n5"]}}, + "stable":{"A":{"tab":["a1"]}, + "N":{"tab":["n1"]}}, + "stadium":{"N":{"tab":["n1"]}}, + "staff":{"N":{"tab":["n1"]}, + "V":{"tab":"v1"}}, + "stage":{"N":{"tab":["n1"]}}, + "stagger":{"V":{"tab":"v1"}}, + "stain":{"V":{"tab":"v1"}}, + "stair":{"N":{"tab":["n1"]}}, + "staircase":{"N":{"tab":["n1"]}}, + "stake":{"N":{"tab":["n1"]}, + "V":{"tab":"v3"}}, + "stall":{"N":{"tab":["n1"]}}, + "stamp":{"N":{"tab":["n1"]}, + "V":{"tab":"v1"}}, + "stance":{"N":{"tab":["n1"]}}, + "stand":{"N":{"tab":["n1"]}, + "V":{"tab":"v37"}}, + "standard":{"A":{"tab":["a1"]}, + "N":{"tab":["n1"]}}, + "standing":{"N":{"tab":["n5"]}}, + "star":{"N":{"tab":["n1"]}, + "V":{"tab":"v13"}}, + "start":{"N":{"tab":["n1"]}, + "V":{"tab":"v1"}}, + "startle":{"V":{"tab":"v3"}}, + "state":{"N":{"tab":["n1"]}, + "V":{"tab":"v3"}}, + "statement":{"N":{"tab":["n1"]}}, + "static":{"A":{"tab":["a1"]}}, + "station":{"N":{"tab":["n1"]}}, + "statistical":{"A":{"tab":["a1"]}}, + "statistics":{"N":{"tab":["n4"]}}, + "statue":{"N":{"tab":["n1"]}}, + "status":{"N":{"tab":["n5"]}}, + "statute":{"N":{"tab":["n1"]}}, + "statutory":{"A":{"tab":["a1"]}}, + "stay":{"N":{"tab":["n1"]}, + "V":{"tab":"v1"}}, + "steadily":{"Adv":{"tab":["b1"]}}, + "steady":{"A":{"tab":["a4"]}}, + "steal":{"V":{"tab":"v137"}}, + "steam":{"N":{"tab":["n5"]}}, + "steel":{"N":{"tab":["n5"]}}, + "steep":{"A":{"tab":["a3"]}}, + "steer":{"V":{"tab":"v1"}}, + "stem":{"N":{"tab":["n1"]}, + "V":{"tab":"v10"}}, + "step":{"N":{"tab":["n1"]}, + "V":{"tab":"v12"}}, + "sterling":{"A":{"tab":["a1"]}}, + "steward":{"N":{"tab":["n1"]}}, + "stick":{"N":{"tab":["n1"]}, + "V":{"tab":"v119"}}, + "sticky":{"A":{"tab":["a4"]}}, + "stiff":{"A":{"tab":["a3"]}}, + "still":{"A":{"tab":["a3"]}, + "Adv":{"tab":["b1"]}}, + "stimulate":{"V":{"tab":"v3"}}, + "stimulus":{"N":{"tab":["n12"]}}, + "stir":{"V":{"tab":"v13"}}, + "stitch":{"N":{"tab":["n2"]}}, + "stock":{"N":{"tab":["n1"]}}, + "stocking":{"N":{"tab":["n1"]}}, + "stolen":{"A":{"tab":["a1"]}}, + "stomach":{"N":{"tab":["n1"]}}, + "stone":{"N":{"tab":["n1"]}}, + "stool":{"N":{"tab":["n1"]}}, + "stop":{"N":{"tab":["n1"]}, + "V":{"tab":"v12"}}, + "storage":{"N":{"tab":["n5"]}}, + "store":{"N":{"tab":["n1"]}, + "V":{"tab":"v3"}}, + "storm":{"N":{"tab":["n1"]}, + "V":{"tab":"v1"}}, + "story":{"N":{"tab":["n3"]}}, + "straight":{"A":{"tab":["a1"]}, + "Adv":{"tab":["b1"]}}, + "straighten":{"V":{"tab":"v1"}}, + "straightforward":{"A":{"tab":["a1"]}}, + "strain":{"N":{"tab":["n1"]}, + "V":{"tab":"v1"}}, + "strand":{"N":{"tab":["n1"]}}, + "strange":{"A":{"tab":["a2"]}}, + "strangely":{"Adv":{"tab":["b1"]}}, + "stranger":{"N":{"tab":["n1"]}}, + "strap":{"N":{"tab":["n1"]}}, + "strategic":{"A":{"tab":["a1"]}}, + "strategy":{"N":{"tab":["n3"]}}, + "straw":{"N":{"tab":["n1"]}}, + "stream":{"N":{"tab":["n1"]}}, + "street":{"N":{"tab":["n1"]}}, + "strength":{"N":{"tab":["n1"]}}, + "strengthen":{"V":{"tab":"v1"}}, + "stress":{"N":{"tab":["n2"]}, + "V":{"tab":"v2"}}, + "stretch":{"N":{"tab":["n2"]}, + "V":{"tab":"v2"}}, + "strict":{"A":{"tab":["a3"]}}, + "strictly":{"Adv":{"tab":["b1"]}}, + "stride":{"V":{"tab":"v47"}}, + "strike":{"N":{"tab":["n1"]}, + "V":{"tab":"v108"}}, + "striker":{"N":{"tab":["n1"]}}, + "striking":{"A":{"tab":["a1"]}}, + "string":{"N":{"tab":["n1"]}}, + "strip":{"N":{"tab":["n1"]}, + "V":{"tab":"v12"}}, + "strive":{"V":{"tab":"v42"}}, + "stroke":{"N":{"tab":["n1"]}, + "V":{"tab":"v3"}}, + "stroll":{"V":{"tab":"v1"}}, + "strong":{"A":{"tab":["a3"]}}, + "strongly":{"Adv":{"tab":["b1"]}}, + "structural":{"A":{"tab":["a1"]}}, + "structure":{"N":{"tab":["n1"]}}, + "struggle":{"N":{"tab":["n1"]}, + "V":{"tab":"v3"}}, + "student":{"N":{"tab":["n1"]}}, + "studio":{"N":{"tab":["n1"]}}, + "study":{"N":{"tab":["n3"]}, + "V":{"tab":"v4"}}, + "stuff":{"N":{"tab":["n1"]}, + "V":{"tab":"v1"}}, + "stumble":{"V":{"tab":"v3"}}, + "stunning":{"A":{"tab":["a1"]}}, + "stupid":{"A":{"tab":["a1"]}}, + "style":{"N":{"tab":["n1"]}}, + "subject":{"A":{"tab":["a1"]}, + "N":{"tab":["n1"]}, + "V":{"tab":"v1"}}, + "subjective":{"A":{"tab":["a1"]}}, + "submission":{"N":{"tab":["n1"]}}, + "submit":{"V":{"tab":"v14"}}, + "subscription":{"N":{"tab":["n1"]}}, + "subsequent":{"A":{"tab":["a1"]}}, + "subsequently":{"Adv":{"tab":["b1"]}}, + "subsidiary":{"N":{"tab":["n3"]}}, + "subsidy":{"N":{"tab":["n3"]}}, + "substance":{"N":{"tab":["n1"]}}, + "substantial":{"A":{"tab":["a1"]}}, + "substantially":{"Adv":{"tab":["b1"]}}, + "substantive":{"A":{"tab":["a1"]}}, + "substitute":{"N":{"tab":["n1"]}, + "V":{"tab":"v3"}}, + "subtle":{"A":{"tab":["a2"]}}, + "suburb":{"N":{"tab":["n1"]}}, + "succeed":{"V":{"tab":"v1"}}, + "success":{"N":{"tab":["n2"]}}, + "successful":{"A":{"tab":["a1"]}}, + "successfully":{"Adv":{"tab":["b1"]}}, + "succession":{"N":{"tab":["n1"]}}, + "successive":{"A":{"tab":["a1"]}}, + "successor":{"N":{"tab":["n1"]}}, + "suck":{"V":{"tab":"v1"}}, + "sudden":{"A":{"tab":["a1"]}}, + "suddenly":{"Adv":{"tab":["b1"]}}, + "sue":{"V":{"tab":"v3"}}, + "suffer":{"V":{"tab":"v1"}}, + "sufferer":{"N":{"tab":["n1"]}}, + "suffering":{"N":{"tab":["n1"]}}, + "sufficient":{"A":{"tab":["a1"]}}, + "sufficiently":{"Adv":{"tab":["b1"]}}, + "sugar":{"N":{"tab":["n1"]}}, + "suggest":{"V":{"tab":"v1"}}, + "suggestion":{"N":{"tab":["n1"]}}, + "suicide":{"N":{"tab":["n1"]}}, + "suit":{"N":{"tab":["n1"]}, + "V":{"tab":"v1"}}, + "suitable":{"A":{"tab":["a1"]}}, + "suitcase":{"N":{"tab":["n1"]}}, + "suite":{"N":{"tab":["n1"]}}, + "sulphur":{"N":{"tab":["n5"]}}, + "sum":{"N":{"tab":["n1"]}, + "V":{"tab":"v10"}}, + "summary":{"N":{"tab":["n3"]}}, + "summer":{"N":{"tab":["n1"]}}, + "summit":{"N":{"tab":["n1"]}}, + "summon":{"V":{"tab":"v1"}}, + "sun":{"N":{"tab":["n1"]}}, + "sunlight":{"N":{"tab":["n5"]}}, + "sunny":{"A":{"tab":["a4"]}}, + "sunshine":{"N":{"tab":["n5"]}}, + "super":{"A":{"tab":["a1"]}}, + "superb":{"A":{"tab":["a1"]}}, + "superintendent":{"N":{"tab":["n1"]}}, + "superior":{"A":{"tab":["a1"]}}, + "supermarket":{"N":{"tab":["n1"]}}, + "supervise":{"V":{"tab":"v3"}}, + "supervision":{"N":{"tab":["n1"]}}, + "supervisor":{"N":{"tab":["n1"]}}, + "supper":{"N":{"tab":["n1"]}}, + "supplement":{"N":{"tab":["n1"]}, + "V":{"tab":"v1"}}, + "supplementary":{"A":{"tab":["a1"]}}, + "supplier":{"N":{"tab":["n1"]}}, + "supply":{"N":{"tab":["n3"]}, + "V":{"tab":"v4"}}, + "support":{"N":{"tab":["n1"]}, + "V":{"tab":"v1"}}, + "supporter":{"N":{"tab":["n1"]}}, + "suppose":{"V":{"tab":"v3"}}, + "supposed":{"A":{"tab":["a1"]}}, + "supposedly":{"Adv":{"tab":["b1"]}}, + "suppress":{"V":{"tab":"v2"}}, + "supreme":{"A":{"tab":["a1"]}}, + "sure":{"A":{"tab":["a2"]}, + "Adv":{"tab":["b1"]}}, + "surely":{"Adv":{"tab":["b1"]}}, + "surface":{"N":{"tab":["n1"]}}, + "surgeon":{"N":{"tab":["n1"]}}, + "surgery":{"N":{"tab":["n3"]}}, + "surplus":{"N":{"tab":["n2"]}}, + "surprise":{"N":{"tab":["n1"]}, + "V":{"tab":"v3"}}, + "surprised":{"A":{"tab":["a1"]}}, + "surprising":{"A":{"tab":["a1"]}}, + "surprisingly":{"Adv":{"tab":["b1"]}}, + "surrender":{"V":{"tab":"v1"}}, + "surround":{"V":{"tab":"v1"}}, + "surrounding":{"A":{"tab":["a1"]}}, + "survey":{"N":{"tab":["n1"]}, + "V":{"tab":"v1"}}, + "surveyor":{"N":{"tab":["n1"]}}, + "survival":{"N":{"tab":["n1"]}}, + "survive":{"V":{"tab":"v3"}}, + "survivor":{"N":{"tab":["n1"]}}, + "suspect":{"N":{"tab":["n1"]}, + "V":{"tab":"v1"}}, + "suspend":{"V":{"tab":"v1"}}, + "suspension":{"N":{"tab":["n5"]}}, + "suspicion":{"N":{"tab":["n1"]}}, + "suspicious":{"A":{"tab":["a1"]}}, + "sustain":{"V":{"tab":"v1"}}, + "swallow":{"V":{"tab":"v1"}}, + "swap":{"V":{"tab":"v12"}}, + "sway":{"V":{"tab":"v1"}}, + "swear":{"V":{"tab":"v30"}}, + "sweat":{"N":{"tab":["n1"]}}, + "sweep":{"V":{"tab":"v29"}}, + "sweet":{"A":{"tab":["a3"]}, + "N":{"tab":["n1"]}}, + "swell":{"V":{"tab":"v128"}}, + "swift":{"A":{"tab":["a3"]}}, + "swiftly":{"Adv":{"tab":["b1"]}}, + "swim":{"V":{"tab":"v107"}}, + "swimming":{"N":{"tab":["n5"]}}, + "swing":{"N":{"tab":["n1"]}, + "V":{"tab":"v21"}}, + "switch":{"N":{"tab":["n2"]}, + "V":{"tab":"v2"}}, + "sword":{"N":{"tab":["n1"]}}, + "syllable":{"N":{"tab":["n1"]}}, + "symbol":{"N":{"tab":["n1"]}}, + "symbolic":{"A":{"tab":["a1"]}}, + "symmetry":{"N":{"tab":["n5"]}}, + "sympathetic":{"A":{"tab":["a1"]}}, + "sympathy":{"N":{"tab":["n3"]}}, + "symptom":{"N":{"tab":["n1"]}}, + "syndrome":{"N":{"tab":["n1"]}}, + "syntactic":{"A":{"tab":["a1"]}}, + "synthesis":{"N":{"tab":["n8"]}}, + "system":{"N":{"tab":["n1"]}}, + "systematic":{"A":{"tab":["a1"]}}, + "table":{"N":{"tab":["n1"]}}, + "tablet":{"N":{"tab":["n1"]}}, + "tackle":{"V":{"tab":"v3"}}, + "tactic":{"N":{"tab":["n1"]}}, + "tail":{"N":{"tab":["n1"]}}, + "take":{"V":{"tab":"v20"}}, + "takeover":{"N":{"tab":["n1"]}}, + "tale":{"N":{"tab":["n1"]}}, + "talent":{"N":{"tab":["n1"]}}, + "talented":{"A":{"tab":["a1"]}}, + "talk":{"N":{"tab":["n1"]}, + "V":{"tab":"v1"}}, + "tall":{"A":{"tab":["a3"]}}, + "tank":{"N":{"tab":["n1"]}}, + "tap":{"N":{"tab":["n1"]}, + "V":{"tab":"v12"}}, + "tape":{"N":{"tab":["n1"]}}, + "target":{"N":{"tab":["n1"]}, + "V":{"tab":"v1"}}, + "tariff":{"N":{"tab":["n1"]}}, + "task":{"N":{"tab":["n1"]}}, + "taste":{"N":{"tab":["n1"]}, + "V":{"tab":"v3"}}, + "tax":{"N":{"tab":["n2"]}, + "V":{"tab":"v2"}}, + "taxation":{"N":{"tab":["n5"]}}, + "taxi":{"N":{"tab":["n1"]}}, + "taxpayer":{"N":{"tab":["n1"]}}, + "tea":{"N":{"tab":["n1"]}}, + "teach":{"V":{"tab":"v142"}}, + "teacher":{"N":{"tab":["n1"]}}, + "teaching":{"N":{"tab":["n1"]}}, + "team":{"N":{"tab":["n1"]}}, + "tear":{"N":{"tab":["n1"]}, + "V":{"tab":"v30"}}, + "tease":{"V":{"tab":"v3"}}, + "technical":{"A":{"tab":["a1"]}}, + "technically":{"Adv":{"tab":["b1"]}}, + "technique":{"N":{"tab":["n1"]}}, + "technological":{"A":{"tab":["a1"]}}, + "technology":{"N":{"tab":["n3"]}}, + "teenage":{"A":{"tab":["a1"]}}, + "teenager":{"N":{"tab":["n1"]}}, + "telecommunication":{"N":{"tab":["n1"]}}, + "telephone":{"N":{"tab":["n1"]}, + "V":{"tab":"v3"}}, + "television":{"N":{"tab":["n1"]}}, + "tell":{"V":{"tab":"v31"}}, + "telly":{"N":{"tab":["n3"]}}, + "temper":{"N":{"tab":["n1"]}}, + "temperature":{"N":{"tab":["n1"]}}, + "temple":{"N":{"tab":["n1"]}}, + "temporarily":{"Adv":{"tab":["b1"]}}, + "temporary":{"A":{"tab":["a1"]}}, + "tempt":{"V":{"tab":"v1"}}, + "temptation":{"N":{"tab":["n1"]}}, + "tenant":{"N":{"tab":["n1"]}}, + "tend":{"V":{"tab":"v1"}}, + "tendency":{"N":{"tab":["n3"]}}, + "tender":{"A":{"tab":["a3"]}}, + "tennis":{"N":{"tab":["n5"]}}, + "tense":{"A":{"tab":["a2"]}}, + "tension":{"N":{"tab":["n1"]}}, + "tent":{"N":{"tab":["n1"]}}, + "term":{"N":{"tab":["n1"]}, + "V":{"tab":"v1"}}, + "terminal":{"A":{"tab":["a1"]}, + "N":{"tab":["n1"]}}, + "terminate":{"V":{"tab":"v3"}}, + "terrace":{"N":{"tab":["n1"]}}, + "terrible":{"A":{"tab":["a1"]}}, + "terribly":{"Adv":{"tab":["b1"]}}, + "terrify":{"V":{"tab":"v4"}}, + "territorial":{"A":{"tab":["a1"]}}, + "territory":{"N":{"tab":["n3"]}}, + "terror":{"N":{"tab":["n1"]}}, + "terrorist":{"N":{"tab":["n1"]}}, + "test":{"N":{"tab":["n1"]}, + "V":{"tab":"v1"}}, + "testament":{"N":{"tab":["n1"]}}, + "text":{"N":{"tab":["n1"]}}, + "textbook":{"N":{"tab":["n1"]}}, + "textile":{"N":{"tab":["n1"]}}, + "texture":{"N":{"tab":["n1"]}}, + "than":{"P":{"tab":["pp"]}}, + "thank":{"V":{"tab":"v1"}}, + "thanks":{"N":{"tab":["n6"]}}, + "that":{"Adv":{"tab":["b1"]}, + "D":{"tab":["d3"]}, + "Pro":{"tab":["pn6"]}}, + "the":{"D":{"tab":["d4"]}}, + "theatre":{"N":{"tab":["n1"]}}, + "theft":{"N":{"tab":["n1"]}}, + "theme":{"N":{"tab":["n1"]}}, + "then":{"Adv":{"tab":["b1"]}}, + "theology":{"N":{"tab":["n3"]}}, + "theoretical":{"A":{"tab":["a1"]}}, + "theorist":{"N":{"tab":["n1"]}}, + "theory":{"N":{"tab":["n3"]}}, + "therapist":{"N":{"tab":["n1"]}}, + "therapy":{"N":{"tab":["n3"]}}, + "thereafter":{"Adv":{"tab":["b1"]}}, + "thereby":{"Adv":{"tab":["b1"]}}, + "therefore":{"Adv":{"tab":["b1"]}}, + "these":{"Pro":{"tab":["pn8"]}}, + "thesis":{"N":{"tab":["n8"]}}, + "thick":{"A":{"tab":["a3"]}, + "Adv":{"tab":["b1"]}}, + "thief":{"N":{"tab":["n9"]}}, + "thigh":{"N":{"tab":["n1"]}}, + "thin":{"A":{"tab":["a10"]}}, + "thing":{"N":{"tab":["n1"]}}, + "think":{"V":{"tab":"v45"}}, + "thinking":{"A":{"tab":["a1"]}, + "N":{"tab":["n5"]}}, + "this":{"Adv":{"tab":["b1"]}, + "D":{"tab":["d5"]}, + "Pro":{"tab":["pn8"]}}, + "thorough":{"A":{"tab":["a1"]}}, + "thoroughly":{"Adv":{"tab":["b1"]}}, + "though":{"Adv":{"tab":["b1"]}}, + "thought":{"N":{"tab":["n1"]}}, + "thread":{"N":{"tab":["n1"]}}, + "threat":{"N":{"tab":["n1"]}}, + "threaten":{"V":{"tab":"v1"}}, + "threshold":{"N":{"tab":["n1"]}}, + "throat":{"N":{"tab":["n1"]}}, + "throne":{"N":{"tab":["n1"]}}, + "through":{"Adv":{"tab":["b1"]}, + "P":{"tab":["pp"]}}, + "throughout":{"P":{"tab":["pp"]}}, + "throw":{"V":{"tab":"v27"}}, + "thrust":{"N":{"tab":["n1"]}, + "V":{"tab":"v18"}}, + "thumb":{"N":{"tab":["n1"]}}, + "thus":{"Adv":{"tab":["b1"]}}, + "tick":{"V":{"tab":"v1"}}, + "ticket":{"N":{"tab":["n1"]}}, + "tide":{"N":{"tab":["n1"]}}, + "tie":{"N":{"tab":["n1"]}, + "V":{"tab":"v28"}}, + "tiger":{"N":{"tab":["n1"]}}, + "tight":{"A":{"tab":["a3"]}, + "Adv":{"tab":["b1"]}}, + "tighten":{"V":{"tab":"v1"}}, + "tightly":{"Adv":{"tab":["b1"]}}, + "tile":{"N":{"tab":["n1"]}}, + "till":{"P":{"tab":["pp"]}}, + "timber":{"N":{"tab":["n1"]}}, + "time":{"N":{"tab":["n1"]}, + "V":{"tab":"v3"}}, + "timetable":{"N":{"tab":["n1"]}}, + "timing":{"N":{"tab":["n1"]}}, + "tin":{"N":{"tab":["n1"]}}, + "tiny":{"A":{"tab":["a4"]}}, + "tip":{"N":{"tab":["n1"]}, + "V":{"tab":"v12"}}, + "tired":{"A":{"tab":["a1"]}}, + "tissue":{"N":{"tab":["n1"]}}, + "title":{"N":{"tab":["n1"]}}, + "to":{"P":{"tab":["pp"]}}, + "toast":{"N":{"tab":["n1"]}}, + "tobacco":{"N":{"tab":["n1"]}}, + "today":{"Adv":{"tab":["b1"]}}, + "toe":{"N":{"tab":["n1"]}}, + "together":{"Adv":{"tab":["b1"]}}, + "toilet":{"N":{"tab":["n1"]}}, + "tolerate":{"V":{"tab":"v3"}}, + "toll":{"N":{"tab":["n1"]}}, + "tomato":{"N":{"tab":["n2"]}}, + "tomorrow":{"Adv":{"tab":["b1"]}}, + "ton":{"N":{"tab":["n1"]}}, + "tone":{"N":{"tab":["n1"]}}, + "tongue":{"N":{"tab":["n1"]}}, + "tonight":{"Adv":{"tab":["b1"]}}, + "tonne":{"N":{"tab":["n1"]}}, + "too":{"Adv":{"tab":["b1"]}}, + "tool":{"N":{"tab":["n1"]}}, + "tooth":{"N":{"tab":["n20"]}}, + "top":{"N":{"tab":["n1"]}, + "V":{"tab":"v12"}}, + "topic":{"N":{"tab":["n1"]}}, + "torch":{"N":{"tab":["n2"]}}, + "toss":{"V":{"tab":"v2"}}, + "total":{"A":{"tab":["a1"]}, + "N":{"tab":["n1"]}, + "V":{"tab":"v9"}}, + "totally":{"Adv":{"tab":["b1"]}}, + "touch":{"N":{"tab":["n2"]}, + "V":{"tab":"v2"}}, + "tough":{"A":{"tab":["a3"]}}, + "tour":{"N":{"tab":["n1"]}, + "V":{"tab":"v1"}}, + "tourism":{"N":{"tab":["n5"]}}, + "tourist":{"N":{"tab":["n1"]}}, + "tournament":{"N":{"tab":["n1"]}}, + "toward":{"P":{"tab":["pp"]}}, + "towards":{"P":{"tab":["pp"]}}, + "towel":{"N":{"tab":["n1"]}}, + "tower":{"N":{"tab":["n1"]}}, + "town":{"N":{"tab":["n1"]}}, + "toxic":{"A":{"tab":["a1"]}}, + "toy":{"N":{"tab":["n1"]}}, + "trace":{"N":{"tab":["n1"]}, + "V":{"tab":"v3"}}, + "track":{"N":{"tab":["n1"]}, + "V":{"tab":"v1"}}, + "tract":{"N":{"tab":["n1"]}}, + "trade":{"N":{"tab":["n1"]}, + "V":{"tab":"v3"}}, + "trader":{"N":{"tab":["n1"]}}, + "tradition":{"N":{"tab":["n1"]}}, + "traditional":{"A":{"tab":["a1"]}}, + "traditionally":{"Adv":{"tab":["b1"]}}, + "traffic":{"N":{"tab":["n5"]}}, + "tragedy":{"N":{"tab":["n3"]}}, + "tragic":{"A":{"tab":["a1"]}}, + "trail":{"N":{"tab":["n1"]}, + "V":{"tab":"v1"}}, + "train":{"N":{"tab":["n1"]}, + "V":{"tab":"v1"}}, + "trainee":{"N":{"tab":["n1"]}}, + "trainer":{"N":{"tab":["n1"]}}, + "training":{"N":{"tab":["n5"]}}, + "trait":{"N":{"tab":["n1"]}}, + "transaction":{"N":{"tab":["n1"]}}, + "transcription":{"N":{"tab":["n1"]}}, + "transfer":{"N":{"tab":["n1"]}, + "V":{"tab":"v13"}}, + "transform":{"V":{"tab":"v1"}}, + "transformation":{"N":{"tab":["n1"]}}, + "transition":{"N":{"tab":["n1"]}}, + "translate":{"V":{"tab":"v3"}}, + "translation":{"N":{"tab":["n1"]}}, + "transmission":{"N":{"tab":["n1"]}}, + "transmit":{"V":{"tab":"v14"}}, + "transport":{"N":{"tab":["n1"]}, + "V":{"tab":"v1"}}, + "trap":{"N":{"tab":["n1"]}, + "V":{"tab":"v12"}}, + "travel":{"N":{"tab":["n1"]}, + "V":{"tab":"v9"}}, + "traveller":{"N":{"tab":["n1"]}}, + "tray":{"N":{"tab":["n1"]}}, + "tread":{"V":{"tab":"v141"}}, + "treasure":{"N":{"tab":["n1"]}}, + "treasurer":{"N":{"tab":["n1"]}}, + "treasury":{"N":{"tab":["n3"]}}, + "treat":{"N":{"tab":["n1"]}, + "V":{"tab":"v1"}}, + "treatment":{"N":{"tab":["n1"]}}, + "treaty":{"N":{"tab":["n3"]}}, + "tree":{"N":{"tab":["n1"]}}, + "tremble":{"V":{"tab":"v3"}}, + "tremendous":{"A":{"tab":["a1"]}}, + "trench":{"N":{"tab":["n2"]}}, + "trend":{"N":{"tab":["n1"]}}, + "trial":{"N":{"tab":["n1"]}}, + "triangle":{"N":{"tab":["n1"]}}, + "tribe":{"N":{"tab":["n1"]}}, + "tribunal":{"N":{"tab":["n1"]}}, + "tribute":{"N":{"tab":["n1"]}}, + "trick":{"N":{"tab":["n1"]}}, + "trigger":{"V":{"tab":"v1"}}, + "trip":{"N":{"tab":["n1"]}, + "V":{"tab":"v12"}}, + "triumph":{"N":{"tab":["n1"]}}, + "trivial":{"A":{"tab":["a1"]}}, + "trolley":{"N":{"tab":["n1"]}}, + "troop":{"N":{"tab":["n1"]}}, + "trophy":{"N":{"tab":["n3"]}}, + "tropical":{"A":{"tab":["a1"]}}, + "trouble":{"N":{"tab":["n1"]}, + "V":{"tab":"v3"}}, + "trouser":{"N":{"tab":["n1"]}}, + "truck":{"N":{"tab":["n1"]}}, + "true":{"A":{"tab":["a2"]}}, + "truly":{"Adv":{"tab":["b1"]}}, + "trunk":{"N":{"tab":["n1"]}}, + "trust":{"N":{"tab":["n1"]}, + "V":{"tab":"v1"}}, + "trustee":{"N":{"tab":["n1"]}}, + "truth":{"N":{"tab":["n1"]}}, + "try":{"N":{"tab":["n3"]}, + "V":{"tab":"v4"}}, + "tube":{"N":{"tab":["n1"]}}, + "tuck":{"V":{"tab":"v1"}}, + "tumble":{"V":{"tab":"v3"}}, + "tumour":{"N":{"tab":["n1"]}}, + "tune":{"N":{"tab":["n1"]}, + "V":{"tab":"v3"}}, + "tunnel":{"N":{"tab":["n1"]}}, + "turkey":{"N":{"tab":["n1"]}}, + "turn":{"N":{"tab":["n1"]}, + "V":{"tab":"v1"}}, + "turnover":{"N":{"tab":["n1"]}}, + "tutor":{"N":{"tab":["n1"]}}, + "twin":{"N":{"tab":["n1"]}}, + "twist":{"N":{"tab":["n1"]}, + "V":{"tab":"v1"}}, + "type":{"N":{"tab":["n1"]}}, + "typical":{"A":{"tab":["a1"]}}, + "typically":{"Adv":{"tab":["b1"]}}, + "tyre":{"N":{"tab":["n1"]}}, + "ugly":{"A":{"tab":["a4"]}}, + "ulcer":{"N":{"tab":["n1"]}}, + "ultimate":{"A":{"tab":["a1"]}}, + "ultimately":{"Adv":{"tab":["b1"]}}, + "umbrella":{"N":{"tab":["n1"]}}, + "unable":{"A":{"tab":["a1"]}}, + "unacceptable":{"A":{"tab":["a1"]}}, + "unaware":{"A":{"tab":["a1"]}}, + "uncertain":{"A":{"tab":["a1"]}}, + "uncertainty":{"N":{"tab":["n3"]}}, + "uncle":{"N":{"tab":["n1"]}}, + "uncomfortable":{"A":{"tab":["a1"]}}, + "unconscious":{"A":{"tab":["a1"]}}, + "uncover":{"V":{"tab":"v1"}}, + "under":{"Adv":{"tab":["b1"]}, + "P":{"tab":["pp"]}}, + "undergo":{"V":{"tab":"v48"}}, + "underground":{"A":{"tab":["a1"]}}, + "underline":{"V":{"tab":"v3"}}, + "undermine":{"V":{"tab":"v3"}}, + "underneath":{"Adv":{"tab":["b1"]}, + "P":{"tab":["pp"]}}, + "understand":{"V":{"tab":"v37"}}, + "understandable":{"A":{"tab":["a1"]}}, + "understanding":{"N":{"tab":["n1"]}}, + "undertake":{"V":{"tab":"v20"}}, + "undertaking":{"N":{"tab":["n1"]}}, + "undoubtedly":{"Adv":{"tab":["b1"]}}, + "uneasy":{"A":{"tab":["a1"]}}, + "unemployed":{"A":{"tab":["a1"]}}, + "unemployment":{"N":{"tab":["n5"]}}, + "unexpected":{"A":{"tab":["a1"]}}, + "unexpectedly":{"Adv":{"tab":["b1"]}}, + "unfair":{"A":{"tab":["a1"]}}, + "unfamiliar":{"A":{"tab":["a1"]}}, + "unfortunate":{"A":{"tab":["a1"]}}, + "unfortunately":{"Adv":{"tab":["b1"]}}, + "unhappy":{"A":{"tab":["a4"]}}, + "uniform":{"A":{"tab":["a1"]}, + "N":{"tab":["n1"]}}, + "union":{"N":{"tab":["n1"]}}, + "unionist":{"N":{"tab":["n1"]}}, + "unique":{"A":{"tab":["a1"]}}, + "unit":{"N":{"tab":["n1"]}}, + "unite":{"V":{"tab":"v3"}}, + "united":{"A":{"tab":["a1"]}}, + "unity":{"N":{"tab":["n3"]}}, + "universal":{"A":{"tab":["a1"]}}, + "universe":{"N":{"tab":["n1"]}}, + "university":{"N":{"tab":["n3"]}}, + "unknown":{"A":{"tab":["a1"]}}, + "unlike":{"A":{"tab":["a1"]}, + "P":{"tab":["pp"]}}, + "unlikely":{"A":{"tab":["a1"]}}, + "unnecessary":{"A":{"tab":["a1"]}}, + "unpleasant":{"A":{"tab":["a1"]}}, + "unprecedented":{"A":{"tab":["a1"]}}, + "unreasonable":{"A":{"tab":["a1"]}}, + "unrest":{"N":{"tab":["n5"]}}, + "unsuccessful":{"A":{"tab":["a1"]}}, + "until":{"P":{"tab":["pp"]}}, + "unusual":{"A":{"tab":["a1"]}}, + "unusually":{"Adv":{"tab":["b1"]}}, + "unwilling":{"A":{"tab":["a1"]}}, + "up":{"Adv":{"tab":["b1"]}, + "P":{"tab":["pp"]}}, + "up-to-date":{"A":{"tab":["a1"]}}, + "update":{"V":{"tab":"v3"}}, + "upgrade":{"V":{"tab":"v3"}}, + "uphold":{"V":{"tab":"v34"}}, + "upon":{"P":{"tab":["pp"]}}, + "upper":{"A":{"tab":["a1"]}}, + "upset":{"V":{"tab":"v17"}}, + "upstairs":{"Adv":{"tab":["b1"]}}, + "upwards":{"Adv":{"tab":["b1"]}}, + "urban":{"A":{"tab":["a1"]}}, + "urge":{"N":{"tab":["n1"]}, + "V":{"tab":"v3"}}, + "urgency":{"N":{"tab":["n5"]}}, + "urgent":{"A":{"tab":["a1"]}}, + "urgently":{"Adv":{"tab":["b1"]}}, + "urine":{"N":{"tab":["n5"]}}, + "usage":{"N":{"tab":["n1"]}}, + "use":{"N":{"tab":["n1"]}, + "V":{"tab":"v3"}}, + "used":{"A":{"tab":["a1"]}}, + "useful":{"A":{"tab":["a1"]}}, + "useless":{"A":{"tab":["a1"]}}, + "user":{"N":{"tab":["n1"]}}, + "usual":{"A":{"tab":["a1"]}}, + "usually":{"Adv":{"tab":["b1"]}}, + "utility":{"N":{"tab":["n3"]}}, + "utter":{"V":{"tab":"v1"}}, + "utterance":{"N":{"tab":["n1"]}}, + "utterly":{"Adv":{"tab":["b1"]}}, + "vacant":{"A":{"tab":["a1"]}}, + "vacuum":{"N":{"tab":["n1"]}}, + "vague":{"A":{"tab":["a2"]}}, + "vaguely":{"Adv":{"tab":["b1"]}}, + "valid":{"A":{"tab":["a1"]}}, + "validity":{"N":{"tab":["n5"]}}, + "valley":{"N":{"tab":["n1"]}}, + "valuable":{"A":{"tab":["a1"]}}, + "valuation":{"N":{"tab":["n1"]}}, + "value":{"N":{"tab":["n1"]}, + "V":{"tab":"v3"}}, + "valve":{"N":{"tab":["n1"]}}, + "van":{"N":{"tab":["n1"]}}, + "vanish":{"V":{"tab":"v2"}}, + "variable":{"A":{"tab":["a1"]}, + "N":{"tab":["n1"]}}, + "variant":{"N":{"tab":["n1"]}}, + "variation":{"N":{"tab":["n1"]}}, + "varied":{"A":{"tab":["a1"]}}, + "variety":{"N":{"tab":["n3"]}}, + "various":{"A":{"tab":["a1"]}}, + "vary":{"V":{"tab":"v4"}}, + "vast":{"A":{"tab":["a1"]}}, + "vat":{"N":{"tab":["n1"]}}, + "vegetable":{"N":{"tab":["n1"]}}, + "vegetation":{"N":{"tab":["n5"]}}, + "vehicle":{"N":{"tab":["n1"]}}, + "vein":{"N":{"tab":["n1"]}}, + "velocity":{"N":{"tab":["n3"]}}, + "velvet":{"N":{"tab":["n5"]}}, + "vendor":{"N":{"tab":["n1"]}}, + "venture":{"N":{"tab":["n1"]}, + "V":{"tab":"v3"}}, + "venue":{"N":{"tab":["n1"]}}, + "verb":{"N":{"tab":["n1"]}}, + "verbal":{"A":{"tab":["a1"]}}, + "verdict":{"N":{"tab":["n1"]}}, + "verse":{"N":{"tab":["n1"]}}, + "version":{"N":{"tab":["n1"]}}, + "versus":{"P":{"tab":["pp"]}}, + "vertical":{"A":{"tab":["a1"]}}, + "very":{"A":{"tab":["a1"]}, + "Adv":{"tab":["b1"]}}, + "vessel":{"N":{"tab":["n1"]}}, + "veteran":{"N":{"tab":["n1"]}}, + "via":{"P":{"tab":["pp"]}}, + "viable":{"A":{"tab":["a1"]}}, + "vicar":{"N":{"tab":["n1"]}}, + "vicious":{"A":{"tab":["a1"]}}, + "victim":{"N":{"tab":["n1"]}}, + "victory":{"N":{"tab":["n3"]}}, + "video":{"N":{"tab":["n1"]}}, + "view":{"N":{"tab":["n1"]}, + "V":{"tab":"v1"}}, + "viewer":{"N":{"tab":["n1"]}}, + "viewpoint":{"N":{"tab":["n1"]}}, + "vigorous":{"A":{"tab":["a1"]}}, + "villa":{"N":{"tab":["n1"]}}, + "village":{"N":{"tab":["n1"]}}, + "villager":{"N":{"tab":["n1"]}}, + "violation":{"N":{"tab":["n1"]}}, + "violence":{"N":{"tab":["n5"]}}, + "violent":{"A":{"tab":["a1"]}}, + "virgin":{"N":{"tab":["n1"]}}, + "virtual":{"A":{"tab":["a1"]}}, + "virtually":{"Adv":{"tab":["b1"]}}, + "virtue":{"N":{"tab":["n1"]}}, + "virus":{"N":{"tab":["n2"]}}, + "visible":{"A":{"tab":["a1"]}}, + "vision":{"N":{"tab":["n1"]}}, + "visit":{"N":{"tab":["n1"]}, + "V":{"tab":"v1"}}, + "visitor":{"N":{"tab":["n1"]}}, + "visual":{"A":{"tab":["a1"]}}, + "vital":{"A":{"tab":["a1"]}}, + "vitamin":{"N":{"tab":["n1"]}}, + "vivid":{"A":{"tab":["a1"]}}, + "vocabulary":{"N":{"tab":["n3"]}}, + "vocational":{"A":{"tab":["a1"]}}, + "voice":{"N":{"tab":["n1"]}}, + "voltage":{"N":{"tab":["n1"]}}, + "volume":{"N":{"tab":["n1"]}}, + "voluntary":{"A":{"tab":["a1"]}}, + "volunteer":{"N":{"tab":["n1"]}, + "V":{"tab":"v1"}}, + "vote":{"N":{"tab":["n1"]}, + "V":{"tab":"v3"}}, + "voter":{"N":{"tab":["n1"]}}, + "voucher":{"N":{"tab":["n1"]}}, + "voyage":{"N":{"tab":["n1"]}}, + "vulnerable":{"A":{"tab":["a1"]}}, + "wage":{"N":{"tab":["n1"]}}, + "waist":{"N":{"tab":["n1"]}}, + "wait":{"V":{"tab":"v1"}}, + "waiter":{"N":{"tab":["n1"]}}, + "wake":{"N":{"tab":["n1"]}, + "V":{"tab":"v164"}}, + "walk":{"N":{"tab":["n1"]}, + "V":{"tab":"v1"}}, + "walker":{"N":{"tab":["n1"]}}, + "wall":{"N":{"tab":["n1"]}}, + "wander":{"V":{"tab":"v1"}}, + "want":{"N":{"tab":["n1"]}, + "V":{"tab":"v1"}}, + "war":{"N":{"tab":["n1"]}}, + "ward":{"N":{"tab":["n1"]}}, + "wardrobe":{"N":{"tab":["n1"]}}, + "warehouse":{"N":{"tab":["n1"]}}, + "warm":{"A":{"tab":["a3"]}, + "V":{"tab":"v1"}}, + "warmth":{"N":{"tab":["n5"]}}, + "warn":{"V":{"tab":"v1"}}, + "warning":{"N":{"tab":["n1"]}}, + "warrant":{"N":{"tab":["n1"]}}, + "warranty":{"N":{"tab":["n3"]}}, + "warrior":{"N":{"tab":["n1"]}}, + "wartime":{"N":{"tab":["n5"]}}, + "wary":{"A":{"tab":["a4"]}}, + "wash":{"N":{"tab":["n2"]}, + "V":{"tab":"v2"}}, + "washing":{"N":{"tab":["n5"]}}, + "waste":{"A":{"tab":["a1"]}, + "N":{"tab":["n1"]}, + "V":{"tab":"v3"}}, + "watch":{"N":{"tab":["n2"]}, + "V":{"tab":"v2"}}, + "water":{"N":{"tab":["n1"]}}, + "wave":{"N":{"tab":["n1"]}, + "V":{"tab":"v3"}}, + "way":{"N":{"tab":["n1"]}}, + "weak":{"A":{"tab":["a3"]}}, + "weaken":{"V":{"tab":"v1"}}, + "weakness":{"N":{"tab":["n2"]}}, + "wealth":{"N":{"tab":["n5"]}}, + "wealthy":{"A":{"tab":["a4"]}}, + "weapon":{"N":{"tab":["n1"]}}, + "wear":{"V":{"tab":"v30"}}, + "weather":{"N":{"tab":["n1"]}}, + "weave":{"V":{"tab":"v69"}}, + "wedding":{"N":{"tab":["n1"]}}, + "wee":{"A":{"tab":["a1"]}}, + "weed":{"N":{"tab":["n1"]}}, + "week":{"N":{"tab":["n1"]}}, + "weekend":{"N":{"tab":["n1"]}}, + "weekly":{"A":{"tab":["a1"]}}, + "weep":{"V":{"tab":"v29"}}, + "weigh":{"V":{"tab":"v1"}}, + "weight":{"N":{"tab":["n1"]}}, + "weird":{"A":{"tab":["a3"]}}, + "welcome":{"A":{"tab":["a1"]}, + "N":{"tab":["n1"]}, + "V":{"tab":"v3"}}, + "welfare":{"N":{"tab":["n5"]}}, + "well":{"A":{"tab":["a19"]}, + "Adv":{"tab":["b3"]}, + "N":{"tab":["n1"]}}, + "well-known":{"A":{"tab":["a1"]}}, + "west":{"N":{"tab":["n5"]}}, + "western":{"A":{"tab":["a1"]}}, + "wet":{"A":{"tab":["a11"]}, + "V":{"tab":"v17"}}, + "whale":{"N":{"tab":["n1"]}}, + "what":{"D":{"tab":["d4"]}}, + "whatever":{"D":{"tab":["d4"]}}, + "whatsoever":{"D":{"tab":["d4"]}}, + "wheat":{"N":{"tab":["n5"]}}, + "wheel":{"N":{"tab":["n1"]}}, + "when":{"C":{"tab":["cs"]}}, + "whenever":{"Adv":{"tab":["b1"]}}, + "where":{"Pro":{"tab":["pn6"]}}, + "which":{"D":{"tab":["d4"]}}, + "whichever":{"D":{"tab":["d4"]}}, + "while":{"N":{"tab":["n5"]}}, + "whip":{"N":{"tab":["n1"]}, + "V":{"tab":"v12"}}, + "whisky":{"N":{"tab":["n3"]}}, + "whisper":{"N":{"tab":["n1"]}, + "V":{"tab":"v1"}}, + "white":{"A":{"tab":["a2"]}, + "N":{"tab":["n1"]}}, + "who":{"Pro":{"tab":["pn6"]}}, + "whoever":{"Pro":{"tab":["pn6"]}}, + "whole":{"A":{"tab":["a1"]}, + "N":{"tab":["n1"]}}, + "wholly":{"Adv":{"tab":["b1"]}}, + "whom":{"Pro":{"tab":["pn6"]}}, + "whose":{"D":{"tab":["d4"]}}, + "why":{"Pro":{"tab":["pn6"]}}, + "wicked":{"A":{"tab":["a1"]}}, + "wicket":{"N":{"tab":["n1"]}}, + "wide":{"A":{"tab":["a2"]}, + "Adv":{"tab":["b1"]}}, + "widely":{"Adv":{"tab":["b1"]}}, + "widen":{"V":{"tab":"v1"}}, + "widespread":{"A":{"tab":["a1"]}}, + "widow":{"N":{"tab":["n1"]}}, + "width":{"N":{"tab":["n1"]}}, + "wife":{"N":{"g":"f", + "tab":["n91"]}}, + "wild":{"A":{"tab":["a3"]}}, + "wildly":{"Adv":{"tab":["b1"]}}, + "will":{"N":{"tab":["n1"]}, + "V":{"tab":"v81"}}, + "willing":{"A":{"tab":["a1"]}}, + "willingness":{"N":{"tab":["n5"]}}, + "win":{"N":{"tab":["n1"]}, + "V":{"tab":"v105"}}, + "wind":{"N":{"tab":["n1"]}, + "V":{"tab":"v25"}}, + "window":{"N":{"tab":["n1"]}}, + "wine":{"N":{"tab":["n1"]}}, + "wing":{"N":{"tab":["n1"]}}, + "winner":{"N":{"tab":["n1"]}}, + "winter":{"N":{"tab":["n1"]}}, + "wipe":{"V":{"tab":"v3"}}, + "wire":{"N":{"tab":["n1"]}}, + "wisdom":{"N":{"tab":["n5"]}}, + "wise":{"A":{"tab":["a2"]}}, + "wish":{"N":{"tab":["n2"]}, + "V":{"tab":"v2"}}, + "wit":{"N":{"tab":["n1"]}}, + "witch":{"N":{"g":"f", + "tab":["n88"]}}, + "with":{"P":{"tab":["pp"]}}, + "withdraw":{"V":{"tab":"v54"}}, + "withdrawal":{"N":{"tab":["n1"]}}, + "within":{"Adv":{"tab":["b1"]}, + "P":{"tab":["pp"]}}, + "without":{"P":{"tab":["pp"]}}, + "witness":{"N":{"tab":["n2"]}, + "V":{"tab":"v2"}}, + "wolf":{"N":{"tab":["n9"]}}, + "woman":{"N":{"g":"f", + "tab":["n90"]}}, + "wonder":{"N":{"tab":["n1"]}, + "V":{"tab":"v1"}}, + "wonderful":{"A":{"tab":["a1"]}}, + "wood":{"N":{"tab":["n1"]}}, + "wooden":{"A":{"tab":["a1"]}}, + "woodland":{"N":{"tab":["n1"]}}, + "wool":{"N":{"tab":["n1"]}}, + "word":{"N":{"tab":["n1"]}}, + "wording":{"N":{"tab":["n1"]}}, + "work":{"N":{"tab":["n1"]}, + "V":{"tab":"v94"}}, + "worker":{"N":{"tab":["n1"]}}, + "workforce":{"N":{"tab":["n1"]}}, + "working":{"A":{"tab":["a1"]}, + "N":{"tab":["n1"]}}, + "working-class":{"A":{"tab":["a1"]}}, + "workplace":{"N":{"tab":["n1"]}}, + "workshop":{"N":{"tab":["n1"]}}, + "world":{"N":{"tab":["n1"]}}, + "worldwide":{"A":{"tab":["a1"]}}, + "worm":{"N":{"tab":["n1"]}}, + "worried":{"A":{"tab":["a1"]}}, + "worry":{"N":{"tab":["n3"]}, + "V":{"tab":"v4"}}, + "worrying":{"A":{"tab":["a1"]}}, + "worship":{"N":{"tab":["n5"]}}, + "worth":{"N":{"tab":["n5"]}}, + "worthwhile":{"A":{"tab":["a1"]}}, + "worthy":{"A":{"tab":["a4"]}}, + "wound":{"N":{"tab":["n1"]}, + "V":{"tab":"v1"}}, + "wrap":{"V":{"tab":"v12"}}, + "wrist":{"N":{"tab":["n1"]}}, + "write":{"V":{"tab":"v36"}}, + "writer":{"N":{"tab":["n1"]}}, + "writing":{"N":{"tab":["n1"]}}, + "wrong":{"A":{"tab":["a3"]}, + "Adv":{"tab":["b1"]}, + "N":{"tab":["n1"]}}, + "yacht":{"N":{"tab":["n1"]}}, + "yard":{"N":{"tab":["n1"]}}, + "yarn":{"N":{"tab":["n1"]}}, + "year":{"N":{"tab":["n1"]}}, + "yell":{"V":{"tab":"v1"}}, + "yellow":{"A":{"tab":["a3"]}}, + "yes":{"N":{"tab":["n2"]}}, + "yesterday":{"Adv":{"tab":["b1"]}}, + "yet":{"Adv":{"tab":["b1"]}}, + "yield":{"N":{"tab":["n1"]}, + "V":{"tab":"v1"}}, + "young":{"A":{"tab":["a3"]}}, + "youngster":{"N":{"tab":["n1"]}}, + "youth":{"N":{"tab":["n1"]}}, + "zero":{"N":{"tab":["n1"]}}, + "zone":{"N":{"tab":["n1"]}}, + "zoo":{"N":{"tab":["n1"]}}, + "{":{"Pc":{"compl":"}", + "tab":["pc5"]}}, + "}":{"Pc":{"compl":"{", + "tab":["pc6"]}}, + "«":{"Pc":{"compl":"»", + "tab":["pc7"]}}, + "»":{"Pc":{"compl":"«", + "tab":["pc8"]}}} +var ruleEn = //========== rule-en.js +{ + "conjugation": { + "v1": { + "ending": "", + "t": { + "b": "", + "ps": "ed", + "pr": "ing", + "pp": "ed", + "p": ["","","s","","",""] + } + }, + "v2": { + "ending": "", + "t": { + "b": "", + "ps": "ed", + "pr": "ing", + "pp": "ed", + "p": ["","","es","","",""] + } + }, + "v3": { + "ending": "e", + "t": { + "b": "e", + "ps": "ed", + "pr": "ing", + "pp": "ed", + "p": ["e","e","es","e","e","e"] + } + }, + "v4": { + "ending": "y", + "t": { + "b": "y", + "ps": "ied", + "pr": "ying", + "pp": "ied", + "p": ["y","y","ies","y","y","y"] + } + }, + "v5": { + "ending": "b", + "t": { + "b": "b", + "ps": "bbed", + "pr": "bbing", + "pp": "bbed", + "p": ["b","b","bs","b","b","b"] + } + }, + "v6": { + "ending": "d", + "t": { + "b": "d", + "ps": "dded", + "pr": "dding", + "pp": "dded", + "p": ["d","d","ds","d","d","d"] + } + }, + "v7": { + "ending": "g", + "t": { + "b": "g", + "ps": "gged", + "pr": "gging", + "pp": "gged", + "p": ["g","g","gs","g","g","g"] + } + }, + "v8": { + "ending": "k", + "t": { + "b": "k", + "ps": "kked", + "pr": "kking", + "pp": "kked", + "p": ["k","k","ks","k","k","k"] + } + }, + "v9": { + "ending": "l", + "t": { + "b": "l", + "ps": "lled", + "pr": "lling", + "pp": "lled", + "p": ["l","l","ls","l","l","l"] + } + }, + "v10": { + "ending": "m", + "t": { + "b": "m", + "ps": "mmed", + "pr": "mming", + "pp": "mmed", + "p": ["m","m","ms","m","m","m"] + } + }, + "v11": { + "ending": "n", + "t": { + "b": "n", + "ps": "nned", + "pr": "nning", + "pp": "nned", + "p": ["n","n","ns","n","n","n"] + } + }, + "v12": { + "ending": "p", + "t": { + "b": "p", + "ps": "pped", + "pr": "pping", + "pp": "pped", + "p": ["p","p","ps","p","p","p"] + } + }, + "v13": { + "ending": "r", + "t": { + "b": "r", + "ps": "rred", + "pr": "rring", + "pp": "rred", + "p": ["r","r","rs","r","r","r"] + } + }, + "v14": { + "ending": "t", + "t": { + "b": "t", + "ps": "tted", + "pr": "tting", + "pp": "tted", + "p": ["t","t","ts","t","t","t"] + } + }, + "v15": { + "ending": "v", + "t": { + "b": "v", + "ps": "vved", + "pr": "vving", + "pp": "vved", + "p": ["v","v","vs","v","v","v"] + } + }, + "v16": { + "ending": "", + "t": { + "b": "", + "ps": "d", + "pr": "ing", + "pp": "d", + "p": ["","","s","","",""] + } + }, + "v17": { + "ending": "", + "t": { + "b": "", + "ps": "", + "pr": "ting", + "pp": "", + "p": ["","","s","","",""] + } + }, + "v18": { + "ending": "", + "t": { + "b": "", + "ps": "", + "pr": "ing", + "pp": "", + "p": ["","","s","","",""] + } + }, + "v19": { + "ending": "y", + "t": { + "b": "y", + "ps": "id", + "pr": "ying", + "pp": "id", + "p": ["y","y","ys","y","y","y"] + } + }, + "v20": { + "ending": "ake", + "t": { + "b": "ake", + "ps": "ook", + "pr": "aking", + "pp": "aken", + "p": ["ake","ake","akes","ake","ake","ake"] + } + }, + "v21": { + "ending": "ing", + "t": { + "b": "ing", + "ps": "ung", + "pr": "inging", + "pp": "ung", + "p": ["ing","ing","ings","ing","ing","ing"] + } + }, + "v22": { + "ending": "ed", + "t": { + "b": "ed", + "ps": "d", + "pr": "eding", + "pp": "d", + "p": ["ed","ed","eds","ed","ed","ed"] + } + }, + "v23": { + "ending": "d", + "t": { + "b": "d", + "ps": "t", + "pr": "ding", + "pp": "t", + "p": ["d","d","ds","d","d","d"] + } + }, + "v24": { + "ending": "", + "t": { + "b": "", + "ps": "ked", + "pr": "king", + "pp": "ked", + "p": ["","","s","","",""] + } + }, + "v25": { + "ending": "ind", + "t": { + "b": "ind", + "ps": "ound", + "pr": "inding", + "pp": "ound", + "p": ["ind","ind","inds","ind","ind","ind"] + } + }, + "v26": { + "ending": "", + "t": { + "b": "", + "ps": "ed", + "pr": "ing", + "pp": "ed", + "p": ["","","s","","",""] + } + }, + "v27": { + "ending": "ow", + "t": { + "b": "ow", + "ps": "ew", + "pr": "owing", + "pp": "own", + "p": ["ow","ow","ows","ow","ow","ow"] + } + }, + "v28": { + "ending": "ie", + "t": { + "b": "ie", + "ps": "ied", + "pr": "ying", + "pp": "ied", + "p": ["ie","ie","ies","ie","ie","ie"] + } + }, + "v29": { + "ending": "ep", + "t": { + "b": "ep", + "ps": "pt", + "pr": "eping", + "pp": "pt", + "p": ["ep","ep","eps","ep","ep","ep"] + } + }, + "v30": { + "ending": "ear", + "t": { + "b": "ear", + "ps": "ore", + "pr": "earing", + "pp": "orn", + "p": ["ear","ear","ears","ear","ear","ear"] + } + }, + "v31": { + "ending": "ell", + "t": { + "b": "ell", + "ps": "old", + "pr": "elling", + "pp": "old", + "p": ["ell","ell","ells","ell","ell","ell"] + } + }, + "v32": { + "ending": "", + "t": { + "b": "", + "ps": "ed", + "pr": "ing", + "pp": "ed", + "p": ["","","s","","",""] + } + }, + "v33": { + "ending": "un", + "t": { + "b": "un", + "ps": "an", + "pr": "unning", + "pp": "un", + "p": ["un","un","uns","un","un","un"] + } + }, + "v34": { + "ending": "old", + "t": { + "b": "old", + "ps": "eld", + "pr": "olding", + "pp": "eld", + "p": ["old","old","olds","old","old","old"] + } + }, + "v35": { + "ending": "o", + "t": { + "b": "o", + "ps": "id", + "pr": "oing", + "pp": "one", + "p": ["o","o","oes","o","o","o"] + } + }, + "v36": { + "ending": "ite", + "t": { + "b": "ite", + "ps": "ote", + "pr": "iting", + "pp": "itten", + "p": ["ite","ite","ites","ite","ite","ite"] + } + }, + "v37": { + "ending": "and", + "t": { + "b": "and", + "ps": "ood", + "pr": "anding", + "pp": "ood", + "p": ["and","and","ands","and","and","and"] + } + }, + "v38": { + "ending": "", + "t": { + "b": "", + "ps": "", + "pr": "ting", + "pp": "", + "p": ["","","s","","",""] + } + }, + "v39": { + "ending": "", + "t": { + "b": "", + "ps": "", + "pr": "ding", + "pp": "", + "p": ["","","s","","",""] + } + }, + "v40": { + "ending": "ot", + "t": { + "b": "ot", + "ps": "t", + "pr": "oting", + "pp": "t", + "p": ["ot","ot","ots","ot","ot","ot"] + } + }, + "v41": { + "ending": "ome", + "t": { + "b": "ome", + "ps": "ame", + "pr": "oming", + "pp": "ome", + "p": ["ome","ome","omes","ome","ome","ome"] + } + }, + "v42": { + "ending": "ive", + "t": { + "b": "ive", + "ps": "ove", + "pr": "iving", + "pp": "iven", + "p": ["ive","ive","ives","ive","ive","ive"] + } + }, + "v43": { + "ending": "ive", + "t": { + "b": "ive", + "ps": "ave", + "pr": "iving", + "pp": "iven", + "p": ["ive","ive","ives","ive","ive","ive"] + } + }, + "v44": { + "ending": "it", + "t": { + "b": "it", + "ps": "at", + "pr": "itting", + "pp": "at", + "p": ["it","it","its","it","it","it"] + } + }, + "v45": { + "ending": "ink", + "t": { + "b": "ink", + "ps": "ought", + "pr": "inking", + "pp": "ought", + "p": ["ink","ink","inks","ink","ink","ink"] + } + }, + "v46": { + "ending": "ing", + "t": { + "b": "ing", + "ps": "ang", + "pr": "inging", + "pp": "ung", + "p": ["ing","ing","ings","ing","ing","ing"] + } + }, + "v47": { + "ending": "ide", + "t": { + "b": "ide", + "ps": "ode", + "pr": "iding", + "pp": "idden", + "p": ["ide","ide","ides","ide","ide","ide"] + } + }, + "v48": { + "ending": "go", + "t": { + "b": "go", + "ps": "went", + "pr": "going", + "pp": "gone", + "p": ["go","go","goes","go","go","go"] + } + }, + "v49": { + "ending": "eeze", + "t": { + "b": "eeze", + "ps": "oze", + "pr": "eezing", + "pp": "ozen", + "p": ["eeze","eeze","eezes","eeze","eeze","eeze"] + } + }, + "v50": { + "ending": "ee", + "t": { + "b": "ee", + "ps": "aw", + "pr": "eeing", + "pp": "een", + "p": ["ee","ee","ees","ee","ee","ee"] + } + }, + "v51": { + "ending": "ear", + "t": { + "b": "ear", + "ps": "ore", + "pr": "earing", + "pp": "orne", + "p": ["ear","ear","ears","ear","ear","ear"] + } + }, + "v52": { + "ending": "e", + "t": { + "b": "e", + "ps": "ed", + "pr": "ing", + "pp": "ed", + "p": ["e","e","es","e","e","e"] + } + }, + "v53": { + "ending": "d", + "t": { + "b": "d", + "ps": "ded", + "pr": "ding", + "pp": "ded", + "p": ["d","d","ds","d","d","d"] + } + }, + "v54": { + "ending": "aw", + "t": { + "b": "aw", + "ps": "ew", + "pr": "awing", + "pp": "awn", + "p": ["aw","aw","aws","aw","aw","aw"] + } + }, + "v55": { + "ending": "", + "t": { + "b": "", + "ps": "t", + "pr": "ing", + "pp": "t", + "p": ["","","s","","",""] + } + }, + "v56": { + "ending": "", + "t": { + "b": "", + "ps": "sed", + "pr": "sing", + "pp": "sed", + "p": ["","","ses","","",""] + } + }, + "v57": { + "ending": "", + "t": { + "b": "", + "ps": "ed", + "pr": "ing", + "pp": "ed", + "p": ["","","s","","",""] + } + }, + "v58": { + "ending": "", + "t": { + "b": "", + "ps": "", + "pr": "ing", + "pp": "", + "p": ["","","s","","",""] + } + }, + "v59": { + "ending": "uy", + "t": { + "b": "uy", + "ps": "ought", + "pr": "uying", + "pp": "ought", + "p": ["uy","uy","uys","uy","uy","uy"] + } + }, + "v60": { + "ending": "l", + "t": { + "b": "l", + "ps": "led", + "pr": "ling", + "pp": "led", + "p": ["l","l","ls","l","l","l"] + } + }, + "v61": { + "ending": "ke", + "t": { + "b": "ke", + "ps": "de", + "pr": "king", + "pp": "de", + "p": ["ke","ke","kes","ke","ke","ke"] + } + }, + "v62": { + "ending": "ive", + "t": { + "b": "ive", + "ps": "ived", + "pr": "iving", + "pp": "ived", + "p": ["ive","ive","ives","ive","ive","ive"] + } + }, + "v63": { + "ending": "ise", + "t": { + "b": "ise", + "ps": "ose", + "pr": "ising", + "pp": "isen", + "p": ["ise","ise","ises","ise","ise","ise"] + } + }, + "v64": { + "ending": "ink", + "t": { + "b": "ink", + "ps": "ank", + "pr": "inking", + "pp": "unk", + "p": ["ink","ink","inks","ink","ink","ink"] + } + }, + "v65": { + "ending": "ink", + "t": { + "b": "ink", + "ps": "ank", + "pr": "inking", + "pp": "unk", + "p": ["ink","ink","inks","ink","ink","ink"] + } + }, + "v66": { + "ending": "ine", + "t": { + "b": "ine", + "ps": "one", + "pr": "ining", + "pp": "one", + "p": ["ine","ine","ines","ine","ine","ine"] + } + }, + "v67": { + "ending": "ight", + "t": { + "b": "ight", + "ps": "ought", + "pr": "ighting", + "pp": "ought", + "p": ["ight","ight","ights","ight","ight","ight"] + } + }, + "v68": { + "ending": "ght", + "t": { + "b": "ght", + "ps": "ghted", + "pr": "ghting", + "pp": "ghted", + "p": ["ght","ght","ghts","ght","ght","ght"] + } + }, + "v69": { + "ending": "eave", + "t": { + "b": "eave", + "ps": "ove", + "pr": "eaving", + "pp": "oven", + "p": ["eave","eave","eaves","eave","eave","eave"] + } + }, + "v70": { + "ending": "eat", + "t": { + "b": "eat", + "ps": "ate", + "pr": "eating", + "pp": "eaten", + "p": ["eat","eat","eats","eat","eat","eat"] + } + }, + "v71": { + "ending": "e", + "t": { + "b": "e", + "ps": "ed", + "pr": "ing", + "pp": "ed", + "p": ["e","e","es","e","e","e"] + } + }, + "v72": { + "ending": "e", + "t": { + "b": "e", + "ps": "ed", + "pr": "eing", + "pp": "ed", + "p": ["e","e","es","e","e","e"] + } + }, + "v73": { + "ending": "e", + "t": { + "b": "e", + "ps": "d", + "pr": "eing", + "pp": "d", + "p": ["e","e","es","e","e","e"] + } + }, + "v74": { + "ending": "e", + "t": { + "b": "e", + "ps": "", + "pr": "ing", + "pp": "ten", + "p": ["e","e","es","e","e","e"] + } + }, + "v75": { + "ending": "e", + "t": { + "b": "e", + "ps": "", + "pr": "ing", + "pp": "", + "p": ["e","e","es","e","e","e"] + } + }, + "v76": { + "ending": "all", + "t": { + "b": "all", + "ps": "ell", + "pr": "alling", + "pp": "allen", + "p": ["all","all","alls","all","all","all"] + } + }, + "v77": { + "ending": "ad", + "t": { + "b": "ad", + "ps": "d", + "pr": "ading", + "pp": "d", + "p": ["ad","ad","ads","ad","ad","ad"] + } + }, + "v78": { + "ending": "", + "t": { + "b": "", + "ps": "", + "pr": "ing", + "pp": "en", + "p": ["","","s","","",""] + } + }, + "v79": { + "ending": "y", + "t": { + "b": "y", + "ps": "id", + "pr": "ying", + "pp": "id", + "p": ["y","y","ith","y","y","y"] + } + }, + "v80": { + "ending": "y", + "t": { + "b": "y", + "ps": "ew", + "pr": "ying", + "pp": "own", + "p": ["y","y","ies","y","y","y"] + } + }, + "v81": { + "ending": "will", + "t": { + "b": "will", + "p": "will", + "ps": "would" + } + }, + "v82": { + "ending": "whiz", + "t": { + "b": "whiz" + } + }, + "v83": { + "ending": "ve", + "t": { + "b": "ve", + "ps": "d", + "pr": "ving", + "pp": "d", + "p": ["ve","ve","s","ve","ve","ve"] + } + }, + "v84": { + "ending": "tch", + "t": { + "b": "tch", + "ps": "ught", + "pr": "tching", + "pp": "ught", + "p": ["tch","tch","tches","tch","tch","tch"] + } + }, + "v85": { + "ending": "savvy", + "t": { + "b": "savvy" + } + }, + "v86": { + "ending": "s", + "t": { + "b": "s", + "ps": "sed", + "pr": "sing", + "pp": "ses", + "p": ["s","s","ses","s","s","s"] + } + }, + "v87": { + "ending": "s", + "t": { + "b": "s", + "ps": "sed", + "pr": "sing", + "pp": "sed", + "p": ["s","s","ses","s","s","s"] + } + }, + "v88": { + "ending": "s", + "t": { + "b": "s", + "ps": "ed", + "pr": "ing", + "pp": "ed", + "p": ["s","s","s","s","s","s"] + } + }, + "v89": { + "ending": "rst", + "t": { + "b": "rst", + "ps": "rst", + "pr": "rsting", + "pp": "rst", + "p": ["rst","rst","rsts","rst","rst","rst"] + } + }, + "v90": { + "ending": "ow", + "t": { + "b": "ow", + "ps": "ew", + "pr": "owing", + "pp": "owed", + "p": ["ow","ow","ows","ow","ow","ow"] + } + }, + "v91": { + "ending": "ow", + "t": { + "b": "ow", + "ps": "ew", + "pr": "owing", + "pp": "owed", + "p": ["ow","ow","ows","ow","ow","ow"] + } + }, + "v92": { + "ending": "othe", + "t": { + "b": "othe", + "ps": "ad", + "pr": "othing", + "pp": "ad", + "p": ["othe","othe","othes","othe","othe","othe"] + } + }, + "v93": { + "ending": "ose", + "t": { + "b": "ose", + "ps": "se", + "pr": "osing", + "pp": "sen", + "p": ["ose","ose","oses","ose","ose","ose"] + } + }, + "v94": { + "ending": "ork", + "t": { + "b": "ork", + "ps": "orked", + "pr": "orking", + "pp": "orked", + "p": ["ork","ork","orks","ork","ork","ork"] + } + }, + "v95": { + "ending": "o", + "t": { + "b": "o", + "ps": "id", + "p": ["o","o","oes","o","o","o"] + } + }, + "v96": { + "ending": "o", + "t": { + "b": "o", + "ps": "id", + "pr": "oing", + "pp": "one", + "p": ["o","o","oes","o","o","o"] + } + }, + "v97": { + "ending": "l", + "t": { + "b": "l", + "ps": "t", + "pr": "ling", + "p": ["l","l","ls","l","l","l"] + } + }, + "v98": { + "ending": "l", + "t": { + "b": "l", + "ps": "led", + "pr": "ling", + "pp": "led", + "p": "ls" + } + }, + "v99": { + "ending": "l", + "t": { + "b": "l", + "ps": "led", + "pr": "ling", + "pp": "led", + "p": "ls" + } + }, + "v100": { + "ending": "it", + "t": { + "b": "it", + "ps": "at", + "pr": "itting", + "pp": "itted", + "p": ["it","it","its","it","it","it"] + } + }, + "v101": { + "ending": "ink", + "t": { + "b": "ink", + "ps": "unk", + "pr": "inking", + "pp": "unk", + "p": ["ink","ink","inks","ink","ink","ink"] + } + }, + "v102": { + "ending": "ink", + "t": { + "b": "ink", + "ps": "ank", + "pr": "inking", + "pp": "unk", + "p": ["ink","ink","inks","ink","ink","ink"] + } + }, + "v103": { + "ending": "ing", + "t": { + "b": "ing", + "ps": "ought", + "pr": "inging", + "pp": "ought", + "p": ["ing","ing","ings","ing","ing","ing"] + } + }, + "v104": { + "ending": "in", + "t": { + "b": "in", + "ps": "un", + "pr": "inning", + "pp": "un", + "p": ["in","in","ins","in","in","in"] + } + }, + "v105": { + "ending": "in", + "t": { + "b": "in", + "ps": "on", + "pr": "inning", + "pp": "on", + "p": ["in","in","ins","in","in","in"] + } + }, + "v106": { + "ending": "in", + "t": { + "b": "in", + "ps": "an", + "pr": "inning", + "pp": "un", + "p": ["in","in","ins","in","in","in"] + } + }, + "v107": { + "ending": "im", + "t": { + "b": "im", + "ps": "am", + "pr": "imming", + "pp": "um", + "p": ["im","im","ims","im","im","im"] + } + }, + "v108": { + "ending": "ike", + "t": { + "b": "ike", + "ps": "uck", + "pr": "iking", + "pp": "uck", + "p": ["ike","ike","ikes","ike","ike","ike"] + } + }, + "v109": { + "ending": "ig", + "t": { + "b": "ig", + "ps": "ug", + "pr": "igging", + "pp": "ug", + "p": ["ig","ig","igs","ig","ig","ig"] + } + }, + "v110": { + "ending": "ie", + "t": { + "b": "ie", + "pr": "ying", + "pp": "ain", + "p": ["ie","ie","ies","ie","ie","ie"] + } + }, + "v111": { + "ending": "ie", + "t": { + "b": "ie", + "ps": "ied", + "pr": "ying", + "pp": "ain", + "p": ["ie","ie","ies","ie","ie","ie"] + } + }, + "v112": { + "ending": "ie", + "t": { + "b": "ie", + "ps": "ied", + "pr": "ieing", + "pp": "ied", + "p": ["ie","ie","ies","ie","ie","ie"] + } + }, + "v113": { + "ending": "ie", + "t": { + "b": "ie", + "ps": "ay", + "pr": "ying", + "pp": "ain", + "p": ["ie","ie","ies","ie","ie","ie"] + } + }, + "v114": { + "ending": "ide", + "t": { + "b": "ide", + "ps": "ode", + "pr": "iding", + "p": ["ide","ide","ides","ide","ide","ide"] + } + }, + "v115": { + "ending": "ide", + "t": { + "b": "ide", + "ps": "ode", + "pr": "iding", + "pp": "id", + "p": ["ide","ide","ides","ide","ide","ide"] + } + }, + "v116": { + "ending": "ide", + "t": { + "b": "ide", + "ps": "ided", + "pr": "iding", + "pp": "ided", + "p": ["ide","ide","ides","ide","ide","ide"] + } + }, + "v117": { + "ending": "id", + "t": { + "b": "id", + "ps": "ade", + "pr": "idding", + "pp": "id", + "p": ["id","id","ids","id","id","id"] + } + }, + "v118": { + "ending": "id", + "t": { + "b": "id", + "ps": "ad", + "pr": "idding", + "pp": "idden", + "p": ["id","id","ids","id","id","id"] + } + }, + "v119": { + "ending": "ick", + "t": { + "b": "ick", + "ps": "uck", + "pr": "icking", + "pp": "uck", + "p": ["ick","ick","icks","ick","ick","ick"] + } + }, + "v120": { + "ending": "have", + "t": { + "b": "have", + "ps": "had", + "pr": "having", + "pp": "had", + "p": ["have","have","has","have","have","have"] + } + }, + "v121": { + "ending": "go", + "t": { + "b": "go", + "ps": "went", + "pp": "gone", + "p": ["go","go","goes","go","go","go"] + } + }, + "v122": { + "ending": "go", + "t": { + "b": "go", + "ps": "went", + "pr": "going", + "pp": "gone", + "p": ["go","go","goes","go","go","go"] + } + }, + "v123": { + "ending": "et", + "t": { + "b": "et", + "ps": "t", + "pr": "eting", + "pp": "t", + "p": ["et","et","ets","et","et","et"] + } + }, + "v124": { + "ending": "et", + "t": { + "b": "et", + "ps": "ot", + "pr": "etting", + "pp": "ot", + "p": ["et","et","ets","et","et","et"] + } + }, + "v125": { + "ending": "et", + "t": { + "b": "et", + "ps": "ot", + "pr": "etting", + "pp": "otten", + "p": ["et","et","ets","et","et","et"] + } + }, + "v126": { + "ending": "et", + "t": { + "b": "et", + "ps": "at", + "pp": "otten" + } + }, + "v127": { + "ending": "elt", + "t": { + "b": "elt", + "ps": "elted", + "pr": "elting", + "pp": "elted", + "p": ["elt","elt","elts","elt","elt","elt"] + } + }, + "v128": { + "ending": "ell", + "t": { + "b": "ell", + "ps": "elled", + "pr": "elling", + "pp": "elled", + "p": ["ell","ell","ells","ell","ell","ell"] + } + }, + "v129": { + "ending": "el", + "t": { + "b": "el", + "ps": "lt", + "pr": "eling", + "pp": "lt", + "p": ["el","el","els","el","el","el"] + } + }, + "v130": { + "ending": "el", + "t": { + "b": "el", + "ps": "eled", + "pr": "eling", + "pp": "eled", + "p": ["el","el","els","el","el","el"] + } + }, + "v131": { + "ending": "eek", + "t": { + "b": "eek", + "ps": "ought", + "pr": "eeking", + "pp": "ought", + "p": ["eek","eek","eeks","eek","eek","eek"] + } + }, + "v132": { + "ending": "eech", + "t": { + "b": "eech", + "ps": "eeched", + "pr": "eeching", + "pp": "eeched", + "p": ["eech","eech","eeches","eech","eech","eech"] + } + }, + "v133": { + "ending": "ed", + "t": { + "b": "ed", + "ps": "d", + "pr": "eding", + "pp": "d", + "p": ["ed","ed","eds","ed","ed","ed"] + } + }, + "v134": { + "ending": "eave", + "t": { + "b": "eave", + "ps": "eaved", + "pr": "eaving", + "pp": "eaved", + "p": ["eave","eave","eaves","eave","eave","eave"] + } + }, + "v135": { + "ending": "eave", + "t": { + "b": "eave", + "ps": "ave", + "pr": "eaving", + "pp": "eaved", + "p": ["eave","eave","eaves","eave","eave","eave"] + } + }, + "v136": { + "ending": "ear", + "t": { + "b": "ear", + "ps": "eared", + "pr": "earing", + "pp": "eared", + "p": ["ear","ear","ears","ear","ear","ear"] + } + }, + "v137": { + "ending": "eal", + "t": { + "b": "eal", + "ps": "ole", + "pr": "ealing", + "pp": "olen", + "p": ["eal","eal","eals","eal","eal","eal"] + } + }, + "v138": { + "ending": "eak", + "t": { + "b": "eak", + "ps": "oke", + "pr": "eaking", + "pp": "oken", + "p": ["eak","eak","eaks","eak","eak","eak"] + } + }, + "v139": { + "ending": "eak", + "t": { + "b": "eak", + "ps": "oke", + "pr": "eaking", + "pp": "oke", + "p": ["eak","eak","eaks","eak","eak","eak"] + } + }, + "v140": { + "ending": "eak", + "t": { + "b": "eak", + "ps": "ake", + "pr": "eaking", + "pp": "oken", + "p": ["eak","eak","eaks","eak","eak","eak"] + } + }, + "v141": { + "ending": "ead", + "t": { + "b": "ead", + "ps": "od", + "pr": "eading", + "pp": "od", + "p": ["ead","ead","eads","ead","ead","ead"] + } + }, + "v142": { + "ending": "each", + "t": { + "b": "each", + "ps": "aught", + "pr": "eaching", + "pp": "aught", + "p": ["each","each","eaches","each","each","each"] + } + }, + "v143": { + "ending": "e", + "t": { + "b": "e", + "ps": "t", + "pr": "ing", + "pp": "t", + "p": ["e","e","es","e","e","e"] + } + }, + "v145": { + "ending": "e", + "t": { + "b": "e", + "ps": "e", + "pr": "ing", + "pp": "ed", + "p": ["e","e","es","e","e","e"] + } + }, + "v146": { + "ending": "e", + "t": { + "b": "e", + "ps": "", + "pr": "ing", + "pp": "den", + "p": ["e","e","es","e","e","e"] + } + }, + "v147": { + "ending": "e", + "t": { + "b": "e", + "ps": "", + "pr": "ing", + "pp": "den", + "p": ["e","e","es","e","e","e"] + } + }, + "v148": { + "ending": "de", + "t": { + "b": "de", + "ps": "id", + "pp": "den" + } + }, + "v149": { + "ending": "born", + "t": { + "pp": "born" + } + }, + "v150": { + "ending": "beware", + "t": { + "b": "beware" + } + }, + "v151": { + "ending": "be", + "t": { + "b": "be", + "ps": ["was","were","was","were","were","were"], + "pr": "being", + "pp": "been", + "p": ["am","are","is","are","are","are"] + } + }, + "v152": { + "ending": "be", + "t": { + "b": "be", + "p": ["'m","'re","is","'re","'re","'re"], + "ps": ["was","were","was","were","were","were"], + "pr": "being", + "pp": "been" + } + }, + "v153": { + "ending": "ay", + "t": { + "b": "ay", + "ps": "ight", + "p": ["ay","ay","ay","ay","ay","ay"] + } + }, + "v154": { + "ending": "ay", + "t": { + "b": "ay", + "ps": "ew", + "pr": "aying", + "pp": "ain", + "p": ["ay","ay","ays","ay","ay","ay"] + } + }, + "v155": { + "ending": "ave", + "t": { + "b": "ave", + "ps": "ft", + "pr": "aving", + "pp": "ft", + "p": ["ave","ave","aves","ave","ave","ave"] + } + }, + "v156": { + "ending": "ave", + "t": { + "b": "ave", + "ps": "aved", + "pr": "aving", + "pp": "aved", + "p": ["ave","ave","aves","ave","ave","ave"] + } + }, + "v157": { + "ending": "ave", + "t": { + "b": "ave", + "ps": "aved", + "pr": "aving", + "pp": "aved", + "p": ["ave","ave","aves","ave","ave","ave"] + } + }, + "v158": { + "ending": "are", + "t": { + "b": "are", + "ps": "are", + "p": ["are","are","aren't","are","are","are"] + } + }, + "v159": { + "ending": "ang", + "t": { + "b": "ang", + "ps": "ung", + "pr": "anging", + "pp": "ung", + "p": ["ang","ang","angs","ang","ang","ang"] + } + }, + "v160": { + "ending": "ang", + "t": { + "b": "ang", + "ps": "anged", + "pr": "anging", + "pp": "anged", + "p": ["ang","ang","angs","ang","ang","ang"] + } + }, + "v161": { + "ending": "an", + "t": { + "b": "an", + "ps": "ould", + "p": ["an","an","an","an","an","an"] + } + }, + "v162": { + "ending": "all", + "t": { + "b": "all", + "p": "all", + "ps": "ould" + } + }, + "v163": { + "ending": "ake", + "t": { + "b": "ake", + "ps": "oke", + "pr": "aking", + "pp": "oke", + "p": ["ake","ake","akes","ake","ake","ake"] + } + }, + "v164": { + "ending": "ake", + "t": { + "b": "ake", + "ps": "oke", + "pr": "aking", + "pp": "oken", + "p": ["ake","ake","akes","ake","ake","ake"] + } + }, + "v165": { + "ending": "ad", + "t": { + "b": "ad", + "ps": "aded", + "pr": "ading", + "pp": "aded", + "p": ["ad","ad","ads","ad","ad","ad"] + } + }, + "v166": { + "ending": "must", + "t": { + "b": "must", + "p":"must", + "ps":"must" + } + }, + "v167": { + "ending": "", + "t": { + "b": "", + "p": ["","","n't","","",""] + } + }, + "v168": { + "ending": "ought", + "t": { + "b": "", + "p": "ought", + "ps":"ought" + } + }, + "v169": { + "ending": "", + "t": { + "b": "", + "ps": "zed", + "pr": "zing", + "pp": "zed", + "p": ["","","zes","","",""] + } + }, + "v170": { + "ending": "", + "t": { + "b": "", + "pp": "n" + } + }, + "v171": { + "ending": "", + "t": { + "b": "", + "ps": "ed", + "pr": "ing", + "pp": "ed", + "p": ["","","s","","",""] + } + }, + "v172": { + "ending": "", + "t": { + "b": "", + "ps": "ed", + "pr": "ing", + "pp": "ed", + "p": ["","","es","","",""] + } + }, + "v173": { + "ending": "", + "t": { + "b": "", + "ps": "ed", + "pr": "ing", + "pp": "ed", + "p": ["","","s","","",""] + } + }, + "v174": { + "ending": "", + "t": { + "b": "", + "ps": "ed", + "pr": "ing", + "pp": "ed", + "p": ["","","s","","",""] + } + }, + "v175": { + "ending": "", + "t": { + "b": "", + "ps": "", + "pr": "ing", + "p": ["","","s","","",""] + } + }, + "v176": { + "ending": "", + "t": { + "b": "", + "ps": "", + "pr": "ding", + "pp": "" + } + }, + "v177": { + "ending": "", + "t": { + "b": "", + "ps": "", + "pr": "ding", + "pp": "", + "p": ["","","s","","",""] + } + }, + "v178": { + "ending": "", + "t": { + "b": "", + "ps": "", + "pr": "", + "pp": "", + "p": ["","","","","",""] + } + }, + "v179": { + "ending": "", + "t": { + "b": "", + "ps": "'d", + "pr": "ing", + "pp": "'d", + "p": ["","","s","","",""] + } + }, + "v180": { + "ending": "", + "t": { + "b": "", + "ps": "'d", + "pr": "ing", + "pp": "ed", + "p": ["","","s","","",""] + } + }, + "v181": { + "ending": "ll", + "t": { + "b": "ll", + "ps": "lled", + "pr": "lling", + "pp": "lled", + "p": ["ll","ll","ls","ll","ll","ll"] + } + } + }, + "declension": { + "n1": { + "ending": "", + "declension": [{ + "val": "","n": "s" + },{ + "val": "s","n": "p" + }] + }, + "n2": { + "ending": "", + "declension": [{ + "val": "","n": "s" + },{ + "val": "es","n": "p" + }] + }, + "n3": { + "ending": "y", + "declension": [{ + "val": "y","n": "s" + },{ + "val": "ies","n": "p" + }] + }, + "n4": { + "ending": "", + "declension": [{ + "val": "","n": "s" + },{ + "val": "","n": "p" + }] + }, + "n5": { + "ending": "", + "declension": [{ + "val": "","n": "s" + }] + }, + "n6": { + "ending": "", + "declension": [{ + "val": "","n": "p" + }] + }, + "n7": { + "ending": "an", + "declension": [{ + "val": "an","n": "s" + },{ + "val": "en","n": "p" + }] + }, + "n8": { + "ending": "is", + "declension": [{ + "val": "is","n": "s" + },{ + "val": "es","n": "p" + }] + }, + "n9": { + "ending": "f", + "declension": [{ + "val": "f","n": "s" + },{ + "val": "ves","n": "p" + }] + }, + "n10": { + "ending": "fe", + "declension": [{ + "val": "fe","n": "s" + },{ + "val": "ves","n": "p" + }] + }, + "n11": { + "ending": "um", + "declension": [{ + "val": "um","n": "s" + },{ + "val": "a","n": "p" + }] + }, + "n12": { + "ending": "us", + "declension": [{ + "val": "us","n": "s" + },{ + "val": "i","n": "p" + }] + }, + "n13": { + "ending": "", + "declension": [{ + "val": "","n": "s" + },{ + "val": "e","n": "p" + }] + }, + "n14": { + "ending": "", + "declension": [{ + "val": "","n": "s" + },{ + "val": "x","n": "p" + }] + }, + "n15": { + "ending": "", + "declension": [{ + "val": "","n": "s" + },{ + "val": "ren","n": "p" + }] + }, + "n16": { + "ending": "ouse", + "declension": [{ + "val": "ouse","n": "s" + },{ + "val": "ice","n": "p" + }] + }, + "n17": { + "ending": "-in-law", + "declension": [{ + "val": "-in-law","n": "s" + },{ + "val": "s-in-law","n": "p" + }] + }, + "n18": { + "ending": "", + "declension": [{ + "val": "","n": "s" + },{ + "val": "'s","n": "p" + }] + }, + "n19": { + "ending": "oot", + "declension": [{ + "val": "oot","n": "s" + },{ + "val": "eet","n": "p" + }] + }, + "n20": { + "ending": "ooth", + "declension": [{ + "val": "ooth","n": "s" + },{ + "val": "eeth","n": "p" + }] + }, + "n21": { + "ending": "", + "declension": [{ + "val": "","n": "s" + },{ + "val": "en","n": "p" + }] + }, + "n22": { + "ending": "ex", + "declension": [{ + "val": "ex","n": "s" + },{ + "val": "ices","n": "p" + }] + }, + "n23": { + "ending": "x", + "declension": [{ + "val": "x","n": "s" + },{ + "val": "ices","n": "p" + }] + }, + "n24": { + "ending": "-on", + "declension": [{ + "val": "-on","n": "s" + },{ + "val": "s-on","n": "p" + }] + }, + "n25": { + "ending": "us", + "declension": [{ + "val": "us","n": "s" + },{ + "val": "era","n": "p" + }] + }, + "n26": { + "ending": "on", + "declension": [{ + "val": "on","n": "s" + },{ + "val": "a","n": "p" + }] + }, + "n27": { + "ending": "an-at-arms", + "declension": [{ + "val": "an-at-arms","n": "s" + },{ + "val": "en-at-arms","n": "p" + }] + }, + "n28": { + "ending": "-at-arms", + "declension": [{ + "val": "-at-arms","n": "s" + },{ + "val": "s-at-arms","n": "p" + }] + }, + "n29": { + "ending": "", + "declension": [{ + "val": "","n": "s" + },{ + "val": "er","n": "p" + }] + }, + "n30": { + "ending": "", + "declension": [{ + "val": "","n": "s" + },{ + "val": "i","n": "p" + }] + }, + "n31": { + "ending": "", + "declension": [{ + "val": "","n": "s" + },{ + "val": "im","n": "p" + }] + }, + "n32": { + "ending": "", + "declension": [{ + "val": "","n": "s" + },{ + "val": "r","n": "p" + }] + }, + "n33": { + "ending": "-by", + "declension": [{ + "val": "-by","n": "s" + },{ + "val": "s-by","n": "p" + }] + }, + "n34": { + "ending": "a", + "declension": [{ + "val": "a","n": "s" + },{ + "val": "or","n": "p" + }] + }, + "n35": { + "ending": "e", + "declension": [{ + "val": "e","n": "s" + },{ + "val": "ae","n": "p" + }] + }, + "n36": { + "ending": "e", + "declension": [{ + "val": "e","n": "s" + },{ + "val": "i","n": "p" + }] + }, + "n37": { + "ending": "o", + "declension": [{ + "val": "o","n": "s" + },{ + "val": "i","n": "p" + }] + }, + "n38": { + "ending": "us", + "declension": [{ + "val": "us","n": "s" + },{ + "val": "ora","n": "p" + }] + }, + "n39": { + "ending": "-in", + "declension": [{ + "val": "-in","n": "s" + },{ + "val": "s-in","n": "p" + }] + }, + "n40": { + "ending": "oose", + "declension": [{ + "val": "oose","n": "s" + },{ + "val": "eese","n": "p" + }] + }, + "n41": { + "ending": "y-in-waiting", + "declension": [{ + "val": "y-in-waiting","n": "s" + },{ + "val": "ies-in-waiting","n": "p" + }] + }, + "n42": { + "ending": "-out", + "declension": [{ + "val": "-out","n": "s" + },{ + "val": "s-out","n": "p" + }] + }, + "n43": { + "ending": "-up", + "declension": [{ + "val": "-up","n": "s" + },{ + "val": "s-up","n": "p" + }] + }, + "n44": { + "ending": "s", + "declension": [{ + "val": "s","n": "s" + },{ + "val": "des","n": "p" + }] + }, + "n45": { + "ending": "x", + "declension": [{ + "val": "x","n": "s" + },{ + "val": "ces","n": "p" + }] + }, + "n46": { + "ending": "", + "declension": [{ + "val": "","n": "s" + },{ + "val": "een","n": "p" + }] + }, + "n47": { + "ending": "", + "declension": [{ + "val": "","n": "s" + },{ + "val": "in","n": "p" + }] + }, + "n48": { + "ending": "x", + "declension": [{ + "val": "x","n": "s" + },{ + "val": "ges","n": "p" + }] + }, + "n49": { + "ending": "an-of-war", + "declension": [{ + "val": "an-of-war","n": "s" + },{ + "val": "en-of-war","n": "p" + }] + }, + "n50": { + "ending": "ey", + "declension": [{ + "val": "ey","n": "s" + },{ + "val": "ies","n": "p" + }] + }, + "n51": { + "ending": "Grand Prix", + "declension": [{ + "val": "Grand Prix","n": "s" + },{ + "val": "Grands Prix","n": "p" + }] + }, + "n52": { + "ending": "Madame", + "declension": [{ + "val": "Madame","n": "s" + },{ + "val": "Mesdames","n": "p" + }] + }, + "n53": { + "ending": "Mademoiselle", + "declension": [{ + "val": "Mademoiselle","n": "s" + },{ + "val": "Mesdemoiselles","n": "p" + }] + }, + "n54": { + "ending": "Monsieur", + "declension": [{ + "val": "Monsieur","n": "s" + },{ + "val": "Messieurs","n": "p" + }] + }, + "n55": { + "ending": "Mr", + "declension": [{ + "val": "Mr","n": "s" + },{ + "val": "Messrs","n": "p" + }] + }, + "n56": { + "ending": "agent provocateur", + "declension": [{ + "val": "agent provocateur","n": "s" + },{ + "val": "agents provocateurs","n": "p" + }] + }, + "n57": { + "ending": "aide-de-camp", + "declension": [{ + "val": "aide-de-camp","n": "s" + },{ + "val": "aides-de-camp","n": "p" + }] + }, + "n58": { + "ending": "auto-da-fé", + "declension": [{ + "val": "auto-da-fé","n": "s" + },{ + "val": "autos-da-fé","n": "p" + }] + }, + "n59": { + "ending": "bête noire", + "declension": [{ + "val": "bête noire","n": "s" + },{ + "val": "bêtes noires","n": "p" + }] + }, + "n60": { + "ending": "billet-doux", + "declension": [{ + "val": "billet-doux","n": "s" + },{ + "val": "billets-doux","n": "p" + }] + }, + "n61": { + "ending": "bon mot", + "declension": [{ + "val": "bon mot","n": "s" + },{ + "val": "bons mots","n": "p" + }] + }, + "n62": { + "ending": "brother", + "declension": [{ + "val": "brother","n": "s" + },{ + "val": "brethren","n": "p" + }] + }, + "n63": { + "ending": "carte blanche", + "declension": [{ + "val": "carte blanche","n": "s" + },{ + "val": "cartes blanches","n": "p" + }] + }, + "n64": { + "ending": "chef-d'oeuvre", + "declension": [{ + "val": "chef-d'oeuvre","n": "s" + },{ + "val": "chefs-d'oeuvre","n": "p" + }] + }, + "n65": { + "ending": "cor anglais", + "declension": [{ + "val": "cor anglais","n": "s" + },{ + "val": "cors anglais","n": "p" + }] + }, + "n66": { + "ending": "coup d'etat", + "declension": [{ + "val": "coup d'etat","n": "s" + },{ + "val": "coups d'etat","n": "p" + }] + }, + "n67": { + "ending": "coup de grace", + "declension": [{ + "val": "coup de grace","n": "s" + },{ + "val": "coups de grace","n": "p" + }] + }, + "n68": { + "ending": "court-martial", + "declension": [{ + "val": "court-martial","n": "s" + },{ + "val": "courts-martial","n": "p" + }] + }, + "n69": { + "ending": "cow", + "declension": [{ + "val": "cow","n": "s" + },{ + "val": "kine","n": "p" + }] + }, + "n70": { + "ending": "curriculum vitae", + "declension": [{ + "val": "curriculum vitae","n": "s" + },{ + "val": "curricula vitae","n": "p" + }] + }, + "n71": { + "ending": "enfant terrible", + "declension": [{ + "val": "enfant terrible","n": "s" + },{ + "val": "enfants terribles","n": "p" + }] + }, + "n72": { + "ending": "fait accompli", + "declension": [{ + "val": "fait accompli","n": "s" + },{ + "val": "faits accomplis","n": "p" + }] + }, + "n73": { + "ending": "fleur-de-lis", + "declension": [{ + "val": "fleur-de-lis","n": "s" + },{ + "val": "fleurs-de-lis","n": "p" + }] + }, + "n74": { + "ending": "fleur-de-lys", + "declension": [{ + "val": "fleur-de-lys","n": "s" + },{ + "val": "fleurs-de-lys","n": "p" + }] + }, + "n75": { + "ending": "ignis fatuus", + "declension": [{ + "val": "ignis fatuus","n": "s" + },{ + "val": "ignes fatui","n": "p" + }] + }, + "n76": { + "ending": "knight-errant", + "declension": [{ + "val": "knight-errant","n": "s" + },{ + "val": "knights-errant","n": "p" + }] + }, + "n77": { + "ending": "nom de plume", + "declension": [{ + "val": "nom de plume","n": "s" + },{ + "val": "noms de plume","n": "p" + }] + }, + "n78": { + "ending": "nouveau riche", + "declension": [{ + "val": "nouveau riche","n": "s" + },{ + "val": "nouveaux riches","n": "p" + }] + }, + "n79": { + "ending": "penny", + "declension": [{ + "val": "penny","n": "s" + },{ + "val": "pence","n": "p" + }] + }, + "n80": { + "ending": "petit bourgeois", + "declension": [{ + "val": "petit bourgeois","n": "s" + },{ + "val": "petits bourgeois","n": "p" + }] + }, + "n81": { + "ending": "señor", + "declension": [{ + "val": "señor","n": "s" + },{ + "val": "senores","n": "p" + }] + }, + "n82": { + "ending": "sock", + "declension": [{ + "val": "sock","n": "s" + },{ + "val": "sox","n": "p" + }] + }, + "n83": { + "ending": "tableau vivant", + "declension": [{ + "val": "tableau vivant","n": "s" + },{ + "val": "tableaux vivants","n": "p" + }] + }, + "n84": { + "ending": "wagon-lit", + "declension": [{ + "val": "wagon-lit","n": "s" + },{ + "val": "wagons-lit","n": "p" + }] + }, + "n85": { + "ending": "", + "declension": [{ + "val": "","g": "m","n": "s" + },{ + "val": "s","g": "m","n": "p" + }] + }, + "n86": { + "ending": "", + "declension": [{ + "val": "","g": "m","n": "s" + },{ + "val": "es","g": "m","n": "p" + }] + }, + "n87": { + "ending": "", + "declension": [{ + "val": "","g": "f","n": "s" + },{ + "val": "s","g": "f","n": "p" + }] + }, + "n88": { + "ending": "", + "declension": [{ + "val": "","g": "f","n": "s" + },{ + "val": "es","g": "f","n": "p" + }] + }, + "n89": { + "ending": "an", + "declension": [{ + "val": "an","g": "m","n": "s" + },{ + "val": "en","g": "m","n": "p" + }] + }, + "n90": { + "ending": "an", + "declension": [{ + "val": "an","g": "f","n": "s" + },{ + "val": "en","g": "f","n": "p" + }] + }, + "n91": { + "ending": "fe", + "declension": [{ + "val": "fe","g": "f","n": "s" + },{ + "val": "ves","g": "f","n": "p" + }] + }, + "a1": { + "ending": "", + "declension": [{ + "val": "" + }] + }, + "a2": { + "ending": "", + "declension": [{ + "val": "" + },{ + "val": "r","f": "co" + },{ + "val": "st","f": "su" + }] + }, + "a3": { + "ending": "", + "declension": [{ + "val": "" + },{ + "val": "er","f": "co" + },{ + "val": "est","f": "su" + }] + }, + "a4": { + "ending": "y", + "declension": [{ + "val": "y" + },{ + "val": "ier","f": "co" + },{ + "val": "iest","f": "su" + }] + }, + "a5": { + "ending": "b", + "declension": [{ + "val": "b" + },{ + "val": "bber","f": "co" + },{ + "val": "bbest","f": "su" + }] + }, + "a6": { + "ending": "d", + "declension": [{ + "val": "d" + },{ + "val": "dder","f": "co" + },{ + "val": "ddest","f": "su" + }] + }, + "a7": { + "ending": "g", + "declension": [{ + "val": "g" + },{ + "val": "gger","f": "co" + },{ + "val": "ggest","f": "su" + }] + }, + "a8": { + "ending": "l", + "declension": [{ + "val": "l" + },{ + "val": "ller","f": "co" + },{ + "val": "llest","f": "su" + }] + }, + "a9": { + "ending": "m", + "declension": [{ + "val": "m" + },{ + "val": "mmer","f": "co" + },{ + "val": "mmest","f": "su" + }] + }, + "a10": { + "ending": "n", + "declension": [{ + "val": "n" + },{ + "val": "nner","f": "co" + },{ + "val": "nnest","f": "su" + }] + }, + "a11": { + "ending": "t", + "declension": [{ + "val": "t" + },{ + "val": "tter","f": "co" + },{ + "val": "ttest","f": "su" + }] + }, + "a12": { + "ending": "ey", + "declension": [{ + "val": "ey" + },{ + "val": "ier","f": "co" + },{ + "val": "iest","f": "su" + }] + }, + "a13": { + "ending": "y", + "declension": [{ + "val": "y" + },{ + "val": "er","f": "co" + },{ + "val": "est","f": "su" + }] + }, + "a14": { + "ending": "bad", + "declension": [{ + "val": "bad" + },{ + "val": "worse","f": "co" + },{ + "val": "worst","f": "su" + }] + }, + "a15": { + "ending": "good", + "declension": [{ + "val": "good" + },{ + "val": "better","f": "co" + },{ + "val": "best","f": "su" + }] + }, + "a16": { + "ending": "old", + "declension": [{ + "val": "old" + },{ + "val": "older","f": "co" + },{ + "val": "oldest","f": "su" + }] + }, + "a17": { + "ending": "far", + "declension": [{ + "val": "far" + },{ + "val": "farther","f": "co" + },{ + "val": "farthest","f": "su" + }] + }, + "a18": { + "ending": "", + "declension": [{ + "val": "" + },{ + "val": "st","f": "su" + }] + }, + "a19": { + "ending": "well", + "declension": [{ + "val": "well" + },{ + "val": "better","f": "co" + },{ + "val": "best","f": "su" + }] + }, + "pn1": { + "ending": "I", + "declension": [{ + "val": "I","pe": 1,"n": "s","g": "x" + },{ + "val": "you","pe": 2,"n": "x","g": "x" + },{ + "val": "he","pe": 3,"n": "s","g": "m" + },{ + "val": "it","pe": 3,"n": "s","g": "n" + },{ + "val": "she","pe": 3,"n": "s","g": "f" + },{ + "val": "we","pe": 1,"n": "p","g": "x" + },{ + "val": "they","pe": 3,"n": "p","g": "x" + }] + }, + "pn2": { + "ending": "me", + "declension": [{ + "val": "me","pe": 1,"n": "s","g": "x" + },{ + "val": "you","pe": 2,"n": "x","g": "x" + },{ + "val": "her","pe": 3,"n": "s","g": "f" + },{ + "val": "him","pe": 3,"n": "s","g": "m" + },{ + "val": "it","pe": 3,"n": "s","g": "n" + },{ + "val": "us","pe": 1,"n": "p","g": "x" + },{ + "val": "them","pe": 3,"n": "p","g": "x" + }] + }, + "pn3": { + "ending": "mine", + "declension": [{ + "val": "mine","pe": 1,"n": "s","g": "x","own": "s" + },{ + "val": "yours","pe": 2,"n": "x","g": "x","own": "x" + },{ + "val": "hers","pe": 3,"n": "s","g": "f","own": "s" + },{ + "val": "his","pe": 3,"n": "s","g": "m","own": "s" + },{ + "val": "its","pe": 3,"n": "s","g": "n","own": "s" + },{ + "val": "ours","pe": 1,"n": "p","g": "x","own": "p" + },{ + "val": "theirs","pe": 3,"n": "p","g": "x","own": "p" + }] + }, + "pn4": { + "ending": "myself", + "declension": [{ + "val": "myself","pe": 1,"n": "s","g": "x" + },{ + "val": "yourself","pe": 2,"n": "s","g": "x" + },{ + "val": "herself","pe": 3,"n": "s","g": "f" + },{ + "val": "himself","pe": 3,"n": "s","g": "m" + },{ + "val": "itself","pe": 3,"n": "s","g": "n" + },{ + "val": "ourselves","pe": 1,"n": "p","g": "x" + },{ + "val": "yourselves","pe": 2,"n": "p","g": "x" + },{ + "val": "themselves","pe": 3,"n": "p","g": "x" + }] + }, + "pn5": { + "ending": "", + "declension": [{ + "val": "","pt": "i","pe": 3 + }] + }, + "pn6": { + "ending": "", + "declension": [{ + "val": "","pt": "in" + }] + }, + "pn7": { + "ending": "", + "declension": [{ + "val": "","pt": "r" + }] + }, + "pn8": { + "ending": "", + "declension": [{ + "val": "","pt": "d" + }] + }, + "pn9": { + "ending": "", + "declension": [{ + "val": "","pt": "ex" + }] + }, + "d1": { + "ending": "a", + "declension": [{ + "val": "a","n": "s" + },{ + "val": "","n": "p" + }] + }, + "d2": { // GL: changed n:"." to n:"x" because it depends on the number of the owner + "ending": "my", + "declension": [{ + "val": "my","pe": 1,"n": "x","g": "x","own": "s" + },{ + "val": "your","pe": 2,"n": "x","g": "x","own": "x" + },{ + "val": "her","pe": 3,"n": "x","g": "f","own": "s" + },{ + "val": "his","pe": 3,"n": "x","g": "m","own": "s" + },{ + "val": "its","pe": 3,"n": "x","g": "n","own": "s" + },{ + "val": "our","pe": 1,"n": "x","g": "x","own": "p" + },{ + "val": "their","pe": 3,"n": "x","g": "x","own": "p" + }] + }, + "d3": { + "ending": "that", + "declension": [{ + "val": "that","n": "s" + },{ + "val": "those","n": "p" + }] + }, + "d4": { + "ending": "", + "declension": [{ + "val": "","n": "x" + }] + }, + "d5": { + "ending": "this", + "declension": [{ + "val": "this","n": "s" + },{ + "val": "these","n": "p" + }] + }, + "b1": { + "ending": "", + "declension": [{ + "val": "" + }] + }, + "b2": { + "ending": "badly", + "declension": [{ + "val": "badly" + },{ + "val": "worse","f": "co" + },{ + "val": "worst","f": "su" + }] + }, + "b3": { + "ending": "well", + "declension": [{ + "val": "well" + },{ + "val": "better","f": "co" + },{ + "val": "best","f": "su" + }] + }, + "b4": { + "ending": "far", + "declension": [{ + "val": "far" + },{ + "val": "farther","f": "co" + },{ + "val": "farthest","f": "su" + }] + }, + "b5": { + "ending": "little", + "declension": [{ + "val": "little" + },{ + "val": "less","f": "co" + },{ + "val": "least","f": "su" + }] + } + }, + "punctuation": { + "pc1": { + "b": "", + "a": "" + }, + "pc2": { + "b": " ", + "a": " " + }, + "pc3": { + "b": " ", + "a": "" + }, + "pc4": { + "b": "", + "a": " " + }, + "pc5": { + "b": " ", + "a": "", + "pos": "l" + }, + "pc6": { + "b": "", + "a": " ", + "pos": "r" + }, + "pc7": { + "b": " ", + "a": " ", + "pos": "l" + }, + "pc8": { + "b": " ", + "a": " ", + "pos": "r" + } + }, + "sentence_type": { + "exc": { + "type": "exclamative", + "punctuation": "!" + }, + "int": { + "type": "interrogative", + "punctuation": "?", + "prefix": { + "base": "do", + "yon": "do", + "wos": "who", + "wod": "who", + "woi": "to whom", + "wad": "what", + "whe": "where", + "how": "how", + "whn": "when", + "why": "why", + "muc": "how much" + }, + "future": "will" + }, + "dec": { + "type": "declarative", + "punctuation": "." + } + }, + "propositional": { + "base": "that", + "subject": "who", + "autres": ["which","whose","whom"] + }, + "regular": { + "pp": { + "ending": "", + "option": [{ + "val": "" + }] + } + }, + "verb_option": { + "neg": { + "prep1": "not" + } + }, + "usePronoun": { + "S": "I", + "SP":"I", + "NP":"I", + "VP": "me", + "PP": "me", + "Pro": "me" + }, + "date": { + "format": { + "non_natural": { + "year-month-date-day": "[l] [M]\/[d]\/[Y]", + "year-month-date": "[M]\/[d]\/[Y]", + "year-month": "[M]\/[Y]", + "month-date": "[M]\/[d]", + "month-date-day": "[l] [M]\/[d]", + "year": "[Y]", + "month": "[M]", + "date": "[d]", + "day": "[l]", + "hour:minute:second": "[H0]:[m0]:[s0] [A]", + "hour:minute": "[h]:[m0] [A]", + "minute:second": "[m0]:[s0]", + "hour": "[h] [A]", + "minute": "[m]", + "second": "[s]" + }, + "natural": { + "year-month-date-day": "on [l], [F] [d], [Y]", + "year-month-date": "on [F] [d], [Y]", + "year-month": "on [F] [Y]", + "month-date": "on [F] [d]", + "month-date-day": "on [l], [F] [d]", + "year": "in [Y]", + "month": "in [F]", + "date": "on the [d]", + "day": "on [l]", + "hour:minute:second": "at [h]:[m0]:[s0] [A]", + "hour:minute": "at [h]:[m0] [A]", + "minute:second": "at [m]:[s0] [A]", + "hour": "at [h] [A]", + "minute": "at [m] min", + "second": "at [s] s" + }, + "relative_time": { + "-": "[x] days ago", + "-6": "last [l]", + "-5": "last [l]", + "-4": "last [l]", + "-3": "last [l]", + "-2": "last [l]", + "-1": "yesterday", + "0": "today", + "1": "tomorrow", + "2": "[l]", + "3": "[l]", + "4": "[l]", + "5": "[l]", + "6": "[l]", + "+": "in [x] days" + } + }, + "text": { + "weekday": ["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"], + "month": { + "1": "January", + "2": "February", + "3": "March", + "4": "April", + "5": "May", + "6": "June", + "7": "July", + "8": "August", + "9": "September", + "10": "October", + "11": "November", + "12": "December" + }, + "meridiem": ["a.m.","p.m."] + } + }, + "number": { + "symbol": { + "group": ",", + "decimal": "." + }, + "number": ["zero"] + }, + "elision": { + "elidables": ["a"], + "voyellesAccentuees": "àäéèêëïîöôùû", + "voyelles": "aeiouàäéèêëïîöôùû" + }, + "union": "or", + "compound": { + "alias": "aux", + "continuous": { + "aux": "be", + "participle": "pr" + }, + "perfect": { + "aux": "have", + "participle": "pp" + }, + "passive": { + "aux": "be", + "participle": "pp" + }, + "future": { + "aux": "will" + }, + "poss": {"aux":"can"}, + "perm": {"aux":"may"}, + "nece": {"aux":"shall"}, + "will": {"aux":"will"}, + "obli": {"aux":"must"} + } +} +var lexiconFr = //========== lexicon-fr.js +{" ":{"Pc":{"tab":["pc1"]}}, + "!":{"Pc":{"tab":["pc4"]}}, + "\"":{"Pc":{"compl":"\"", + "tab":["pc5","pc6"]}}, + "(":{"Pc":{"compl":")", + "tab":["pc5"]}}, + ")":{"Pc":{"compl":"(", + "tab":["pc6"]}}, + "*":{"Pc":{"compl":"*", + "tab":["pc5","pc6"]}}, + ",":{"Pc":{"tab":["pc4"]}}, + "-":{"Pc":{"tab":["pc1"]}}, + ".":{"Pc":{"tab":["pc4"]}}, + "...":{"Pc":{"tab":["pc4"]}}, + ":":{"Pc":{"tab":["pc2"]}}, + ";":{"Pc":{"tab":["pc2"]}}, + "?":{"Pc":{"tab":["pc4"]}}, + "?!":{"Pc":{"tab":["pc4"]}}, + "[":{"Pc":{"compl":"]", + "tab":["pc5"]}}, + "]":{"Pc":{"compl":"[", + "tab":["pc6"]}}, + "à":{"P":{"tab":["pp"]}}, + "abaisser":{"V":{"aux":["av"], + "tab":"v36"}}, + "abandonner":{"V":{"aux":["av"], + "tab":"v36"}}, + "abattre":{"V":{"aux":["av"], + "tab":"v87"}}, + "abbé":{"N":{"g":"m", + "tab":["n3"]}}, + "abeille":{"N":{"g":"f", + "tab":["n17"]}}, + "abîme":{"N":{"g":"m", + "tab":["n3"]}}, + "abîmer":{"V":{"aux":["av"], + "tab":"v36"}}, + "abondamment":{"Adv":{"tab":["av"]}}, + "abondance":{"N":{"g":"f", + "tab":["n17"]}}, + "abondant":{"A":{"tab":["n28"]}}, + "abord":{"N":{"g":"m", + "tab":["n3"]}}, + "aborder":{"V":{"aux":["av"], + "tab":"v36"}}, + "aboutir":{"V":{"aux":["av"], + "tab":"v58"}}, + "aboyer":{"V":{"aux":["av"], + "tab":"v5"}}, + "abri":{"N":{"g":"m", + "tab":["n3"]}}, + "abriter":{"V":{"aux":["av"], + "tab":"v36"}}, + "absence":{"N":{"g":"f", + "tab":["n17"]}}, + "absent":{"A":{"tab":["n28"]}}, + "absenter":{"V":{"aux":["êt"], + "tab":"v36"}}, + "absolu":{"A":{"tab":["n28"]}}, + "absolument":{"Adv":{"tab":["av"]}}, + "abuser":{"V":{"aux":["av"], + "tab":"v36"}}, + "accabler":{"V":{"aux":["av"], + "tab":"v36"}}, + "accepter":{"V":{"aux":["av"], + "tab":"v36"}}, + "accident":{"N":{"g":"m", + "tab":["n3"]}}, + "acclamation":{"N":{"g":"f", + "tab":["n17"]}}, + "acclamer":{"V":{"aux":["av"], + "tab":"v36"}}, + "accompagner":{"V":{"aux":["av"], + "tab":"v36"}}, + "accomplir":{"V":{"aux":["av"], + "tab":"v58"}}, + "accord":{"N":{"g":"m", + "tab":["n3"]}}, + "accorder":{"V":{"aux":["av"], + "tab":"v36"}}, + "accourir":{"V":{"aux":["aê"], + "tab":"v57"}}, + "accrocher":{"V":{"aux":["av"], + "tab":"v36"}}, + "accueil":{"N":{"g":"m", + "tab":["n3"]}}, + "accueillir":{"V":{"aux":["av"], + "tab":"v51"}}, + "accuser":{"V":{"aux":["av"], + "tab":"v36"}}, + "acharner":{"V":{"aux":["av"], + "tab":"v36"}}, + "achat":{"N":{"g":"m", + "tab":["n3"]}}, + "acheminer":{"V":{"aux":["av"], + "tab":"v36"}}, + "acheter":{"V":{"aux":["av"], + "tab":"v11"}}, + "acheteur":{"N":{"g":"m", + "tab":["n55"]}}, + "achever":{"V":{"aux":["av"], + "tab":"v25"}}, + "acide":{"N":{"g":"m", + "tab":["n3"]}}, + "acier":{"N":{"g":"m", + "tab":["n3"]}}, + "acquérir":{"V":{"aux":["av"], + "tab":"v39"}}, + "acquitter":{"V":{"aux":["av"], + "tab":"v36"}}, + "acte":{"N":{"g":"m", + "tab":["n3"]}}, + "actif":{"A":{"tab":["n46"]}}, + "action":{"N":{"g":"f", + "tab":["n17"]}}, + "activement":{"Adv":{"tab":["av"]}}, + "activer":{"V":{"aux":["av"], + "tab":"v36"}}, + "activité":{"N":{"g":"f", + "tab":["n17"]}}, + "actuel":{"A":{"tab":["n48"]}}, + "actuellement":{"Adv":{"tab":["av"]}}, + "adieu":{"N":{"g":"m", + "tab":["n4"]}}, + "admettre":{"V":{"aux":["av"], + "tab":"v89"}}, + "administration":{"N":{"g":"f", + "tab":["n17"]}}, + "administrer":{"V":{"aux":["av"], + "tab":"v36"}}, + "admirable":{"A":{"tab":["n25"]}}, + "admiration":{"N":{"g":"f", + "tab":["n17"]}}, + "admirer":{"V":{"aux":["av"], + "tab":"v36"}}, + "adopter":{"V":{"aux":["av"], + "tab":"v36"}}, + "adorer":{"V":{"aux":["av"], + "tab":"v36"}}, + "adoucir":{"V":{"aux":["av"], + "tab":"v58"}}, + "adresse":{"N":{"g":"f", + "tab":["n17"]}}, + "adresser":{"V":{"aux":["av"], + "tab":"v36"}}, + "adroit":{"A":{"tab":["n28"]}}, + "adversaire":{"N":{"g":"x", + "tab":["n25"]}}, + "aérer":{"V":{"aux":["av"], + "tab":"v28"}}, + "affaiblir":{"V":{"aux":["av"], + "tab":"v58"}}, + "affairé":{"A":{"tab":["n28"]}}, + "affaire":{"N":{"g":"f", + "tab":["n17"]}}, + "affection":{"N":{"g":"f", + "tab":["n17"]}}, + "affectionner":{"V":{"aux":["av"], + "tab":"v36"}}, + "affectueusement":{"Adv":{"tab":["av"]}}, + "affectueux":{"A":{"tab":["n54"]}}, + "affiche":{"N":{"g":"f", + "tab":["n17"]}}, + "affliger":{"V":{"aux":["av"], + "tab":"v3"}}, + "affreux":{"A":{"tab":["n54"]}}, + "agacer":{"V":{"aux":["av"], + "tab":"v0"}}, + "âgé":{"A":{"tab":["n28"]}}, + "âge":{"N":{"g":"m", + "tab":["n3"]}}, + "agenouiller":{"V":{"aux":["êt"], + "tab":"v36"}}, + "agent":{"N":{"g":"m", + "tab":["n3"]}}, + "agile":{"A":{"tab":["n25"]}}, + "agir":{"V":{"aux":["av"], + "tab":"v58"}}, + "agitation":{"N":{"g":"f", + "tab":["n17"]}}, + "agiter":{"V":{"aux":["av"], + "tab":"v36"}}, + "agréable":{"A":{"tab":["n25"]}}, + "agréablement":{"Adv":{"tab":["av"]}}, + "agréer":{"V":{"aux":["av"], + "tab":"v36"}}, + "agrément":{"N":{"g":"m", + "tab":["n3"]}}, + "agrémenter":{"V":{"aux":["av"], + "tab":"v36"}}, + "aide":{"N":{"g":"f", + "tab":["n17"]}}, + "aider":{"V":{"aux":["av"], + "tab":"v36"}}, + "aigu":{"A":{"tab":["n45"]}}, + "aiguille":{"N":{"g":"f", + "tab":["n17"]}}, + "aiguiser":{"V":{"aux":["av"], + "tab":"v36"}}, + "aile":{"N":{"g":"f", + "tab":["n17"]}}, + "ailleurs":{"Adv":{"tab":["av"]}}, + "aimable":{"A":{"tab":["n25"]}}, + "aimer":{"V":{"aux":["av"], + "tab":"v36"}}, + "aîné":{"A":{"tab":["n28"]}}, + "ainsi":{"Adv":{"tab":["av"]}}, + "air":{"N":{"g":"m", + "tab":["n3"]}}, + "aire":{"N":{"g":"f", + "tab":["n17"]}}, + "aisance":{"N":{"g":"f", + "tab":["n17"]}}, + "aisé":{"A":{"tab":["n28"]}}, + "aise":{"N":{"g":"f", + "tab":["n17"]}}, + "aisément":{"Adv":{"tab":["av"]}}, + "ajouter":{"V":{"aux":["av"], + "tab":"v36"}}, + "alcool":{"N":{"g":"m", + "tab":["n3"]}}, + "alcoolique":{"A":{"tab":["n25"]}}, + "alentours":{"N":{"g":"m", + "tab":["n1"]}}, + "alerte":{"N":{"g":"f", + "tab":["n17"]}}, + "aligner":{"V":{"aux":["av"], + "tab":"v36"}}, + "aliment":{"N":{"g":"m", + "tab":["n3"]}}, + "allée":{"N":{"g":"f", + "tab":["n17"]}}, + "allégresse":{"N":{"g":"f", + "tab":["n17"]}}, + "allemand":{"A":{"tab":["n28"]}}, + "aller":{"V":{"aux":["êt"], + "tab":"v137"}}, + "allonger":{"V":{"aux":["av"], + "tab":"v3"}}, + "allumer":{"V":{"aux":["av"], + "tab":"v36"}}, + "allumette":{"N":{"g":"f", + "tab":["n17"]}}, + "allure":{"N":{"g":"f", + "tab":["n17"]}}, + "alors":{"Adv":{"tab":["av"]}}, + "alouette":{"N":{"g":"f", + "tab":["n17"]}}, + "amant":{"N":{"g":"m", + "tab":["n28"]}}, + "amateur":{"N":{"g":"m", + "tab":["n3"]}}, + "ambulance":{"N":{"g":"f", + "tab":["n17"]}}, + "âme":{"N":{"g":"f", + "tab":["n17"]}}, + "amende":{"N":{"g":"f", + "tab":["n17"]}}, + "amener":{"V":{"aux":["av"], + "tab":"v24"}}, + "amer":{"A":{"tab":["n39"]}}, + "américain":{"A":{"tab":["n28"]}}, + "ami":{"N":{"g":"m", + "tab":["n28"]}}, + "amical":{"A":{"tab":["n47"]}}, + "amicalement":{"Adv":{"tab":["av"]}}, + "amitié":{"N":{"g":"f", + "tab":["n17"]}}, + "amour":{"N":{"g":"m", + "tab":["n3"]}}, + "ample":{"A":{"tab":["n25"]}}, + "amusant":{"A":{"tab":["n28"]}}, + "amusement":{"N":{"g":"m", + "tab":["n3"]}}, + "amuser":{"V":{"aux":["av"], + "tab":"v36"}}, + "ancien":{"A":{"tab":["n49"]}}, + "âne":{"N":{"g":"m", + "tab":["n3"]}}, + "ange":{"N":{"g":"m", + "tab":["n3"]}}, + "anglais":{"A":{"tab":["n27"]}}, + "angle":{"N":{"g":"m", + "tab":["n3"]}}, + "angoisse":{"N":{"g":"f", + "tab":["n17"]}}, + "animal":{"N":{"g":"m", + "tab":["n5"]}}, + "animation":{"N":{"g":"f", + "tab":["n17"]}}, + "animer":{"V":{"aux":["av"], + "tab":"v36"}}, + "anneau":{"N":{"g":"m", + "tab":["n4"]}}, + "année":{"N":{"g":"f", + "tab":["n17"]}}, + "anniversaire":{"N":{"g":"m", + "tab":["n3"]}}, + "annonce":{"N":{"g":"f", + "tab":["n17"]}}, + "annoncer":{"V":{"aux":["av"], + "tab":"v0"}}, + "annuel":{"A":{"tab":["n48"]}}, + "anticiper":{"V":{"aux":["av"], + "tab":"v36"}}, + "anxiété":{"N":{"g":"f", + "tab":["n17"]}}, + "anxieux":{"A":{"tab":["n54"]}}, + "août":{"N":{"g":"m", + "tab":["n3"]}}, + "apaiser":{"V":{"aux":["av"], + "tab":"v36"}}, + "apercevoir":{"V":{"aux":["av"], + "tab":"v63"}}, + "apostolique":{"A":{"tab":["n25"]}}, + "apôtre":{"N":{"g":"m", + "tab":["n3"]}}, + "apparaître":{"V":{"aux":["aê"], + "tab":"v101"}}, + "apparence":{"N":{"g":"f", + "tab":["n17"]}}, + "apparition":{"N":{"g":"f", + "tab":["n17"]}}, + "appartement":{"N":{"g":"m", + "tab":["n3"]}}, + "appartenir":{"V":{"aux":["av"], + "tab":"v52"}}, + "appel":{"N":{"g":"m", + "tab":["n3"]}}, + "appeler":{"V":{"aux":["av"], + "tab":"v7"}}, + "appétissant":{"A":{"tab":["n28"]}}, + "appétit":{"N":{"g":"m", + "tab":["n3"]}}, + "applaudir":{"V":{"aux":["av"], + "tab":"v58"}}, + "application":{"N":{"g":"f", + "tab":["n17"]}}, + "appliquer":{"V":{"aux":["av"], + "tab":"v36"}}, + "apporter":{"V":{"aux":["av"], + "tab":"v36"}}, + "apprécier":{"V":{"aux":["av"], + "tab":"v36"}}, + "apprendre":{"V":{"aux":["av"], + "tab":"v90"}}, + "apprêter":{"V":{"aux":["av"], + "tab":"v36"}}, + "approche":{"N":{"g":"f", + "tab":["n17"]}}, + "approcher":{"V":{"aux":["av"], + "tab":"v36"}}, + "approuver":{"V":{"aux":["av"], + "tab":"v36"}}, + "appui":{"N":{"g":"m", + "tab":["n3"]}}, + "appuyer":{"V":{"aux":["av"], + "tab":"v5"}}, + "après":{"P":{"tab":["pp"]}}, + "après-midi":{"N":{"g":"m", + "tab":["n24"]}}, + "araignée":{"N":{"g":"f", + "tab":["n17"]}}, + "arbitre":{"N":{"g":"m", + "tab":["n3"]}}, + "arbre":{"N":{"g":"m", + "tab":["n3"]}}, + "arbuste":{"N":{"g":"m", + "tab":["n3"]}}, + "architecte":{"N":{"g":"m", + "tab":["n3"]}}, + "ardent":{"A":{"tab":["n28"]}}, + "ardeur":{"N":{"g":"f", + "tab":["n17"]}}, + "ardoise":{"N":{"g":"f", + "tab":["n17"]}}, + "argent":{"N":{"g":"m", + "tab":["n3"]}}, + "argenter":{"V":{"aux":["av"], + "tab":"v36"}}, + "arme":{"N":{"g":"f", + "tab":["n17"]}}, + "armée":{"N":{"g":"f", + "tab":["n17"]}}, + "armer":{"V":{"aux":["av"], + "tab":"v36"}}, + "armoire":{"N":{"g":"f", + "tab":["n17"]}}, + "arracher":{"V":{"aux":["av"], + "tab":"v36"}}, + "arranger":{"V":{"aux":["av"], + "tab":"v3"}}, + "arrêt":{"N":{"g":"m", + "tab":["n3"]}}, + "arrêter":{"V":{"aux":["av"], + "tab":"v36"}}, + "arrière":{"N":{"g":"m", + "tab":["n3"]}}, + "arrivée":{"N":{"g":"f", + "tab":["n17"]}}, + "arriver":{"V":{"aux":["êt"], + "tab":"v36"}}, + "arrondir":{"V":{"aux":["av"], + "tab":"v58"}}, + "arrondissement":{"N":{"g":"m", + "tab":["n3"]}}, + "arroser":{"V":{"aux":["av"], + "tab":"v36"}}, + "art":{"N":{"g":"m", + "tab":["n3"]}}, + "article":{"N":{"g":"m", + "tab":["n3"]}}, + "artiste":{"N":{"g":"x", + "tab":["n25"]}}, + "aspirer":{"V":{"aux":["av"], + "tab":"v36"}}, + "assaut":{"N":{"g":"m", + "tab":["n3"]}}, + "assembler":{"V":{"aux":["av"], + "tab":"v36"}}, + "asseoir":{"V":{"aux":["av"], + "tab":"v74"}}, + "assez":{"Adv":{"tab":["av"]}}, + "assidu":{"A":{"tab":["n28"]}}, + "assiette":{"N":{"g":"f", + "tab":["n17"]}}, + "assister":{"V":{"aux":["av"], + "tab":"v36"}}, + "associer":{"V":{"aux":["av"], + "tab":"v36"}}, + "assurer":{"V":{"aux":["av"], + "tab":"v36"}}, + "astre":{"N":{"g":"m", + "tab":["n3"]}}, + "atelier":{"N":{"g":"m", + "tab":["n3"]}}, + "atmosphère":{"N":{"g":"f", + "tab":["n17"]}}, + "attachement":{"N":{"g":"m", + "tab":["n3"]}}, + "attacher":{"V":{"aux":["av"], + "tab":"v36"}}, + "attaque":{"N":{"g":"f", + "tab":["n17"]}}, + "attaquer":{"V":{"aux":["av"], + "tab":"v36"}}, + "attarder":{"V":{"aux":["av"], + "tab":"v36"}}, + "atteindre":{"V":{"aux":["av"], + "tab":"v97"}}, + "atteler":{"V":{"aux":["av"], + "tab":"v7"}}, + "attendre":{"V":{"aux":["av"], + "tab":"v85"}}, + "attente":{"N":{"g":"f", + "tab":["n17"]}}, + "attentif":{"A":{"tab":["n46"]}}, + "attention":{"N":{"g":"f", + "tab":["n17"]}}, + "attentivement":{"Adv":{"tab":["av"]}}, + "attester":{"V":{"aux":["av"], + "tab":"v36"}}, + "attirer":{"V":{"aux":["av"], + "tab":"v36"}}, + "attrait":{"N":{"g":"m", + "tab":["n3"]}}, + "attraper":{"V":{"aux":["av"], + "tab":"v36"}}, + "attribuer":{"V":{"aux":["av"], + "tab":"v36"}}, + "attrister":{"V":{"aux":["av"], + "tab":"v36"}}, + "au":{"D":{"tab":["d2"]}}, + "aube":{"N":{"g":"f", + "tab":["n17"]}}, + "aubépine":{"N":{"g":"f", + "tab":["n17"]}}, + "auberge":{"N":{"g":"f", + "tab":["n17"]}}, + "augmenter":{"V":{"aux":["aê"], + "tab":"v36"}}, + "aujourd'hui":{"Adv":{"tab":["av"]}}, + "aumône":{"N":{"g":"f", + "tab":["n17"]}}, + "auparavant":{"Adv":{"tab":["av"]}}, + "auprès":{"Adv":{"tab":["av"]}}, + "aurore":{"N":{"g":"f", + "tab":["n17"]}}, + "aussi":{"Adv":{"tab":["av"]}}, + "aussitôt":{"Adv":{"tab":["av"]}}, + "autant":{"Adv":{"tab":["av"]}}, + "autel":{"N":{"g":"m", + "tab":["n3"]}}, + "auteur":{"N":{"g":"m", + "tab":["n3"]}}, + "auto":{"N":{"g":"f", + "tab":["n17"]}}, + "automne":{"N":{"g":"m", + "tab":["n3"]}}, + "automobile":{"N":{"g":"f", + "tab":["n17"]}}, + "autoriser":{"V":{"aux":["av"], + "tab":"v36"}}, + "autorité":{"N":{"g":"f", + "tab":["n17"]}}, + "autre":{"A":{"pos":"pre", + "tab":["n25"]}}, + "autrefois":{"Adv":{"tab":["av"]}}, + "autrement":{"Adv":{"tab":["av"]}}, + "avaler":{"V":{"aux":["av"], + "tab":"v36"}}, + "avance":{"N":{"g":"f", + "tab":["n17"]}}, + "avancer":{"V":{"aux":["av"], + "tab":"v0"}}, + "avant":{"P":{"tab":["pp"]}}, + "avantage":{"N":{"g":"m", + "tab":["n3"]}}, + "avantageux":{"A":{"tab":["n54"]}}, + "avec":{"P":{"tab":["pp"]}}, + "avenir":{"N":{"g":"m", + "tab":["n3"]}}, + "aventure":{"N":{"g":"f", + "tab":["n17"]}}, + "aventurer":{"V":{"aux":["av"], + "tab":"v36"}}, + "avenue":{"N":{"g":"f", + "tab":["n17"]}}, + "averse":{"N":{"g":"f", + "tab":["n17"]}}, + "avertir":{"V":{"aux":["av"], + "tab":"v58"}}, + "aveugle":{"A":{"tab":["n25"]}}, + "aviateur":{"N":{"g":"m", + "tab":["n56"]}}, + "avion":{"N":{"g":"m", + "tab":["n3"]}}, + "avis":{"N":{"g":"m", + "tab":["n2"]}}, + "aviser":{"V":{"aux":["av"], + "tab":"v36"}}, + "avoine":{"N":{"g":"m", + "tab":["n17"]}}, + "avoir":{"N":{"g":"m", + "tab":["n3"]}, + "V":{"aux":["av"], + "tab":"v135"}}, + "avouer":{"V":{"aux":["av"], + "tab":"v36"}}, + "avril":{"N":{"g":"m", + "tab":["n3"]}}, + "azur":{"N":{"g":"m", + "tab":["n3"]}}, + "azuré":{"A":{"tab":["n28"]}}, + "bagage":{"N":{"g":"m", + "tab":["n3"]}}, + "baguette":{"N":{"g":"f", + "tab":["n17"]}}, + "baigner":{"V":{"aux":["av"], + "tab":"v36"}}, + "bâiller":{"V":{"aux":["av"], + "tab":"v36"}}, + "bain":{"N":{"g":"m", + "tab":["n3"]}}, + "baiser":{"N":{"g":"m", + "tab":["n3"]}}, + "baisser":{"V":{"aux":["av"], + "tab":"v36"}}, + "bal":{"N":{"g":"m", + "tab":["n3"]}}, + "balancer":{"V":{"aux":["av"], + "tab":"v0"}}, + "balançoire":{"N":{"g":"f", + "tab":["n17"]}}, + "balayer":{"V":{"aux":["av"], + "tab":"v4"}}, + "balcon":{"N":{"g":"m", + "tab":["n3"]}}, + "balle":{"N":{"g":"f", + "tab":["n17"]}}, + "ballon":{"N":{"g":"m", + "tab":["n3"]}}, + "bambin":{"N":{"g":"m", + "tab":["n28"]}}, + "banane":{"N":{"g":"f", + "tab":["n17"]}}, + "banc":{"N":{"g":"m", + "tab":["n3"]}}, + "bande":{"N":{"g":"f", + "tab":["n17"]}}, + "bandit":{"N":{"g":"m", + "tab":["n3"]}}, + "banque":{"N":{"g":"f", + "tab":["n17"]}}, + "banquier":{"N":{"g":"m", + "tab":["n3"]}}, + "baptême":{"N":{"g":"m", + "tab":["n3"]}}, + "baptiser":{"V":{"aux":["av"], + "tab":"v36"}}, + "barbe":{"N":{"g":"f", + "tab":["n17"]}}, + "barque":{"N":{"g":"f", + "tab":["n17"]}}, + "barquette":{"N":{"g":"f", + "tab":["n17"]}}, + "barrage":{"N":{"g":"m", + "tab":["n3"]}}, + "barre":{"N":{"g":"f", + "tab":["n17"]}}, + "barreau":{"N":{"g":"m", + "tab":["n4"]}}, + "barrière":{"N":{"g":"f", + "tab":["n17"]}}, + "bas":{"A":{"tab":["n50"]}}, + "basse":{"N":{"g":"f", + "tab":["n17"]}}, + "basse-cour":{"N":{"g":"f", + "tab":["nI"]}}, + "bassin":{"N":{"g":"m", + "tab":["n3"]}}, + "bataille":{"N":{"g":"f", + "tab":["n17"]}}, + "bateau":{"N":{"g":"m", + "tab":["n4"]}}, + "bâtiment":{"N":{"g":"m", + "tab":["n3"]}}, + "bâtir":{"V":{"aux":["av"], + "tab":"v58"}}, + "bâton":{"N":{"g":"m", + "tab":["n3"]}}, + "battre":{"V":{"aux":["av"], + "tab":"v87"}}, + "bavarder":{"V":{"aux":["av"], + "tab":"v36"}}, + "bazar":{"N":{"g":"m", + "tab":["n3"]}}, + "beau":{"A":{"pos":"pre", + "tab":["n108"]}}, + "beaucoup":{"Adv":{"tab":["av"]}}, + "beauté":{"N":{"g":"f", + "tab":["n17"]}}, + "bébé":{"N":{"g":"m", + "tab":["n3"]}}, + "bec":{"N":{"g":"m", + "tab":["n3"]}}, + "bêche":{"N":{"g":"f", + "tab":["n17"]}}, + "belge":{"A":{"tab":["n25"]}}, + "bénédiction":{"N":{"g":"f", + "tab":["n17"]}}, + "bénir":{"V":{"aux":["av"], + "tab":"v58"}}, + "berceau":{"N":{"g":"m", + "tab":["n4"]}}, + "bercer":{"V":{"aux":["av"], + "tab":"v0"}}, + "béret":{"N":{"g":"m", + "tab":["n3"]}}, + "berger":{"N":{"g":"m", + "tab":["n39"]}}, + "bergère":{"N":{"g":"f", + "tab":["n17"]}}, + "besogne":{"N":{"g":"f", + "tab":["n17"]}}, + "besoin":{"N":{"g":"m", + "tab":["n3"]}}, + "bétail":{"N":{"g":"m", + "tab":["n3"]}}, + "bête":{"N":{"g":"f", + "tab":["n17"]}}, + "betterave":{"N":{"g":"f", + "tab":["n17"]}}, + "beurre":{"N":{"g":"m", + "tab":["n3"]}}, + "bibelot":{"N":{"g":"m", + "tab":["n3"]}}, + "bibliothèque":{"N":{"g":"f", + "tab":["n17"]}}, + "bicyclette":{"N":{"g":"f", + "tab":["n17"]}}, + "bien":{"Adv":{"tab":["av"]}}, + "bien-aimé":{"A":{"tab":["n28"]}}, + "bien-être":{"N":{"g":"m", + "tab":["n35"]}}, + "bienfaisant":{"A":{"tab":["n28"]}}, + "bienfait":{"N":{"g":"m", + "tab":["n3"]}}, + "bienfaiteur":{"N":{"g":"m", + "tab":["n56"]}}, + "bienheureux":{"A":{"tab":["n54"]}}, + "bientôt":{"Adv":{"tab":["av"]}}, + "bienveillance":{"N":{"g":"f", + "tab":["n17"]}}, + "bienveillant":{"A":{"tab":["n28"]}}, + "bière":{"N":{"g":"f", + "tab":["n17"]}}, + "bijou":{"N":{"g":"m", + "tab":["n4"]}}, + "bille":{"N":{"g":"f", + "tab":["n17"]}}, + "billet":{"N":{"g":"m", + "tab":["n3"]}}, + "bise":{"N":{"g":"m", + "tab":["n17"]}}, + "bizarre":{"A":{"tab":["n25"]}}, + "blanc":{"A":{"tab":["n61"]}}, + "blancheur":{"N":{"g":"f", + "tab":["n17"]}}, + "blanchir":{"V":{"aux":["av"], + "tab":"v58"}}, + "blé":{"N":{"g":"m", + "tab":["n3"]}}, + "blesser":{"V":{"aux":["av"], + "tab":"v36"}}, + "blessure":{"N":{"g":"f", + "tab":["n17"]}}, + "bleu":{"A":{"tab":["n28"]}}, + "bleuet":{"N":{"g":"m", + "tab":["n3"]}}, + "bloc":{"N":{"g":"m", + "tab":["n3"]}}, + "blond":{"A":{"tab":["n28"]}}, + "blottir":{"V":{"aux":["êt"], + "tab":"v58"}}, + "blouse":{"N":{"g":"f", + "tab":["n17"]}}, + "bluet":{"N":{"g":"m", + "tab":["n3"]}}, + "boeuf":{"N":{"g":"m", + "tab":["n3"]}}, + "boire":{"V":{"aux":["av"], + "tab":"v121"}}, + "bois":{"N":{"g":"m", + "tab":["n2"]}}, + "boisson":{"N":{"g":"f", + "tab":["n17"]}}, + "boîte":{"N":{"g":"f", + "tab":["n17"]}}, + "boiteux":{"A":{"tab":["n54"]}}, + "bon":{"A":{"pos":"pre", + "tab":["n49"]}}, + "bonbon":{"N":{"g":"m", + "tab":["n3"]}}, + "bond":{"N":{"g":"m", + "tab":["n3"]}}, + "bondir":{"V":{"aux":["av"], + "tab":"v58"}}, + "bonheur":{"N":{"g":"m", + "tab":["n3"]}}, + "bonhomme":{"N":{"g":"m", + "tab":["n11"]}}, + "bonjour":{"N":{"g":"m", + "tab":["n3"]}}, + "bonne":{"N":{"g":"f", + "tab":["n17"]}}, + "bonnet":{"N":{"g":"m", + "tab":["n3"]}}, + "bonsoir":{"N":{"g":"m", + "tab":["n3"]}}, + "bonté":{"N":{"g":"f", + "tab":["n17"]}}, + "bord":{"N":{"g":"m", + "tab":["n3"]}}, + "border":{"V":{"aux":["av"], + "tab":"v36"}}, + "bordure":{"N":{"g":"f", + "tab":["n17"]}}, + "borne":{"N":{"g":"f", + "tab":["n17"]}}, + "bosquet":{"N":{"g":"m", + "tab":["n3"]}}, + "bossu":{"A":{"tab":["n28"]}}, + "botte":{"N":{"g":"f", + "tab":["n17"]}}, + "bouche":{"N":{"g":"f", + "tab":["n17"]}}, + "boucher":{"V":{"aux":["av"], + "tab":"v36"}}, + "boucle":{"N":{"g":"f", + "tab":["n17"]}}, + "boucler":{"V":{"aux":["av"], + "tab":"v36"}}, + "bouder":{"V":{"aux":["av"], + "tab":"v36"}}, + "boue":{"N":{"g":"f", + "tab":["n17"]}}, + "boueux":{"A":{"tab":["n54"]}}, + "bouger":{"V":{"aux":["av"], + "tab":"v3"}}, + "bougie":{"N":{"g":"f", + "tab":["n17"]}}, + "boulanger":{"N":{"g":"m", + "tab":["n39"]}}, + "boulangerie":{"N":{"g":"f", + "tab":["n17"]}}, + "boule":{"N":{"g":"f", + "tab":["n17"]}}, + "bouleau":{"N":{"g":"m", + "tab":["n4"]}}, + "boulevard":{"N":{"g":"m", + "tab":["n3"]}}, + "bouleverser":{"V":{"aux":["av"], + "tab":"v36"}}, + "bouquet":{"N":{"g":"m", + "tab":["n3"]}}, + "bourdonnement":{"N":{"g":"m", + "tab":["n3"]}}, + "bourdonner":{"V":{"aux":["av"], + "tab":"v36"}}, + "bourgeois":{"N":{"g":"m", + "tab":["n27"]}}, + "bourgeon":{"N":{"g":"m", + "tab":["n3"]}}, + "bourgeonner":{"V":{"aux":["av"], + "tab":"v36"}}, + "bourgmestre":{"N":{"g":"m", + "tab":["n3"]}}, + "bourrasque":{"N":{"g":"f", + "tab":["n17"]}}, + "bourse":{"N":{"g":"f", + "tab":["n17"]}}, + "bousculer":{"V":{"aux":["av"], + "tab":"v36"}}, + "bout":{"N":{"g":"m", + "tab":["n3"]}}, + "bouteille":{"N":{"g":"f", + "tab":["n17"]}}, + "boutique":{"N":{"g":"f", + "tab":["n17"]}}, + "bouton":{"N":{"g":"m", + "tab":["n3"]}}, + "branche":{"N":{"g":"f", + "tab":["n17"]}}, + "bras":{"N":{"g":"m", + "tab":["n2"]}}, + "brave":{"A":{"tab":["n25"]}}, + "bravo":{"N":{"g":"m", + "tab":["n3"]}}, + "brebis":{"N":{"g":"f", + "tab":["n16"]}}, + "brèche":{"N":{"g":"f", + "tab":["n17"]}}, + "bref":{"A":{"tab":["n38"]}}, + "brigand":{"N":{"g":"m", + "tab":["n3"]}}, + "brillant":{"A":{"tab":["n28"]}}, + "briller":{"V":{"aux":["av"], + "tab":"v36"}}, + "brin":{"N":{"g":"m", + "tab":["n3"]}}, + "brindille":{"N":{"g":"f", + "tab":["n17"]}}, + "brique":{"N":{"g":"f", + "tab":["n17"]}}, + "brise":{"N":{"g":"f", + "tab":["n17"]}}, + "briser":{"V":{"aux":["av"], + "tab":"v36"}}, + "brochure":{"N":{"g":"f", + "tab":["n17"]}}, + "broder":{"V":{"aux":["av"], + "tab":"v36"}}, + "brouillard":{"N":{"g":"m", + "tab":["n3"]}}, + "brouter":{"V":{"aux":["av"], + "tab":"v36"}}, + "broyer":{"V":{"aux":["av"], + "tab":"v5"}}, + "bruit":{"N":{"g":"m", + "tab":["n3"]}}, + "brûlant":{"A":{"tab":["n28"]}}, + "brûler":{"V":{"aux":["av"], + "tab":"v36"}}, + "brume":{"N":{"g":"f", + "tab":["n17"]}}, + "brumeux":{"A":{"tab":["n54"]}}, + "brun":{"A":{"tab":["n28"]}}, + "brusque":{"A":{"tab":["n25"]}}, + "brusquement":{"Adv":{"tab":["av"]}}, + "brut":{"A":{"tab":["n28"]}}, + "brutal":{"A":{"tab":["n47"]}}, + "bruyamment":{"Adv":{"tab":["av"]}}, + "bruyant":{"A":{"tab":["n28"]}}, + "bûcheron":{"N":{"g":"m", + "tab":["n49"]}}, + "buis":{"N":{"g":"m", + "tab":["n2"]}}, + "buisson":{"N":{"g":"m", + "tab":["n3"]}}, + "bulletin":{"N":{"g":"m", + "tab":["n3"]}}, + "bureau":{"N":{"g":"m", + "tab":["n4"]}}, + "but":{"N":{"g":"m", + "tab":["n3"]}}, + "butiner":{"V":{"aux":["av"], + "tab":"v36"}}, + "ça":{"Pro":{"g":"n", + "tab":["pn18"]}}, + "cabane":{"N":{"g":"f", + "tab":["n17"]}}, + "cabine":{"N":{"g":"f", + "tab":["n17"]}}, + "cache-cache":{"N":{"g":"m", + "tab":["n2"]}}, + "cacher":{"V":{"aux":["av"], + "tab":"v36"}}, + "cadavre":{"N":{"g":"m", + "tab":["n3"]}}, + "cadeau":{"N":{"g":"m", + "tab":["n4"]}}, + "cadet":{"A":{"tab":["n51"]}}, + "cadran":{"N":{"g":"m", + "tab":["n3"]}}, + "cadre":{"N":{"g":"m", + "tab":["n3"]}}, + "café":{"N":{"g":"m", + "tab":["n3"]}}, + "cage":{"N":{"g":"f", + "tab":["n17"]}}, + "cahier":{"N":{"g":"m", + "tab":["n3"]}}, + "caillou":{"N":{"g":"m", + "tab":["n4"]}}, + "caisse":{"N":{"g":"f", + "tab":["n17"]}}, + "calcul":{"N":{"g":"m", + "tab":["n3"]}}, + "calculer":{"V":{"aux":["av"], + "tab":"v36"}}, + "calendrier":{"N":{"g":"m", + "tab":["n3"]}}, + "calice":{"N":{"g":"m", + "tab":["n3"]}}, + "calme":{"A":{"tab":["n25"]}}, + "calmer":{"V":{"aux":["av"], + "tab":"v36"}}, + "calvaire":{"N":{"g":"m", + "tab":["n3"]}}, + "camarade":{"N":{"g":"x", + "tab":["n25"]}}, + "camion":{"N":{"g":"m", + "tab":["n3"]}}, + "camp":{"N":{"g":"m", + "tab":["n3"]}}, + "campagnard":{"N":{"g":"m", + "tab":["n28"]}}, + "campagne":{"N":{"g":"f", + "tab":["n17"]}}, + "canal":{"N":{"g":"m", + "tab":["n5"]}}, + "canard":{"N":{"g":"m", + "tab":["n3"]}}, + "canif":{"N":{"g":"m", + "tab":["n3"]}}, + "canne":{"N":{"g":"f", + "tab":["n17"]}}, + "canon":{"N":{"g":"m", + "tab":["n3"]}}, + "canot":{"N":{"g":"m", + "tab":["n3"]}}, + "cantique":{"N":{"g":"m", + "tab":["n3"]}}, + "capable":{"A":{"tab":["n25"]}}, + "capitaine":{"N":{"g":"m", + "tab":["n3"]}}, + "capital":{"N":{"g":"m", + "tab":["n5"]}}, + "capitale":{"N":{"g":"f", + "tab":["n17"]}}, + "caprice":{"N":{"g":"m", + "tab":["n3"]}}, + "carabine":{"N":{"g":"f", + "tab":["n17"]}}, + "caractère":{"N":{"g":"m", + "tab":["n3"]}}, + "caresse":{"N":{"g":"f", + "tab":["n17"]}}, + "caresser":{"V":{"aux":["av"], + "tab":"v36"}}, + "carnet":{"N":{"g":"m", + "tab":["n3"]}}, + "carotte":{"N":{"g":"f", + "tab":["n17"]}}, + "carré":{"A":{"tab":["n28"]}}, + "carreau":{"N":{"g":"m", + "tab":["n4"]}}, + "carrefour":{"N":{"g":"m", + "tab":["n3"]}}, + "carrière":{"N":{"g":"f", + "tab":["n17"]}}, + "carrousel":{"N":{"g":"m", + "tab":["n3"]}}, + "cartable":{"N":{"g":"m", + "tab":["n3"]}}, + "carte":{"N":{"g":"f", + "tab":["n17"]}}, + "carton":{"N":{"g":"m", + "tab":["n3"]}}, + "cas":{"N":{"g":"m", + "tab":["n2"]}}, + "casquette":{"N":{"g":"f", + "tab":["n17"]}}, + "casser":{"V":{"aux":["av"], + "tab":"v36"}}, + "catastrophe":{"N":{"g":"f", + "tab":["n17"]}}, + "catéchisme":{"N":{"g":"m", + "tab":["n3"]}}, + "cathédrale":{"N":{"g":"f", + "tab":["n17"]}}, + "catholique":{"A":{"tab":["n25"]}}, + "cause":{"N":{"g":"f", + "tab":["n17"]}}, + "causer":{"V":{"aux":["av"], + "tab":"v36"}}, + "cave":{"N":{"g":"f", + "tab":["n17"]}}, + "caverne":{"N":{"g":"f", + "tab":["n17"]}}, + "ce":{"D":{"tab":["d7"]}, + "Pro":{"g":"n", + "tab":["pn14"]}}, + "ceci":{"Pro":{"g":"n", + "tab":["pn16"]}}, + "céder":{"V":{"aux":["av"], + "tab":"v30"}}, + "ceinture":{"N":{"g":"f", + "tab":["n17"]}}, + "cela":{"Pro":{"g":"n", + "tab":["pn19"]}}, + "célèbre":{"A":{"tab":["n25"]}}, + "célébrer":{"V":{"aux":["av"], + "tab":"v20"}}, + "céleste":{"A":{"tab":["n25"]}}, + "celui":{"Pro":{"g":"m", + "tab":["pn15"]}}, + "celui-ci":{"Pro":{"g":"m", + "tab":["pn17"]}}, + "celui-là":{"Pro":{"g":"m", + "tab":["pn20"]}}, + "cendre":{"N":{"g":"f", + "tab":["n17"]}}, + "centaine":{"N":{"g":"f", + "tab":["n17"]}}, + "centime":{"N":{"g":"m", + "tab":["n3"]}}, + "centimètre":{"N":{"g":"m", + "tab":["n3"]}}, + "central":{"A":{"tab":["n47"]}}, + "centre":{"N":{"g":"m", + "tab":["n3"]}}, + "cercle":{"N":{"g":"m", + "tab":["n3"]}}, + "cérémonie":{"N":{"g":"f", + "tab":["n17"]}}, + "cerf":{"N":{"g":"m", + "tab":["n3"]}}, + "cerise":{"N":{"g":"f", + "tab":["n17"]}}, + "cerisier":{"N":{"g":"m", + "tab":["n3"]}}, + "certain":{"A":{"tab":["n28"]}}, + "certainement":{"Adv":{"tab":["av"]}}, + "certes":{"Adv":{"tab":["av"]}}, + "cesse":{"N":{"g":"f", + "tab":["n17"]}}, + "cesser":{"V":{"aux":["av"], + "tab":"v36"}}, + "chagrin":{"N":{"g":"m", + "tab":["n3"]}}, + "chaîne":{"N":{"g":"f", + "tab":["n17"]}}, + "chair":{"N":{"g":"f", + "tab":["n17"]}}, + "chaise":{"N":{"g":"f", + "tab":["n17"]}}, + "chaland":{"N":{"g":"m", + "tab":["n3"]}}, + "chaleur":{"N":{"g":"f", + "tab":["n17"]}}, + "chambre":{"N":{"g":"f", + "tab":["n17"]}}, + "chameau":{"N":{"g":"m", + "tab":["n4"]}}, + "champ":{"N":{"g":"m", + "tab":["n3"]}}, + "chance":{"N":{"g":"f", + "tab":["n17"]}}, + "changement":{"N":{"g":"m", + "tab":["n3"]}}, + "changer":{"V":{"aux":["aê"], + "tab":"v3"}}, + "chanson":{"N":{"g":"f", + "tab":["n17"]}}, + "chant":{"N":{"g":"m", + "tab":["n3"]}}, + "chanter":{"V":{"aux":["av"], + "tab":"v36"}}, + "chanteur":{"N":{"g":"m", + "tab":["n55"]}}, + "chantre":{"N":{"g":"m", + "tab":["n3"]}}, + "chapeau":{"N":{"g":"m", + "tab":["n4"]}}, + "chapelet":{"N":{"g":"m", + "tab":["n3"]}}, + "chapelle":{"N":{"g":"f", + "tab":["n17"]}}, + "chapitre":{"N":{"g":"m", + "tab":["n3"]}}, + "charbon":{"N":{"g":"m", + "tab":["n3"]}}, + "charbonnage":{"N":{"g":"m", + "tab":["n3"]}}, + "charge":{"N":{"g":"f", + "tab":["n17"]}}, + "charger":{"V":{"aux":["av"], + "tab":"v3"}}, + "chariot":{"N":{"g":"m", + "tab":["n3"]}}, + "charitable":{"A":{"tab":["n25"]}}, + "charité":{"N":{"g":"f", + "tab":["n17"]}}, + "charlatan":{"N":{"g":"m", + "tab":["n3"]}}, + "charmant":{"A":{"tab":["n28"]}}, + "charme":{"N":{"g":"m", + "tab":["n3"]}}, + "charmer":{"V":{"aux":["av"], + "tab":"v36"}}, + "charrette":{"N":{"g":"f", + "tab":["n17"]}}, + "charrue":{"N":{"g":"f", + "tab":["n17"]}}, + "chasse":{"N":{"g":"f", + "tab":["n17"]}}, + "chasser":{"V":{"aux":["av"], + "tab":"v36"}}, + "chasseur":{"N":{"g":"m", + "tab":["n55"]}}, + "chat":{"N":{"g":"m", + "tab":["n51"]}}, + "château":{"N":{"g":"m", + "tab":["n4"]}}, + "chaud":{"A":{"tab":["n28"]}}, + "chaudement":{"Adv":{"tab":["av"]}}, + "chauffage":{"N":{"g":"m", + "tab":["n3"]}}, + "chauffer":{"V":{"aux":["av"], + "tab":"v36"}}, + "chauffeur":{"N":{"g":"m", + "tab":["n3"]}}, + "chauffeuse":{"N":{"g":"f", + "tab":["n17"]}}, + "chaume":{"N":{"g":"m", + "tab":["n3"]}}, + "chaumière":{"N":{"g":"f", + "tab":["n17"]}}, + "chaussée":{"N":{"g":"f", + "tab":["n17"]}}, + "chausser":{"V":{"aux":["av"], + "tab":"v36"}}, + "chaussure":{"N":{"g":"f", + "tab":["n17"]}}, + "chaux":{"N":{"g":"f", + "tab":["n16"]}}, + "chef":{"N":{"g":"m", + "tab":["n3"]}}, + "chef-d'oeuvre":{"N":{"g":"m", + "tab":["nI"]}}, + "chemin":{"N":{"g":"m", + "tab":["n3"]}}, + "cheminée":{"N":{"g":"f", + "tab":["n17"]}}, + "chemise":{"N":{"g":"f", + "tab":["n17"]}}, + "chêne":{"N":{"g":"m", + "tab":["n3"]}}, + "cher":{"A":{"tab":["n39"]}}, + "chercher":{"V":{"aux":["av"], + "tab":"v36"}}, + "chéri":{"A":{"tab":["n28"]}}, + "chérir":{"V":{"aux":["av"], + "tab":"v58"}}, + "cheval":{"N":{"g":"m", + "tab":["n5"]}}, + "chevalier":{"N":{"g":"m", + "tab":["n3"]}}, + "chevalière":{"N":{"g":"f", + "tab":["n17"]}}, + "chevelure":{"N":{"g":"f", + "tab":["n17"]}}, + "chevet":{"N":{"g":"m", + "tab":["n3"]}}, + "cheveu":{"N":{"g":"m", + "tab":["n4"]}}, + "chèvre":{"N":{"g":"f", + "tab":["n17"]}}, + "chez":{"P":{"tab":["pp"]}}, + "chien":{"N":{"g":"m", + "tab":["n49"]}}, + "chiffon":{"N":{"g":"m", + "tab":["n3"]}}, + "chiffre":{"N":{"g":"m", + "tab":["n3"]}}, + "choc":{"N":{"g":"m", + "tab":["n3"]}}, + "chocolat":{"N":{"g":"m", + "tab":["n3"]}}, + "choeur":{"N":{"g":"m", + "tab":["n3"]}}, + "choisir":{"V":{"aux":["av"], + "tab":"v58"}}, + "choix":{"N":{"g":"m", + "tab":["n2"]}}, + "chose":{"N":{"g":"f", + "tab":["n17"]}}, + "chou":{"N":{"g":"m", + "tab":["n4"]}}, + "chrétien":{"A":{"tab":["n49"]}}, + "chrysanthème":{"N":{"g":"m", + "tab":["n3"]}}, + "chute":{"N":{"g":"f", + "tab":["n17"]}}, + "ci-joint":{"A":{"tab":["n28"]}}, + "ciel":{"N":{"g":"m", + "tab":["n9"]}}, + "cigarette":{"N":{"g":"f", + "tab":["n17"]}}, + "cime":{"N":{"g":"f", + "tab":["n17"]}}, + "cimetière":{"N":{"g":"m", + "tab":["n3"]}}, + "cinéma":{"N":{"g":"m", + "tab":["n3"]}}, + "circonstance":{"N":{"g":"f", + "tab":["n17"]}}, + "circulation":{"N":{"g":"f", + "tab":["n17"]}}, + "circuler":{"V":{"aux":["av"], + "tab":"v36"}}, + "cirer":{"V":{"aux":["av"], + "tab":"v36"}}, + "cirque":{"N":{"g":"m", + "tab":["n3"]}}, + "cité":{"N":{"g":"f", + "tab":["n17"]}}, + "citer":{"V":{"aux":["av"], + "tab":"v36"}}, + "citoyen":{"N":{"g":"m", + "tab":["n49"]}}, + "civil":{"A":{"tab":["n28"]}}, + "clair":{"A":{"tab":["n28"]}}, + "clairière":{"N":{"g":"f", + "tab":["n17"]}}, + "clairon":{"N":{"g":"m", + "tab":["n3"]}}, + "claquer":{"V":{"aux":["av"], + "tab":"v36"}}, + "clarté":{"N":{"g":"f", + "tab":["n17"]}}, + "classe":{"N":{"g":"f", + "tab":["n17"]}}, + "classique":{"A":{"tab":["n25"]}}, + "clé":{"N":{"g":"f", + "tab":["n17"]}}, + "clef":{"N":{"g":"f", + "tab":["n17"]}}, + "clément":{"A":{"tab":["n28"]}}, + "client":{"N":{"g":"m", + "tab":["n28"]}}, + "climat":{"N":{"g":"m", + "tab":["n3"]}}, + "clin d'oeil":{"N":{"g":"m", + "tab":["nI"]}}, + "clinique":{"N":{"g":"f", + "tab":["n17"]}}, + "cloche":{"N":{"g":"f", + "tab":["n17"]}}, + "clocher":{"N":{"g":"m", + "tab":["n3"]}}, + "clochette":{"N":{"g":"f", + "tab":["n17"]}}, + "clos":{"A":{"tab":["n27"]}}, + "clou":{"N":{"g":"m", + "tab":["n3"]}}, + "clouer":{"V":{"aux":["av"], + "tab":"v36"}}, + "clown":{"N":{"g":"m", + "tab":["n3"]}}, + "cochon":{"N":{"g":"m", + "tab":["n3"]}}, + "coeur":{"N":{"g":"m", + "tab":["n3"]}}, + "coffre":{"N":{"g":"m", + "tab":["n3"]}}, + "coffret":{"N":{"g":"m", + "tab":["n3"]}}, + "coiffer":{"V":{"aux":["av"], + "tab":"v36"}}, + "coiffure":{"N":{"g":"f", + "tab":["n17"]}}, + "coin":{"N":{"g":"m", + "tab":["n3"]}}, + "colère":{"N":{"g":"f", + "tab":["n17"]}}, + "colis":{"N":{"g":"m", + "tab":["n2"]}}, + "collection":{"N":{"g":"f", + "tab":["n17"]}}, + "collège":{"N":{"g":"m", + "tab":["n3"]}}, + "coller":{"V":{"aux":["av"], + "tab":"v36"}}, + "colline":{"N":{"g":"f", + "tab":["n17"]}}, + "colonel":{"N":{"g":"m", + "tab":["n48"]}}, + "colonial":{"A":{"tab":["n47"]}}, + "colonne":{"N":{"g":"f", + "tab":["n17"]}}, + "colorer":{"V":{"aux":["av"], + "tab":"v36"}}, + "combat":{"N":{"g":"m", + "tab":["n3"]}}, + "combattant":{"N":{"g":"m", + "tab":["n28"]}}, + "combattre":{"V":{"aux":["av"], + "tab":"v87"}}, + "comble":{"N":{"g":"m", + "tab":["n3"]}}, + "combler":{"V":{"aux":["av"], + "tab":"v36"}}, + "commandant":{"N":{"g":"m", + "tab":["n28"]}}, + "commande":{"N":{"g":"f", + "tab":["n17"]}}, + "commandement":{"N":{"g":"m", + "tab":["n3"]}}, + "commander":{"V":{"aux":["av"], + "tab":"v36"}}, + "commencement":{"N":{"g":"m", + "tab":["n3"]}}, + "commencer":{"V":{"aux":["av"], + "tab":"v0"}}, + "commerçant":{"N":{"g":"m", + "tab":["n28"]}}, + "commerce":{"N":{"g":"m", + "tab":["n3"]}}, + "commercial":{"A":{"tab":["n47"]}}, + "commettre":{"V":{"aux":["av"], + "tab":"v89"}}, + "commission":{"N":{"g":"f", + "tab":["n17"]}}, + "commode":{"N":{"g":"f", + "tab":["n17"]}}, + "commun":{"A":{"tab":["n28"]}}, + "communal":{"A":{"tab":["n47"]}}, + "commune":{"N":{"g":"f", + "tab":["n17"]}}, + "communiant":{"N":{"g":"m", + "tab":["n28"]}}, + "communication":{"N":{"g":"f", + "tab":["n17"]}}, + "communier":{"V":{"aux":["av"], + "tab":"v36"}}, + "communion":{"N":{"g":"f", + "tab":["n17"]}}, + "communiquer":{"V":{"aux":["av"], + "tab":"v36"}}, + "compagne":{"N":{"g":"f", + "tab":["n17"]}}, + "compagnie":{"N":{"g":"f", + "tab":["n17"]}}, + "compagnon":{"N":{"g":"m", + "tab":["n3"]}}, + "comparaison":{"N":{"g":"f", + "tab":["n17"]}}, + "comparer":{"V":{"aux":["av"], + "tab":"v36"}}, + "compassion":{"N":{"g":"f", + "tab":["n17"]}}, + "complet":{"A":{"tab":["n40"]}}, + "complètement":{"Adv":{"tab":["av"]}}, + "compléter":{"V":{"aux":["av"], + "tab":"v22"}}, + "compliment":{"N":{"g":"m", + "tab":["n3"]}}, + "compliquer":{"V":{"aux":["av"], + "tab":"v36"}}, + "composer":{"V":{"aux":["av"], + "tab":"v36"}}, + "composition":{"N":{"g":"f", + "tab":["n17"]}}, + "comprendre":{"V":{"aux":["av"], + "tab":"v90"}}, + "compte":{"N":{"g":"m", + "tab":["n3"]}}, + "compter":{"V":{"aux":["av"], + "tab":"v36"}}, + "comte":{"N":{"g":"m", + "tab":["n3"]}}, + "comtesse":{"N":{"g":"f", + "tab":["n17"]}}, + "concerner":{"V":{"aux":["av"], + "tab":"v36"}}, + "concert":{"N":{"g":"m", + "tab":["n3"]}}, + "concession":{"N":{"g":"f", + "tab":["n17"]}}, + "conclure":{"V":{"aux":["av"], + "tab":"v109"}}, + "concours":{"N":{"g":"m", + "tab":["n2"]}}, + "condamner":{"V":{"aux":["av"], + "tab":"v36"}}, + "condisciple":{"N":{"g":"x", + "tab":["n25"]}}, + "condition":{"N":{"g":"f", + "tab":["n17"]}}, + "condoléances":{"N":{"g":"f", + "tab":["n15"]}}, + "conduire":{"V":{"aux":["av"], + "tab":"v113"}}, + "conduite":{"N":{"g":"f", + "tab":["n17"]}}, + "confectionner":{"V":{"aux":["av"], + "tab":"v36"}}, + "conférence":{"N":{"g":"f", + "tab":["n17"]}}, + "confesser":{"V":{"aux":["av"], + "tab":"v36"}}, + "confiance":{"N":{"g":"f", + "tab":["n17"]}}, + "confier":{"V":{"aux":["av"], + "tab":"v36"}}, + "confiture":{"N":{"g":"f", + "tab":["n17"]}}, + "confondre":{"V":{"aux":["av"], + "tab":"v85"}}, + "conformément":{"Adv":{"tab":["av"]}}, + "confrère":{"N":{"g":"m", + "tab":["n3"]}}, + "confus":{"A":{"tab":["n27"]}}, + "congé":{"N":{"g":"m", + "tab":["n3"]}}, + "congrès":{"N":{"g":"m", + "tab":["n2"]}}, + "connaissance":{"N":{"g":"f", + "tab":["n17"]}}, + "connaître":{"V":{"aux":["av"], + "tab":"v101"}}, + "conquérir":{"V":{"aux":["av"], + "tab":"v39"}}, + "consacrer":{"V":{"aux":["av"], + "tab":"v36"}}, + "conscience":{"N":{"g":"f", + "tab":["n17"]}}, + "conseil":{"N":{"g":"m", + "tab":["n3"]}}, + "conseiller":{"V":{"aux":["av"], + "tab":"v36"}}, + "consentement":{"N":{"g":"m", + "tab":["n3"]}}, + "consentir":{"V":{"aux":["av"], + "tab":"v46"}}, + "conséquence":{"N":{"g":"f", + "tab":["n17"]}}, + "conserver":{"V":{"aux":["av"], + "tab":"v36"}}, + "considérable":{"A":{"tab":["n25"]}}, + "considérer":{"V":{"aux":["av"], + "tab":"v28"}}, + "consister":{"V":{"aux":["av"], + "tab":"v36"}}, + "consolation":{"N":{"g":"f", + "tab":["n17"]}}, + "consoler":{"V":{"aux":["av"], + "tab":"v36"}}, + "constamment":{"Adv":{"tab":["av"]}}, + "constant":{"A":{"tab":["n28"]}}, + "constater":{"V":{"aux":["av"], + "tab":"v36"}}, + "constituer":{"V":{"aux":["av"], + "tab":"v36"}}, + "construction":{"N":{"g":"f", + "tab":["n17"]}}, + "construire":{"V":{"aux":["av"], + "tab":"v113"}}, + "consulter":{"V":{"aux":["av"], + "tab":"v36"}}, + "contact":{"N":{"g":"m", + "tab":["n3"]}}, + "conte":{"N":{"g":"m", + "tab":["n3"]}}, + "contempler":{"V":{"aux":["av"], + "tab":"v36"}}, + "contenir":{"V":{"aux":["av"], + "tab":"v52"}}, + "content":{"A":{"tab":["n28"]}}, + "contenter":{"V":{"aux":["av"], + "tab":"v36"}}, + "contenu":{"N":{"g":"m", + "tab":["n3"]}}, + "conter":{"V":{"aux":["av"], + "tab":"v36"}}, + "continuel":{"A":{"tab":["n48"]}}, + "continuellement":{"Adv":{"tab":["av"]}}, + "continuer":{"V":{"aux":["av"], + "tab":"v36"}}, + "contraire":{"A":{"tab":["n25"]}}, + "contrarier":{"V":{"aux":["av"], + "tab":"v36"}}, + "contre":{"P":{"tab":["pp"]}}, + "contrée":{"N":{"g":"f", + "tab":["n17"]}}, + "contribuer":{"V":{"aux":["av"], + "tab":"v36"}}, + "convaincre":{"V":{"aux":["av"], + "tab":"v86"}}, + "convenable":{"A":{"tab":["n25"]}}, + "convenir":{"V":{"aux":["aê"], + "tab":"v52"}}, + "conversation":{"N":{"g":"f", + "tab":["n17"]}}, + "convertir":{"V":{"aux":["av"], + "tab":"v58"}}, + "conviction":{"N":{"g":"f", + "tab":["n17"]}}, + "copain":{"N":{"g":"m", + "tab":["n104"]}}, + "copier":{"V":{"aux":["av"], + "tab":"v36"}}, + "coq":{"N":{"g":"m", + "tab":["n3"]}}, + "coquelicot":{"N":{"g":"m", + "tab":["n3"]}}, + "coquet":{"A":{"tab":["n51"]}}, + "coquille":{"N":{"g":"f", + "tab":["n17"]}}, + "corbeau":{"N":{"g":"m", + "tab":["n4"]}}, + "corbeille":{"N":{"g":"f", + "tab":["n17"]}}, + "corde":{"N":{"g":"f", + "tab":["n17"]}}, + "cordial":{"N":{"g":"m", + "tab":["n5"]}}, + "cordialement":{"Adv":{"tab":["av"]}}, + "cordonnier":{"N":{"g":"m", + "tab":["n39"]}}, + "corne":{"N":{"g":"f", + "tab":["n17"]}}, + "corniche":{"N":{"g":"f", + "tab":["n17"]}}, + "corolle":{"N":{"g":"f", + "tab":["n17"]}}, + "corps":{"N":{"g":"m", + "tab":["n2"]}}, + "correction":{"N":{"g":"f", + "tab":["n17"]}}, + "correspondance":{"N":{"g":"f", + "tab":["n17"]}}, + "corridor":{"N":{"g":"m", + "tab":["n3"]}}, + "corriger":{"V":{"aux":["av"], + "tab":"v3"}}, + "cortège":{"N":{"g":"m", + "tab":["n3"]}}, + "costume":{"N":{"g":"m", + "tab":["n3"]}}, + "côté":{"N":{"g":"m", + "tab":["n3"]}}, + "côte":{"N":{"g":"f", + "tab":["n17"]}}, + "coton":{"N":{"g":"m", + "tab":["n3"]}}, + "cou":{"N":{"g":"m", + "tab":["n3"]}}, + "couche":{"N":{"g":"f", + "tab":["n17"]}}, + "coucher":{"V":{"aux":["av"], + "tab":"v36"}}, + "coucou":{"N":{"g":"m", + "tab":["n3"]}}, + "coude":{"N":{"g":"m", + "tab":["n3"]}}, + "coudre":{"V":{"aux":["av"], + "tab":"v93"}}, + "couler":{"V":{"aux":["av"], + "tab":"v36"}}, + "couleur":{"N":{"g":"f", + "tab":["n17"]}}, + "couloir":{"N":{"g":"m", + "tab":["n3"]}}, + "coup":{"N":{"g":"m", + "tab":["n3"]}}, + "coupable":{"A":{"tab":["n25"]}}, + "coupe":{"N":{"g":"f", + "tab":["n17"]}}, + "couper":{"V":{"aux":["av"], + "tab":"v36"}}, + "cour":{"N":{"g":"f", + "tab":["n17"]}}, + "courage":{"N":{"g":"m", + "tab":["n3"]}}, + "courageusement":{"Adv":{"tab":["av"]}}, + "courageux":{"A":{"tab":["n54"]}}, + "courant":{"A":{"tab":["n28"]}}, + "courber":{"V":{"aux":["av"], + "tab":"v36"}}, + "coureur":{"N":{"g":"m", + "tab":["n55"]}}, + "courir":{"V":{"aux":["av"], + "tab":"v57"}}, + "couronne":{"N":{"g":"f", + "tab":["n17"]}}, + "couronner":{"V":{"aux":["av"], + "tab":"v36"}}, + "courrier":{"N":{"g":"m", + "tab":["n3"]}}, + "cours":{"N":{"g":"m", + "tab":["n2"]}}, + "course":{"N":{"g":"f", + "tab":["n17"]}}, + "court":{"A":{"tab":["n28"]}}, + "cousin":{"N":{"g":"m", + "tab":["n28"]}}, + "coussin":{"N":{"g":"m", + "tab":["n3"]}}, + "couteau":{"N":{"g":"m", + "tab":["n4"]}}, + "coûter":{"V":{"aux":["av"], + "tab":"v36"}}, + "coutume":{"N":{"g":"f", + "tab":["n17"]}}, + "couture":{"N":{"g":"f", + "tab":["n17"]}}, + "couvent":{"N":{"g":"f", + "tab":["n17"]}}, + "couver":{"V":{"aux":["av"], + "tab":"v36"}}, + "couvercle":{"N":{"g":"m", + "tab":["n3"]}}, + "couvert":{"N":{"g":"m", + "tab":["n3"]}}, + "couverture":{"N":{"g":"f", + "tab":["n17"]}}, + "couvrir":{"V":{"aux":["av"], + "tab":"v44"}}, + "craindre":{"V":{"aux":["av"], + "tab":"v97"}}, + "crainte":{"N":{"g":"f", + "tab":["n17"]}}, + "craquement":{"N":{"g":"m", + "tab":["n3"]}}, + "craquer":{"V":{"aux":["av"], + "tab":"v36"}}, + "crayon":{"N":{"g":"m", + "tab":["n3"]}}, + "créateur":{"N":{"g":"m", + "tab":["n56"]}}, + "créature":{"N":{"g":"f", + "tab":["n17"]}}, + "crèche":{"N":{"g":"f", + "tab":["n17"]}}, + "créer":{"V":{"aux":["av"], + "tab":"v36"}}, + "crème":{"N":{"g":"f", + "tab":["n17"]}}, + "crêpe":{"N":{"g":"f", + "tab":["n17"]}}, + "crépuscule":{"N":{"g":"m", + "tab":["n3"]}}, + "creuser":{"V":{"aux":["av"], + "tab":"v36"}}, + "creux":{"A":{"tab":["n54"]}}, + "crever":{"V":{"aux":["aê"], + "tab":"v25"}}, + "cri":{"N":{"g":"m", + "tab":["n3"]}}, + "crier":{"V":{"aux":["av"], + "tab":"v36"}}, + "crime":{"N":{"g":"m", + "tab":["n3"]}}, + "crise":{"N":{"g":"f", + "tab":["n17"]}}, + "cristal":{"N":{"g":"m", + "tab":["n5"]}}, + "croire":{"V":{"aux":["av"], + "tab":"v115"}}, + "croiser":{"V":{"aux":["av"], + "tab":"v36"}}, + "croître":{"V":{"aux":["av"], + "tab":"v106"}}, + "croix":{"N":{"g":"f", + "tab":["n16"]}}, + "croquer":{"V":{"aux":["av"], + "tab":"v36"}}, + "croûte":{"N":{"g":"f", + "tab":["n17"]}}, + "crucifix":{"N":{"g":"m", + "tab":["n2"]}}, + "cruel":{"A":{"tab":["n48"]}}, + "cueillette":{"N":{"g":"f", + "tab":["n17"]}}, + "cueillir":{"V":{"aux":["av"], + "tab":"v51"}}, + "cuiller":{"N":{"g":"f", + "tab":["n17"]}}, + "cuillère":{"N":{"g":"f", + "tab":["n17"]}}, + "cuir":{"N":{"g":"m", + "tab":["n3"]}}, + "cuire":{"V":{"aux":["av"], + "tab":"v113"}}, + "cuisine":{"N":{"g":"f", + "tab":["n17"]}}, + "cuisinière":{"N":{"g":"f", + "tab":["n17"]}}, + "cuivre":{"N":{"g":"m", + "tab":["n3"]}}, + "culotte":{"N":{"g":"f", + "tab":["n17"]}}, + "cultivateur":{"N":{"g":"m", + "tab":["n56"]}}, + "cultiver":{"V":{"aux":["av"], + "tab":"v36"}}, + "culture":{"N":{"g":"f", + "tab":["n17"]}}, + "curé":{"N":{"g":"m", + "tab":["n3"]}}, + "curieux":{"A":{"tab":["n54"]}}, + "curiosité":{"N":{"g":"f", + "tab":["n17"]}}, + "cycliste":{"N":{"g":"x", + "tab":["n25"]}}, + "cygne":{"N":{"g":"m", + "tab":["n3"]}}, + "d'abord":{"Adv":{"tab":["av"]}}, + "d'après":{"P":{"tab":["pp"]}}, + "dahlia":{"N":{"g":"m", + "tab":["n3"]}}, + "daigner":{"V":{"aux":["av"], + "tab":"v36"}}, + "dame":{"N":{"g":"f", + "tab":["n17"]}}, + "danger":{"N":{"g":"m", + "tab":["n3"]}}, + "dangereux":{"A":{"tab":["n54"]}}, + "dans":{"P":{"tab":["pp"]}}, + "danse":{"N":{"g":"f", + "tab":["n17"]}}, + "danser":{"V":{"aux":["av"], + "tab":"v36"}}, + "darder":{"V":{"aux":["av"], + "tab":"v36"}}, + "date":{"N":{"g":"f", + "tab":["n17"]}}, + "dater":{"V":{"aux":["av"], + "tab":"v36"}}, + "davantage":{"Adv":{"tab":["av"]}}, + "de":{"P":{"tab":["ppe"]}}, + "débarquer":{"V":{"aux":["av"], + "tab":"v36"}}, + "débarrasser":{"V":{"aux":["av"], + "tab":"v36"}}, + "débattre":{"V":{"aux":["av"], + "tab":"v87"}}, + "débiter":{"V":{"aux":["av"], + "tab":"v36"}}, + "déborder":{"V":{"aux":["aê"], + "tab":"v36"}}, + "déboucher":{"V":{"aux":["av"], + "tab":"v36"}}, + "debout":{"Adv":{"tab":["av"]}}, + "débris":{"N":{"g":"m", + "tab":["n2"]}}, + "début":{"N":{"g":"m", + "tab":["n3"]}}, + "décéder":{"V":{"aux":["êt"], + "tab":"v30"}}, + "décembre":{"N":{"g":"m", + "tab":["n3"]}}, + "déception":{"N":{"g":"f", + "tab":["n17"]}}, + "déchaîner":{"V":{"aux":["av"], + "tab":"v36"}}, + "décharger":{"V":{"aux":["av"], + "tab":"v3"}}, + "déchirer":{"V":{"aux":["av"], + "tab":"v36"}}, + "décider":{"V":{"aux":["av"], + "tab":"v36"}}, + "décision":{"N":{"g":"f", + "tab":["n17"]}}, + "déclarer":{"V":{"aux":["av"], + "tab":"v36"}}, + "décorer":{"V":{"aux":["av"], + "tab":"v36"}}, + "découper":{"V":{"aux":["av"], + "tab":"v36"}}, + "décourager":{"V":{"aux":["av"], + "tab":"v3"}}, + "découverte":{"N":{"g":"f", + "tab":["n17"]}}, + "découvrir":{"V":{"aux":["av"], + "tab":"v44"}}, + "décrire":{"V":{"aux":["av"], + "tab":"v114"}}, + "dédaigner":{"V":{"aux":["av"], + "tab":"v36"}}, + "dedans":{"Adv":{"tab":["av"]}}, + "défaire":{"V":{"aux":["av"], + "tab":"v124"}}, + "défaut":{"N":{"g":"m", + "tab":["n3"]}}, + "défendre":{"V":{"aux":["av"], + "tab":"v85"}}, + "défense":{"N":{"g":"f", + "tab":["n17"]}}, + "défenseur":{"N":{"g":"m", + "tab":["n3"]}}, + "défiler":{"V":{"aux":["av"], + "tab":"v36"}}, + "défunt":{"N":{"g":"m", + "tab":["n28"]}}, + "dégager":{"V":{"aux":["av"], + "tab":"v3"}}, + "dégât":{"N":{"g":"m", + "tab":["n3"]}}, + "degré":{"N":{"g":"m", + "tab":["n3"]}}, + "dehors":{"Adv":{"tab":["av"]}}, + "déjà":{"Adv":{"tab":["av"]}}, + "déjeuner":{"V":{"aux":["av"], + "tab":"v36"}}, + "délaisser":{"V":{"aux":["av"], + "tab":"v36"}}, + "délicat":{"A":{"tab":["n28"]}}, + "délice":{"N":{"g":"m", + "tab":["n25"]}}, + "délicieux":{"A":{"tab":["n54"]}}, + "délivrer":{"V":{"aux":["av"], + "tab":"v36"}}, + "demain":{"Adv":{"tab":["av"]}}, + "demande":{"N":{"g":"f", + "tab":["n17"]}}, + "demander":{"V":{"aux":["av"], + "tab":"v36"}}, + "démarche":{"N":{"g":"f", + "tab":["n17"]}}, + "déménager":{"V":{"aux":["aê"], + "tab":"v3"}}, + "demeure":{"N":{"g":"f", + "tab":["n17"]}}, + "demeurer":{"V":{"aux":["aê"], + "tab":"v36"}}, + "demi":{"N":{"g":"m", + "tab":["n3"]}}, + "demoiselle":{"N":{"g":"f", + "tab":["n17"]}}, + "démolir":{"V":{"aux":["av"], + "tab":"v58"}}, + "démontrer":{"V":{"aux":["av"], + "tab":"v36"}}, + "dent":{"N":{"g":"f", + "tab":["n17"]}}, + "dentelle":{"N":{"g":"f", + "tab":["n17"]}}, + "dénudé":{"A":{"tab":["n28"]}}, + "départ":{"N":{"g":"m", + "tab":["n3"]}}, + "dépasser":{"V":{"aux":["av"], + "tab":"v36"}}, + "dépêcher":{"V":{"aux":["av"], + "tab":"v36"}}, + "dépendre":{"V":{"aux":["av"], + "tab":"v85"}}, + "dépens":{"N":{"g":"m", + "tab":["n1"]}}, + "dépenser":{"V":{"aux":["av"], + "tab":"v36"}}, + "déplacer":{"V":{"aux":["av"], + "tab":"v0"}}, + "déplaire":{"V":{"aux":["av"], + "tab":"v123"}}, + "déployer":{"V":{"aux":["av"], + "tab":"v5"}}, + "déposer":{"V":{"aux":["av"], + "tab":"v36"}}, + "dépôt":{"N":{"g":"m", + "tab":["n3"]}}, + "dépouiller":{"V":{"aux":["av"], + "tab":"v36"}}, + "depuis":{"P":{"tab":["pp"]}}, + "déranger":{"V":{"aux":["av"], + "tab":"v3"}}, + "dernier":{"A":{"pos":"pre", + "tab":["n39"]}}, + "dernièrement":{"Adv":{"tab":["av"]}}, + "dérober":{"V":{"aux":["av"], + "tab":"v36"}}, + "dérouler":{"V":{"aux":["av"], + "tab":"v36"}}, + "derrière":{"P":{"tab":["pp"]}}, + "dès":{"P":{"tab":["pp"]}}, + "désagréable":{"A":{"tab":["n25"]}}, + "désaltérer":{"V":{"aux":["av"], + "tab":"v28"}}, + "désastre":{"N":{"g":"m", + "tab":["n3"]}}, + "descendre":{"V":{"aux":["aê"], + "tab":"v85"}}, + "descente":{"N":{"g":"f", + "tab":["n17"]}}, + "description":{"N":{"g":"f", + "tab":["n17"]}}, + "désert":{"A":{"tab":["n28"]}}, + "désespérer":{"V":{"aux":["av"], + "tab":"v28"}}, + "désespoir":{"N":{"g":"m", + "tab":["n3"]}}, + "déshabiller":{"V":{"aux":["av"], + "tab":"v36"}}, + "désigner":{"V":{"aux":["av"], + "tab":"v36"}}, + "désir":{"N":{"g":"m", + "tab":["n3"]}}, + "désirer":{"V":{"aux":["av"], + "tab":"v36"}}, + "désireux":{"A":{"tab":["n54"]}}, + "désobéir":{"V":{"aux":["av"], + "tab":"v58"}}, + "désobéissance":{"N":{"g":"f", + "tab":["n17"]}}, + "désobéissant":{"A":{"tab":["n28"]}}, + "désolation":{"N":{"g":"f", + "tab":["n17"]}}, + "désoler":{"V":{"aux":["av"], + "tab":"v36"}}, + "désordre":{"N":{"g":"m", + "tab":["n3"]}}, + "désormais":{"Adv":{"tab":["av"]}}, + "dessein":{"N":{"g":"m", + "tab":["n3"]}}, + "dessert":{"N":{"g":"m", + "tab":["n3"]}}, + "dessin":{"N":{"g":"m", + "tab":["n3"]}}, + "dessiner":{"V":{"aux":["av"], + "tab":"v36"}}, + "dessous":{"P":{"tab":["pp"]}}, + "destination":{"N":{"g":"f", + "tab":["n17"]}}, + "destinée":{"N":{"g":"f", + "tab":["n17"]}}, + "destiner":{"V":{"aux":["av"], + "tab":"v36"}}, + "détacher":{"V":{"aux":["av"], + "tab":"v36"}}, + "détail":{"N":{"g":"m", + "tab":["n3"]}}, + "déterminer":{"V":{"aux":["av"], + "tab":"v36"}}, + "détester":{"V":{"aux":["av"], + "tab":"v36"}}, + "détour":{"N":{"g":"m", + "tab":["n3"]}}, + "détourner":{"V":{"aux":["av"], + "tab":"v36"}}, + "détruire":{"V":{"aux":["av"], + "tab":"v113"}}, + "dette":{"N":{"g":"f", + "tab":["n17"]}}, + "deuil":{"N":{"g":"m", + "tab":["n3"]}}, + "devant":{"P":{"tab":["pp"]}}, + "développer":{"V":{"aux":["av"], + "tab":"v36"}}, + "devenir":{"V":{"aux":["êt"], + "tab":"v52"}}, + "deviner":{"V":{"aux":["av"], + "tab":"v36"}}, + "devoir":{"V":{"aux":["av"], + "tab":"v64"}}, + "dévorer":{"V":{"aux":["av"], + "tab":"v36"}}, + "dévouement":{"N":{"g":"m", + "tab":["n3"]}}, + "dévouer":{"V":{"aux":["av"], + "tab":"v36"}}, + "diable":{"N":{"g":"m", + "tab":["n3"]}}, + "diamant":{"N":{"g":"m", + "tab":["n3"]}}, + "dictée":{"N":{"g":"f", + "tab":["n17"]}}, + "dicter":{"V":{"aux":["av"], + "tab":"v36"}}, + "dictionnaire":{"N":{"g":"m", + "tab":["n3"]}}, + "dieu":{"N":{"g":"m", + "tab":["n4"]}}, + "différence":{"N":{"g":"f", + "tab":["n17"]}}, + "différent":{"A":{"tab":["n28"]}}, + "différer":{"V":{"aux":["av"], + "tab":"v28"}}, + "difficile":{"A":{"tab":["n25"]}}, + "difficilement":{"Adv":{"tab":["av"]}}, + "difficulté":{"N":{"g":"f", + "tab":["n17"]}}, + "digne":{"A":{"tab":["n25"]}}, + "dimanche":{"N":{"g":"m", + "tab":["n3"]}}, + "dimension":{"N":{"g":"f", + "tab":["n17"]}}, + "diminuer":{"V":{"aux":["aê"], + "tab":"v36"}}, + "dîner":{"V":{"aux":["av"], + "tab":"v36"}}, + "dire":{"V":{"aux":["av"], + "tab":"v117"}}, + "directement":{"Adv":{"tab":["av"]}}, + "directeur":{"N":{"g":"m", + "tab":["n56"]}}, + "direction":{"N":{"g":"f", + "tab":["n17"]}}, + "directrice":{"N":{"g":"f", + "tab":["n17"]}}, + "diriger":{"V":{"aux":["av"], + "tab":"v3"}}, + "discours":{"N":{"g":"m", + "tab":["n2"]}}, + "discussion":{"N":{"g":"f", + "tab":["n17"]}}, + "discuter":{"V":{"aux":["av"], + "tab":"v36"}}, + "disparaître":{"V":{"aux":["aê"], + "tab":"v101"}}, + "disparition":{"N":{"g":"f", + "tab":["n17"]}}, + "dispenser":{"V":{"aux":["av"], + "tab":"v36"}}, + "disperser":{"V":{"aux":["av"], + "tab":"v36"}}, + "disposer":{"V":{"aux":["av"], + "tab":"v36"}}, + "disposition":{"N":{"g":"f", + "tab":["n17"]}}, + "disputer":{"V":{"aux":["av"], + "tab":"v36"}}, + "dissiper":{"V":{"aux":["av"], + "tab":"v36"}}, + "distance":{"N":{"g":"f", + "tab":["n17"]}}, + "distinction":{"N":{"g":"f", + "tab":["n17"]}}, + "distinguer":{"V":{"aux":["av"], + "tab":"v36"}}, + "distraction":{"N":{"g":"f", + "tab":["n17"]}}, + "distraire":{"V":{"aux":["av"], + "tab":"v125"}}, + "distrait":{"A":{"tab":["n28"]}}, + "distribuer":{"V":{"aux":["av"], + "tab":"v36"}}, + "distribution":{"N":{"g":"f", + "tab":["n17"]}}, + "divin":{"A":{"tab":["n28"]}}, + "diviser":{"V":{"aux":["av"], + "tab":"v36"}}, + "division":{"N":{"g":"f", + "tab":["n17"]}}, + "dizaine":{"N":{"g":"f", + "tab":["n17"]}}, + "docile":{"A":{"tab":["n25"]}}, + "docteur":{"N":{"g":"m", + "tab":["n3"]}}, + "doigt":{"N":{"g":"m", + "tab":["n3"]}}, + "domaine":{"N":{"g":"m", + "tab":["n3"]}}, + "domestique":{"A":{"tab":["n25"]}}, + "domicile":{"N":{"g":"m", + "tab":["n3"]}}, + "dominer":{"V":{"aux":["av"], + "tab":"v36"}}, + "dommage":{"N":{"g":"m", + "tab":["n3"]}}, + "dompteur":{"N":{"g":"m", + "tab":["n55"]}}, + "don":{"N":{"g":"m", + "tab":["n3"]}}, + "donner":{"V":{"aux":["av"], + "tab":"v36"}}, + "dont":{"Pro":{"tab":["pn23"]}}, + "dorer":{"V":{"aux":["av"], + "tab":"v36"}}, + "dormir":{"V":{"aux":["av"], + "tab":"v45"}}, + "dortoir":{"N":{"g":"m", + "tab":["n3"]}}, + "dos":{"N":{"g":"m", + "tab":["n2"]}}, + "dossier":{"N":{"g":"m", + "tab":["n3"]}}, + "double":{"A":{"tab":["n25"]}}, + "doubler":{"V":{"aux":["av"], + "tab":"v36"}}, + "doucement":{"Adv":{"tab":["av"]}}, + "douceur":{"N":{"g":"f", + "tab":["n17"]}}, + "douleur":{"N":{"g":"f", + "tab":["n17"]}}, + "douloureux":{"A":{"tab":["n54"]}}, + "doute":{"N":{"g":"m", + "tab":["n3"]}}, + "douter":{"V":{"aux":["av"], + "tab":"v36"}}, + "doux":{"A":{"tab":["n70"]}}, + "douzaine":{"N":{"g":"f", + "tab":["n17"]}}, + "doyen":{"N":{"g":"m", + "tab":["n49"]}}, + "drap":{"N":{"g":"m", + "tab":["n3"]}}, + "drapeau":{"N":{"g":"m", + "tab":["n4"]}}, + "dresser":{"V":{"aux":["av"], + "tab":"v36"}}, + "droit":{"A":{"tab":["n28"]}}, + "drôle":{"A":{"tab":["n25"]}}, + "du":{"D":{"tab":["d3"]}}, + "duc":{"N":{"g":"m", + "tab":["n3"]}}, + "dur":{"A":{"tab":["n28"]}}, + "durant":{"P":{"tab":["pp"]}}, + "durée":{"N":{"g":"f", + "tab":["n17"]}}, + "durer":{"V":{"aux":["av"], + "tab":"v36"}}, + "duvet":{"N":{"g":"m", + "tab":["n3"]}}, + "eau":{"N":{"g":"f", + "tab":["n18"]}}, + "ébats":{"N":{"g":"m", + "tab":["n1"]}}, + "éblouir":{"V":{"aux":["av"], + "tab":"v58"}}, + "ébranler":{"V":{"aux":["av"], + "tab":"v36"}}, + "écarter":{"V":{"aux":["av"], + "tab":"v36"}}, + "échanger":{"V":{"aux":["av"], + "tab":"v3"}}, + "échantillon":{"N":{"g":"m", + "tab":["n3"]}}, + "échapper":{"V":{"aux":["aê"], + "tab":"v36"}}, + "écharpe":{"N":{"g":"f", + "tab":["n17"]}}, + "échec":{"N":{"g":"m", + "tab":["n3"]}}, + "échelle":{"N":{"g":"f", + "tab":["n17"]}}, + "écho":{"N":{"g":"m", + "tab":["n3"]}}, + "éclabousser":{"V":{"aux":["av"], + "tab":"v36"}}, + "éclair":{"N":{"g":"m", + "tab":["n3"]}}, + "éclaircir":{"V":{"aux":["av"], + "tab":"v58"}}, + "éclairer":{"V":{"aux":["av"], + "tab":"v36"}}, + "éclat":{"N":{"g":"m", + "tab":["n3"]}}, + "éclatant":{"A":{"tab":["n28"]}}, + "éclater":{"V":{"aux":["av"], + "tab":"v36"}}, + "éclore":{"V":{"aux":["aê"], + "tab":"v129"}}, + "écluse":{"N":{"g":"f", + "tab":["n17"]}}, + "école":{"N":{"g":"f", + "tab":["n17"]}}, + "écolier":{"N":{"g":"m", + "tab":["n39"]}}, + "économie":{"N":{"g":"f", + "tab":["n17"]}}, + "économiser":{"V":{"aux":["av"], + "tab":"v36"}}, + "écorce":{"N":{"g":"f", + "tab":["n17"]}}, + "écouler":{"V":{"aux":["av"], + "tab":"v36"}}, + "écouter":{"V":{"aux":["av"], + "tab":"v36"}}, + "écraser":{"V":{"aux":["av"], + "tab":"v36"}}, + "écrier":{"V":{"aux":["êt"], + "tab":"v36"}}, + "écrire":{"V":{"aux":["av"], + "tab":"v114"}}, + "écrit":{"A":{"tab":["n28"]}}, + "écriture":{"N":{"g":"f", + "tab":["n17"]}}, + "écrivain":{"N":{"g":"m", + "tab":["n3"]}}, + "écrouler":{"V":{"aux":["êt"], + "tab":"v36"}}, + "écureuil":{"N":{"g":"m", + "tab":["n3"]}}, + "écurie":{"N":{"g":"f", + "tab":["n17"]}}, + "édifier":{"V":{"aux":["av"], + "tab":"v36"}}, + "éducation":{"N":{"g":"f", + "tab":["n17"]}}, + "effacer":{"V":{"aux":["av"], + "tab":"v0"}}, + "effectuer":{"V":{"aux":["av"], + "tab":"v36"}}, + "effet":{"N":{"g":"m", + "tab":["n3"]}}, + "efforcer":{"V":{"aux":["êt"], + "tab":"v0"}}, + "effort":{"N":{"g":"m", + "tab":["n3"]}}, + "effrayer":{"V":{"aux":["av"], + "tab":"v4"}}, + "effroyable":{"A":{"tab":["n25"]}}, + "égal":{"A":{"tab":["n47"]}}, + "également":{"Adv":{"tab":["av"]}}, + "égard":{"N":{"g":"m", + "tab":["n3"]}}, + "égarer":{"V":{"aux":["av"], + "tab":"v36"}}, + "église":{"N":{"g":"f", + "tab":["n17"]}}, + "élan":{"N":{"g":"m", + "tab":["n3"]}}, + "élancer":{"V":{"aux":["av"], + "tab":"v0"}}, + "élargir":{"V":{"aux":["av"], + "tab":"v58"}}, + "électricité":{"N":{"g":"f", + "tab":["n17"]}}, + "électrique":{"A":{"tab":["n25"]}}, + "élégant":{"A":{"tab":["n28"]}}, + "éléphant":{"N":{"g":"m", + "tab":["n3"]}}, + "élève":{"N":{"g":"m", + "tab":["n25"]}}, + "élever":{"V":{"aux":["av"], + "tab":"v25"}}, + "éloigner":{"V":{"aux":["av"], + "tab":"v36"}}, + "emballer":{"V":{"aux":["av"], + "tab":"v36"}}, + "embarquer":{"V":{"aux":["av"], + "tab":"v36"}}, + "embarras":{"N":{"g":"m", + "tab":["n2"]}}, + "embarrasser":{"V":{"aux":["av"], + "tab":"v36"}}, + "embaumer":{"V":{"aux":["av"], + "tab":"v36"}}, + "embellir":{"V":{"aux":["aê"], + "tab":"v58"}}, + "embrasser":{"V":{"aux":["av"], + "tab":"v36"}}, + "émerveiller":{"V":{"aux":["av"], + "tab":"v36"}}, + "emmener":{"V":{"aux":["av"], + "tab":"v24"}}, + "émotion":{"N":{"g":"f", + "tab":["n17"]}}, + "émouvoir":{"V":{"aux":["av"], + "tab":"v66"}}, + "emparer":{"V":{"aux":["êt"], + "tab":"v36"}}, + "empêcher":{"V":{"aux":["av"], + "tab":"v36"}}, + "empereur":{"N":{"g":"m", + "tab":["n3"]}}, + "emplacement":{"N":{"g":"m", + "tab":["n3"]}}, + "emplir":{"V":{"aux":["av"], + "tab":"v58"}}, + "emploi":{"N":{"g":"m", + "tab":["n3"]}}, + "employé":{"N":{"g":"m", + "tab":["n28"]}}, + "employer":{"V":{"aux":["av"], + "tab":"v5"}}, + "emporter":{"V":{"aux":["av"], + "tab":"v36"}}, + "empressement":{"N":{"g":"m", + "tab":["n3"]}}, + "empresser":{"V":{"aux":["êt"], + "tab":"v36"}}, + "en":{"Pro":{"tab":["pn10"]}}, + "encadrer":{"V":{"aux":["av"], + "tab":"v36"}}, + "enchanté":{"A":{"tab":["n28"]}}, + "encombrer":{"V":{"aux":["av"], + "tab":"v36"}}, + "encore":{"Adv":{"tab":["av"]}}, + "encourager":{"V":{"aux":["av"], + "tab":"v3"}}, + "encourir":{"V":{"aux":["av"], + "tab":"v57"}}, + "encre":{"N":{"g":"f", + "tab":["n17"]}}, + "encrier":{"N":{"g":"m", + "tab":["n3"]}}, + "endormir":{"V":{"aux":["av"], + "tab":"v45"}}, + "endosser":{"V":{"aux":["av"], + "tab":"v36"}}, + "endroit":{"N":{"g":"m", + "tab":["n3"]}}, + "énergie":{"N":{"g":"f", + "tab":["n17"]}}, + "énergique":{"A":{"tab":["n25"]}}, + "enfance":{"N":{"g":"f", + "tab":["n17"]}}, + "enfant":{"N":{"g":"x", + "tab":["n25"]}}, + "enfermer":{"V":{"aux":["av"], + "tab":"v36"}}, + "enfin":{"Adv":{"tab":["av"]}}, + "enflammer":{"V":{"aux":["av"], + "tab":"v36"}}, + "enfoncer":{"V":{"aux":["av"], + "tab":"v0"}}, + "enfouir":{"V":{"aux":["av"], + "tab":"v58"}}, + "enfuir":{"V":{"aux":["êt"], + "tab":"v54"}}, + "engager":{"V":{"aux":["av"], + "tab":"v3"}}, + "engloutir":{"V":{"aux":["av"], + "tab":"v58"}}, + "enlever":{"V":{"aux":["av"], + "tab":"v25"}}, + "ennemi":{"N":{"g":"m", + "tab":["n28"]}}, + "ennui":{"N":{"g":"m", + "tab":["n3"]}}, + "ennuyer":{"V":{"aux":["av"], + "tab":"v5"}}, + "ennuyeux":{"A":{"tab":["n54"]}}, + "énorme":{"A":{"tab":["n25"]}}, + "énormément":{"Adv":{"tab":["av"]}}, + "enquête":{"N":{"g":"f", + "tab":["n17"]}}, + "enrichir":{"V":{"aux":["av"], + "tab":"v58"}}, + "enseignement":{"N":{"g":"m", + "tab":["n3"]}}, + "enseigner":{"V":{"aux":["av"], + "tab":"v36"}}, + "ensemble":{"Adv":{"tab":["av"]}}, + "ensoleillé":{"A":{"tab":["n28"]}}, + "ensuite":{"Adv":{"tab":["av"]}}, + "entasser":{"V":{"aux":["av"], + "tab":"v36"}}, + "entendre":{"V":{"aux":["av"], + "tab":"v85"}}, + "enterrement":{"N":{"g":"m", + "tab":["n3"]}}, + "enterrer":{"V":{"aux":["av"], + "tab":"v36"}}, + "enthousiasme":{"N":{"g":"m", + "tab":["n3"]}}, + "entier":{"A":{"tab":["n39"]}}, + "entièrement":{"Adv":{"tab":["av"]}}, + "entonner":{"V":{"aux":["av"], + "tab":"v36"}}, + "entourer":{"V":{"aux":["av"], + "tab":"v36"}}, + "entrain":{"N":{"g":"m", + "tab":["n3"]}}, + "entraîner":{"V":{"aux":["av"], + "tab":"v36"}}, + "entre":{"P":{"tab":["pp"]}}, + "entrée":{"N":{"g":"f", + "tab":["n17"]}}, + "entreprendre":{"V":{"aux":["av"], + "tab":"v90"}}, + "entrer":{"V":{"aux":["êt"], + "tab":"v36"}}, + "entretenir":{"V":{"aux":["av"], + "tab":"v52"}}, + "entretien":{"N":{"g":"m", + "tab":["n3"]}}, + "entrevoir":{"V":{"aux":["av"], + "tab":"v72"}}, + "entrouvrir":{"V":{"aux":["av"], + "tab":"v44"}}, + "envahir":{"V":{"aux":["av"], + "tab":"v58"}}, + "enveloppe":{"N":{"g":"f", + "tab":["n17"]}}, + "envelopper":{"V":{"aux":["av"], + "tab":"v36"}}, + "envers":{"N":{"g":"m", + "tab":["n2"]}}, + "envie":{"N":{"g":"f", + "tab":["n17"]}}, + "envier":{"V":{"aux":["av"], + "tab":"v36"}}, + "environ":{"Adv":{"tab":["av"]}}, + "environner":{"V":{"aux":["av"], + "tab":"v36"}}, + "envoi":{"N":{"g":"m", + "tab":["n3"]}}, + "envoler":{"V":{"aux":["êt"], + "tab":"v36"}}, + "envoyer":{"V":{"aux":["av"], + "tab":"v134"}}, + "épais":{"A":{"tab":["n50"]}}, + "épanouir":{"V":{"aux":["av"], + "tab":"v58"}}, + "épargne":{"N":{"g":"f", + "tab":["n17"]}}, + "épargner":{"V":{"aux":["av"], + "tab":"v36"}}, + "épaule":{"N":{"g":"f", + "tab":["n17"]}}, + "épauler":{"V":{"aux":["av"], + "tab":"v36"}}, + "épée":{"N":{"g":"f", + "tab":["n17"]}}, + "épi":{"N":{"g":"m", + "tab":["n3"]}}, + "épine":{"N":{"g":"f", + "tab":["n17"]}}, + "époque":{"N":{"g":"f", + "tab":["n17"]}}, + "épouser":{"V":{"aux":["av"], + "tab":"v36"}}, + "épouvantable":{"A":{"tab":["n25"]}}, + "épouvanter":{"V":{"aux":["av"], + "tab":"v36"}}, + "époux":{"N":{"g":"m", + "tab":["n54"]}}, + "épreuve":{"N":{"g":"f", + "tab":["n17"]}}, + "éprouver":{"V":{"aux":["av"], + "tab":"v36"}}, + "épuiser":{"V":{"aux":["av"], + "tab":"v36"}}, + "équilibre":{"N":{"g":"m", + "tab":["n3"]}}, + "équipage":{"N":{"g":"m", + "tab":["n3"]}}, + "équipe":{"N":{"g":"f", + "tab":["n17"]}}, + "ériger":{"V":{"aux":["av"], + "tab":"v3"}}, + "errer":{"V":{"aux":["av"], + "tab":"v36"}}, + "erreur":{"N":{"g":"f", + "tab":["n17"]}}, + "escalader":{"V":{"aux":["av"], + "tab":"v36"}}, + "escalier":{"N":{"g":"m", + "tab":["n3"]}}, + "esclave":{"N":{"g":"x", + "tab":["n25"]}}, + "espace":{"N":{"g":"m", + "tab":["n3"]}}, + "espèce":{"N":{"g":"f", + "tab":["n17"]}}, + "espérance":{"N":{"g":"f", + "tab":["n17"]}}, + "espérer":{"V":{"aux":["av"], + "tab":"v28"}}, + "espiègle":{"A":{"tab":["n25"]}}, + "espoir":{"N":{"g":"m", + "tab":["n3"]}}, + "esprit":{"N":{"g":"m", + "tab":["n3"]}}, + "essai":{"N":{"g":"m", + "tab":["n3"]}}, + "essayer":{"V":{"aux":["av"], + "tab":"v4"}}, + "essuyer":{"V":{"aux":["av"], + "tab":"v5"}}, + "estime":{"N":{"g":"f", + "tab":["n17"]}}, + "estimer":{"V":{"aux":["av"], + "tab":"v36"}}, + "estomac":{"N":{"g":"m", + "tab":["n3"]}}, + "estrade":{"N":{"g":"f", + "tab":["n17"]}}, + "étable":{"N":{"g":"f", + "tab":["n17"]}}, + "établir":{"V":{"aux":["av"], + "tab":"v58"}}, + "établissement":{"N":{"g":"m", + "tab":["n3"]}}, + "étage":{"N":{"g":"m", + "tab":["n3"]}}, + "étagère":{"N":{"g":"f", + "tab":["n17"]}}, + "étalage":{"N":{"g":"m", + "tab":["n3"]}}, + "étaler":{"V":{"aux":["av"], + "tab":"v36"}}, + "étang":{"N":{"g":"m", + "tab":["n3"]}}, + "état":{"N":{"g":"m", + "tab":["n3"]}}, + "été":{"N":{"g":"m", + "tab":["n3"]}}, + "éteindre":{"V":{"aux":["av"], + "tab":"v97"}}, + "étendre":{"V":{"aux":["av"], + "tab":"v85"}}, + "étendue":{"N":{"g":"f", + "tab":["n17"]}}, + "éternel":{"A":{"tab":["n48"]}}, + "éternité":{"N":{"g":"f", + "tab":["n17"]}}, + "étincelant":{"A":{"tab":["n28"]}}, + "étinceler":{"V":{"aux":["av"], + "tab":"v7"}}, + "étincelle":{"N":{"g":"f", + "tab":["n17"]}}, + "étirer":{"V":{"aux":["av"], + "tab":"v36"}}, + "étoffe":{"N":{"g":"f", + "tab":["n17"]}}, + "étoile":{"N":{"g":"f", + "tab":["n17"]}}, + "étonnement":{"N":{"g":"m", + "tab":["n3"]}}, + "étonner":{"V":{"aux":["av"], + "tab":"v36"}}, + "étouffer":{"V":{"aux":["av"], + "tab":"v36"}}, + "étourdi":{"A":{"tab":["n28"]}}, + "étrange":{"A":{"tab":["n25"]}}, + "étranger":{"A":{"tab":["n39"]}}, + "être":{"N":{"g":"m", + "tab":["n3"]}, + "V":{"aux":["av"], + "tab":"v136"}}, + "étroit":{"A":{"tab":["n28"]}}, + "étude":{"N":{"g":"f", + "tab":["n17"]}}, + "étudiant":{"N":{"g":"m", + "tab":["n28"]}}, + "étudier":{"V":{"aux":["av"], + "tab":"v36"}}, + "évangile":{"N":{"g":"m", + "tab":["n3"]}}, + "évanouir":{"V":{"aux":["êt"], + "tab":"v58"}}, + "éveiller":{"V":{"aux":["av"], + "tab":"v36"}}, + "événement":{"N":{"g":"m", + "tab":["n3"]}}, + "évêque":{"N":{"g":"m", + "tab":["n3"]}}, + "évidemment":{"Adv":{"tab":["av"]}}, + "éviter":{"V":{"aux":["av"], + "tab":"v36"}}, + "exact":{"A":{"tab":["n28"]}}, + "exactement":{"Adv":{"tab":["av"]}}, + "exactitude":{"N":{"g":"f", + "tab":["n17"]}}, + "examen":{"N":{"g":"m", + "tab":["n3"]}}, + "examiner":{"V":{"aux":["av"], + "tab":"v36"}}, + "exaucer":{"V":{"aux":["av"], + "tab":"v0"}}, + "excellence":{"N":{"g":"f", + "tab":["n17"]}}, + "excellent":{"A":{"tab":["n28"]}}, + "exciter":{"V":{"aux":["av"], + "tab":"v36"}}, + "exclamation":{"N":{"g":"f", + "tab":["n17"]}}, + "excursion":{"N":{"g":"f", + "tab":["n17"]}}, + "excuse":{"N":{"g":"f", + "tab":["n17"]}}, + "excuser":{"V":{"aux":["av"], + "tab":"v36"}}, + "exécuter":{"V":{"aux":["av"], + "tab":"v36"}}, + "exécution":{"N":{"g":"f", + "tab":["n17"]}}, + "exemplaire":{"N":{"g":"m", + "tab":["n3"]}}, + "exemple":{"N":{"g":"m", + "tab":["n3"]}}, + "exercer":{"V":{"aux":["av"], + "tab":"v0"}}, + "exercice":{"N":{"g":"m", + "tab":["n3"]}}, + "exhaler":{"V":{"aux":["av"], + "tab":"v36"}}, + "exiger":{"V":{"aux":["av"], + "tab":"v3"}}, + "existence":{"N":{"g":"f", + "tab":["n17"]}}, + "exister":{"V":{"aux":["av"], + "tab":"v36"}}, + "expédier":{"V":{"aux":["av"], + "tab":"v36"}}, + "expédition":{"N":{"g":"f", + "tab":["n17"]}}, + "expérience":{"N":{"g":"f", + "tab":["n17"]}}, + "expirer":{"V":{"aux":["aê"], + "tab":"v36"}}, + "explication":{"N":{"g":"f", + "tab":["n17"]}}, + "expliquer":{"V":{"aux":["av"], + "tab":"v36"}}, + "exposer":{"V":{"aux":["av"], + "tab":"v36"}}, + "exposition":{"N":{"g":"f", + "tab":["n17"]}}, + "exprès":{"Adv":{"tab":["av"]}}, + "expression":{"N":{"g":"f", + "tab":["n17"]}}, + "exprimer":{"V":{"aux":["av"], + "tab":"v36"}}, + "exquis":{"A":{"tab":["n27"]}}, + "extérieur":{"A":{"tab":["n28"]}}, + "extraire":{"V":{"aux":["av"], + "tab":"v125"}}, + "extraordinaire":{"A":{"tab":["n25"]}}, + "extrême":{"A":{"tab":["n25"]}}, + "extrémité":{"N":{"g":"f", + "tab":["n17"]}}, + "fabrication":{"N":{"g":"f", + "tab":["n17"]}}, + "fabrique":{"N":{"g":"f", + "tab":["n17"]}}, + "fabriquer":{"V":{"aux":["av"], + "tab":"v36"}}, + "façade":{"N":{"g":"f", + "tab":["n17"]}}, + "fâcher":{"V":{"aux":["av"], + "tab":"v36"}}, + "fâcheux":{"A":{"tab":["n54"]}}, + "facile":{"A":{"tab":["n25"]}}, + "facilement":{"Adv":{"tab":["av"]}}, + "facilité":{"N":{"g":"f", + "tab":["n17"]}}, + "faciliter":{"V":{"aux":["av"], + "tab":"v36"}}, + "façon":{"N":{"g":"f", + "tab":["n17"]}}, + "façonner":{"V":{"aux":["av"], + "tab":"v36"}}, + "facteur":{"N":{"g":"m", + "tab":["n3"]}}, + "faible":{"A":{"tab":["n25"]}}, + "faiblesse":{"N":{"g":"f", + "tab":["n17"]}}, + "faim":{"N":{"g":"f", + "tab":["n17"]}}, + "faire":{"V":{"aux":["av"], + "tab":"v124"}}, + "fait":{"N":{"g":"m", + "tab":["n3"]}}, + "falloir":{"V":{"aux":["av"], + "tab":"v80"}}, + "fameux":{"A":{"tab":["n54"]}}, + "familial":{"A":{"tab":["n47"]}}, + "familier":{"A":{"tab":["n39"]}}, + "famille":{"N":{"g":"f", + "tab":["n17"]}}, + "faner":{"V":{"aux":["av"], + "tab":"v36"}}, + "farce":{"N":{"g":"f", + "tab":["n17"]}}, + "farine":{"N":{"g":"f", + "tab":["n17"]}}, + "farouche":{"A":{"tab":["n25"]}}, + "fatal":{"A":{"tab":["n28"]}}, + "fatigue":{"N":{"g":"f", + "tab":["n17"]}}, + "fatiguer":{"V":{"aux":["av"], + "tab":"v36"}}, + "faucher":{"V":{"aux":["av"], + "tab":"v36"}}, + "faucheur":{"N":{"g":"m", + "tab":["n3"]}}, + "faute":{"N":{"g":"f", + "tab":["n17"]}}, + "fauteuil":{"N":{"g":"m", + "tab":["n3"]}}, + "fauve":{"A":{"tab":["n25"]}}, + "fauvette":{"N":{"g":"f", + "tab":["n17"]}}, + "faux":{"A":{"tab":["n53"]}}, + "faveur":{"N":{"g":"f", + "tab":["n17"]}}, + "favorable":{"A":{"tab":["n25"]}}, + "favori":{"A":{"tab":["n34"]}}, + "favoriser":{"V":{"aux":["av"], + "tab":"v36"}}, + "fée":{"N":{"g":"f", + "tab":["n17"]}}, + "féliciter":{"V":{"aux":["av"], + "tab":"v36"}}, + "femelle":{"N":{"g":"f", + "tab":["n17"]}}, + "femme":{"N":{"g":"f", + "tab":["n17"]}}, + "fendre":{"V":{"aux":["av"], + "tab":"v85"}}, + "fenêtre":{"N":{"g":"f", + "tab":["n17"]}}, + "fer":{"N":{"g":"m", + "tab":["n3"]}}, + "ferme":{"N":{"g":"f", + "tab":["n17"]}}, + "fermer":{"V":{"aux":["av"], + "tab":"v36"}}, + "fermier":{"N":{"g":"m", + "tab":["n39"]}}, + "féroce":{"A":{"tab":["n25"]}}, + "ferraille":{"N":{"g":"f", + "tab":["n17"]}}, + "ferrer":{"V":{"aux":["av"], + "tab":"v36"}}, + "fervent":{"A":{"tab":["n28"]}}, + "ferveur":{"N":{"g":"f", + "tab":["n17"]}}, + "fête":{"N":{"g":"f", + "tab":["n17"]}}, + "fêter":{"V":{"aux":["av"], + "tab":"v36"}}, + "feu":{"N":{"g":"m", + "tab":["n4"]}}, + "feuillage":{"N":{"g":"m", + "tab":["n3"]}}, + "feuille":{"N":{"g":"f", + "tab":["n17"]}}, + "février":{"N":{"g":"m", + "tab":["n3"]}}, + "fiancé":{"N":{"g":"m", + "tab":["n28"]}}, + "ficelle":{"N":{"g":"f", + "tab":["n17"]}}, + "fidèle":{"A":{"tab":["n25"]}}, + "fier":{"A":{"tab":["n39"]}, + "V":{"aux":["êt"], + "tab":"v36"}}, + "fièrement":{"Adv":{"tab":["av"]}}, + "fièvre":{"N":{"g":"f", + "tab":["n17"]}}, + "figure":{"N":{"g":"f", + "tab":["n17"]}}, + "figurer":{"V":{"aux":["av"], + "tab":"v36"}}, + "fil":{"N":{"g":"m", + "tab":["n3"]}}, + "file":{"N":{"g":"f", + "tab":["n17"]}}, + "filer":{"V":{"aux":["av"], + "tab":"v36"}}, + "filet":{"N":{"g":"m", + "tab":["n3"]}}, + "fille":{"N":{"g":"f", + "tab":["n17"]}}, + "fillette":{"N":{"g":"f", + "tab":["n17"]}}, + "filleul":{"N":{"g":"m", + "tab":["n28"]}}, + "fils":{"N":{"g":"m", + "tab":["n2"]}}, + "fin":{"N":{"g":"f", + "tab":["n17"]}}, + "finalement":{"Adv":{"tab":["av"]}}, + "finir":{"V":{"aux":["av"], + "tab":"v58"}}, + "firmament":{"N":{"g":"m", + "tab":["n3"]}}, + "fixe":{"A":{"tab":["n25"]}}, + "fixer":{"V":{"aux":["av"], + "tab":"v36"}}, + "flacon":{"N":{"g":"m", + "tab":["n3"]}}, + "flamand":{"A":{"tab":["n28"]}}, + "flamber":{"V":{"aux":["av"], + "tab":"v36"}}, + "flamme":{"N":{"g":"f", + "tab":["n17"]}}, + "flanc":{"N":{"g":"m", + "tab":["n3"]}}, + "flaque":{"N":{"g":"f", + "tab":["n17"]}}, + "flatter":{"V":{"aux":["av"], + "tab":"v36"}}, + "flatteur":{"N":{"g":"m", + "tab":["n55"]}}, + "fléau":{"N":{"g":"m", + "tab":["n4"]}}, + "flèche":{"N":{"g":"f", + "tab":["n17"]}}, + "fleur":{"N":{"g":"f", + "tab":["n17"]}}, + "fleurette":{"N":{"g":"f", + "tab":["n17"]}}, + "fleurir":{"V":{"aux":["av"], + "tab":"v43"}}, + "fleuve":{"N":{"g":"m", + "tab":["n3"]}}, + "flocon":{"N":{"g":"m", + "tab":["n3"]}}, + "flot":{"N":{"g":"m", + "tab":["n3"]}}, + "flotter":{"V":{"aux":["av"], + "tab":"v36"}}, + "flûte":{"N":{"g":"f", + "tab":["n17"]}}, + "foi":{"N":{"g":"f", + "tab":["n17"]}}, + "foie":{"N":{"g":"m", + "tab":["n3"]}}, + "foin":{"N":{"g":"m", + "tab":["n3"]}}, + "foire":{"N":{"g":"f", + "tab":["n17"]}}, + "fois":{"N":{"g":"f", + "tab":["n16"]}}, + "foncer":{"V":{"aux":["av"], + "tab":"v0"}}, + "fonction":{"N":{"g":"f", + "tab":["n17"]}}, + "fond":{"N":{"g":"m", + "tab":["n3"]}}, + "fondre":{"V":{"aux":["av"], + "tab":"v85"}}, + "fonds":{"N":{"g":"m", + "tab":["n2"]}}, + "fontaine":{"N":{"g":"f", + "tab":["n17"]}}, + "football":{"N":{"g":"m", + "tab":["n35"]}}, + "force":{"N":{"g":"f", + "tab":["n17"]}}, + "forcer":{"V":{"aux":["av"], + "tab":"v0"}}, + "forestier":{"A":{"tab":["n39"]}}, + "forêt":{"N":{"g":"f", + "tab":["n17"]}}, + "forge":{"N":{"g":"f", + "tab":["n17"]}}, + "forger":{"V":{"aux":["av"], + "tab":"v3"}}, + "forgeron":{"N":{"g":"m", + "tab":["n3"]}}, + "forme":{"N":{"g":"f", + "tab":["n17"]}}, + "former":{"V":{"aux":["av"], + "tab":"v36"}}, + "formidable":{"A":{"tab":["n25"]}}, + "fort":{"A":{"tab":["n28"]}, + "Adv":{"tab":["av"]}}, + "fortement":{"Adv":{"tab":["av"]}}, + "fortune":{"N":{"g":"f", + "tab":["n17"]}}, + "fossé":{"N":{"g":"m", + "tab":["n3"]}}, + "fou":{"A":{"tab":["n109"]}}, + "foudre":{"N":{"g":"f", + "tab":["n17"]}}, + "fouet":{"N":{"g":"m", + "tab":["n3"]}}, + "fouetter":{"V":{"aux":["av"], + "tab":"v36"}}, + "fougère":{"N":{"g":"f", + "tab":["n17"]}}, + "fouiller":{"V":{"aux":["av"], + "tab":"v36"}}, + "foule":{"N":{"g":"f", + "tab":["n17"]}}, + "four":{"N":{"g":"m", + "tab":["n3"]}}, + "fourmi":{"N":{"g":"f", + "tab":["n17"]}}, + "fourneau":{"N":{"g":"m", + "tab":["n4"]}}, + "fournir":{"V":{"aux":["av"], + "tab":"v58"}}, + "fourniture":{"N":{"g":"f", + "tab":["n17"]}}, + "fourrer":{"V":{"aux":["av"], + "tab":"v36"}}, + "fourrure":{"N":{"g":"f", + "tab":["n17"]}}, + "foyer":{"N":{"g":"m", + "tab":["n3"]}}, + "fragile":{"A":{"tab":["n25"]}}, + "fraîcheur":{"N":{"g":"f", + "tab":["n17"]}}, + "frais":{"A":{"tab":["n44"]}}, + "fraise":{"N":{"g":"f", + "tab":["n17"]}}, + "franc":{"A":{"tab":["n61"]}}, + "français":{"A":{"tab":["n27"]}}, + "franchement":{"Adv":{"tab":["av"]}}, + "franchir":{"V":{"aux":["av"], + "tab":"v58"}}, + "franchise":{"N":{"g":"f", + "tab":["n17"]}}, + "frapper":{"V":{"aux":["av"], + "tab":"v36"}}, + "frayeur":{"N":{"g":"f", + "tab":["n17"]}}, + "frêle":{"A":{"tab":["n25"]}}, + "frémir":{"V":{"aux":["av"], + "tab":"v58"}}, + "fréquemment":{"Adv":{"tab":["av"]}}, + "fréquent":{"A":{"tab":["n28"]}}, + "fréquenter":{"V":{"aux":["av"], + "tab":"v36"}}, + "frère":{"N":{"g":"m", + "tab":["n3"]}}, + "friandise":{"N":{"g":"f", + "tab":["n17"]}}, + "frissonner":{"V":{"aux":["av"], + "tab":"v36"}}, + "froid":{"A":{"tab":["n28"]}}, + "froisser":{"V":{"aux":["av"], + "tab":"v36"}}, + "fromage":{"N":{"g":"m", + "tab":["n3"]}}, + "froment":{"N":{"g":"m", + "tab":["n3"]}}, + "front":{"N":{"g":"m", + "tab":["n3"]}}, + "frontière":{"N":{"g":"f", + "tab":["n17"]}}, + "frotter":{"V":{"aux":["av"], + "tab":"v36"}}, + "fruit":{"N":{"g":"m", + "tab":["n3"]}}, + "fruitier":{"A":{"tab":["n39"]}}, + "fuir":{"V":{"aux":["av"], + "tab":"v54"}}, + "fuite":{"N":{"g":"f", + "tab":["n17"]}}, + "fumée":{"N":{"g":"f", + "tab":["n17"]}}, + "fumer":{"V":{"aux":["av"], + "tab":"v36"}}, + "fureur":{"N":{"g":"f", + "tab":["n17"]}}, + "furieux":{"A":{"tab":["n54"]}}, + "fusil":{"N":{"g":"m", + "tab":["n3"]}}, + "futur":{"A":{"tab":["n28"]}}, + "gagner":{"V":{"aux":["av"], + "tab":"v36"}}, + "gai":{"A":{"tab":["n28"]}}, + "gaiement":{"Adv":{"tab":["av"]}}, + "gaieté":{"N":{"g":"f", + "tab":["n17"]}}, + "galerie":{"N":{"g":"f", + "tab":["n17"]}}, + "gambader":{"V":{"aux":["av"], + "tab":"v36"}}, + "gamin":{"N":{"g":"m", + "tab":["n28"]}}, + "gant":{"N":{"g":"m", + "tab":["n3"]}}, + "garantir":{"V":{"aux":["av"], + "tab":"v58"}}, + "garçon":{"N":{"g":"m", + "tab":["n3"]}}, + "garde":{"N":{"g":"m", + "tab":["n3"]}}, + "garder":{"V":{"aux":["av"], + "tab":"v36"}}, + "gardien":{"N":{"g":"m", + "tab":["n49"]}}, + "gare":{"N":{"g":"f", + "tab":["n17"]}}, + "garnir":{"V":{"aux":["av"], + "tab":"v58"}}, + "garniture":{"N":{"g":"f", + "tab":["n17"]}}, + "gars":{"N":{"g":"m", + "tab":["n2"]}}, + "gâteau":{"N":{"g":"m", + "tab":["n4"]}}, + "gâter":{"V":{"aux":["av"], + "tab":"v36"}}, + "gauche":{"A":{"tab":["n25"]}}, + "gaufre":{"N":{"g":"f", + "tab":["n17"]}}, + "gaz":{"N":{"g":"m", + "tab":["n2"]}}, + "gazon":{"N":{"g":"m", + "tab":["n3"]}}, + "gazouillement":{"N":{"g":"m", + "tab":["n3"]}}, + "gazouiller":{"V":{"aux":["av"], + "tab":"v36"}}, + "géant":{"A":{"tab":["n28"]}}, + "gelée":{"N":{"g":"f", + "tab":["n17"]}}, + "geler":{"V":{"aux":["av"], + "tab":"v8"}}, + "gémir":{"V":{"aux":["av"], + "tab":"v58"}}, + "gendarme":{"N":{"g":"m", + "tab":["n3"]}}, + "gêner":{"V":{"aux":["av"], + "tab":"v36"}}, + "général":{"A":{"tab":["n47"]}}, + "généralement":{"Adv":{"tab":["av"]}}, + "génération":{"N":{"g":"f", + "tab":["n17"]}}, + "généreux":{"A":{"tab":["n54"]}}, + "générosité":{"N":{"g":"f", + "tab":["n17"]}}, + "genêt":{"N":{"g":"m", + "tab":["n3"]}}, + "genou":{"N":{"g":"m", + "tab":["n4"]}}, + "genre":{"N":{"g":"m", + "tab":["n3"]}}, + "gens":{"N":{"g":"m", + "tab":["n2"]}}, + "gentil":{"A":{"tab":["n48"]}}, + "gentiment":{"Adv":{"tab":["av"]}}, + "géographie":{"N":{"g":"f", + "tab":["n17"]}}, + "géranium":{"N":{"g":"m", + "tab":["n3"]}}, + "gerbe":{"N":{"g":"f", + "tab":["n17"]}}, + "germer":{"V":{"aux":["av"], + "tab":"v36"}}, + "geste":{"N":{"g":"m", + "tab":["n3"]}}, + "gibecière":{"N":{"g":"f", + "tab":["n17"]}}, + "gibier":{"N":{"g":"m", + "tab":["n3"]}}, + "giboulée":{"N":{"g":"f", + "tab":["n17"]}}, + "gigantesque":{"A":{"tab":["n25"]}}, + "giroflée":{"N":{"g":"f", + "tab":["n17"]}}, + "gîte":{"N":{"g":"m", + "tab":["n3"]}}, + "givre":{"N":{"g":"m", + "tab":["n3"]}}, + "glace":{"N":{"g":"f", + "tab":["n17"]}}, + "glacer":{"V":{"aux":["av"], + "tab":"v0"}}, + "gland":{"N":{"g":"m", + "tab":["n3"]}}, + "glissant":{"A":{"tab":["n28"]}}, + "glisser":{"V":{"aux":["av"], + "tab":"v36"}}, + "glissoire":{"N":{"g":"f", + "tab":["n17"]}}, + "gloire":{"N":{"g":"f", + "tab":["n17"]}}, + "gonfler":{"V":{"aux":["av"], + "tab":"v36"}}, + "gorge":{"N":{"g":"f", + "tab":["n17"]}}, + "gosse":{"N":{"g":"x", + "tab":["n25"]}}, + "gourmand":{"A":{"tab":["n28"]}}, + "goût":{"N":{"g":"m", + "tab":["n3"]}}, + "goûter":{"V":{"aux":["av"], + "tab":"v36"}}, + "goutte":{"N":{"g":"f", + "tab":["n17"]}}, + "gouvernement":{"N":{"g":"m", + "tab":["n3"]}}, + "gouverner":{"V":{"aux":["av"], + "tab":"v36"}}, + "grâce":{"N":{"g":"f", + "tab":["n17"]}}, + "gracieux":{"A":{"tab":["n54"]}}, + "grain":{"N":{"g":"m", + "tab":["n3"]}}, + "graine":{"N":{"g":"f", + "tab":["n17"]}}, + "graisse":{"N":{"g":"f", + "tab":["n17"]}}, + "grammaire":{"N":{"g":"f", + "tab":["n17"]}}, + "grand":{"A":{"pos":"pre", + "tab":["n28"]}}, + "grand-maman":{"N":{"g":"f", + "tab":["nI"]}}, + "grand-mère":{"N":{"g":"f", + "tab":["nI"]}}, + "grand-père":{"N":{"g":"m", + "tab":["nI"]}}, + "grandeur":{"N":{"g":"f", + "tab":["n17"]}}, + "grandiose":{"A":{"tab":["n25"]}}, + "grandir":{"V":{"aux":["aê"], + "tab":"v58"}}, + "grange":{"N":{"g":"f", + "tab":["n17"]}}, + "grappe":{"N":{"g":"f", + "tab":["n17"]}}, + "gras":{"A":{"tab":["n50"]}}, + "gratitude":{"N":{"g":"f", + "tab":["n17"]}}, + "gratter":{"V":{"aux":["av"], + "tab":"v36"}}, + "grave":{"A":{"tab":["n25"]}}, + "gravement":{"Adv":{"tab":["av"]}}, + "graver":{"V":{"aux":["av"], + "tab":"v36"}}, + "gravir":{"V":{"aux":["av"], + "tab":"v58"}}, + "gravure":{"N":{"g":"f", + "tab":["n17"]}}, + "grêle":{"N":{"g":"f", + "tab":["n17"]}}, + "grelotter":{"V":{"aux":["av"], + "tab":"v36"}}, + "grenier":{"N":{"g":"m", + "tab":["n3"]}}, + "grenouille":{"N":{"g":"f", + "tab":["n17"]}}, + "grès":{"N":{"g":"m", + "tab":["n2"]}}, + "griffe":{"N":{"g":"f", + "tab":["n17"]}}, + "griffer":{"V":{"aux":["av"], + "tab":"v36"}}, + "grille":{"N":{"g":"f", + "tab":["n17"]}}, + "grimper":{"V":{"aux":["av"], + "tab":"v36"}}, + "grincer":{"V":{"aux":["av"], + "tab":"v0"}}, + "grippe":{"N":{"g":"f", + "tab":["n17"]}}, + "gris":{"A":{"tab":["n27"]}}, + "grive":{"N":{"g":"f", + "tab":["n17"]}}, + "gronder":{"V":{"aux":["av"], + "tab":"v36"}}, + "gros":{"A":{"pos":"pre", + "tab":["n50"]}}, + "groseillier":{"N":{"g":"m", + "tab":["n3"]}}, + "grossier":{"A":{"tab":["n39"]}}, + "grossir":{"V":{"aux":["aê"], + "tab":"v58"}}, + "grotte":{"N":{"g":"f", + "tab":["n17"]}}, + "groupe":{"N":{"g":"m", + "tab":["n3"]}}, + "grouper":{"V":{"aux":["av"], + "tab":"v36"}}, + "grue":{"N":{"g":"f", + "tab":["n17"]}}, + "guêpe":{"N":{"g":"f", + "tab":["n17"]}}, + "guère":{"Adv":{"tab":["av"]}}, + "guérir":{"V":{"aux":["av"], + "tab":"v58"}}, + "guérison":{"N":{"g":"f", + "tab":["n17"]}}, + "guerre":{"N":{"g":"f", + "tab":["n17"]}}, + "guetter":{"V":{"aux":["av"], + "tab":"v36"}}, + "guichet":{"N":{"g":"m", + "tab":["n3"]}}, + "guide":{"N":{"g":"x", + "tab":["n3"]}}, + "guider":{"V":{"aux":["av"], + "tab":"v36"}}, + "gymnastique":{"N":{"g":"f", + "tab":["n17"]}}, + "habile":{"A":{"tab":["n25"]}}, + "habileté":{"N":{"g":"f", + "tab":["n17"]}}, + "habiller":{"V":{"aux":["av"], + "tab":"v36"}}, + "habit":{"N":{"g":"m", + "tab":["n3"]}}, + "habitant":{"N":{"g":"m", + "tab":["n28"]}}, + "habitation":{"N":{"g":"f", + "tab":["n17"]}}, + "habiter":{"V":{"aux":["av"], + "tab":"v36"}}, + "habitude":{"N":{"g":"f", + "tab":["n17"]}}, + "habituel":{"A":{"tab":["n48"]}}, + "habituer":{"V":{"aux":["av"], + "tab":"v36"}}, + "hache":{"N":{"g":"f", + "h":1, + "tab":["n17"]}}, + "haie":{"N":{"g":"f", + "h":1, + "tab":["n17"]}}, + "haillon":{"N":{"g":"m", + "h":1, + "tab":["n3"]}}, + "haine":{"N":{"g":"f", + "h":1, + "tab":["n17"]}}, + "haleine":{"N":{"g":"f", + "tab":["n17"]}}, + "halte":{"N":{"g":"f", + "h":1, + "tab":["n17"]}}, + "hameau":{"N":{"g":"m", + "tab":["n4"]}}, + "hangar":{"N":{"g":"m", + "h":1, + "tab":["n3"]}}, + "hanneton":{"N":{"g":"m", + "h":1, + "tab":["n3"]}}, + "hardi":{"A":{"h":1, + "tab":["n28"]}}, + "harmonieux":{"A":{"tab":["n54"]}}, + "hasard":{"N":{"g":"m", + "h":1, + "tab":["n3"]}}, + "hâte":{"N":{"g":"f", + "h":1, + "tab":["n17"]}}, + "hâter":{"V":{"aux":["av"], + "h":1, + "tab":"v36"}}, + "hausser":{"V":{"aux":["av"], + "h":1, + "tab":"v36"}}, + "haut":{"A":{"h":1, + "tab":["n28"]}}, + "hauteur":{"N":{"g":"f", + "h":1, + "tab":["n17"]}}, + "herbe":{"N":{"g":"f", + "tab":["n17"]}}, + "hérissé":{"A":{"h":1, + "tab":["n28"]}}, + "hermine":{"N":{"g":"f", + "tab":["n17"]}}, + "héroïque":{"A":{"tab":["n25"]}}, + "héros":{"N":{"g":"m", + "h":1, + "tab":["n2"]}}, + "hésiter":{"V":{"aux":["av"], + "tab":"v36"}}, + "hêtre":{"N":{"g":"m", + "h":1, + "tab":["n3"]}}, + "heure":{"N":{"g":"f", + "tab":["n17"]}}, + "heureusement":{"Adv":{"tab":["av"]}}, + "heureux":{"A":{"tab":["n54"]}}, + "heurter":{"V":{"aux":["av"], + "h":1, + "tab":"v36"}}, + "hibou":{"N":{"g":"m", + "h":1, + "tab":["n4"]}}, + "hier":{"Adv":{"tab":["av"]}}, + "hirondelle":{"N":{"g":"f", + "tab":["n17"]}}, + "histoire":{"N":{"g":"f", + "tab":["n17"]}}, + "hiver":{"N":{"g":"m", + "tab":["n3"]}}, + "hommage":{"N":{"g":"m", + "tab":["n3"]}}, + "homme":{"N":{"g":"m", + "tab":["n3"]}}, + "honnête":{"A":{"tab":["n25"]}}, + "honneur":{"N":{"g":"m", + "tab":["n3"]}}, + "honorable":{"A":{"tab":["n25"]}}, + "honorer":{"V":{"aux":["av"], + "tab":"v36"}}, + "honte":{"N":{"g":"f", + "h":1, + "tab":["n17"]}}, + "honteux":{"A":{"h":1, + "tab":["n54"]}}, + "hôpital":{"N":{"g":"m", + "tab":["n5"]}}, + "horizon":{"N":{"g":"m", + "tab":["n3"]}}, + "horloge":{"N":{"g":"f", + "tab":["n17"]}}, + "horreur":{"N":{"g":"f", + "tab":["n17"]}}, + "horrible":{"A":{"tab":["n25"]}}, + "hors":{"P":{"h":1, + "tab":["pp"]}}, + "hôte":{"N":{"g":"m", + "tab":["n52"]}}, + "hôtel":{"N":{"g":"m", + "tab":["n3"]}}, + "houille":{"N":{"g":"f", + "h":1, + "tab":["n17"]}}, + "huile":{"N":{"g":"f", + "tab":["n17"]}}, + "humain":{"A":{"tab":["n28"]}}, + "humanité":{"N":{"g":"f", + "tab":["n17"]}}, + "humble":{"A":{"tab":["n25"]}}, + "humeur":{"N":{"g":"f", + "tab":["n17"]}}, + "humide":{"A":{"tab":["n25"]}}, + "humidité":{"N":{"g":"f", + "tab":["n17"]}}, + "hurler":{"V":{"aux":["av"], + "h":1, + "tab":"v36"}}, + "hygiène":{"N":{"g":"f", + "tab":["n17"]}}, + "hypocrite":{"A":{"tab":["n25"]}}, + "ici":{"Adv":{"tab":["av"]}}, + "idéal":{"A":{"tab":["n47"]}}, + "idée":{"N":{"g":"f", + "tab":["n17"]}}, + "ignorant":{"A":{"tab":["n28"]}}, + "ignorer":{"V":{"aux":["av"], + "tab":"v36"}}, + "île":{"N":{"g":"f", + "tab":["n17"]}}, + "illuminer":{"V":{"aux":["av"], + "tab":"v36"}}, + "illusion":{"N":{"g":"f", + "tab":["n17"]}}, + "illustre":{"A":{"tab":["n25"]}}, + "illustrer":{"V":{"aux":["av"], + "tab":"v36"}}, + "image":{"N":{"g":"f", + "tab":["n17"]}}, + "imagination":{"N":{"g":"f", + "tab":["n17"]}}, + "imaginer":{"V":{"aux":["av"], + "tab":"v36"}}, + "imiter":{"V":{"aux":["av"], + "tab":"v36"}}, + "immaculé":{"A":{"tab":["n28"]}}, + "immédiatement":{"Adv":{"tab":["av"]}}, + "immense":{"A":{"tab":["n25"]}}, + "immobile":{"A":{"tab":["n25"]}}, + "impatiemment":{"Adv":{"tab":["av"]}}, + "impatience":{"N":{"g":"f", + "tab":["n17"]}}, + "impatient":{"A":{"tab":["n28"]}}, + "imperméable":{"A":{"tab":["n25"]}}, + "implorer":{"V":{"aux":["av"], + "tab":"v36"}}, + "importance":{"N":{"g":"f", + "tab":["n17"]}}, + "important":{"A":{"tab":["n28"]}}, + "importer":{"V":{"aux":["av"], + "tab":"v36"}}, + "imposant":{"A":{"tab":["n28"]}}, + "imposer":{"V":{"aux":["av"], + "tab":"v36"}}, + "impossibilité":{"N":{"g":"f", + "tab":["n17"]}}, + "impossible":{"A":{"tab":["n25"]}}, + "impression":{"N":{"g":"f", + "tab":["n17"]}}, + "imprévu":{"A":{"tab":["n28"]}}, + "imprimer":{"V":{"aux":["av"], + "tab":"v36"}}, + "imprudence":{"N":{"g":"f", + "tab":["n17"]}}, + "imprudent":{"A":{"tab":["n28"]}}, + "incendie":{"N":{"g":"m", + "tab":["n3"]}}, + "incident":{"N":{"g":"m", + "tab":["n3"]}}, + "incliner":{"V":{"aux":["av"], + "tab":"v36"}}, + "inconnu":{"N":{"g":"m", + "tab":["n28"]}}, + "inconvénient":{"N":{"g":"m", + "tab":["n3"]}}, + "indication":{"N":{"g":"f", + "tab":["n17"]}}, + "indifférent":{"A":{"tab":["n28"]}}, + "indigne":{"A":{"tab":["n25"]}}, + "indiquer":{"V":{"aux":["av"], + "tab":"v36"}}, + "indispensable":{"A":{"tab":["n25"]}}, + "industrie":{"N":{"g":"f", + "tab":["n17"]}}, + "industriel":{"A":{"tab":["n48"]}}, + "inerte":{"A":{"tab":["n25"]}}, + "inférieur":{"A":{"tab":["n28"]}}, + "infini":{"A":{"tab":["n28"]}}, + "infiniment":{"Adv":{"tab":["av"]}}, + "infirme":{"A":{"tab":["n25"]}}, + "infirmier":{"N":{"g":"m", + "tab":["n39"]}}, + "influence":{"N":{"g":"f", + "tab":["n17"]}}, + "informer":{"V":{"aux":["av"], + "tab":"v36"}}, + "ingrat":{"A":{"tab":["n28"]}}, + "ingratitude":{"N":{"g":"f", + "tab":["n17"]}}, + "injure":{"N":{"g":"f", + "tab":["n17"]}}, + "innocent":{"A":{"tab":["n28"]}}, + "inondation":{"N":{"g":"f", + "tab":["n17"]}}, + "inonder":{"V":{"aux":["av"], + "tab":"v36"}}, + "inquiet":{"A":{"tab":["n40"]}}, + "inquiéter":{"V":{"aux":["av"], + "tab":"v22"}}, + "inquiétude":{"N":{"g":"f", + "tab":["n17"]}}, + "inscrire":{"V":{"aux":["av"], + "tab":"v114"}}, + "insecte":{"N":{"g":"m", + "tab":["n3"]}}, + "insigne":{"N":{"g":"m", + "tab":["n3"]}}, + "insister":{"V":{"aux":["av"], + "tab":"v36"}}, + "inspecteur":{"N":{"g":"m", + "tab":["n56"]}}, + "inspirer":{"V":{"aux":["av"], + "tab":"v36"}}, + "installer":{"V":{"aux":["av"], + "tab":"v36"}}, + "instant":{"N":{"g":"m", + "tab":["n3"]}}, + "institut":{"N":{"g":"m", + "tab":["n3"]}}, + "instituteur":{"N":{"g":"m", + "tab":["n56"]}}, + "instructif":{"A":{"tab":["n46"]}}, + "instruction":{"N":{"g":"f", + "tab":["n17"]}}, + "instruire":{"V":{"aux":["av"], + "tab":"v113"}}, + "instrument":{"N":{"g":"m", + "tab":["n3"]}}, + "intellectuel":{"A":{"tab":["n48"]}}, + "intelligence":{"N":{"g":"f", + "tab":["n17"]}}, + "intelligent":{"A":{"tab":["n28"]}}, + "intense":{"A":{"tab":["n25"]}}, + "intention":{"N":{"g":"f", + "tab":["n17"]}}, + "interdire":{"V":{"aux":["av"], + "tab":"v118"}}, + "intéressant":{"A":{"tab":["n28"]}}, + "intéresser":{"V":{"aux":["av"], + "tab":"v36"}}, + "intérêt":{"N":{"g":"m", + "tab":["n3"]}}, + "intérieur":{"A":{"tab":["n28"]}}, + "interpeller":{"V":{"aux":["av"], + "tab":"v36"}}, + "interroger":{"V":{"aux":["av"], + "tab":"v3"}}, + "interrompre":{"V":{"aux":["av"], + "tab":"v91"}}, + "interruption":{"N":{"g":"f", + "tab":["n17"]}}, + "intervenir":{"V":{"aux":["êt"], + "tab":"v52"}}, + "intime":{"A":{"tab":["n25"]}}, + "introduction":{"N":{"g":"f", + "tab":["n17"]}}, + "introduire":{"V":{"aux":["av"], + "tab":"v113"}}, + "inutile":{"A":{"tab":["n25"]}}, + "invention":{"N":{"g":"f", + "tab":["n17"]}}, + "invisible":{"A":{"tab":["n25"]}}, + "invitation":{"N":{"g":"f", + "tab":["n17"]}}, + "inviter":{"V":{"aux":["av"], + "tab":"v36"}}, + "invoquer":{"V":{"aux":["av"], + "tab":"v36"}}, + "irriter":{"V":{"aux":["av"], + "tab":"v36"}}, + "isoler":{"V":{"aux":["av"], + "tab":"v36"}}, + "ivoire":{"N":{"g":"m", + "tab":["n3"]}}, + "ivre":{"A":{"tab":["n25"]}}, + "ivresse":{"N":{"g":"f", + "tab":["n17"]}}, + "jacinthe":{"N":{"g":"f", + "tab":["n17"]}}, + "jadis":{"Adv":{"tab":["av"]}}, + "jaillir":{"V":{"aux":["av"], + "tab":"v58"}}, + "jaloux":{"A":{"tab":["n54"]}}, + "jamais":{"Adv":{"tab":["av"]}}, + "jambe":{"N":{"g":"f", + "tab":["n17"]}}, + "jambon":{"N":{"g":"m", + "tab":["n3"]}}, + "janvier":{"N":{"g":"m", + "tab":["n3"]}}, + "jardin":{"N":{"g":"m", + "tab":["n3"]}}, + "jardinage":{"N":{"g":"m", + "tab":["n3"]}}, + "jardinier":{"N":{"g":"m", + "tab":["n39"]}}, + "jaune":{"A":{"tab":["n25"]}}, + "jaunir":{"V":{"aux":["av"], + "tab":"v58"}}, + "je":{"Pro":{"tab":["pn1"]}}, + "jeter":{"V":{"aux":["av"], + "tab":"v10"}}, + "jeu":{"N":{"g":"m", + "tab":["n4"]}}, + "jeudi":{"N":{"g":"m", + "tab":["n3"]}}, + "jeune":{"A":{"pos":"pre", + "tab":["n25"]}}, + "jeunesse":{"N":{"g":"f", + "tab":["n17"]}}, + "joie":{"N":{"g":"f", + "tab":["n17"]}}, + "joindre":{"V":{"aux":["av"], + "tab":"v97"}}, + "joli":{"A":{"pos":"pre", + "tab":["n28"]}}, + "joncher":{"V":{"aux":["av"], + "tab":"v36"}}, + "jonquille":{"N":{"g":"f", + "tab":["n17"]}}, + "joue":{"N":{"g":"f", + "tab":["n17"]}}, + "jouer":{"V":{"aux":["av"], + "tab":"v36"}}, + "jouet":{"N":{"g":"m", + "tab":["n3"]}}, + "joueur":{"N":{"g":"m", + "tab":["n55"]}}, + "jouir":{"V":{"aux":["av"], + "tab":"v58"}}, + "joujou":{"N":{"g":"m", + "tab":["n4"]}}, + "jour":{"N":{"g":"m", + "tab":["n3"]}}, + "journal":{"N":{"g":"m", + "tab":["n5"]}}, + "journalier":{"A":{"tab":["n39"]}}, + "journée":{"N":{"g":"f", + "tab":["n17"]}}, + "joyeusement":{"Adv":{"tab":["av"]}}, + "joyeux":{"A":{"tab":["n54"]}}, + "juge":{"N":{"g":"m", + "tab":["n3"]}}, + "jugement":{"N":{"g":"m", + "tab":["n3"]}}, + "juger":{"V":{"aux":["av"], + "tab":"v3"}}, + "juillet":{"N":{"g":"m", + "tab":["n3"]}}, + "juin":{"N":{"g":"m", + "tab":["n3"]}}, + "jurer":{"V":{"aux":["av"], + "tab":"v36"}}, + "jusque":{"P":{"tab":["ppe"]}}, + "juste":{"A":{"tab":["n25"]}}, + "justement":{"Adv":{"tab":["av"]}}, + "justice":{"N":{"g":"f", + "tab":["n17"]}}, + "képi":{"N":{"g":"m", + "tab":["n3"]}}, + "kermesse":{"N":{"g":"f", + "tab":["n17"]}}, + "kilogramme":{"N":{"g":"m", + "tab":["n3"]}}, + "kilomètre":{"N":{"g":"m", + "tab":["n3"]}}, + "là":{"Adv":{"tab":["av"]}}, + "là-bas":{"Adv":{"tab":["av"]}}, + "labeur":{"N":{"g":"m", + "tab":["n3"]}}, + "laborieux":{"A":{"tab":["n54"]}}, + "labourer":{"V":{"aux":["av"], + "tab":"v36"}}, + "laboureur":{"N":{"g":"m", + "tab":["n3"]}}, + "lac":{"N":{"g":"m", + "tab":["n3"]}}, + "lâcher":{"V":{"aux":["av"], + "tab":"v36"}}, + "laid":{"A":{"tab":["n28"]}}, + "laine":{"N":{"g":"f", + "tab":["n17"]}}, + "laisser":{"V":{"aux":["av"], + "tab":"v36"}}, + "lait":{"N":{"g":"m", + "tab":["n3"]}}, + "laitier":{"N":{"g":"m", + "tab":["n39"]}}, + "lambeau":{"N":{"g":"m", + "tab":["n4"]}}, + "lamentable":{"A":{"tab":["n25"]}}, + "lampe":{"N":{"g":"f", + "tab":["n17"]}}, + "lancer":{"V":{"aux":["av"], + "tab":"v0"}}, + "langage":{"N":{"g":"m", + "tab":["n3"]}}, + "langue":{"N":{"g":"f", + "tab":["n17"]}}, + "lanterne":{"N":{"g":"f", + "tab":["n17"]}}, + "lapin":{"N":{"g":"m", + "tab":["n28"]}}, + "large":{"A":{"tab":["n25"]}}, + "largement":{"Adv":{"tab":["av"]}}, + "larme":{"N":{"g":"f", + "tab":["n17"]}}, + "las":{"A":{"tab":["n50"]}}, + "lasser":{"V":{"aux":["av"], + "tab":"v36"}}, + "laver":{"V":{"aux":["av"], + "tab":"v36"}}, + "le":{"D":{"tab":["d1"]}, + "Pro":{"g":"m", + "tab":["d1"]}}, + "lécher":{"V":{"aux":["av"], + "tab":"v27"}}, + "leçon":{"N":{"g":"f", + "tab":["n17"]}}, + "lecture":{"N":{"g":"f", + "tab":["n17"]}}, + "léger":{"A":{"tab":["n39"]}}, + "légèrement":{"Adv":{"tab":["av"]}}, + "légume":{"N":{"g":"x", + "tab":["n3"]}}, + "lendemain":{"N":{"g":"m", + "tab":["n3"]}}, + "lent":{"A":{"tab":["n28"]}}, + "lentement":{"Adv":{"tab":["av"]}}, + "lenteur":{"N":{"g":"f", + "tab":["n17"]}}, + "lequel":{"Pro":{"tab":["pn24"]}}, + "lettre":{"N":{"g":"f", + "tab":["n17"]}}, + "lever":{"V":{"aux":["av"], + "tab":"v25"}}, + "lèvre":{"N":{"g":"f", + "tab":["n17"]}}, + "libérer":{"V":{"aux":["av"], + "tab":"v28"}}, + "liberté":{"N":{"g":"f", + "tab":["n17"]}}, + "libre":{"A":{"tab":["n25"]}}, + "lien":{"N":{"g":"m", + "tab":["n3"]}}, + "lier":{"V":{"aux":["av"], + "tab":"v36"}}, + "lierre":{"N":{"g":"m", + "tab":["n3"]}}, + "lieu":{"N":{"g":"m", + "tab":["n4"]}}, + "lieue":{"N":{"g":"f", + "tab":["n17"]}}, + "lièvre":{"N":{"g":"m", + "tab":["n3"]}}, + "ligne":{"N":{"g":"f", + "tab":["n17"]}}, + "ligue":{"N":{"g":"f", + "tab":["n17"]}}, + "lilas":{"N":{"g":"m", + "tab":["n2"]}}, + "limite":{"N":{"g":"f", + "tab":["n17"]}}, + "limiter":{"V":{"aux":["av"], + "tab":"v36"}}, + "limpide":{"A":{"tab":["n25"]}}, + "lin":{"N":{"g":"m", + "tab":["n3"]}}, + "linge":{"N":{"g":"m", + "tab":["n3"]}}, + "lion":{"N":{"g":"m", + "tab":["n49"]}}, + "liquide":{"A":{"tab":["n25"]}}, + "lire":{"V":{"aux":["av"], + "tab":"v120"}}, + "lis":{"N":{"g":"m", + "tab":["n2"]}}, + "lisière":{"N":{"g":"f", + "tab":["n17"]}}, + "lisse":{"A":{"tab":["n25"]}}, + "liste":{"N":{"g":"f", + "tab":["n17"]}}, + "lit":{"N":{"g":"m", + "tab":["n3"]}}, + "litière":{"N":{"g":"f", + "tab":["n17"]}}, + "livre":{"N":{"g":"m", + "tab":["n3"]}}, + "livrer":{"V":{"aux":["av"], + "tab":"v36"}}, + "local":{"N":{"g":"m", + "tab":["n5"]}}, + "localité":{"N":{"g":"f", + "tab":["n17"]}}, + "locomotive":{"N":{"g":"f", + "tab":["n17"]}}, + "loger":{"V":{"aux":["av"], + "tab":"v3"}}, + "logis":{"N":{"g":"m", + "tab":["n2"]}}, + "loi":{"N":{"g":"f", + "tab":["n17"]}}, + "loin":{"Adv":{"tab":["av"]}}, + "lointain":{"A":{"tab":["n28"]}}, + "loisir":{"N":{"g":"m", + "tab":["n3"]}}, + "long":{"A":{"tab":["n64"]}}, + "longer":{"V":{"aux":["av"], + "tab":"v3"}}, + "longtemps":{"Adv":{"tab":["av"]}}, + "longuement":{"Adv":{"tab":["av"]}}, + "longueur":{"N":{"g":"f", + "tab":["n17"]}}, + "lors":{"Adv":{"tab":["av"]}}, + "lot":{"N":{"g":"m", + "tab":["n3"]}}, + "louange":{"N":{"g":"f", + "tab":["n17"]}}, + "louer":{"V":{"aux":["av"], + "tab":"v36"}}, + "loup":{"N":{"g":"m", + "tab":["n3"]}}, + "lourd":{"A":{"tab":["n28"]}}, + "louve":{"N":{"g":"f", + "tab":["n17"]}}, + "loyal":{"A":{"tab":["n47"]}}, + "lueur":{"N":{"g":"f", + "tab":["n17"]}}, + "lugubre":{"A":{"tab":["n25"]}}, + "luire":{"V":{"aux":["av"], + "tab":"v112"}}, + "luisant":{"A":{"tab":["n28"]}}, + "lumière":{"N":{"g":"f", + "tab":["n17"]}}, + "lumineux":{"A":{"tab":["n54"]}}, + "lundi":{"N":{"g":"m", + "tab":["n3"]}}, + "lune":{"N":{"g":"f", + "tab":["n17"]}}, + "lunette":{"N":{"g":"f", + "tab":["n17"]}}, + "lutin":{"N":{"g":"m", + "tab":["n3"]}}, + "lutte":{"N":{"g":"f", + "tab":["n17"]}}, + "lutter":{"V":{"aux":["av"], + "tab":"v36"}}, + "lys":{"N":{"g":"m", + "tab":["n2"]}}, + "machine":{"N":{"g":"f", + "tab":["n17"]}}, + "mâchoire":{"N":{"g":"f", + "tab":["n17"]}}, + "madame":{"N":{"g":"f", + "tab":["n19"]}}, + "mademoiselle":{"N":{"g":"f", + "tab":["n20"]}}, + "magasin":{"N":{"g":"m", + "tab":["n3"]}}, + "magique":{"A":{"tab":["n25"]}}, + "magnifique":{"A":{"tab":["n25"]}}, + "mai":{"N":{"g":"m", + "tab":["n3"]}}, + "maigre":{"A":{"tab":["n25"]}}, + "main":{"N":{"g":"f", + "tab":["n17"]}}, + "maintenant":{"Adv":{"tab":["av"]}}, + "maintenir":{"V":{"aux":["av"], + "tab":"v52"}}, + "maire":{"N":{"g":"m", + "tab":["n3"]}}, + "maison":{"N":{"g":"f", + "tab":["n17"]}}, + "maître":{"N":{"g":"m", + "tab":["n52"]}}, + "majesté":{"N":{"g":"f", + "tab":["n17"]}}, + "majestueux":{"A":{"tab":["n54"]}}, + "mal":{"Adv":{"tab":["av"]}}, + "malade":{"A":{"tab":["n25"]}}, + "maladie":{"N":{"g":"f", + "tab":["n17"]}}, + "malgré":{"P":{"tab":["pp"]}}, + "malheur":{"N":{"g":"m", + "tab":["n3"]}}, + "malheureusement":{"Adv":{"tab":["av"]}}, + "malheureux":{"A":{"tab":["n54"]}}, + "malin":{"A":{"tab":["n65"]}}, + "malle":{"N":{"g":"f", + "tab":["n17"]}}, + "maman":{"N":{"g":"f", + "tab":["n17"]}}, + "manche":{"N":{"g":"f", + "tab":["n17"]}}, + "manger":{"V":{"aux":["av"], + "tab":"v3"}}, + "manier":{"V":{"aux":["av"], + "tab":"v36"}}, + "manière":{"N":{"g":"f", + "tab":["n17"]}}, + "manifester":{"V":{"aux":["av"], + "tab":"v36"}}, + "manoeuvre":{"N":{"g":"m", + "tab":["n3"]}}, + "manoeuvrer":{"V":{"aux":["av"], + "tab":"v36"}}, + "manque":{"N":{"g":"m", + "tab":["n3"]}}, + "manquer":{"V":{"aux":["av"], + "tab":"v36"}}, + "mansarde":{"N":{"g":"f", + "tab":["n17"]}}, + "manteau":{"N":{"g":"m", + "tab":["n4"]}}, + "manuel":{"A":{"tab":["n48"]}}, + "marbre":{"N":{"g":"m", + "tab":["n3"]}}, + "marchand":{"N":{"g":"m", + "tab":["n28"]}}, + "marchander":{"V":{"aux":["av"], + "tab":"v36"}}, + "marchandise":{"N":{"g":"f", + "tab":["n17"]}}, + "marche":{"N":{"g":"f", + "tab":["n17"]}}, + "marché":{"N":{"g":"m", + "tab":["n3"]}}, + "marcher":{"V":{"aux":["av"], + "tab":"v36"}}, + "mardi":{"N":{"g":"m", + "tab":["n3"]}}, + "mare":{"N":{"g":"f", + "tab":["n17"]}}, + "marguerite":{"N":{"g":"f", + "tab":["n17"]}}, + "mari":{"N":{"g":"m", + "tab":["n3"]}}, + "mariage":{"N":{"g":"m", + "tab":["n3"]}}, + "marier":{"V":{"aux":["av"], + "tab":"v36"}}, + "marin":{"N":{"g":"m", + "tab":["n3"]}}, + "marine":{"N":{"g":"f", + "tab":["n17"]}}, + "marque":{"N":{"g":"f", + "tab":["n17"]}}, + "marquer":{"V":{"aux":["av"], + "tab":"v36"}}, + "marquis":{"N":{"g":"m", + "tab":["n2"]}}, + "marraine":{"N":{"g":"f", + "tab":["n17"]}}, + "marron":{"N":{"g":"m", + "tab":["n3"]}}, + "marronnier":{"N":{"g":"m", + "tab":["n3"]}}, + "mars":{"N":{"g":"m", + "tab":["n2"]}}, + "marteau":{"N":{"g":"m", + "tab":["n4"]}}, + "masse":{"N":{"g":"f", + "tab":["n17"]}}, + "massif":{"A":{"tab":["n46"]}}, + "mât":{"N":{"g":"m", + "tab":["n3"]}}, + "matériel":{"N":{"g":"m", + "tab":["n3"]}}, + "maternel":{"A":{"tab":["n48"]}}, + "matière":{"N":{"g":"f", + "tab":["n17"]}}, + "matin":{"N":{"g":"m", + "tab":["n3"]}}, + "matinal":{"A":{"tab":["n47"]}}, + "matinée":{"N":{"g":"f", + "tab":["n17"]}}, + "maudire":{"V":{"aux":["av"], + "tab":"v60"}}, + "maussade":{"A":{"tab":["n25"]}}, + "mauvais":{"A":{"pos":"pre", + "tab":["n27"]}}, + "mauve":{"A":{"tab":["n25"]}}, + "maximum":{"N":{"g":"m", + "tab":["n78"]}}, + "me":{"Pro":{"tab":["pn2"]}}, + "me*coi":{"Pro":{"tab":["pn3"]}}, + "me*refl":{"Pro":{"tab":["pn6"]}}, + "mécanique":{"A":{"tab":["n25"]}}, + "méchant":{"A":{"tab":["n28"]}}, + "mécontent":{"A":{"tab":["n28"]}}, + "médaille":{"N":{"g":"f", + "tab":["n17"]}}, + "médecin":{"N":{"g":"m", + "tab":["n3"]}}, + "méditer":{"V":{"aux":["av"], + "tab":"v36"}}, + "meilleur":{"A":{"tab":["n28"]}}, + "mélancolie":{"N":{"g":"f", + "tab":["n17"]}}, + "mélancolique":{"A":{"tab":["n25"]}}, + "mélange":{"N":{"g":"m", + "tab":["n3"]}}, + "mélanger":{"V":{"aux":["av"], + "tab":"v3"}}, + "mêler":{"V":{"aux":["av"], + "tab":"v36"}}, + "mélodie":{"N":{"g":"f", + "tab":["n17"]}}, + "mélodieux":{"A":{"tab":["n54"]}}, + "membre":{"N":{"g":"m", + "tab":["n3"]}}, + "même":{"Adv":{"tab":["av"]}}, + "mémoire":{"N":{"g":"f", + "tab":["n17"]}}, + "menacer":{"V":{"aux":["av"], + "tab":"v0"}}, + "ménage":{"N":{"g":"m", + "tab":["n3"]}}, + "ménager":{"V":{"aux":["av"], + "tab":"v3"}}, + "ménagerie":{"N":{"g":"f", + "tab":["n17"]}}, + "mendiant":{"N":{"g":"m", + "tab":["n28"]}}, + "mendier":{"V":{"aux":["av"], + "tab":"v36"}}, + "mener":{"V":{"aux":["av"], + "tab":"v24"}}, + "mensonge":{"N":{"g":"m", + "tab":["n3"]}}, + "menteur":{"N":{"g":"m", + "tab":["n55"]}}, + "mentir":{"V":{"aux":["av"], + "tab":"v46"}}, + "menton":{"N":{"g":"m", + "tab":["n3"]}}, + "menu":{"N":{"g":"m", + "tab":["n3"]}}, + "menuisier":{"N":{"g":"m", + "tab":["n3"]}}, + "mer":{"N":{"g":"f", + "tab":["n17"]}}, + "merci":{"N":{"g":"m", + "tab":["n25"]}}, + "mercredi":{"N":{"g":"m", + "tab":["n3"]}}, + "mère":{"N":{"g":"f", + "tab":["n17"]}}, + "mérite":{"N":{"g":"m", + "tab":["n3"]}}, + "mériter":{"V":{"aux":["av"], + "tab":"v36"}}, + "merle":{"N":{"g":"m", + "tab":["n3"]}}, + "merveille":{"N":{"g":"f", + "tab":["n17"]}}, + "merveilleusement":{"Adv":{"tab":["av"]}}, + "merveilleux":{"A":{"tab":["n54"]}}, + "messager":{"N":{"g":"m", + "tab":["n39"]}}, + "messe":{"N":{"g":"f", + "tab":["n17"]}}, + "mesure":{"N":{"g":"f", + "tab":["n17"]}}, + "mesurer":{"V":{"aux":["av"], + "tab":"v36"}}, + "métal":{"N":{"g":"m", + "tab":["n5"]}}, + "méthode":{"N":{"g":"f", + "tab":["n17"]}}, + "métier":{"N":{"g":"m", + "tab":["n3"]}}, + "métis":{"A":{"tab":["n50"]}}, + "mètre":{"N":{"g":"m", + "tab":["n3"]}}, + "mettre":{"V":{"aux":["av"], + "tab":"v89"}}, + "meuble":{"N":{"g":"m", + "tab":["n3"]}}, + "meule":{"N":{"g":"f", + "tab":["n17"]}}, + "meunier":{"N":{"g":"m", + "tab":["n39"]}}, + "midi":{"N":{"g":"m", + "tab":["n3"]}}, + "miel":{"N":{"g":"m", + "tab":["n3"]}}, + "mien":{"Pro":{"tab":["pn12"]}}, + "miette":{"N":{"g":"f", + "tab":["n17"]}}, + "mieux":{"Adv":{"tab":["av"]}}, + "mignon":{"A":{"tab":["n49"]}}, + "migrateur":{"A":{"tab":["n56"]}}, + "milieu":{"N":{"g":"m", + "tab":["n4"]}}, + "militaire":{"A":{"tab":["n25"]}}, + "millier":{"N":{"g":"m", + "tab":["n3"]}}, + "million":{"N":{"g":"m", + "tab":["n3"]}}, + "mince":{"A":{"tab":["n25"]}}, + "mine":{"N":{"g":"f", + "tab":["n17"]}}, + "mineur":{"N":{"g":"m", + "tab":["n3"]}}, + "ministre":{"N":{"g":"m", + "tab":["n25"]}}, + "minuit":{"N":{"g":"m", + "tab":["n3"]}}, + "minuscule":{"A":{"tab":["n25"]}}, + "minute":{"N":{"g":"f", + "tab":["n17"]}}, + "miracle":{"N":{"g":"m", + "tab":["n3"]}}, + "mirer":{"V":{"aux":["av"], + "tab":"v36"}}, + "miroir":{"N":{"g":"m", + "tab":["n3"]}}, + "misérable":{"A":{"tab":["n25"]}}, + "misère":{"N":{"g":"f", + "tab":["n17"]}}, + "missel":{"N":{"g":"m", + "tab":["n3"]}}, + "mission":{"N":{"g":"f", + "tab":["n17"]}}, + "missionnaire":{"N":{"g":"x", + "tab":["n25"]}}, + "mobile":{"A":{"tab":["n25"]}}, + "mobilier":{"N":{"g":"m", + "tab":["n3"]}}, + "mode":{"N":{"g":"f", + "tab":["n17"]}}, + "modèle":{"N":{"g":"m", + "tab":["n3"]}}, + "modérer":{"V":{"aux":["av"], + "tab":"v28"}}, + "moderne":{"A":{"tab":["n25"]}}, + "modeste":{"A":{"tab":["n25"]}}, + "modestie":{"N":{"g":"f", + "tab":["n17"]}}, + "moelleux":{"A":{"tab":["n54"]}}, + "moi":{"Pro":{"tab":["pn4"]}}, + "moi*refl":{"Pro":{"tab":["pn7"]}}, + "moi-même":{"Pro":{"tab":["pn8"]}}, + "moindre":{"A":{"tab":["n25"]}}, + "moine":{"N":{"g":"m", + "tab":["n3"]}}, + "moineau":{"N":{"g":"m", + "tab":["n4"]}}, + "moins":{"Adv":{"tab":["av"]}}, + "mois":{"N":{"g":"m", + "tab":["n2"]}}, + "moisson":{"N":{"g":"f", + "tab":["n17"]}}, + "moissonneur":{"N":{"g":"m", + "tab":["n55"]}}, + "moitié":{"N":{"g":"f", + "tab":["n17"]}}, + "moment":{"N":{"g":"m", + "tab":["n3"]}}, + "mon":{"D":{"tab":["d5"]}}, + "monde":{"N":{"g":"m", + "tab":["n3"]}}, + "monnaie":{"N":{"g":"f", + "tab":["n17"]}}, + "monotone":{"A":{"tab":["n25"]}}, + "monseigneur":{"N":{"g":"m", + "tab":["n13"]}}, + "monsieur":{"N":{"g":"m", + "tab":["n12"]}}, + "monstre":{"N":{"g":"m", + "tab":["n3"]}}, + "mont":{"N":{"g":"m", + "tab":["n3"]}}, + "montagne":{"N":{"g":"f", + "tab":["n17"]}}, + "montant":{"N":{"g":"m", + "tab":["n3"]}}, + "monter":{"V":{"aux":["aê"], + "tab":"v36"}}, + "montre":{"N":{"g":"f", + "tab":["n17"]}}, + "montrer":{"V":{"aux":["av"], + "tab":"v36"}}, + "monument":{"N":{"g":"m", + "tab":["n3"]}}, + "moquer":{"V":{"aux":["av"], + "tab":"v36"}}, + "moqueur":{"A":{"tab":["n55"]}}, + "moral":{"N":{"g":"m", + "tab":["n5"]}}, + "morale":{"N":{"g":"f", + "tab":["n17"]}}, + "morceau":{"N":{"g":"m", + "tab":["n4"]}}, + "mordre":{"V":{"aux":["av"], + "tab":"v85"}}, + "morne":{"A":{"tab":["n25"]}}, + "mort":{"N":{"g":"m", + "tab":["n28"]}}, + "mortel":{"A":{"tab":["n48"]}}, + "mot":{"N":{"g":"m", + "tab":["n3"]}}, + "moteur":{"N":{"g":"m", + "tab":["n3"]}}, + "motif":{"N":{"g":"m", + "tab":["n3"]}}, + "moto":{"N":{"g":"f", + "tab":["n17"]}}, + "mou":{"A":{"tab":["n109"]}}, + "mouche":{"N":{"g":"f", + "tab":["n17"]}}, + "mouchoir":{"N":{"g":"m", + "tab":["n3"]}}, + "moudre":{"V":{"aux":["av"], + "tab":"v92"}}, + "mouiller":{"V":{"aux":["av"], + "tab":"v36"}}, + "moulin":{"N":{"g":"m", + "tab":["n3"]}}, + "mourir":{"V":{"aux":["êt"], + "tab":"v55"}}, + "mousse":{"N":{"g":"f", + "tab":["n17"]}}, + "moustache":{"N":{"g":"f", + "tab":["n17"]}}, + "mouton":{"N":{"g":"m", + "tab":["n3"]}}, + "mouvement":{"N":{"g":"m", + "tab":["n3"]}}, + "mouvoir":{"V":{"aux":["av"], + "tab":"v65"}}, + "moyen":{"A":{"tab":["n49"]}}, + "moyenne":{"N":{"g":"f", + "tab":["n17"]}}, + "muet":{"A":{"tab":["n51"]}}, + "muguet":{"N":{"g":"m", + "tab":["n3"]}}, + "multicolore":{"A":{"tab":["n25"]}}, + "multiple":{"A":{"tab":["n25"]}}, + "multitude":{"N":{"g":"f", + "tab":["n17"]}}, + "munir":{"V":{"aux":["av"], + "tab":"v58"}}, + "mûr":{"A":{"tab":["n28"]}}, + "mur":{"N":{"g":"m", + "tab":["n3"]}}, + "muraille":{"N":{"g":"f", + "tab":["n17"]}}, + "mûrir":{"V":{"aux":["av"], + "tab":"v58"}}, + "murmure":{"N":{"g":"m", + "tab":["n3"]}}, + "murmurer":{"V":{"aux":["av"], + "tab":"v36"}}, + "muscle":{"N":{"g":"m", + "tab":["n3"]}}, + "museau":{"N":{"g":"m", + "tab":["n4"]}}, + "musée":{"N":{"g":"m", + "tab":["n3"]}}, + "musicien":{"A":{"tab":["n49"]}}, + "musique":{"N":{"g":"f", + "tab":["n17"]}}, + "myosotis":{"N":{"g":"m", + "tab":["n2"]}}, + "mystère":{"N":{"g":"m", + "tab":["n3"]}}, + "mystérieux":{"A":{"tab":["n54"]}}, + "nager":{"V":{"aux":["av"], + "tab":"v3"}}, + "naissance":{"N":{"g":"f", + "tab":["n17"]}}, + "naître":{"V":{"aux":["êt"], + "tab":"v104"}}, + "nappe":{"N":{"g":"f", + "tab":["n17"]}}, + "narcisse":{"N":{"g":"m", + "tab":["n3"]}}, + "natal":{"A":{"tab":["n28"]}}, + "nation":{"N":{"g":"f", + "tab":["n17"]}}, + "national":{"A":{"tab":["n47"]}}, + "nature":{"N":{"g":"f", + "tab":["n17"]}}, + "naturel":{"A":{"tab":["n48"]}}, + "naturellement":{"Adv":{"tab":["av"]}}, + "naufrage":{"N":{"g":"m", + "tab":["n3"]}}, + "navire":{"N":{"g":"m", + "tab":["n3"]}}, + "ne":{"Adv":{"tab":["ave"]}}, + "néanmoins":{"Adv":{"tab":["av"]}}, + "nécessaire":{"A":{"tab":["n25"]}}, + "négligence":{"N":{"g":"f", + "tab":["n17"]}}, + "négligent":{"A":{"tab":["n28"]}}, + "négliger":{"V":{"aux":["av"], + "tab":"v3"}}, + "négociant":{"N":{"g":"m", + "tab":["n28"]}}, + "nègre":{"A":{"tab":["n25"]}}, + "neige":{"N":{"g":"f", + "tab":["n17"]}}, + "neiger":{"V":{"aux":["av"], + "tab":"v3"}}, + "nerveux":{"A":{"tab":["n54"]}}, + "net":{"A":{"tab":["n51"]}}, + "nettoyer":{"V":{"aux":["av"], + "tab":"v5"}}, + "neuf":{"A":{"tab":["n46"]}}, + "neveu":{"N":{"g":"m", + "tab":["n4"]}}, + "nez":{"N":{"g":"m", + "tab":["n2"]}}, + "niche":{"N":{"g":"f", + "tab":["n17"]}}, + "nid":{"N":{"g":"m", + "tab":["n3"]}}, + "nièce":{"N":{"g":"f", + "tab":["n17"]}}, + "niveau":{"N":{"g":"m", + "tab":["n4"]}}, + "noble":{"A":{"tab":["n25"]}}, + "noeud":{"N":{"g":"m", + "tab":["n3"]}}, + "noir":{"A":{"tab":["n28"]}}, + "noircir":{"V":{"aux":["av"], + "tab":"v58"}}, + "noisette":{"N":{"g":"f", + "tab":["n17"]}}, + "noix":{"N":{"g":"f", + "tab":["n16"]}}, + "nom":{"N":{"g":"m", + "tab":["n3"]}}, + "nombre":{"N":{"g":"m", + "tab":["n3"]}}, + "nombreux":{"A":{"tab":["n54"]}}, + "nommer":{"V":{"aux":["av"], + "tab":"v36"}}, + "non":{"Adv":{"tab":["av"]}}, + "nord":{"N":{"g":"m", + "tab":["n35"]}}, + "normal":{"A":{"tab":["n47"]}}, + "notaire":{"N":{"g":"m", + "tab":["n3"]}}, + "note":{"N":{"g":"f", + "tab":["n17"]}}, + "nôtre":{"Pro":{"tab":["pn13"]}}, + "notre":{"D":{"tab":["d6"]}}, + "nourrir":{"V":{"aux":["av"], + "tab":"v58"}}, + "nourriture":{"N":{"g":"f", + "tab":["n17"]}}, + "nouveau":{"A":{"pos":"pre", + "tab":["n108"]}}, + "novembre":{"N":{"g":"m", + "tab":["n3"]}}, + "noyer":{"V":{"aux":["av"], + "tab":"v5"}}, + "nu":{"A":{"tab":["n28"]}}, + "nuage":{"N":{"g":"m", + "tab":["n3"]}}, + "nuisible":{"A":{"tab":["n25"]}}, + "nuit":{"N":{"g":"f", + "tab":["n17"]}}, + "nullement":{"Adv":{"tab":["av"]}}, + "numéro":{"N":{"g":"m", + "tab":["n3"]}}, + "obéir":{"V":{"aux":["av"], + "tab":"v58"}}, + "obéissant":{"A":{"tab":["n28"]}}, + "objet":{"N":{"g":"m", + "tab":["n3"]}}, + "obligeance":{"N":{"g":"f", + "tab":["n17"]}}, + "obliger":{"V":{"aux":["av"], + "tab":"v3"}}, + "obscur":{"A":{"tab":["n28"]}}, + "obscurcir":{"V":{"aux":["av"], + "tab":"v58"}}, + "obscurité":{"N":{"g":"f", + "tab":["n17"]}}, + "observation":{"N":{"g":"f", + "tab":["n17"]}}, + "observer":{"V":{"aux":["av"], + "tab":"v36"}}, + "obstacle":{"N":{"g":"m", + "tab":["n3"]}}, + "obtenir":{"V":{"aux":["av"], + "tab":"v52"}}, + "occasion":{"N":{"g":"f", + "tab":["n17"]}}, + "occasionner":{"V":{"aux":["av"], + "tab":"v36"}}, + "occupation":{"N":{"g":"f", + "tab":["n17"]}}, + "occuper":{"V":{"aux":["av"], + "tab":"v36"}}, + "océan":{"N":{"g":"m", + "tab":["n3"]}}, + "octobre":{"N":{"g":"m", + "tab":["n3"]}}, + "odeur":{"N":{"g":"f", + "tab":["n17"]}}, + "odorant":{"A":{"tab":["n28"]}}, + "oeil":{"N":{"g":"m", + "tab":["n14"]}}, + "oeillet":{"N":{"g":"m", + "tab":["n3"]}}, + "oeuf":{"N":{"g":"m", + "tab":["n3"]}}, + "oeuvre":{"N":{"g":"f", + "tab":["n17"]}}, + "offenser":{"V":{"aux":["av"], + "tab":"v36"}}, + "office":{"N":{"g":"m", + "tab":["n3"]}}, + "officier":{"N":{"g":"m", + "tab":["n3"]}}, + "offre":{"N":{"g":"f", + "tab":["n17"]}}, + "offrir":{"V":{"aux":["av"], + "tab":"v44"}}, + "oie":{"N":{"g":"f", + "tab":["n17"]}}, + "oiseau":{"N":{"g":"m", + "tab":["n4"]}}, + "oisillon":{"N":{"g":"m", + "tab":["n3"]}}, + "ombrage":{"N":{"g":"m", + "tab":["n3"]}}, + "ombre":{"N":{"g":"f", + "tab":["n17"]}}, + "on":{"Pro":{"tab":["pn0"]}}, + "oncle":{"N":{"g":"m", + "tab":["n3"]}}, + "onde":{"N":{"g":"f", + "tab":["n17"]}}, + "onduler":{"V":{"aux":["av"], + "tab":"v36"}}, + "opération":{"N":{"g":"f", + "tab":["n17"]}}, + "opérer":{"V":{"aux":["av"], + "tab":"v28"}}, + "opinion":{"N":{"g":"f", + "tab":["n17"]}}, + "opposer":{"V":{"aux":["av"], + "tab":"v36"}}, + "or":{"N":{"g":"m", + "tab":["n3"]}}, + "orage":{"N":{"g":"m", + "tab":["n3"]}}, + "orange":{"A":{"tab":["n24"]}, + "N":{"g":"f", + "tab":["n17"]}}, + "oranger":{"N":{"g":"m", + "tab":["n3"]}}, + "ordinaire":{"A":{"tab":["n25"]}}, + "ordinairement":{"Adv":{"tab":["av"]}}, + "ordonner":{"V":{"aux":["av"], + "tab":"v36"}}, + "ordre":{"N":{"g":"m", + "tab":["n3"]}}, + "orée":{"N":{"g":"f", + "tab":["n17"]}}, + "oreille":{"N":{"g":"f", + "tab":["n17"]}}, + "organiser":{"V":{"aux":["av"], + "tab":"v36"}}, + "orgue":{"N":{"g":"m", + "tab":["n3"]}}, + "orgueil":{"N":{"g":"m", + "tab":["n3"]}}, + "orgueilleux":{"A":{"tab":["n54"]}}, + "ornement":{"N":{"g":"m", + "tab":["n3"]}}, + "orner":{"V":{"aux":["av"], + "tab":"v36"}}, + "orphelin":{"N":{"g":"m", + "tab":["n28"]}}, + "os":{"N":{"g":"m", + "tab":["n2"]}}, + "oser":{"V":{"aux":["av"], + "tab":"v36"}}, + "osier":{"N":{"g":"m", + "tab":["n3"]}}, + "ôter":{"V":{"aux":["av"], + "tab":"v36"}}, + "où":{"Pro":{"tab":["pn27"]}}, + "ouate":{"N":{"g":"f", + "tab":["n17"]}}, + "oui":{"Adv":{"h":1, + "tab":["av"]}}, + "ours":{"N":{"g":"m", + "tab":["n2"]}}, + "outil":{"N":{"g":"m", + "tab":["n3"]}}, + "ouverture":{"N":{"g":"f", + "tab":["n17"]}}, + "ouvrage":{"N":{"g":"m", + "tab":["n3"]}}, + "ouvrier":{"N":{"g":"m", + "tab":["n39"]}}, + "ouvrir":{"V":{"aux":["av"], + "tab":"v44"}}, + "page":{"N":{"g":"f", + "tab":["n17"]}}, + "paille":{"N":{"g":"f", + "tab":["n17"]}}, + "pain":{"N":{"g":"m", + "tab":["n3"]}}, + "paire":{"N":{"g":"f", + "tab":["n17"]}}, + "paisible":{"A":{"tab":["n25"]}}, + "paisiblement":{"Adv":{"tab":["av"]}}, + "paître":{"V":{"aux":["tdir"], + "tab":"v102"}}, + "paix":{"N":{"g":"f", + "tab":["n16"]}}, + "palais":{"N":{"g":"m", + "tab":["n2"]}}, + "pâle":{"A":{"tab":["n25"]}}, + "paletot":{"N":{"g":"m", + "tab":["n3"]}}, + "pâlir":{"V":{"aux":["av"], + "tab":"v58"}}, + "pan":{"N":{"g":"m", + "tab":["n3"]}}, + "panache":{"N":{"g":"m", + "tab":["n3"]}}, + "panier":{"N":{"g":"m", + "tab":["n3"]}}, + "panorama":{"N":{"g":"m", + "tab":["n3"]}}, + "pantalon":{"N":{"g":"m", + "tab":["n3"]}}, + "papa":{"N":{"g":"m", + "tab":["n3"]}}, + "papier":{"N":{"g":"m", + "tab":["n3"]}}, + "papillon":{"N":{"g":"m", + "tab":["n3"]}}, + "pâquerette":{"N":{"g":"f", + "tab":["n17"]}}, + "paquet":{"N":{"g":"m", + "tab":["n3"]}}, + "par":{"P":{"tab":["pp"]}}, + "paradis":{"N":{"g":"m", + "tab":["n2"]}}, + "parages":{"N":{"g":"m", + "tab":["n1"]}}, + "paraître":{"V":{"aux":["aê"], + "tab":"v101"}}, + "parapluie":{"N":{"g":"m", + "tab":["n3"]}}, + "parc":{"N":{"g":"m", + "tab":["n3"]}}, + "parcourir":{"V":{"aux":["av"], + "tab":"v57"}}, + "parcours":{"N":{"g":"m", + "tab":["n2"]}}, + "pardessus":{"N":{"g":"m", + "tab":["n2"]}}, + "pardon":{"N":{"g":"m", + "tab":["n3"]}}, + "pardonner":{"V":{"aux":["av"], + "tab":"v36"}}, + "pareil":{"A":{"tab":["n48"]}}, + "parent":{"N":{"g":"m", + "tab":["n3"]}}, + "parenthèse":{"N":{"g":"f", + "tab":["n17"]}}, + "parer":{"V":{"aux":["av"], + "tab":"v36"}}, + "paresse":{"N":{"g":"f", + "tab":["n17"]}}, + "paresseux":{"A":{"tab":["n54"]}}, + "parfait":{"A":{"tab":["n28"]}}, + "parfaitement":{"Adv":{"tab":["av"]}}, + "parfois":{"Adv":{"tab":["av"]}}, + "parfum":{"N":{"g":"m", + "tab":["n3"]}}, + "parfumer":{"V":{"aux":["av"], + "tab":"v36"}}, + "parler":{"V":{"aux":["av"], + "tab":"v36"}}, + "parmi":{"P":{"tab":["pp"]}}, + "paroisse":{"N":{"g":"f", + "tab":["n17"]}}, + "parole":{"N":{"g":"f", + "tab":["n17"]}}, + "parquet":{"N":{"g":"m", + "tab":["n3"]}}, + "parrain":{"N":{"g":"m", + "tab":["n3"]}}, + "parsemer":{"V":{"aux":["av"], + "tab":"v13"}}, + "part":{"N":{"g":"f", + "tab":["n17"]}}, + "partager":{"V":{"aux":["av"], + "tab":"v3"}}, + "parterre":{"N":{"g":"m", + "tab":["n3"]}}, + "parti":{"N":{"g":"m", + "tab":["n3"]}}, + "participer":{"V":{"aux":["av"], + "tab":"v36"}}, + "particulier":{"A":{"tab":["n39"]}}, + "particulièrement":{"Adv":{"tab":["av"]}}, + "partie":{"N":{"g":"f", + "tab":["n17"]}}, + "partir":{"V":{"aux":["êt"], + "tab":"v46"}}, + "partout":{"Adv":{"tab":["av"]}}, + "parure":{"N":{"g":"f", + "tab":["n17"]}}, + "parvenir":{"V":{"aux":["êt"], + "tab":"v52"}}, + "pas":{"Adv":{"tab":["av"]}, + "N":{"g":"m", + "tab":["n2"]}}, + "passage":{"N":{"g":"m", + "tab":["n3"]}}, + "passager":{"N":{"g":"m", + "tab":["n39"]}}, + "passant":{"N":{"g":"m", + "tab":["n28"]}}, + "passé":{"N":{"g":"m", + "tab":["n3"]}}, + "passer":{"V":{"aux":["aê"], + "tab":"v36"}}, + "passion":{"N":{"g":"f", + "tab":["n17"]}}, + "pâte":{"N":{"g":"f", + "tab":["n17"]}}, + "paternel":{"A":{"tab":["n48"]}}, + "patience":{"N":{"g":"f", + "tab":["n17"]}}, + "patin":{"N":{"g":"m", + "tab":["n3"]}}, + "pâtisserie":{"N":{"g":"f", + "tab":["n17"]}}, + "pâtre":{"N":{"g":"m", + "tab":["n3"]}}, + "patrie":{"N":{"g":"f", + "tab":["n17"]}}, + "patron":{"N":{"g":"m", + "tab":["n49"]}}, + "patronage":{"N":{"g":"m", + "tab":["n3"]}}, + "patte":{"N":{"g":"f", + "tab":["n17"]}}, + "pâture":{"N":{"g":"f", + "tab":["n17"]}}, + "pauvre":{"A":{"tab":["n25"]}}, + "pavé":{"N":{"g":"m", + "tab":["n3"]}}, + "payer":{"V":{"aux":["av"], + "tab":"v4"}}, + "pays":{"N":{"g":"m", + "tab":["n2"]}}, + "paysage":{"N":{"g":"m", + "tab":["n3"]}}, + "paysan":{"N":{"g":"m", + "tab":["n49"]}}, + "peau":{"N":{"g":"f", + "tab":["n18"]}}, + "péché":{"N":{"g":"m", + "tab":["n3"]}}, + "pêche":{"N":{"g":"f", + "tab":["n17"]}}, + "pécher":{"V":{"aux":["av"], + "tab":"v27"}}, + "pêcher":{"V":{"aux":["av"], + "tab":"v36"}}, + "pêcheur":{"N":{"g":"m", + "tab":["n55"]}}, + "peindre":{"V":{"aux":["av"], + "tab":"v97"}}, + "peine":{"N":{"g":"f", + "tab":["n17"]}}, + "peiner":{"V":{"aux":["av"], + "tab":"v36"}}, + "peintre":{"N":{"g":"m", + "tab":["n3"]}}, + "peinture":{"N":{"g":"f", + "tab":["n17"]}}, + "pelage":{"N":{"g":"m", + "tab":["n3"]}}, + "pelouse":{"N":{"g":"f", + "tab":["n17"]}}, + "pencher":{"V":{"aux":["av"], + "tab":"v36"}}, + "pendant":{"P":{"tab":["pp"]}}, + "pendre":{"V":{"aux":["av"], + "tab":"v85"}}, + "pendule":{"N":{"g":"m", + "tab":["n3"]}}, + "pénétrer":{"V":{"aux":["av"], + "tab":"v17"}}, + "pénible":{"A":{"tab":["n25"]}}, + "péniblement":{"Adv":{"tab":["av"]}}, + "pénitence":{"N":{"g":"f", + "tab":["n17"]}}, + "pensée":{"N":{"g":"f", + "tab":["n17"]}}, + "penser":{"V":{"aux":["av"], + "tab":"v36"}}, + "pension":{"N":{"g":"f", + "tab":["n17"]}}, + "pensionnaire":{"N":{"g":"x", + "tab":["n25"]}}, + "pensionnat":{"N":{"g":"m", + "tab":["n3"]}}, + "percer":{"V":{"aux":["av"], + "tab":"v0"}}, + "perche":{"N":{"g":"f", + "tab":["n17"]}}, + "percher":{"V":{"aux":["av"], + "tab":"v36"}}, + "perdre":{"V":{"aux":["av"], + "tab":"v85"}}, + "perdrix":{"N":{"g":"f", + "tab":["n16"]}}, + "père":{"N":{"g":"m", + "tab":["n3"]}}, + "perfection":{"N":{"g":"f", + "tab":["n17"]}}, + "péril":{"N":{"g":"m", + "tab":["n3"]}}, + "périlleux":{"A":{"tab":["n54"]}}, + "période":{"N":{"g":"f", + "tab":["n17"]}}, + "périr":{"V":{"aux":["av"], + "tab":"v58"}}, + "perle":{"N":{"g":"f", + "tab":["n17"]}}, + "permettre":{"V":{"aux":["av"], + "tab":"v89"}}, + "permission":{"N":{"g":"f", + "tab":["n17"]}}, + "perpétuel":{"A":{"tab":["n48"]}}, + "perroquet":{"N":{"g":"m", + "tab":["n3"]}}, + "persévérer":{"V":{"aux":["av"], + "tab":"v28"}}, + "personnage":{"N":{"g":"m", + "tab":["n3"]}}, + "personne":{"N":{"g":"f", + "tab":["n17"]}}, + "personnel":{"A":{"tab":["n48"]}}, + "perspective":{"N":{"g":"f", + "tab":["n17"]}}, + "persuader":{"V":{"aux":["av"], + "tab":"v36"}}, + "perte":{"N":{"g":"f", + "tab":["n17"]}}, + "peser":{"V":{"aux":["av"], + "tab":"v26"}}, + "pétale":{"N":{"g":"m", + "tab":["n3"]}}, + "petit":{"A":{"pos":"pre", + "tab":["n28"]}, + "N":{"g":"m", + "tab":["n28"]}}, + "pétrir":{"V":{"aux":["av"], + "tab":"v58"}}, + "peu":{"Adv":{"tab":["av"]}}, + "peuple":{"N":{"g":"m", + "tab":["n3"]}}, + "peupler":{"V":{"aux":["av"], + "tab":"v36"}}, + "peuplier":{"N":{"g":"m", + "tab":["n3"]}}, + "peur":{"N":{"g":"f", + "tab":["n17"]}}, + "peut-être":{"Adv":{"tab":["av"]}}, + "photographie":{"N":{"g":"f", + "tab":["n17"]}}, + "photographier":{"V":{"aux":["av"], + "tab":"v36"}}, + "phrase":{"N":{"g":"f", + "tab":["n17"]}}, + "physique":{"A":{"tab":["n25"]}}, + "piano":{"N":{"g":"m", + "tab":["n3"]}}, + "pic":{"N":{"g":"m", + "tab":["n3"]}}, + "pie":{"N":{"g":"f", + "tab":["n17"]}}, + "pièce":{"N":{"g":"f", + "tab":["n17"]}}, + "pied":{"N":{"g":"m", + "tab":["n3"]}}, + "pierre":{"N":{"g":"f", + "tab":["n17"]}}, + "piété":{"N":{"g":"f", + "tab":["n17"]}}, + "pieux":{"A":{"tab":["n54"]}}, + "pigeon":{"N":{"g":"m", + "tab":["n3"]}}, + "pin":{"N":{"g":"m", + "tab":["n3"]}}, + "pinceau":{"N":{"g":"m", + "tab":["n4"]}}, + "pinson":{"N":{"g":"m", + "tab":["n3"]}}, + "pipe":{"N":{"g":"f", + "tab":["n17"]}}, + "piquer":{"V":{"aux":["av"], + "tab":"v36"}}, + "pire":{"A":{"tab":["n25"]}}, + "pis":{"Adv":{"tab":["av"]}}, + "piste":{"N":{"g":"f", + "tab":["n17"]}}, + "pitié":{"N":{"g":"f", + "tab":["n17"]}}, + "pittoresque":{"A":{"tab":["n25"]}}, + "place":{"N":{"g":"f", + "tab":["n17"]}}, + "placer":{"V":{"aux":["av"], + "tab":"v0"}}, + "plafond":{"N":{"g":"m", + "tab":["n3"]}}, + "plage":{"N":{"g":"f", + "tab":["n17"]}}, + "plaie":{"N":{"g":"f", + "tab":["n17"]}}, + "plaindre":{"V":{"aux":["av"], + "tab":"v97"}}, + "plaine":{"N":{"g":"f", + "tab":["n17"]}}, + "plainte":{"N":{"g":"f", + "tab":["n17"]}}, + "plaintif":{"A":{"tab":["n46"]}}, + "plaire":{"V":{"aux":["av"], + "tab":"v123"}}, + "plaisir":{"N":{"g":"m", + "tab":["n3"]}}, + "plan":{"N":{"g":"m", + "tab":["n3"]}}, + "planche":{"N":{"g":"f", + "tab":["n17"]}}, + "plancher":{"N":{"g":"m", + "tab":["n3"]}}, + "plane":{"N":{"g":"f", + "tab":["n17"]}}, + "planer":{"V":{"aux":["av"], + "tab":"v36"}}, + "plante":{"N":{"g":"f", + "tab":["n17"]}}, + "planter":{"V":{"aux":["av"], + "tab":"v36"}}, + "plaque":{"N":{"g":"f", + "tab":["n17"]}}, + "plat":{"N":{"g":"m", + "tab":["n3"]}}, + "plate":{"N":{"g":"f", + "tab":["n17"]}}, + "plateau":{"N":{"g":"m", + "tab":["n4"]}}, + "plein":{"A":{"tab":["n28"]}}, + "pleur":{"N":{"g":"m", + "tab":["n3"]}}, + "pleurer":{"V":{"aux":["av"], + "tab":"v36"}}, + "pleuvoir":{"V":{"aux":["av"], + "tab":"v79"}}, + "pli":{"N":{"g":"m", + "tab":["n3"]}}, + "plier":{"V":{"aux":["av"], + "tab":"v36"}}, + "plomb":{"N":{"g":"m", + "tab":["n3"]}}, + "plonger":{"V":{"aux":["av"], + "tab":"v3"}}, + "pluie":{"N":{"g":"f", + "tab":["n17"]}}, + "plumage":{"N":{"g":"m", + "tab":["n3"]}}, + "plume":{"N":{"g":"f", + "tab":["n17"]}}, + "plumier":{"N":{"g":"m", + "tab":["n3"]}}, + "plus":{"Adv":{"tab":["av"]}}, + "plutôt":{"Adv":{"tab":["av"]}}, + "poche":{"N":{"g":"f", + "tab":["n17"]}}, + "poêle":{"N":{"g":"f", + "tab":["n17"]}}, + "poésie":{"N":{"g":"f", + "tab":["n17"]}}, + "poète":{"N":{"g":"m", + "tab":["n103"]}}, + "poids":{"N":{"g":"m", + "tab":["n2"]}}, + "poignée":{"N":{"g":"f", + "tab":["n17"]}}, + "poil":{"N":{"g":"m", + "tab":["n3"]}}, + "poing":{"N":{"g":"m", + "tab":["n3"]}}, + "point":{"N":{"g":"m", + "tab":["n3"]}}, + "pointe":{"N":{"g":"f", + "tab":["n17"]}}, + "pointu":{"A":{"tab":["n28"]}}, + "poire":{"N":{"g":"f", + "tab":["n17"]}}, + "poireau":{"N":{"g":"m", + "tab":["n4"]}}, + "poirier":{"N":{"g":"m", + "tab":["n3"]}}, + "pois":{"N":{"g":"m", + "tab":["n2"]}}, + "poisson":{"N":{"g":"m", + "tab":["n3"]}}, + "poitrine":{"N":{"g":"f", + "tab":["n17"]}}, + "poli":{"A":{"tab":["n28"]}}, + "police":{"N":{"g":"f", + "tab":["n17"]}}, + "politesse":{"N":{"g":"f", + "tab":["n17"]}}, + "politique":{"N":{"g":"f", + "tab":["n17"]}}, + "pomme":{"N":{"g":"f", + "tab":["n17"]}}, + "pommier":{"N":{"g":"m", + "tab":["n3"]}}, + "pompe":{"N":{"g":"f", + "tab":["n17"]}}, + "pompier":{"N":{"g":"m", + "tab":["n3"]}}, + "pondre":{"V":{"aux":["av"], + "tab":"v85"}}, + "pont":{"N":{"g":"m", + "tab":["n3"]}}, + "porc":{"N":{"g":"m", + "tab":["n3"]}}, + "port":{"N":{"g":"m", + "tab":["n3"]}}, + "porte":{"N":{"g":"f", + "tab":["n17"]}}, + "porte-plume":{"N":{"g":"m", + "tab":["n2"]}}, + "portée":{"N":{"g":"f", + "tab":["n17"]}}, + "portefeuille":{"N":{"g":"m", + "tab":["n3"]}}, + "porter":{"V":{"aux":["av"], + "tab":"v36"}}, + "porteur":{"N":{"g":"m", + "tab":["n55"]}}, + "portière":{"N":{"g":"f", + "tab":["n17"]}}, + "portrait":{"N":{"g":"m", + "tab":["n3"]}}, + "poser":{"V":{"aux":["av"], + "tab":"v36"}}, + "position":{"N":{"g":"f", + "tab":["n17"]}}, + "posséder":{"V":{"aux":["av"], + "tab":"v30"}}, + "possession":{"N":{"g":"f", + "tab":["n17"]}}, + "possible":{"A":{"tab":["n25"]}}, + "postal":{"A":{"tab":["n47"]}}, + "poste":{"N":{"g":"m", + "tab":["n3"]}}, + "pot":{"N":{"g":"m", + "tab":["n3"]}}, + "potager":{"N":{"g":"m", + "tab":["n3"]}}, + "poteau":{"N":{"g":"m", + "tab":["n4"]}}, + "poudre":{"N":{"g":"f", + "tab":["n17"]}}, + "poulailler":{"N":{"g":"m", + "tab":["n3"]}}, + "poulain":{"N":{"g":"m", + "tab":["n3"]}}, + "poule":{"N":{"g":"f", + "tab":["n17"]}}, + "poulet":{"N":{"g":"m", + "tab":["n3"]}}, + "poumon":{"N":{"g":"m", + "tab":["n3"]}}, + "poupée":{"N":{"g":"f", + "tab":["n17"]}}, + "pour":{"P":{"tab":["pp"]}}, + "pourpre":{"A":{"tab":["n25"]}}, + "pourrir":{"V":{"aux":["aê"], + "tab":"v58"}}, + "poursuite":{"N":{"g":"f", + "tab":["n17"]}}, + "poursuivre":{"V":{"aux":["av"], + "tab":"v99"}}, + "pourtant":{"Adv":{"tab":["av"]}}, + "pourvoir":{"V":{"aux":["av"], + "tab":"v82"}}, + "pousser":{"V":{"aux":["av"], + "tab":"v36"}}, + "poussière":{"N":{"g":"f", + "tab":["n17"]}}, + "poussin":{"N":{"g":"m", + "tab":["n3"]}}, + "poutre":{"N":{"g":"f", + "tab":["n17"]}}, + "pouvoir":{"V":{"aux":["av"], + "tab":"v71"}}, + "prairie":{"N":{"g":"f", + "tab":["n17"]}}, + "pratique":{"A":{"tab":["n25"]}}, + "pratiquer":{"V":{"aux":["av"], + "tab":"v36"}}, + "pré":{"N":{"g":"m", + "tab":["n3"]}}, + "préau":{"N":{"g":"m", + "tab":["n4"]}}, + "précaution":{"N":{"g":"f", + "tab":["n17"]}}, + "précédent":{"A":{"tab":["n28"]}}, + "précéder":{"V":{"aux":["av"], + "tab":"v30"}}, + "prêcher":{"V":{"aux":["av"], + "tab":"v36"}}, + "précieux":{"A":{"tab":["n54"]}}, + "précipiter":{"V":{"aux":["av"], + "tab":"v36"}}, + "précisément":{"Adv":{"tab":["av"]}}, + "préférence":{"N":{"g":"f", + "tab":["n17"]}}, + "préférer":{"V":{"aux":["av"], + "tab":"v28"}}, + "premier":{"A":{"pos":"pre", + "tab":["n39"]}}, + "prendre":{"V":{"aux":["av"], + "tab":"v90"}}, + "préparatif":{"N":{"g":"m", + "tab":["n3"]}}, + "préparation":{"N":{"g":"f", + "tab":["n17"]}}, + "préparer":{"V":{"aux":["av"], + "tab":"v36"}}, + "près":{"Adv":{"tab":["av"]}}, + "présence":{"N":{"g":"f", + "tab":["n17"]}}, + "présent":{"A":{"tab":["n28"]}}, + "présenter":{"V":{"aux":["av"], + "tab":"v36"}}, + "préserver":{"V":{"aux":["av"], + "tab":"v36"}}, + "président":{"N":{"g":"m", + "tab":["n28"]}}, + "présidente":{"N":{"g":"f", + "tab":["n17"]}}, + "presque":{"Adv":{"tab":["av"]}}, + "presser":{"V":{"aux":["av"], + "tab":"v36"}}, + "prêt":{"A":{"tab":["n28"]}}, + "prétendre":{"V":{"aux":["av"], + "tab":"v85"}}, + "prêter":{"V":{"aux":["av"], + "tab":"v36"}}, + "prêtre":{"N":{"g":"m", + "tab":["n3"]}}, + "preuve":{"N":{"g":"f", + "tab":["n17"]}}, + "prévenir":{"V":{"aux":["av"], + "tab":"v52"}}, + "prévoir":{"V":{"aux":["av"], + "tab":"v73"}}, + "prier":{"V":{"aux":["av"], + "tab":"v36"}}, + "prière":{"N":{"g":"f", + "tab":["n17"]}}, + "primaire":{"A":{"tab":["n25"]}}, + "prime":{"N":{"g":"f", + "tab":["n17"]}}, + "primevère":{"N":{"g":"f", + "tab":["n17"]}}, + "prince":{"N":{"g":"m", + "tab":["n3"]}}, + "princesse":{"N":{"g":"f", + "tab":["n17"]}}, + "principal":{"A":{"tab":["n47"]}}, + "principalement":{"Adv":{"tab":["av"]}}, + "principe":{"N":{"g":"m", + "tab":["n3"]}}, + "printanier":{"A":{"tab":["n39"]}}, + "printemps":{"N":{"g":"m", + "tab":["n2"]}}, + "prise":{"N":{"g":"f", + "tab":["n17"]}}, + "prison":{"N":{"g":"f", + "tab":["n17"]}}, + "prisonnier":{"N":{"g":"m", + "tab":["n39"]}}, + "privation":{"N":{"g":"f", + "tab":["n17"]}}, + "priver":{"V":{"aux":["av"], + "tab":"v36"}}, + "prix":{"N":{"g":"m", + "tab":["n2"]}}, + "probablement":{"Adv":{"tab":["av"]}}, + "problème":{"N":{"g":"m", + "tab":["n3"]}}, + "procéder":{"V":{"aux":["av"], + "tab":"v30"}}, + "procession":{"N":{"g":"f", + "tab":["n17"]}}, + "prochain":{"A":{"tab":["n28"]}}, + "proche":{"A":{"tab":["n25"]}}, + "proclamer":{"V":{"aux":["av"], + "tab":"v36"}}, + "procurer":{"V":{"aux":["av"], + "tab":"v36"}}, + "procureur":{"N":{"g":"m", + "tab":["n3"]}}, + "prodigieux":{"A":{"tab":["n54"]}}, + "prodiguer":{"V":{"aux":["av"], + "tab":"v36"}}, + "production":{"N":{"g":"f", + "tab":["n17"]}}, + "produire":{"V":{"aux":["av"], + "tab":"v113"}}, + "produit":{"N":{"g":"m", + "tab":["n3"]}}, + "professeur":{"N":{"g":"m", + "tab":["n3"]}}, + "profession":{"N":{"g":"f", + "tab":["n17"]}}, + "profit":{"N":{"g":"m", + "tab":["n3"]}}, + "profiter":{"V":{"aux":["av"], + "tab":"v36"}}, + "profond":{"A":{"tab":["n28"]}}, + "profondément":{"Adv":{"tab":["av"]}}, + "profondeur":{"N":{"g":"f", + "tab":["n17"]}}, + "programme":{"N":{"g":"m", + "tab":["n3"]}}, + "progrès":{"N":{"g":"m", + "tab":["n2"]}}, + "proie":{"N":{"g":"f", + "tab":["n17"]}}, + "projet":{"N":{"g":"m", + "tab":["n3"]}}, + "projeter":{"V":{"aux":["av"], + "tab":"v10"}}, + "prolonger":{"V":{"aux":["av"], + "tab":"v3"}}, + "promenade":{"N":{"g":"f", + "tab":["n17"]}}, + "promener":{"V":{"aux":["av"], + "tab":"v24"}}, + "promeneur":{"N":{"g":"m", + "tab":["n55"]}}, + "promesse":{"N":{"g":"f", + "tab":["n17"]}}, + "promettre":{"V":{"aux":["av"], + "tab":"v89"}}, + "promotion":{"N":{"g":"f", + "tab":["n17"]}}, + "prompt":{"A":{"tab":["n28"]}}, + "prononcer":{"V":{"aux":["av"], + "tab":"v0"}}, + "propice":{"A":{"tab":["n25"]}}, + "propos":{"N":{"g":"m", + "tab":["n2"]}}, + "proposer":{"V":{"aux":["av"], + "tab":"v36"}}, + "proposition":{"N":{"g":"f", + "tab":["n17"]}}, + "propre":{"A":{"tab":["n25"]}}, + "proprement":{"Adv":{"tab":["av"]}}, + "propreté":{"N":{"g":"f", + "tab":["n17"]}}, + "propriétaire":{"N":{"g":"x", + "tab":["n25"]}}, + "propriété":{"N":{"g":"f", + "tab":["n17"]}}, + "prospérité":{"N":{"g":"f", + "tab":["n17"]}}, + "protecteur":{"N":{"g":"m", + "tab":["n56"]}}, + "protection":{"N":{"g":"f", + "tab":["n17"]}}, + "protéger":{"V":{"aux":["av"], + "tab":"v35"}}, + "prouver":{"V":{"aux":["av"], + "tab":"v36"}}, + "provenir":{"V":{"aux":["êt"], + "tab":"v52"}}, + "proverbe":{"N":{"g":"m", + "tab":["n3"]}}, + "providence":{"N":{"g":"f", + "tab":["n17"]}}, + "provision":{"N":{"g":"f", + "tab":["n17"]}}, + "provoquer":{"V":{"aux":["av"], + "tab":"v36"}}, + "prudence":{"N":{"g":"f", + "tab":["n17"]}}, + "prudent":{"A":{"tab":["n28"]}}, + "public":{"A":{"tab":["n60"]}}, + "puis":{"Adv":{"tab":["av"]}}, + "puissance":{"N":{"g":"f", + "tab":["n17"]}}, + "puissant":{"A":{"tab":["n28"]}}, + "puits":{"N":{"g":"m", + "tab":["n2"]}}, + "punir":{"V":{"aux":["av"], + "tab":"v58"}}, + "punition":{"N":{"g":"f", + "tab":["n17"]}}, + "pupitre":{"N":{"g":"m", + "tab":["n3"]}}, + "pur":{"A":{"tab":["n28"]}}, + "purifier":{"V":{"aux":["av"], + "tab":"v36"}}, + "quai":{"N":{"g":"m", + "tab":["n3"]}}, + "qualité":{"N":{"g":"f", + "tab":["n17"]}}, + "quantité":{"N":{"g":"f", + "tab":["n17"]}}, + "quart":{"N":{"g":"m", + "tab":["n3"]}}, + "quartier":{"N":{"g":"m", + "tab":["n3"]}}, + "que":{"Pro":{"tab":["pn31"]}}, + "quelconque":{"A":{"tab":["n25"]}}, + "quelquefois":{"Adv":{"tab":["av"]}}, + "question":{"N":{"g":"f", + "tab":["n17"]}}, + "queue":{"N":{"g":"f", + "tab":["n17"]}}, + "qui":{"Pro":{"tab":["pn30"]}}, + "quinzaine":{"N":{"g":"f", + "tab":["n17"]}}, + "quitter":{"V":{"aux":["av"], + "tab":"v36"}}, + "quoi":{"Pro":{"g":"n", + "tab":["pn29"]}}, + "quotidien":{"A":{"tab":["n49"]}}, + "raccommoder":{"V":{"aux":["av"], + "tab":"v36"}}, + "raccourcir":{"V":{"aux":["av"], + "tab":"v58"}}, + "race":{"N":{"g":"f", + "tab":["n17"]}}, + "racine":{"N":{"g":"f", + "tab":["n17"]}}, + "raconter":{"V":{"aux":["av"], + "tab":"v36"}}, + "radieux":{"A":{"tab":["n54"]}}, + "rafraîchir":{"V":{"aux":["av"], + "tab":"v58"}}, + "rage":{"N":{"g":"f", + "tab":["n17"]}}, + "raide":{"A":{"tab":["n25"]}}, + "raisin":{"N":{"g":"m", + "tab":["n3"]}}, + "raison":{"N":{"g":"f", + "tab":["n17"]}}, + "raisonnable":{"A":{"tab":["n25"]}}, + "ralentir":{"V":{"aux":["av"], + "tab":"v58"}}, + "ramage":{"N":{"g":"m", + "tab":["n3"]}}, + "ramasser":{"V":{"aux":["av"], + "tab":"v36"}}, + "rame":{"N":{"g":"f", + "tab":["n17"]}}, + "rameau":{"N":{"g":"m", + "tab":["n4"]}}, + "ramener":{"V":{"aux":["av"], + "tab":"v24"}}, + "randonnée":{"N":{"g":"f", + "tab":["n17"]}}, + "rang":{"N":{"g":"m", + "tab":["n3"]}}, + "rangée":{"N":{"g":"f", + "tab":["n17"]}}, + "ranger":{"V":{"aux":["av"], + "tab":"v3"}}, + "ranimer":{"V":{"aux":["av"], + "tab":"v36"}}, + "rapide":{"A":{"tab":["n25"]}}, + "rapidement":{"Adv":{"tab":["av"]}}, + "rapidité":{"N":{"g":"f", + "tab":["n17"]}}, + "rapiécer":{"V":{"aux":["av"], + "tab":"v0"}}, + "rappeler":{"V":{"aux":["av"], + "tab":"v7"}}, + "rapport":{"N":{"g":"m", + "tab":["n3"]}}, + "rapporter":{"V":{"aux":["av"], + "tab":"v36"}}, + "rapprocher":{"V":{"aux":["av"], + "tab":"v36"}}, + "rare":{"A":{"tab":["n25"]}}, + "rarement":{"Adv":{"tab":["av"]}}, + "raser":{"V":{"aux":["av"], + "tab":"v36"}}, + "rassembler":{"V":{"aux":["av"], + "tab":"v36"}}, + "rassurer":{"V":{"aux":["av"], + "tab":"v36"}}, + "rat":{"N":{"g":"m", + "tab":["n3"]}}, + "rater":{"V":{"aux":["av"], + "tab":"v36"}}, + "rattraper":{"V":{"aux":["av"], + "tab":"v36"}}, + "ravage":{"N":{"g":"m", + "tab":["n3"]}}, + "ravin":{"N":{"g":"m", + "tab":["n3"]}}, + "ravir":{"V":{"aux":["av"], + "tab":"v58"}}, + "ravissant":{"A":{"tab":["n28"]}}, + "rayon":{"N":{"g":"m", + "tab":["n3"]}}, + "rayonner":{"V":{"aux":["av"], + "tab":"v36"}}, + "réaliser":{"V":{"aux":["av"], + "tab":"v36"}}, + "réalité":{"N":{"g":"f", + "tab":["n17"]}}, + "réception":{"N":{"g":"f", + "tab":["n17"]}}, + "recevoir":{"V":{"aux":["av"], + "tab":"v63"}}, + "réchauffer":{"V":{"aux":["av"], + "tab":"v36"}}, + "recherche":{"N":{"g":"f", + "tab":["n17"]}}, + "rechercher":{"V":{"aux":["av"], + "tab":"v36"}}, + "récit":{"N":{"g":"m", + "tab":["n3"]}}, + "réciter":{"V":{"aux":["av"], + "tab":"v36"}}, + "réclamer":{"V":{"aux":["av"], + "tab":"v36"}}, + "récolte":{"N":{"g":"f", + "tab":["n17"]}}, + "récolter":{"V":{"aux":["av"], + "tab":"v36"}}, + "recommandation":{"N":{"g":"f", + "tab":["n17"]}}, + "recommander":{"V":{"aux":["av"], + "tab":"v36"}}, + "recommencer":{"V":{"aux":["av"], + "tab":"v0"}}, + "récompense":{"N":{"g":"f", + "tab":["n17"]}}, + "récompenser":{"V":{"aux":["av"], + "tab":"v36"}}, + "reconduire":{"V":{"aux":["av"], + "tab":"v113"}}, + "réconforter":{"V":{"aux":["av"], + "tab":"v36"}}, + "reconnaissance":{"N":{"g":"f", + "tab":["n17"]}}, + "reconnaissant":{"A":{"tab":["n28"]}}, + "reconnaître":{"V":{"aux":["av"], + "tab":"v101"}}, + "recourir":{"V":{"aux":["av"], + "tab":"v57"}}, + "recours":{"N":{"g":"m", + "tab":["n2"]}}, + "recouvrir":{"V":{"aux":["av"], + "tab":"v44"}}, + "récréation":{"N":{"g":"f", + "tab":["n17"]}}, + "recueillir":{"V":{"aux":["av"], + "tab":"v51"}}, + "reculer":{"V":{"aux":["av"], + "tab":"v36"}}, + "rédaction":{"N":{"g":"f", + "tab":["n17"]}}, + "redescendre":{"V":{"aux":["aê"], + "tab":"v85"}}, + "redevenir":{"V":{"aux":["êt"], + "tab":"v52"}}, + "redire":{"V":{"aux":["av"], + "tab":"v117"}}, + "redoubler":{"V":{"aux":["av"], + "tab":"v36"}}, + "redoutable":{"A":{"tab":["n25"]}}, + "redouter":{"V":{"aux":["av"], + "tab":"v36"}}, + "redresser":{"V":{"aux":["av"], + "tab":"v36"}}, + "réduire":{"V":{"aux":["av"], + "tab":"v113"}}, + "réel":{"A":{"tab":["n48"]}}, + "réellement":{"Adv":{"tab":["av"]}}, + "refaire":{"V":{"aux":["av"], + "tab":"v124"}}, + "réfectoire":{"N":{"g":"m", + "tab":["n3"]}}, + "refermer":{"V":{"aux":["av"], + "tab":"v36"}}, + "réfléchir":{"V":{"aux":["av"], + "tab":"v58"}}, + "reflet":{"N":{"g":"m", + "tab":["n3"]}}, + "refléter":{"V":{"aux":["av"], + "tab":"v22"}}, + "réflexion":{"N":{"g":"f", + "tab":["n17"]}}, + "réformer":{"V":{"aux":["av"], + "tab":"v36"}}, + "refrain":{"N":{"g":"m", + "tab":["n3"]}}, + "refroidir":{"V":{"aux":["av"], + "tab":"v58"}}, + "refuge":{"N":{"g":"m", + "tab":["n3"]}}, + "réfugier":{"V":{"aux":["êt"], + "tab":"v36"}}, + "refuser":{"V":{"aux":["av"], + "tab":"v36"}}, + "regagner":{"V":{"aux":["av"], + "tab":"v36"}}, + "régaler":{"V":{"aux":["av"], + "tab":"v36"}}, + "regard":{"N":{"g":"m", + "tab":["n3"]}}, + "regarder":{"V":{"aux":["av"], + "tab":"v36"}}, + "régime":{"N":{"g":"m", + "tab":["n3"]}}, + "régiment":{"N":{"g":"m", + "tab":["n3"]}}, + "région":{"N":{"g":"f", + "tab":["n17"]}}, + "règle":{"N":{"g":"f", + "tab":["n17"]}}, + "régler":{"V":{"aux":["av"], + "tab":"v18"}}, + "règne":{"N":{"g":"m", + "tab":["n3"]}}, + "régner":{"V":{"aux":["av"], + "tab":"v19"}}, + "regret":{"N":{"g":"m", + "tab":["n3"]}}, + "regretter":{"V":{"aux":["av"], + "tab":"v36"}}, + "régulier":{"A":{"tab":["n39"]}}, + "régulièrement":{"Adv":{"tab":["av"]}}, + "reine":{"N":{"g":"f", + "tab":["n17"]}}, + "rejeter":{"V":{"aux":["av"], + "tab":"v10"}}, + "rejoindre":{"V":{"aux":["av"], + "tab":"v97"}}, + "réjouir":{"V":{"aux":["av"], + "tab":"v58"}}, + "relatif":{"A":{"tab":["n46"]}}, + "relation":{"N":{"g":"f", + "tab":["n17"]}}, + "relativement":{"Adv":{"tab":["av"]}}, + "relever":{"V":{"aux":["av"], + "tab":"v25"}}, + "religieux":{"A":{"tab":["n54"]}}, + "religion":{"N":{"g":"f", + "tab":["n17"]}}, + "relire":{"V":{"aux":["av"], + "tab":"v120"}}, + "remarquable":{"A":{"tab":["n25"]}}, + "remarque":{"N":{"g":"f", + "tab":["n17"]}}, + "remarquer":{"V":{"aux":["av"], + "tab":"v36"}}, + "remède":{"N":{"g":"m", + "tab":["n3"]}}, + "remerciement":{"N":{"g":"m", + "tab":["n3"]}}, + "remercier":{"V":{"aux":["av"], + "tab":"v36"}}, + "remettre":{"V":{"aux":["av"], + "tab":"v89"}}, + "remise":{"N":{"g":"f", + "tab":["n17"]}}, + "remonter":{"V":{"aux":["av"], + "tab":"v36"}}, + "remords":{"N":{"g":"m", + "tab":["n2"]}}, + "remplacer":{"V":{"aux":["av"], + "tab":"v0"}}, + "remplir":{"V":{"aux":["av"], + "tab":"v58"}}, + "remporter":{"V":{"aux":["av"], + "tab":"v36"}}, + "remuer":{"V":{"aux":["av"], + "tab":"v36"}}, + "renaître":{"V":{"aux":["intr"], + "tab":"v105"}}, + "renard":{"N":{"g":"m", + "tab":["n3"]}}, + "rencontre":{"N":{"g":"f", + "tab":["n17"]}}, + "rencontrer":{"V":{"aux":["av"], + "tab":"v36"}}, + "rendez-vous":{"N":{"g":"m", + "tab":["n2"]}}, + "rendre":{"V":{"aux":["av"], + "tab":"v85"}}, + "renfermer":{"V":{"aux":["av"], + "tab":"v36"}}, + "renoncer":{"V":{"aux":["av"], + "tab":"v0"}}, + "renoncule":{"N":{"g":"f", + "tab":["n17"]}}, + "renouveau":{"N":{"g":"m", + "tab":["n4"]}}, + "renouveler":{"V":{"aux":["av"], + "tab":"v7"}}, + "renouvellement":{"N":{"g":"m", + "tab":["n3"]}}, + "renseignement":{"N":{"g":"m", + "tab":["n3"]}}, + "renseigner":{"V":{"aux":["av"], + "tab":"v36"}}, + "rentrée":{"N":{"g":"f", + "tab":["n17"]}}, + "rentrer":{"V":{"aux":["aê"], + "tab":"v36"}}, + "renverser":{"V":{"aux":["av"], + "tab":"v36"}}, + "renvoyer":{"V":{"aux":["av"], + "tab":"v134"}}, + "répandre":{"V":{"aux":["av"], + "tab":"v85"}}, + "reparaître":{"V":{"aux":["av"], + "tab":"v101"}}, + "réparer":{"V":{"aux":["av"], + "tab":"v36"}}, + "répartir":{"V":{"aux":["av"], + "tab":"v58"}}, + "repas":{"N":{"g":"m", + "tab":["n2"]}}, + "repasser":{"V":{"aux":["av"], + "tab":"v36"}}, + "repentir":{"V":{"aux":["êt"], + "tab":"v46"}}, + "répéter":{"V":{"aux":["av"], + "tab":"v22"}}, + "replier":{"V":{"aux":["av"], + "tab":"v36"}}, + "répondre":{"V":{"aux":["av"], + "tab":"v85"}}, + "réponse":{"N":{"g":"f", + "tab":["n17"]}}, + "reporter":{"V":{"aux":["av"], + "tab":"v36"}}, + "repos":{"N":{"g":"m", + "tab":["n2"]}}, + "reposer":{"V":{"aux":["av"], + "tab":"v36"}}, + "repousser":{"V":{"aux":["av"], + "tab":"v36"}}, + "reprendre":{"V":{"aux":["av"], + "tab":"v90"}}, + "représentant":{"N":{"g":"m", + "tab":["n3"]}}, + "représentation":{"N":{"g":"f", + "tab":["n17"]}}, + "représenter":{"V":{"aux":["av"], + "tab":"v36"}}, + "reprise":{"N":{"g":"f", + "tab":["n17"]}}, + "reproche":{"N":{"g":"m", + "tab":["n3"]}}, + "reprocher":{"V":{"aux":["av"], + "tab":"v36"}}, + "réserve":{"N":{"g":"f", + "tab":["n17"]}}, + "réserver":{"V":{"aux":["av"], + "tab":"v36"}}, + "résigner":{"V":{"aux":["av"], + "tab":"v36"}}, + "résistance":{"N":{"g":"f", + "tab":["n17"]}}, + "résister":{"V":{"aux":["av"], + "tab":"v36"}}, + "résolution":{"N":{"g":"f", + "tab":["n17"]}}, + "résonner":{"V":{"aux":["av"], + "tab":"v36"}}, + "résoudre":{"V":{"aux":["av"], + "tab":"v94"}}, + "respect":{"N":{"g":"m", + "tab":["n3"]}}, + "respecter":{"V":{"aux":["av"], + "tab":"v36"}}, + "respectueux":{"A":{"tab":["n54"]}}, + "respiration":{"N":{"g":"f", + "tab":["n17"]}}, + "respirer":{"V":{"aux":["av"], + "tab":"v36"}}, + "resplendir":{"V":{"aux":["av"], + "tab":"v58"}}, + "ressembler":{"V":{"aux":["av"], + "tab":"v36"}}, + "ressentir":{"V":{"aux":["av"], + "tab":"v46"}}, + "ressort":{"N":{"g":"m", + "tab":["n3"]}}, + "ressource":{"N":{"g":"f", + "tab":["n17"]}}, + "reste":{"N":{"g":"m", + "tab":["n3"]}}, + "rester":{"V":{"aux":["êt"], + "tab":"v36"}}, + "résultat":{"N":{"g":"m", + "tab":["n3"]}}, + "rétablir":{"V":{"aux":["av"], + "tab":"v58"}}, + "retard":{"N":{"g":"m", + "tab":["n3"]}}, + "retardataire":{"N":{"g":"m", + "tab":["n25"]}}, + "retenir":{"V":{"aux":["av"], + "tab":"v52"}}, + "retentir":{"V":{"aux":["av"], + "tab":"v58"}}, + "retirer":{"V":{"aux":["av"], + "tab":"v36"}}, + "retomber":{"V":{"aux":["av"], + "tab":"v36"}}, + "retour":{"N":{"g":"m", + "tab":["n3"]}}, + "retourner":{"V":{"aux":["êt"], + "tab":"v36"}}, + "retraite":{"N":{"g":"f", + "tab":["n17"]}}, + "retrousser":{"V":{"aux":["av"], + "tab":"v36"}}, + "retrouver":{"V":{"aux":["av"], + "tab":"v36"}}, + "réunion":{"N":{"g":"f", + "tab":["n17"]}}, + "réunir":{"V":{"aux":["av"], + "tab":"v58"}}, + "réussir":{"V":{"aux":["av"], + "tab":"v58"}}, + "rêve":{"N":{"g":"m", + "tab":["n3"]}}, + "réveil":{"N":{"g":"m", + "tab":["n3"]}}, + "réveiller":{"V":{"aux":["av"], + "tab":"v36"}}, + "révéler":{"V":{"aux":["av"], + "tab":"v16"}}, + "revenir":{"V":{"aux":["êt"], + "tab":"v52"}}, + "rêver":{"V":{"aux":["av"], + "tab":"v36"}}, + "reverdir":{"V":{"aux":["av"], + "tab":"v58"}}, + "revêtir":{"V":{"aux":["av"], + "tab":"v56"}}, + "revivre":{"V":{"aux":["av"], + "tab":"v100"}}, + "revoir":{"V":{"aux":["av"], + "tab":"v72"}}, + "revue":{"N":{"g":"f", + "tab":["n17"]}}, + "rez-de-chaussée":{"N":{"g":"m", + "tab":["n2"]}}, + "rhume":{"N":{"g":"m", + "tab":["n3"]}}, + "riant":{"A":{"tab":["n28"]}}, + "riche":{"A":{"tab":["n25"]}}, + "richesse":{"N":{"g":"f", + "tab":["n17"]}}, + "rideau":{"N":{"g":"m", + "tab":["n4"]}}, + "rider":{"V":{"aux":["av"], + "tab":"v36"}}, + "rien":{"Adv":{"tab":["av"]}}, + "rigole":{"N":{"g":"f", + "tab":["n17"]}}, + "rigoureux":{"A":{"tab":["n54"]}}, + "rire":{"V":{"aux":["av"], + "tab":"v107"}}, + "risque":{"N":{"g":"m", + "tab":["n3"]}}, + "risquer":{"V":{"aux":["av"], + "tab":"v36"}}, + "rive":{"N":{"g":"f", + "tab":["n17"]}}, + "rivière":{"N":{"g":"f", + "tab":["n17"]}}, + "riz":{"N":{"g":"m", + "tab":["n2"]}}, + "robe":{"N":{"g":"f", + "tab":["n17"]}}, + "robuste":{"A":{"tab":["n25"]}}, + "rocher":{"N":{"g":"m", + "tab":["n3"]}}, + "rôder":{"V":{"aux":["av"], + "tab":"v36"}}, + "roi":{"N":{"g":"m", + "tab":["n3"]}}, + "rôle":{"N":{"g":"m", + "tab":["n3"]}}, + "romain":{"A":{"tab":["n28"]}}, + "rompre":{"V":{"aux":["av"], + "tab":"v91"}}, + "ronce":{"N":{"g":"f", + "tab":["n17"]}}, + "rond":{"A":{"tab":["n28"]}}, + "ronde":{"N":{"g":"f", + "tab":["n17"]}}, + "ronger":{"V":{"aux":["av"], + "tab":"v3"}}, + "ronronner":{"V":{"aux":["av"], + "tab":"v36"}}, + "rose":{"N":{"g":"f", + "tab":["n17"]}}, + "roseau":{"N":{"g":"m", + "tab":["n4"]}}, + "rosée":{"N":{"g":"f", + "tab":["n17"]}}, + "rosier":{"N":{"g":"m", + "tab":["n3"]}}, + "rossignol":{"N":{"g":"m", + "tab":["n3"]}}, + "rôti":{"N":{"g":"m", + "tab":["n3"]}}, + "roue":{"N":{"g":"f", + "tab":["n17"]}}, + "rouge":{"A":{"tab":["n25"]}}, + "rougir":{"V":{"aux":["av"], + "tab":"v58"}}, + "rouiller":{"V":{"aux":["av"], + "tab":"v36"}}, + "rouleau":{"N":{"g":"m", + "tab":["n4"]}}, + "rouler":{"V":{"aux":["av"], + "tab":"v36"}}, + "roulotte":{"N":{"g":"f", + "tab":["n17"]}}, + "route":{"N":{"g":"f", + "tab":["n17"]}}, + "roux":{"A":{"tab":["n53"]}}, + "royal":{"A":{"tab":["n47"]}}, + "royaume":{"N":{"g":"m", + "tab":["n3"]}}, + "ruban":{"N":{"g":"m", + "tab":["n3"]}}, + "ruche":{"N":{"g":"f", + "tab":["n17"]}}, + "rude":{"A":{"tab":["n25"]}}, + "rue":{"N":{"g":"f", + "tab":["n17"]}}, + "ruelle":{"N":{"g":"f", + "tab":["n17"]}}, + "ruine":{"N":{"g":"m", + "tab":["n17"]}}, + "ruiner":{"V":{"aux":["av"], + "tab":"v36"}}, + "ruisseau":{"N":{"g":"m", + "tab":["n4"]}}, + "ruisseler":{"V":{"aux":["av"], + "tab":"v7"}}, + "ruisselet":{"N":{"g":"m", + "tab":["n3"]}}, + "rusé":{"A":{"tab":["n28"]}}, + "rustique":{"A":{"tab":["n25"]}}, + "sable":{"N":{"g":"m", + "tab":["n3"]}}, + "sabot":{"N":{"g":"m", + "tab":["n3"]}}, + "sabre":{"N":{"g":"m", + "tab":["n3"]}}, + "sac":{"N":{"g":"m", + "tab":["n3"]}}, + "sacoche":{"N":{"g":"f", + "tab":["n17"]}}, + "sacré":{"A":{"tab":["n28"]}}, + "sacrement":{"N":{"g":"m", + "tab":["n3"]}}, + "sacrifice":{"N":{"g":"m", + "tab":["n3"]}}, + "sacrifier":{"V":{"aux":["av"], + "tab":"v36"}}, + "sage":{"A":{"tab":["n25"]}}, + "sagement":{"Adv":{"tab":["av"]}}, + "sagesse":{"N":{"g":"f", + "tab":["n17"]}}, + "saigner":{"V":{"aux":["av"], + "tab":"v36"}}, + "sain":{"A":{"tab":["n28"]}}, + "saint":{"A":{"tab":["n28"]}}, + "saisir":{"V":{"aux":["av"], + "tab":"v58"}}, + "saison":{"N":{"g":"f", + "tab":["n17"]}}, + "salade":{"N":{"g":"f", + "tab":["n17"]}}, + "salaire":{"N":{"g":"m", + "tab":["n3"]}}, + "sale":{"A":{"tab":["n25"]}}, + "salir":{"V":{"aux":["av"], + "tab":"v58"}}, + "salle":{"N":{"g":"f", + "tab":["n17"]}}, + "salon":{"N":{"g":"m", + "tab":["n3"]}}, + "saluer":{"V":{"aux":["av"], + "tab":"v36"}}, + "salut":{"N":{"g":"m", + "tab":["n3"]}}, + "salutation":{"N":{"g":"f", + "tab":["n17"]}}, + "samedi":{"N":{"g":"m", + "tab":["n3"]}}, + "sang":{"N":{"g":"m", + "tab":["n3"]}}, + "sanglot":{"N":{"g":"m", + "tab":["n3"]}}, + "sans":{"P":{"tab":["pp"]}}, + "santé":{"N":{"g":"f", + "tab":["n17"]}}, + "sapin":{"N":{"g":"m", + "tab":["n3"]}}, + "satin":{"N":{"g":"m", + "tab":["n3"]}}, + "satisfaction":{"N":{"g":"f", + "tab":["n17"]}}, + "satisfaire":{"V":{"aux":["av"], + "tab":"v124"}}, + "satisfait":{"A":{"tab":["n28"]}}, + "sauce":{"N":{"g":"f", + "tab":["n17"]}}, + "sauf":{"P":{"tab":["pp"]}}, + "saule":{"N":{"g":"m", + "tab":["n3"]}}, + "saut":{"N":{"g":"m", + "tab":["n3"]}}, + "sauter":{"V":{"aux":["av"], + "tab":"v36"}}, + "sautiller":{"V":{"aux":["av"], + "tab":"v36"}}, + "sauvage":{"A":{"tab":["n25"]}}, + "sauver":{"V":{"aux":["av"], + "tab":"v36"}}, + "savant":{"N":{"g":"m", + "tab":["n28"]}}, + "savoir":{"V":{"aux":["av"], + "tab":"v67"}}, + "savon":{"N":{"g":"m", + "tab":["n3"]}}, + "savourer":{"V":{"aux":["av"], + "tab":"v36"}}, + "savoureux":{"A":{"tab":["n54"]}}, + "scène":{"N":{"g":"f", + "tab":["n17"]}}, + "science":{"N":{"g":"f", + "tab":["n17"]}}, + "scier":{"V":{"aux":["av"], + "tab":"v36"}}, + "scintiller":{"V":{"aux":["av"], + "tab":"v36"}}, + "scolaire":{"A":{"tab":["n25"]}}, + "séance":{"N":{"g":"f", + "tab":["n17"]}}, + "seau":{"N":{"g":"m", + "tab":["n4"]}}, + "sec":{"A":{"tab":["n37"]}}, + "sécher":{"V":{"aux":["av"], + "tab":"v27"}}, + "seconde":{"N":{"g":"f", + "tab":["n17"]}}, + "secouer":{"V":{"aux":["av"], + "tab":"v36"}}, + "secourir":{"V":{"aux":["av"], + "tab":"v57"}}, + "secours":{"N":{"g":"m", + "tab":["n2"]}}, + "secret":{"N":{"g":"m", + "tab":["n3"]}}, + "sécurité":{"N":{"g":"f", + "tab":["n17"]}}, + "seigneur":{"N":{"g":"m", + "tab":["n3"]}}, + "sein":{"N":{"g":"m", + "tab":["n3"]}}, + "séjour":{"N":{"g":"m", + "tab":["n3"]}}, + "sel":{"N":{"g":"m", + "tab":["n3"]}}, + "selon":{"P":{"tab":["pp"]}}, + "semaine":{"N":{"g":"f", + "tab":["n17"]}}, + "semblable":{"A":{"tab":["n25"]}}, + "sembler":{"V":{"aux":["av"], + "tab":"v36"}}, + "semer":{"V":{"aux":["av"], + "tab":"v13"}}, + "séminaire":{"N":{"g":"m", + "tab":["n3"]}}, + "sens":{"N":{"g":"m", + "tab":["n2"]}}, + "sensible":{"A":{"tab":["n25"]}}, + "sentier":{"N":{"g":"m", + "tab":["n3"]}}, + "sentiment":{"N":{"g":"m", + "tab":["n3"]}}, + "sentir":{"V":{"aux":["av"], + "tab":"v46"}}, + "séparer":{"V":{"aux":["av"], + "tab":"v36"}}, + "septembre":{"N":{"g":"m", + "tab":["n3"]}}, + "serein":{"A":{"tab":["n28"]}}, + "sergent":{"N":{"g":"m", + "tab":["n3"]}}, + "série":{"N":{"g":"f", + "tab":["n17"]}}, + "sérieusement":{"Adv":{"tab":["av"]}}, + "sérieux":{"A":{"tab":["n54"]}}, + "sermon":{"N":{"g":"m", + "tab":["n3"]}}, + "serrer":{"V":{"aux":["av"], + "tab":"v36"}}, + "serrure":{"N":{"g":"f", + "tab":["n17"]}}, + "servante":{"N":{"g":"f", + "tab":["n17"]}}, + "serviable":{"A":{"tab":["n25"]}}, + "service":{"N":{"g":"m", + "tab":["n3"]}}, + "serviette":{"N":{"g":"f", + "tab":["n17"]}}, + "servir":{"V":{"aux":["av"], + "tab":"v47"}}, + "serviteur":{"N":{"g":"m", + "tab":["n3"]}}, + "seuil":{"N":{"g":"m", + "tab":["n3"]}}, + "seul":{"A":{"tab":["n28"]}}, + "seulement":{"Adv":{"tab":["av"]}}, + "sève":{"N":{"g":"f", + "tab":["n17"]}}, + "sévère":{"A":{"tab":["n25"]}}, + "sévèrement":{"Adv":{"tab":["av"]}}, + "sévir":{"V":{"aux":["av"], + "tab":"v58"}}, + "siècle":{"N":{"g":"m", + "tab":["n3"]}}, + "siège":{"N":{"g":"m", + "tab":["n3"]}}, + "sifflement":{"N":{"g":"m", + "tab":["n3"]}}, + "siffler":{"V":{"aux":["av"], + "tab":"v36"}}, + "sifflet":{"N":{"g":"m", + "tab":["n3"]}}, + "signal":{"N":{"g":"m", + "tab":["n5"]}}, + "signaler":{"V":{"aux":["av"], + "tab":"v36"}}, + "signature":{"N":{"g":"f", + "tab":["n17"]}}, + "signe":{"N":{"g":"m", + "tab":["n3"]}}, + "signer":{"V":{"aux":["av"], + "tab":"v36"}}, + "signifier":{"V":{"aux":["av"], + "tab":"v36"}}, + "silence":{"N":{"g":"m", + "tab":["n3"]}}, + "silencieusement":{"Adv":{"tab":["av"]}}, + "silencieux":{"A":{"tab":["n54"]}}, + "sillon":{"N":{"g":"m", + "tab":["n3"]}}, + "sillonner":{"V":{"aux":["av"], + "tab":"v36"}}, + "simple":{"A":{"tab":["n25"]}}, + "simplement":{"Adv":{"tab":["av"]}}, + "simplicité":{"N":{"g":"f", + "tab":["n17"]}}, + "sincère":{"A":{"tab":["n25"]}}, + "sincèrement":{"Adv":{"tab":["av"]}}, + "sincérité":{"N":{"g":"f", + "tab":["n17"]}}, + "singe":{"N":{"g":"m", + "tab":["n3"]}}, + "singulier":{"A":{"tab":["n39"]}}, + "sinistre":{"A":{"tab":["n25"]}}, + "sirène":{"N":{"g":"f", + "tab":["n17"]}}, + "sitôt":{"Adv":{"tab":["av"]}}, + "situation":{"N":{"g":"f", + "tab":["n17"]}}, + "situer":{"V":{"aux":["av"], + "tab":"v36"}}, + "sobre":{"A":{"tab":["n25"]}}, + "société":{"N":{"g":"f", + "tab":["n17"]}}, + "soeur":{"N":{"g":"f", + "tab":["n17"]}}, + "soi-même":{"Pro":{"tab":["pn9"]}}, + "soie":{"N":{"g":"f", + "tab":["n17"]}}, + "soif":{"N":{"g":"f", + "tab":["n17"]}}, + "soigner":{"V":{"aux":["av"], + "tab":"v36"}}, + "soigneusement":{"Adv":{"tab":["av"]}}, + "soigneux":{"A":{"tab":["n54"]}}, + "soin":{"N":{"g":"m", + "tab":["n3"]}}, + "soir":{"N":{"g":"m", + "tab":["n3"]}}, + "soirée":{"N":{"g":"f", + "tab":["n17"]}}, + "sol":{"N":{"g":"m", + "tab":["n3"]}}, + "soldat":{"N":{"g":"m", + "tab":["n3"]}}, + "soleil":{"N":{"g":"m", + "tab":["n3"]}}, + "solennel":{"A":{"tab":["n48"]}}, + "solide":{"A":{"tab":["n25"]}}, + "solitaire":{"A":{"tab":["n25"]}}, + "solitude":{"N":{"g":"f", + "tab":["n17"]}}, + "solliciter":{"V":{"aux":["av"], + "tab":"v36"}}, + "sombre":{"A":{"tab":["n25"]}}, + "somme":{"N":{"g":"f", + "tab":["n17"]}}, + "sommeil":{"N":{"g":"m", + "tab":["n3"]}}, + "sommet":{"N":{"g":"m", + "tab":["n3"]}}, + "son":{"N":{"g":"m", + "tab":["n3"]}}, + "songer":{"V":{"aux":["av"], + "tab":"v3"}}, + "sonner":{"V":{"aux":["aê"], + "tab":"v36"}}, + "sonnette":{"N":{"g":"f", + "tab":["n17"]}}, + "sonore":{"A":{"tab":["n25"]}}, + "sort":{"N":{"g":"m", + "tab":["n3"]}}, + "sorte":{"N":{"g":"f", + "tab":["n17"]}}, + "sortie":{"N":{"g":"f", + "tab":["n17"]}}, + "sortir":{"V":{"aux":["aê"], + "tab":"v46"}}, + "sot":{"A":{"tab":["n51"]}}, + "sou":{"N":{"g":"m", + "tab":["n3"]}}, + "souci":{"N":{"g":"m", + "tab":["n3"]}}, + "soudain":{"Adv":{"tab":["av"]}}, + "souffle":{"N":{"g":"m", + "tab":["n3"]}}, + "souffler":{"V":{"aux":["av"], + "tab":"v36"}}, + "souffrance":{"N":{"g":"f", + "tab":["n17"]}}, + "souffrir":{"V":{"aux":["av"], + "tab":"v44"}}, + "souhait":{"N":{"g":"m", + "tab":["n3"]}}, + "souhaiter":{"V":{"aux":["av"], + "tab":"v36"}}, + "souiller":{"V":{"aux":["av"], + "tab":"v36"}}, + "soulagement":{"N":{"g":"m", + "tab":["n3"]}}, + "soulager":{"V":{"aux":["av"], + "tab":"v3"}}, + "soulever":{"V":{"aux":["av"], + "tab":"v25"}}, + "soulier":{"N":{"g":"m", + "tab":["n3"]}}, + "soumettre":{"V":{"aux":["av"], + "tab":"v89"}}, + "soupçonner":{"V":{"aux":["av"], + "tab":"v36"}}, + "soupe":{"N":{"g":"f", + "tab":["n17"]}}, + "souper":{"V":{"aux":["av"], + "tab":"v36"}}, + "soupir":{"N":{"g":"m", + "tab":["n3"]}}, + "soupirer":{"V":{"aux":["av"], + "tab":"v36"}}, + "souple":{"A":{"tab":["n25"]}}, + "source":{"N":{"g":"f", + "tab":["n17"]}}, + "sourd":{"A":{"tab":["n28"]}}, + "souriant":{"A":{"tab":["n28"]}}, + "sourire":{"V":{"aux":["av"], + "tab":"v107"}}, + "souris":{"N":{"g":"f", + "tab":["n16"]}}, + "sous":{"P":{"tab":["pp"]}}, + "soutenir":{"V":{"aux":["av"], + "tab":"v52"}}, + "souterrain":{"A":{"tab":["n28"]}}, + "soutien":{"N":{"g":"m", + "tab":["n3"]}}, + "souvenir":{"N":{"g":"m", + "tab":["n3"]}}, + "souvent":{"Adv":{"tab":["av"]}}, + "souverain":{"N":{"g":"m", + "tab":["n28"]}}, + "soyeux":{"A":{"tab":["n54"]}}, + "spacieux":{"A":{"tab":["n54"]}}, + "spécial":{"A":{"tab":["n47"]}}, + "spécialement":{"Adv":{"tab":["av"]}}, + "spectacle":{"N":{"g":"m", + "tab":["n3"]}}, + "spectateur":{"N":{"g":"m", + "tab":["n56"]}}, + "splendeur":{"N":{"g":"f", + "tab":["n17"]}}, + "splendide":{"A":{"tab":["n25"]}}, + "sport":{"N":{"g":"m", + "tab":["n3"]}}, + "station":{"N":{"g":"f", + "tab":["n17"]}}, + "stationner":{"V":{"aux":["aê"], + "tab":"v36"}}, + "statue":{"N":{"g":"f", + "tab":["n17"]}}, + "studieux":{"A":{"tab":["n54"]}}, + "stupéfaction":{"N":{"g":"f", + "tab":["n17"]}}, + "style":{"N":{"g":"m", + "tab":["n3"]}}, + "suave":{"A":{"tab":["n25"]}}, + "subir":{"V":{"aux":["av"], + "tab":"v58"}}, + "subitement":{"Adv":{"tab":["av"]}}, + "sublime":{"A":{"tab":["n25"]}}, + "suc":{"N":{"g":"m", + "tab":["n3"]}}, + "succéder":{"V":{"aux":["av"], + "tab":"v30"}}, + "succès":{"N":{"g":"m", + "tab":["n2"]}}, + "successivement":{"Adv":{"tab":["av"]}}, + "succulent":{"A":{"tab":["n28"]}}, + "sucer":{"V":{"aux":["av"], + "tab":"v0"}}, + "sucre":{"N":{"g":"m", + "tab":["n3"]}}, + "sud":{"N":{"g":"m", + "tab":["n35"]}}, + "sueur":{"N":{"g":"f", + "tab":["n17"]}}, + "suffire":{"V":{"aux":["av"], + "tab":"v116"}}, + "suffisamment":{"Adv":{"tab":["av"]}}, + "suffisant":{"A":{"tab":["n28"]}}, + "suite":{"N":{"g":"f", + "tab":["n17"]}}, + "suivant":{"A":{"tab":["n28"]}}, + "suivre":{"V":{"aux":["av"], + "tab":"v99"}}, + "sujet":{"N":{"g":"m", + "tab":["n3"]}}, + "superbe":{"A":{"tab":["n25"]}}, + "supérieur":{"A":{"tab":["n28"]}}, + "supplier":{"V":{"aux":["av"], + "tab":"v36"}}, + "supporter":{"V":{"aux":["av"], + "tab":"v36"}}, + "supposer":{"V":{"aux":["av"], + "tab":"v36"}}, + "suprême":{"A":{"tab":["n25"]}}, + "sur":{"P":{"tab":["pp"]}}, + "sûr":{"A":{"tab":["n28"]}}, + "sûrement":{"Adv":{"tab":["av"]}}, + "surface":{"N":{"g":"f", + "tab":["n17"]}}, + "surgir":{"V":{"aux":["av"], + "tab":"v58"}}, + "surmonter":{"V":{"aux":["av"], + "tab":"v36"}}, + "surprendre":{"V":{"aux":["av"], + "tab":"v90"}}, + "surprise":{"N":{"g":"f", + "tab":["n17"]}}, + "sursaut":{"N":{"g":"m", + "tab":["n3"]}}, + "sursauter":{"V":{"aux":["av"], + "tab":"v36"}}, + "surtout":{"Adv":{"tab":["av"]}}, + "surveiller":{"V":{"aux":["av"], + "tab":"v36"}}, + "survenir":{"V":{"aux":["êt"], + "tab":"v52"}}, + "suspect":{"N":{"g":"m", + "tab":["n28"]}}, + "suspendre":{"V":{"aux":["av"], + "tab":"v85"}}, + "symbole":{"N":{"g":"m", + "tab":["n3"]}}, + "sympathie":{"N":{"g":"f", + "tab":["n17"]}}, + "tabac":{"N":{"g":"m", + "tab":["n3"]}}, + "table":{"N":{"g":"f", + "tab":["n17"]}}, + "tableau":{"N":{"g":"m", + "tab":["n4"]}}, + "tablier":{"N":{"g":"m", + "tab":["n3"]}}, + "tâche":{"N":{"g":"f", + "tab":["n17"]}}, + "tache":{"N":{"g":"f", + "tab":["n17"]}}, + "tâcher":{"V":{"aux":["av"], + "tab":"v36"}}, + "tacher":{"V":{"aux":["av"], + "tab":"v36"}}, + "tacheter":{"V":{"aux":["av"], + "tab":"v10"}}, + "taille":{"N":{"g":"f", + "tab":["n17"]}}, + "tailler":{"V":{"aux":["av"], + "tab":"v36"}}, + "tailleur":{"N":{"g":"m", + "tab":["n3"]}}, + "taillis":{"N":{"g":"m", + "tab":["n2"]}}, + "taire":{"V":{"aux":["av"], + "tab":"v122"}}, + "talent":{"N":{"g":"m", + "tab":["n3"]}}, + "talus":{"N":{"g":"m", + "tab":["n2"]}}, + "tambour":{"N":{"g":"m", + "tab":["n3"]}}, + "tant":{"Adv":{"tab":["av"]}}, + "tante":{"N":{"g":"f", + "tab":["n17"]}}, + "tantôt":{"Adv":{"tab":["av"]}}, + "tapage":{"N":{"g":"m", + "tab":["n3"]}}, + "taper":{"V":{"aux":["av"], + "tab":"v36"}}, + "tapis":{"N":{"g":"m", + "tab":["n2"]}}, + "tapisser":{"V":{"aux":["av"], + "tab":"v36"}}, + "taquiner":{"V":{"aux":["av"], + "tab":"v36"}}, + "tard":{"Adv":{"tab":["av"]}}, + "tarder":{"V":{"aux":["av"], + "tab":"v36"}}, + "tarte":{"N":{"g":"f", + "tab":["n17"]}}, + "tartine":{"N":{"g":"f", + "tab":["n17"]}}, + "tas":{"N":{"g":"m", + "tab":["n2"]}}, + "tasse":{"N":{"g":"f", + "tab":["n17"]}}, + "teinte":{"N":{"g":"f", + "tab":["n17"]}}, + "télégramme":{"N":{"g":"m", + "tab":["n3"]}}, + "téléphone":{"N":{"g":"m", + "tab":["n3"]}}, + "téléphoner":{"V":{"aux":["av"], + "tab":"v36"}}, + "tellement":{"Adv":{"tab":["av"]}}, + "témoignage":{"N":{"g":"m", + "tab":["n3"]}}, + "témoigner":{"V":{"aux":["av"], + "tab":"v36"}}, + "témoin":{"N":{"g":"m", + "tab":["n3"]}}, + "température":{"N":{"g":"f", + "tab":["n17"]}}, + "tempête":{"N":{"g":"f", + "tab":["n17"]}}, + "temps":{"N":{"g":"m", + "tab":["n2"]}}, + "tendre":{"A":{"tab":["n25"]}}, + "tendrement":{"Adv":{"tab":["av"]}}, + "tendresse":{"N":{"g":"f", + "tab":["n17"]}}, + "ténèbres":{"N":{"g":"f", + "tab":["n15"]}}, + "tenir":{"V":{"aux":["av"], + "tab":"v52"}}, + "tentation":{"N":{"g":"f", + "tab":["n17"]}}, + "tente":{"N":{"g":"f", + "tab":["n17"]}}, + "tenter":{"V":{"aux":["av"], + "tab":"v36"}}, + "tenue":{"N":{"g":"f", + "tab":["n17"]}}, + "terme":{"N":{"g":"m", + "tab":["n3"]}}, + "terminer":{"V":{"aux":["av"], + "tab":"v36"}}, + "terrain":{"N":{"g":"m", + "tab":["n3"]}}, + "terrasse":{"N":{"g":"f", + "tab":["n17"]}}, + "terre":{"N":{"g":"f", + "tab":["n17"]}}, + "terrestre":{"A":{"tab":["n25"]}}, + "terreur":{"N":{"g":"f", + "tab":["n17"]}}, + "terrible":{"A":{"tab":["n25"]}}, + "terrier":{"N":{"g":"m", + "tab":["n3"]}}, + "tête":{"N":{"g":"f", + "tab":["n17"]}}, + "thé":{"N":{"g":"m", + "tab":["n3"]}}, + "théâtre":{"N":{"g":"m", + "tab":["n3"]}}, + "tiède":{"A":{"tab":["n25"]}}, + "tige":{"N":{"g":"f", + "tab":["n17"]}}, + "tigre":{"N":{"g":"m", + "tab":["n52"]}}, + "tilleul":{"N":{"g":"m", + "tab":["n3"]}}, + "timbre":{"N":{"g":"m", + "tab":["n3"]}}, + "timide":{"A":{"tab":["n25"]}}, + "tinter":{"V":{"aux":["av"], + "tab":"v36"}}, + "tirelire":{"N":{"g":"f", + "tab":["n17"]}}, + "tirer":{"V":{"aux":["av"], + "tab":"v36"}}, + "tiroir":{"N":{"g":"m", + "tab":["n3"]}}, + "tissu":{"N":{"g":"m", + "tab":["n3"]}}, + "titre":{"N":{"g":"m", + "tab":["n3"]}}, + "toile":{"N":{"g":"f", + "tab":["n17"]}}, + "toilette":{"N":{"g":"f", + "tab":["n17"]}}, + "toit":{"N":{"g":"m", + "tab":["n3"]}}, + "tombe":{"N":{"g":"f", + "tab":["n17"]}}, + "tombeau":{"N":{"g":"m", + "tab":["n4"]}}, + "tomber":{"V":{"aux":["êt"], + "tab":"v36"}}, + "ton":{"N":{"g":"m", + "tab":["n3"]}}, + "tonneau":{"N":{"g":"m", + "tab":["n4"]}}, + "tonnerre":{"N":{"g":"m", + "tab":["n3"]}}, + "tordre":{"V":{"aux":["av"], + "tab":"v85"}}, + "torrent":{"N":{"g":"m", + "tab":["n3"]}}, + "tort":{"N":{"g":"m", + "tab":["n3"]}}, + "tortue":{"N":{"g":"f", + "tab":["n17"]}}, + "tôt":{"Adv":{"tab":["av"]}}, + "toucher":{"V":{"aux":["av"], + "tab":"v36"}}, + "touffe":{"N":{"g":"f", + "tab":["n17"]}}, + "touffu":{"A":{"tab":["n28"]}}, + "toujours":{"Adv":{"tab":["av"]}}, + "tour":{"N":{"g":"m", + "tab":["n3"]}}, + "tourbillon":{"N":{"g":"m", + "tab":["n3"]}}, + "tourbillonner":{"V":{"aux":["av"], + "tab":"v36"}}, + "tourment":{"N":{"g":"m", + "tab":["n3"]}}, + "tourmenter":{"V":{"aux":["av"], + "tab":"v36"}}, + "tournant":{"N":{"g":"m", + "tab":["n3"]}}, + "tournée":{"N":{"g":"f", + "tab":["n17"]}}, + "tourner":{"V":{"aux":["aê"], + "tab":"v36"}}, + "tournoyer":{"V":{"aux":["av"], + "tab":"v5"}}, + "toutefois":{"Adv":{"tab":["av"]}}, + "toux":{"N":{"g":"f", + "tab":["n16"]}}, + "trace":{"N":{"g":"f", + "tab":["n17"]}}, + "tracer":{"V":{"aux":["av"], + "tab":"v0"}}, + "train":{"N":{"g":"m", + "tab":["n3"]}}, + "traîneau":{"N":{"g":"m", + "tab":["n4"]}}, + "traîner":{"V":{"aux":["av"], + "tab":"v36"}}, + "trait":{"N":{"g":"m", + "tab":["n3"]}}, + "traitement":{"N":{"g":"m", + "tab":["n3"]}}, + "traiter":{"V":{"aux":["av"], + "tab":"v36"}}, + "trajet":{"N":{"g":"m", + "tab":["n3"]}}, + "tram":{"N":{"g":"m", + "tab":["n3"]}}, + "tramway":{"N":{"g":"m", + "tab":["n3"]}}, + "tranche":{"N":{"g":"f", + "tab":["n17"]}}, + "trancher":{"V":{"aux":["av"], + "tab":"v36"}}, + "tranquille":{"A":{"tab":["n25"]}}, + "tranquillement":{"Adv":{"tab":["av"]}}, + "transformation":{"N":{"g":"f", + "tab":["n17"]}}, + "transformer":{"V":{"aux":["av"], + "tab":"v36"}}, + "transmettre":{"V":{"aux":["av"], + "tab":"v89"}}, + "transparent":{"A":{"tab":["n28"]}}, + "transport":{"N":{"g":"m", + "tab":["n3"]}}, + "transporter":{"V":{"aux":["av"], + "tab":"v36"}}, + "travail":{"N":{"g":"m", + "tab":["n6"]}}, + "travailler":{"V":{"aux":["av"], + "tab":"v36"}}, + "travailleur":{"N":{"g":"m", + "tab":["n55"]}}, + "travailleuse":{"N":{"g":"f", + "tab":["n17"]}}, + "travers":{"N":{"g":"m", + "tab":["n2"]}}, + "traverser":{"V":{"aux":["av"], + "tab":"v36"}}, + "trembler":{"V":{"aux":["av"], + "tab":"v36"}}, + "tremper":{"V":{"aux":["av"], + "tab":"v36"}}, + "très":{"Adv":{"tab":["av"]}}, + "trésor":{"N":{"g":"m", + "tab":["n3"]}}, + "tressaillir":{"V":{"aux":["av"], + "tab":"v49"}}, + "tribunal":{"N":{"g":"m", + "tab":["n5"]}}, + "tricolore":{"A":{"tab":["n25"]}}, + "tricot":{"N":{"g":"m", + "tab":["n3"]}}, + "tricoter":{"V":{"aux":["av"], + "tab":"v36"}}, + "trimestre":{"N":{"g":"m", + "tab":["n3"]}}, + "triomphe":{"N":{"g":"m", + "tab":["n3"]}}, + "triompher":{"V":{"aux":["av"], + "tab":"v36"}}, + "triste":{"A":{"tab":["n25"]}}, + "tristement":{"Adv":{"tab":["av"]}}, + "tristesse":{"N":{"g":"f", + "tab":["n17"]}}, + "tromper":{"V":{"aux":["av"], + "tab":"v36"}}, + "trompette":{"N":{"g":"f", + "tab":["n17"]}}, + "tronc":{"N":{"g":"m", + "tab":["n3"]}}, + "trop":{"Adv":{"tab":["av"]}}, + "trotter":{"V":{"aux":["av"], + "tab":"v36"}}, + "trottoir":{"N":{"g":"m", + "tab":["n3"]}}, + "trou":{"N":{"g":"m", + "tab":["n3"]}}, + "trouble":{"N":{"g":"m", + "tab":["n3"]}}, + "troubler":{"V":{"aux":["av"], + "tab":"v36"}}, + "trouer":{"V":{"aux":["av"], + "tab":"v36"}}, + "troupe":{"N":{"g":"f", + "tab":["n17"]}}, + "troupeau":{"N":{"g":"m", + "tab":["n4"]}}, + "trouver":{"V":{"aux":["av"], + "tab":"v36"}}, + "tuer":{"V":{"aux":["av"], + "tab":"v36"}}, + "tuile":{"N":{"g":"f", + "tab":["n17"]}}, + "tulipe":{"N":{"g":"f", + "tab":["n17"]}}, + "tunnel":{"N":{"g":"m", + "tab":["n3"]}}, + "tuque":{"N":{"g":"f", + "tab":["n17"]}}, + "turbulent":{"A":{"tab":["n28"]}}, + "tuyau":{"N":{"g":"m", + "tab":["n4"]}}, + "type":{"N":{"g":"m", + "tab":["n3"]}}, + "un":{"D":{"tab":["d4"]}}, + "un peu":{"Adv":{"tab":["av"]}}, + "union":{"N":{"g":"f", + "tab":["n17"]}}, + "unique":{"A":{"tab":["n25"]}}, + "unir":{"V":{"aux":["av"], + "tab":"v58"}}, + "univers":{"N":{"g":"m", + "tab":["n2"]}}, + "universel":{"A":{"tab":["n48"]}}, + "urgent":{"A":{"tab":["n28"]}}, + "usage":{"N":{"g":"m", + "tab":["n3"]}}, + "user":{"V":{"aux":["av"], + "tab":"v36"}}, + "usine":{"N":{"g":"f", + "tab":["n17"]}}, + "utile":{"A":{"tab":["n25"]}}, + "utiliser":{"V":{"aux":["av"], + "tab":"v36"}}, + "utilité":{"N":{"g":"f", + "tab":["n17"]}}, + "vache":{"N":{"g":"f", + "tab":["n17"]}}, + "vagabond":{"A":{"tab":["n28"]}}, + "vague":{"N":{"g":"f", + "tab":["n17"]}}, + "vaillant":{"A":{"tab":["n28"]}}, + "vain":{"A":{"tab":["n28"]}}, + "vaincre":{"V":{"aux":["av"], + "tab":"v86"}}, + "vainqueur":{"N":{"g":"m", + "tab":["n3"]}}, + "vaisseau":{"N":{"tab":["n4"]}}, + "vaisselle":{"N":{"g":"f", + "tab":["n17"]}}, + "valet":{"N":{"g":"m", + "tab":["n3"]}}, + "valeur":{"N":{"g":"f", + "tab":["n17"]}}, + "valise":{"N":{"g":"f", + "tab":["n17"]}}, + "vallée":{"N":{"g":"f", + "tab":["n17"]}}, + "valoir":{"V":{"aux":["av"], + "tab":"v69"}}, + "vanter":{"V":{"aux":["av"], + "tab":"v36"}}, + "vapeur":{"N":{"g":"f", + "tab":["n17"]}}, + "varier":{"V":{"aux":["av"], + "tab":"v36"}}, + "vase":{"N":{"g":"m", + "tab":["n3"]}}, + "vaste":{"A":{"tab":["n25"]}}, + "veau":{"N":{"g":"m", + "tab":["n4"]}}, + "végétal":{"A":{"tab":["n47"]}}, + "végétation":{"N":{"g":"f", + "tab":["n17"]}}, + "véhicule":{"N":{"g":"m", + "tab":["n3"]}}, + "veille":{"N":{"g":"f", + "tab":["n17"]}}, + "veiller":{"V":{"aux":["av"], + "tab":"v36"}}, + "veine":{"N":{"g":"f", + "tab":["n17"]}}, + "vélo":{"N":{"g":"m", + "tab":["n3"]}}, + "velours":{"N":{"g":"m", + "tab":["n2"]}}, + "velouté":{"A":{"tab":["n28"]}}, + "vendeur":{"N":{"g":"m", + "tab":["n55"]}}, + "vendre":{"V":{"aux":["av"], + "tab":"v85"}}, + "vendredi":{"N":{"g":"m", + "tab":["n3"]}}, + "vénérer":{"V":{"aux":["av"], + "tab":"v28"}}, + "venger":{"V":{"aux":["av"], + "tab":"v3"}}, + "venir":{"V":{"aux":["êt"], + "tab":"v52"}}, + "vent":{"N":{"g":"m", + "tab":["n3"]}}, + "vente":{"N":{"g":"f", + "tab":["n17"]}}, + "ventre":{"N":{"g":"m", + "tab":["n3"]}}, + "vêpres":{"N":{"g":"f", + "tab":["n15"]}}, + "ver":{"N":{"g":"m", + "tab":["n3"]}}, + "verdâtre":{"A":{"tab":["n25"]}}, + "verdoyant":{"A":{"tab":["n28"]}}, + "verdure":{"N":{"g":"f", + "tab":["n17"]}}, + "verger":{"N":{"g":"m", + "tab":["n3"]}}, + "vérifier":{"V":{"aux":["av"], + "tab":"v36"}}, + "véritable":{"A":{"tab":["n25"]}}, + "vérité":{"N":{"g":"f", + "tab":["n17"]}}, + "vermeil":{"N":{"g":"m", + "tab":["n3"]}}, + "vernir":{"V":{"aux":["av"], + "tab":"v58"}}, + "verre":{"N":{"g":"m", + "tab":["n3"]}}, + "vers":{"P":{"tab":["pp"]}}, + "verser":{"V":{"aux":["av"], + "tab":"v36"}}, + "vert":{"A":{"tab":["n28"]}}, + "vertu":{"N":{"g":"f", + "tab":["n17"]}}, + "veston":{"N":{"g":"m", + "tab":["n3"]}}, + "vêtement":{"N":{"g":"m", + "tab":["n3"]}}, + "vêtir":{"V":{"aux":["av"], + "tab":"v56"}}, + "veuf":{"A":{"tab":["n46"]}}, + "viande":{"N":{"g":"f", + "tab":["n17"]}}, + "vicaire":{"N":{"g":"m", + "tab":["n3"]}}, + "vice":{"N":{"g":"m", + "tab":["n3"]}}, + "victime":{"N":{"g":"f", + "tab":["n17"]}}, + "victoire":{"N":{"g":"f", + "tab":["n17"]}}, + "vide":{"A":{"tab":["n25"]}}, + "vider":{"V":{"aux":["av"], + "tab":"v36"}}, + "vie":{"N":{"g":"f", + "tab":["n17"]}}, + "vieillard":{"N":{"g":"m", + "tab":["n3"]}}, + "vieillesse":{"N":{"g":"f", + "tab":["n17"]}}, + "vierge":{"A":{"tab":["n25"]}}, + "vieux":{"A":{"pos":"pre", + "tab":["n73"]}}, + "vif":{"A":{"tab":["n46"]}}, + "vigne":{"N":{"g":"f", + "tab":["n17"]}}, + "vigoureux":{"A":{"tab":["n54"]}}, + "vigueur":{"N":{"g":"f", + "tab":["n17"]}}, + "vilain":{"A":{"tab":["n28"]}}, + "villa":{"N":{"g":"f", + "tab":["n17"]}}, + "village":{"N":{"g":"m", + "tab":["n3"]}}, + "villageois":{"N":{"g":"m", + "tab":["n27"]}}, + "ville":{"N":{"g":"f", + "tab":["n17"]}}, + "vin":{"N":{"g":"m", + "tab":["n3"]}}, + "violence":{"N":{"g":"f", + "tab":["n17"]}}, + "violent":{"A":{"tab":["n28"]}}, + "violet":{"A":{"tab":["n51"]}}, + "violette":{"N":{"g":"f", + "tab":["n17"]}}, + "visage":{"N":{"g":"m", + "tab":["n3"]}}, + "viser":{"V":{"aux":["av"], + "tab":"v36"}}, + "visible":{"A":{"tab":["n25"]}}, + "visite":{"N":{"g":"f", + "tab":["n17"]}}, + "visiter":{"V":{"aux":["av"], + "tab":"v36"}}, + "visiteur":{"N":{"g":"m", + "tab":["n55"]}}, + "vite":{"Adv":{"tab":["av"]}}, + "vitesse":{"N":{"g":"f", + "tab":["n17"]}}, + "vitre":{"N":{"g":"f", + "tab":["n17"]}}, + "vitrine":{"N":{"g":"f", + "tab":["n17"]}}, + "vivant":{"A":{"tab":["n28"]}}, + "vivement":{"Adv":{"tab":["av"]}}, + "vivre":{"V":{"aux":["av"], + "tab":"v100"}}, + "voeu":{"N":{"g":"m", + "tab":["n4"]}}, + "voie":{"N":{"g":"f", + "tab":["n17"]}}, + "voilà":{"P":{"tab":["pp"]}}, + "voile":{"N":{"g":"f", + "tab":["n17"]}}, + "voiler":{"V":{"aux":["av"], + "tab":"v36"}}, + "voir":{"V":{"aux":["av"], + "tab":"v72"}}, + "voisin":{"N":{"g":"m", + "tab":["n28"]}}, + "voisinage":{"N":{"g":"m", + "tab":["n3"]}}, + "voiture":{"N":{"g":"f", + "tab":["n17"]}}, + "voix":{"N":{"g":"f", + "tab":["n16"]}}, + "vol":{"N":{"g":"m", + "tab":["n3"]}}, + "volaille":{"N":{"g":"f", + "tab":["n17"]}}, + "volée":{"N":{"g":"f", + "tab":["n17"]}}, + "voler":{"V":{"aux":["av"], + "tab":"v36"}}, + "volet":{"N":{"g":"m", + "tab":["n3"]}}, + "voleur":{"N":{"g":"m", + "tab":["n55"]}}, + "volonté":{"N":{"g":"f", + "tab":["n17"]}}, + "volontiers":{"Adv":{"tab":["av"]}}, + "voltiger":{"V":{"aux":["av"], + "tab":"v3"}}, + "volume":{"N":{"g":"m", + "tab":["n3"]}}, + "vouloir":{"V":{"aux":["av"], + "tab":"v68"}}, + "voûte":{"N":{"g":"f", + "tab":["n17"]}}, + "voyage":{"N":{"g":"m", + "tab":["n3"]}}, + "voyager":{"V":{"aux":["av"], + "tab":"v3"}}, + "voyageur":{"N":{"g":"m", + "tab":["n55"]}}, + "vrai":{"A":{"tab":["n28"]}}, + "vraiment":{"Adv":{"tab":["av"]}}, + "vue":{"N":{"g":"f", + "tab":["n17"]}}, + "vulgaire":{"A":{"tab":["n25"]}}, + "wagon":{"N":{"g":"m", + "tab":["n3"]}}, + "y":{"Pro":{"tab":["pn11"]}}, + "zèle":{"N":{"g":"m", + "tab":["n3"]}}, + "{":{"Pc":{"compl":"}", + "tab":["pc5"]}}, + "}":{"Pc":{"compl":"{", + "tab":["pc6"]}}} +var ruleFr = //========== rule-fr.js +{ + "conjugation": { + "v0": { + "ending": "cer", + "t": { + "p": ["ce","ces","ce","çons","cez","cent"], + "i": ["çais","çais","çait","cions","ciez","çaient"], + "f": ["cerai","ceras","cera","cerons","cerez","ceront"], + "ps": ["çai","ças","ça","çâmes","çâtes","cèrent"], + "c": ["cerais","cerais","cerait","cerions","ceriez","ceraient"], + "s": ["ce","ces","ce","cions","ciez","cent"], + "si": ["çasse","çasses","çât","çassions","çassiez","çassent"], + "ip": [null,"ce",null,"çons","cez",null], + "pr": "çant", + "pp": "cé", + "b": "cer" + } + }, + "v1": { + "ending": "er", + "t": { + "p": ["e","es","e","ons","ez","ent"], + "i": ["ais","ais","ait","ons","ez","aient"], + "f": ["erai","eras","era","erons","erez","eront"], + "ps": ["ai","as","a","âmes","âtes","èrent"], + "c": ["erais","erais","erait","erions","eriez","eraient"], + "s": ["e","es","e","ions","iez","ent"], + "si": ["asse","asses","ât","assions","assiez","assent"], + "ip": [null,"e",null,"ons","ez",null], + "pr": "ant", + "pp": "é", + "b": "er" + } + }, + "v2": { + "ending": "ecer", + "t": { + "p": ["ece","eces","ece","eçons","ecez","ecent"], + "i": ["eçais","eçais","eçait","ecions","eciez","eçaient"], + "f": ["ecerai","eceras","ecera","ecerons","ecerez","eceront"], + "ps": ["eçai","eças","eça","eçâmes","eçâtes","ecèrent"], + "c": ["ecerais","ecerais","ecerait","ecerions","eceriez","eceraient"], + "s": ["ece","eces","ece","ecions","eciez","ecent"], + "si": ["eçasse","eçasses","eçât","eçassions","eçassiez","eçassent"], + "ip": [null,"ece",null,"eçons","ecez",null], + "pr": "eçant", + "pp": "ecé", + "b": "ecer" + } + }, + "v3": { + "ending": "ger", + "t": { + "p": ["ge","ges","ge","geons","gez","gent"], + "i": ["geais","geais","geait","gions","giez","geaient"], + "f": ["gerai","geras","gera","gerons","gerez","geront"], + "ps": ["geai","geas","gea","geâmes","geâtes","gèrent"], + "c": ["gerais","gerais","gerait","gerions","geriez","geraient"], + "s": ["ge","ges","ge","gions","giez","gent"], + "si": ["geasse","geasses","geât","geassions","geassiez","geassent"], + "ip": [null,"ge",null,"geons","gez",null], + "pr": "geant", + "pp": "gé", + "b": "ger" + } + }, + "v4": { + "ending": "yer", + "t": { + "p": ["ie","ies","ie","yons","yez","ient"], + "i": ["yais","yais","yait","yions","yiez","yaient"], + "f": ["ierai","ieras","iera","ierons","ierez","ieront"], + "ps": ["yai","yas","ya","yâmes","yâtes","yèrent"], + "c": ["ierais","ierais","ierait","ierions","ieriez","ieraient"], + "s": ["ie","ies","ie","yions","yiez","ient"], + "si": ["yasse","yasses","yât","yassions","yassiez","yassent"], + "ip": [null,"ie",null,"yons","yez",null], + "pr": "yant", + "pp": "yé", + "b": "yer" + } + }, + "v5": { + "ending": "yer", + "t": { + "p": ["ie","ies","ie","yons","yez","ient"], + "i": ["yais","yais","yait","yions","yiez","yaient"], + "f": ["ierai","ieras","iera","ierons","ierez","ieront"], + "ps": ["yai","yas","ya","yâmes","yâtes","yèrent"], + "c": ["ierais","ierais","ierait","ierions","ieriez","ieraient"], + "s": ["ie","ies","ie","yions","yiez","ient"], + "si": ["yasse","yasses","yât","yassions","yassiez","yassent"], + "ip": [null,"ie",null,"yons","yez",null], + "pr": "yant", + "pp": "yé", + "b": "yer" + } + }, + "v6": { + "ending": "yer", + "t": { + "p": ["ye","yes","ye","yons","yez","yent"], + "i": ["yais","yais","yait","yions","yiez","yaient"], + "f": ["yerai","yeras","yera","yerons","yerez","yeront"], + "ps": ["yai","yas","ya","yâmes","yâtes","yèrent"], + "c": ["yerais","yerais","yerait","yerions","yeriez","yeraient"], + "s": ["ye","yes","ye","yions","yiez","yent"], + "si": ["yasse","yasses","yât","yassions","yassiez","yassent"], + "ip": [null,"ye",null,"yons","yez",null], + "pr": "yant", + "pp": "yé", + "b": "yer" + } + }, + "v7": { + "ending": "eler", + "t": { + "p": ["elle","elles","elle","elons","elez","ellent"], + "i": ["elais","elais","elait","elions","eliez","elaient"], + "f": ["ellerai","elleras","ellera","ellerons","ellerez","elleront"], + "ps": ["elai","elas","ela","elâmes","elâtes","elèrent"], + "c": ["ellerais","ellerais","ellerait","ellerions","elleriez","elleraient"], + "s": ["elle","elles","elle","elions","eliez","ellent"], + "si": ["elasse","elasses","elât","elassions","elassiez","elassent"], + "ip": [null,"elle",null,"elons","elez",null], + "pr": "elant", + "pp": "elé", + "b": "eler" + } + }, + "v8": { + "ending": "eler", + "t": { + "p": ["èle","èles","èle","elons","elez","èlent"], + "i": ["elais","elais","elait","elions","eliez","elaient"], + "f": ["èlerai","èleras","èlera","èlerons","èlerez","èleront"], + "ps": ["elai","elas","ela","elâmes","elâtes","elèrent"], + "c": ["èlerais","èlerais","èlerait","èlerions","èleriez","èleraient"], + "s": ["èle","èles","èle","elions","eliez","èlent"], + "si": ["elasse","elasses","elât","elassions","elassiez","elassent"], + "ip": [null,"èle",null,"elons","elez",null], + "pr": "elant", + "pp": "elé", + "b": "eler" + } + }, + "v9": { + "ending": "eler", + "t": { + "p": ["elle","elles","elle","elons","elez","ellent"], + "i": ["elais","elais","elait","elions","eliez","elaient"], + "f": ["ellerai","elleras","ellera","ellerons","ellerez","elleront"], + "ps": ["elai","elas","ela","elâmes","elâtes","elèrent"], + "c": ["ellerais","ellerais","ellerait","ellerions","elleriez","elleraient"], + "s": ["elle","elles","elle","elions","eliez","ellent"], + "si": ["elasse","elasses","elât","elassions","elassiez","elassent"], + "ip": [null,"elle",null,"elons","elez",null], + "pr": "elant", + "pp": "elé", + "b": "eler" + } + }, + "v10": { + "ending": "eter", + "t": { + "p": ["ette","ettes","ette","etons","etez","ettent"], + "i": ["etais","etais","etait","etions","etiez","etaient"], + "f": ["etterai","etteras","ettera","etterons","etterez","etteront"], + "ps": ["etai","etas","eta","etâmes","etâtes","etèrent"], + "c": ["etterais","etterais","etterait","etterions","etteriez","etteraient"], + "s": ["ette","ettes","ette","etions","etiez","ettent"], + "si": ["etasse","etasses","etât","etassions","etassiez","etassent"], + "ip": [null,"ette",null,"etons","etez",null], + "pr": "etant", + "pp": "eté", + "b": "eter" + } + }, + "v11": { + "ending": "eter", + "t": { + "p": ["ète","ètes","ète","etons","etez","ètent"], + "i": ["etais","etais","etait","etions","etiez","etaient"], + "f": ["èterai","èteras","ètera","èterons","èterez","èteront"], + "ps": ["etai","etas","eta","etâmes","etâtes","etèrent"], + "c": ["èterais","èterais","èterait","èterions","èteriez","èteraient"], + "s": ["ète","ètes","ète","etions","etiez","ètent"], + "si": ["etasse","etasses","etât","etassions","etassiez","etassent"], + "ip": [null,"ète",null,"etons","etez",null], + "pr": "etant", + "pp": "eté", + "b": "eter" + } + }, + "v12": { + "ending": "éter", + "t": { + "p": ["ète","ètes","ète","étons","étez","ètent"], + "i": ["étais","étais","était","étions","étiez","étaient"], + "f": ["èterai","èteras","ètera","èterons","èterez","èteront"], + "ps": ["étai","étas","éta","étâmes","étâtes","étèrent"], + "c": ["èterais","èterais","èterait","èterions","èteriez","èteraient"], + "s": ["ète","ètes","ète","étions","étiez","ètent"], + "si": ["étasse","étasses","étât","étassions","étassiez","étassent"], + "ip": [null,"ète",null,"étons","étez",null], + "pr": "étant", + "pp": "été", + "b": "éter" + } + }, + "v13": { + "ending": "emer", + "t": { + "p": ["ème","èmes","ème","emons","emez","èment"], + "i": ["emais","emais","emait","emions","emiez","emaient"], + "f": ["èmerai","èmeras","èmera","èmerons","èmerez","èmeront"], + "ps": ["emai","emas","ema","emâmes","emâtes","emèrent"], + "c": ["èmerais","èmerais","èmerait","èmerions","èmeriez","èmeraient"], + "s": ["ème","èmes","ème","emions","emiez","èment"], + "si": ["emasse","emasses","emât","emassions","emassiez","emassent"], + "ip": [null,"ème",null,"emons","emez",null], + "pr": "emant", + "pp": "emé", + "b": "emer" + } + }, + "v14": { + "ending": "éguer", + "t": { + "p": ["ègue","ègues","ègue","éguons","éguez","èguent"], + "i": ["éguais","éguais","éguait","éguions","éguiez","éguaient"], + "f": ["èguerai","ègueras","èguera","èguerons","èguerez","ègueront"], + "ps": ["éguai","éguas","égua","éguâmes","éguâtes","éguèrent"], + "c": ["èguerais","èguerais","èguerait","èguerions","ègueriez","ègueraient"], + "s": ["ègue","ègues","ègue","éguions","éguiez","èguent"], + "si": ["éguasse","éguasses","éguât","éguassions","éguassiez","éguassent"], + "ip": [null,"ègue",null,"éguons","éguez",null], + "pr": "éguant", + "pp": "égué", + "b": "éguer" + } + }, + "v15": { + "ending": "équer", + "t": { + "p": ["èque","èques","èque","équons","équez","èquent"], + "i": ["équais","équais","équait","équions","équiez","équaient"], + "f": ["èquerai","èqueras","èquera","èquerons","èquerez","èqueront"], + "ps": ["équai","équas","équa","équâmes","équâtes","équèrent"], + "c": ["èquerais","èquerais","èquerait","èquerions","èqueriez","èqueraient"], + "s": ["èque","èques","èque","équions","équiez","èquent"], + "si": ["équasse","équasses","équât","équassions","équassiez","équassent"], + "ip": [null,"èque",null,"équons","équez",null], + "pr": "équant", + "pp": "équé", + "b": "équer" + } + }, + "v16": { + "ending": "éler", + "t": { + "p": ["èle","èles","èle","élons","élez","èlent"], + "i": ["élais","élais","élait","élions","éliez","élaient"], + "f": ["élerai","éleras","élera","élerons","élerez","éleront"], + "ps": ["élai","élas","éla","élâmes","élâtes","élèrent"], + "c": ["élerais","élerais","élerait","élerions","éleriez","éleraient"], + "s": ["èle","èles","èle","élions","éliez","èlent"], + "si": ["élasse","élasses","élât","élassions","élassiez","élassent"], + "ip": [null,"èle",null,"élons","élez",null], + "pr": "élant", + "pp": "élé", + "b": "éler" + } + }, + "v17": { + "ending": "étrer", + "t": { + "p": ["ètre","ètres","ètre","étrons","étrez","ètrent"], + "i": ["étrais","étrais","étrait","étrions","étriez","étraient"], + "f": ["étrerai","étreras","étrera","étrerons","étrerez","étreront"], + "ps": ["étrai","étras","étra","étrâmes","étrâtes","étrèrent"], + "c": ["étrerais","étrerais","étrerait","étrerions","étreriez","étreraient"], + "s": ["ètre","ètres","ètre","étrions","étriez","ètrent"], + "si": ["étrasse","étrasses","étrât","étrassions","étrassiez","étrassent"], + "ip": [null,"ètre",null,"étrons","étrez",null], + "pr": "étrant", + "pp": "étré", + "b": "étrer" + } + }, + "v18": { + "ending": "égler", + "t": { + "p": ["ègle","ègles","ègle","églons","églez","èglent"], + "i": ["églais","églais","églait","églions","égliez","églaient"], + "f": ["églerai","égleras","églera","églerons","églerez","égleront"], + "ps": ["églai","églas","égla","églâmes","églâtes","églèrent"], + "c": ["églerais","églerais","églerait","églerions","égleriez","égleraient"], + "s": ["ègle","ègles","ègle","églions","égliez","èglent"], + "si": ["églasse","églasses","églât","églassions","églassiez","églassent"], + "ip": [null,"ègle",null,"églons","églez",null], + "pr": "églant", + "pp": "églé", + "b": "égler" + } + }, + "v19": { + "ending": "égner", + "t": { + "p": ["ègne","ègnes","ègne","égnons","égnez","ègnent"], + "i": ["égnais","égnais","égnait","égnions","égniez","égnaient"], + "f": ["égnerai","égneras","égnera","égnerons","égnerez","égneront"], + "ps": ["égnai","égnas","égna","égnâmes","égnâtes","égnèrent"], + "c": ["égnerais","égnerais","égnerait","égnerions","égneriez","égneraient"], + "s": ["ègne","ègnes","ègne","égnions","égniez","ègnent"], + "si": ["égnasse","égnasses","égnât","égnassions","égnassiez","égnassent"], + "ip": [null,"ègne",null,"égnons","égnez",null], + "pr": "égnant", + "pp": "égné", + "b": "égner" + } + }, + "v20": { + "ending": "ébrer", + "t": { + "p": ["èbre","èbres","èbre","ébrons","ébrez","èbrent"], + "i": ["ébrais","ébrais","ébrait","ébrions","ébriez","ébraient"], + "f": ["ébrerai","ébreras","ébrera","ébrerons","ébrerez","ébreront"], + "ps": ["ébrai","ébras","ébra","ébrâmes","ébrâtes","ébrèrent"], + "c": ["ébrerais","ébrerais","ébrerait","ébrerions","ébreriez","ébreraient"], + "s": ["èbre","èbres","èbre","ébrions","ébriez","èbrent"], + "si": ["ébrasse","ébrasses","ébrât","ébrassions","ébrassiez","ébrassent"], + "ip": [null,"èbre",null,"ébrons","ébrez",null], + "pr": "ébrant", + "pp": "ébré", + "b": "ébrer" + } + }, + "v21": { + "ending": "égrer", + "t": { + "p": ["ègre","ègres","ègre","égrons","égrez","ègrent"], + "i": ["égrais","égrais","égrait","égrions","égriez","égraient"], + "f": ["égrerai","égreras","égrera","égrerons","égrerez","égreront"], + "ps": ["égrai","égras","égra","égrâmes","égrâtes","égrèrent"], + "c": ["égrerais","égrerais","égrerait","égrerions","égreriez","égreraient"], + "s": ["ègre","ègres","ègre","égrions","égriez","ègrent"], + "si": ["égrasse","égrasses","égrât","égrassions","égrassiez","égrassent"], + "ip": [null,"ègre",null,"égrons","égrez",null], + "pr": "égrant", + "pp": "égré", + "b": "égrer" + } + }, + "v22": { + "ending": "éter", + "t": { + "p": ["ète","ètes","ète","étons","étez","ètent"], + "i": ["étais","étais","était","étions","étiez","étaient"], + "f": ["éterai","éteras","étera","éterons","éterez","éteront"], + "ps": ["étai","étas","éta","étâmes","étâtes","étèrent"], + "c": ["éterais","éterais","éterait","éterions","éteriez","éteraient"], + "s": ["ète","ètes","ète","étions","étiez","ètent"], + "si": ["étasse","étasses","étât","étassions","étassiez","étassent"], + "ip": [null,"ète",null,"étons","étez",null], + "pr": "étant", + "pp": "été", + "b": "éter" + } + }, + "v23": { + "ending": "éner", + "t": { + "p": ["ène","ènes","ène","énons","énez","ènent"], + "i": ["énais","énais","énait","énions","éniez","énaient"], + "f": ["énerai","éneras","énera","énerons","énerez","éneront"], + "ps": ["énai","énas","éna","énâmes","énâtes","énèrent"], + "c": ["énerais","énerais","énerait","énerions","éneriez","éneraient"], + "s": ["ène","ènes","ène","énions","éniez","ènent"], + "si": ["énasse","énasses","énât","énassions","énassiez","énassent"], + "ip": [null,"ène",null,"énons","énez",null], + "pr": "énant", + "pp": "éné", + "b": "éner" + } + }, + "v24": { + "ending": "ener", + "t": { + "p": ["ène","ènes","ène","enons","enez","ènent"], + "i": ["enais","enais","enait","enions","eniez","enaient"], + "f": ["ènerai","èneras","ènera","ènerons","ènerez","èneront"], + "ps": ["enai","enas","ena","enâmes","enâtes","enèrent"], + "c": ["ènerais","ènerais","ènerait","ènerions","èneriez","èneraient"], + "s": ["ène","ènes","ène","enions","eniez","ènent"], + "si": ["enasse","enasses","enât","enassions","enassiez","enassent"], + "ip": [null,"ène",null,"enons","enez",null], + "pr": "enant", + "pp": "ené", + "b": "ener" + } + }, + "v25": { + "ending": "ever", + "t": { + "p": ["ève","èves","ève","evons","evez","èvent"], + "i": ["evais","evais","evait","evions","eviez","evaient"], + "f": ["èverai","èveras","èvera","èverons","èverez","èveront"], + "ps": ["evai","evas","eva","evâmes","evâtes","evèrent"], + "c": ["èverais","èverais","èverait","èverions","èveriez","èveraient"], + "s": ["ève","èves","ève","evions","eviez","èvent"], + "si": ["evasse","evasses","evât","evassions","evassiez","evassent"], + "ip": [null,"ève",null,"evons","evez",null], + "pr": "evant", + "pp": "evé", + "b": "ever" + } + }, + "v26": { + "ending": "eser", + "t": { + "p": ["èse","èses","èse","esons","esez","èsent"], + "i": ["esais","esais","esait","esions","esiez","esaient"], + "f": ["èserai","èseras","èsera","èserons","èserez","èseront"], + "ps": ["esai","esas","esa","esâmes","esâtes","esèrent"], + "c": ["èserais","èserais","èserait","èserions","èseriez","èseraient"], + "s": ["èse","èses","èse","esions","esiez","èsent"], + "si": ["esasse","esasses","esât","esassions","esassiez","esassent"], + "ip": [null,"èse",null,"esons","esez",null], + "pr": "esant", + "pp": "esé", + "b": "eser" + } + }, + "v27": { + "ending": "écher", + "t": { + "p": ["èche","èches","èche","échons","échez","èchent"], + "i": ["échais","échais","échait","échions","échiez","échaient"], + "f": ["écherai","écheras","échera","écherons","écherez","écheront"], + "ps": ["échai","échas","écha","échâmes","échâtes","échèrent"], + "c": ["écherais","écherais","écherait","écherions","écheriez","écheraient"], + "s": ["èche","èches","èche","échions","échiez","èchent"], + "si": ["échasse","échasses","échât","échassions","échassiez","échassent"], + "ip": [null,"èche",null,"échons","échez",null], + "pr": "échant", + "pp": "éché", + "b": "écher" + } + }, + "v28": { + "ending": "érer", + "t": { + "p": ["ère","ères","ère","érons","érez","èrent"], + "i": ["érais","érais","érait","érions","ériez","éraient"], + "f": ["érerai","éreras","érera","érerons","érerez","éreront"], + "ps": ["érai","éras","éra","érâmes","érâtes","érèrent"], + "c": ["érerais","érerais","érerait","érerions","éreriez","éreraient"], + "s": ["ère","ères","ère","érions","ériez","èrent"], + "si": ["érasse","érasses","érât","érassions","érassiez","érassent"], + "ip": [null,"ère",null,"érons","érez",null], + "pr": "érant", + "pp": "éré", + "b": "érer" + } + }, + "v29": { + "ending": "evrer", + "t": { + "p": ["èvre","èvres","èvre","evrons","evrez","èvrent"], + "i": ["evrais","evrais","evrait","evrions","evriez","evraient"], + "f": ["èvrerai","èvreras","èvrera","èvrerons","èvrerez","èvreront"], + "ps": ["evrai","evras","evra","evrâmes","evrâtes","evrèrent"], + "c": ["èvrerais","èvrerais","èvrerait","èvrerions","èvreriez","èvreraient"], + "s": ["èvre","èvres","èvre","evrions","evriez","èvrent"], + "si": ["evrasse","evrasses","evrât","evrassions","evrassiez","evrassent"], + "ip": [null,"èvre",null,"evrons","evrez",null], + "pr": "evrant", + "pp": "evré", + "b": "evrer" + } + }, + "v30": { + "ending": "éder", + "t": { + "p": ["ède","èdes","ède","édons","édez","èdent"], + "i": ["édais","édais","édait","édions","édiez","édaient"], + "f": ["éderai","éderas","édera","éderons","éderez","éderont"], + "ps": ["édai","édas","éda","édâmes","édâtes","édèrent"], + "c": ["éderais","éderais","éderait","éderions","éderiez","éderaient"], + "s": ["ède","èdes","ède","édions","édiez","èdent"], + "si": ["édasse","édasses","édât","édassions","édassiez","édassent"], + "ip": [null,"ède",null,"édons","édez",null], + "pr": "édant", + "pp": "édé", + "b": "éder" + } + }, + "v31": { + "ending": "éper", + "t": { + "p": ["èpe","èpes","èpe","épons","épez","èpent"], + "i": ["épais","épais","épait","épions","épiez","épaient"], + "f": ["éperai","éperas","épera","éperons","éperez","éperont"], + "ps": ["épai","épas","épa","épâmes","épâtes","épèrent"], + "c": ["éperais","éperais","éperait","éperions","éperiez","éperaient"], + "s": ["èpe","èpes","èpe","éprions","épiez","èpent"], + "si": ["épasse","épasses","épât","épassions","épassiez","épassent"], + "ip": [null,"èpe",null,"épons","épez",null], + "pr": "épant", + "pp": "épé", + "b": "éper" + } + }, + "v32": { + "ending": "eper", + "t": { + "p": ["èpe","èpes","èpe","epons","epez","èpent"], + "i": ["epais","epais","epait","epions","epiez","epaient"], + "f": ["eperai","eperas","epera","eperons","eperez","eperont"], + "ps": ["epai","epas","epa","epâmes","epâtes","epèrent"], + "c": ["eperais","eperais","eperait","eperions","eperiez","eperaient"], + "s": ["èpe","èpes","èpe","eprions","epiez","èpent"], + "si": ["epasse","epasses","epât","epassions","epassiez","epassent"], + "ip": [null,"èpe",null,"epons","epez",null], + "pr": "epant", + "pp": "epé", + "b": "eper" + } + }, + "v33": { + "ending": "éser", + "t": { + "p": ["èse","èses","èse","ésons","ésez","èsent"], + "i": ["ésais","ésais","ésait","ésions","ésiez","ésaient"], + "f": ["éserai","éseras","ésera","éserons","éserez","éseront"], + "ps": ["ésai","ésas","ésa","ésâmes","ésâtes","ésèrent"], + "c": ["éserais","éserais","éserait","éserions","éseriez","éseraient"], + "s": ["èse","èses","èse","ésrions","ésiez","èsent"], + "si": ["ésasse","ésasses","ésât","ésassions","ésassiez","ésassent"], + "ip": [null,"èse",null,"ésons","ésez",null], + "pr": "ésant", + "pp": "ésé", + "b": "éser" + } + }, + "v34": { + "ending": "émer", + "t": { + "p": ["ème","èmes","ème","émons","émez","èment"], + "i": ["émais","émais","émait","émions","émiez","émaient"], + "f": ["émerai","émeras","émera","émerons","émerez","émeront"], + "ps": ["émai","émas","éma","émâmes","émâtes","émèrent"], + "c": ["émerais","émerais","émerait","émerions","émeriez","émeraient"], + "s": ["ème","èmes","ème","émrions","émiez","èment"], + "si": ["émasse","émasses","émât","émassions","émassiez","émassent"], + "ip": [null,"ème",null,"émons","émez",null], + "pr": "émant", + "pp": "émé", + "b": "émer" + } + }, + "v35": { + "ending": "éger", + "t": { + "p": ["ège","èges","ège","égeons","égez","ègent"], + "i": ["égeais","égeais","égeait","égions","égiez","égeaient"], + "f": ["ègerai","ègeras","ègera","ègerons","ègerez","ègeront"], + "ps": ["égeai","égeas","égea","égeâmes","égeâtes","égèrent"], + "c": ["ègerais","ègerais","ègerait","ègerions","ègeriez","ègeraient"], + "s": ["ège","èges","ège","égions","égiez","ègent"], + "si": ["égeasse","égeasses","égeât","égeassions","égeassiez","égeassent"], + "ip": [null,"ège",null,"égeons","égez",null], + "pr": "égeant", + "pp": "égé", + "b": "éger" + } + }, + "v36": { + "ending": "er", + "t": { + "p": ["e","es","e","ons","ez","ent"], + "i": ["ais","ais","ait","ions","iez","aient"], + "f": ["erai","eras","era","erons","erez","eront"], + "ps": ["ai","as","a","âmes","âtes","èrent"], + "c": ["erais","erais","erait","erions","eriez","eraient"], + "s": ["e","es","e","ions","iez","ent"], + "si": ["asse","asses","ât","assions","assiez","assent"], + "ip": [null,"e",null,"ons","ez",null], + "pr": "ant", + "pp": "é", + "b": "er" + } + }, + "v37": { + "ending": "évrer", + "t": { + "p": ["èvre","èvres","èvre","évrons","évrez","èvrent"], + "i": ["évrais","évrais","évrait","évrions","évriez","évraient"], + "f": ["évrerai","évreras","évrera","évrerons","évrerez","évreront"], + "ps": ["évrai","évras","évra","évrâmes","évrâtes","évrèrent"], + "c": ["évrerais","évrerais","évrerait","évrerions","évreriez","évreraient"], + "s": ["èvre","èvres","èvre","évrions","évriez","èvrent"], + "si": ["évrasse","évrasses","évrât","évrassions","évrassiez","évrassent"], + "ip": [null,"èvre",null,"évrons","évrez",null], + "pr": "évrant", + "pp": "évré", + "b": "évrer" + } + }, + "v38": { + "ending": "écrer", + "t": { + "p": ["ècre","ècres","ècre","écrons","écrez","ècrent"], + "i": ["écrais","écrais","écrait","écrions","écriez","écraient"], + "f": ["écrerai","écreras","écrera","écrerons","écrerez","écreront"], + "ps": ["écrai","écras","écra","écrâmes","écrâtes","écrèrent"], + "c": ["écrerais","écrerais","écrerait","écrerions","écreriez","écreraient"], + "s": ["ècre","ècres","ècre","écrions","écriez","ècrent"], + "si": ["écrasse","écrasses","écrât","écrassions","écrassiez","écrassent"], + "ip": [null,"ècre",null,"écrons","écrez",null], + "pr": "écrant", + "pp": "écré", + "b": "écrer" + } + }, + "v39": { + "ending": "érir", + "t": { + "p": ["iers","iers","iert","érons","érez","ièrent"], + "i": ["érais","érais","érait","érions","ériez","éraient"], + "f": ["errai","erras","erra","errons","errez","erront"], + "ps": ["is","is","it","îmes","îtes","irent"], + "c": ["errais","errais","errait","errions","erriez","erraient"], + "s": ["ière","ières","ière","érions","ériez","ièrent"], + "si": ["isse","isses","ît","issions","issiez","issent"], + "ip": [null,"iers",null,"érons","érez",null], + "pr": "érant", + "pp": "is", + "b": "érir" + } + }, + "v40": { + "ending": "érir", + "t": { + "p": [null,null,null,null,null,null], + "i": [null,null,null,null,null,null], + "f": [null,null,null,null,null,null], + "ps": [null,null,null,null,null,null], + "c": [null,null,null,null,null,null], + "s": [null,null,null,null,null,null], + "si": [null,null,null,null,null,null], + "ip": [null,null,null,null,null,null], + "pr": null, + "pp": null, + "b": "érir" + } + }, + "v41": { + "ending": "ïr", + "t": { + "p": ["is","is","it","ïssons","ïssez","ïssent"], + "i": ["ïssais","ïssais","ïssait","ïssions","ïssiez","ïssaient"], + "f": ["ïrai","ïras","ïra","ïrons","ïrez","ïront"], + "ps": ["ïs","ïs","ït","ïmes","ïtes","ïrent"], + "c": ["ïrais","ïrais","ïrait","ïrions","ïriez","ïraient"], + "s": ["ïsse","ïsses","ïsse","ïssions","ïssiez","ïssent"], + "si": ["ïsse","ïsses","ït","ïssions","ïssiez","ïssent"], + "ip": [null,"is",null,"ïssons","ïssez",null], + "pr": "ïssant", + "pp": "ï", + "b": "ïr" + } + }, + "v42": { + "ending": "ïr", + "t": { + "p": ["ïs","ïs","ït","ïssons","ïssez","ïssent"], + "i": ["ïssais","ïssais","ïssait","ïssions","ïssiez","ïssaient"], + "f": ["ïrai","ïras","ïra","ïrons","ïrez","ïront"], + "ps": ["ïs","ïs","ït","ïmes","ïtes","ïrent"], + "c": ["ïrais","ïrais","ïrait","ïrions","ïriez","ïraient"], + "s": ["ïsse","ïsses","ïsse","ïssions","ïssiez","ïssent"], + "si": ["ïsse","ïsses","ït","ïssions","ïssiez","ïssent"], + "ip": [null,"ïs",null,"ïssons","ïssez",null], + "pr": "ïssant", + "pp": "ï", + "b": "ïr" + } + }, + "v43": { + "ending": "eurir", + "t": { + "p": ["euris","euris","eurit","eurissons","eurissez","eurissent"], + "i": ["eurissais","eurissais","eurissait","eurissions","eurissiez","eurissaient"], + "f": ["eurirai","euriras","eurira","eurirons","eurirez","euriront"], + "ps": ["euris","euris","eurit","eurîmes","eurîtes","eurirent"], + "c": ["eurirais","eurirais","eurirait","euririons","euririez","euriraient"], + "s": ["eurisse","eurisses","eurisse","eurissions","eurissiez","eurissent"], + "si": ["eurisse","eurisses","eurît","eurissions","eurissiez","eurissent"], + "ip": [null,"euris",null,"eurissons","eurissez",null], + "pr": "eurissant", + "pp": "euri", + "b": "eurir" + } + }, + "v44": { + "ending": "rir", + "t": { + "p": ["re","res","re","rons","rez","rent"], + "i": ["rais","rais","rait","rions","riez","raient"], + "f": ["rirai","riras","rira","rirons","rirez","riront"], + "ps": ["ris","ris","rit","rîmes","rîtes","rirent"], + "c": ["rirais","rirais","rirait","ririons","ririez","riraient"], + "s": ["re","res","re","rions","riez","rent"], + "si": ["risse","risses","rît","rissions","rissiez","rissent"], + "ip": [null,"re",null,"rons","rez",null], + "pr": "rant", + "pp": "ert", + "b": "rir" + } + }, + "v45": { + "ending": "mir", + "t": { + "p": ["s","s","t","mons","mez","ment"], + "i": ["mais","mais","mait","mions","miez","maient"], + "f": ["mirai","miras","mira","mirons","mirez","miront"], + "ps": ["mis","mis","mit","mîmes","mîtes","mirent"], + "c": ["mirais","mirais","mirait","mirions","miriez","miraient"], + "s": ["me","mes","me","mions","miez","ment"], + "si": ["misse","misses","mît","missions","missiez","missent"], + "ip": [null,"s",null,"mons","mez",null], + "pr": "mant", + "pp": "mi", + "b": "mir" + } + }, + "v46": { + "ending": "tir", + "t": { + "p": ["s","s","t","tons","tez","tent"], + "i": ["tais","tais","tait","tions","tiez","taient"], + "f": ["tirai","tiras","tira","tirons","tirez","tiront"], + "ps": ["tis","tis","tit","tîmes","tîtes","tirent"], + "c": ["tirais","tirais","tirait","tirions","tiriez","tiraient"], + "s": ["te","tes","te","tions","tiez","tent"], + "si": ["tisse","tisses","tît","tissions","tissiez","tissent"], + "ip": [null,"s",null,"tons","tez",null], + "pr": "tant", + "pp": "ti", + "b": "tir" + } + }, + "v47": { + "ending": "vir", + "t": { + "p": ["s","s","t","vons","vez","vent"], + "i": ["vais","vais","vait","vions","viez","vaient"], + "f": ["virai","viras","vira","virons","virez","viront"], + "ps": ["vis","vis","vit","vîmes","vîtes","virent"], + "c": ["virais","virais","virait","virions","viriez","viraient"], + "s": ["ve","ves","ve","vions","viez","vent"], + "si": ["visse","visses","vît","vissions","vissiez","vissent"], + "ip": [null,"s",null,"vons","vez",null], + "pr": "vant", + "pp": "vi", + "b": "vir" + } + }, + "v48": { + "ending": "illir", + "t": { + "p": ["s","s","t","illons","illez","illent"], + "i": ["illais","illais","illait","illions","illiez","illaient"], + "f": ["illirai","illiras","illira","illirons","illirez","illiront"], + "ps": ["illis","illis","illit","illîmes","illîtes","illirent"], + "c": ["illirais","illirais","illirait","illirions","illiriez","illiraient"], + "s": ["ille","illes","ille","illions","illiez","illent"], + "si": ["illisse","illisses","illît","illissions","illissiez","illissent"], + "ip": [null,"s",null,"illons","illez",null], + "pr": "illant", + "pp": "illi", + "b": "illir" + } + }, + "v49": { + "ending": "ir", + "t": { + "p": ["e","es","e","ons","ez","ent"], + "i": ["ais","ais","ait","ions","iez","aient"], + "f": ["irai","iras","ira","irons","irez","iront"], + "ps": ["is","is","it","îmes","îtes","irent"], + "c": ["irais","irais","irait","irions","iriez","iraient"], + "s": ["e","es","e","ions","iez","ent"], + "si": ["isse","isses","ît","issions","issiez","issent"], + "ip": [null,"e",null,"ons","ez",null], + "pr": "ant", + "pp": "i", + "b": "ir" + } + }, + "v50": { + "ending": "ir", + "t": { + "p": ["is","is","it","issons","issez","issent"], + "i": ["issais","issais","issait","issions","issiez","issaient"], + "f": ["irai","iras","ira","irons","irez","iront"], + "ps": ["is","is","it","îmes","îtes","irent"], + "c": ["irais","irais","irait","irions","iriez","iraient"], + "s": ["isse","isses","isse","issions","issiez","issent"], + "si": ["isse","isses","ît","issions","issiez","issent"], + "ip": [null,"is",null,"issons","issez",null], + "pr": "issant", + "pp": "i", + "b": "ir" + } + }, + "v51": { + "ending": "ir", + "t": { + "p": ["e","es","e","ons","ez","ent"], + "i": ["ais","ais","ait","ions","iez","aient"], + "f": ["erai","eras","era","erons","erez","eront"], + "ps": ["is","is","it","îmes","îtes","irent"], + "c": ["erais","erais","erait","erions","eriez","eraient"], + "s": ["e","es","e","ions","iez","ent"], + "si": ["isse","isses","ît","issions","issiez","issent"], + "ip": [null,"e",null,"ons","ez",null], + "pr": "ant", + "pp": "i", + "b": "ir" + } + }, + "v52": { + "ending": "enir", + "t": { + "p": ["iens","iens","ient","enons","enez","iennent"], + "i": ["enais","enais","enait","enions","eniez","enaient"], + "f": ["iendrai","iendras","iendra","iendrons","iendrez","iendront"], + "ps": ["ins","ins","int","înmes","întes","inrent"], + "c": ["iendrais","iendrais","iendrait","iendrions","iendriez","iendraient"], + "s": ["ienne","iennes","ienne","enions","eniez","iennent"], + "si": ["insse","insses","înt","inssions","inssiez","inssent"], + "ip": [null,"iens",null,"enons","enez",null], + "pr": "enant", + "pp": "enu", + "b": "enir" + } + }, + "v53": { + "ending": "enir", + "t": { + "p": [null,null,"ient",null,null,null], + "i": [null,null,"enait",null,null,null], + "f": [null,null,"iendra",null,null,null], + "ps": [null,null,"int",null,null,null], + "c": [null,null,"iendrait",null,null,null], + "s": [null,null,"ienne",null,null,null], + "si": [null,null,"înt",null,null,null], + "ip": [null,null,null,null,null,null], + "pr": "enant", + "pp": "enu", + "b": "enir" + } + }, + "v54": { + "ending": "ir", + "t": { + "p": ["is","is","it","yons","yez","ient"], + "i": ["yais","yais","yait","yions","yiez","yaient"], + "f": ["irai","iras","ira","irons","irez","iront"], + "ps": ["is","is","it","îmes","îtes","irent"], + "c": ["irais","irais","irait","irions","iriez","iraient"], + "s": ["ie","ies","ie","yions","yiez","ient"], + "si": ["isse","isses","ît","issions","issiez","issent"], + "ip": [null,"is",null,"yons","yez",null], + "pr": "yant", + "pp": "i", + "b": "ir" + } + }, + "v55": { + "ending": "ourir", + "t": { + "p": ["eurs","eurs","eurt","ourons","ourez","eurent"], + "i": ["ourais","ourais","ourait","ourions","ouriez","ouraient"], + "f": ["ourrai","ourras","ourra","ourrons","ourrez","ourront"], + "ps": ["ourus","ourus","ourut","ourûmes","ourûtes","oururent"], + "c": ["ourrais","ourrais","ourrait","ourrions","ourriez","ourraient"], + "s": ["eure","eures","eure","ourions","ouriez","eurent"], + "si": ["ourusse","ourusses","ourût","ourussions","ourussiez","ourussent"], + "ip": [null,"eurs",null,"ourons","ourez",null], + "pr": "ourant", + "pp": "ort", + "b": "ourir" + } + }, + "v56": { + "ending": "ir", + "t": { + "p": ["s","s","","ons","ez","ent"], + "i": ["ais","ais","ait","ions","iez","aient"], + "f": ["irai","iras","ira","irons","irez","iront"], + "ps": ["is","is","it","îmes","îtes","irent"], + "c": ["irais","irais","irait","irions","iriez","iraient"], + "s": ["e","es","e","ions","iez","ent"], + "si": ["isse","isses","ît","issions","issiez","issent"], + "ip": [null,"s",null,"ons","ez",null], + "pr": "ant", + "pp": "u", + "b": "ir" + } + }, + "v57": { + "ending": "ir", + "t": { + "p": ["s","s","t","ons","ez","ent"], + "i": ["ais","ais","ait","ions","iez","aient"], + "f": ["rai","ras","ra","rons","rez","ront"], + "ps": ["us","us","ut","ûmes","ûtes","urent"], + "c": ["rais","rais","rait","rions","riez","raient"], + "s": ["e","es","e","ions","iez","ent"], + "si": ["usse","usses","ût","ussions","ussiez","ussent"], + "ip": [null,"s",null,"ons","ez",null], + "pr": "ant", + "pp": "u", + "b": "ir" + } + }, + "v58": { + "ending": "ir", + "t": { + "p": ["is","is","it","issons","issez","issent"], + "i": ["issais","issais","issait","issions","issiez","issaient"], + "f": ["irai","iras","ira","irons","irez","iront"], + "ps": ["is","is","it","îmes","îtes","irent"], + "c": ["irais","irais","irait","irions","iriez","iraient"], + "s": ["isse","isses","isse","issions","issiez","issent"], + "si": ["isse","isses","ît","issions","issiez","issent"], + "ip": [null,"is",null,"issons","issez",null], + "pr": "issant", + "pp": "i", + "b": "ir" + } + }, + "v59": { + "ending": "ir", + "t": { + "p": ["is","is","it","ons","ez","ent"], + "i": ["ais","ais","ait","ions","iez","aient"], + "f": ["irai","iras","ira","irons","irez","iront"], + "ps": ["is","is","it","îmes","îtes","irent"], + "c": ["irais","irais","irait","irions","iriez","iraient"], + "s": ["e","es","e","ions","iez","ent"], + "si": ["isse","isses","ît","issions","issiez","issent"], + "ip": [null,"is",null,"ons","ez",null], + "pr": "ant", + "pp": "i", + "b": "ir" + } + }, + "v60": { + "ending": "ire", + "t": { + "p": ["is","is","it","issons","issez","issent"], + "i": ["issais","issais","issait","issions","issiez","issaient"], + "f": ["irai","iras","ira","irons","irez","iront"], + "ps": ["is","is","it","îmes","îtes","irent"], + "c": ["irais","irais","irait","irions","iriez","iraient"], + "s": ["isse","isses","isse","issions","issiez","issent"], + "si": ["isse","isses","ît","issions","issiez","issent"], + "ip": [null,"is",null,"issons","issez",null], + "pr": "issant", + "pp": "it", + "b": "ire" + } + }, + "v61": { + "ending": "illir", + "t": { + "p": ["ux","ux","ut","illons","illez","illent"], + "i": ["illais","illais","illait","illions","illiez","illaient"], + "f": ["illirai","illiras","illira","illirons","illirez","illiront"], + "ps": ["illis","illis","illit","illîmes","illîtes","illirent"], + "c": ["illirais","illirais","illirait","illirions","illiriez","illiraient"], + "s": ["illisse","illisses","illisse","illissions","illissiez","illissent"], + "si": ["illisse","illisses","illît","illissions","illissiez","illissent"], + "ip": [null,null,null,null,null,null], + "pr": "illant", + "pp": "illi", + "b": "illir" + } + }, + "v62": { + "ending": "ésir", + "t": { + "p": ["is","is","ît","isons","isez","isent"], + "i": ["isais","isais","isait","isions","isiez","isaient"], + "f": [null,null,null,null,null,null], + "ps": [null,null,null,null,null,null], + "c": [null,null,null,null,null,null], + "s": [null,null,null,null,null,null], + "si": [null,null,null,null,null,null], + "ip": [null,null,null,null,null,null], + "pr": "isant", + "pp": null, + "b": "ésir" + } + }, + "v63": { + "ending": "cevoir", + "t": { + "p": ["çois","çois","çoit","cevons","cevez","çoivent"], + "i": ["cevais","cevais","cevait","cevions","ceviez","cevaient"], + "f": ["cevrai","cevras","cevra","cevrons","cevrez","cevront"], + "ps": ["çus","çus","çut","çûmes","çûtes","çurent"], + "c": ["cevrais","cevrais","cevrait","cevrions","cevriez","cevraient"], + "s": ["çoive","çoives","çoive","cevions","ceviez","çoivent"], + "si": ["çusse","çusses","çût","çussions","çussiez","çussent"], + "ip": [null,"çois",null,"cevons","cevez",null], + "pr": "cevant", + "pp": "çu", + "b": "cevoir" + } + }, + "v64": { + "ending": "evoir", + "t": { + "p": ["ois","ois","oit","evons","evez","oivent"], + "i": ["evais","evais","evait","evions","eviez","evaient"], + "f": ["evrai","evras","evra","evrons","evrez","evront"], + "ps": ["us","us","ut","ûmes","ûtes","urent"], + "c": ["evrais","evrais","evrait","evrions","evriez","evraient"], + "s": ["oive","oives","oive","evions","eviez","oivent"], + "si": ["usse","usses","ût","ussions","ussiez","ussent"], + "ip": [null,"ois",null,"evons","evez",null], + "pr": "evant", + "pp": "û", + "b": "evoir" + } + }, + "v65": { + "ending": "ouvoir", + "t": { + "p": ["eus","eus","eut","ouvons","ouvez","euvent"], + "i": ["ouvais","ouvais","ouvait","ouvions","ouviez","ouvaient"], + "f": ["ouvrai","ouvras","ouvra","ouvrons","ouvrez","ouvront"], + "ps": ["us","us","ut","ûmes","ûtes","urent"], + "c": ["ouvrais","ouvrais","ouvrait","ouvrions","ouvriez","ouvraient"], + "s": ["euve","euves","euve","ouvions","ouviez","euvent"], + "si": ["usse","usses","ût","ussions","ussiez","ussent"], + "ip": [null,"eus",null,"ouvons","ouvez",null], + "pr": "ouvant", + "pp": "u", + "b": "ouvoir" + } + }, + "v66": { + "ending": "ouvoir", + "t": { + "p": ["eus","eus","eut","ouvons","ouvez","euvent"], + "i": ["ouvais","ouvais","ouvait","ouvions","ouviez","ouvaient"], + "f": ["ouvrai","ouvras","ouvra","ouvrons","ouvrez","ouvront"], + "ps": ["us","us","ut","ûmes","ûtes","urent"], + "c": ["ouvrais","ouvrais","ouvrait","ouvrions","ouvriez","ouvraient"], + "s": ["euve","euves","euve","ouvions","ouviez","euvent"], + "si": ["usse","usses","ût","ussions","ussiez","ussent"], + "ip": [null,"eus",null,"ouvons","ouvez",null], + "pr": "ouvant", + "pp": "u", + "b": "ouvoir" + } + }, + "v67": { + "ending": "avoir", + "t": { + "p": ["ais","ais","ait","avons","avez","avent"], + "i": ["avais","avais","avait","avions","aviez","avaient"], + "f": ["aurai","auras","aura","aurons","aurez","auront"], + "ps": ["us","us","ut","ûmes","ûtes","urent"], + "c": ["aurais","aurais","aurait","aurions","auriez","auraient"], + "s": ["ache","aches","ache","achions","achiez","achent"], + "si": ["usse","usses","ût","ussions","ussiez","ussent"], + "ip": [null,"ache",null,"achons","achez",null], + "pr": "achant", + "pp": "u", + "b": "avoir" + } + }, + "v68": { + "ending": "ouloir", + "t": { + "p": ["eux","eux","eut","oulons","oulez","eulent"], + "i": ["oulais","oulais","oulait","oulions","ouliez","oulaient"], + "f": ["oudrai","oudras","oudra","oudrons","oudrez","oudront"], + "ps": ["oulus","oulus","oulut","oulûmes","oulûtes","oulurent"], + "c": ["oudrais","oudrais","oudrait","oudrions","oudriez","oudraient"], + "s": ["euille","euilles","euille","oulions","ouliez","euillent"], + "si": ["oulusse","oulusses","oulût","oulussions","oulussiez","oulussent"], + "ip": [null,"euille",null,"oulons","euillez",null], + "pr": "oulant", + "pp": "oulu", + "b": "ouloir" + } + }, + "v69": { + "ending": "loir", + "t": { + "p": ["ux","ux","ut","lons","lez","lent"], + "i": ["lais","lais","lait","lions","liez","laient"], + "f": ["udrai","udras","udra","udrons","udrez","udront"], + "ps": ["lus","lus","lut","lûmes","lûtes","lurent"], + "c": ["udrais","udrais","udrait","udrions","udriez","udraient"], + "s": ["ille","illes","ille","lions","liez","illent"], + "si": ["lusse","lusses","lût","lussions","lussiez","lussent"], + "ip": [null,"ux",null,"lons","lez",null], + "pr": "lant", + "pp": "lu", + "b": "loir" + } + }, + "v70": { + "ending": "loir", + "t": { + "p": ["ux","ux","ut","lons","lez","lent"], + "i": ["lais","lais","lait","lions","liez","laient"], + "f": ["udrai","udras","udra","udrons","udrez","udront"], + "ps": ["lus","lus","lut","lûmes","lûtes","lurent"], + "c": ["udrais","udrais","udrait","udrions","udriez","udraient"], + "s": ["le","les","le","lions","liez","lent"], + "si": ["lusse","lusses","lût","lussions","lussiez","lussent"], + "ip": [null,"ux",null,"lons","lez",null], + "pr": "lant", + "pp": "lu", + "b": "loir" + } + }, + "v71": { + "ending": "ouvoir", + "t": { + "p": ["eux","eux","eut","ouvons","ouvez","euvent"], + "i": ["ouvais","ouvais","ouvait","ouvions","ouviez","ouvaient"], + "f": ["ourrai","ourras","ourra","ourrons","ourrez","ourront"], + "ps": ["us","us","ut","ûmes","ûtes","urent"], + "c": ["ourrais","ourrais","ourrait","ourrions","ourriez","ourraient"], + "s": ["uisse","uisses","uisse","uissions","uissiez","uissent"], + "si": ["usse","usses","ût","ussions","ussiez","ussent"], + "ip": [null,null,null,null,null,null], + "pr": "ouvant", + "pp": "u", + "b": "ouvoir" + } + }, + "v72": { + "ending": "oir", + "t": { + "p": ["ois","ois","oit","oyons","oyez","oient"], + "i": ["oyais","oyais","oyait","oyions","oyiez","oyaient"], + "f": ["errai","erras","erra","errons","errez","erront"], + "ps": ["is","is","it","îmes","îtes","irent"], + "c": ["errais","errais","errait","errions","erriez","erraient"], + "s": ["oie","oies","oie","oyions","oyiez","oient"], + "si": ["isse","isses","ît","issions","issiez","issent"], + "ip": [null,"ois",null,"oyons","oyez",null], + "pr": "oyant", + "pp": "u", + "b": "oir" + } + }, + "v73": { + "ending": "oir", + "t": { + "p": ["ois","ois","oit","oyons","oyez","oient"], + "i": ["oyais","oyais","oyait","oyions","oyiez","oyaient"], + "f": ["oirai","oiras","oira","oirons","oirez","oiront"], + "ps": ["is","is","it","îmes","îtes","irent"], + "c": ["oirais","oirais","oirait","oirions","oiriez","oiraient"], + "s": ["oie","oies","oie","oyions","oyiez","oient"], + "si": ["isse","isses","ît","issions","issiez","issent"], + "ip": [null,"ois",null,"oyons","oyez",null], + "pr": "oyant", + "pp": "u", + "b": "oir" + } + }, + "v74": { + "ending": "eoir", + "t": { + "p": ["ieds","ieds","ied","eyons","eyez","eyent"], + "i": ["eyais","eyais","eyait","eyions","eyiez","eyaient"], + "f": ["iérai","iéras","iéra","iérons","iérez","iéront"], + "ps": ["is","is","it","îmes","îtes","irent"], + "c": ["iérais","iérais","iérait","iérions","iériez","iéraient"], + "s": ["eye","eyes","eye","eyions","eyiez","eyent"], + "si": ["isse","isses","ît","issions","issiez","issent"], + "ip": [null,"ieds",null,"eyons","eyez",null], + "pr": "eyant", + "pp": "is", + "b": "eoir" + } + }, + "v75": { + "ending": "eoir", + "t": { + "p": ["ieds","ieds","ied","eyons","eyez","eyent"], + "i": ["eyais","eyais","eyait","eyions","eyiez","eyaient"], + "f": ["iérai","iéras","iéra","iérons","iérez","iéront"], + "ps": ["is","is","it","îmes","îtes","irent"], + "c": ["iérais","iérais","iérait","iérions","iériez","iéraient"], + "s": ["eye","eyes","eye","eyions","eyiez","eyent"], + "si": ["isse","isses","ît","issions","issiez","issent"], + "ip": [null,"ieds",null,"eyons","eyez",null], + "pr": "eyant", + "pp": "is", + "b": "eoir" + } + }, + "v76": { + "ending": "eoir", + "t": { + "p": ["ois","ois","oit","oyons","oyez","oient"], + "i": ["oyais","oyais","oyait","oyions","oyiez","oyaient"], + "f": ["eoirai","eoiras","eoira","eoirons","eoirez","eoiront"], + "ps": ["is","is","it","îmes","îtes","irent"], + "c": ["eoirais","eoirais","eoirait","eoirions","eoiriez","eoiraient"], + "s": ["oie","oies","oie","oyions","oyiez","oient"], + "si": ["isse","isses","ît","issions","issiez","issent"], + "ip": [null,"ois",null,"oyons","oyez",null], + "pr": "oyant", + "pp": "is", + "b": "eoir" + } + }, + "v77": { + "ending": "oir", + "t": { + "p": ["ois","ois","oit","oyons","oyez","oient"], + "i": ["oyais","oyais","oyait","oyions","oyiez","oyaient"], + "f": ["oirai","oiras","oira","oirons","oirez","oiront"], + "ps": ["is","is","it","îmes","îtes","irent"], + "c": ["oirais","oirais","oirait","oirions","oiriez","oiraient"], + "s": ["oie","oies","oie","oyions","oyiez","oient"], + "si": ["isse","isses","ît","issions","issiez","issent"], + "ip": [null,"ois",null,"oyons","oyez",null], + "pr": "oyant", + "pp": "is", + "b": "oir" + } + }, + "v78": { + "ending": "eoir", + "t": { + "p": [null,null,"ied",null,null,"iéent"], + "i": [null,null,"eyait",null,null,"eyaient"], + "f": [null,null,"iéra",null,null,"iéront"], + "ps": [null,null,null,null,null,null], + "c": [null,null,"iérait",null,null,"iéraient"], + "s": [null,null,"iée",null,null,"iéent"], + "si": [null,null,null,null,null,null], + "ip": [null,null,null,null,null,null], + "pr": "éant", + "pp": "is", + "b": "eoir" + } + }, + "v79": { + "ending": "euvoir", + "t": { + "p": [null,null,"eut",null,null,"euvent"], + "i": [null,null,"euvait",null,null,"euvaient"], + "f": [null,null,"euvra",null,null,"euvront"], + "ps": [null,null,"ut",null,null,null], + "c": [null,null,"euvrait",null,null,"euvraient"], + "s": [null,null,"euve",null,null,"euvent"], + "si": [null,null,"ût",null,null,null], + "ip": [null,null,null,null,null,null], + "pr": "euvant", + "pp": "u", + "b": "euvoir" + } + }, + "v80": { + "ending": "lloir", + "t": { + "p": [null,null,"ut",null,null,null], + "i": [null,null,"llait",null,null,null], + "f": [null,null,"udra",null,null,null], + "ps": [null,null,"llut",null,null,null], + "c": [null,null,"udrait",null,null,null], + "s": [null,null,"ille",null,null,null], + "si": [null,null,"llût",null,null,null], + "ip": [null,null,null,null,null,null], + "pr": null, + "pp": "llu", + "b": "lloir" + } + }, + "v81": { + "ending": "oir", + "t": { + "p": ["ois","ois","oit","oyons","oyez","oient"], + "i": ["oyais","oyais","oyait","oyions","oyiez","oyaient"], + "f": ["oirai","oiras","oira","oirons","oirez","oiront"], + "ps": ["us","us","ut","ûmes","ûtes","urent"], + "c": ["oirais","oirais","oirait","oirions","oiriez","oiraient"], + "s": ["oie","oies","oie","oyions","oyiez","oient"], + "si": ["usse","usses","ût","ussions","ussiez","ussent"], + "ip": [null,null,null,null,null,null], + "pr": null, + "pp": "u", + "b": "oir" + } + }, + "v82": { + "ending": "oir", + "t": { + "p": ["ois","ois","oit","oyons","oyez","oient"], + "i": ["oyais","oyais","oyait","oyions","oyiez","oyaient"], + "f": ["oirai","oiras","oira","oirons","oirez","oiront"], + "ps": ["us","us","ut","ûmes","ûtes","urent"], + "c": ["oirais","oirais","oirait","oirions","oiriez","oiraient"], + "s": ["oie","oies","oie","oyions","oyiez","oient"], + "si": ["usse","usses","ût","ussions","ussiez","ussent"], + "ip": [null,"ois",null,"oyons","oyez",null], + "pr": "oyant", + "pp": "u", + "b": "oir" + } + }, + "v83": { + "ending": "oir", + "t": { + "p": ["ois","ois","oit","oyons","oyez","oient"], + "i": [null,null,null,null,null,null], + "f": ["oirai","oiras","oira","oirons","oirez","oiront"], + "ps": ["us","us","ut","ûmes","ûtes","urent"], + "c": ["oirais","oirais","oirait","oirions","oiriez","oiraient"], + "s": [null,null,null,null,null,null], + "si": [null,null,"ût",null,null,null], + "ip": [null,null,null,null,null,null], + "pr": "oyant", + "pp": "u", + "b": "oir" + } + }, + "v84": { + "ending": "oir", + "t": { + "p": [null,null,"oit",null,null,"oient"], + "i": [null,null,"oyait",null,null,"oyaient"], + "f": [null,null,"oira",null,null,"oiront"], + "ps": [null,null,"ut",null,null,"urent"], + "c": [null,null,"oirait",null,null,"oiraient"], + "s": [null,null,"oie",null,null,"oient"], + "si": [null,null,"ût",null,null,"ussent"], + "ip": [null,null,null,null,null,null], + "pr": "éant", + "pp": "u", + "b": "oir" + } + }, + "v85": { + "ending": "dre", + "t": { + "p": ["ds","ds","d","dons","dez","dent"], + "i": ["dais","dais","dait","dions","diez","daient"], + "f": ["drai","dras","dra","drons","drez","dront"], + "ps": ["dis","dis","dit","dîmes","dîtes","dirent"], + "c": ["drais","drais","drait","drions","driez","draient"], + "s": ["de","des","de","dions","diez","dent"], + "si": ["disse","disses","dît","dissions","dissiez","dissent"], + "ip": [null,"ds",null,"dons","dez",null], + "pr": "dant", + "pp": "du", + "b": "dre" + } + }, + "v86": { + "ending": "cre", + "t": { + "p": ["cs","cs","c","quons","quez","quent"], + "i": ["quais","quais","quait","quions","quiez","quaient"], + "f": ["crai","cras","cra","crons","crez","cront"], + "ps": ["quis","quis","quit","quîmes","quîtes","quirent"], + "c": ["crais","crais","crait","crions","criez","craient"], + "s": ["que","ques","que","quions","quiez","quent"], + "si": ["quisse","quisses","quît","quissions","quissiez","quissent"], + "ip": [null,"cs",null,"quons","quez",null], + "pr": "quant", + "pp": "cu", + "b": "cre" + } + }, + "v87": { + "ending": "tre", + "t": { + "p": ["s","s","","tons","tez","tent"], + "i": ["tais","tais","tait","tions","tiez","taient"], + "f": ["trai","tras","tra","trons","trez","tront"], + "ps": ["tis","tis","tit","tîmes","tîtes","tirent"], + "c": ["trais","trais","trait","trions","triez","traient"], + "s": ["te","tes","te","tions","tiez","tent"], + "si": ["tisse","tisses","tît","tissions","tissiez","tissent"], + "ip": [null,"s",null,"tons","tez",null], + "pr": "tant", + "pp": "tu", + "b": "tre" + } + }, + "v88": { + "ending": "tre", + "t": { + "p": ["s","s","t","tons","tez","tent"], + "i": ["tais","tais","tait","tions","tiez","taient"], + "f": ["trai","tras","tra","trons","trez","tront"], + "ps": [null,null,null,null,null,null], + "c": ["trais","trais","trait","trions","triez","traient"], + "s": ["te","tes","te","tions","tiez","tent"], + "si": [null,null,null,null,null,null], + "ip": [null,"s",null,"tons","tez",null], + "pr": "tant", + "pp": "tu", + "b": "tre" + } + }, + "v89": { + "ending": "ettre", + "t": { + "p": ["ets","ets","et","ettons","ettez","ettent"], + "i": ["ettais","ettais","ettait","ettions","ettiez","ettaient"], + "f": ["ettrai","ettras","ettra","ettrons","ettrez","ettront"], + "ps": ["is","is","it","îmes","îtes","irent"], + "c": ["ettrais","ettrais","ettrait","ettrions","ettriez","ettraient"], + "s": ["ette","ettes","ette","ettions","ettiez","ettent"], + "si": ["isse","isses","ît","issions","issiez","issent"], + "ip": [null,"ets",null,"ettons","ettez",null], + "pr": "ettant", + "pp": "is", + "b": "ettre" + } + }, + "v90": { + "ending": "endre", + "t": { + "p": ["ends","ends","end","enons","enez","ennent"], + "i": ["enais","enais","enait","enions","eniez","enaient"], + "f": ["endrai","endras","endra","endrons","endrez","endront"], + "ps": ["is","is","it","îmes","îtes","irent"], + "c": ["endrais","endrais","endrait","endrions","endriez","endraient"], + "s": ["enne","ennes","enne","enions","eniez","ennent"], + "si": ["isse","isses","ît","issions","issiez","issent"], + "ip": [null,"ends",null,"enons","enez",null], + "pr": "enant", + "pp": "is", + "b": "endre" + } + }, + "v91": { + "ending": "pre", + "t": { + "p": ["ps","ps","pt","pons","pez","pent"], + "i": ["pais","pais","pait","pions","piez","paient"], + "f": ["prai","pras","pra","prons","prez","pront"], + "ps": ["pis","pis","pit","pîmes","pîtes","pirent"], + "c": ["prais","prais","prait","prions","priez","praient"], + "s": ["pe","pes","pe","pions","piez","pent"], + "si": ["pisse","pisses","pît","pissions","pissiez","pissent"], + "ip": [null,"ps",null,"pons","pez",null], + "pr": "pant", + "pp": "pu", + "b": "pre" + } + }, + "v92": { + "ending": "dre", + "t": { + "p": ["ds","ds","d","lons","lez","lent"], + "i": ["lais","lais","lait","lions","liez","laient"], + "f": ["drai","dras","dra","drons","drez","dront"], + "ps": ["lus","lus","lut","lûmes","lûtes","lurent"], + "c": ["drais","drais","drait","drions","driez","draient"], + "s": ["le","les","le","lions","liez","lent"], + "si": ["lusse","lusses","lût","lussions","lussiez","lussent"], + "ip": [null,"ds",null,"lons","lez",null], + "pr": "lant", + "pp": "lu", + "b": "dre" + } + }, + "v93": { + "ending": "dre", + "t": { + "p": ["ds","ds","d","sons","sez","sent"], + "i": ["sais","sais","sait","sions","siez","saient"], + "f": ["drai","dras","dra","drons","drez","dront"], + "ps": ["sis","sis","sit","sîmes","sîtes","sirent"], + "c": ["drais","drais","drait","drions","driez","draient"], + "s": ["se","ses","se","sions","siez","sent"], + "si": ["sisse","sisses","sît","sissions","sissiez","sissent"], + "ip": [null,"ds",null,"sons","sez",null], + "pr": "sant", + "pp": "su", + "b": "dre" + } + }, + "v94": { + "ending": "udre", + "t": { + "p": ["us","us","ut","lvons","lvez","lvent"], + "i": ["lvais","lvais","lvait","lvions","lviez","lvaient"], + "f": ["udrai","udras","udra","udrons","udrez","udront"], + "ps": ["lus","lus","lut","lûmes","lûtes","lurent"], + "c": ["udrais","udrais","udrait","udrions","udriez","udraient"], + "s": ["lve","lves","lve","lvions","lviez","lvent"], + "si": ["lusse","lusses","lût","lussions","lussiez","lussent"], + "ip": [null,"us",null,"lvons","lvez",null], + "pr": "lvant", + "pp": "lu", + "b": "udre" + } + }, + "v95": { + "ending": "udre", + "t": { + "p": ["us","us","ut","lvons","lvez","lvent"], + "i": ["lvais","lvais","lvait","lvions","lviez","lvaient"], + "f": ["udrai","udras","udra","udrons","udrez","udront"], + "ps": [null,null,null,null,null,null], + "c": ["udrais","udrais","udrait","udrions","udriez","udraient"], + "s": ["lve","lves","lve","lvions","lviez","lvent"], + "si": [null,null,null,null,null,null], + "ip": [null,"us",null,"lvons","lvez",null], + "pr": "lvant", + "pp": "us", + "b": "udre" + } + }, + "v96": { + "ending": "udre", + "t": { + "p": ["us","us","ut","lvons","lvez","lvent"], + "i": ["lvais","lvais","lvait","lvions","lviez","lvaient"], + "f": ["udrai","udras","udra","udrons","udrez","udront"], + "ps": [null,null,null,null,null,null], + "c": ["udrais","udrais","udrait","udrions","udriez","udraient"], + "s": ["lve","lves","lve","lvions","lviez","lvent"], + "si": [null,null,null,null,null,null], + "ip": [null,"us",null,"lvons","lvez",null], + "pr": "lvant", + "pp": "us", + "b": "udre" + } + }, + "v97": { + "ending": "ndre", + "t": { + "p": ["ns","ns","nt","gnons","gnez","gnent"], + "i": ["gnais","gnais","gnait","gnions","gniez","gnaient"], + "f": ["ndrai","ndras","ndra","ndrons","ndrez","ndront"], + "ps": ["gnis","gnis","gnit","gnîmes","gnîtes","gnirent"], + "c": ["ndrais","ndrais","ndrait","ndrions","ndriez","ndraient"], + "s": ["gne","gnes","gne","gnions","gniez","gnent"], + "si": ["gnisse","gnisses","gnît","gnissions","gnissiez","gnissent"], + "ip": [null,"ns",null,"gnons","gnez",null], + "pr": "gnant", + "pp": "nt", + "b": "ndre" + } + }, + "v98": { + "ending": "ndre", + "t": { + "p": ["ns","ns","nt","gnons","gnez","gnent"], + "i": ["gnais","gnais","gnait","gnions","gniez","gnaient"], + "f": ["ndrai","ndras","ndra","ndrons","ndrez","ndront"], + "ps": ["gnis","gnis","gnit","gnîmes","gnîtes","gnirent"], + "c": ["ndrais","ndrais","ndrait","ndrions","ndriez","ndraient"], + "s": ["gne","gnes","gne","gnions","gniez","gnent"], + "si": ["gnisse","gnisses","gnît","gnissions","gnissiez","gnissent"], + "ip": [null,null,null,null,null,null], + "pr": "gnant", + "pp": null, + "b": "ndre" + } + }, + "v99": { + "ending": "vre", + "t": { + "p": ["s","s","t","vons","vez","vent"], + "i": ["vais","vais","vait","vions","viez","vaient"], + "f": ["vrai","vras","vra","vrons","vrez","vront"], + "ps": ["vis","vis","vit","vîmes","vîtes","virent"], + "c": ["vrais","vrais","vrait","vrions","vriez","vraient"], + "s": ["ve","ves","ve","vions","viez","vent"], + "si": ["visse","visses","vît","vissions","vissiez","vissent"], + "ip": [null,"s",null,"vons","vez",null], + "pr": "vant", + "pp": "vi", + "b": "vre" + } + }, + "v100": { + "ending": "ivre", + "t": { + "p": ["is","is","it","ivons","ivez","ivent"], + "i": ["ivais","ivais","ivait","ivions","iviez","ivaient"], + "f": ["ivrai","ivras","ivra","ivrons","ivrez","ivront"], + "ps": ["écus","écus","écut","écûmes","écûtes","écurent"], + "c": ["ivrais","ivrais","ivrait","ivrions","ivriez","ivraient"], + "s": ["ive","ives","ive","ivions","iviez","ivent"], + "si": ["écusse","écusses","écût","écussions","écussiez","écussent"], + "ip": [null,"is",null,"ivons","ivez",null], + "pr": "ivant", + "pp": "écu", + "b": "ivre" + } + }, + "v101": { + "ending": "aître", + "t": { + "p": ["ais","ais","aît","aissons","aissez","aissent"], + "i": ["aissais","aissais","aissait","aissions","aissiez","aissaient"], + "f": ["aîtrai","aîtras","aîtra","aîtrons","aîtrez","aîtront"], + "ps": ["us","us","ut","ûmes","ûtes","urent"], + "c": ["aîtrais","aîtrais","aîtrait","aîtrions","aîtriez","aîtraient"], + "s": ["aisse","aisses","aisse","aissions","aissiez","aissent"], + "si": ["usse","usses","ût","ussions","ussiez","ussent"], + "ip": [null,"ais",null,"aissons","aissez",null], + "pr": "aissant", + "pp": "u", + "b": "aître" + } + }, + "v102": { + "ending": "aître", + "t": { + "p": ["ais","ais","aît","aissons","aissez","aissent"], + "i": ["aissais","aissais","aissait","aissions","aissiez","aissaient"], + "f": ["aîtrai","aîtras","aîtra","aîtrons","aîtrez","aîtront"], + "ps": [null,null,null,null,null,null], + "c": ["aîtrais","aîtrais","aîtrait","aîtrions","aîtriez","aîtraient"], + "s": ["aisse","aisses","aisse","aissions","aissiez","aissent"], + "si": [null,null,null,null,null,null], + "ip": [null,"ais",null,null,"aissez",null], + "pr": "aissant", + "pp": "u", + "b": "aître" + } + }, + "v103": { + "ending": "aître", + "t": { + "p": ["ais","ais","aît","aissons","aissez","aissent"], + "i": ["aissais","aissais","aissait","aissions","aissiez","aissaient"], + "f": ["aîtrai","aîtras","aîtra","aîtrons","aîtrez","aîtront"], + "ps": ["us","us","ut","ûmes","ûtes","urent"], + "c": ["aîtrais","aîtrais","aîtrait","aîtrions","aîtriez","aîtraient"], + "s": ["aisse","aisses","aisse","aissions","aissiez","aissent"], + "si": ["usse","usses","ût","ussions","ussiez","ussent"], + "ip": [null,"ais",null,"aissons","aissez",null], + "pr": "aissant", + "pp": "u", + "b": "aître" + } + }, + "v104": { + "ending": "aître", + "t": { + "p": ["ais","ais","aît","aissons","aissez","aissent"], + "i": ["aissais","aissais","aissait","aissions","aissiez","aissaient"], + "f": ["aîtrai","aîtras","aîtra","aîtrons","aîtrez","aîtront"], + "ps": ["aquis","aquis","aquit","aquîmes","aquîtes","aquirent"], + "c": ["aîtrais","aîtrais","aîtrait","aîtrions","aîtriez","aîtraient"], + "s": ["aisse","aisses","aisse","aissions","aissiez","aissent"], + "si": ["aquisse","aquisses","aquît","aquissions","aquissiez","aquissent"], + "ip": [null,"ais",null,"aissons","aissez",null], + "pr": "aissant", + "pp": "é", + "b": "aître" + } + }, + "v105": { + "ending": "aître", + "t": { + "p": ["ais","ais","aît","aissons","aissez","aissent"], + "i": ["aissais","aissais","aissait","aissions","aissiez","aissaient"], + "f": ["aîtrai","aîtras","aîtra","aîtrons","aîtrez","aîtront"], + "ps": ["aquis","aquis","aquit","aquîmes","aquîtes","aquirent"], + "c": ["aîtrais","aîtrais","aîtrait","aîtrions","aîtriez","aîtraient"], + "s": ["aisse","aisses","aisse","aissions","aissiez","aissent"], + "si": ["aquisse","aquisses","aquît","aquissions","aquissiez","aquissent"], + "ip": [null,"ais",null,"aissons","aissez",null], + "pr": "aissant", + "pp": null, + "b": "aître" + } + }, + "v106": { + "ending": "oître", + "t": { + "p": ["oîs","oîs","oît","oissons","oissez","oissent"], + "i": ["oissais","oissais","oissait","oissions","oissiez","oissaient"], + "f": ["oîtrai","oîtras","oîtra","oîtrons","oîtrez","oîtront"], + "ps": ["us","us","ut","ûmes","ûtes","urent"], + "c": ["oîtrais","oîtrais","oîtrait","oîtrions","oîtriez","oîtraient"], + "s": ["oisse","oisses","oisse","oissions","oissiez","oissent"], + "si": ["usse","usses","ût","ussions","ussiez","ussent"], + "ip": [null,"oîs",null,"oissons","oissez",null], + "pr": "oissant", + "pp": "û", + "b": "oître" + } + }, + "v107": { + "ending": "ire", + "t": { + "p": ["is","is","it","ions","iez","ient"], + "i": ["iais","iais","iait","iions","iiez","iaient"], + "f": ["irai","iras","ira","irons","irez","iront"], + "ps": ["is","is","it","îmes","îtes","irent"], + "c": ["irais","irais","irait","irions","iriez","iraient"], + "s": ["ie","ies","ie","iions","iiez","ient"], + "si": ["isse","isses","ît","issions","issiez","issent"], + "ip": [null,"is",null,"ions","iez",null], + "pr": "iant", + "pp": "i", + "b": "ire" + } + }, + "v108": { + "ending": "ire", + "t": { + "p": ["is","is","it","isons","isez","isent"], + "i": ["isais","isais","isait","isions","isiez","isaient"], + "f": ["irai","iras","ira","irons","irez","iront"], + "ps": ["is","is","it","îmes","îtes","irent"], + "c": ["irais","irais","irait","irions","iriez","iraient"], + "s": ["ise","ises","ise","isions","isiez","isent"], + "si": ["isse","isses","ît","issions","issiez","issent"], + "ip": [null,"is",null,"isons","isez",null], + "pr": "isant", + "pp": "is", + "b": "ire" + } + }, + "v109": { + "ending": "ure", + "t": { + "p": ["us","us","ut","uons","uez","uent"], + "i": ["uais","uais","uait","uions","uiez","uaient"], + "f": ["urai","uras","ura","urons","urez","uront"], + "ps": ["us","us","ut","ûmes","ûtes","urent"], + "c": ["urais","urais","urait","urions","uriez","uraient"], + "s": ["ue","ues","ue","uions","uiez","uent"], + "si": ["usse","usses","ût","ussions","ussiez","ussent"], + "ip": [null,"us",null,"uons","uez",null], + "pr": "uant", + "pp": "u", + "b": "ure" + } + }, + "v110": { + "ending": "ure", + "t": { + "p": ["us","us","ut","uons","uez","uent"], + "i": ["uais","uais","uait","uions","uiez","uaient"], + "f": ["urai","uras","ura","urons","urez","uront"], + "ps": ["us","us","ut","ûmes","ûtes","urent"], + "c": ["urais","urais","urait","urions","uriez","uraient"], + "s": ["ue","ues","ue","uions","uiez","uent"], + "si": ["usse","usses","ût","ussions","ussiez","ussent"], + "ip": [null,"us",null,"uons","uez",null], + "pr": "uant", + "pp": "us", + "b": "ure" + } + }, + "v111": { + "ending": "re", + "t": { + "p": ["s","s","t","sons","sez","sent"], + "i": ["sais","sais","sait","sions","siez","saient"], + "f": ["rai","ras","ra","rons","rez","ront"], + "ps": ["sis","sis","sit","sîmes","sîtes","sirent"], + "c": ["rais","rais","rait","rions","riez","raient"], + "s": ["se","ses","se","sions","siez","sent"], + "si": ["sisse","sisses","sît","sissions","sissiez","sissent"], + "ip": [null,"s",null,"sons","sez",null], + "pr": "sant", + "pp": "", + "b": "re" + } + }, + "v112": { + "ending": "ire", + "t": { + "p": ["is","is","it","isons","isez","isent"], + "i": ["isais","isais","isait","isions","isiez","isaient"], + "f": ["irai","iras","ira","irons","irez","iront"], + "ps": ["is","is","it","îmes","îtes","irent"], + "c": ["irais","irais","irait","irions","iriez","iraient"], + "s": ["ise","ises","ise","isions","isiez","isent"], + "si": ["isse","isses","ît","issions","issiez","issent"], + "ip": [null,"is",null,"isons","isez",null], + "pr": "isant", + "pp": "i", + "b": "ire" + } + }, + "v113": { + "ending": "re", + "t": { + "p": ["s","s","t","sons","sez","sent"], + "i": ["sais","sais","sait","sions","siez","saient"], + "f": ["rai","ras","ra","rons","rez","ront"], + "ps": ["sis","sis","sit","sîmes","sîtes","sirent"], + "c": ["rais","rais","rait","rions","riez","raient"], + "s": ["se","ses","se","sions","siez","sent"], + "si": ["sisse","sisses","sît","sissions","sissiez","sissent"], + "ip": [null,"s",null,"sons","sez",null], + "pr": "sant", + "pp": "t", + "b": "re" + } + }, + "v114": { + "ending": "re", + "t": { + "p": ["s","s","t","vons","vez","vent"], + "i": ["vais","vais","vait","vions","viez","vaient"], + "f": ["rai","ras","ra","rons","rez","ront"], + "ps": ["vis","vis","vit","vîmes","vîtes","virent"], + "c": ["rais","rais","rait","rions","riez","raient"], + "s": ["ve","ves","ve","vions","viez","vent"], + "si": ["visse","visses","vît","vissions","vissiez","vissent"], + "ip": [null,"s",null,"vons","vez",null], + "pr": "vant", + "pp": "t", + "b": "re" + } + }, + "v115": { + "ending": "oire", + "t": { + "p": ["ois","ois","oit","oyons","oyez","oient"], + "i": ["oyais","oyais","oyait","oyions","oyiez","oyaient"], + "f": ["oirai","oiras","oira","oirons","oirez","oiront"], + "ps": ["us","us","ut","ûmes","ûtes","urent"], + "c": ["oirais","oirais","oirait","oirions","oiriez","oiraient"], + "s": ["oie","oies","oie","oyions","oyiez","oient"], + "si": ["usse","usses","ût","ussions","ussiez","ussent"], + "ip": [null,"ois",null,"oyons","oyez",null], + "pr": "oyant", + "pp": "u", + "b": "oire" + } + }, + "v116": { + "ending": "ire", + "t": { + "p": ["is","is","it","isons","isez","isent"], + "i": ["isais","isais","isait","isions","isiez","isaient"], + "f": ["irai","iras","ira","irons","irez","iront"], + "ps": ["is","is","it","îmes","îtes","irent"], + "c": ["irais","irais","irait","irions","iriez","iraient"], + "s": ["ise","ises","ise","isions","isiez","isent"], + "si": ["isse","isses","ît","issions","issiez","issent"], + "ip": [null,"is",null,"isons","isez",null], + "pr": "isant", + "pp": "i", + "b": "ire" + } + }, + "v117": { + "ending": "ire", + "t": { + "p": ["is","is","it","isons","ites","isent"], + "i": ["isais","isais","isait","isions","isiez","isaient"], + "f": ["irai","iras","ira","irons","irez","iront"], + "ps": ["is","is","it","îmes","îtes","irent"], + "c": ["irais","irais","irait","irions","iriez","iraient"], + "s": ["ise","ises","ise","isions","isiez","isent"], + "si": ["isse","isses","ît","issions","issiez","issent"], + "ip": [null,"is",null,"isons","ites",null], + "pr": "isant", + "pp": "it", + "b": "ire" + } + }, + "v118": { + "ending": "ire", + "t": { + "p": ["is","is","it","isons","isez","isent"], + "i": ["isais","isais","isait","isions","isiez","isaient"], + "f": ["irai","iras","ira","irons","irez","iront"], + "ps": ["is","is","it","îmes","îtes","irent"], + "c": ["irais","irais","irait","irions","iriez","iraient"], + "s": ["ise","ises","ise","isions","isiez","isent"], + "si": ["isse","isses","ît","issions","issiez","issent"], + "ip": [null,"is",null,"isons","isez",null], + "pr": "isant", + "pp": "it", + "b": "ire" + } + }, + "v119": { + "ending": "ire", + "t": { + "p": ["is","is","it","isons","isez","isent"], + "i": ["isais","isais","isait","isions","isiez","isaient"], + "f": ["irai","iras","ira","irons","irez","iront"], + "ps": ["is","is","it","îmes","îtes","irent"], + "c": ["irais","irais","irait","irions","iriez","iraient"], + "s": ["ise","ises","ise","isions","isiez","isent"], + "si": ["isse","isses","ît","issions","issiez","issent"], + "ip": [null,"is",null,"isons","isez",null], + "pr": "isant", + "pp": "it", + "b": "ire" + } + }, + "v120": { + "ending": "ire", + "t": { + "p": ["is","is","it","isons","isez","isent"], + "i": ["isais","isais","isait","isions","isiez","isaient"], + "f": ["irai","iras","ira","irons","irez","iront"], + "ps": ["us","us","ut","ûmes","ûtes","urent"], + "c": ["irais","irais","irait","irions","iriez","iraient"], + "s": ["ise","ises","ise","isions","isiez","isent"], + "si": ["usse","usses","ût","ussions","ussiez","ussent"], + "ip": [null,"is",null,"isons","isez",null], + "pr": "isant", + "pp": "u", + "b": "ire" + } + }, + "v121": { + "ending": "oire", + "t": { + "p": ["ois","ois","oit","uvons","uvez","oivent"], + "i": ["uvais","uvais","uvait","uvions","uviez","uvaient"], + "f": ["oirai","oiras","oira","oirons","oirez","oiront"], + "ps": ["us","us","ut","ûmes","ûtes","urent"], + "c": ["oirais","oirais","oirait","oirions","oiriez","oiraient"], + "s": ["oive","oives","oive","uvions","uviez","oivent"], + "si": ["usse","usses","ût","ussions","ussiez","ussent"], + "ip": [null,"ois",null,"uvons","uvez",null], + "pr": "uvant", + "pp": "u", + "b": "oire" + } + }, + "v122": { + "ending": "aire", + "t": { + "p": ["ais","ais","ait","aisons","aisez","aisent"], + "i": ["aisais","aisais","aisait","aisions","aisiez","aisaient"], + "f": ["airai","airas","aira","airons","airez","airont"], + "ps": ["us","us","ut","ûmes","ûtes","urent"], + "c": ["airais","airais","airait","airions","airiez","airaient"], + "s": ["aise","aises","aise","aisions","aisiez","aisent"], + "si": ["usse","usses","ût","ussions","ussiez","ussent"], + "ip": [null,"ais",null,"aisons","aisez",null], + "pr": "aisant", + "pp": "u", + "b": "aire" + } + }, + "v123": { + "ending": "aire", + "t": { + "p": ["ais","ais","aît","aisons","aisez","aisent"], + "i": ["aisais","aisais","aisait","aisions","aisiez","aisaient"], + "f": ["airai","airas","aira","airons","airez","airont"], + "ps": ["us","us","ut","ûmes","ûtes","urent"], + "c": ["airais","airais","airait","airions","airiez","airaient"], + "s": ["aise","aises","aise","aisions","aisiez","aisent"], + "si": ["usse","usses","ût","ussions","ussiez","ussent"], + "ip": [null,"ais",null,"aisons","aisez",null], + "pr": "aisant", + "pp": "u", + "b": "aire" + } + }, + "v124": { + "ending": "aire", + "t": { + "p": ["ais","ais","ait","aisons","aites","ont"], + "i": ["aisais","aisais","aisait","aisions","aisiez","aisaient"], + "f": ["erai","eras","era","erons","erez","eront"], + "ps": ["is","is","it","îmes","îtes","irent"], + "c": ["erais","erais","erait","erions","eriez","eraient"], + "s": ["asse","asses","asse","assions","assiez","assent"], + "si": ["isse","isses","ît","issions","issiez","issent"], + "ip": [null,"ais",null,"aisons","aites",null], + "pr": "aisant", + "pp": "ait", + "b": "aire" + } + }, + "v125": { + "ending": "ire", + "t": { + "p": ["is","is","it","yons","yez","ient"], + "i": ["yais","yais","yait","yions","yiez","yaient"], + "f": ["irai","iras","ira","irons","irez","iront"], + "ps": [null,null,null,null,null,null], + "c": ["irais","irais","irait","irions","iriez","iraient"], + "s": ["ie","ies","ie","yions","yiez","ient"], + "si": [null,null,null,null,null,null], + "ip": [null,"is",null,"yons","yez",null], + "pr": "yant", + "pp": "it", + "b": "ire" + } + }, + "v126": { + "ending": "ire", + "t": { + "p": ["is","is","it","yons","yez","ient"], + "i": ["yais","yais","yait","yions","yiez","yaient"], + "f": ["irai","iras","ira","irons","irez","iront"], + "ps": [null,null,null,null,null,null], + "c": ["irais","irais","irait","irions","iriez","iraient"], + "s": ["ie","ies","ie","yions","yiez","ient"], + "si": [null,null,null,null,null,null], + "ip": [null,"is",null,"yons","yez",null], + "pr": "yant", + "pp": "it", + "b": "ire" + } + }, + "v127": { + "ending": "ourdre", + "t": { + "p": [null,null,"ourd",null,null,"ourdent"], + "i": [null,null,"ourdait",null,null,"ourdaient"], + "f": [null,null,null,null,null,null], + "ps": [null,null,null,null,null,null], + "c": [null,null,null,null,null,null], + "s": [null,null,null,null,null,null], + "si": [null,null,null,null,null,null], + "ip": [null,null,null,null,null,null], + "pr": null, + "pp": null, + "b": "ourdre" + } + }, + "v128": { + "ending": "ore", + "t": { + "p": ["os","os","ôt",null,null,"osent"], + "i": [null,null,null,null,null,null], + "f": ["orai","oras","ora","orons","orez","oront"], + "ps": [null,null,null,null,null,null], + "c": ["orais","orais","orait","orions","oriez","oraient"], + "s": ["ose","oses","ose","osions","osiez","osent"], + "si": [null,null,null,null,null,null], + "ip": [null,"os",null,null,null,null], + "pr": "osant", + "pp": "os", + "b": "ore" + } + }, + "v129": { + "ending": "re", + "t": { + "p": ["s","s","t",null,null,"sent"], + "i": [null,null,null,null,null,null], + "f": ["rai","ras","ra","rons","rez","ront"], + "ps": [null,null,null,null,null,null], + "c": ["rais","rais","rait","rions","riez","raient"], + "s": ["se","ses","se","sions","siez","sent"], + "si": [null,null,null,null,null,null], + "ip": [null,"s",null,null,null,null], + "pr": "sant", + "pp": "s", + "b": "re" + } + }, + "v130": { + "ending": "re", + "t": { + "p": [null,null,null,null,null,null], + "i": [null,null,null,null,null,null], + "f": [null,null,null,null,null,null], + "ps": [null,null,null,null,null,null], + "c": [null,null,null,null,null,null], + "s": [null,null,null,null,null,null], + "si": [null,null,null,null,null,null], + "ip": [null,null,null,null,null,null], + "pr": null, + "pp": "s", + "b": "re" + } + }, + "v131": { + "ending": "re", + "t": { + "p": ["s","s","t",null,null,null], + "i": [null,null,null,null,null,null], + "f": ["rai","ras","ra","rons","rez","ront"], + "ps": [null,null,null,null,null,null], + "c": ["rais","rais","rait","rions","riez","raient"], + "s": [null,null,null,null,null,null], + "si": [null,null,null,null,null,null], + "ip": [null,"s",null,null,null,null], + "pr": null, + "pp": "t", + "b": "re" + } + }, + "v132": { + "ending": "re", + "t": { + "p": [null,null,"t",null,null,"ssent"], + "i": [null,null,"ssait",null,null,"ssaient"], + "f": [null,null,null,null,null,null], + "ps": [null,null,null,null,null,null], + "c": [null,null,null,null,null,null], + "s": [null,null,"sse",null,null,"ssent"], + "si": [null,null,null,null,null,null], + "ip": [null,null,null,null,null,null], + "pr": "ssant", + "pp": null, + "b": "re" + } + }, + "v133": { + "ending": "ndre", + "t": { + "p": ["ns","ns","nt","gnons","gnez","gnent"], + "i": ["gnais","gnais","gnait","gnions","gniez","gnaient"], + "f": ["ndrai","ndras","ndra","ndrons","ndrez","ndront"], + "ps": ["gnis","gnis","gnit","gnîmes","gnîtes","gnirent"], + "c": ["ndrais","ndrais","ndrait","ndrions","ndriez","ndraient"], + "s": ["gne","gnes","gne","gnions","gniez","gnent"], + "si": ["gnisse","gnisses","gnît","gnissions","gnissiez","gnissent"], + "ip": [null,"ns",null,"gnons","gnez",null], + "pr": "gnant", + "pp": "nt", + "b": "ndre" + } + }, + "v134": { + "ending": "oyer", + "t": { + "p": ["oie","oies","oie","oyons","oyez","oient"], + "i": ["oyais","oyais","oyait","oyions","oyiez","oyaient"], + "f": ["errai","erras","erra","errons","errez","erront"], + "ps": ["oyai","oyas","oya","oyâmes","oyâtes","oyèrent"], + "c": ["errais","errais","errait","errions","erriez","erraient"], + "s": ["oie","oies","oie","oyions","oyiez","oient"], + "si": ["oyasse","oyasses","oyât","oyassions","oyassiez","oyassent"], + "ip": [null,"oie",null,"oyons","oyez",null], + "pr": "oyant", + "pp": "oyé", + "b": "oyer" + } + }, + "v135": { + "ending": "avoir", + "t": { + "p": ["ai","as","a","avons","avez","ont"], + "i": ["avais","avais","avait","avions","aviez","avaient"], + "f": ["aurai","auras","aura","aurons","aurez","auront"], + "ps": ["eus","eus","eut","eûmes","eûtes","eurent"], + "c": ["aurais","aurais","aurait","aurions","auriez","auraient"], + "s": ["aie","aies","ait","ayons","ayez","aient"], + "si": ["eusse","eusses","eût","eussions","eussiez","eussent"], + "ip": [null,"aie",null,"ayons","ayez",null], + "pr": "ayant", + "pp": "eu", + "b": "avoir" + } + }, + "v136": { + "ending": "être", + "t": { + "p": ["suis","es","est","sommes","êtes","sont"], + "i": ["étais","étais","était","étions","étiez","étaient"], + "f": ["serai","seras","sera","serons","serez","seront"], + "ps": ["fus","fus","fut","fûmes","fûtes","furent"], + "c": ["serais","serais","serait","serions","seriez","seraient"], + "s": ["sois","sois","soit","soyons","soyez","soient"], + "si": ["fusse","fusses","fût","fussions","fussiez","fussent"], + "ip": [null,"sois",null,"soyons","soyez",null], + "pr": "étant", + "pp": "été", + "b": "être" + } + }, + "v137": { + "ending": "aller", + "t": { + "p": ["vais","vas","va","allons","allez","vont"], + "i": ["allais","allais","allait","allions","alliez","allaient"], + "f": ["irai","iras","ira","irons","irez","iront"], + "ps": ["allai","allas","alla","allâmes","allâtes","allèrent"], + "c": ["irais","irais","irait","irions","iriez","iraient"], + "s": ["aille","ailles","aille","allions","alliez","aillent"], + "si": ["allasse","allasses","allât","allassions","allassiez","allassent"], + "ip": [null,"va",null,"allons","allez",null], + "pr": "allant", + "pp": "allé", + "b": "aller" + } + }, + "v138": { + "ending": "aroir", + "t": { + "p": [null,null,"ert",null,null,null], + "i": [null,null,null,null,null,null], + "f": [null,null,null,null,null,null], + "ps": [null,null,null,null,null,null], + "c": [null,null,null,null,null,null], + "s": [null,null,null,null,null,null], + "si": [null,null,null,null,null,null], + "ip": [null,null,null,null,null,null], + "pr": null, + "pp": null, + "b": "aroir" + } + }, + "v139": { + "ending": "loir", + "t": { + "p": [null,null,"ut",null,null,null], + "i": [null,null,null,null,null,null], + "f": [null,null,null,null,null,null], + "ps": [null,null,null,null,null,null], + "c": [null,null,null,null,null,null], + "s": [null,null,null,null,null,null], + "si": [null,null,null,null,null,null], + "ip": [null,null,null,null,null,null], + "pr": null, + "pp": null, + "b": "loir" + } + }, + "v140": { + "ending": "ravoir", + "t": { + "p": [null,null,null,null,null,null], + "i": [null,null,null,null,null,null], + "f": [null,null,null,null,null,null], + "ps": [null,null,null,null,null,null], + "c": [null,null,null,null,null,null], + "s": [null,null,null,null,null,null], + "si": [null,null,null,null,null,null], + "ip": [null,null,null,null,null,null], + "pr": null, + "pp": null, + "b": "ravoir" + } + }, + "v141": { + "ending": "er", + "t": { + "p": [null,null,null,null,null,null], + "i": [null,null,null,null,null,null], + "f": [null,null,null,null,null,null], + "ps": [null,null,null,null,null,null], + "c": [null,null,null,null,null,null], + "s": [null,null,null,null,null,null], + "si": [null,null,null,null,null,null], + "ip": [null,null,null,null,null,null], + "pr": null, + "pp": null, + "b": "er" + } + }, + "v142": { + "ending": "ir", + "t": { + "p": [null,null,null,null,null,null], + "i": [null,null,null,null,null,null], + "f": [null,null,null,null,null,null], + "ps": [null,null,null,null,null,null], + "c": [null,null,null,null,null,null], + "s": [null,null,null,null,null,null], + "si": [null,null,null,null,null,null], + "ip": [null,null,null,null,null,null], + "pr": null, + "pp": "u", + "b": "ir" + } + }, + "v143": { + "ending": "uïr", + "t": { + "p": ["is","is","it","yons","yez","ient"], + "i": ["yais","yais","yait","yions","yiez","yaient"], + "f": ["irai","iras","ira","irons","irez","iront"], + "ps": ["uïs","uïs","uït","uïmes","uïtes","uïrent"], + "c": ["irais","irais","irait","irions","iriez","iraient"], + "s": ["ie","ies","ie","yions","yiez","ient"], + "si": ["uïsse","uïsses","uït","uïssions","uïssiez","uïssent"], + "ip": [null,"is",null,"yons","yez",null], + "pr": "yant", + "pp": "uï", + "b": "uïr" + } + }, + "v144": { + "ending": "re", + "t": { + "p": [null,null,null,null,null,null], + "i": [null,null,null,null,null,null], + "f": [null,null,null,null,null,null], + "ps": [null,null,null,null,null,null], + "c": [null,null,null,null,null,null], + "s": [null,null,null,null,null,null], + "si": [null,null,null,null,null,null], + "ip": [null,null,null,null,null,null], + "pr": null, + "pp": "s", + "b": "re" + } + }, + "v145": { + "ending": "er", + "t": { + "p": [null,null,"e",null,null,null], + "i": [null,null,"ait",null,null,null], + "f": [null,null,"era",null,null,null], + "ps": [null,null,"a",null,null,null], + "c": [null,null,"erait",null,null,null], + "s": [null,null,"e",null,null,null], + "si": [null,null,"ât",null,null,null], + "ip": [null,null,null,null,null,null], + "pr": "ant", + "pp": "é", + "b": "er" + } + } + }, + "compound": { + "alias": "aux", + "participle": "pp", + "aux": { + "av": "avoir", + "êt": "être", + "aê": "avoir" + }, + "pc": { + "auxTense": "p", + "progAuxTense": "i" + }, + "pq": { + "auxTense": "i", + "progAuxTense": "i" + }, + "spa": { + "auxTense": "s", + "progAuxTense": "i" + }, + "spq": { + "auxTense": "si", + "progAuxTense": "i" + }, + "cp": { + "auxTense": "c", + "progAuxTense": "c" + }, + "fa": { + "auxTense": "f", + "progAuxTense": "f" + } + }, + "elision": { + "elisionEtre": { + "verbe": ["en","est","était"], + "aux": ["a","aura","avait","ait","eût","aurait"], + "pp": ["été","étés","étées"] + }, + "elidables": ["la","ma","ta","sa","le","me","te","se","ce","de","ne","je","si","que","jusque","lorsque","puisque","quoique","nouveau","beau"], + "voyellesAccentuees": "àäéèêëïîöôùû", + "voyelles": "aeiouàäéèêëïîöôùû" + }, + "declension": { + "nI": { + "ending": "", + "declension": [{ + "val": "","g": "m","n": "s" + },{ + "val": "","g": "f","n": "s" + },{ + "val": "","g": "m","n": "p" + },{ + "val": "","g": "f","n": "p" + }] + }, + "n1": { + "ending": "", + "declension": [{ + "val": "","g": "m","n": "p" + }] + }, + "n2": { + "ending": "", + "declension": [{ + "val": "","g": "m","n": "s" + },{ + "val": "","g": "m","n": "p" + }] + }, + "n3": { + "ending": "", + "declension": [{ + "val": "","g": "m","n": "s" + },{ + "val": "s","g": "m","n": "p" + }] + }, + "n4": { + "ending": "", + "declension": [{ + "val": "","g": "m","n": "s" + },{ + "val": "x","g": "m","n": "p" + }] + }, + "n5": { + "ending": "al", + "declension": [{ + "val": "al","g": "m","n": "s" + },{ + "val": "aux","g": "m","n": "p" + }] + }, + "n6": { + "ending": "ail", + "declension": [{ + "val": "ail","g": "m","n": "s" + },{ + "val": "aux","g": "m","n": "p" + }] + }, + "n7": { + "ending": "ail", + "declension": [{ + "val": "ail","g": "m","n": "s" + },{ + "val": "aulx","g": "m","n": "p" + }] + }, + "n8": { + "ending": "aïeul", + "declension": [{ + "val": "aïeul","g": "m","n": "s" + },{ + "val": "aïeux","g": "m","n": "p" + }] + }, + "n9": { + "ending": "ciel", + "declension": [{ + "val": "ciel","g": "m","n": "s" + },{ + "val": "cieux","g": "m","n": "p" + }] + }, + "n10": { + "ending": "dit", + "declension": [{ + "val": "dit","g": "m","n": "s" + },{ + "val": "xdits","g": "m","n": "p" + }] + }, + "n11": { + "ending": "homme", + "declension": [{ + "val": "homme","g": "m","n": "s" + },{ + "val": "shommes","g": "m","n": "p" + }] + }, + "n12": { + "ending": "monsieur", + "declension": [{ + "val": "monsieur","g": "m","n": "s" + },{ + "val": "messieurs","g": "m","n": "p" + }] + }, + "n13": { + "ending": "monseigneur", + "declension": [{ + "val": "monseigneur","g": "m","n": "s" + },{ + "val": "messeigneurs","g": "m","n": "p" + }] + }, + "n14": { + "ending": "oeil", + "declension": [{ + "val": "oeil","g": "m","n": "s" + },{ + "val": "yeux","g": "m","n": "p" + }] + }, + "n15": { + "ending": "", + "declension": [{ + "val": "","g": "f","n": "p" + }] + }, + "n16": { + "ending": "", + "declension": [{ + "val": "","g": "f","n": "s" + },{ + "val": "","g": "f","n": "p" + }] + }, + "n17": { + "ending": "", + "declension": [{ + "val": "","g": "f","n": "s" + },{ + "val": "s","g": "f","n": "p" + }] + }, + "n18": { + "ending": "", + "declension": [{ + "val": "","g": "f","n": "s" + },{ + "val": "x","g": "f","n": "p" + }] + }, + "n19": { + "ending": "madame", + "declension": [{ + "val": "madame","g": "f","n": "s" + },{ + "val": "mesdames","g": "f","n": "p" + }] + }, + "n20": { + "ending": "mademoiselle", + "declension": [{ + "val": "mademoiselle","g": "f","n": "s" + },{ + "val": "mesdemoiselles","g": "f","n": "p" + }] + }, + "n21": { + "ending": "", + "declension": [{ + "val": "","g": "m","n": "p" + },{ + "val": "","g": "f","n": "p" + }] + }, + "n22": { + "ending": "", + "declension": [{ + "val": "","g": "m","n": "p" + },{ + "val": "es","g": "f","n": "p" + }] + }, + "n23": { + "ending": "", + "declension": [{ + "val": "","g": "m","n": "s" + },{ + "val": "","g": "f","n": "s" + }] + }, + "n24": { + "ending": "", + "declension": [{ + "val": "","g": "m","n": "s" + },{ + "val": "","g": "f","n": "s" + },{ + "val": "","g": "m","n": "p" + },{ + "val": "","g": "f","n": "p" + }] + }, + "n25": { + "ending": "", + "declension": [{ + "val": "","g": "m","n": "s" + },{ + "val": "","g": "f","n": "s" + },{ + "val": "s","g": "m","n": "p" + },{ + "val": "s","g": "f","n": "p" + }] + }, + "n26": { + "ending": "s", + "declension": [{ + "val": "s","g": "m","n": "p" + },{ + "val": "es","g": "f","n": "p" + }] + }, + "n27": { + "ending": "", + "declension": [{ + "val": "","g": "m","n": "s" + },{ + "val": "e","g": "f","n": "s" + },{ + "val": "","g": "m","n": "p" + },{ + "val": "es","g": "f","n": "p" + }] + }, + "n28": { + "ending": "", + "declension": [{ + "val": "","g": "m","n": "s" + },{ + "val": "e","g": "f","n": "s" + },{ + "val": "s","g": "m","n": "p" + },{ + "val": "es","g": "f","n": "p" + }] + }, + "n29": { + "ending": "eau", + "declension": [{ + "val": "eau","g": "m","n": "s" + },{ + "val": "elle","g": "f","n": "s" + },{ + "val": "eaux","g": "m","n": "p" + },{ + "val": "elles","g": "f","n": "p" + }] + }, + "n30": { + "ending": "", + "declension": [{ + "val": "","g": "m","n": "s" + },{ + "val": "de","g": "f","n": "s" + },{ + "val": "s","g": "m","n": "p" + },{ + "val": "des","g": "f","n": "p" + }] + }, + "n31": { + "ending": "ou", + "declension": [{ + "val": "ou","g": "m","n": "s" + },{ + "val": "olle","g": "f","n": "s" + },{ + "val": "ous","g": "m","n": "p" + },{ + "val": "olles","g": "f","n": "p" + }] + }, + "n32": { + "ending": "fou-fou", + "declension": [{ + "val": "fou-fou","g": "m","n": "s" + },{ + "val": "fofolle","g": "f","n": "s" + },{ + "val": "fou-fou","g": "m","n": "p" + },{ + "val": "fofolles","g": "f","n": "p" + }] + }, + "n33": { + "ending": "ou", + "declension": [{ + "val": "ou","g": "m","n": "s" + },{ + "val": "ouse","g": "f","n": "s" + },{ + "val": "ous","g": "m","n": "p" + },{ + "val": "ouses","g": "f","n": "p" + }] + }, + "n34": { + "ending": "", + "declension": [{ + "val": "","g": "m","n": "s" + },{ + "val": "te","g": "f","n": "s" + },{ + "val": "s","g": "m","n": "p" + },{ + "val": "tes","g": "f","n": "p" + }] + }, + "n35": { + "ending": "", + "declension": [{ + "val": "","g": "m","n": "s" + }] + }, + "n36": { + "ending": "", + "declension": [{ + "val": "","g": "f","n": "s" + }] + }, + "n37": { + "ending": "ec", + "declension": [{ + "val": "ec","g": "m","n": "s" + },{ + "val": "èche","g": "f","n": "s" + },{ + "val": "ecs","g": "m","n": "p" + },{ + "val": "èches","g": "f","n": "p" + }] + }, + "n38": { + "ending": "ef", + "declension": [{ + "val": "ef","g": "m","n": "s" + },{ + "val": "ève","g": "f","n": "s" + },{ + "val": "efs","g": "m","n": "p" + },{ + "val": "èves","g": "f","n": "p" + }] + }, + "n39": { + "ending": "er", + "declension": [{ + "val": "er","g": "m","n": "s" + },{ + "val": "ère","g": "f","n": "s" + },{ + "val": "ers","g": "m","n": "p" + },{ + "val": "ères","g": "f","n": "p" + }] + }, + "n40": { + "ending": "et", + "declension": [{ + "val": "et","g": "m","n": "s" + },{ + "val": "ète","g": "f","n": "s" + },{ + "val": "ets","g": "m","n": "p" + },{ + "val": "ètes","g": "f","n": "p" + }] + }, + "n41": { + "ending": "ès", + "declension": [{ + "val": "ès","g": "m","n": "s" + },{ + "val": "esse","g": "f","n": "s" + },{ + "val": "ès","g": "m","n": "p" + },{ + "val": "esses","g": "f","n": "p" + }] + }, + "n42": { + "ending": "ès", + "declension": [{ + "val": "ès","g": "m","n": "s" + },{ + "val": "èze","g": "f","n": "s" + },{ + "val": "ès","g": "m","n": "p" + },{ + "val": "èzes","g": "f","n": "p" + }] + }, + "n43": { + "ending": "nègre", + "declension": [{ + "val": "nègre","g": "m","n": "s" + },{ + "val": "négresse","g": "f","n": "s" + },{ + "val": "nègres","g": "m","n": "p" + },{ + "val": "négresses","g": "f","n": "p" + }] + }, + "n44": { + "ending": "ais", + "declension": [{ + "val": "ais","g": "m","n": "s" + },{ + "val": "aîche","g": "f","n": "s" + },{ + "val": "ais","g": "m","n": "p" + },{ + "val": "aîches","g": "f","n": "p" + }] + }, + "n45": { + "ending": "igu", + "declension": [{ + "val": "igu","g": "m","n": "s" + },{ + "val": "iguë","g": "f","n": "s" + },{ + "val": "igus","g": "m","n": "p" + },{ + "val": "iguës","g": "f","n": "p" + }] + }, + "n46": { + "ending": "f", + "declension": [{ + "val": "f","g": "m","n": "s" + },{ + "val": "ve","g": "f","n": "s" + },{ + "val": "fs","g": "m","n": "p" + },{ + "val": "ves","g": "f","n": "p" + }] + }, + "n47": { + "ending": "al", + "declension": [{ + "val": "al","g": "m","n": "s" + },{ + "val": "ale","g": "f","n": "s" + },{ + "val": "aux","g": "m","n": "p" + },{ + "val": "ales","g": "f","n": "p" + }] + }, + "n48": { + "ending": "l", + "declension": [{ + "val": "l","g": "m","n": "s" + },{ + "val": "lle","g": "f","n": "s" + },{ + "val": "ls","g": "m","n": "p" + },{ + "val": "lles","g": "f","n": "p" + }] + }, + "n49": { + "ending": "n", + "declension": [{ + "val": "n","g": "m","n": "s" + },{ + "val": "nne","g": "f","n": "s" + },{ + "val": "ns","g": "m","n": "p" + },{ + "val": "nnes","g": "f","n": "p" + }] + }, + "n50": { + "ending": "s", + "declension": [{ + "val": "s","g": "m","n": "s" + },{ + "val": "sse","g": "f","n": "s" + },{ + "val": "s","g": "m","n": "p" + },{ + "val": "sses","g": "f","n": "p" + }] + }, + "n51": { + "ending": "t", + "declension": [{ + "val": "t","g": "m","n": "s" + },{ + "val": "tte","g": "f","n": "s" + },{ + "val": "ts","g": "m","n": "p" + },{ + "val": "ttes","g": "f","n": "p" + }] + }, + "n52": { + "ending": "", + "declension": [{ + "val": "","g": "m","n": "s" + },{ + "val": "sse","g": "f","n": "s" + },{ + "val": "s","g": "m","n": "p" + },{ + "val": "sses","g": "f","n": "p" + }] + }, + "n53": { + "ending": "x", + "declension": [{ + "val": "x","g": "m","n": "s" + },{ + "val": "sse","g": "f","n": "s" + },{ + "val": "x","g": "m","n": "p" + },{ + "val": "sses","g": "f","n": "p" + }] + }, + "n54": { + "ending": "x", + "declension": [{ + "val": "x","g": "m","n": "s" + },{ + "val": "se","g": "f","n": "s" + },{ + "val": "x","g": "m","n": "p" + },{ + "val": "ses","g": "f","n": "p" + }] + }, + "n55": { + "ending": "eur", + "declension": [{ + "val": "eur","g": "m","n": "s" + },{ + "val": "euse","g": "f","n": "s" + },{ + "val": "eurs","g": "m","n": "p" + },{ + "val": "euses","g": "f","n": "p" + }] + }, + "n56": { + "ending": "eur", + "declension": [{ + "val": "eur","g": "m","n": "s" + },{ + "val": "rice","g": "f","n": "s" + },{ + "val": "eurs","g": "m","n": "p" + },{ + "val": "rices","g": "f","n": "p" + }] + }, + "n57": { + "ending": "sauveur", + "declension": [{ + "val": "sauveur","g": "m","n": "s" + },{ + "val": "salvatrice","g": "f","n": "s" + },{ + "val": "sauveurs","g": "m","n": "p" + },{ + "val": "salvatrices","g": "f","n": "p" + }] + }, + "n58": { + "ending": "eur", + "declension": [{ + "val": "eur","g": "m","n": "s" + },{ + "val": "eresse","g": "f","n": "s" + },{ + "val": "eurs","g": "m","n": "p" + },{ + "val": "eresses","g": "f","n": "p" + }] + }, + "n59": { + "ending": "er", + "declension": [{ + "val": "er","g": "m","n": "s" + },{ + "val": "eresse","g": "f","n": "s" + },{ + "val": "ers","g": "m","n": "p" + },{ + "val": "eresses","g": "f","n": "p" + }] + }, + "n60": { + "ending": "c", + "declension": [{ + "val": "c","g": "m","n": "s" + },{ + "val": "que","g": "f","n": "s" + },{ + "val": "cs","g": "m","n": "p" + },{ + "val": "ques","g": "f","n": "p" + }] + }, + "n61": { + "ending": "anc", + "declension": [{ + "val": "anc","g": "m","n": "s" + },{ + "val": "anche","g": "f","n": "s" + },{ + "val": "ancs","g": "m","n": "p" + },{ + "val": "anches","g": "f","n": "p" + }] + }, + "n62": { + "ending": "duc", + "declension": [{ + "val": "duc","g": "m","n": "s" + },{ + "val": "duchesse","g": "f","n": "s" + },{ + "val": "ducs","g": "m","n": "p" + },{ + "val": "duchesses","g": "f","n": "p" + }] + }, + "n63": { + "ending": "e", + "declension": [{ + "val": "e","g": "m","n": "s" + },{ + "val": "esque","g": "f","n": "s" + },{ + "val": "es","g": "m","n": "p" + },{ + "val": "esques","g": "f","n": "p" + }] + }, + "n64": { + "ending": "ong", + "declension": [{ + "val": "ong","g": "m","n": "s" + },{ + "val": "ongue","g": "f","n": "s" + },{ + "val": "ongs","g": "m","n": "p" + },{ + "val": "ongues","g": "f","n": "p" + }] + }, + "n65": { + "ending": "in", + "declension": [{ + "val": "in","g": "m","n": "s" + },{ + "val": "igne","g": "f","n": "s" + },{ + "val": "ins","g": "m","n": "p" + },{ + "val": "ignes","g": "f","n": "p" + }] + }, + "n66": { + "ending": "", + "declension": [{ + "val": "","g": "m","n": "s" + },{ + "val": "e","g": "f","n": "s" + }] + }, + "n67": { + "ending": "iers", + "declension": [{ + "val": "iers","g": "m","n": "s" + },{ + "val": "ierce","g": "f","n": "s" + },{ + "val": "iers","g": "m","n": "p" + },{ + "val": "ierces","g": "f","n": "p" + }] + }, + "n68": { + "ending": "ant", + "declension": [{ + "val": "ant","g": "m","n": "s" + },{ + "val": "antine","g": "f","n": "s" + },{ + "val": "ants","g": "m","n": "p" + },{ + "val": "antines","g": "f","n": "p" + }] + }, + "n69": { + "ending": "ut", + "declension": [{ + "val": "ut","g": "m","n": "s" + },{ + "val": "use","g": "f","n": "s" + },{ + "val": "uts","g": "m","n": "p" + },{ + "val": "uses","g": "f","n": "p" + }] + }, + "n70": { + "ending": "doux", + "declension": [{ + "val": "doux","g": "m","n": "s" + },{ + "val": "douce","g": "f","n": "s" + },{ + "val": "doux","g": "m","n": "p" + },{ + "val": "douces","g": "f","n": "p" + }] + }, + "n71": { + "ending": "empereur", + "declension": [{ + "val": "empereur","g": "m","n": "s" + },{ + "val": "impératrice","g": "f","n": "s" + },{ + "val": "empereurs","g": "m","n": "p" + },{ + "val": "impératrices","g": "f","n": "p" + }] + }, + "n72": { + "ending": "hébreu", + "declension": [{ + "val": "hébreu","g": "m","n": "s" + },{ + "val": "hébraïque","g": "f","n": "s" + },{ + "val": "hébreux","g": "m","n": "p" + },{ + "val": "hébraïques","g": "f","n": "p" + }] + }, + "n73": { + "ending": "vieux", + "declension": [{ + "val": "vieux","g": "m","n": "s" + },{ + "val": "vieille","g": "f","n": "s" + },{ + "val": "vieux","g": "m","n": "p" + },{ + "val": "vieilles","g": "f","n": "p" + }] + }, + "n74": { + "ending": "c", + "declension": [{ + "val": "c","g": "m","n": "s" + },{ + "val": "cque","g": "f","n": "s" + },{ + "val": "cs","g": "m","n": "p" + },{ + "val": "cques","g": "f","n": "p" + }] + }, + "n75": { + "ending": "quelqu'un", + "declension": [{ + "val": "quelqu'un","g": "m","n": "s" + },{ + "val": "quelqu'une","g": "f","n": "s" + },{ + "val": "quelques-uns","g": "m","n": "p" + },{ + "val": "quelques-unes","g": "f","n": "p" + }] + }, + "n76": { + "ending": "tout", + "declension": [{ + "val": "tout","g": "m","n": "s" + },{ + "val": "toute","g": "f","n": "s" + },{ + "val": "tous","g": "m","n": "p" + },{ + "val": "toutes","g": "f","n": "p" + }] + }, + "n77": { + "ending": "us", + "declension": [{ + "val": "us","g": "m","n": "s" + },{ + "val": "i","g": "m","n": "p" + }] + }, + "n78": { + "ending": "um", + "declension": [{ + "val": "um","g": "m","n": "s" + },{ + "val": "a","g": "m","n": "p" + }] + }, + "n79": { + "ending": "um", + "declension": [{ + "val": "um","g": "m","n": "s" + },{ + "val": "a","g": "f","n": "s" + },{ + "val": "a","g": "m","n": "p" + },{ + "val": "a","g": "f","n": "p" + }] + }, + "n80": { + "ending": "", + "declension": [{ + "val": "","g": "m","n": "s" + },{ + "val": "es","g": "m","n": "p" + }] + }, + "n81": { + "ending": "eu", + "declension": [{ + "val": "eu","g": "m","n": "s" + },{ + "val": "ei","g": "m","n": "p" + }] + }, + "n82": { + "ending": "man", + "declension": [{ + "val": "man","g": "m","n": "s" + },{ + "val": "men","g": "m","n": "p" + }] + }, + "n83": { + "ending": "y", + "declension": [{ + "val": "y","g": "m","n": "s" + },{ + "val": "ies","g": "m","n": "p" + }] + }, + "n84": { + "ending": "man", + "declension": [{ + "val": "man","g": "f","n": "s" + },{ + "val": "men","g": "f","n": "p" + }] + }, + "n85": { + "ending": "y", + "declension": [{ + "val": "y","g": "f","n": "s" + },{ + "val": "ies","g": "f","n": "p" + }] + }, + "n86": { + "ending": "", + "declension": [{ + "val": "","g": "m","n": "s" + },{ + "val": "i","g": "m","n": "p" + }] + }, + "n87": { + "ending": "o", + "declension": [{ + "val": "o","g": "m","n": "s" + },{ + "val": "i","g": "m","n": "p" + }] + }, + "n88": { + "ending": "o", + "declension": [{ + "val": "o","g": "m","n": "s" + },{ + "val": "o","g": "f","n": "s" + },{ + "val": "i","g": "m","n": "p" + },{ + "val": "i","g": "f","n": "p" + }] + }, + "n89": { + "ending": "or", + "declension": [{ + "val": "or","g": "m","n": "s" + },{ + "val": "ores","g": "m","n": "p" + }] + }, + "n90": { + "ending": "o", + "declension": [{ + "val": "o","g": "m","n": "s" + },{ + "val": "a","g": "m","n": "p" + }] + }, + "n91": { + "ending": "o", + "declension": [{ + "val": "o","g": "m","n": "s" + },{ + "val": "a","g": "f","n": "s" + },{ + "val": "a","g": "m","n": "p" + },{ + "val": "a","g": "f","n": "p" + }] + }, + "n92": { + "ending": "", + "declension": [{ + "val": "","g": "m","n": "s" + },{ + "val": "e","g": "m","n": "p" + }] + }, + "n93": { + "ending": "", + "declension": [{ + "val": "","g": "m","n": "s" + },{ + "val": "er","g": "m","n": "p" + }] + }, + "n94": { + "ending": "ar", + "declension": [{ + "val": "ar","g": "m","n": "s" + },{ + "val": "our","g": "m","n": "p" + }] + }, + "n95": { + "ending": "", + "declension": [{ + "val": "","g": "m","n": "s" + },{ + "val": "a","g": "m","n": "p" + }] + }, + "n96": { + "ending": "oy", + "declension": [{ + "val": "oy","g": "m","n": "s" + },{ + "val": "oyim","g": "m","n": "p" + }] + }, + "n97": { + "ending": "oï", + "declension": [{ + "val": "oï","g": "m","n": "s" + },{ + "val": "oïm","g": "m","n": "p" + }] + }, + "n98": { + "ending": "ai", + "declension": [{ + "val": "ai","g": "m","n": "s" + },{ + "val": "ayin","g": "m","n": "p" + }] + }, + "n99": { + "ending": "e", + "declension": [{ + "val": "e","g": "m","n": "s" + },{ + "val": "i","g": "m","n": "p" + }] + }, + "n100": { + "ending": "a", + "declension": [{ + "val": "a","g": "f","n": "s" + },{ + "val": "ae","g": "f","n": "p" + }] + }, + "n101": { + "ending": "gens", + "declension": [{ + "val": "gens","g": "f","n": "s" + },{ + "val": "gentes","g": "f","n": "p" + }] + }, + "n102": { + "ending": "au", + "declension": [{ + "val": "au","g": "m","n": "s" + },{ + "val": "aude","g": "f","n": "s" + },{ + "val": "aux","g": "m","n": "p" + },{ + "val": "audes","g": "f","n": "p" + }] + }, + "n103": { + "ending": "ète", + "declension": [{ + "val": "ète","g": "m","n": "s" + },{ + "val": "étesse","g": "f","n": "s" + },{ + "val": "ètes","g": "m","n": "p" + },{ + "val": "étesses","g": "f","n": "p" + }] + }, + "n104": { + "ending": "ain", + "declension": [{ + "val": "ain","g": "m","n": "s" + },{ + "val": "ine","g": "f","n": "s" + },{ + "val": "ains","g": "m","n": "p" + },{ + "val": "ines","g": "f","n": "p" + }] + }, + "n105": { + "ending": "in", + "declension": [{ + "val": "in","g": "m","n": "s" + },{ + "val": "ineresse","g": "f","n": "s" + },{ + "val": "ins","g": "m","n": "p" + },{ + "val": "ineresses","g": "f","n": "p" + }] + }, + "n106": { + "ending": "eg", + "declension": [{ + "val": "eg","g": "m","n": "s" + },{ + "val": "ègue","g": "f","n": "s" + },{ + "val": "egs","g": "m","n": "p" + },{ + "val": "ègues","g": "f","n": "p" + }] + }, + "n107": { + "ending": "targui", + "declension": [{ + "val": "targui","g": "m","n": "s" + },{ + "val": "targuia","g": "f","n": "s" + },{ + "val": "touareg","g": "m","n": "p" + },{ + "val": "targuiat","g": "f","n": "p" + }] + }, + "n108": { + "ending": "eau", + "declension": [{ + "val": "eau","g": "m","n": "s" + },{ + "val": "elle","g": "f","n": "s" + },{ + "val": "eaux","g": "m","n": "p" + },{ + "val": "elles","g": "f","n": "p" + }] + }, + "n109": { + "ending": "ou", + "declension": [{ + "val": "ou","g": "m","n": "s" + },{ + "val": "olle","g": "f","n": "s" + },{ + "val": "ous","g": "m","n": "p" + },{ + "val": "olles","g": "f","n": "p" + }] + }, + "pn0":{ + "ending":"on", + "declension":[{ + "val": "on","g": "x","n": "s","pe": 3 + }] + }, + "pn1": { + "ending": "je", + "declension": [{ + "val": "je","g": "x","n": "s","pe": 1 + },{ + "val": "nous","g": "x","n": "p","pe": 1 + },{ + "val": "tu","g": "x","n": "s","pe": 2 + },{ + "val": "vous","g": "x","n": "p","pe": 2 + },{ + "val": "il","g": "m","n": "s","pe": 3 + },{ + "val": "elle","g": "f","n": "s","pe": 3 + },{ + "val": "ils","g": "m","n": "p","pe": 3 + },{ + "val": "elles","g": "f","n": "p","pe": 3 + }] + }, + "pn2": { + "ending": "me", + "declension": [{ + "val": "me","g": "x","n": "s","pe": 1 + },{ + "val": "nous","g": "x","n": "p","pe": 1 + },{ + "val": "te","g": "x","n": "s","pe": 2 + },{ + "val": "vous","g": "x","n": "p","pe": 2 + },{ + "val": "le","g": "m","n": "s","pe": 3 + },{ + "val": "la","g": "f","n": "s","pe": 3 + },{ + "val": "les","g": "x","n": "p","pe": 3 + }] + }, + "pn3": { + "ending": "me*coi", + "declension": [{ + "val": "me","g": "x","n": "s","pe": 1 + },{ + "val": "nous","g": "x","n": "p","pe": 1 + },{ + "val": "te","g": "x","n": "s","pe": 2 + },{ + "val": "vous","g": "x","n": "p","pe": 2 + },{ + "val": "lui","g": "x","n": "s","pe": 3 + },{ + "val": "leur","g": "x","n": "p","pe": 3 + }] + }, + "pn4": { + "ending": "moi", + "declension": [{ + "val": "moi","g": "x","n": "s","pe": 1 + },{ + "val": "nous","g": "x","n": "p","pe": 1 + },{ + "val": "toi","g": "x","n": "s","pe": 2 + },{ + "val": "vous","g": "x","n": "p","pe": 2 + },{ + "val": "lui","g": "m","n": "s","pe": 3 + },{ + "val": "elle","g": "f","n": "s","pe": 3 + },{ + "val": "eux","g": "m","n": "p","pe": 3 + },{ + "val": "elles","g": "f","n": "p","pe": 3 + }] + }, + "pn5": { + "ending": "mézigue", + "declension": [{ + "val": "mézigue","g": "m","n": "s","pe": 1 + },{ + "val": "mézigues","g": "m","n": "p","pe": 1 + },{ + "val": "tézigue","g": "m","n": "s","pe": 2 + },{ + "val": "tézigues","g": "m","n": "p","pe": 2 + },{ + "val": "sézigue","g": "m","n": "s","pe": 3 + },{ + "val": "sézigues","g": "m","n": "p","pe": 3 + }] + }, + "pn6": { + "ending": "me*refl", + "declension": [{ + "val": "me","g": "x","n": "s","pe": 1 + },{ + "val": "nous","g": "x","n": "p","pe": 1 + },{ + "val": "te","g": "x","n": "s","pe": 2 + },{ + "val": "vous","g": "x","n": "p","pe": 2 + },{ + "val": "se","g": "x","n": "x","pe": 3 + }] + }, + "pn7": { + "ending": "moi*refl", + "declension": [{ + "val": "moi","g": "x","n": "s","pe": 1 + },{ + "val": "nous","g": "x","n": "p","pe": 1 + },{ + "val": "toi","g": "x","n": "s","pe": 2 + },{ + "val": "vous","g": "x","n": "p","pe": 2 + },{ + "val": "soi","g": "x","n": "x","pe": 3 + }] + }, + "pn8": { + "ending": "moi-même", + "declension": [{ + "val": "moi-même","g": "x","n": "s","pe": 1 + },{ + "val": "nous-mêmes","g": "x","n": "p","pe": 1 + },{ + "val": "toi-même","g": "x","n": "s","pe": 2 + },{ + "val": "vous-mêmes","g": "x","n": "p","pe": 2 + },{ + "val": "lui-même","g": "m","n": "s","pe": 3 + },{ + "val": "elle-même","g": "f","n": "s","pe": 3 + },{ + "val": "eux-mêmes","g": "m","n": "p","pe": 3 + },{ + "val": "elles-mêmes","g": "f","n": "p","pe": 3 + }] + }, + "pn9": { + "ending": "soi-même", + "declension": [{ + "val": "soi-même","g": "x","n": "s","pe": 3 + }] + }, + "pn10": { + "ending": "en", + "declension": [{ + "val": "en","g": "x","n": "x" + }] + }, + "pn11": { + "ending": "y", + "declension": [{ + "val": "y","g": "x","n": "x" + }] + }, + "pn12": { + "ending": "mien", + "declension": [{ + "val": "mien","g": "m","n": "s","pe": 1 + },{ + "val": "mienne","g": "f","n": "s","pe": 1 + },{ + "val": "miens","g": "m","n": "p","pe": 1 + },{ + "val": "miennes","g": "f","n": "p","pe": 1 + },{ + "val": "tien","g": "m","n": "s","pe": 2 + },{ + "val": "tienne","g": "f","n": "s","pe": 2 + },{ + "val": "tiens","g": "m","n": "p","pe": 2 + },{ + "val": "tiennes","g": "f","n": "p","pe": 2 + },{ + "val": "sien","g": "m","n": "s","pe": 3 + },{ + "val": "sienne","g": "f","n": "s","pe": 3 + },{ + "val": "siens","g": "m","n": "p","pe": 3 + },{ + "val": "siennes","g": "f","n": "p","pe": 3 + }] + }, + "pn13": { + "ending": "nôtre", + "declension": [{ + "val": "nôtre","g": "m","n": "s","pe": 1 + },{ + "val": "nôtre","g": "f","n": "s","pe": 1 + },{ + "val": "nôtres","g": "m","n": "p","pe": 1 + },{ + "val": "nôtres","g": "f","n": "p","pe": 1 + },{ + "val": "vôtre","g": "m","n": "s","pe": 2 + },{ + "val": "vôtre","g": "f","n": "s","pe": 2 + },{ + "val": "vôtres","g": "m","n": "p","pe": 2 + },{ + "val": "vôtres","g": "f","n": "p","pe": 2 + },{ + "val": "leur","g": "m","n": "s","pe": 3 + },{ + "val": "leur","g": "f","n": "s","pe": 3 + },{ + "val": "leurs","g": "m","n": "p","pe": 3 + },{ + "val": "leurs","g": "f","n": "p","pe": 3 + }] + }, + "pn14": { + "ending": "ce", + "declension": [{ + "val": "ce","g": "n","n": "s","pe": 3 + }] + }, + "pn15": { + "ending": "celui", + "declension": [{ + "val": "celui","g": "m","n": "s","pe": 3 + },{ + "val": "celle","g": "f","n": "s","pe": 3 + },{ + "val": "ceux","g": "m","n": "p","pe": 3 + },{ + "val": "celles","g": "f","n": "p","pe": 3 + }] + }, + "pn16": { + "ending": "ceci", + "declension": [{ + "val": "ceci","g": "n","n": "s","pe": 3 + }] + }, + "pn17": { + "ending": "celui-ci", + "declension": [{ + "val": "celui-ci","g": "m","n": "s","pe": 3 + },{ + "val": "celle-ci","g": "f","n": "s","pe": 3 + },{ + "val": "ceux-ci","g": "m","n": "p","pe": 3 + },{ + "val": "celles-ci","g": "f","n": "p","pe": 3 + }] + }, + "pn18": { + "ending": "ça", + "declension": [{ + "val": "ça","g": "n","n": "s","pe": 3 + }] + }, + "pn19": { + "ending": "cela", + "declension": [{ + "val": "cela","g": "n","n": "s","pe": 3 + }] + }, + "pn20": { + "ending": "celui-là", + "declension": [{ + "val": "celui-là","g": "m","n": "s","pe": 3 + },{ + "val": "celle-là","g": "f","n": "s","pe": 3 + },{ + "val": "ceux-là","g": "m","n": "p","pe": 3 + },{ + "val": "celles-là","g": "f","n": "p","pe": 3 + }] + }, + "pn21": { + "ending": "qui", + "declension": [{ + "val": "qui","g": "m","n": "s","pe": 3 + },{ + "val": "qui","g": "f","n": "s","pe": 3 + },{ + "val": "qui","g": "m","n": "p","pe": 3 + },{ + "val": "qui","g": "f","n": "p","pe": 3 + }] + }, + "pn22": { + "ending": "que", + "declension": [{ + "val": "que","g": "m","n": "s" + },{ + "val": "que","g": "f","n": "s" + },{ + "val": "que","g": "m","n": "p" + },{ + "val": "que","g": "f","n": "p" + }] + }, + "pn23": { + "ending": "dont", + "declension": [{ + "val": "dont","g": "m","n": "s" + },{ + "val": "dont","g": "f","n": "s" + },{ + "val": "dont","g": "m","n": "p" + },{ + "val": "dont","g": "f","n": "p" + }] + }, + "pn24": { + "ending": "lequel", + "declension": [{ + "val": "lequel","g": "m","n": "s" + },{ + "val": "laquelle","g": "f","n": "s" + },{ + "val": "lesquels","g": "m","n": "p" + },{ + "val": "lesquelles","g": "f","n": "p" + }] + }, + "pn25": { + "ending": "auquel", + "declension": [{ + "val": "auquel","g": "m","n": "s" + },{ + "val": "à laquelle","g": "f","n": "s" + },{ + "val": "auxquels","g": "m","n": "p" + },{ + "val": "auxquelles","g": "f","n": "p" + }] + }, + "pn26": { + "ending": "duquel", + "declension": [{ + "val": "duquel","g": "m","n": "s" + },{ + "val": "de laquelle","g": "f","n": "s" + },{ + "val": "desquels","g": "m","n": "p" + },{ + "val": "desquelles","g": "f","n": "p" + }] + }, + "pn27": { + "ending": "où", + "declension": [{ + "val": "où" + }] + }, + "pn28": { + "ending": "quand", + "declension": [{ + "val": "quand" + }] + }, + "pn29": { + "ending": "quoi", + "declension": [{ + "val": "quoi" + }] + }, + "pn30": { + "ending": "qui", + "declension": [{ + "val": "qui" + }] + }, + "pn31": { + "ending": "que", + "declension": [{ + "val": "que" + }] + }, + "pn32": { + "ending": "comment", + "declension": [{ + "val": "comment" + }] + }, + "pn33": { + "ending": "combien", + "declension": [{ + "val": "combien" + }] + }, + "pn34": { + "ending": "pourquoi", + "declension": [{ + "val": "pourquoi" + }] + }, + "pn35": { + "ending": "", + "declension": [{ + "val": "","g": "m","n": "s" + },{ + "val": "le","g": "f","n": "s" + },{ + "val": "s","g": "m","n": "p" + },{ + "val": "lles","g": "f","n": "p" + }] + }, + "d1": { + "ending": "le", + "declension": [{ + "val": "le","g": "m","n": "s" + },{ + "val": "la","g": "f","n": "s" + },{ + "val": "les","g": "m","n": "p" + },{ + "val": "les","g": "f","n": "p" + }] + }, + "d2": { + "ending": "au", + "declension": [{ + "val": "au","g": "m","n": "s" + },{ + "val": "à la","g": "f","n": "s" + },{ + "val": "aux","g": "m","n": "p" + },{ + "val": "aux","g": "f","n": "p" + }] + }, + "d3": { + "ending": "du", + "declension": [{ + "val": "du","g": "m","n": "s" + },{ + "val": "de la","g": "f","n": "s" + },{ + "val": "des","g": "m","n": "p" + },{ + "val": "des","g": "f","n": "p" + }] + }, + "d4": { + "ending": "un", + "declension": [{ + "val": "un","g": "m","n": "s" + },{ + "val": "une","g": "f","n": "s" + },{ + "val": "des","g": "m","n": "p" + },{ + "val": "des","g": "f","n": "p" + }] + }, + "d5": { + "ending": "mon", + "declension": [{ + "val": "mon","g": "m","n": "s","pe": 1 + },{ + "val": "ma","g": "f","n": "s","pe": 1 + },{ + "val": "mes","g": "m","n": "p","pe": 1 + },{ + "val": "mes","g": "f","n": "p","pe": 1 + },{ + "val": "ton","g": "m","n": "s","pe": 2 + },{ + "val": "ta","g": "f","n": "s","pe": 2 + },{ + "val": "tes","g": "m","n": "p","pe": 2 + },{ + "val": "tes","g": "f","n": "p","pe": 2 + },{ + "val": "son","g": "m","n": "s","pe": 3 + },{ + "val": "sa","g": "f","n": "s","pe": 3 + },{ + "val": "ses","g": "m","n": "p","pe": 3 + },{ + "val": "ses","g": "f","n": "p","pe": 3 + }] + }, + "d6": { + "ending": "notre", + "declension": [{ + "val": "notre","g": "m","n": "s","pe": 1 + },{ + "val": "notre","g": "f","n": "s","pe": 1 + },{ + "val": "nos","g": "m","n": "p","pe": 1 + },{ + "val": "nos","g": "f","n": "p","pe": 1 + },{ + "val": "votre","g": "m","n": "s","pe": 2 + },{ + "val": "votre","g": "f","n": "s","pe": 2 + },{ + "val": "vos","g": "m","n": "p","pe": 2 + },{ + "val": "vos","g": "f","n": "p","pe": 2 + },{ + "val": "leur","g": "m","n": "s","pe": 3 + },{ + "val": "leur","g": "f","n": "s","pe": 3 + },{ + "val": "leurs","g": "m","n": "p","pe": 3 + },{ + "val": "leurs","g": "f","n": "p","pe": 3 + }] + }, + "d7": { + "ending": "", + "declension": [{ + "val": "","g": "m","n": "s" + },{ + "val": "tte","g": "f","n": "s" + },{ + "val": "s","g": "m","n": "p" + },{ + "val": "s","g": "f","n": "p" + }] + }, + "d8": { + "ending": "", + "declension": [{ + "val": "","g": "m","n": "s" + },{ + "val": "le","g": "f","n": "s" + },{ + "val": "s","g": "m","n": "p" + },{ + "val": "les","g": "f","n": "p" + }] + } + }, + "punctuation": { + "pc1": { + "b": "", + "a": "" + }, + "pc2": { + "b": " ", + "a": " " + }, + "pc3": { + "b": " ", + "a": "" + }, + "pc4": { + "b": "", + "a": " " + }, + "pc5": { + "b": " ", + "a": "", + "pos": "l" + }, + "pc6": { + "b": "", + "a": " ", + "pos": "r" + }, + "pc7": { + "b": " ", + "a": " ", + "pos": "l" + }, + "pc8": { + "b": " ", + "a": " ", + "pos": "r" + } + }, + "sentence_type": { + "exc": { + "type": "exclamative", + "punctuation": "!" + }, + "int": { + "type": "interrogative", + "punctuation": "?", + "prefix": { + "base": "est-ce que", + "yon": "est-ce que", + "wos": "qui est-ce qui", + "wod": "qui est-ce que", + "woi": "à qui est-ce que", + "wad": "qu'est-ce que", + "whe": "où est-ce que", + "how": "comment est-ce que", + "whn": "quand est-ce que", + "why": "pourquoi est-ce que", + "muc": "combien" + } + }, + "dec": { + "type": "declarative", + "punctuation": "." + } + }, + "propositional": { + "base": "que", + "subject": "qui", + "pronoun": { + "alias": "pro", + "type": "Pro" + }, + "cdInfo": { + "alias": "cdInfo" + } + }, + "regular": { + "av": { + "ending": "", + "option": [{ + "val": "" + }] + }, + "ave": { + "ending": "e", + "option": [{ + "val": "e" + },{ + "val": "'" + }] + }, + "pp": { + "ending": "", + "option": [{ + "val": "" + }] + }, + "ppe": { + "ending": "e", + "option": [{ + "val": "e" + },{ + "val": "'" + }] + } + }, + "verb_option": { + "neg": { + "prep1": "ne", + "prep2": "pas", + "autres": ["pas","jamais","plus","guère","nullement","rien","que"] + }, + "prog": { + "aux": "être", + "keyword": "en train de" + }, + "modalityVerb":{ + "possibility":"pouvoir", + "permission":"pouvoir", + "necessity":"devoir", + "willingness":"vouloir", + "obligation":"devoir" + } + }, + "usePronoun": { + "S": "je", + "VP": "le", + "PP": "moi", + "Pro": "moi" + }, + "date": { + "format": { + "non_natural": { + "year-month-date-day": "[l] [d]\/[M]\/[Y]", + "year-month-date": "[d]\/[M]\/[Y]", + "year-month": "[M]\/[Y]", + "month-date": "[d]\/[M]", + "month-date-day": "[l] [d]\/[M]", + "year": "[Y]", + "month": "[m]", + "date": "[d]", + "day": "[l]", + "hour:minute:second": "[H0]:[m0]:[s0]", + "hour:minute": "[H0]:[m0]", + "minute:second": "[m0]:[s0]", + "hour": "[H]", + "minute": "[m]", + "second": "[s]" + }, + "natural": { + "year-month-date-day": "le [l] [d] [F] [Y]", + "year-month-date": "le [d] [F] [Y]", + "year-month": "en [F] [Y]", + "month-date": "le [d] [F]", + "month-date-day": "le [l] [d] [F]", + "year": "en [Y]", + "month": "en [F]", + "date": "le [d]", + "day": "le [l]", + "hour:minute:second": "à [H] h [m] min [s] s", + "hour:minute": "à [H] h [m]", + "minute:second": "à [m] min [s] s", + "hour": "à [H] h", + "minute": "à [i] min", + "second": "à [s] s" + }, + "relative_time": { + "-": "il y a [x] jours", + "-6": "[l] dernier", + "-5": "[l] dernier", + "-4": "[l] dernier", + "-3": "[l] dernier", + "-2": "avant-hier", + "-1": "hier", + "0": "aujourd'hui", + "1": "demain", + "2": "après-demain", + "3": "[l] prochain", + "4": "[l] prochain", + "5": "[l] prochain", + "6": "[l] prochain", + "+": "dans [x] jours" + } + }, + "text": { + "weekday": ["dimanche","lundi","mardi","mercredi","jeudi","vendredi","samedi"], + "month": { + "1": "janvier", + "2": "février", + "3": "mars", + "4": "avril", + "5": "mai", + "6": "juin", + "7": "juillet", + "8": "août", + "9": "septembre", + "10": "octobre", + "11": "novembre", + "12": "décembre" + } + } + }, + "number": { + "symbol": { + "group": " ", + "decimal": "," + }, + "number": ["zéro"] + }, + "union": "ou" +} +// Terminals +exports.N=N; +exports.A=A; +exports.Pro=Pro; +exports.D=D; +exports.V=V; +exports.Adv=Adv; +exports.P=P; +exports.C=C; +exports.Q=Q; +// Phrases +exports.S=S; +exports.SP=SP; +exports.CP=CP; +exports.VP=VP; +exports.NP=NP; +exports.AP=AP; +exports.PP=PP; +exports.AdvP=AdvP; + +exports.DT=DT; // Dates +exports.NO=NO; // Numbers + +// Utilities +exports.addToLexicon=addToLexicon; +exports.updateLexicon=updateLexicon; +exports.getLemma=getLemma; +exports.getLanguage=getLanguage; +exports.oneOf=oneOf; +exports.setExceptionOnWarning=setExceptionOnWarning; + +exports.jsRealB_version=jsRealB_version; +exports.jsRealB_dateCreated=jsRealB_dateCreated; + +if (typeof lexiconEn !== "undefined") exports.lexiconEn=lexiconEn; +if (typeof loadEn !== "undefined") exports.loadEn=loadEn; +if (typeof lexiconFr !== "undefined") exports.lexiconFr=lexiconFr; +if (typeof loadFr !== "undefined") exports.loadFr=loadFr; +// some useful function for the NodeIDE +// these function access internals of jsRealB +var checkAmbiguities=false; + +function isConstituent(obj){ + return obj instanceof Constituent; +} + +function showConjugation(conjugations,mot,query,terminaison){ + var regexp=new RegExp("^"+query+"$"); + var $div=$(""); + var found=false; + for(no in conjugations){ + if (regexp.test(terminaison?conjugations[no]["ending"]:no)){ + found=true; + var conjugation=conjugations[no]; + var $caption=$("").html(mot+" "+no+" :: "+conjugation["ending"]); + var $tbody=$(""); + var $thead=$("tempsvaleurs"); + var $tbody=$(""); + var lesTemps=conjugation["t"]; + var nomTemps=Object.keys(lesTemps); + var nbTemps=nomTemps.length; + for (var i=0;i"+nomTemps[i]+""+lesTemps[nomTemps[i]]+""); + } + $div.append($("").append($caption,$thead,$tbody)) + } + } + if (found) return $div; + return $("

"+query+":"+(lang=="fr"?"conjugaison non trouvée":"conjugation not found")+"

"); +} + +function showDeclension(declensions,mot,query,terminaison){ + var regexp=new RegExp("^"+query+"$"); + var $div=$("") + var found=false; + for(no in declensions){ + if (regexp.test(terminaison?declensions[no]["ending"]:no)){ + found=true; + var declension=declensions[no]; + var $caption=$(""); + var $thead=$(""); + var $tbody=$(""); + for (var i=0;i"); + for(var j=0;j"+lines[i][fields[j]]+"") + } + $tbody.append($tr); + } + $div.append($("
").html(mot+" "+no+" :: "+declension["ending"]); + var lines=declension["declension"]; + var nbLines=lines.length; + // trouver les champs présents (on suppose que toutes les entrées ont les mêmes champs) + var fields=["val"]; + var line0=lines[0]; + for(var field in line0) + if(fields.indexOf(field)<0)fields.push(field); + var nbFields=fields.length; + // créer les lignes de la table + var $tbody=$("
"+(fields.join(""))+"
").append($caption,$thead,$tbody)) + } + } + if (found) return $div; + return $("

"+query+":"+(lang=="fr"?"déclinaison non trouvée":"declension not found")+"

"); +} + + +//////////// LEMMATIZATION + +// start of functions +function showLemmata(lemmata){ + console.log("-------") + var keys=Array.from(lemmata.keys()); + keys.sort(); + for (var i = 0; i < keys.length; i++) { + var key=keys[i] + console.log(key,":",""+lemmata.get(key)) + } +} + +function addLemma(lemmata,word,jsRexp){ + if (checkAmbiguities){ + // check if jsRealB generates the same string... + var genWord=eval(jsRexp); + if(genWord!=word){ + console.log("%s => %s != %s",jsRexp,genWord,word); + } + } + // add word + // console.log("addLemma",word,jsRexp); + var l=lemmata.get(word); + if (l===undefined)lemmata.set(word,l=[]); + l.push(jsRexp); +} + +function genExp(declension,pos,entry,lexiconEntry){ + var out = pos+'("'+entry+'")'; + // console.log("genExp",declension,pos,entry,lexiconEntry); + switch (pos) { + case "N": + var g=lexiconEntry["g"]; + // gender are ignored in English + if (lemmataLang=="en"|| declension["g"]==g || declension["g"]=="x"){ + return out+(declension["n"]=="p"?'.n("p")':""); + } + break; + case "Pro":case "D": + var defGender=lemmataLang=="fr"?"m":"n"; + var g=declension["g"]; + if (g===undefined || g=="x" || g=="n")g=defGender; + out+='.g("'+g+'")'; + var n=declension["n"]; + if (n===undefined || n=="x")n="s"; + out+=n!="s"?'.n("'+n+'")':''; + if ("pe" in declension){ + var pe=declension["pe"]; + out+=(pe!=3?'.pe('+pe+')':''); + } + if ("own" in declension){ + out+='.ow("'+declension["own"]+'")' + } + return out; + break; + case "A": + if (lemmataLang=="fr"){ + var g=declension["g"]; + if (g===undefined || g=="x")g="m"; + var n=declension["n"]; + if (n===undefined)n="s"; + return out+(g!="m"?'.g("'+g+'")':'')+(n!="s"?'.n("'+n+'")':''); + } else { // comparatif en anglais + var f=declension["f"]; + return out+(f==undefined?"":'.f("'+f+'")'); + } + break; + case "Adv": + if (lemmataLang=="fr"){ + return out; + } else { + var f=declension["f"]; + return out+(f==undefined?"":'.f("'+f+'")'); + } + break; + default: + console.log("***POS not implemented:%s",pos) + } + return null; +} + +function expandConjugation(lexicon,lemmata,rules,entry,tab,conjug){ + var conjug=rules["conjugation"][tab]; + // console.log(conjug); + if (conjug==undefined)return; + var ending=conjug["ending"]; + var endRadical=entry.length-ending.length; + var radical=entry.slice(0,endRadical); + if (entry.slice(endRadical)!=ending){ + console.log("strange ending:",entry,":",ending); + return; + } + var tenses=Object.keys(conjug["t"]); + for (var k = 0; k < tenses.length; k++) { + var t=tenses[k]; + var persons=conjug["t"][t] + if (persons===null)continue; + if (typeof persons =="object" && persons.length==6){ + for (var pe = 0; pe < 6; pe++) { + if (persons[pe]==null) continue; + var word=radical+persons[pe]; + var pe3=pe%3+1; + var n=pe>=3?"p":"s"; + var jsRexp='V("'+entry+'")'+(t!="p"?'.t("'+t+'")':'') + +(pe3!=3?'.pe('+pe3+')':'') + +(n!='s'?'.n("'+n+'")':''); + addLemma(lemmata,word,jsRexp); + } + } else if (typeof persons=="string"){ + // if (lemmataLang=="en" && t=="b") + // addLemma(lemmata,"to "+radical+persons,'V("'+entry+'").t("b")') + // else + addLemma(lemmata,radical+persons,'V("'+entry+'")'+(t!="p"?'.t("'+t+'")':'')); + } else { + console.log("***Strange persons:",entry,tenses,k,persons); + } + } +} + +function expandDeclension(lexicon,lemmata,rules,entry,pos,tabs){ + // console.log(entry,"tabs",tabs) + for (var k = 0; k < tabs.length; k++) { + var tab=tabs[k]; + var rulesDecl=rules["declension"]; + var declension=null; + if (tab in rulesDecl) + declension=rulesDecl[tab]; + else if (tab in rules["regular"]){ + addLemma(lemmata,entry,pos+'("'+entry+'")'); + continue; + } + if (declension==null)continue; + // console.log(declension); + var ending=declension["ending"]; + var endRadical=entry.length-ending.length; + var radical=entry.slice(0,endRadical); + if (entry.slice(endRadical)!=ending){ + console.log("strange ending:",entry,":",ending); + continue; + } + var decl=declension["declension"]; + // console.log("decl",decl); + for (var l = 0; l < decl.length; l++) { + var jsRexp=genExp(decl[l],pos,entry,lexicon[entry][pos]); + if (jsRexp!=null){ + var word=radical+decl[l]["val"]; + addLemma(lemmata,word,jsRexp); + } + } + } +} + +function buildLemmata(lang,lexicon,rules){ + lemmataLang=lang; + let lemmata=new Map(); // use a Map instead of an object because "constructor" is an English word... + let allEntries=Object.keys(lexicon); + for (var i = 0; i < allEntries.length; i++) { + var entry=allEntries[i]; + var entryInfos=lexicon[entry]; + var allPos=Object.keys(entryInfos); + // console.log(entryInfos,allPos) + for (var j = 0; j < allPos.length; j++) { + var pos=allPos[j]; + // console.log(entryInfos,j,pos); + if (pos=="Pc") continue; // ignore punctuation + if (pos=="V"){ // conjugation + expandConjugation(lexicon,lemmata,rules,entry, + entryInfos["V"]["tab"],rules["conjugation"]["tab"]); + } else { // declension + expandDeclension(lexicon,lemmata,rules,entry,pos,entryInfos[pos]["tab"]); + } + } + } + return lemmata; +} + +function lemmatize(query,lang){ + function removeAccent(s){ + return s.toLowerCase().normalize('NFD').replace(/[\u0300-\u036f]/g, '') + } + lang=lang||getLanguage() + const lemmata = lang=="en" ? lemmataEn : lemmataFr; + if (lemmata.has(query)) // check for verbatim + return lemmata.get(query).join("\n") + // try to match with a regular expression + const re=new RegExp("^"+query+"$"); + let res=[]; + for (let key of lemmata.keys()){ + if (re.test(key))res.push(key+": "+lemmata.get(key).join("; ")); + } + if (res.length==0){ + return query+" : "+(getLanguage()=="en"?"cannot be lemmatized":"ne peut être lemmatisé"); + } else { + // sort without accent to get more usual dictionary order + res.sort((a,b)=>a==b?0:removeAccent(a)=0},Constituent.prototype.isFr=function(){return"fr"==this.lang},Constituent.prototype.isEn=function(){return"en"==this.lang},Constituent.prototype.getProp=function(propName){const val=this.prop[propName];if(void 0!==val)return val;let lastVerb,current=this,next=current.agreesWith;for(;void 0!==next;)current.isOneOf(["V","VP"])&&(lastVerb=current),current=next,next=next.agreesWith;return"t"==propName&&void 0!==lastVerb?lastVerb.prop.t||defaultProps.t:current.prop[propName]||defaultProps[propName]},Constituent.prototype.getSentProp=function(propName){const value=this.prop[propName];return void 0!==value?value:null!=this.parentConst&&"S"!=this.constType&&"SP"!=this.constType?this.parentConst.getSentProp(propName):void 0},Constituent.prototype.getFromPath=function(path){if(0==path.length)return this;const current=path.shift(),c=this.getConst(current);return void 0===c?"object"==typeof current&¤t.indexOf("")>=0&&path.length>0?this.getFromPath(path):void 0:c.getFromPath(path)},genOptionFunc("t",["p","i","f","ps","c","s","si","ip","pr","pp","b","pc","pq","cp","fa","spa","spq"],["V","VP","S"]),genOptionFunc("g",["m","f","n","x"],["D","N","NP","A","AP","Pro","V","VP","S"]),genOptionFunc("n",["s","p"],["D","N","NP","A","AP","Pro","V","VP","S"]),genOptionFunc("pe",[1,2,3],["D","Pro","N","NP","V","VP","S"]),genOptionFunc("f",["co","su"],["A","AP","Adv"]),genOptionFunc("aux",["av","êt","aê"],["V","VP"]),genOptionFunc("pos",["post","pre"],["A","AP"]),genOptionFunc("pro",void 0,["N","NP"]),genOptionFunc("ow",["s","p","x"],["D","Pro"],"own"),genOptionFunc("cap",void 0,[]),genOptionFunc("lier",void 0,[]),genOptionListFunc("b"),genOptionListFunc("a"),genOptionListFunc("en"),Constituent.prototype.tag=function(name,attrs){return void 0===attrs&&(attrs=""),void 0===this.prop.tag&&(this.prop.tag=[]),this.prop.tag.push([name,attrs]),this},Constituent.prototype.dOpt=function(dOptions){if(this.isA("DT")){const allowedKeys=["year","month","date","day","hour","minute","second","nat","det","rtime"],keys=Object.keys(dOptions);for(let i=0;i=0){const val=dOptions[key];"boolean"==typeof val?this.dateOpts[key]=val:this.warning("dOpt: the value of "+key+" should be a boolean not "+val)}else this.warning(key+"is not an allowed key in dOpt fo DT")}}else if(this.isA("NO")){const allowedKeys=["mprecision","raw","nat","ord"],keys=Object.keys(dOptions);for(let i=0;i=0){const val=dOptions[key];"mprecision"==key?"number"==typeof val?this.noOptions.mprecision=val:this.warning("mprecision should be a number not "+val):"boolean"==typeof val?this.noOptions[key]=val:this.warning(".dOpt("+key+") for NO should be boolean not "+val)}else this.warning(key+"is not an allowed key in dOpt for NO")}}else this.warning(".dOpt should only be applied to a DT or a NO not a "+this.constType);return this},Constituent.prototype.nat=function(isNat){if(this.isOneOf(["DT","NO"])){const options=this.isA("DT")?this.dateOpts:this.noOptions;void 0===isNat?options.nat=!1:"boolean"==typeof isNat?options.nat=isNat:this.warning("nat: the value of the argument should be a boolean not "+isNat)}else this.warning(".nat should only be applied to a DT or a NO not a "+this.constType);return this},Constituent.prototype.verbAgreeWith=function(subject){if(this.isA("VP")){const v=this.getConst("V");if(void 0!==v&&(this.agreesWith=v,v.agreesWith=subject,"être"==v.lemma)){const apa=this.getConst(["AP","A"]);if(void 0!==apa)if(apa.isA("AP")){const a=apa.getConst("A");void 0!==a&&(apa.agreesWith=a,a.agreesWith=subject)}else apa.agreesWith=subject}}else this.isA("V")?this.agreesWith=subject:this.error("verbAgreeWith should be called on VP or V, not a "+this.constType)};const sepWordREen=/((?:[^<\w'-]*(?:<[^>]+>)?)*)([\w'-]+)?(.*)/;function doElisionEn(cList){const hAnRE=/^(heir|herb|honest|honou?r(able)?|hour)/i,uLikeYouRE=/^(uni.*|ub.*|use.*|usu.*|uv.*)/i,acronymRE=/^[A-Z]+$/;for(var last=cList.length-1,i=0;i]+>)?)*)([\wàâéèêëîïôöùüç'-]+)?(.*)/i;function doElisionFr(cList){const elidableWordFrRE=/^(la|le|je|me|te|se|de|ne|que|puisque|lorsque|jusque|quoique)$/i,euphonieFrRE=/^(ma|ta|sa|ce|beau|fou|mou|nouveau|vieux)$/i,euphonieFrTable={ma:"mon",ta:"ton",sa:"son",ce:"cet",beau:"bel",fou:"fol",mou:"mol",nouveau:"nouvel",vieux:"vieil"},contractionFrTable={"à+le":"au","à+les":"aux","ça+a":"ç'a","de+le":"du","de+les":"des","de+des":"de","de+autres":"d'autres","des+autres":"d'autres","si+il":"s'il","si+ils":"s'ils"};function isElidableFr(realization,lemma,pos){if(/^[aeiouàâéèêëîïôöùü]/i.exec(realization,lemma,pos))return!0;if(/^h/i.exec(realization)){var lexiconInfo=getLemma(lemma);return void 0===lexiconInfo||!(pos in lexiconInfo&&1==lexiconInfo[pos].h)}return!1}for(var contr,last=cList.length-1,i=0;i0){const last=elements.length-1;for(let i=0;i0&&(cList[0].realization=r.charAt(0).toUpperCase()+r.substring(1))}const tags=this.prop.tag;return void 0!==tags&&tags.forEach((function(tag){const attName=tag[0];wrapWith(function(tagName,attrs){let attString="";return""!==attrs&&(attString=Object.entries(attrs).map((function(entry){return" "+entry[0]+'="'+entry[1]+'"'})).join("")),"<"+tagName+attString+">"}(attName,tag[1]),"")})),cList},Constituent.prototype.detokenize=function(terminals){let s="";const last=terminals.length-1;if(last<0)return s;for(let i=0;i0&&(s+=terminal.realization+" ")}if(s+=terminals[last].realization,null==this.parentConst&&"S"==this.constType&&s.length>0){if(!1!==this.prop.cap){const idx=indexOfFirstLetter(this.lang,s);s=s.substring(0,idx)+s.charAt(idx).toUpperCase()+s.substring(idx+1)}const m=/ ?(<[^>]+>)*$/.exec(s),idxLastChar=s.length-1-m[0].length;contains("?!./",s.charAt(idxLastChar))||(s=s.substring(0,idxLastChar+1)+"."+s.substring(idxLastChar+1))}return s},Constituent.prototype.toString=function(){const terminals=this.real();return this.detokenize(terminals)},Constituent.prototype.clone=function(){return eval(this.toSource())},Constituent.prototype.toSource=function(){let res="",typs=[];return Object.entries(this.prop).forEach((function(e){const key=e[0];let val=e[1];switch(key){case"tag":val.forEach((function(tagE){res+=".tag("+quote(tagE[0]),""!=tagE[1]&&(res+=","+JSON.stringify(tagE[1])),res+=")"}));break;case"neg":case"pas":case"prog":case"perf":case"exc":case"mod":case"int":if(!1===val)break;!0!==val&&(val=quote(val)),typs.push(key+":"+val);break;case"h":case"cod":break;case"own":res+=".ow("+quote(val)+")";break;default:key in defaultProps&&val==defaultProps[key]||("object"==typeof val?val.forEach((function(ei){res+="."+key+"("+quote(ei)+")"})):res+="."+key+"("+quote(val)+")")}})),res+(0==typs.length?"":".typ({"+typs.join()+"})")},extend(Constituent,Phrase),Phrase.prototype.add=function(constituent,position){"string"==typeof constituent&&(constituent=Q(constituent)),constituent.parentConst=this,null==position?this.elements.push(constituent):position=0?this.elements.splice(position,0,constituent):warning("Bad position for .add:"+position+"should be less than "+this.elements.length),this.setAgreementLinks();for(let i=0;i=0&&("pre"==pos&&i>idx||"post"==pos&&i=0){let subject=this.elements[iSubj];if(this.isA("SP")&&subject.isA("Pro")&&contains(["que","that"],subject.lemma)){const jSubj=this.elements.slice(iSubj+1).findIndex(e=>e.isOneOf(["NP","N","CP","Pro"]));if(!(iSubj>=0))return this;subject=this.elements[iSubj+1+jSubj]}this.agreesWith=subject;const vpv=this.getFromPath([["VP",""],"V"]);if(void 0!==vpv){if(vpv.verbAgreeWith(subject),this.isFr()&&"être"==vpv.lemma){const attribute=vpv.parentConst.getFromPath([["AP",""],"A"]);void 0!==attribute&&(attribute.agreesWith=subject)}}else{if(void 0!==this.getFromPath(["CP","VP"])&&this.getConst("CP").elements.forEach((function(e){e instanceof Phrase&&e.verbAgreeWith(subject)})),this.isFr()){const cp=this.getConst("CP"),sp=this.getConst("SP");if(void 0!==cp&&void 0!==sp){var sppro=sp.getConst("Pro");if(void 0!==sppro&&"que"==sppro.lemma){var v=sp.getFromPath([["VP",""],"V"]);void 0!==v&&(v.prop.cod=cp)}}}}}break;default:this.error("setAgreementLinks,unimplemented type:"+this.constType)}return this},Phrase.prototype.me=function(){const children=this.elements.map((function(e){return e.me()}));return this.constType+"("+children.join()+")"},Phrase.prototype.setLemma=function(lemma,terminalType){return this.warning("***: should never happen: setLemma: called on a Phrase"),this},Phrase.prototype.getIndex=function(constTypes){return"string"==typeof constTypes&&(constTypes=[constTypes]),this.elements.findIndex(e=>e.isOneOf(constTypes),this)},Phrase.prototype.getConst=function(constTypes){const idx=this.getIndex(constTypes);if(!(idx<0))return this.elements[idx]},Phrase.prototype.findGenderNumber=function(andCombination){let g="f",n="s",nb=0;for(let i=0;i1&&"s"==n&&andCombination&&(n="p"),{g:g,n:n}},Phrase.prototype.pronominalize=function(){if(this.isA("NP")){const npParent=this.parentConst;let proS,idxV=-1;if(null!==npParent){const myself=this,idxNP=npParent.elements.findIndex(e=>e==myself,this);this==npParent.agreesWith?proS=this.isFr()?"je":"I":npParent.isA("PP")?proS=this.isFr()?"je":"I":(proS=this.isFr()?"le":"me",idxV=npParent.getIndex("V"));const pro=Pro(proS);pro.agreesWith=this.agreesWith,pro.prop=this.prop,this==npParent.agreesWith&&(npParent.agreesWith=pro),this.isFr()&&"le"==proS&&idxV>=0&&"ip"!=npParent.elements[idxV].getProp("t")?(npParent.elements.splice(idxNP,1),npParent.elements[idxV].prop.cod=this,npParent.elements.splice(idxV,0,pro)):npParent.elements.splice(idxNP,1,pro),pro.parentConst=npParent}else{var pro=Pro(this.isFr()?"je":"I");prop.prop=this.prop,pro.agreesWith=this.agreesWith,this.elements=[pro]}}else this.warning(".pro() should be applied only to an NP")},Phrase.prototype.passivate=function(){let subject,vp,newSubject;const nominative=this.isFr()?"je":"I",accusative=this.isFr()?"moi":"me";if(this.isA("VP"))subject=null,vp=this;else{if(void 0===(vp=this.getConst("VP")))return this.warning("Phrase.passivate: no VP found.");this.elements.length>0&&this.elements[0].isOneOf(["N","NP","Pro"])?(subject=this.elements.shift()).isA("Pro")&&(subject.lemma==nominative?subject.setLemma(accusative):subject.lemma==accusative&&subject.setLemma(nominative)):(subject=null,n=vp.getProp("n"))}if(void 0!==vp){let objIdx=vp.getIndex(["NP","Pro"]);if(objIdx>=0){var obj=vp.elements.splice(objIdx,1)[0];obj.isA("Pro")&&(0==objIdx?(obj.setLemma(nominative),objIdx=vp.getIndex("V")+1):obj.lemma==accusative&&obj.setLemma(nominative)),newSubject=obj,this.elements.unshift(newSubject),newSubject.parentConst=this,this.agreesWith=newSubject,null!=subject&&(vp.elements.splice(objIdx,0,PP(P(this.isFr()?"par":"by"),subject)),subject.parentConst=vp)}else null!=subject&&(newSubject=subject,subject.isA("Pro")?subject.setLemma(nominative):"ip"!==vp.getProp("t")&&(subject=Pro(nominative).g(this.isFr()?"m":"n").n("s").pe(3)),this.elements.unshift(subject),this.agreesWith=subject);if(this.isFr()){const verbeIdx=vp.getIndex("V"),verbe=vp.elements.splice(verbeIdx,1)[0],aux=V("être").t(verbe.getProp("t"));aux.parentConst=vp,aux.prop=verbe.prop,aux.agreesWith=newSubject;const pp=V(verbe.lemma).t("pp");pp.agreesWith=newSubject,pp.parentConst=vp,vp.elements.splice(verbeIdx,0,aux,pp)}}else this.warning("passivate: without VP")},Phrase.prototype.processVP=function(types,key,action){if(void 0!==this.getFromPath(["CP","VP"]))return void this.getConst("CP").elements.forEach((function(e){e.isA("VP")&&e.processVP(types,key,action)}));const val=types[key];if(void 0!==val&&!1!==val){let vp;if(this.isA("VP"))vp=this;else{const idxVP=this.getIndex(["VP"]);if(!(idxVP>=0))return void this.warning('.typ("'+key+":"+val+'") without VP');vp=this.elements[idxVP]}const idxV=vp.getIndex("V");if(void 0!==idxV){const v=vp.elements[idxV];action(vp,idxV,v,val)}}},Phrase.prototype.processTyp_fr=function(types){this.processVP(types,"prog",(function(vp,idxV,v){vp.elements.splice(idxV+1,0,Q("en train de"),V(v.lemma).t("b")),v.setLemma("être")})),this.processVP(types,"mod",(function(vp,idxV,v,mod){var vUnit=v.lemma;for(key in rules.verb_option.modalityVerb)if(key.startsWith(mod)){v.setLemma(rules.verb_option.modalityVerb[key]);break}vp.elements.splice(idxV+1,0,V(vUnit).t("b"))})),this.processVP(types,"neg",(function(vp,idxV,v,neg){!0===neg&&(neg="pas"),v.prop.neg=neg,idxV>0&&vp.elements[idxV-1].isA("Pro")?vp.elements.splice(idxV-1,0,Adv("ne")):vp.elements.splice(idxV,0,Adv("ne"))}))};const negMod={can:"cannot",may:"may not",shall:"shall not",will:"will not",must:"must not",could:"could not",might:"might not",should:"should not",would:"would not"};function S(_){return new Phrase(Array.from(arguments),"S")}function NP(_){return new Phrase(Array.from(arguments),"NP")}function AP(_){return new Phrase(Array.from(arguments),"AP")}function VP(_){return new Phrase(Array.from(arguments),"VP")}function AdvP(_){return new Phrase(Array.from(arguments),"AdvP")}function PP(_){return new Phrase(Array.from(arguments),"PP")}function CP(_){return new Phrase(Array.from(arguments),"CP")}function SP(_){return new Phrase(Array.from(arguments),"SP")}function Terminal(terminalType,lemma){Constituent.call(this,terminalType),this.setLemma(lemma,terminalType)}Phrase.prototype.processTyp_en=function(types){let vp;if(this.isA("VP"))vp=this;else{const idxVP=this.getIndex(["VP"]);if(void 0===idxVP)return void this.warning('.typ("'+key+'") without VP');vp=this.elements[idxVP]}const idxV=vp.getIndex("V");if(void 0!==idxV){let v=vp.elements[idxV];const pe=this.getProp("pe"),n=(this.getProp("g"),this.getProp("n"));let t=vp.getProp("t");const neg=!0===types.neg;let auxils=[],affixes=[],isFuture=!1;"f"==t&&(isFuture=!0,t="p");const prog=void 0!==types.prog&&!1!==types.prog,perf=void 0!==types.perf&&!1!==types.perf,pas=void 0!==types.pas&&!1!==types.pas,interro=types.int,modality=types.mod,compound=rules.compound;void 0!==modality&&!1!==modality?(auxils.push(compound[modality].aux),affixes.push("b")):isFuture&&(auxils.push(compound.future.aux),affixes.push("b")),perf||prog||pas?(perf&&(auxils.push(compound.perfect.aux),affixes.push(compound.perfect.participle)),prog&&(auxils.push(compound.continuous.aux),affixes.push(compound.continuous.participle)),pas&&(auxils.push(compound.passive.aux),affixes.push(compound.passive.participle))):void 0!==interro&&!1!==interro&&0==auxils.length&&"be"!=v.lemma&&"have"!=v.lemma&&"wos"!=interro&&(auxils.push("do"),affixes.push("b")),auxils.push(v.lemma),v=auxils.shift();let words=[];neg?v in negMod?"can"==v?words.push(Q("cannot")):(words.push(V(v).t("b")),words.push(Adv("not"))):"be"==v||"have"==v?(words.push(V(v).pe(pe).n(n).t(t)),words.push(Adv("not"))):(words.push(V("do").pe(pe).n(n).t(t)),words.push(Adv("not")),"do"!=v&&words.push(V(v).t("b"))):words.push(V(v).pe(v in negMod?1:pe).n(n).t(t));for(;auxils.length>0;)v=auxils.shift(),words.push(V(v).t(affixes.shift()));words.forEach((function(w){w.parentConst=vp})),Array.prototype.splice.apply(vp.elements,[idxV,1].concat(words))}else this.warning("no V found in a VP")},Phrase.prototype.getIdxCtx=function(cst1,cst2){if(this.isA(cst1)){var idx=this.getIndex(cst2);if(void 0!==idx)return[idx,this.elements]}else if(this.isOneOf(["S","SP"])){var cst=this.getConst(cst1);if(void 0!==cst)return cst.getIdxCtx(cst1,cst2)}},Phrase.prototype.moveAuxToFront=function(){if(this.isEn()&&this.isOneOf(["S","SP"])){var idxCtx=this.getIdxCtx("VP","V");if(void 0!==idxCtx){var aux=idxCtx[1].splice(0,1)[0];this.elements.splice(0,0,aux)}}},Phrase.prototype.typ=function(types){const allowedTypes={neg:[!1,!0],pas:[!1,!0],prog:[!1,!0],exc:[!1,!0],perf:[!1,!0],mod:[!1,"poss","perm","nece","obli","will"],int:[!1,"yon","wos","wod","wad","woi","whe","why","whn","how","muc"]};if(this.isOneOf(["S","SP","VP"])){const entries=Object.entries(types);for(let i=0;i=0){var c=this.elements[idxC],and=this.isFr()?"et":"and",gn=this.findGenderNumber(c.lemma==and);this.prop.g=gn.g,this.prop.n=gn.n}if(0==last)Array.prototype.push.apply(res,elems[0].real());else{for(let j=0;j=0&&Array.prototype.push.apply(res,this.elements[idxC].real()),Array.prototype.push.apply(res,elems[last].real())}},Phrase.prototype.real=function(){let res=[];if(this.isA("CP"))this.cpReal(res);else{const es=this.elements;for(let i=0;ie.toSource()).join()+")";return res+=Constituent.prototype.toSource.call(this)},extend(Constituent,Terminal),Terminal.prototype.me=function(){return this.constType+"("+quote(this.lemma)+")"},Terminal.prototype.morphoError=function(lemma,type,fn,vals){return this.warning("morphology error:"+fn+"("+vals+")"),"[["+lemma+"]]"},Terminal.prototype.typ=function(types){return this.warning(".typ("+JSON.stringify(types)+") applied to a "+this.constType+" should be S, SP or VP"),this},Terminal.prototype.pro=function(args){return this.warning(".typ("+JSON.stringify(args)+") applied to a "+this.constType+" should be a NP"),this},Terminal.prototype.add=function(){return this.warning(".add should be applied to Phrase, not a "+this.constType),this},Terminal.prototype.setLemma=function(lemma,terminalType){switch(null==terminalType&&(terminalType=this.constType),this.lemma=lemma,terminalType){case"DT":this.date=null==lemma?new Date:new Date(lemma),this.dateOpts={year:!0,month:!0,date:!0,day:!0,hour:!0,minute:!0,second:!0,nat:!0,det:!0,rtime:!1};break;case"NO":this.value=+lemma,this.nbDecimals=nbDecimal(lemma),this.noOptions={mprecision:2,raw:!1,nat:!1,ord:!1};break;case"Q":break;case"N":case"A":case"Pro":case"D":case"V":case"Adv":case"C":case"P":let lexInfo=lexicon[lemma];if(null==lexInfo)this.tab=null;else if(void 0===(lexInfo=lexInfo[terminalType]))this.tab=null;else{const keys=Object.keys(lexInfo);for(let i=0;ib[0]-a[0]);const best=matches[0];return 0==best[0]?null:best[1]};const gn=["g","n"],gnpe=gn.concat(["pe"]),gnpeown=gnpe.concat(["own"]),fields={fr:{N:gn,D:gnpe,Pro:gnpe},en:{N:["n"],D:gnpeown,Pro:gnpeown}};function N(lemma){return new Terminal("N",lemma)}function A(lemma){return new Terminal("A",lemma)}function Pro(lemma){return new Terminal("Pro",lemma)}function D(lemma){return new Terminal("D",lemma)}function V(lemma){return new Terminal("V",lemma)}function Adv(lemma){return new Terminal("Adv",lemma)}function C(lemma){return new Terminal("C",lemma)}function P(lemma){return new Terminal("P",lemma)}function DT(lemma){return new Terminal("DT",lemma)}function NO(lemma){return new Terminal("NO",lemma)}function Q(lemma){return new Terminal("Q",lemma)}function numberWithoutLeadingZero(n){return""+n}function numberWithLeadingZero(n){return(n<10?"0":"")+n}function numberToMonth(n){return rules.date.text.month[""+n]}function numberToDay(n){return rules.date.text.weekday[n]}function numberToMeridiem(n){return rules.date.text.meridiem[n<12?0:1]}function numberTo12hour(n){return n%12}Terminal.prototype.decline=function(setPerson){const g=this.getProp("g"),n=this.getProp("n"),pe=setPerson?this.getProp("pe"):3;if(null==this.tab)return this.isA("Adv")?this.lemma:this.morphoError(this.lemma,this.constType,"decline:tab",[g,n,pe]);const declension=rules.declension[this.tab].declension;let res=null;if(this.isOneOf(["A","Adv"]))if(this.isFr()){const ending=this.bestMatch(declension,gn);if(null==ending)return this.morphoError(this.lemma,this.constType,"decline",[g,n]);res=this.stem+ending;const f=this.getProp("f");if(void 0!==f&&!1!==f&&this.isFr()){const specialFRcomp={bon:"meilleur",mauvais:"pire"};if("co"==f){const comp=specialFRcomp[this.lemma];return void 0!==comp?A(comp).g(g).n(n).toString():"plus "+res}if("su"==f){const comp=specialFRcomp[this.lemma];return D("le").g(g).n(n)+" "+(void 0!==comp?A(comp).g(g).n(n):"plus "+res)}}}else{res=this.lemma;const f=this.getProp("f");if(void 0!==f&&!1!==f)if("a1"==this.tab)res=("co"==f?"more ":"the most ")+res;else{const ending=this.bestMatch(declension,["f"]);if(null==ending)return this.morphoError(this.lemma,this.constType,"decline:adjective",[f]);res=this.stem+ending}}else if(1==declension.length)res=this.stem+declension[0].val;else{const ending=this.bestMatch(declension,fields[this.lang][this.constType]);if(null==ending)return this.morphoError(this.lemma,this.constType,"decline",[g,n,pe]);res=this.stem+ending}return res},Terminal.prototype.conjugate_fr=function(){let pe=this.getProp("pe"),g=this.getProp("g"),n=this.getProp("n");const t=this.getProp("t");let neg;if(null==this.tab)return this.morphoError(this.lemma,this.constType,"conjugate_fr:tab",[pe,n,t]);switch(t){case"pc":case"pq":case"cp":case"fa":case"spa":case"spq":const tempsAux={pc:"p",pq:"i",cp:"c",fa:"f",spa:"s",spq:"si"}[t],aux=this.prop.aux,v=V("avoir").pe(pe).n(n).t(tempsAux);if(void 0!==(neg=this.prop.neg)&&(v.prop.neg=neg,delete this.prop.neg),"êt"==aux)return v.setLemma("être"),VP(v,V(this.lemma).t("pp").g(g).n(n))+"";g="m",n="s";var cod=this.prop.cod;return void 0!==cod&&(g=cod.getProp("g"),n=cod.getProp("n")),VP(v,V(this.lemma).t("pp").g(g).n(n))+"";default:var conjugation=rules.conjugation[this.tab].t[t];if(void 0!==conjugation){let res;switch(t){case"p":case"i":case"f":case"ps":case"c":case"s":case"si":case"ip":if("ip"==t&&("s"==n&&2!=pe||"p"==n&&3==pe))return this.morphoError(this.lemma,this.constType,"conjugate_fr",[pe,n,t]);"p"==n&&(pe+=3);const term=conjugation[pe-1];return null==term?this.morphoError(this.lemma,this.constType,"conjugate_fr",[pe,n,t]):(res=this.stem+term,void 0!==(neg=this.prop.neg)&&(res+=" "+neg),res);case"b":case"pr":case"pp":return res=this.stem+conjugation,void 0!==(neg=this.prop.neg)&&("b"==t?res=neg+" "+res:res+=" "+neg),"pp"==t&&(res+={ms:"",mp:"s",fs:"e",fp:"es"}[this.getProp("g")+this.getProp("n")]),res;default:return this.morphoError(this.lemma,this.constType,"conjugate_fr",[pe,n,t])}}return this.morphoError(this.lemma,this.constType,"conjugate_fr:t",[pe,n,t])}},Terminal.prototype.conjugate_en=function(){let pe=this.getProp("pe");this.getProp("g");const n=this.getProp("n"),t=this.getProp("t");if(null==this.tab)return this.morphoError(this.lemma,this.constType,"conjugate_en:tab",[pe,n,t]);const conjugation=rules.conjugation[this.tab].t[t];switch(t){case"p":case"ps":if("string"==typeof conjugation)return this.stem+conjugation;"p"==n&&(pe+=3);const term=conjugation[pe-1];return null==term?this.morphoError(this.lemma,this.consType,"conjugate_en:pe",[pe,n,t]):this.stem+term;case"f":return"will "+this.lemma;case"ip":return this.lemma;case"b":case"pp":case"pr":return this.stem+conjugation;default:return this.morphoError(this.lemma,"V","conjugate_en: unrecognized tense",[pe,n,t])}},Terminal.prototype.conjugate=function(){return this.isFr()?this.conjugate_fr():this.conjugate_en()},Terminal.prototype.numberFormatter=function(rawNumber,maxPrecision){let precision=void 0===maxPrecision?2:maxPrecision;const numberTable=rules.number;return formatNumber(rawNumber,precision=nbDecimal(rawNumber)>precision?precision:nbDecimal(rawNumber),numberTable.symbol.decimal,numberTable.symbol.group)},Terminal.prototype.numberToWord=function(number,lang,gender){if(parseInt(number)!==number)return console.log("cannot show a decimal number in words"),number+"";if("fr"==lang&&"f"==gender){if(1==number)return"une";if(-1==number)return"moins une"}return enToutesLettres(number,lang)},Terminal.prototype.numberToOrdinal=function(number,lang,gender){return parseInt(number)!==number?(console.log("cannot show a decimal number as ordinal"),number+""):(number<=0&&console.log("cannot show 0 or a negative number as an ordinal"),ordinal(number,lang,gender))},Terminal.prototype.dateFormat=function(dateObj,dOpts){const dateRule=rules.date,naturalDate=dateRule.format.natural,nonNaturalDate=dateRule.format.non_natural,relativeDate=dateRule.format.relative_time;let res;if(1==dOpts.rtime){const today=new Date,diffDays=Math.ceil((dateObj.getTime()-today.getTime())/864e5);return today.setDate(today+diffDays),void 0!==relativeDate[""+diffDays]?this.interpretDateFmt(dateObj,relativeDate,""+diffDays,!1):relativeDate[diffDays<0?"-":"+"].replace("[x]",Math.abs(diffDays))}if(dfs=["year","month","date","day"].filter((function(field){return 1==dOpts[field]})).join("-"),tfs=["hour","minute","second"].filter((function(field){return 1==dOpts[field]})).join(":"),1==dOpts.nat){res=this.interpretDateFmt(dateObj,naturalDate,dfs,0==dOpts.det);const hms=this.interpretDateFmt(dateObj,naturalDate,tfs);return""==res?hms:""!=hms?res+" "+hms:res}if(0==dOpts.nat){res=this.interpretDateFmt(dateObj,nonNaturalDate,dfs,0==dOpts.det);const hms=this.interpretDateFmt(dateObj,nonNaturalDate,tfs);return""==res?hms:""!=hms?res+" "+hms:res}return this.warning("not yet implemented:"+JSON.stringify(dOpts)),"[["+dateObj+"]]"},Terminal.prototype.interpretDateFmt=function(dateObj,table,spec,removeDet){const dateRE=/(.*?)\[([^\]]+)\]|(.*)/y;if(""==spec)return"";let res="",fmt=table[spec];if(void 0!==fmt){if(removeDet){var idx=fmt.indexOf("[");idx>=0&&(fmt=fmt.substring(idx))}dateRE.lastIndex=0;let match=dateRE.exec(fmt);for(;match[0].length>0;){if(void 0!==match[1]){res+=match[1];const pf=dateFormats[match[2]];if(void 0!==pf){const val=pf.param.call(dateObj);res+=pf.func(val)}}else{if(void 0===match[3])return this.warning("bad match: should never happen:"+fmt);res+=match[3]}match=dateRE.exec(fmt)}return res}return this.warning("unimplemented format specification:"+spec),"[["+dateObj+"]]"},Terminal.prototype.real=function(){switch(this.constType){case"N":case"A":case"D":case"Adv":this.realization=this.decline(!1);break;case"C":case"P":case"Q":this.realization=this.lemma;break;case"Pro":this.realization=this.decline(!0);break;case"V":this.realization=this.conjugate();break;case"DT":this.realization=this.dateFormat(this.date,this.dateOpts);break;case"NO":const opts=this.noOptions;1==opts.nat?this.realization=this.numberToWord(this.value,this.lang,this.getProp("g")):1==opts.ord?this.realization=this.numberToOrdinal(this.value,this.lang,this.getProp("g")):0==opts.raw?this.realization=this.numberFormatter(this.value,opts.mprecision):this.realization=this.value+"";break;default:this.warning("Terminal.real:"+this.constType+": not implemented")}return this.doFormat([this])},Terminal.prototype.toSource=function(){let res=this.constType+"("+quote(this.lemma)+")";return res+=Constituent.prototype.toSource.call(this)},Date.prototype.getRealMonth=function(){return this.getMonth()+1};var dateFormats={Y:{param:Date.prototype.getFullYear,func:numberWithoutLeadingZero},F:{param:Date.prototype.getRealMonth,func:numberToMonth},M0:{param:Date.prototype.getRealMonth,func:numberWithLeadingZero},M:{param:Date.prototype.getRealMonth,func:numberWithoutLeadingZero},d0:{param:Date.prototype.getDate,func:numberWithLeadingZero},d:{param:Date.prototype.getDate,func:numberWithoutLeadingZero},l:{param:Date.prototype.getDay,func:numberToDay},A:{param:Date.prototype.getHours,func:numberToMeridiem},h:{param:Date.prototype.getHours,func:numberTo12hour},H0:{param:Date.prototype.getHours,func:numberWithLeadingZero},H:{param:Date.prototype.getHours,func:numberWithoutLeadingZero},m0:{param:Date.prototype.getMinutes,func:numberWithLeadingZero},m:{param:Date.prototype.getMinutes,func:numberWithoutLeadingZero},s0:{param:Date.prototype.getSeconds,func:numberWithLeadingZero},s:{param:Date.prototype.getSeconds,func:numberWithoutLeadingZero},x:{param:function(x){return x},func:function(n){return""+n}}};function nbDecimal(n){var match=(""+n).match(/(?:\.(\d+))?(?:[eE]([+-]?\d+))?$/);return match?Math.max(0,(match[1]?match[1].length:0)-(match[2]?+match[2]:0)):0}function formatNumber(number,decimals,dec_point,thousands_sep){number=(number+"").replace(/[^0-9+\-Ee.]/g,"");var n=isFinite(+number)?+number:0,prec=isFinite(+decimals)?Math.abs(decimals):0,sep=void 0===thousands_sep?"":thousands_sep,dec=void 0===dec_point?".":dec_point,s="";return(s=(prec?function(n,prec){var k=Math.pow(10,prec);return""+(Math.round(n*k)/k).toFixed(prec)}(n,prec):""+Math.round(n)).split("."))[0].length>3&&(s[0]=s[0].replace(/\B(?=(?:\d{3})+(?!\d))/g,sep)),(s[1]||"").length21)throw"nombreChaineEnLettres ne traite que les nombres d'au plus 21 chiffres:"+s;return(neg?en?"minus ":"moins ":"")+function grouper(ns){const l=ns.length;trace&&console.log("grouper:"+l+":"+ns);const head=ns[0];if(1==l)return function(ns){trace&&console.log("centaines:"+ns);if(1==ns.length)return unites(ns);if(2==ns.length)return dizaines(ns);const c=ns[0],du=ns.slice(1);if("0"==c)return dizaines(du);const cent=en?"hundred":"cent";if("00"==du)return"1"==c?(en?"one ":"")+cent:unites(c)+" "+cent+(en?"":"s");return"1"==c?(en?"one ":"")+cent+" "+dizaines(du):unites(c)+" "+cent+(en?" and ":" ")+dizaines(du)}(head);const tail=ns.slice(1);if("000"==head)return grouper(tail);const uM=en?unitsM:unitesM;return("001"==head?uM[l-2].sing:grouper([head])+" "+uM[l-2].plur)+" "+(function tousZero(ns){return 0==ns.length||"000"==ns[0]&&tousZero(ns.slice(1))}(tail)?"":grouper(tail))}(function splitS(s){return s.length>3?splitS(s.slice(0,s.length-3)).concat([s.slice(s.length-3)]):(1==s.length?s="00"+s:2==s.length&&(s="0"+s),[s])}(s)).trim()}function rectifiee(s){return s.replace(/ /g,"-")}ordEnExceptions={one:"first",two:"second",three:"third",five:"fifth",eight:"eighth",nine:"ninth",twelve:"twelfth"},ordFrExceptions={un:"premier",une:"première",cinq:"cinquième",neuf:"neuvième"};var ordinal=function(s,lang,gender){const en="en"==lang;if("zéro"==(s=enToutesLettres(s,lang))||"zero"==s)return s;const m=/(.*?)(\w+)$/.exec(s),lastWord=m[2];return en?lastWord in ordEnExceptions?m[1]+ordEnExceptions[lastWord]:"y"==s.charAt(s.length-1)?s.substring(0,s.length-1)+"ieth":s+"th":"un"==s?"f"==gender?"première":"premier":s.endsWith("et un")?s+"ième":lastWord in ordFrExceptions?m[1]+ordFrExceptions[lastWord]:"e"==s.charAt(s.length-1)||s.endsWith("quatre-vingts")?s.substring(0,s.length-1)+"ième":s+"ième"};function extend(base,sub){const origProto=sub.prototype;sub.prototype=Object.create(base.prototype);for(let key in origProto)sub.prototype[key]=origProto[key];sub.prototype.constructor=sub,Object.defineProperty(sub.prototype,"constructor",{enumerable:!1,value:sub})}function quote(s){return"string"!=typeof s?s:s.indexOf("'")<0?"'"+s+"'":s.indexOf('"')<0?'"'+s+'"':'"'+s.replace('"','\\"')+'"'}function contains(arr,elem){return arr.indexOf(elem)>=0}function loadEn(trace,lenient){currentLanguage="en",lexicon=lexiconEn,rules=ruleEn,defaultProps={g:"n",n:"s",pe:3,t:"p"},!0===trace&&console.log("English lexicon and rules loaded"),1==lenient&&console.log("Lenient mode not implement")}function loadFr(trace,lenient){currentLanguage="fr",lexicon=lexiconFr,rules=ruleFr,defaultProps={g:"m",n:"s",pe:3,t:"p",aux:"av"},!0===trace&&console.log("French lexicon and rules loaded"),1==lenient&&console.log("Lenient mode not implement")}var addToLexicon=function(lemma,newInfos){null==newInfos&&(newInfos=Object.values(lemma)[0],lemma=Object.keys(lemma)[0]);const infos=lexicon[lemma];if(void 0!==infos&&void 0!==newInfos){for(ni in newInfos)infos[ni]=newInfos[ni];return lexicon[lemma]=infos,infos}return lexicon[lemma]=newInfos,newInfos},updateLexicon=function(newLexicon){Object.assign(lexicon,newLexicon)},getLemma=function(lemma){return lexicon[lemma]},getLanguage=function(){return currentLanguage},oneOf=function(elems){return Array.isArray(elems)||(elems=Array.from(arguments)),e=elems[Math.floor(Math.random()*elems.length)],"function"==typeof e?e():e};function setExceptionOnWarning(val){exceptionOnWarning=val}var jsRealB_version="3.0",jsRealB_dateCreated=new Date;jsRealB_dateCreated="2019-12-02 21:49";var lexiconEn={" ":{Pc:{tab:["pc1"]}},"!":{Pc:{tab:["pc4"]}},'"':{Pc:{compl:'"',tab:["pc5","pc6"]}},"'":{Pc:{compl:"'",tab:["pc5","pc6"]}},"(":{Pc:{compl:")",tab:["pc5"]}},")":{Pc:{compl:"(",tab:["pc6"]}},"*":{Pc:{compl:"*",tab:["pc5","pc6"]}},",":{Pc:{tab:["pc4"]}},"-":{Pc:{tab:["pc1"]}},".":{Pc:{tab:["pc4"]}},"...":{Pc:{tab:["pc4"]}},":":{Pc:{tab:["pc4"]}},";":{Pc:{tab:["pc4"]}},"?":{Pc:{tab:["pc4"]}},I:{Pro:{tab:["pn1"]}},"[":{Pc:{compl:"]",tab:["pc5"]}},"]":{Pc:{compl:"[",tab:["pc6"]}},a:{D:{tab:["d1"]}},abandon:{V:{tab:"v1"}},abbey:{N:{tab:["n1"]}},ability:{N:{tab:["n3"]}},able:{A:{tab:["a2"]}},abnormal:{A:{tab:["a1"]}},abolish:{V:{tab:"v2"}},abolition:{N:{tab:["n5"]}},abortion:{N:{tab:["n1"]}},about:{Adv:{tab:["b1"]},P:{tab:["pp"]}},above:{Adv:{tab:["b1"]},P:{tab:["pp"]}},abroad:{Adv:{tab:["b1"]}},abruptly:{Adv:{tab:["b1"]}},absence:{N:{tab:["n1"]}},absent:{A:{tab:["a1"]}},absolute:{A:{tab:["a1"]}},absolutely:{Adv:{tab:["b1"]}},absorb:{V:{tab:"v1"}},absorption:{N:{tab:["n5"]}},abstract:{A:{tab:["a1"]}},absurd:{A:{tab:["a1"]}},abuse:{N:{tab:["n1"]},V:{tab:"v3"}},academic:{A:{tab:["a1"]},N:{tab:["n1"]}},academy:{N:{tab:["n3"]}},accelerate:{V:{tab:"v3"}},accent:{N:{tab:["n1"]}},accept:{V:{tab:"v1"}},acceptable:{A:{tab:["a1"]}},acceptance:{N:{tab:["n5"]}},access:{N:{tab:["n5"]},V:{tab:"v2"}},accessible:{A:{tab:["a1"]}},accident:{N:{tab:["n1"]}},accommodate:{V:{tab:"v3"}},accommodation:{N:{tab:["n1"]}},accompany:{V:{tab:"v4"}},accomplish:{V:{tab:"v2"}},accord:{N:{tab:["n1"]},V:{tab:"v1"}},accordance:{N:{tab:["n1"]}},accordingly:{Adv:{tab:["b1"]}},account:{N:{tab:["n1"]},V:{tab:"v1"}},accountant:{N:{tab:["n1"]}},accumulate:{V:{tab:"v3"}},accumulation:{N:{tab:["n1"]}},accuracy:{N:{tab:["n3"]}},accurate:{A:{tab:["a1"]}},accurately:{Adv:{tab:["b1"]}},accusation:{N:{tab:["n1"]}},accuse:{V:{tab:"v3"}},achieve:{V:{tab:"v3"}},achievement:{N:{tab:["n1"]}},acid:{N:{tab:["n1"]}},acknowledge:{V:{tab:"v3"}},acquaintance:{N:{tab:["n1"]}},acquire:{V:{tab:"v3"}},acquisition:{N:{tab:["n1"]}},acre:{N:{tab:["n1"]}},across:{Adv:{tab:["b1"]},P:{tab:["pp"]}},act:{N:{tab:["n1"]},V:{tab:"v1"}},action:{N:{tab:["n1"]}},activate:{V:{tab:"v3"}},active:{A:{tab:["a1"]}},actively:{Adv:{tab:["b1"]}},activist:{N:{tab:["n1"]}},activity:{N:{tab:["n3"]}},actor:{N:{g:"m",tab:["n85"]}},actress:{N:{g:"f",tab:["n88"]}},actual:{A:{tab:["a1"]}},actually:{Adv:{tab:["b1"]}},acute:{A:{tab:["a1"]}},adapt:{V:{tab:"v1"}},adaptation:{N:{tab:["n1"]}},add:{V:{tab:"v1"}},addition:{N:{tab:["n1"]}},additional:{A:{tab:["a1"]}},address:{N:{tab:["n2"]},V:{tab:"v2"}},adequate:{A:{tab:["a1"]}},adequately:{Adv:{tab:["b1"]}},adjacent:{A:{tab:["a1"]}},adjective:{N:{tab:["n1"]}},adjust:{V:{tab:"v1"}},adjustment:{N:{tab:["n1"]}},administer:{V:{tab:"v1"}},administration:{N:{tab:["n1"]}},administrative:{A:{tab:["a1"]}},administrator:{N:{tab:["n1"]}},admiration:{N:{tab:["n5"]}},admire:{V:{tab:"v3"}},admission:{N:{tab:["n1"]}},admit:{V:{tab:"v14"}},adopt:{V:{tab:"v1"}},adoption:{N:{tab:["n1"]}},adult:{A:{tab:["a1"]},N:{tab:["n1"]}},advance:{N:{tab:["n1"]},V:{tab:"v3"}},advanced:{A:{tab:["a1"]}},advantage:{N:{tab:["n1"]}},adventure:{N:{tab:["n1"]}},adverse:{A:{tab:["a1"]}},advertise:{V:{tab:"v3"}},advertisement:{N:{tab:["n1"]}},advice:{N:{tab:["n1"]}},advise:{V:{tab:"v3"}},adviser:{N:{tab:["n1"]}},advisory:{A:{tab:["a1"]}},advocate:{N:{tab:["n1"]},V:{tab:"v3"}},aesthetic:{A:{tab:["a1"]}},affair:{N:{tab:["n1"]}},affect:{V:{tab:"v1"}},affection:{N:{tab:["n1"]}},affinity:{N:{tab:["n3"]}},afford:{V:{tab:"v1"}},afraid:{A:{tab:["a1"]}},after:{P:{tab:["pp"]}},afternoon:{N:{tab:["n1"]}},afterwards:{Adv:{tab:["b1"]}},again:{Adv:{tab:["b1"]}},against:{P:{tab:["pp"]}},age:{N:{tab:["n1"]},V:{tab:"v72"}},agency:{N:{tab:["n3"]}},agenda:{N:{tab:["n1"]}},agent:{N:{tab:["n1"]}},aggression:{N:{tab:["n1"]}},aggressive:{A:{tab:["a1"]}},ago:{Adv:{tab:["b1"]}},agony:{N:{tab:["n3"]}},agree:{V:{tab:"v16"}},agreement:{N:{tab:["n1"]}},agricultural:{A:{tab:["a1"]}},agriculture:{N:{tab:["n5"]}},ahead:{Adv:{tab:["b1"]}},aid:{N:{tab:["n1"]},V:{tab:"v1"}},aim:{N:{tab:["n1"]},V:{tab:"v1"}},air:{N:{tab:["n1"]}},aircraft:{N:{tab:["n4"]}},airline:{N:{tab:["n1"]}},airport:{N:{tab:["n1"]}},alarm:{N:{tab:["n1"]},V:{tab:"v1"}},album:{N:{tab:["n1"]}},alcohol:{N:{tab:["n1"]}},alert:{A:{tab:["a1"]},V:{tab:"v1"}},alien:{A:{tab:["a1"]}},alike:{Adv:{tab:["b1"]}},alive:{A:{tab:["a1"]}},all:{Adv:{tab:["b1"]},Pro:{tab:["b1"]}},allegation:{N:{tab:["n1"]}},allege:{V:{tab:"v3"}},allegedly:{Adv:{tab:["b1"]}},alliance:{N:{tab:["n1"]}},allocate:{V:{tab:"v3"}},allocation:{N:{tab:["n1"]}},allow:{V:{tab:"v1"}},allowance:{N:{tab:["n1"]}},allowed:{A:{tab:["a1"]}},ally:{N:{tab:["n3"]}},almost:{Adv:{tab:["b1"]}},alone:{A:{tab:["a1"]},Adv:{tab:["b1"]}},along:{Adv:{tab:["b1"]},P:{tab:["pp"]}},alongside:{P:{tab:["pp"]}},aloud:{Adv:{tab:["b1"]}},already:{Adv:{tab:["b1"]}},alright:{A:{tab:["a1"]},Adv:{tab:["b1"]}},also:{Adv:{tab:["b1"]}},altar:{N:{tab:["n1"]}},alter:{V:{tab:"v1"}},alteration:{N:{tab:["n1"]}},alternative:{A:{tab:["a1"]},N:{tab:["n1"]}},alternatively:{Adv:{tab:["b1"]}},altogether:{Adv:{tab:["b1"]}},aluminium:{N:{tab:["n5"]}},always:{Adv:{tab:["b1"]}},amateur:{N:{tab:["n1"]}},amazing:{A:{tab:["a1"]}},ambassador:{N:{tab:["n1"]}},ambiguity:{N:{tab:["n3"]}},ambiguous:{A:{tab:["a1"]}},ambition:{N:{tab:["n1"]}},ambitious:{A:{tab:["a1"]}},ambulance:{N:{tab:["n1"]}},amend:{V:{tab:"v1"}},amendment:{N:{tab:["n1"]}},amid:{P:{tab:["pp"]}},among:{P:{tab:["pp"]}},amongst:{P:{tab:["pp"]}},amount:{N:{tab:["n1"]},V:{tab:"v1"}},amp:{N:{tab:["n1"]}},ample:{A:{tab:["a2"]}},amuse:{V:{tab:"v3"}},amusement:{N:{tab:["n1"]}},analogy:{N:{tab:["n3"]}},analyse:{V:{tab:"v3"}},analysis:{N:{tab:["n8"]}},analyst:{N:{tab:["n1"]}},ancestor:{N:{tab:["n1"]}},ancient:{A:{tab:["a1"]}},angel:{N:{tab:["n1"]}},anger:{N:{tab:["n5"]},V:{tab:"v1"}},angle:{N:{tab:["n1"]}},angrily:{Adv:{tab:["b1"]}},angry:{A:{tab:["a4"]}},animal:{N:{tab:["n1"]}},ankle:{N:{tab:["n1"]}},anniversary:{N:{tab:["n3"]}},announce:{V:{tab:"v3"}},announcement:{N:{tab:["n1"]}},annoy:{V:{tab:"v1"}},annual:{A:{tab:["a1"]}},annually:{Adv:{tab:["b1"]}},anonymous:{A:{tab:["a1"]}},answer:{N:{tab:["n1"]},V:{tab:"v1"}},ant:{N:{tab:["n1"]}},antibody:{N:{tab:["n3"]}},anticipate:{V:{tab:"v3"}},anticipation:{N:{tab:["n1"]}},anxiety:{N:{tab:["n3"]}},anxious:{A:{tab:["a1"]}},anybody:{Pro:{tab:["pn5"]}},anyone:{Pro:{tab:["pn5"]}},anything:{Pro:{tab:["pn5"]}},anyway:{Adv:{tab:["b1"]}},anywhere:{Adv:{tab:["b1"]}},apart:{Adv:{tab:["b1"]}},apartment:{N:{tab:["n1"]}},apology:{N:{tab:["n3"]}},appalling:{A:{tab:["a1"]}},apparatus:{N:{tab:["n2"]}},apparent:{A:{tab:["a1"]}},apparently:{Adv:{tab:["b1"]}},appeal:{N:{tab:["n1"]},V:{tab:"v1"}},appear:{V:{tab:"v1"}},appearance:{N:{tab:["n1"]}},appendix:{N:{tab:["n2"]}},appetite:{N:{tab:["n1"]}},apple:{N:{tab:["n1"]}},applicable:{A:{tab:["a1"]}},applicant:{N:{tab:["n1"]}},application:{N:{tab:["n1"]}},applied:{A:{tab:["a1"]}},apply:{V:{tab:"v4"}},appoint:{V:{tab:"v1"}},appointment:{N:{tab:["n1"]}},appraisal:{N:{tab:["n1"]}},appreciate:{V:{tab:"v3"}},appreciation:{N:{tab:["n1"]}},approach:{N:{tab:["n2"]},V:{tab:"v2"}},appropriate:{A:{tab:["a1"]}},appropriately:{Adv:{tab:["b1"]}},approval:{N:{tab:["n5"]}},approve:{V:{tab:"v3"}},approximately:{Adv:{tab:["b1"]}},aquarium:{N:{tab:["n1"]}},arbitrary:{A:{tab:["a1"]}},arc:{N:{tab:["n1"]}},arch:{N:{tab:["n2"]}},archaeological:{A:{tab:["a1"]}},archbishop:{N:{tab:["n1"]}},architect:{N:{tab:["n1"]}},architectural:{A:{tab:["a1"]}},architecture:{N:{tab:["n5"]}},archive:{N:{tab:["n1"]}},area:{N:{tab:["n1"]}},arena:{N:{tab:["n1"]}},argue:{V:{tab:"v3"}},argument:{N:{tab:["n1"]}},arise:{V:{tab:"v63"}},arm:{N:{tab:["n1"]},V:{tab:"v1"}},armchair:{N:{tab:["n1"]}},army:{N:{tab:["n3"]}},around:{Adv:{tab:["b1"]},P:{tab:["pp"]}},arouse:{V:{tab:"v3"}},arrange:{V:{tab:"v3"}},arrangement:{N:{tab:["n1"]}},array:{N:{tab:["n1"]}},arrest:{N:{tab:["n1"]},V:{tab:"v1"}},arrival:{N:{tab:["n1"]}},arrive:{V:{tab:"v3"}},arrow:{N:{tab:["n1"]}},art:{N:{tab:["n1"]}},article:{N:{tab:["n1"]}},articulate:{V:{tab:"v3"}},artificial:{A:{tab:["a1"]}},artist:{N:{tab:["n1"]}},artistic:{A:{tab:["a1"]}},as:{Adv:{tab:["b1"]},P:{tab:["pp"]}},ascertain:{V:{tab:"v1"}},ash:{N:{tab:["n2"]}},ashamed:{A:{tab:["a1"]}},aside:{Adv:{tab:["b1"]}},ask:{V:{tab:"v1"}},asleep:{A:{tab:["a1"]}},aspect:{N:{tab:["n1"]}},aspiration:{N:{tab:["n1"]}},assault:{N:{tab:["n1"]},V:{tab:"v1"}},assemble:{V:{tab:"v3"}},assembly:{N:{tab:["n3"]}},assert:{V:{tab:"v1"}},assertion:{N:{tab:["n1"]}},assess:{V:{tab:"v2"}},assessment:{N:{tab:["n1"]}},asset:{N:{tab:["n1"]}},assign:{V:{tab:"v1"}},assignment:{N:{tab:["n1"]}},assist:{V:{tab:"v1"}},assistance:{N:{tab:["n5"]}},assistant:{N:{tab:["n1"]}},associate:{N:{tab:["n1"]},V:{tab:"v3"}},association:{N:{tab:["n1"]}},assume:{V:{tab:"v3"}},assumption:{N:{tab:["n1"]}},assurance:{N:{tab:["n1"]}},assure:{V:{tab:"v3"}},astonishing:{A:{tab:["a1"]}},asylum:{N:{tab:["n1"]}},at:{P:{tab:["pp"]}},athlete:{N:{tab:["n1"]}},atmosphere:{N:{tab:["n1"]}},atom:{N:{tab:["n1"]}},atomic:{A:{tab:["a1"]}},attach:{V:{tab:"v2"}},attachment:{N:{tab:["n1"]}},attack:{N:{tab:["n1"]},V:{tab:"v1"}},attacker:{N:{tab:["n1"]}},attain:{V:{tab:"v1"}},attainment:{N:{tab:["n1"]}},attempt:{N:{tab:["n1"]},V:{tab:"v1"}},attend:{V:{tab:"v1"}},attendance:{N:{tab:["n1"]}},attention:{N:{tab:["n1"]}},attitude:{N:{tab:["n1"]}},attract:{V:{tab:"v1"}},attraction:{N:{tab:["n1"]}},attractive:{A:{tab:["a1"]}},attribute:{N:{tab:["n1"]},V:{tab:"v3"}},auction:{N:{tab:["n1"]}},audience:{N:{tab:["n1"]}},audit:{N:{tab:["n1"]}},auditor:{N:{tab:["n1"]}},aunt:{N:{g:"f",tab:["n87"]}},author:{N:{g:"m",tab:["n85"]}},authority:{N:{tab:["n3"]}},automatic:{A:{tab:["a1"]}},automatically:{Adv:{tab:["b1"]}},autonomous:{A:{tab:["a1"]}},autonomy:{N:{tab:["n3"]}},autumn:{N:{tab:["n1"]}},availability:{N:{tab:["n5"]}},available:{A:{tab:["a1"]}},avenue:{N:{tab:["n1"]}},average:{A:{tab:["a1"]},N:{tab:["n1"]}},aviation:{N:{tab:["n5"]}},avocado:{N:{tab:["n1"]}},avoid:{V:{tab:"v1"}},await:{V:{tab:"v1"}},awake:{A:{tab:["a1"]},V:{tab:"v163"}},award:{N:{tab:["n1"]},V:{tab:"v1"}},aware:{A:{tab:["a1"]}},awareness:{N:{tab:["n5"]}},away:{Adv:{tab:["b1"]}},awful:{A:{tab:["a1"]}},awkward:{A:{tab:["a1"]}},axis:{N:{tab:["n8"]}},aye:{N:{tab:["n1"]}},baby:{N:{tab:["n3"]}},back:{Adv:{tab:["b1"]},N:{tab:["n1"]},V:{tab:"v1"}},background:{N:{tab:["n1"]}},backing:{N:{tab:["n1"]}},backwards:{Adv:{tab:["b1"]}},bacon:{N:{tab:["n5"]}},bad:{A:{tab:["a14"]}},badly:{Adv:{tab:["b2"]}},bag:{N:{tab:["n1"]}},bail:{N:{tab:["n1"]}},bake:{V:{tab:"v3"}},balance:{N:{tab:["n1"]},V:{tab:"v3"}},balcony:{N:{tab:["n3"]}},ball:{N:{tab:["n1"]}},ballet:{N:{tab:["n1"]}},balloon:{N:{tab:["n1"]}},ballot:{N:{tab:["n1"]}},ban:{N:{tab:["n1"]},V:{tab:"v11"}},banana:{N:{tab:["n1"]}},band:{N:{tab:["n1"]}},bang:{N:{tab:["n1"]},V:{tab:"v1"}},bank:{N:{tab:["n1"]}},banker:{N:{tab:["n1"]}},banking:{N:{tab:["n5"]}},bankruptcy:{N:{tab:["n3"]}},banner:{N:{tab:["n1"]}},bar:{N:{tab:["n1"]},V:{tab:"v13"}},bare:{A:{tab:["a2"]}},barely:{Adv:{tab:["b1"]}},bargain:{N:{tab:["n1"]},V:{tab:"v1"}},barn:{N:{tab:["n1"]}},barrel:{N:{tab:["n1"]}},barrier:{N:{tab:["n1"]}},base:{N:{tab:["n1"]},V:{tab:"v3"}},basement:{N:{tab:["n1"]}},basic:{A:{tab:["a1"]}},basically:{Adv:{tab:["b1"]}},basin:{N:{tab:["n1"]}},basis:{N:{tab:["n8"]}},basket:{N:{tab:["n1"]}},bass:{N:{tab:["n4"]}},bastard:{N:{tab:["n1"]}},bat:{N:{tab:["n1"]}},batch:{N:{tab:["n2"]}},bath:{N:{tab:["n1"]}},bathroom:{N:{tab:["n1"]}},battery:{N:{tab:["n3"]}},battle:{N:{tab:["n1"]},V:{tab:"v3"}},bay:{N:{tab:["n1"]}},be:{V:{tab:"v151"}},beach:{N:{tab:["n2"]}},beam:{N:{tab:["n1"]}},bean:{N:{tab:["n1"]}},bear:{N:{tab:["n1"]},V:{tab:"v51"}},beard:{N:{tab:["n1"]}},bearing:{N:{tab:["n1"]}},beast:{N:{tab:["n1"]}},beat:{N:{tab:["n1"]},V:{tab:"v78"}},beautiful:{A:{tab:["a1"]}},beautifully:{Adv:{tab:["b1"]}},beauty:{N:{tab:["n3"]}},become:{V:{tab:"v41"}},bed:{N:{tab:["n1"]}},bedroom:{N:{tab:["n1"]}},bee:{N:{tab:["n1"]}},beef:{N:{tab:["n9"]}},beer:{N:{tab:["n1"]}},before:{Adv:{tab:["b1"]},P:{tab:["pp"]}},beg:{V:{tab:"v7"}},begin:{V:{tab:"v106"}},beginning:{N:{tab:["n1"]}},behalf:{N:{tab:["n9"]}},behave:{V:{tab:"v3"}},behaviour:{N:{tab:["n5"]}},behind:{Adv:{tab:["b1"]},P:{tab:["pp"]}},being:{N:{tab:["n1"]}},belief:{N:{tab:["n1"]}},believe:{V:{tab:"v3"}},bell:{N:{tab:["n1"]}},belly:{N:{tab:["n3"]}},belong:{V:{tab:"v1"}},below:{Adv:{tab:["b1"]},P:{tab:["pp"]}},belt:{N:{tab:["n1"]}},bench:{N:{tab:["n2"]}},bend:{N:{tab:["n1"]},V:{tab:"v23"}},beneath:{P:{tab:["pp"]}},beneficial:{A:{tab:["a1"]}},beneficiary:{N:{tab:["n3"]}},benefit:{N:{tab:["n1"]},V:{tab:"v1"}},berry:{N:{tab:["n3"]}},beside:{P:{tab:["pp"]}},besides:{Adv:{tab:["b1"]},P:{tab:["pp"]}},bet:{N:{tab:["n1"]},V:{tab:"v38"}},betray:{V:{tab:"v1"}},between:{P:{tab:["pp"]}},beyond:{Adv:{tab:["b1"]},P:{tab:["pp"]}},bias:{N:{tab:["n2"]}},bicycle:{N:{tab:["n1"]}},bid:{N:{tab:["n1"]},V:{tab:"v117"}},big:{A:{tab:["a7"]}},bike:{N:{tab:["n1"]}},bile:{N:{tab:["n5"]}},bill:{N:{tab:["n1"]}},bin:{N:{tab:["n1"]}},bind:{V:{tab:"v25"}},binding:{A:{tab:["a1"]}},biography:{N:{tab:["n3"]}},biological:{A:{tab:["a1"]}},biology:{N:{tab:["n5"]}},bird:{N:{tab:["n1"]}},birth:{N:{tab:["n1"]}},birthday:{N:{tab:["n1"]}},biscuit:{N:{tab:["n1"]}},bishop:{N:{tab:["n1"]}},bit:{N:{tab:["n1"]}},bitch:{N:{tab:["n2"]}},bite:{N:{tab:["n1"]},V:{tab:"v74"}},bitter:{A:{tab:["a1"]}},bitterly:{Adv:{tab:["b1"]}},bizarre:{A:{tab:["a1"]}},black:{A:{tab:["a3"]},N:{tab:["n1"]}},blade:{N:{tab:["n1"]}},blame:{N:{tab:["n5"]},V:{tab:"v3"}},blank:{A:{tab:["a1"]}},blanket:{N:{tab:["n1"]}},blast:{N:{tab:["n1"]},V:{tab:"v1"}},bleak:{A:{tab:["a3"]}},bleed:{V:{tab:"v22"}},bless:{V:{tab:"v86"}},blessing:{N:{tab:["n1"]}},blind:{A:{tab:["a1"]}},blink:{V:{tab:"v1"}},block:{N:{tab:["n1"]},V:{tab:"v1"}},bloke:{N:{tab:["n1"]}},blonde:{A:{tab:["a1"]}},blood:{N:{tab:["n1"]}},bloody:{A:{tab:["a4"]},Adv:{tab:["b1"]}},blow:{N:{tab:["n1"]},V:{tab:"v27"}},blue:{A:{tab:["a2"]},N:{tab:["n1"]}},board:{N:{tab:["n1"]},V:{tab:"v1"}},boast:{V:{tab:"v1"}},boat:{N:{tab:["n1"]}},bodily:{A:{tab:["a1"]}},body:{N:{tab:["n3"]}},boil:{V:{tab:"v1"}},boiler:{N:{tab:["n1"]}},bold:{A:{tab:["a3"]}},bolt:{N:{tab:["n1"]}},bomb:{N:{tab:["n1"]},V:{tab:"v1"}},bomber:{N:{tab:["n1"]}},bond:{N:{tab:["n1"]}},bone:{N:{tab:["n1"]}},bonus:{N:{tab:["n2"]}},book:{N:{tab:["n1"]},V:{tab:"v1"}},booklet:{N:{tab:["n1"]}},boom:{N:{tab:["n1"]}},boost:{N:{tab:["n1"]},V:{tab:"v1"}},boot:{N:{tab:["n1"]}},border:{N:{tab:["n1"]}},boring:{A:{tab:["a1"]}},borough:{N:{tab:["n1"]}},borrow:{V:{tab:"v1"}},boss:{N:{tab:["n2"]}},bother:{V:{tab:"v1"}},bottle:{N:{tab:["n1"]}},bottom:{N:{tab:["n1"]}},bounce:{V:{tab:"v3"}},boundary:{N:{tab:["n3"]}},bourgeois:{A:{tab:["a1"]}},bow:{N:{tab:["n1"]},V:{tab:"v1"}},bowel:{N:{tab:["n1"]}},bowl:{N:{tab:["n1"]},V:{tab:"v1"}},bowler:{N:{tab:["n1"]}},box:{N:{tab:["n2"]}},boxing:{N:{tab:["n5"]}},boy:{N:{g:"m",tab:["n85"]}},boyfriend:{N:{tab:["n1"]}},bracket:{N:{tab:["n1"]}},brain:{N:{tab:["n1"]}},brake:{N:{tab:["n1"]}},branch:{N:{tab:["n2"]}},brand:{N:{tab:["n1"]}},brandy:{N:{tab:["n3"]}},brass:{N:{tab:["n2"]}},brave:{A:{tab:["a2"]}},breach:{N:{tab:["n2"]}},bread:{N:{tab:["n5"]}},break:{N:{tab:["n1"]},V:{tab:"v138"}},breakdown:{N:{tab:["n1"]}},breakfast:{N:{tab:["n1"]}},breast:{N:{tab:["n1"]}},breath:{N:{tab:["n1"]}},breathe:{V:{tab:"v3"}},breed:{N:{tab:["n1"]},V:{tab:"v22"}},breeding:{N:{tab:["n5"]}},breeze:{N:{tab:["n1"]}},brewery:{N:{tab:["n3"]}},brick:{N:{tab:["n1"]}},bride:{N:{g:"f",tab:["n87"]}},bridge:{N:{tab:["n1"]}},brief:{A:{tab:["a3"]}},briefly:{Adv:{tab:["b1"]}},brigade:{N:{tab:["n1"]}},bright:{A:{tab:["a3"]}},brilliant:{A:{tab:["a1"]}},bring:{V:{tab:"v103"}},broad:{A:{tab:["a3"]}},broadcast:{N:{tab:["n1"]},V:{tab:"v58"}},broadly:{Adv:{tab:["b1"]}},brochure:{N:{tab:["n1"]}},broker:{N:{tab:["n1"]}},bronze:{N:{tab:["n1"]}},brother:{N:{tab:["n85"]}},brow:{N:{tab:["n1"]}},brown:{A:{tab:["a3"]}},brush:{N:{tab:["n2"]},V:{tab:"v2"}},bubble:{N:{tab:["n1"]}},bucket:{N:{tab:["n1"]}},budget:{N:{tab:["n1"]}},build:{V:{tab:"v23"}},builder:{N:{tab:["n1"]}},building:{N:{tab:["n1"]}},bulb:{N:{tab:["n1"]}},bulk:{N:{tab:["n5"]}},bull:{N:{tab:["n1"]}},bullet:{N:{tab:["n1"]}},bulletin:{N:{tab:["n1"]}},bump:{V:{tab:"v1"}},bunch:{N:{tab:["n2"]}},bundle:{N:{tab:["n1"]}},burden:{N:{tab:["n1"]}},bureau:{N:{tab:["n14"]}},bureaucracy:{N:{tab:["n3"]}},bureaucratic:{A:{tab:["a1"]}},burial:{N:{tab:["n1"]}},burn:{N:{tab:["n1"]},V:{tab:"v26"}},burning:{A:{tab:["a1"]}},burst:{N:{tab:["n1"]},V:{tab:"v18"}},bury:{V:{tab:"v4"}},bus:{N:{tab:["n2"]}},bush:{N:{tab:["n2"]}},business:{N:{tab:["n2"]}},businessman:{N:{tab:["n7"]}},busy:{A:{tab:["a4"]}},butter:{N:{tab:["n5"]}},butterfly:{N:{tab:["n3"]}},button:{N:{tab:["n1"]}},buy:{V:{tab:"v59"}},buyer:{N:{tab:["n1"]}},by:{P:{tab:["pp"]}},bye:{N:{tab:["n1"]}},cab:{N:{tab:["n1"]}},cabin:{N:{tab:["n1"]}},cabinet:{N:{tab:["n1"]}},cable:{N:{tab:["n1"]}},cage:{N:{tab:["n1"]}},cake:{N:{tab:["n1"]}},calcium:{N:{tab:["n5"]}},calculate:{V:{tab:"v3"}},calculation:{N:{tab:["n1"]}},calendar:{N:{tab:["n1"]}},calf:{N:{tab:["n9"]}},call:{N:{tab:["n1"]},V:{tab:"v1"}},calm:{A:{tab:["a3"]},N:{tab:["n1"]},V:{tab:"v1"}},calorie:{N:{tab:["n1"]}},camera:{N:{tab:["n1"]}},camp:{N:{tab:["n1"]}},campaign:{N:{tab:["n1"]},V:{tab:"v1"}},can:{N:{tab:["n1"]},V:{tab:"v161"}},canal:{N:{tab:["n1"]}},cancel:{V:{tab:"v9"}},cancer:{N:{tab:["n1"]}},candidate:{N:{tab:["n1"]}},candle:{N:{tab:["n1"]}},canvas:{N:{tab:["n2"]}},cap:{N:{tab:["n1"]}},capability:{N:{tab:["n3"]}},capable:{A:{tab:["a1"]}},capacity:{N:{tab:["n3"]}},capital:{A:{tab:["a1"]},N:{tab:["n1"]}},capitalism:{N:{tab:["n5"]}},capitalist:{N:{tab:["n1"]}},captain:{N:{tab:["n1"]}},capture:{V:{tab:"v3"}},car:{N:{tab:["n1"]}},caravan:{N:{tab:["n1"]}},carbon:{N:{tab:["n1"]}},card:{N:{tab:["n1"]}},care:{N:{tab:["n1"]},V:{tab:"v3"}},career:{N:{tab:["n1"]}},careful:{A:{tab:["a1"]}},carefully:{Adv:{tab:["b1"]}},cargo:{N:{tab:["n2"]}},carpet:{N:{tab:["n1"]}},carriage:{N:{tab:["n1"]}},carrier:{N:{tab:["n1"]}},carrot:{N:{tab:["n1"]}},carry:{V:{tab:"v4"}},cart:{N:{tab:["n1"]}},carve:{V:{tab:"v3"}},case:{N:{tab:["n1"]}},cash:{N:{tab:["n5"]}},cassette:{N:{tab:["n1"]}},cast:{N:{tab:["n1"]},V:{tab:"v18"}},castle:{N:{tab:["n1"]}},casual:{A:{tab:["a1"]}},casualty:{N:{tab:["n3"]}},cat:{N:{tab:["n1"]}},catalogue:{N:{tab:["n1"]}},catch:{N:{tab:["n2"]},V:{tab:"v84"}},category:{N:{tab:["n3"]}},cater:{V:{tab:"v1"}},cathedral:{N:{tab:["n1"]}},cattle:{N:{tab:["n6"]}},causal:{A:{tab:["a1"]}},cause:{N:{tab:["n1"]},V:{tab:"v3"}},caution:{N:{tab:["n1"]}},cautious:{A:{tab:["a1"]}},cave:{N:{tab:["n1"]}},cease:{V:{tab:"v3"}},ceiling:{N:{tab:["n1"]}},celebrate:{V:{tab:"v3"}},celebration:{N:{tab:["n1"]}},cell:{N:{tab:["n1"]}},cellar:{N:{tab:["n1"]}},cemetery:{N:{tab:["n3"]}},census:{N:{tab:["n2"]}},central:{A:{tab:["a1"]}},centre:{N:{tab:["n1"]},V:{tab:"v3"}},century:{N:{tab:["n3"]}},cereal:{N:{tab:["n1"]}},ceremony:{N:{tab:["n3"]}},certain:{A:{tab:["a1"]}},certainly:{Adv:{tab:["b1"]}},certainty:{N:{tab:["n3"]}},certificate:{N:{tab:["n1"]}},chain:{N:{tab:["n1"]}},chair:{N:{tab:["n1"]},V:{tab:"v1"}},chairman:{N:{tab:["n7"]}},chalk:{N:{tab:["n1"]}},challenge:{N:{tab:["n1"]},V:{tab:"v3"}},chamber:{N:{tab:["n1"]}},champagne:{N:{tab:["n1"]}},champion:{N:{tab:["n1"]}},championship:{N:{tab:["n1"]}},chance:{N:{tab:["n1"]}},chancellor:{N:{tab:["n1"]}},change:{N:{tab:["n1"]},V:{tab:"v3"}},channel:{N:{tab:["n1"]}},chaos:{N:{tab:["n5"]}},chap:{N:{tab:["n1"]}},chapel:{N:{tab:["n1"]}},chapter:{N:{tab:["n1"]}},character:{N:{tab:["n1"]}},characteristic:{A:{tab:["a1"]}},characterize:{V:{tab:"v3"}},charge:{N:{tab:["n1"]},V:{tab:"v3"}},charity:{N:{tab:["n3"]}},charm:{N:{tab:["n1"]}},charming:{A:{tab:["a1"]}},chart:{N:{tab:["n1"]}},charter:{N:{tab:["n1"]}},chase:{N:{tab:["n1"]},V:{tab:"v3"}},chat:{N:{tab:["n1"]},V:{tab:"v14"}},cheap:{A:{tab:["a3"]}},check:{N:{tab:["n1"]},V:{tab:"v1"}},cheek:{N:{tab:["n1"]}},cheer:{V:{tab:"v1"}},cheerful:{A:{tab:["a1"]}},cheese:{N:{tab:["n1"]}},chemical:{A:{tab:["a1"]},N:{tab:["n1"]}},chemist:{N:{tab:["n1"]}},chemistry:{N:{tab:["n5"]}},cheque:{N:{tab:["n1"]}},chest:{N:{tab:["n1"]}},chew:{V:{tab:"v1"}},chicken:{N:{tab:["n1"]}},chief:{A:{tab:["a1"]},N:{tab:["n1"]}},child:{N:{tab:["n15"]}},childhood:{N:{tab:["n5"]}},chimney:{N:{tab:["n1"]}},chin:{N:{tab:["n1"]}},chip:{N:{tab:["n1"]}},chocolate:{N:{tab:["n1"]}},choice:{N:{tab:["n1"]}},choir:{N:{tab:["n1"]}},choke:{V:{tab:"v3"}},choose:{V:{tab:"v93"}},chop:{V:{tab:"v12"}},chord:{N:{tab:["n1"]}},chorus:{N:{tab:["n2"]}},chronic:{A:{tab:["a1"]}},church:{N:{tab:["n2"]}},cigarette:{N:{tab:["n1"]}},cinema:{N:{tab:["n1"]}},circle:{N:{tab:["n1"]}},circuit:{N:{tab:["n1"]}},circular:{A:{tab:["a1"]},N:{tab:["n1"]}},circulate:{V:{tab:"v3"}},circulation:{N:{tab:["n1"]}},circumstance:{N:{tab:["n1"]}},cite:{V:{tab:"v3"}},citizen:{N:{tab:["n1"]}},citizenship:{N:{tab:["n1"]}},city:{N:{tab:["n3"]}},civic:{A:{tab:["a1"]}},civil:{A:{tab:["a8"]}},civilian:{A:{tab:["a1"]},N:{tab:["n1"]}},civilization:{N:{tab:["n1"]}},claim:{N:{tab:["n1"]},V:{tab:"v1"}},clarify:{V:{tab:"v4"}},clarity:{N:{tab:["n5"]}},clash:{N:{tab:["n2"]}},class:{N:{tab:["n2"]}},classic:{A:{tab:["a1"]},N:{tab:["n1"]}},classical:{A:{tab:["a1"]}},classification:{N:{tab:["n1"]}},classify:{V:{tab:"v4"}},classroom:{N:{tab:["n1"]}},clause:{N:{tab:["n1"]}},clay:{N:{tab:["n5"]}},clean:{A:{tab:["a3"]},V:{tab:"v1"}},cleaner:{N:{tab:["n1"]}},clear:{A:{tab:["a3"]},V:{tab:"v1"}},clearance:{N:{tab:["n1"]}},clearing:{N:{tab:["n1"]}},clearly:{Adv:{tab:["b1"]}},clergy:{N:{tab:["n3"]}},clerical:{A:{tab:["a1"]}},clerk:{N:{tab:["n1"]}},clever:{A:{tab:["a3"]}},client:{N:{tab:["n1"]}},cliff:{N:{tab:["n1"]}},climate:{N:{tab:["n1"]}},climb:{N:{tab:["n1"]},V:{tab:"v1"}},climber:{N:{tab:["n1"]}},cling:{V:{tab:"v21"}},clinic:{N:{tab:["n1"]}},clinical:{A:{tab:["a1"]}},clock:{N:{tab:["n1"]}},close:{A:{tab:["a2"]},Adv:{tab:["b1"]},V:{tab:"v3"}},closely:{Adv:{tab:["b1"]}},closure:{N:{tab:["n1"]}},cloth:{N:{tab:["n1"]}},clothes:{N:{tab:["n6"]}},clothing:{N:{tab:["n5"]}},cloud:{N:{tab:["n1"]}},club:{N:{tab:["n1"]}},clue:{N:{tab:["n1"]}},cluster:{N:{tab:["n1"]}},clutch:{V:{tab:"v2"}},"co-operate":{V:{tab:"v3"}},"co-operation":{N:{tab:["n1"]}},"co-operative":{A:{tab:["a1"]}},coach:{N:{tab:["n2"]},V:{tab:"v2"}},coal:{N:{tab:["n1"]}},coalition:{N:{tab:["n1"]}},coast:{N:{tab:["n1"]}},coastal:{A:{tab:["a1"]}},coat:{N:{tab:["n1"]}},code:{N:{tab:["n1"]},V:{tab:"v3"}},coffee:{N:{tab:["n1"]}},coffin:{N:{tab:["n1"]}},coherent:{A:{tab:["a1"]}},coin:{N:{tab:["n1"]}},coincide:{V:{tab:"v3"}},coincidence:{N:{tab:["n1"]}},cold:{A:{tab:["a3"]},N:{tab:["n1"]}},collaboration:{N:{tab:["n5"]}},collapse:{N:{tab:["n1"]},V:{tab:"v3"}},collar:{N:{tab:["n1"]}},colleague:{N:{tab:["n1"]}},collect:{V:{tab:"v1"}},collection:{N:{tab:["n1"]}},collective:{A:{tab:["a1"]}},collector:{N:{tab:["n1"]}},college:{N:{tab:["n1"]}},colon:{N:{tab:["n1"]}},colonel:{N:{tab:["n1"]}},colonial:{A:{tab:["a1"]}},colony:{N:{tab:["n3"]}},colour:{N:{tab:["n1"]},V:{tab:"v1"}},coloured:{A:{tab:["a1"]}},colourful:{A:{tab:["a1"]}},column:{N:{tab:["n1"]}},combat:{V:{tab:"v1"}},combination:{N:{tab:["n1"]}},combine:{V:{tab:"v3"}},come:{V:{tab:"v41"}},comedy:{N:{tab:["n3"]}},comfort:{N:{tab:["n1"]},V:{tab:"v1"}},comfortable:{A:{tab:["a1"]}},comfortably:{Adv:{tab:["b1"]}},coming:{A:{tab:["a1"]}},command:{N:{tab:["n1"]},V:{tab:"v1"}},commander:{N:{tab:["n1"]}},commence:{V:{tab:"v3"}},comment:{N:{tab:["n1"]},V:{tab:"v1"}},commentary:{N:{tab:["n3"]}},commentator:{N:{tab:["n1"]}},commerce:{N:{tab:["n5"]}},commercial:{A:{tab:["a1"]}},commission:{N:{tab:["n1"]},V:{tab:"v1"}},commissioner:{N:{tab:["n1"]}},commit:{V:{tab:"v14"}},commitment:{N:{tab:["n1"]}},committee:{N:{tab:["n1"]}},commodity:{N:{tab:["n3"]}},common:{A:{tab:["a3"]}},commonly:{Adv:{tab:["b1"]}},commons:{N:{tab:["n6"]}},commonwealth:{N:{tab:["n1"]}},communicate:{V:{tab:"v3"}},communication:{N:{tab:["n1"]}},communism:{N:{tab:["n5"]}},communist:{A:{tab:["a1"]},N:{tab:["n1"]}},community:{N:{tab:["n3"]}},compact:{N:{tab:["n1"]}},companion:{N:{tab:["n1"]}},company:{N:{tab:["n3"]}},comparable:{A:{tab:["a1"]}},comparative:{A:{tab:["a1"]}},comparatively:{Adv:{tab:["b1"]}},compare:{V:{tab:"v3"}},comparison:{N:{tab:["n1"]}},compartment:{N:{tab:["n1"]}},compatible:{A:{tab:["a1"]}},compel:{V:{tab:"v9"}},compensate:{V:{tab:"v3"}},compensation:{N:{tab:["n1"]}},compete:{V:{tab:"v3"}},competence:{N:{tab:["n5"]}},competent:{A:{tab:["a1"]}},competition:{N:{tab:["n1"]}},competitive:{A:{tab:["a1"]}},competitor:{N:{tab:["n1"]}},compile:{V:{tab:"v3"}},complain:{V:{tab:"v1"}},complaint:{N:{tab:["n1"]}},complement:{V:{tab:"v1"}},complementary:{A:{tab:["a1"]}},complete:{A:{tab:["a1"]},V:{tab:"v3"}},completely:{Adv:{tab:["b1"]}},completion:{N:{tab:["n5"]}},complex:{A:{tab:["a1"]},N:{tab:["n2"]}},complexity:{N:{tab:["n3"]}},compliance:{N:{tab:["n5"]}},complicate:{V:{tab:"v3"}},complicated:{A:{tab:["a1"]}},complication:{N:{tab:["n1"]}},comply:{V:{tab:"v4"}},component:{N:{tab:["n1"]}},compose:{V:{tab:"v3"}},composer:{N:{tab:["n1"]}},composition:{N:{tab:["n1"]}},compound:{N:{tab:["n1"]},V:{tab:"v1"}},comprehensive:{A:{tab:["a1"]}},comprise:{V:{tab:"v3"}},compromise:{N:{tab:["n1"]},V:{tab:"v3"}},compulsory:{A:{tab:["a1"]}},compute:{V:{tab:"v3"}},computer:{N:{tab:["n1"]}},conceal:{V:{tab:"v1"}},concede:{V:{tab:"v3"}},conceive:{V:{tab:"v3"}},concentrate:{V:{tab:"v3"}},concentration:{N:{tab:["n1"]}},concept:{N:{tab:["n1"]}},conception:{N:{tab:["n1"]}},concern:{N:{tab:["n1"]},V:{tab:"v1"}},concerned:{A:{tab:["a1"]}},concerning:{P:{tab:["pp"]}},concert:{N:{tab:["n1"]}},concession:{N:{tab:["n1"]}},conclude:{V:{tab:"v3"}},conclusion:{N:{tab:["n1"]}},concrete:{A:{tab:["a1"]},N:{tab:["n5"]}},condemn:{V:{tab:"v1"}},condition:{N:{tab:["n1"]}},conduct:{N:{tab:["n5"]},V:{tab:"v1"}},conductor:{N:{g:"m",tab:["n85"]}},confer:{V:{tab:"v13"}},conference:{N:{tab:["n1"]}},confess:{V:{tab:"v2"}},confession:{N:{tab:["n1"]}},confidence:{N:{tab:["n1"]}},confident:{A:{tab:["a1"]}},confidential:{A:{tab:["a1"]}},configuration:{N:{tab:["n1"]}},confine:{V:{tab:"v3"}},confirm:{V:{tab:"v1"}},confirmation:{N:{tab:["n1"]}},conflict:{N:{tab:["n1"]},V:{tab:"v1"}},conform:{V:{tab:"v1"}},confront:{V:{tab:"v1"}},confrontation:{N:{tab:["n1"]}},confuse:{V:{tab:"v3"}},confusion:{N:{tab:["n5"]}},congratulate:{V:{tab:"v3"}},congregation:{N:{tab:["n1"]}},congress:{N:{tab:["n2"]}},conjunction:{N:{tab:["n1"]}},connect:{V:{tab:"v1"}},connection:{N:{tab:["n1"]}},conscience:{N:{tab:["n1"]}},conscious:{A:{tab:["a1"]}},consciousness:{N:{tab:["n5"]}},consensus:{N:{tab:["n2"]}},consent:{N:{tab:["n5"]}},consequence:{N:{tab:["n1"]}},consequently:{Adv:{tab:["b1"]}},conservation:{N:{tab:["n5"]}},conservative:{A:{tab:["a1"]},N:{tab:["n1"]}},consider:{V:{tab:"v1"}},considerable:{A:{tab:["a1"]}},considerably:{Adv:{tab:["b1"]}},consideration:{N:{tab:["n1"]}},considering:{P:{tab:["pp"]}},consist:{V:{tab:"v1"}},consistency:{N:{tab:["n3"]}},consistent:{A:{tab:["a1"]}},consistently:{Adv:{tab:["b1"]}},consolidate:{V:{tab:"v3"}},consortium:{N:{tab:["n11"]}},conspiracy:{N:{tab:["n3"]}},constable:{N:{tab:["n1"]}},constant:{A:{tab:["a1"]}},constantly:{Adv:{tab:["b1"]}},constituency:{N:{tab:["n3"]}},constituent:{N:{tab:["n1"]}},constitute:{V:{tab:"v3"}},constitution:{N:{tab:["n1"]}},constitutional:{A:{tab:["a1"]}},constrain:{V:{tab:"v1"}},constraint:{N:{tab:["n1"]}},construct:{V:{tab:"v1"}},construction:{N:{tab:["n1"]}},constructive:{A:{tab:["a1"]}},consult:{V:{tab:"v1"}},consultant:{N:{tab:["n1"]}},consultation:{N:{tab:["n1"]}},consume:{V:{tab:"v3"}},consumer:{N:{tab:["n1"]}},consumption:{N:{tab:["n5"]}},contact:{N:{tab:["n1"]},V:{tab:"v1"}},contain:{V:{tab:"v1"}},container:{N:{tab:["n1"]}},contemplate:{V:{tab:"v3"}},contemporary:{A:{tab:["a1"]},N:{tab:["n3"]}},contempt:{N:{tab:["n5"]}},contend:{V:{tab:"v1"}},content:{A:{tab:["a1"]},N:{tab:["n1"]}},contest:{N:{tab:["n1"]},V:{tab:"v1"}},context:{N:{tab:["n1"]}},continent:{N:{tab:["n1"]}},continental:{A:{tab:["a1"]}},continually:{Adv:{tab:["b1"]}},continuation:{N:{tab:["n1"]}},continue:{V:{tab:"v3"}},continuity:{N:{tab:["n5"]}},continuous:{A:{tab:["a1"]}},continuously:{Adv:{tab:["b1"]}},contract:{N:{tab:["n1"]},V:{tab:"v1"}},contraction:{N:{tab:["n1"]}},contractor:{N:{tab:["n1"]}},contractual:{A:{tab:["a1"]}},contradiction:{N:{tab:["n1"]}},contrary:{A:{tab:["a1"]},N:{tab:["n3"]}},contrast:{N:{tab:["n1"]},V:{tab:"v1"}},contribute:{V:{tab:"v3"}},contribution:{N:{tab:["n1"]}},control:{N:{tab:["n1"]},V:{tab:"v9"}},controller:{N:{tab:["n1"]}},controversial:{A:{tab:["a1"]}},controversy:{N:{tab:["n3"]}},convenience:{N:{tab:["n1"]}},convenient:{A:{tab:["a1"]}},convention:{N:{tab:["n1"]}},conventional:{A:{tab:["a1"]}},conversation:{N:{tab:["n1"]}},conversely:{Adv:{tab:["b1"]}},conversion:{N:{tab:["n1"]}},convert:{V:{tab:"v1"}},convey:{V:{tab:"v1"}},convict:{V:{tab:"v1"}},conviction:{N:{tab:["n1"]}},convince:{V:{tab:"v3"}},convincing:{A:{tab:["a1"]}},cook:{N:{tab:["n1"]},V:{tab:"v1"}},cooking:{N:{tab:["n5"]}},cool:{A:{tab:["a3"]},V:{tab:"v1"}},cooperation:{N:{tab:["n1"]}},cop:{V:{tab:"v12"}},cope:{V:{tab:"v3"}},copper:{N:{tab:["n1"]}},copy:{N:{tab:["n3"]},V:{tab:"v4"}},copyright:{N:{tab:["n1"]}},cord:{N:{tab:["n1"]}},core:{N:{tab:["n1"]}},corn:{N:{tab:["n1"]}},corner:{N:{tab:["n1"]}},corporate:{A:{tab:["a1"]}},corps:{N:{tab:["n4"]}},corpse:{N:{tab:["n1"]}},correct:{A:{tab:["a1"]},V:{tab:"v1"}},correction:{N:{tab:["n1"]}},correctly:{Adv:{tab:["b1"]}},correlation:{N:{tab:["n1"]}},correspond:{V:{tab:"v1"}},correspondence:{N:{tab:["n1"]}},correspondent:{N:{tab:["n1"]}},corresponding:{A:{tab:["a1"]}},corridor:{N:{tab:["n1"]}},corruption:{N:{tab:["n5"]}},cost:{N:{tab:["n1"]},V:{tab:"v58"}},costly:{A:{tab:["a4"]}},costume:{N:{tab:["n1"]}},cottage:{N:{tab:["n1"]}},cotton:{N:{tab:["n5"]}},cough:{V:{tab:"v1"}},council:{N:{tab:["n1"]}},councillor:{N:{tab:["n1"]}},counsel:{N:{tab:["n5"]}},counsellor:{N:{tab:["n1"]}},count:{N:{g:"m",tab:["n85"]},V:{tab:"v1"}},counter:{N:{tab:["n1"]},V:{tab:"v1"}},counterpart:{N:{tab:["n1"]}},country:{N:{tab:["n3"]}},countryside:{N:{tab:["n5"]}},county:{N:{tab:["n3"]}},coup:{N:{tab:["n1"]}},couple:{N:{tab:["n1"]},V:{tab:"v3"}},courage:{N:{tab:["n5"]}},course:{N:{tab:["n1"]}},court:{N:{tab:["n1"]}},courtesy:{N:{tab:["n3"]}},courtyard:{N:{tab:["n1"]}},cousin:{N:{tab:["n1"]}},covenant:{N:{tab:["n1"]}},cover:{N:{tab:["n1"]},V:{tab:"v1"}},coverage:{N:{tab:["n5"]}},cow:{N:{tab:["n69"]}},crack:{N:{tab:["n1"]},V:{tab:"v1"}},craft:{N:{tab:["n1"]}},craftsman:{N:{tab:["n7"]}},crash:{N:{tab:["n2"]},V:{tab:"v2"}},crawl:{V:{tab:"v1"}},crazy:{A:{tab:["a4"]}},cream:{N:{tab:["n1"]}},create:{V:{tab:"v3"}},creation:{N:{tab:["n1"]}},creative:{A:{tab:["a1"]}},creature:{N:{tab:["n1"]}},credibility:{N:{tab:["n5"]}},credit:{N:{tab:["n1"]},V:{tab:"v1"}},creditor:{N:{tab:["n1"]}},creed:{N:{tab:["n1"]}},creep:{V:{tab:"v29"}},crew:{N:{tab:["n1"]}},cricket:{N:{tab:["n1"]}},crime:{N:{tab:["n1"]}},criminal:{A:{tab:["a1"]},N:{tab:["n1"]}},crisis:{N:{tab:["n8"]}},criterion:{N:{tab:["n26"]}},critic:{N:{tab:["n1"]}},critical:{A:{tab:["a1"]}},criticism:{N:{tab:["n1"]}},criticize:{V:{tab:"v3"}},critique:{N:{tab:["n1"]}},crop:{N:{tab:["n1"]},V:{tab:"v12"}},cross:{N:{tab:["n2"]},V:{tab:"v2"}},crossing:{N:{tab:["n1"]}},crouch:{V:{tab:"v2"}},crowd:{N:{tab:["n1"]},V:{tab:"v1"}},crown:{N:{tab:["n1"]}},crucial:{A:{tab:["a1"]}},crude:{A:{tab:["a2"]}},cruel:{A:{tab:["a8"]}},cruelty:{N:{tab:["n3"]}},crush:{V:{tab:"v2"}},cry:{N:{tab:["n3"]},V:{tab:"v4"}},crystal:{N:{tab:["n1"]}},cult:{N:{tab:["n1"]}},cultivate:{V:{tab:"v3"}},cultural:{A:{tab:["a1"]}},culture:{N:{tab:["n1"]}},cup:{N:{tab:["n1"]}},cupboard:{N:{tab:["n1"]}},cure:{N:{tab:["n1"]}},curiosity:{N:{tab:["n3"]}},curious:{A:{tab:["a1"]}},curiously:{Adv:{tab:["b1"]}},curl:{N:{tab:["n1"]},V:{tab:"v1"}},currency:{N:{tab:["n3"]}},current:{A:{tab:["a1"]},N:{tab:["n1"]}},currently:{Adv:{tab:["b1"]}},curriculum:{N:{tab:["n1"]}},curtain:{N:{tab:["n1"]}},curve:{N:{tab:["n1"]},V:{tab:"v3"}},cushion:{N:{tab:["n1"]}},custody:{N:{tab:["n5"]}},custom:{N:{tab:["n1"]}},customer:{N:{tab:["n1"]}},cut:{N:{tab:["n1"]},V:{tab:"v17"}},cutting:{N:{tab:["n1"]}},cycle:{N:{tab:["n1"]}},cylinder:{N:{tab:["n1"]}},daily:{A:{tab:["a1"]},Adv:{tab:["b1"]}},dairy:{N:{tab:["n3"]}},damage:{N:{tab:["n1"]},V:{tab:"v3"}},damn:{V:{tab:"v1"}},damp:{A:{tab:["a3"]}},dance:{N:{tab:["n1"]},V:{tab:"v3"}},dancer:{N:{tab:["n1"]}},dancing:{N:{tab:["n5"]}},danger:{N:{tab:["n1"]}},dangerous:{A:{tab:["a1"]}},dare:{V:{tab:"v158"}},dark:{A:{tab:["a3"]},N:{tab:["n5"]}},darkness:{N:{tab:["n5"]}},darling:{N:{tab:["n1"]}},dash:{V:{tab:"v2"}},data:{N:{tab:["n4"]}},date:{N:{tab:["n1"]},V:{tab:"v3"}},daughter:{N:{g:"f",tab:["n87"]}},dawn:{N:{tab:["n1"]}},day:{N:{tab:["n1"]}},daylight:{N:{tab:["n5"]}},dead:{A:{tab:["a1"]},Adv:{tab:["b1"]}},deadline:{N:{tab:["n1"]}},deadly:{A:{tab:["a4"]}},deaf:{A:{tab:["a3"]}},deal:{N:{tab:["n1"]},V:{tab:"v55"}},dealer:{N:{tab:["n1"]}},dealing:{N:{tab:["n1"]}},dear:{A:{tab:["a3"]},N:{tab:["n1"]}},death:{N:{tab:["n1"]}},debate:{N:{tab:["n1"]},V:{tab:"v3"}},debt:{N:{tab:["n1"]}},debtor:{N:{tab:["n1"]}},debut:{N:{tab:["n1"]}},decade:{N:{tab:["n1"]}},decay:{N:{tab:["n5"]}},decent:{A:{tab:["a1"]}},decide:{V:{tab:"v3"}},decision:{N:{tab:["n1"]}},decisive:{A:{tab:["a1"]}},deck:{N:{tab:["n1"]}},declaration:{N:{tab:["n1"]}},declare:{V:{tab:"v3"}},decline:{N:{tab:["n1"]},V:{tab:"v3"}},decorate:{V:{tab:"v3"}},decoration:{N:{tab:["n1"]}},decorative:{A:{tab:["a1"]}},decrease:{N:{tab:["n1"]},V:{tab:"v3"}},decree:{N:{tab:["n1"]}},dedicate:{V:{tab:"v3"}},deed:{N:{tab:["n1"]}},deem:{V:{tab:"v1"}},deep:{A:{tab:["a3"]},Adv:{tab:["b1"]}},deeply:{Adv:{tab:["b1"]}},deer:{N:{tab:["n4"]}},default:{N:{tab:["n5"]}},defeat:{N:{tab:["n1"]},V:{tab:"v1"}},defect:{N:{tab:["n1"]}},defend:{V:{tab:"v1"}},defendant:{N:{tab:["n1"]}},defender:{N:{tab:["n1"]}},defense:{N:{tab:["n1"]}},defensive:{A:{tab:["a1"]}},deficiency:{N:{tab:["n3"]}},deficit:{N:{tab:["n1"]}},define:{V:{tab:"v3"}},definite:{A:{tab:["a1"]}},definitely:{Adv:{tab:["b1"]}},definition:{N:{tab:["n1"]}},defy:{V:{tab:"v4"}},degree:{N:{tab:["n1"]}},delay:{N:{tab:["n1"]},V:{tab:"v1"}},delegate:{N:{tab:["n1"]}},delegation:{N:{tab:["n1"]}},delete:{V:{tab:"v3"}},deliberate:{A:{tab:["a1"]}},deliberately:{Adv:{tab:["b1"]}},delicate:{A:{tab:["a1"]}},delicious:{A:{tab:["a1"]}},delight:{N:{tab:["n1"]},V:{tab:"v1"}},delightful:{A:{tab:["a1"]}},deliver:{V:{tab:"v1"}},delivery:{N:{tab:["n3"]}},demand:{N:{tab:["n1"]},V:{tab:"v1"}},democracy:{N:{tab:["n3"]}},democrat:{N:{tab:["n1"]}},democratic:{A:{tab:["a1"]}},demolish:{V:{tab:"v2"}},demonstrate:{V:{tab:"v3"}},demonstration:{N:{tab:["n1"]}},demonstrator:{N:{tab:["n1"]}},denial:{N:{tab:["n1"]}},denounce:{V:{tab:"v3"}},dense:{A:{tab:["a2"]}},density:{N:{tab:["n3"]}},dentist:{N:{tab:["n1"]}},deny:{V:{tab:"v4"}},depart:{V:{tab:"v1"}},department:{N:{tab:["n1"]}},departmental:{A:{tab:["a1"]}},departure:{N:{tab:["n1"]}},depend:{V:{tab:"v1"}},dependence:{N:{tab:["n5"]}},dependency:{N:{tab:["n3"]}},dependent:{A:{tab:["a1"]}},depict:{V:{tab:"v1"}},deploy:{V:{tab:"v1"}},deposit:{N:{tab:["n1"]},V:{tab:"v1"}},depot:{N:{tab:["n1"]}},depression:{N:{tab:["n1"]}},deprivation:{N:{tab:["n1"]}},deprive:{V:{tab:"v3"}},depth:{N:{tab:["n1"]}},deputy:{N:{tab:["n3"]}},derive:{V:{tab:"v3"}},descend:{V:{tab:"v1"}},descent:{N:{tab:["n1"]}},describe:{V:{tab:"v3"}},description:{N:{tab:["n1"]}},desert:{N:{tab:["n1"]},V:{tab:"v1"}},deserve:{V:{tab:"v3"}},design:{N:{tab:["n1"]},V:{tab:"v1"}},designate:{V:{tab:"v3"}},designer:{N:{tab:["n1"]}},desirable:{A:{tab:["a1"]}},desire:{N:{tab:["n1"]},V:{tab:"v3"}},desk:{N:{tab:["n1"]}},despair:{N:{tab:["n5"]}},desperate:{A:{tab:["a1"]}},desperately:{Adv:{tab:["b1"]}},despite:{P:{tab:["pp"]}},destination:{N:{tab:["n1"]}},destiny:{N:{tab:["n3"]}},destroy:{V:{tab:"v1"}},destruction:{N:{tab:["n5"]}},detail:{N:{tab:["n1"]}},detain:{V:{tab:"v1"}},detect:{V:{tab:"v1"}},detection:{N:{tab:["n5"]}},detective:{N:{tab:["n1"]}},detector:{N:{tab:["n1"]}},detention:{N:{tab:["n1"]}},deter:{V:{tab:"v13"}},deteriorate:{V:{tab:"v3"}},determination:{N:{tab:["n5"]}},determine:{V:{tab:"v3"}},develop:{V:{tab:"v1"}},developer:{N:{tab:["n1"]}},development:{N:{tab:["n1"]}},deviation:{N:{tab:["n1"]}},device:{N:{tab:["n1"]}},devil:{N:{tab:["n1"]}},devise:{V:{tab:"v3"}},devote:{V:{tab:"v3"}},devoted:{A:{tab:["a1"]}},diagnose:{V:{tab:"v3"}},diagnosis:{N:{tab:["n8"]}},diagram:{N:{tab:["n1"]}},dialogue:{N:{tab:["n1"]}},diameter:{N:{tab:["n1"]}},diamond:{N:{tab:["n1"]}},diary:{N:{tab:["n3"]}},dictate:{V:{tab:"v3"}},dictionary:{N:{tab:["n3"]}},die:{V:{tab:"v28"}},diet:{N:{tab:["n1"]}},differ:{V:{tab:"v1"}},difference:{N:{tab:["n1"]}},different:{A:{tab:["a1"]}},differential:{A:{tab:["a1"]}},differentiate:{V:{tab:"v3"}},differentiation:{N:{tab:["n1"]}},differently:{Adv:{tab:["b1"]}},difficult:{A:{tab:["a1"]}},difficulty:{N:{tab:["n3"]}},dig:{V:{tab:"v109"}},digital:{A:{tab:["a1"]}},dignity:{N:{tab:["n3"]}},dilemma:{N:{tab:["n1"]}},dimension:{N:{tab:["n1"]}},diminish:{V:{tab:"v2"}},dine:{V:{tab:"v3"}},dinner:{N:{tab:["n1"]}},dioxide:{N:{tab:["n1"]}},dip:{V:{tab:"v12"}},diplomat:{N:{tab:["n1"]}},diplomatic:{A:{tab:["a1"]}},direct:{A:{tab:["a1"]},Adv:{tab:["b1"]},V:{tab:"v1"}},direction:{N:{tab:["n1"]}},directive:{N:{tab:["n1"]}},directly:{Adv:{tab:["b1"]}},director:{N:{tab:["n1"]}},directory:{N:{tab:["n3"]}},dirt:{N:{tab:["n5"]}},dirty:{A:{tab:["a4"]}},disability:{N:{tab:["n3"]}},disadvantage:{N:{tab:["n1"]}},disagree:{V:{tab:"v16"}},disagreement:{N:{tab:["n1"]}},disappear:{V:{tab:"v1"}},disappoint:{V:{tab:"v1"}},disappointment:{N:{tab:["n1"]}},disaster:{N:{tab:["n1"]}},disastrous:{A:{tab:["a1"]}},disc:{N:{tab:["n1"]}},discard:{V:{tab:"v1"}},discharge:{N:{tab:["n1"]},V:{tab:"v3"}},disciplinary:{A:{tab:["a1"]}},discipline:{N:{tab:["n1"]},V:{tab:"v3"}},disclose:{V:{tab:"v3"}},disclosure:{N:{tab:["n1"]}},disco:{N:{tab:["n1"]}},discount:{N:{tab:["n1"]},V:{tab:"v1"}},discourage:{V:{tab:"v3"}},discourse:{N:{tab:["n1"]}},discover:{V:{tab:"v1"}},discovery:{N:{tab:["n3"]}},discretion:{N:{tab:["n5"]}},discrimination:{N:{tab:["n5"]}},discuss:{V:{tab:"v2"}},discussion:{N:{tab:["n1"]}},disease:{N:{tab:["n1"]}},disguise:{V:{tab:"v3"}},dish:{N:{tab:["n2"]}},disk:{N:{tab:["n1"]}},dislike:{V:{tab:"v3"}},dismiss:{V:{tab:"v2"}},dismissal:{N:{tab:["n1"]}},disorder:{N:{tab:["n1"]}},disperse:{V:{tab:"v3"}},display:{N:{tab:["n1"]},V:{tab:"v1"}},disposal:{N:{tab:["n5"]}},dispose:{V:{tab:"v3"}},disposition:{N:{tab:["n1"]}},dispute:{N:{tab:["n1"]},V:{tab:"v3"}},disrupt:{V:{tab:"v1"}},disruption:{N:{tab:["n1"]}},dissolve:{V:{tab:"v3"}},distance:{N:{tab:["n1"]}},distant:{A:{tab:["a1"]}},distinct:{A:{tab:["a1"]}},distinction:{N:{tab:["n1"]}},distinctive:{A:{tab:["a1"]}},distinctly:{Adv:{tab:["b1"]}},distinguish:{V:{tab:"v2"}},distinguished:{A:{tab:["a1"]}},distort:{V:{tab:"v1"}},distortion:{N:{tab:["n1"]}},distract:{V:{tab:"v1"}},distress:{N:{tab:["n5"]}},distribute:{V:{tab:"v3"}},distribution:{N:{tab:["n1"]}},distributor:{N:{tab:["n1"]}},district:{N:{tab:["n1"]}},disturb:{V:{tab:"v1"}},disturbance:{N:{tab:["n1"]}},dive:{V:{tab:"v3"}},diverse:{A:{tab:["a1"]}},diversity:{N:{tab:["n5"]}},divert:{V:{tab:"v1"}},divide:{V:{tab:"v3"}},dividend:{N:{tab:["n1"]}},divine:{A:{tab:["a1"]}},division:{N:{tab:["n1"]}},divorce:{N:{tab:["n1"]},V:{tab:"v3"}},do:{V:{tab:"v96"}},dock:{N:{tab:["n1"]}},doctor:{N:{tab:["n1"]}},doctrine:{N:{tab:["n1"]}},document:{N:{tab:["n1"]},V:{tab:"v1"}},documentation:{N:{tab:["n5"]}},dog:{N:{tab:["n1"]}},doll:{N:{tab:["n1"]}},dollar:{N:{tab:["n1"]}},dolphin:{N:{tab:["n1"]}},domain:{N:{tab:["n1"]}},dome:{N:{tab:["n1"]}},domestic:{A:{tab:["a1"]}},dominance:{N:{tab:["n5"]}},dominant:{A:{tab:["a1"]}},dominate:{V:{tab:"v3"}},domination:{N:{tab:["n5"]}},donate:{V:{tab:"v3"}},donation:{N:{tab:["n1"]}},donor:{N:{tab:["n1"]}},door:{N:{tab:["n1"]}},doorway:{N:{tab:["n1"]}},dose:{N:{tab:["n1"]}},dot:{N:{tab:["n1"]}},double:{A:{tab:["a1"]},N:{tab:["n1"]},V:{tab:"v3"}},doubt:{N:{tab:["n1"]},V:{tab:"v1"}},doubtful:{A:{tab:["a1"]}},doubtless:{Adv:{tab:["b1"]}},down:{Adv:{tab:["b1"]},P:{tab:["pp"]}},downstairs:{Adv:{tab:["b1"]}},dozen:{N:{tab:["n1"]}},draft:{N:{tab:["n1"]},V:{tab:"v1"}},drag:{V:{tab:"v7"}},dragon:{N:{tab:["n1"]}},drain:{N:{tab:["n1"]},V:{tab:"v1"}},drainage:{N:{tab:["n5"]}},drama:{N:{tab:["n1"]}},dramatic:{A:{tab:["a1"]}},dramatically:{Adv:{tab:["b1"]}},draw:{N:{tab:["n1"]},V:{tab:"v54"}},drawer:{N:{tab:["n1"]}},drawing:{N:{tab:["n1"]}},dreadful:{A:{tab:["a1"]}},dream:{N:{tab:["n1"]},V:{tab:"v26"}},dress:{N:{tab:["n2"]},V:{tab:"v2"}},dressing:{N:{tab:["n1"]}},drift:{N:{tab:["n1"]},V:{tab:"v1"}},drill:{N:{tab:["n1"]},V:{tab:"v1"}},drink:{N:{tab:["n1"]},V:{tab:"v65"}},drive:{N:{tab:["n1"]},V:{tab:"v42"}},driver:{N:{tab:["n1"]}},drop:{N:{tab:["n1"]},V:{tab:"v12"}},drown:{V:{tab:"v1"}},drug:{N:{tab:["n1"]},V:{tab:"v7"}},drum:{N:{tab:["n1"]}},drunk:{A:{tab:["a3"]}},dry:{A:{tab:["a4"]},V:{tab:"v4"}},dual:{A:{tab:["a1"]}},duck:{N:{tab:["n1"]}},due:{A:{tab:["a1"]}},duke:{N:{g:"m",tab:["n85"]}},dull:{A:{tab:["a3"]}},duly:{Adv:{tab:["b1"]}},dump:{V:{tab:"v1"}},duration:{N:{tab:["n1"]}},during:{P:{tab:["pp"]}},dust:{N:{tab:["n5"]}},duty:{N:{tab:["n3"]}},dwelling:{N:{tab:["n1"]}},dynamic:{A:{tab:["a1"]}},eager:{A:{tab:["a1"]}},eagle:{N:{tab:["n1"]}},ear:{N:{tab:["n1"]}},earl:{N:{tab:["n1"]}},early:{A:{tab:["a4"]},Adv:{tab:["b1"]}},earn:{V:{tab:"v1"}},earth:{N:{tab:["n5"]}},ease:{N:{tab:["n5"]},V:{tab:"v3"}},easily:{Adv:{tab:["b1"]}},east:{N:{tab:["n5"]}},eastern:{A:{tab:["a1"]}},easy:{A:{tab:["a4"]},Adv:{tab:["b1"]}},eat:{V:{tab:"v70"}},echo:{N:{tab:["n2"]},V:{tab:"v172"}},economic:{A:{tab:["a1"]}},economically:{Adv:{tab:["b1"]}},economics:{N:{tab:["n5"]}},economist:{N:{tab:["n1"]}},economy:{N:{tab:["n3"]}},edge:{N:{tab:["n1"]}},edit:{V:{tab:"v1"}},edition:{N:{tab:["n1"]}},editor:{N:{tab:["n1"]}},educate:{V:{tab:"v3"}},education:{N:{tab:["n5"]}},educational:{A:{tab:["a1"]}},effect:{N:{tab:["n1"]},V:{tab:"v1"}},effective:{A:{tab:["a1"]}},effectively:{Adv:{tab:["b1"]}},effectiveness:{N:{tab:["n5"]}},efficiency:{N:{tab:["n5"]}},efficient:{A:{tab:["a1"]}},efficiently:{Adv:{tab:["b1"]}},effort:{N:{tab:["n1"]}},egg:{N:{tab:["n1"]}},ego:{N:{tab:["n1"]}},either:{Adv:{tab:["b1"]}},elaborate:{A:{tab:["a1"]}},elbow:{N:{tab:["n1"]}},elder:{N:{tab:["n1"]}},elderly:{A:{tab:["a1"]}},elect:{V:{tab:"v1"}},election:{N:{tab:["n1"]}},electoral:{A:{tab:["a1"]}},electorate:{N:{tab:["n1"]}},electric:{A:{tab:["a1"]}},electrical:{A:{tab:["a1"]}},electricity:{N:{tab:["n5"]}},electron:{N:{tab:["n1"]}},electronic:{A:{tab:["a1"]}},electronics:{N:{tab:["n5"]}},elegant:{A:{tab:["a1"]}},element:{N:{tab:["n1"]}},elephant:{N:{tab:["n1"]}},eligible:{A:{tab:["a1"]}},eliminate:{V:{tab:"v3"}},elite:{N:{tab:["n1"]}},else:{Adv:{tab:["b1"]}},elsewhere:{Adv:{tab:["b1"]}},embark:{V:{tab:"v1"}},embarrassing:{A:{tab:["a1"]}},embarrassment:{N:{tab:["n1"]}},embassy:{N:{tab:["n3"]}},embody:{V:{tab:"v4"}},embrace:{V:{tab:"v3"}},embryo:{N:{tab:["n1"]}},emerge:{V:{tab:"v3"}},emergence:{N:{tab:["n5"]}},emergency:{N:{tab:["n3"]}},emission:{N:{tab:["n1"]}},emotion:{N:{tab:["n1"]}},emotional:{A:{tab:["a1"]}},emperor:{N:{g:"m",tab:["n85"]}},emphasis:{N:{tab:["n8"]}},emphasize:{V:{tab:"v3"}},empire:{N:{tab:["n1"]}},empirical:{A:{tab:["a1"]}},employ:{V:{tab:"v1"}},employee:{N:{tab:["n1"]}},employer:{N:{tab:["n1"]}},employment:{N:{tab:["n5"]}},empty:{A:{tab:["a4"]},V:{tab:"v4"}},enable:{V:{tab:"v3"}},enclose:{V:{tab:"v3"}},encompass:{V:{tab:"v2"}},encounter:{N:{tab:["n1"]},V:{tab:"v1"}},encourage:{V:{tab:"v3"}},encouragement:{N:{tab:["n1"]}},end:{N:{tab:["n1"]},V:{tab:"v1"}},ending:{N:{tab:["n1"]}},endless:{A:{tab:["a1"]}},endorse:{V:{tab:"v3"}},endure:{V:{tab:"v3"}},enemy:{N:{tab:["n3"]}},energy:{N:{tab:["n3"]}},enforce:{V:{tab:"v3"}},enforcement:{N:{tab:["n5"]}},engage:{V:{tab:"v3"}},engagement:{N:{tab:["n1"]}},engine:{N:{tab:["n1"]}},engineer:{N:{tab:["n1"]}},engineering:{N:{tab:["n5"]}},enhance:{V:{tab:"v3"}},enjoy:{V:{tab:"v1"}},enjoyable:{A:{tab:["a1"]}},enjoyment:{N:{tab:["n1"]}},enormous:{A:{tab:["a1"]}},enormously:{Adv:{tab:["b1"]}},enough:{Adv:{tab:["b1"]}},enquire:{V:{tab:"v3"}},enquiry:{N:{tab:["n3"]}},ensure:{V:{tab:"v3"}},entail:{V:{tab:"v1"}},enter:{V:{tab:"v1"}},enterprise:{N:{tab:["n1"]}},entertain:{V:{tab:"v1"}},entertainment:{N:{tab:["n1"]}},enthusiasm:{N:{tab:["n5"]}},enthusiast:{N:{tab:["n1"]}},enthusiastic:{A:{tab:["a1"]}},entire:{A:{tab:["a1"]}},entirely:{Adv:{tab:["b1"]}},entitle:{V:{tab:"v3"}},entitlement:{N:{tab:["n1"]}},entity:{N:{tab:["n3"]}},entrance:{N:{tab:["n1"]}},entry:{N:{tab:["n3"]}},envelope:{N:{tab:["n1"]}},environment:{N:{tab:["n1"]}},environmental:{A:{tab:["a1"]}},envisage:{V:{tab:"v3"}},enzyme:{N:{tab:["n1"]}},episode:{N:{tab:["n1"]}},equal:{A:{tab:["a1"]},V:{tab:"v9"}},equality:{N:{tab:["n5"]}},equally:{Adv:{tab:["b1"]}},equation:{N:{tab:["n1"]}},equilibrium:{N:{tab:["n5"]}},equip:{V:{tab:"v12"}},equipment:{N:{tab:["n5"]}},equity:{N:{tab:["n3"]}},equivalent:{A:{tab:["a1"]},N:{tab:["n1"]}},era:{N:{tab:["n1"]}},erect:{V:{tab:"v1"}},erosion:{N:{tab:["n5"]}},error:{N:{tab:["n1"]}},escape:{N:{tab:["n1"]},V:{tab:"v3"}},especially:{Adv:{tab:["b1"]}},essay:{N:{tab:["n1"]}},essence:{N:{tab:["n1"]}},essential:{A:{tab:["a1"]}},essentially:{Adv:{tab:["b1"]}},establish:{V:{tab:"v2"}},establishment:{N:{tab:["n1"]}},estate:{N:{tab:["n1"]}},estimate:{N:{tab:["n1"]},V:{tab:"v3"}},eternal:{A:{tab:["a1"]}},ethical:{A:{tab:["a1"]}},ethics:{N:{tab:["n5"]}},ethnic:{A:{tab:["a1"]}},evaluate:{V:{tab:"v3"}},evaluation:{N:{tab:["n1"]}},even:{Adv:{tab:["b1"]}},evening:{N:{tab:["n1"]}},event:{N:{tab:["n1"]}},eventual:{A:{tab:["a1"]}},eventually:{Adv:{tab:["b1"]}},ever:{Adv:{tab:["b1"]}},everybody:{Pro:{tab:["pn5"]}},everyday:{A:{tab:["a1"]}},everyone:{Pro:{tab:["pn5"]}},everything:{Pro:{tab:["pn5"]}},everywhere:{Adv:{tab:["b1"]}},evidence:{N:{tab:["n5"]}},evident:{A:{tab:["a1"]}},evidently:{Adv:{tab:["b1"]}},evil:{A:{tab:["a1"]},N:{tab:["n1"]}},evoke:{V:{tab:"v3"}},evolution:{N:{tab:["n1"]}},evolutionary:{A:{tab:["a1"]}},evolve:{V:{tab:"v3"}},exact:{A:{tab:["a1"]}},exactly:{Adv:{tab:["b1"]}},exaggerate:{V:{tab:"v3"}},exam:{N:{tab:["n1"]}},examination:{N:{tab:["n1"]}},examine:{V:{tab:"v3"}},example:{N:{tab:["n1"]}},excavation:{N:{tab:["n1"]}},exceed:{V:{tab:"v1"}},excellent:{A:{tab:["a1"]}},except:{P:{tab:["pp"]}},exception:{N:{tab:["n1"]}},exceptional:{A:{tab:["a1"]}},exceptionally:{Adv:{tab:["b1"]}},excess:{A:{tab:["a1"]},N:{tab:["n2"]}},excessive:{A:{tab:["a1"]}},exchange:{N:{tab:["n1"]},V:{tab:"v3"}},excite:{V:{tab:"v3"}},excitement:{N:{tab:["n1"]}},exciting:{A:{tab:["a1"]}},exclaim:{V:{tab:"v1"}},exclude:{V:{tab:"v3"}},exclusion:{N:{tab:["n1"]}},exclusive:{A:{tab:["a1"]}},exclusively:{Adv:{tab:["b1"]}},excuse:{N:{tab:["n1"]},V:{tab:"v3"}},execute:{V:{tab:"v3"}},execution:{N:{tab:["n1"]}},executive:{A:{tab:["a1"]},N:{tab:["n1"]}},exemption:{N:{tab:["n1"]}},exercise:{N:{tab:["n1"]},V:{tab:"v3"}},exert:{V:{tab:"v1"}},exhaust:{V:{tab:"v1"}},exhibit:{V:{tab:"v1"}},exhibition:{N:{tab:["n1"]}},exile:{N:{tab:["n1"]}},exist:{V:{tab:"v1"}},existence:{N:{tab:["n1"]}},exit:{N:{tab:["n1"]}},exotic:{A:{tab:["a1"]}},expand:{V:{tab:"v1"}},expansion:{N:{tab:["n5"]}},expect:{V:{tab:"v1"}},expectation:{N:{tab:["n1"]}},expected:{A:{tab:["a1"]}},expedition:{N:{tab:["n1"]}},expel:{V:{tab:"v9"}},expenditure:{N:{tab:["n1"]}},expense:{N:{tab:["n1"]}},expensive:{A:{tab:["a1"]}},experience:{N:{tab:["n1"]},V:{tab:"v3"}},experienced:{A:{tab:["a1"]}},experiment:{N:{tab:["n1"]},V:{tab:"v1"}},experimental:{A:{tab:["a1"]}},expert:{A:{tab:["a1"]},N:{tab:["n1"]}},expertise:{N:{tab:["n5"]}},explain:{V:{tab:"v1"}},explanation:{N:{tab:["n1"]}},explicit:{A:{tab:["a1"]}},explicitly:{Adv:{tab:["b1"]}},explode:{V:{tab:"v3"}},exploit:{V:{tab:"v1"}},exploitation:{N:{tab:["n5"]}},exploration:{N:{tab:["n1"]}},explore:{V:{tab:"v3"}},explosion:{N:{tab:["n1"]}},export:{N:{tab:["n1"]},V:{tab:"v1"}},expose:{V:{tab:"v3"}},exposure:{N:{tab:["n1"]}},express:{A:{tab:["a1"]},V:{tab:"v2"}},expression:{N:{tab:["n1"]}},extend:{V:{tab:"v1"}},extension:{N:{tab:["n1"]}},extensive:{A:{tab:["a1"]}},extensively:{Adv:{tab:["b1"]}},extent:{N:{tab:["n5"]}},external:{A:{tab:["a1"]}},extra:{A:{tab:["a1"]}},extract:{N:{tab:["n1"]},V:{tab:"v1"}},extraordinary:{A:{tab:["a1"]}},extreme:{A:{tab:["a1"]},N:{tab:["n1"]}},extremely:{Adv:{tab:["b1"]}},eye:{N:{tab:["n1"]}},eyebrow:{N:{tab:["n1"]}},fabric:{N:{tab:["n1"]}},face:{N:{tab:["n1"]},V:{tab:"v3"}},facilitate:{V:{tab:"v3"}},facility:{N:{tab:["n3"]}},fact:{N:{tab:["n1"]}},faction:{N:{tab:["n1"]}},factor:{N:{tab:["n1"]}},factory:{N:{tab:["n3"]}},faculty:{N:{tab:["n3"]}},fade:{V:{tab:"v3"}},fail:{V:{tab:"v1"}},failure:{N:{tab:["n1"]}},faint:{A:{tab:["a3"]}},fair:{A:{tab:["a3"]},Adv:{tab:["b1"]},N:{tab:["n1"]}},fairly:{Adv:{tab:["b1"]}},fairy:{N:{tab:["n3"]}},faith:{N:{tab:["n1"]}},faithful:{A:{tab:["a1"]}},fall:{N:{tab:["n1"]},V:{tab:"v76"}},false:{A:{tab:["a1"]}},fame:{N:{tab:["n5"]}},familiar:{A:{tab:["a1"]}},family:{N:{tab:["n3"]}},famous:{A:{tab:["a1"]}},fan:{N:{tab:["n1"]},V:{tab:"v11"}},fancy:{V:{tab:"v4"}},fantastic:{A:{tab:["a1"]}},fantasy:{N:{tab:["n3"]}},far:{A:{tab:["a17"]},Adv:{tab:["b4"]}},fare:{N:{tab:["n1"]}},farm:{N:{tab:["n1"]}},farmer:{N:{tab:["n1"]}},fascinate:{V:{tab:"v3"}},fascinating:{A:{tab:["a1"]}},fashion:{N:{tab:["n1"]}},fashionable:{A:{tab:["a1"]}},fast:{A:{tab:["a3"]},Adv:{tab:["b1"]}},fat:{A:{tab:["a11"]},N:{tab:["n1"]}},fatal:{A:{tab:["a1"]}},fate:{N:{tab:["n1"]}},father:{N:{g:"m",tab:["n85"]}},fault:{N:{tab:["n1"]}},favour:{N:{tab:["n1"]},V:{tab:"v1"}},favourable:{A:{tab:["a1"]}},favourite:{A:{tab:["a1"]},N:{tab:["n1"]}},fear:{N:{tab:["n1"]},V:{tab:"v1"}},feasible:{A:{tab:["a1"]}},feast:{N:{tab:["n1"]}},feather:{N:{tab:["n1"]}},feature:{N:{tab:["n1"]},V:{tab:"v3"}},federal:{A:{tab:["a1"]}},federation:{N:{tab:["n1"]}},fee:{N:{tab:["n1"]}},feed:{N:{tab:["n1"]},V:{tab:"v22"}},feedback:{N:{tab:["n5"]}},feel:{N:{tab:["n5"]},V:{tab:"v129"}},feeling:{N:{tab:["n1"]}},fellow:{N:{tab:["n1"]}},female:{A:{tab:["a1"]},N:{tab:["n1"]}},feminine:{A:{tab:["a1"]}},feminist:{N:{tab:["n1"]}},fence:{N:{tab:["n1"]}},ferry:{N:{tab:["n3"]}},fertility:{N:{tab:["n5"]}},festival:{N:{tab:["n1"]}},fetch:{V:{tab:"v2"}},fever:{N:{tab:["n1"]}},fibre:{N:{tab:["n1"]}},fiction:{N:{tab:["n1"]}},field:{N:{tab:["n1"]}},fierce:{A:{tab:["a2"]}},fiercely:{Adv:{tab:["b1"]}},fig:{N:{tab:["n1"]}},fight:{N:{tab:["n1"]},V:{tab:"v67"}},fighter:{N:{tab:["n1"]}},figure:{N:{tab:["n1"]},V:{tab:"v3"}},file:{N:{tab:["n1"]},V:{tab:"v3"}},fill:{V:{tab:"v1"}},film:{N:{tab:["n1"]},V:{tab:"v1"}},filter:{N:{tab:["n1"]},V:{tab:"v1"}},final:{A:{tab:["a1"]},N:{tab:["n1"]}},finally:{Adv:{tab:["b1"]}},finance:{N:{tab:["n1"]},V:{tab:"v3"}},financial:{A:{tab:["a1"]}},financially:{Adv:{tab:["b1"]}},find:{V:{tab:"v25"}},finding:{N:{tab:["n1"]}},fine:{A:{tab:["a2"]},N:{tab:["n1"]}},finger:{N:{tab:["n1"]}},finish:{N:{tab:["n2"]},V:{tab:"v2"}},fire:{N:{tab:["n1"]},V:{tab:"v3"}},firm:{A:{tab:["a3"]},N:{tab:["n1"]}},firmly:{Adv:{tab:["b1"]}},firstly:{Adv:{tab:["b1"]}},fiscal:{A:{tab:["a1"]}},fish:{N:{tab:["n2"]},V:{tab:"v2"}},fisherman:{N:{tab:["n7"]}},fishing:{N:{tab:["n5"]}},fist:{N:{tab:["n1"]}},fit:{A:{tab:["a11"]},N:{tab:["n1"]},V:{tab:"v14"}},fitness:{N:{tab:["n5"]}},fitting:{N:{tab:["n1"]}},fix:{V:{tab:"v2"}},fixed:{A:{tab:["a1"]}},fixture:{N:{tab:["n1"]}},flag:{N:{tab:["n1"]}},flame:{N:{tab:["n1"]}},flash:{N:{tab:["n2"]},V:{tab:"v2"}},flat:{A:{tab:["a11"]},N:{tab:["n1"]}},flavour:{N:{tab:["n1"]}},flee:{V:{tab:"v73"}},fleet:{N:{tab:["n1"]}},flesh:{N:{tab:["n5"]}},flexibility:{N:{tab:["n5"]}},flexible:{A:{tab:["a1"]}},flick:{V:{tab:"v1"}},flight:{N:{tab:["n1"]}},fling:{V:{tab:"v21"}},float:{V:{tab:"v1"}},flock:{N:{tab:["n1"]}},flood:{N:{tab:["n1"]},V:{tab:"v1"}},floor:{N:{tab:["n1"]}},flour:{N:{tab:["n5"]}},flourish:{V:{tab:"v2"}},flow:{N:{tab:["n5"]},V:{tab:"v1"}},flower:{N:{tab:["n1"]}},fluctuation:{N:{tab:["n1"]}},fluid:{N:{tab:["n1"]}},flush:{V:{tab:"v2"}},fly:{N:{tab:["n3"]},V:{tab:"v80"}},focus:{N:{tab:["n2"]},V:{tab:"v172"}},fog:{N:{tab:["n1"]}},fold:{N:{tab:["n1"]},V:{tab:"v1"}},folk:{N:{tab:["n1"]}},follow:{V:{tab:"v1"}},follower:{N:{tab:["n1"]}},following:{A:{tab:["a1"]}},fond:{A:{tab:["a3"]}},food:{N:{tab:["n1"]}},fool:{N:{tab:["n1"]},V:{tab:"v1"}},foolish:{A:{tab:["a1"]}},foot:{N:{tab:["n19"]}},football:{N:{tab:["n1"]}},footstep:{N:{tab:["n1"]}},for:{P:{tab:["pp"]}},forbid:{V:{tab:"v118"}},force:{N:{tab:["n1"]},V:{tab:"v3"}},forecast:{N:{tab:["n1"]},V:{tab:"v58"}},forehead:{N:{tab:["n1"]}},foreign:{A:{tab:["a1"]}},foreigner:{N:{tab:["n1"]}},forest:{N:{tab:["n1"]}},forestry:{N:{tab:["n5"]}},forever:{Adv:{tab:["b1"]}},forge:{V:{tab:"v3"}},forget:{V:{tab:"v125"}},forgive:{V:{tab:"v43"}},fork:{N:{tab:["n1"]}},form:{N:{tab:["n1"]},V:{tab:"v1"}},formal:{A:{tab:["a1"]}},formally:{Adv:{tab:["b1"]}},format:{N:{tab:["n1"]}},formation:{N:{tab:["n1"]}},formerly:{Adv:{tab:["b1"]}},formidable:{A:{tab:["a1"]}},formula:{N:{tab:["n1"]}},formulate:{V:{tab:"v3"}},formulation:{N:{tab:["n1"]}},forth:{Adv:{tab:["b1"]}},forthcoming:{A:{tab:["a1"]}},fortnight:{N:{tab:["n1"]}},fortunate:{A:{tab:["a1"]}},fortunately:{Adv:{tab:["b1"]}},fortune:{N:{tab:["n1"]}},forum:{N:{tab:["n1"]}},forward:{A:{tab:["a1"]},Adv:{tab:["b1"]}},forwards:{Adv:{tab:["b1"]}},fossil:{N:{tab:["n1"]}},foster:{V:{tab:"v1"}},found:{V:{tab:"v1"}},foundation:{N:{tab:["n1"]}},founder:{N:{tab:["n1"]}},fountain:{N:{tab:["n1"]}},fox:{N:{tab:["n2"]}},fraction:{N:{tab:["n1"]}},fragile:{A:{tab:["a1"]}},fragment:{N:{tab:["n1"]}},frame:{N:{tab:["n1"]},V:{tab:"v3"}},framework:{N:{tab:["n1"]}},franchise:{N:{tab:["n1"]}},frankly:{Adv:{tab:["b1"]}},fraud:{N:{tab:["n1"]}},free:{A:{tab:["a2"]},V:{tab:"v16"}},freedom:{N:{tab:["n1"]}},freely:{Adv:{tab:["b1"]}},freeze:{V:{tab:"v49"}},freight:{N:{tab:["n5"]}},frequency:{N:{tab:["n3"]}},frequent:{A:{tab:["a1"]}},frequently:{Adv:{tab:["b1"]}},fresh:{A:{tab:["a3"]}},fridge:{N:{tab:["n1"]}},friend:{N:{tab:["n1"]}},friendly:{A:{tab:["a4"]}},friendship:{N:{tab:["n1"]}},frighten:{V:{tab:"v1"}},frightened:{A:{tab:["a1"]}},fringe:{N:{tab:["n1"]}},frog:{N:{tab:["n1"]}},from:{P:{tab:["pp"]}},front:{N:{tab:["n1"]}},frontier:{N:{tab:["n1"]}},frown:{V:{tab:"v1"}},fruit:{N:{tab:["n1"]}},frustrate:{V:{tab:"v3"}},frustration:{N:{tab:["n1"]}},fuck:{V:{tab:"v1"}},fucking:{A:{tab:["a1"]}},fuel:{N:{tab:["n1"]}},fulfill:{V:{tab:"v181"}},full:{A:{tab:["a3"]}},"full-time":{A:{tab:["a1"]}},fully:{Adv:{tab:["b1"]}},fun:{N:{tab:["n5"]}},function:{N:{tab:["n1"]},V:{tab:"v1"}},functional:{A:{tab:["a1"]}},fund:{N:{tab:["n1"]},V:{tab:"v1"}},fundamental:{A:{tab:["a1"]}},fundamentally:{Adv:{tab:["b1"]}},funeral:{N:{tab:["n1"]}},funny:{A:{tab:["a4"]}},fur:{N:{tab:["n1"]}},furious:{A:{tab:["a1"]}},furnish:{V:{tab:"v2"}},furniture:{N:{tab:["n5"]}},furthermore:{Adv:{tab:["b1"]}},fury:{N:{tab:["n3"]}},fusion:{N:{tab:["n1"]}},fuss:{N:{tab:["n2"]}},future:{A:{tab:["a1"]},N:{tab:["n1"]}},gain:{N:{tab:["n1"]},V:{tab:"v1"}},galaxy:{N:{tab:["n3"]}},gall:{N:{tab:["n1"]}},gallery:{N:{tab:["n3"]}},gallon:{N:{tab:["n1"]}},game:{N:{tab:["n1"]}},gang:{N:{tab:["n1"]}},gap:{N:{tab:["n1"]}},garage:{N:{tab:["n1"]}},garden:{N:{tab:["n1"]}},gardener:{N:{tab:["n1"]}},garlic:{N:{tab:["n5"]}},garment:{N:{tab:["n1"]}},gas:{N:{tab:["n2"]}},gasp:{V:{tab:"v1"}},gastric:{A:{tab:["a1"]}},gate:{N:{tab:["n1"]}},gather:{V:{tab:"v1"}},gathering:{N:{tab:["n1"]}},gay:{A:{tab:["a3"]}},gaze:{N:{tab:["n5"]},V:{tab:"v3"}},gear:{N:{tab:["n1"]}},gender:{N:{tab:["n1"]}},gene:{N:{tab:["n1"]}},general:{A:{tab:["a1"]},N:{tab:["n1"]}},generally:{Adv:{tab:["b1"]}},generate:{V:{tab:"v3"}},generation:{N:{tab:["n1"]}},generous:{A:{tab:["a1"]}},genetic:{A:{tab:["a1"]}},genius:{N:{tab:["n2"]}},gentle:{A:{tab:["a2"]}},gentleman:{N:{tab:["n7"]}},gently:{Adv:{tab:["b1"]}},genuine:{A:{tab:["a1"]}},genuinely:{Adv:{tab:["b1"]}},geographical:{A:{tab:["a1"]}},geography:{N:{tab:["n5"]}},geological:{A:{tab:["a1"]}},gesture:{N:{tab:["n1"]}},get:{V:{tab:"v125"}},ghost:{N:{tab:["n1"]}},giant:{N:{tab:["n1"]}},gift:{N:{tab:["n1"]}},gig:{N:{tab:["n1"]}},girl:{N:{g:"f",tab:["n87"]}},girlfriend:{N:{tab:["n1"]}},give:{V:{tab:"v43"}},glad:{A:{tab:["a6"]}},glance:{N:{tab:["n1"]},V:{tab:"v3"}},glare:{V:{tab:"v3"}},glass:{N:{tab:["n2"]}},glimpse:{N:{tab:["n1"]}},global:{A:{tab:["a1"]}},gloom:{N:{tab:["n1"]}},glorious:{A:{tab:["a1"]}},glory:{N:{tab:["n3"]}},glove:{N:{tab:["n1"]}},glow:{N:{tab:["n5"]},V:{tab:"v1"}},go:{N:{tab:["n2"]},V:{tab:"v122"}},goal:{N:{tab:["n1"]}},goalkeeper:{N:{tab:["n1"]}},goat:{N:{tab:["n1"]}},god:{N:{g:"m",tab:["n85"]}},gold:{N:{tab:["n5"]}},golden:{A:{tab:["a1"]}},golf:{N:{tab:["n5"]}},good:{A:{tab:["a15"]},N:{tab:["n5"]}},goodness:{N:{tab:["n5"]}},gospel:{N:{tab:["n1"]}},gossip:{N:{tab:["n1"]}},govern:{V:{tab:"v1"}},government:{N:{tab:["n1"]}},governor:{N:{tab:["n1"]}},gown:{N:{tab:["n1"]}},grab:{V:{tab:"v5"}},grace:{N:{tab:["n1"]}},grade:{N:{tab:["n1"]}},gradual:{A:{tab:["a1"]}},gradually:{Adv:{tab:["b1"]}},graduate:{N:{tab:["n1"]},V:{tab:"v3"}},grain:{N:{tab:["n1"]}},grammar:{N:{tab:["n1"]}},grammatical:{A:{tab:["a1"]}},grand:{A:{tab:["a3"]}},grandfather:{N:{g:"m",tab:["n85"]}},grandmother:{N:{g:"f",tab:["n87"]}},grant:{N:{tab:["n1"]},V:{tab:"v1"}},graph:{N:{tab:["n1"]}},graphics:{N:{tab:["n5"]}},grasp:{N:{tab:["n1"]},V:{tab:"v1"}},grass:{N:{tab:["n2"]}},grateful:{A:{tab:["a1"]}},grave:{A:{tab:["a2"]},N:{tab:["n1"]}},gravel:{N:{tab:["n5"]}},gravity:{N:{tab:["n5"]}},great:{A:{tab:["a3"]}},greatly:{Adv:{tab:["b1"]}},green:{A:{tab:["a3"]},N:{tab:["n1"]}},greenhouse:{N:{tab:["n1"]}},greet:{V:{tab:"v1"}},greeting:{N:{tab:["n1"]}},grey:{A:{tab:["a3"]}},grid:{N:{tab:["n1"]}},grief:{N:{tab:["n1"]}},grim:{A:{tab:["a9"]}},grin:{N:{tab:["n1"]},V:{tab:"v11"}},grind:{V:{tab:"v25"}},grip:{N:{tab:["n1"]},V:{tab:"v12"}},groan:{V:{tab:"v1"}},gross:{A:{tab:["a1"]}},ground:{N:{tab:["n1"]}},group:{N:{tab:["n1"]},V:{tab:"v1"}},grow:{V:{tab:"v27"}},growth:{N:{tab:["n1"]}},guarantee:{N:{tab:["n1"]},V:{tab:"v16"}},guard:{N:{tab:["n1"]},V:{tab:"v1"}},guardian:{N:{tab:["n1"]}},guerrilla:{N:{tab:["n1"]}},guess:{N:{tab:["n2"]},V:{tab:"v2"}},guest:{N:{tab:["n1"]}},guidance:{N:{tab:["n5"]}},guide:{N:{tab:["n1"]},V:{tab:"v3"}},guideline:{N:{tab:["n1"]}},guild:{N:{tab:["n1"]}},guilt:{N:{tab:["n5"]}},guilty:{A:{tab:["a4"]}},guitar:{N:{tab:["n1"]}},gun:{N:{tab:["n1"]}},gut:{N:{tab:["n1"]}},guy:{N:{tab:["n1"]}},habit:{N:{tab:["n1"]}},habitat:{N:{tab:["n1"]}},hair:{N:{tab:["n1"]}},half:{Adv:{tab:["b1"]},N:{tab:["n9"]}},hall:{N:{tab:["n1"]}},halt:{N:{tab:["n1"]},V:{tab:"v1"}},ham:{N:{tab:["n1"]}},hammer:{N:{tab:["n1"]}},hand:{N:{tab:["n1"]},V:{tab:"v1"}},handful:{N:{tab:["n1"]}},handicap:{N:{tab:["n1"]},V:{tab:"v12"}},handle:{N:{tab:["n1"]},V:{tab:"v3"}},handsome:{A:{tab:["a1"]}},handy:{A:{tab:["a4"]}},hang:{V:{tab:"v160"}},happen:{V:{tab:"v1"}},happily:{Adv:{tab:["b1"]}},happiness:{N:{tab:["n5"]}},happy:{A:{tab:["a4"]}},harbour:{N:{tab:["n1"]}},hard:{A:{tab:["a3"]},Adv:{tab:["b1"]}},hardly:{Adv:{tab:["b1"]}},hardship:{N:{tab:["n1"]}},hardware:{N:{tab:["n5"]}},harm:{N:{tab:["n5"]},V:{tab:"v1"}},harmful:{A:{tab:["a1"]}},harmony:{N:{tab:["n3"]}},harsh:{A:{tab:["a3"]}},harvest:{N:{tab:["n1"]}},hastily:{Adv:{tab:["b1"]}},hat:{N:{tab:["n1"]}},hate:{V:{tab:"v3"}},hatred:{N:{tab:["n1"]}},haul:{V:{tab:"v1"}},haunt:{V:{tab:"v1"}},have:{V:{tab:"v83"}},hay:{N:{tab:["n5"]}},hazard:{N:{tab:["n1"]}},head:{N:{tab:["n1"]},V:{tab:"v1"}},heading:{N:{tab:["n1"]}},headline:{N:{tab:["n1"]}},headmaster:{N:{tab:["n1"]}},headquarters:{N:{tab:["n6"]}},heal:{V:{tab:"v1"}},health:{N:{tab:["n5"]}},healthy:{A:{tab:["a4"]}},heap:{N:{tab:["n1"]}},hear:{V:{tab:"v16"}},hearing:{N:{tab:["n1"]}},heart:{N:{tab:["n1"]}},heat:{N:{tab:["n1"]},V:{tab:"v1"}},heating:{N:{tab:["n5"]}},heaven:{N:{tab:["n1"]}},heavily:{Adv:{tab:["b1"]}},heavy:{A:{tab:["a4"]}},hectare:{N:{tab:["n1"]}},hedge:{N:{tab:["n1"]}},heel:{N:{tab:["n1"]}},height:{N:{tab:["n1"]}},heir:{N:{g:"m",hAn:1,tab:["n85"]}},helicopter:{N:{tab:["n1"]}},hell:{N:{tab:["n1"]}},helmet:{N:{tab:["n1"]}},help:{N:{tab:["n1"]},V:{tab:"v1"}},helpful:{A:{tab:["a1"]}},helpless:{A:{tab:["a1"]}},hemisphere:{N:{tab:["n1"]}},hen:{N:{tab:["n1"]}},hence:{Adv:{tab:["b1"]}},herb:{N:{hAn:1,tab:["n1"]}},herd:{N:{tab:["n1"]}},here:{Adv:{tab:["b1"]}},heritage:{N:{tab:["n1"]}},hero:{N:{g:"m",tab:["n86"]}},heroin:{N:{tab:["n5"]}},hesitate:{V:{tab:"v3"}},hide:{V:{tab:"v146"}},hierarchy:{N:{tab:["n3"]}},high:{A:{tab:["a3"]},Adv:{tab:["b1"]}},highlight:{N:{tab:["n1"]},V:{tab:"v1"}},highly:{Adv:{tab:["b1"]}},highway:{N:{tab:["n1"]}},hill:{N:{tab:["n1"]}},hint:{N:{tab:["n1"]},V:{tab:"v1"}},hip:{N:{tab:["n1"]}},hire:{N:{tab:["n5"]},V:{tab:"v3"}},historian:{N:{tab:["n1"]}},historic:{A:{tab:["a1"]}},historical:{A:{tab:["a1"]}},historically:{Adv:{tab:["b1"]}},history:{N:{tab:["n3"]}},hit:{N:{tab:["n1"]},V:{tab:"v17"}},hitherto:{Adv:{tab:["b1"]}},hobby:{N:{tab:["n3"]}},hold:{N:{tab:["n1"]},V:{tab:"v34"}},holder:{N:{tab:["n1"]}},holding:{N:{tab:["n1"]}},hole:{N:{tab:["n1"]}},holiday:{N:{tab:["n1"]}},holly:{N:{tab:["n5"]}},holy:{A:{tab:["a4"]}},home:{Adv:{tab:["b1"]},N:{tab:["n1"]}},homeless:{A:{tab:["a1"]}},homework:{N:{tab:["n5"]}},homosexual:{A:{tab:["a1"]}},honest:{A:{hAn:1,tab:["a1"]}},honestly:{Adv:{tab:["b1"]}},honey:{N:{tab:["n1"]}},honour:{N:{hAn:1,tab:["n1"]},V:{tab:"v1"}},honourable:{A:{hAn:1,tab:["a1"]}},hook:{N:{tab:["n1"]},V:{tab:"v1"}},hope:{N:{tab:["n1"]},V:{tab:"v3"}},hopefully:{Adv:{tab:["b1"]}},horizon:{N:{tab:["n1"]}},horizontal:{A:{tab:["a1"]}},horn:{N:{tab:["n1"]}},horrible:{A:{tab:["a1"]}},horror:{N:{tab:["n1"]}},horse:{N:{tab:["n1"]}},hospital:{N:{tab:["n1"]}},hospitality:{N:{tab:["n5"]}},host:{N:{g:"m",tab:["n85"]},V:{tab:"v1"}},hostage:{N:{tab:["n1"]}},hostile:{A:{tab:["a1"]}},hostility:{N:{tab:["n3"]}},hot:{A:{tab:["a11"]}},hotel:{N:{tab:["n1"]}},hour:{N:{hAn:1,tab:["n1"]}},house:{N:{tab:["n1"]},V:{tab:"v3"}},household:{N:{tab:["n1"]}},housewife:{N:{tab:["n10"]}},housing:{N:{tab:["n5"]}},hover:{V:{tab:"v1"}},how:{Adv:{tab:["b1"]}},however:{Adv:{tab:["b1"]}},hug:{V:{tab:"v7"}},huge:{A:{tab:["a1"]}},human:{A:{tab:["a1"]},N:{tab:["n1"]}},humanity:{N:{tab:["n5"]}},humble:{A:{tab:["a2"]}},humour:{N:{tab:["n1"]}},hunger:{N:{tab:["n5"]}},hungry:{A:{tab:["a4"]}},hunt:{N:{tab:["n1"]},V:{tab:"v1"}},hunter:{N:{tab:["n1"]}},hunting:{N:{tab:["n5"]}},hurry:{N:{tab:["n3"]},V:{tab:"v4"}},hurt:{V:{tab:"v18"}},husband:{N:{g:"m",tab:["n85"]}},hut:{N:{tab:["n1"]}},hydrogen:{N:{tab:["n5"]}},hypothesis:{N:{tab:["n8"]}},ice:{N:{tab:["n1"]}},idea:{N:{tab:["n1"]}},ideal:{A:{tab:["a1"]},N:{tab:["n1"]}},ideally:{Adv:{tab:["b1"]}},identical:{A:{tab:["a1"]}},identification:{N:{tab:["n5"]}},identify:{V:{tab:"v4"}},identity:{N:{tab:["n3"]}},ideological:{A:{tab:["a1"]}},ideology:{N:{tab:["n3"]}},ignorance:{N:{tab:["n5"]}},ignore:{V:{tab:"v3"}},ill:{A:{tab:["a1"]},Adv:{tab:["b1"]}},illegal:{A:{tab:["a1"]}},illness:{N:{tab:["n2"]}},illuminate:{V:{tab:"v3"}},illusion:{N:{tab:["n1"]}},illustrate:{V:{tab:"v3"}},illustration:{N:{tab:["n1"]}},image:{N:{tab:["n1"]}},imagination:{N:{tab:["n1"]}},imaginative:{A:{tab:["a1"]}},imagine:{V:{tab:"v3"}},immediate:{A:{tab:["a1"]}},immediately:{Adv:{tab:["b1"]}},immense:{A:{tab:["a1"]}},immigrant:{N:{tab:["n1"]}},immigration:{N:{tab:["n1"]}},imminent:{A:{tab:["a1"]}},immune:{A:{tab:["a1"]}},impact:{N:{tab:["n1"]}},imperial:{A:{tab:["a1"]}},implement:{V:{tab:"v1"}},implementation:{N:{tab:["n1"]}},implication:{N:{tab:["n1"]}},implicit:{A:{tab:["a1"]}},imply:{V:{tab:"v4"}},import:{N:{tab:["n1"]},V:{tab:"v1"}},importance:{N:{tab:["n5"]}},important:{A:{tab:["a1"]}},importantly:{Adv:{tab:["b1"]}},impose:{V:{tab:"v3"}},impossible:{A:{tab:["a1"]}},impress:{V:{tab:"v2"}},impression:{N:{tab:["n1"]}},impressive:{A:{tab:["a1"]}},imprison:{V:{tab:"v1"}},imprisonment:{N:{tab:["n5"]}},improve:{V:{tab:"v3"}},improvement:{N:{tab:["n1"]}},impulse:{N:{tab:["n1"]}},in:{Adv:{tab:["b1"]},P:{tab:["pp"]}},inability:{N:{tab:["n5"]}},inadequate:{A:{tab:["a1"]}},inappropriate:{A:{tab:["a1"]}},incapable:{A:{tab:["a1"]}},incentive:{N:{tab:["n1"]}},inch:{N:{tab:["n2"]}},incidence:{N:{tab:["n1"]}},incident:{N:{tab:["n1"]}},incidentally:{Adv:{tab:["b1"]}},include:{V:{tab:"v3"}},inclusion:{N:{tab:["n5"]}},income:{N:{tab:["n1"]}},incorporate:{V:{tab:"v3"}},increase:{N:{tab:["n1"]},V:{tab:"v3"}},increasingly:{Adv:{tab:["b1"]}},incredible:{A:{tab:["a1"]}},incredibly:{Adv:{tab:["b1"]}},incur:{V:{tab:"v13"}},indeed:{Adv:{tab:["b1"]}},independence:{N:{tab:["n5"]}},independent:{A:{tab:["a1"]}},independently:{Adv:{tab:["b1"]}},index:{N:{tab:["n2"]}},indicate:{V:{tab:"v3"}},indication:{N:{tab:["n1"]}},indicator:{N:{tab:["n1"]}},indigenous:{A:{tab:["a1"]}},indirect:{A:{tab:["a1"]}},indirectly:{Adv:{tab:["b1"]}},individual:{A:{tab:["a1"]},N:{tab:["n1"]}},individually:{Adv:{tab:["b1"]}},indoor:{A:{tab:["a1"]}},induce:{V:{tab:"v3"}},indulge:{V:{tab:"v3"}},industrial:{A:{tab:["a1"]}},industry:{N:{tab:["n3"]}},inequality:{N:{tab:["n3"]}},inevitable:{A:{tab:["a1"]}},inevitably:{Adv:{tab:["b1"]}},infant:{N:{tab:["n1"]}},infect:{V:{tab:"v1"}},infection:{N:{tab:["n1"]}},infinite:{A:{tab:["a1"]}},inflation:{N:{tab:["n5"]}},inflict:{V:{tab:"v1"}},influence:{N:{tab:["n1"]},V:{tab:"v3"}},influential:{A:{tab:["a1"]}},inform:{V:{tab:"v1"}},informal:{A:{tab:["a1"]}},information:{N:{tab:["n5"]}},infrastructure:{N:{tab:["n1"]}},ingredient:{N:{tab:["n1"]}},inhabitant:{N:{tab:["n1"]}},inherent:{A:{tab:["a1"]}},inherit:{V:{tab:"v1"}},inheritance:{N:{tab:["n1"]}},inhibit:{V:{tab:"v1"}},inhibition:{N:{tab:["n1"]}},initial:{A:{tab:["a1"]},N:{tab:["n1"]}},initially:{Adv:{tab:["b1"]}},initiate:{V:{tab:"v3"}},initiative:{N:{tab:["n1"]}},inject:{V:{tab:"v1"}},injection:{N:{tab:["n1"]}},injunction:{N:{tab:["n1"]}},injure:{V:{tab:"v3"}},injured:{A:{tab:["a1"]}},injury:{N:{tab:["n3"]}},inland:{A:{tab:["a1"]}},inn:{N:{tab:["n1"]}},inner:{A:{tab:["a1"]}},innocence:{N:{tab:["n5"]}},innocent:{A:{tab:["a1"]}},innovation:{N:{tab:["n1"]}},innovative:{A:{tab:["a1"]}},input:{N:{tab:["n1"]}},inquest:{N:{tab:["n1"]}},inquiry:{N:{tab:["n3"]}},insect:{N:{tab:["n1"]}},insert:{V:{tab:"v1"}},inside:{Adv:{tab:["b1"]},N:{tab:["n1"]},P:{tab:["pp"]}},insider:{N:{tab:["n1"]}},insight:{N:{tab:["n1"]}},insist:{V:{tab:"v1"}},insistence:{N:{tab:["n5"]}},inspect:{V:{tab:"v1"}},inspection:{N:{tab:["n1"]}},inspector:{N:{tab:["n1"]}},inspiration:{N:{tab:["n1"]}},inspire:{V:{tab:"v3"}},instal:{V:{tab:"v9"}},install:{V:{tab:"v1"}},installation:{N:{tab:["n1"]}},instance:{N:{tab:["n1"]}},instant:{A:{tab:["a1"]},N:{tab:["n1"]}},instantly:{Adv:{tab:["b1"]}},instead:{Adv:{tab:["b1"]}},instinct:{N:{tab:["n1"]}},institute:{N:{tab:["n1"]}},institution:{N:{tab:["n1"]}},institutional:{A:{tab:["a1"]}},instruct:{V:{tab:"v1"}},instruction:{N:{tab:["n1"]}},instructor:{N:{tab:["n1"]}},instrument:{N:{tab:["n1"]}},instrumental:{A:{tab:["a1"]}},insufficient:{A:{tab:["a1"]}},insurance:{N:{tab:["n1"]}},insure:{V:{tab:"v3"}},intact:{A:{tab:["a1"]}},intake:{N:{tab:["n1"]}},integral:{A:{tab:["a1"]}},integrate:{V:{tab:"v3"}},integration:{N:{tab:["n5"]}},integrity:{N:{tab:["n5"]}},intellectual:{A:{tab:["a1"]},N:{tab:["n1"]}},intelligence:{N:{tab:["n5"]}},intelligent:{A:{tab:["a1"]}},intend:{V:{tab:"v1"}},intense:{A:{tab:["a1"]}},intensify:{V:{tab:"v4"}},intensity:{N:{tab:["n3"]}},intensive:{A:{tab:["a1"]}},intent:{A:{tab:["a1"]},N:{tab:["n1"]}},intention:{N:{tab:["n1"]}},interaction:{N:{tab:["n1"]}},interactive:{A:{tab:["a1"]}},intercourse:{N:{tab:["n5"]}},interest:{N:{tab:["n1"]},V:{tab:"v1"}},interested:{A:{tab:["a1"]}},interesting:{A:{tab:["a1"]}},interface:{N:{tab:["n1"]}},interfere:{V:{tab:"v3"}},interference:{N:{tab:["n5"]}},interior:{A:{tab:["a1"]},N:{tab:["n1"]}},intermediate:{A:{tab:["a1"]}},internal:{A:{tab:["a1"]}},international:{A:{tab:["a1"]}},interpret:{V:{tab:"v1"}},interpretation:{N:{tab:["n1"]}},interrupt:{V:{tab:"v1"}},interval:{N:{tab:["n1"]}},intervene:{V:{tab:"v3"}},intervention:{N:{tab:["n1"]}},interview:{N:{tab:["n1"]},V:{tab:"v1"}},intimate:{A:{tab:["a1"]}},into:{P:{tab:["pp"]}},introduce:{V:{tab:"v3"}},introduction:{N:{tab:["n1"]}},invade:{V:{tab:"v3"}},invaluable:{A:{tab:["a1"]}},invariably:{Adv:{tab:["b1"]}},invasion:{N:{tab:["n1"]}},invent:{V:{tab:"v1"}},invention:{N:{tab:["n1"]}},invest:{V:{tab:"v1"}},investigate:{V:{tab:"v3"}},investigation:{N:{tab:["n1"]}},investigator:{N:{tab:["n1"]}},investment:{N:{tab:["n1"]}},investor:{N:{tab:["n1"]}},invisible:{A:{tab:["a1"]}},invitation:{N:{tab:["n1"]}},invite:{V:{tab:"v3"}},invoke:{V:{tab:"v3"}},involve:{V:{tab:"v3"}},involved:{A:{tab:["a1"]}},involvement:{N:{tab:["n1"]}},ion:{N:{tab:["n1"]}},iron:{N:{tab:["n1"]}},ironically:{Adv:{tab:["b1"]}},irony:{N:{tab:["n3"]}},irrelevant:{A:{tab:["a1"]}},irrespective:{A:{tab:["a1"]}},island:{N:{tab:["n1"]}},isolation:{N:{tab:["n5"]}},issue:{N:{tab:["n1"]},V:{tab:"v3"}},item:{N:{tab:["n1"]}},ivory:{N:{tab:["n5"]}},jacket:{N:{tab:["n1"]}},jail:{N:{tab:["n1"]},V:{tab:"v1"}},jam:{N:{tab:["n1"]}},jar:{N:{tab:["n1"]}},jaw:{N:{tab:["n1"]}},jazz:{N:{tab:["n5"]}},jealous:{A:{tab:["a1"]}},jeans:{N:{tab:["n6"]}},jerk:{V:{tab:"v1"}},jet:{N:{tab:["n1"]}},jewel:{N:{tab:["n1"]}},jewellery:{N:{tab:["n5"]}},job:{N:{tab:["n1"]}},jockey:{N:{tab:["n1"]}},join:{V:{tab:"v1"}},joint:{A:{tab:["a1"]},N:{tab:["n1"]}},jointly:{Adv:{tab:["b1"]}},joke:{N:{tab:["n1"]},V:{tab:"v3"}},journal:{N:{tab:["n1"]}},journalist:{N:{tab:["n1"]}},journey:{N:{tab:["n1"]}},joy:{N:{tab:["n1"]}},judge:{N:{tab:["n1"]},V:{tab:"v3"}},judgement:{N:{tab:["n1"]}},judgment:{N:{tab:["n1"]}},judicial:{A:{tab:["a1"]}},juice:{N:{tab:["n1"]}},jump:{N:{tab:["n1"]},V:{tab:"v1"}},junction:{N:{tab:["n1"]}},jungle:{N:{tab:["n1"]}},junior:{A:{tab:["a1"]}},jurisdiction:{N:{tab:["n1"]}},jury:{N:{tab:["n3"]}},just:{A:{tab:["a1"]},Adv:{tab:["b1"]}},justice:{N:{tab:["n1"]}},justification:{N:{tab:["n1"]}},justify:{V:{tab:"v4"}},keen:{A:{tab:["a3"]}},keep:{V:{tab:"v29"}},keeper:{N:{tab:["n1"]}},kettle:{N:{tab:["n1"]}},key:{N:{tab:["n1"]}},keyboard:{N:{tab:["n1"]}},kick:{N:{tab:["n1"]},V:{tab:"v1"}},kid:{N:{tab:["n1"]}},kidney:{N:{tab:["n1"]}},kill:{V:{tab:"v1"}},killer:{N:{tab:["n1"]}},killing:{N:{tab:["n1"]}},kilometre:{N:{tab:["n1"]}},kind:{A:{tab:["a3"]},N:{tab:["n1"]}},kindly:{Adv:{tab:["b1"]}},king:{N:{tab:["n1"]}},kingdom:{N:{tab:["n1"]}},kiss:{N:{tab:["n2"]},V:{tab:"v2"}},kit:{N:{tab:["n1"]}},kitchen:{N:{tab:["n1"]}},kite:{N:{tab:["n1"]}},knee:{N:{tab:["n1"]}},kneel:{V:{tab:"v130"}},knife:{N:{tab:["n10"]}},knight:{N:{tab:["n1"]}},knit:{V:{tab:"v38"}},knitting:{N:{tab:["n5"]}},knock:{N:{tab:["n1"]},V:{tab:"v1"}},knot:{N:{tab:["n1"]}},know:{V:{tab:"v27"}},knowledge:{N:{tab:["n5"]}},lab:{N:{tab:["n1"]}},label:{N:{tab:["n1"]},V:{tab:"v9"}},laboratory:{N:{tab:["n3"]}},labour:{N:{tab:["n1"]}},labourer:{N:{tab:["n1"]}},lace:{N:{tab:["n1"]}},lack:{N:{tab:["n5"]},V:{tab:"v1"}},lad:{N:{tab:["n1"]}},ladder:{N:{tab:["n1"]}},lady:{N:{tab:["n3"]}},lake:{N:{tab:["n1"]}},lamb:{N:{tab:["n1"]}},lamp:{N:{tab:["n1"]}},land:{N:{tab:["n1"]},V:{tab:"v1"}},landing:{N:{tab:["n1"]}},landlord:{N:{tab:["n1"]}},landowner:{N:{tab:["n1"]}},landscape:{N:{tab:["n1"]}},lane:{N:{tab:["n1"]}},language:{N:{tab:["n1"]}},lap:{N:{tab:["n1"]}},large:{A:{tab:["a2"]}},"large-scale":{A:{tab:["a1"]}},largely:{Adv:{tab:["b1"]}},laser:{N:{tab:["n1"]}},last:{V:{tab:"v1"}},late:{A:{tab:["a2"]},Adv:{tab:["a2"]}},lately:{Adv:{tab:["b1"]}},laugh:{N:{tab:["n1"]},V:{tab:"v1"}},laughter:{N:{tab:["n5"]}},launch:{N:{tab:["n2"]},V:{tab:"v2"}},law:{N:{tab:["n1"]}},lawn:{N:{tab:["n1"]}},lawyer:{N:{tab:["n1"]}},lay:{A:{tab:["a1"]},V:{tab:"v19"}},layer:{N:{tab:["n1"]}},lazy:{A:{tab:["a4"]}},lead:{N:{tab:["n1"]},V:{tab:"v77"}},leader:{N:{tab:["n1"]}},leadership:{N:{tab:["n5"]}},leading:{A:{tab:["a1"]}},leaf:{N:{tab:["n9"]}},leaflet:{N:{tab:["n1"]}},league:{N:{tab:["n1"]}},leak:{V:{tab:"v1"}},lean:{V:{tab:"v26"}},leap:{V:{tab:"v26"}},learn:{V:{tab:"v26"}},learner:{N:{tab:["n1"]}},learning:{N:{tab:["n5"]}},lease:{N:{tab:["n1"]}},leather:{N:{tab:["n1"]}},leave:{N:{tab:["n1"]},V:{tab:"v155"}},lecture:{N:{tab:["n1"]}},lecturer:{N:{tab:["n1"]}},left:{A:{tab:["a1"]},N:{tab:["n5"]}},leg:{N:{tab:["n1"]}},legacy:{N:{tab:["n3"]}},legal:{A:{tab:["a1"]}},legally:{Adv:{tab:["b1"]}},legend:{N:{tab:["n1"]}},legislation:{N:{tab:["n5"]}},legislative:{A:{tab:["a1"]}},legislature:{N:{tab:["n1"]}},legitimate:{A:{tab:["a1"]}},leisure:{N:{tab:["n5"]}},lemon:{N:{tab:["n1"]}},lend:{V:{tab:"v23"}},lender:{N:{tab:["n1"]}},length:{N:{tab:["n1"]}},lengthy:{A:{tab:["a4"]}},less:{Adv:{tab:["b1"]}},lesser:{A:{tab:["a1"]}},lesson:{N:{tab:["n1"]}},let:{V:{tab:"v17"}},letter:{N:{tab:["n1"]}},level:{A:{tab:["a1"]},N:{tab:["n1"]},V:{tab:"v9"}},lexical:{A:{tab:["a1"]}},liability:{N:{tab:["n3"]}},liable:{A:{tab:["a1"]}},liaison:{N:{tab:["n1"]}},liberal:{A:{tab:["a1"]},N:{tab:["n1"]}},liberation:{N:{tab:["n1"]}},liberty:{N:{tab:["n3"]}},librarian:{N:{tab:["n1"]}},library:{N:{tab:["n3"]}},licence:{N:{tab:["n1"]}},license:{V:{tab:"v3"}},lick:{V:{tab:"v1"}},lid:{N:{tab:["n1"]}},lie:{N:{tab:["n1"]},V:{tab:"v111"}},life:{N:{tab:["n10"]}},lifestyle:{N:{tab:["n1"]}},lifetime:{N:{tab:["n1"]}},lift:{N:{tab:["n1"]},V:{tab:"v1"}},light:{A:{tab:["a3"]},N:{tab:["n1"]},V:{tab:"v68"}},lightly:{Adv:{tab:["b1"]}},like:{A:{tab:["a1"]},Adv:{tab:["b1"]},N:{tab:["n1"]},P:{tab:["pp"]},V:{tab:"v3"}},likelihood:{N:{tab:["n5"]}},likely:{A:{tab:["a4"]}},likewise:{Adv:{tab:["b1"]}},limb:{N:{tab:["n1"]}},limestone:{N:{tab:["n5"]}},limit:{N:{tab:["n1"]},V:{tab:"v1"}},limitation:{N:{tab:["n1"]}},line:{N:{tab:["n1"]},V:{tab:"v3"}},linear:{A:{tab:["a1"]}},linen:{N:{tab:["n5"]}},linger:{V:{tab:"v1"}},linguistic:{A:{tab:["a1"]}},link:{N:{tab:["n1"]},V:{tab:"v1"}},lion:{N:{tab:["n1"]}},lip:{N:{tab:["n1"]}},liquid:{A:{tab:["a1"]},N:{tab:["n1"]}},list:{N:{tab:["n1"]},V:{tab:"v1"}},listen:{V:{tab:"v1"}},listener:{N:{tab:["n1"]}},literacy:{N:{tab:["n5"]}},literally:{Adv:{tab:["b1"]}},literary:{A:{tab:["a1"]}},literature:{N:{tab:["n5"]}},litigation:{N:{tab:["n5"]}},litre:{N:{tab:["n1"]}},little:{A:{tab:["a2"]},Adv:{tab:["b5"]}},live:{A:{tab:["a1"]},V:{tab:"v3"}},lively:{A:{tab:["a4"]}},liver:{N:{tab:["n1"]}},living:{A:{tab:["a1"]},N:{tab:["n1"]}},load:{N:{tab:["n1"]},V:{tab:"v1"}},loan:{N:{tab:["n1"]}},lobby:{N:{tab:["n3"]}},local:{A:{tab:["a1"]},N:{tab:["n1"]}},locality:{N:{tab:["n3"]}},locally:{Adv:{tab:["b1"]}},locate:{V:{tab:"v3"}},location:{N:{tab:["n1"]}},lock:{N:{tab:["n1"]},V:{tab:"v1"}},locomotive:{N:{tab:["n1"]}},lodge:{V:{tab:"v3"}},log:{N:{tab:["n1"]}},logic:{N:{tab:["n1"]}},logical:{A:{tab:["a1"]}},lone:{A:{tab:["a1"]}},lonely:{A:{tab:["a4"]}},long:{A:{tab:["a3"]},Adv:{tab:["b1"]},V:{tab:"v1"}},"long-term":{A:{tab:["a1"]}},look:{N:{tab:["n1"]},V:{tab:"v1"}},loose:{A:{tab:["a2"]}},lord:{N:{tab:["n1"]}},lordship:{N:{tab:["n1"]}},lorry:{N:{tab:["n3"]}},lose:{V:{tab:"v143"}},loss:{N:{tab:["n2"]}},lot:{N:{tab:["n1"]}},loud:{A:{tab:["a3"]},Adv:{tab:["b1"]}},loudly:{Adv:{tab:["b1"]}},lounge:{N:{tab:["n1"]}},love:{N:{tab:["n1"]},V:{tab:"v3"}},lovely:{A:{tab:["a4"]}},lover:{N:{tab:["n1"]}},low:{A:{tab:["a3"]},Adv:{tab:["b1"]}},lower:{V:{tab:"v1"}},loyal:{A:{tab:["a8"]}},loyalty:{N:{tab:["n3"]}},luck:{N:{tab:["n5"]}},lucky:{A:{tab:["a4"]}},lump:{N:{tab:["n1"]}},lunch:{N:{tab:["n2"]}},lung:{N:{tab:["n1"]}},luxury:{N:{tab:["n3"]}},machine:{N:{tab:["n1"]}},machinery:{N:{tab:["n5"]}},mad:{A:{tab:["a6"]}},magazine:{N:{tab:["n1"]}},magic:{A:{tab:["a1"]},N:{tab:["n5"]}},magical:{A:{tab:["a1"]}},magistrate:{N:{tab:["n1"]}},magnetic:{A:{tab:["a1"]}},magnificent:{A:{tab:["a1"]}},magnitude:{N:{tab:["n5"]}},maid:{N:{tab:["n1"]}},mail:{N:{tab:["n1"]}},main:{A:{tab:["a1"]}},mainland:{N:{tab:["n1"]}},mainly:{Adv:{tab:["b1"]}},mainstream:{N:{tab:["n5"]}},maintain:{V:{tab:"v1"}},maintenance:{N:{tab:["n5"]}},majesty:{N:{tab:["n3"]}},major:{A:{tab:["a1"]}},majority:{N:{tab:["n3"]}},make:{N:{tab:["n1"]},V:{tab:"v61"}},"make-up":{N:{tab:["n1"]}},maker:{N:{tab:["n1"]}},making:{N:{tab:["n1"]}},male:{A:{tab:["a1"]},N:{tab:["n1"]}},mammal:{N:{tab:["n1"]}},man:{N:{g:"m",tab:["n89"]}},manage:{V:{tab:"v3"}},management:{N:{tab:["n1"]}},manager:{N:{tab:["n1"]}},managerial:{A:{tab:["a1"]}},mandatory:{A:{tab:["a1"]}},manifest:{V:{tab:"v1"}},manifestation:{N:{tab:["n1"]}},manipulate:{V:{tab:"v3"}},manipulation:{N:{tab:["n1"]}},mankind:{N:{tab:["n5"]}},manner:{N:{tab:["n1"]}},manor:{N:{tab:["n1"]}},manpower:{N:{tab:["n5"]}},manual:{A:{tab:["a1"]},N:{tab:["n1"]}},manufacture:{N:{tab:["n5"]},V:{tab:"v3"}},manufacturer:{N:{tab:["n1"]}},manuscript:{N:{tab:["n1"]}},many:{Adv:{tab:["b1"]}},map:{N:{tab:["n1"]},V:{tab:"v12"}},marathon:{N:{tab:["n1"]}},marble:{N:{tab:["n1"]}},march:{N:{tab:["n2"]},V:{tab:"v2"}},margin:{N:{tab:["n1"]}},marginal:{A:{tab:["a1"]}},marine:{A:{tab:["a1"]}},mark:{N:{tab:["n1"]},V:{tab:"v1"}},marked:{A:{tab:["a1"]}},marker:{N:{tab:["n1"]}},market:{N:{tab:["n1"]},V:{tab:"v1"}},marketing:{N:{tab:["n1"]}},marriage:{N:{tab:["n1"]}},married:{A:{tab:["a1"]}},marry:{V:{tab:"v4"}},marsh:{N:{tab:["n2"]}},marvellous:{A:{tab:["a1"]}},mask:{N:{tab:["n1"]}},mass:{N:{tab:["n2"]}},massive:{A:{tab:["a1"]}},master:{N:{tab:["n1"]},V:{tab:"v1"}},match:{N:{tab:["n2"]},V:{tab:"v2"}},mate:{N:{tab:["n1"]}},material:{A:{tab:["a1"]},N:{tab:["n1"]}},mathematical:{A:{tab:["a1"]}},mathematics:{N:{tab:["n5"]}},matrix:{N:{tab:["n2"]}},matter:{N:{tab:["n1"]},V:{tab:"v1"}},mature:{A:{tab:["a1"]}},maturity:{N:{tab:["n5"]}},maximum:{A:{tab:["a1"]},N:{tab:["n1"]}},may:{V:{tab:"v153"}},maybe:{Adv:{tab:["b1"]}},mayor:{N:{tab:["n1"]}},me:{Pro:{tab:["pn2"]}},meadow:{N:{tab:["n1"]}},meal:{N:{tab:["n1"]}},mean:{A:{tab:["a3"]},V:{tab:"v55"}},meaning:{N:{tab:["n1"]}},meaningful:{A:{tab:["a1"]}},meantime:{N:{tab:["n5"]}},meanwhile:{Adv:{tab:["b1"]}},measure:{N:{tab:["n1"]},V:{tab:"v3"}},measurement:{N:{tab:["n1"]}},meat:{N:{tab:["n1"]}},mechanical:{A:{tab:["a1"]}},mechanism:{N:{tab:["n1"]}},medal:{N:{tab:["n1"]}},medical:{A:{tab:["a1"]}},medicine:{N:{tab:["n1"]}},medieval:{A:{tab:["a1"]}},medium:{A:{tab:["a1"]},N:{tab:["n1"]}},meet:{V:{tab:"v123"}},meeting:{N:{tab:["n1"]}},melt:{V:{tab:"v127"}},member:{N:{tab:["n1"]}},membership:{N:{tab:["n5"]}},membrane:{N:{tab:["n1"]}},memorable:{A:{tab:["a1"]}},memorandum:{N:{tab:["n1"]}},memorial:{N:{tab:["n1"]}},memory:{N:{tab:["n3"]}},mental:{A:{tab:["a1"]}},mentally:{Adv:{tab:["b1"]}},mention:{N:{tab:["n1"]},V:{tab:"v1"}},menu:{N:{tab:["n1"]}},merchant:{N:{tab:["n1"]}},mercy:{N:{tab:["n3"]}},mere:{A:{tab:["a18"]}},merely:{Adv:{tab:["b1"]}},merge:{V:{tab:"v3"}},merger:{N:{tab:["n1"]}},merit:{N:{tab:["n1"]}},mess:{N:{tab:["n2"]}},message:{N:{tab:["n1"]}},metal:{N:{tab:["n1"]}},metaphor:{N:{tab:["n1"]}},method:{N:{tab:["n1"]}},methodology:{N:{tab:["n3"]}},metre:{N:{tab:["n1"]}},metropolitan:{A:{tab:["a1"]}},microphone:{N:{tab:["n1"]}},mid:{A:{tab:["a1"]}},middle:{N:{tab:["n1"]}},"middle-class":{A:{tab:["a1"]}},midnight:{N:{tab:["n5"]}},mighty:{A:{tab:["a4"]}},migration:{N:{tab:["n1"]}},mild:{A:{tab:["a3"]}},mile:{N:{tab:["n1"]}},military:{A:{tab:["a1"]}},milk:{N:{tab:["n5"]}},mill:{N:{tab:["n1"]}},mind:{N:{tab:["n1"]},V:{tab:"v1"}},mine:{N:{tab:["n1"]},Pro:{tab:["pn3"]}},miner:{N:{tab:["n1"]}},mineral:{N:{tab:["n1"]}},minimal:{A:{tab:["a1"]}},minimum:{A:{tab:["a1"]},N:{tab:["n1"]}},mining:{N:{tab:["n5"]}},minister:{N:{tab:["n1"]}},ministerial:{A:{tab:["a1"]}},ministry:{N:{tab:["n3"]}},minor:{A:{tab:["a1"]}},minority:{N:{tab:["n3"]}},minus:{P:{tab:["pp"]}},minute:{A:{tab:["a2"]},N:{tab:["n1"]}},miracle:{N:{tab:["n1"]}},mirror:{N:{tab:["n1"]}},miserable:{A:{tab:["a1"]}},misery:{N:{tab:["n3"]}},miss:{V:{tab:"v2"}},missile:{N:{tab:["n1"]}},missing:{A:{tab:["a1"]}},mission:{N:{tab:["n1"]}},mist:{N:{tab:["n1"]}},mistake:{N:{tab:["n1"]},V:{tab:"v20"}},mistress:{N:{g:"f",tab:["n88"]}},mix:{N:{tab:["n2"]},V:{tab:"v2"}},mixed:{A:{tab:["a1"]}},mixture:{N:{tab:["n1"]}},moan:{V:{tab:"v1"}},mobile:{A:{tab:["a1"]}},mobility:{N:{tab:["n5"]}},mode:{N:{tab:["n1"]}},model:{N:{tab:["n1"]},V:{tab:"v9"}},moderate:{A:{tab:["a1"]}},modern:{A:{tab:["a1"]}},modest:{A:{tab:["a1"]}},modification:{N:{tab:["n1"]}},modify:{V:{tab:"v4"}},module:{N:{tab:["n1"]}},mole:{N:{tab:["n1"]}},molecular:{A:{tab:["a1"]}},molecule:{N:{tab:["n1"]}},moment:{N:{tab:["n1"]}},momentum:{N:{tab:["n5"]}},monarch:{N:{tab:["n1"]}},monarchy:{N:{tab:["n3"]}},monastery:{N:{tab:["n3"]}},monetary:{A:{tab:["a1"]}},money:{N:{tab:["n50"]}},monitor:{N:{tab:["n1"]},V:{tab:"v1"}},monk:{N:{tab:["n1"]}},monkey:{N:{tab:["n1"]}},monopoly:{N:{tab:["n3"]}},monster:{N:{tab:["n1"]}},month:{N:{tab:["n1"]}},monthly:{A:{tab:["a1"]}},monument:{N:{tab:["n1"]}},mood:{N:{tab:["n1"]}},moon:{N:{tab:["n1"]}},moor:{N:{tab:["n1"]}},moral:{A:{tab:["a1"]},N:{tab:["n1"]}},morale:{N:{tab:["n5"]}},morality:{N:{tab:["n3"]}},more:{Adv:{tab:["b1"]}},moreover:{Adv:{tab:["b1"]}},morning:{N:{tab:["n1"]}},mortality:{N:{tab:["n5"]}},mortgage:{N:{tab:["n1"]}},mosaic:{N:{tab:["n1"]}},most:{Adv:{tab:["b1"]}},mostly:{Adv:{tab:["b1"]}},mother:{N:{g:"f",tab:["n87"]}},motif:{N:{tab:["n1"]}},motion:{N:{tab:["n1"]}},motivate:{V:{tab:"v3"}},motivation:{N:{tab:["n1"]}},motive:{N:{tab:["n1"]}},motor:{N:{tab:["n1"]}},motorist:{N:{tab:["n1"]}},motorway:{N:{tab:["n1"]}},mould:{N:{tab:["n1"]}},mount:{V:{tab:"v1"}},mountain:{N:{tab:["n1"]}},mouse:{N:{tab:["n16"]}},mouth:{N:{tab:["n1"]}},move:{N:{tab:["n1"]},V:{tab:"v3"}},movement:{N:{tab:["n1"]}},movie:{N:{tab:["n1"]}},much:{Adv:{tab:["b1"]}},mud:{N:{tab:["n5"]}},mug:{N:{tab:["n1"]}},multiple:{A:{tab:["a1"]}},multiply:{V:{tab:"v4"}},municipal:{A:{tab:["a1"]}},murder:{N:{tab:["n1"]},V:{tab:"v1"}},murderer:{N:{tab:["n1"]}},murmur:{V:{tab:"v1"}},muscle:{N:{tab:["n1"]}},museum:{N:{tab:["n1"]}},mushroom:{N:{tab:["n1"]}},music:{N:{tab:["n5"]}},musical:{A:{tab:["a1"]}},musician:{N:{tab:["n1"]}},must:{N:{tab:["n1"]},V:{tab:"v166"}},mutation:{N:{tab:["n1"]}},mutter:{V:{tab:"v1"}},mutual:{A:{tab:["a1"]}},my:{D:{tab:["d2"]}},myself:{Pro:{tab:["pn4"]}},mysterious:{A:{tab:["a1"]}},mystery:{N:{tab:["n3"]}},myth:{N:{tab:["n1"]}},nail:{N:{tab:["n1"]}},naked:{A:{tab:["a1"]}},name:{N:{tab:["n1"]},V:{tab:"v3"}},namely:{Adv:{tab:["b1"]}},narrative:{N:{tab:["n1"]}},narrow:{A:{tab:["a3"]},V:{tab:"v1"}},nasty:{A:{tab:["a4"]}},nation:{N:{tab:["n1"]}},national:{A:{tab:["a1"]}},nationalism:{N:{tab:["n5"]}},nationalist:{N:{tab:["n1"]}},nationality:{N:{tab:["n3"]}},nationally:{Adv:{tab:["b1"]}},native:{A:{tab:["a1"]},N:{tab:["n1"]}},natural:{A:{tab:["a1"]}},naturally:{Adv:{tab:["b1"]}},nature:{N:{tab:["n1"]}},naval:{A:{tab:["a1"]}},navy:{N:{tab:["n3"]}},near:{A:{tab:["a3"]},Adv:{tab:["b1"]},P:{tab:["pp"]}},nearby:{A:{tab:["a1"]}},nearly:{Adv:{tab:["b1"]}},neat:{A:{tab:["a3"]}},neatly:{Adv:{tab:["b1"]}},necessarily:{Adv:{tab:["b1"]}},necessary:{A:{tab:["a1"]}},necessity:{N:{tab:["n3"]}},neck:{N:{tab:["n1"]}},need:{N:{tab:["n1"]},V:{tab:"v1"}},needle:{N:{tab:["n1"]}},negative:{A:{tab:["a1"]}},neglect:{N:{tab:["n5"]},V:{tab:"v1"}},negligence:{N:{tab:["n5"]}},negotiate:{V:{tab:"v3"}},negotiation:{N:{tab:["n1"]}},neighbour:{N:{tab:["n1"]}},neighbourhood:{N:{tab:["n1"]}},neither:{Adv:{tab:["b1"]}},nephew:{N:{tab:["n1"]}},nerve:{N:{tab:["n1"]}},nervous:{A:{tab:["a1"]}},nest:{N:{tab:["n1"]}},net:{A:{tab:["a1"]},N:{tab:["n1"]}},network:{N:{tab:["n1"]}},neutral:{A:{tab:["a1"]}},never:{Adv:{tab:["b1"]}},nevertheless:{Adv:{tab:["b1"]}},new:{A:{tab:["a3"]}},newcomer:{N:{tab:["n1"]}},newly:{Adv:{tab:["b1"]}},news:{N:{tab:["n5"]}},newspaper:{N:{tab:["n1"]}},next:{Adv:{tab:["b1"]}},nice:{A:{tab:["a2"]}},nicely:{Adv:{tab:["b1"]}},night:{N:{tab:["n1"]}},nightmare:{N:{tab:["n1"]}},nitrogen:{N:{tab:["n5"]}},no:{Adv:{tab:["b1"]},N:{tab:["n1"]}},"no-one":{Pro:{tab:["pn5"]}},noble:{A:{tab:["a2"]}},nobody:{Pro:{tab:["pn5"]}},nod:{V:{tab:"v6"}},node:{N:{tab:["n1"]}},noise:{N:{tab:["n1"]}},noisy:{A:{tab:["a4"]}},nominal:{A:{tab:["a1"]}},nominate:{V:{tab:"v3"}},nomination:{N:{tab:["n1"]}},nonetheless:{Adv:{tab:["b1"]}},nonsense:{N:{tab:["n1"]}},norm:{N:{tab:["n1"]}},normal:{A:{tab:["a1"]}},normally:{Adv:{tab:["b1"]}},north:{N:{tab:["n5"]}},northern:{A:{tab:["a1"]}},nose:{N:{tab:["n1"]}},not:{Adv:{tab:["b1"]}},notable:{A:{tab:["a1"]}},notably:{Adv:{tab:["b1"]}},note:{N:{tab:["n1"]},V:{tab:"v3"}},notebook:{N:{tab:["n1"]}},nothing:{Pro:{tab:["pn5"]}},notice:{N:{tab:["n1"]},V:{tab:"v3"}},noticeable:{A:{tab:["a1"]}},notify:{V:{tab:"v4"}},notion:{N:{tab:["n1"]}},notorious:{A:{tab:["a1"]}},noun:{N:{tab:["n1"]}},novel:{A:{tab:["a1"]},N:{tab:["n1"]}},novelist:{N:{tab:["n1"]}},now:{Adv:{tab:["b1"]}},nowadays:{Adv:{tab:["b1"]}},nowhere:{Adv:{tab:["b1"]}},nuclear:{A:{tab:["a1"]}},nucleus:{N:{tab:["n12"]}},nuisance:{N:{tab:["n1"]}},number:{N:{tab:["n1"]}},numerous:{A:{tab:["a1"]}},nun:{N:{tab:["n1"]}},nurse:{N:{tab:["n1"]},V:{tab:"v3"}},nursery:{N:{tab:["n3"]}},nut:{N:{tab:["n1"]}},oak:{N:{tab:["n1"]}},obey:{V:{tab:"v1"}},object:{N:{tab:["n1"]},V:{tab:"v1"}},objection:{N:{tab:["n1"]}},objective:{A:{tab:["a1"]},N:{tab:["n1"]}},obligation:{N:{tab:["n1"]}},oblige:{V:{tab:"v3"}},obscure:{A:{tab:["a1"]},V:{tab:"v3"}},observation:{N:{tab:["n1"]}},observe:{V:{tab:"v3"}},observer:{N:{tab:["n1"]}},obstacle:{N:{tab:["n1"]}},obtain:{V:{tab:"v1"}},obvious:{A:{tab:["a1"]}},obviously:{Adv:{tab:["b1"]}},occasion:{N:{tab:["n1"]}},occasional:{A:{tab:["a1"]}},occasionally:{Adv:{tab:["b1"]}},occupation:{N:{tab:["n1"]}},occupational:{A:{tab:["a1"]}},occupy:{V:{tab:"v4"}},occur:{V:{tab:"v13"}},occurrence:{N:{tab:["n1"]}},ocean:{N:{tab:["n1"]}},odd:{A:{tab:["a3"]}},odds:{N:{tab:["n6"]}},odour:{N:{tab:["n1"]}},of:{P:{tab:["pp"]}},off:{Adv:{tab:["b1"]},P:{tab:["pp"]}},offence:{N:{tab:["n1"]}},offend:{V:{tab:"v1"}},offender:{N:{tab:["n1"]}},offensive:{A:{tab:["a1"]}},offer:{N:{tab:["n1"]},V:{tab:"v1"}},offering:{N:{tab:["n1"]}},office:{N:{tab:["n1"]}},officer:{N:{tab:["n1"]}},official:{A:{tab:["a1"]},N:{tab:["n1"]}},officially:{Adv:{tab:["b1"]}},offset:{V:{tab:"v17"}},offspring:{N:{tab:["n4"]}},often:{Adv:{tab:["b1"]}},oil:{N:{tab:["n1"]}},okay:{A:{tab:["a1"]},Adv:{tab:["b1"]}},old:{A:{tab:["a16"]}},"old-fashioned":{A:{tab:["a1"]}},omission:{N:{tab:["n1"]}},omit:{V:{tab:"v14"}},on:{Adv:{tab:["b1"]},P:{tab:["pp"]}},once:{Adv:{tab:["b1"]}},one:{Pro:{tab:["pn5"]}},onion:{N:{tab:["n1"]}},only:{A:{tab:["a1"]},Adv:{tab:["b1"]}},onto:{P:{tab:["pp"]}},onwards:{Adv:{tab:["b1"]}},open:{A:{tab:["a1"]},V:{tab:"v1"}},opening:{N:{tab:["n1"]}},openly:{Adv:{tab:["b1"]}},opera:{N:{tab:["n1"]}},operate:{V:{tab:"v3"}},operation:{N:{tab:["n1"]}},operational:{A:{tab:["a1"]}},operator:{N:{tab:["n1"]}},opinion:{N:{tab:["n1"]}},opponent:{N:{tab:["n1"]}},opportunity:{N:{tab:["n3"]}},oppose:{V:{tab:"v3"}},opposite:{A:{tab:["a1"]},N:{tab:["n1"]}},opposition:{N:{tab:["n5"]}},opt:{V:{tab:"v1"}},optical:{A:{tab:["a1"]}},optimism:{N:{tab:["n5"]}},optimistic:{A:{tab:["a1"]}},option:{N:{tab:["n1"]}},optional:{A:{tab:["a1"]}},oral:{A:{tab:["a1"]}},orange:{A:{tab:["a1"]},N:{tab:["n1"]}},orbit:{N:{tab:["n1"]}},orchestra:{N:{tab:["n1"]}},order:{N:{tab:["n1"]},V:{tab:"v1"}},ordinary:{A:{tab:["a1"]}},organ:{N:{tab:["n1"]}},organic:{A:{tab:["a1"]}},organism:{N:{tab:["n1"]}},organization:{N:{tab:["n1"]}},organizational:{A:{tab:["a1"]}},organize:{V:{tab:"v3"}},orientation:{N:{tab:["n5"]}},origin:{N:{tab:["n1"]}},original:{A:{tab:["a1"]},N:{tab:["n1"]}},originally:{Adv:{tab:["b1"]}},originate:{V:{tab:"v3"}},orthodox:{A:{tab:["a1"]}},otherwise:{Adv:{tab:["b1"]}},out:{A:{tab:["a1"]},Adv:{tab:["b1"]}},outbreak:{N:{tab:["n1"]}},outcome:{N:{tab:["n1"]}},outdoor:{A:{tab:["a1"]}},outer:{A:{tab:["a1"]}},outfit:{N:{tab:["n1"]}},outlet:{N:{tab:["n1"]}},outline:{N:{tab:["n1"]},V:{tab:"v3"}},outlook:{N:{tab:["n1"]}},output:{N:{tab:["n5"]}},outset:{N:{tab:["n1"]}},outside:{A:{tab:["a1"]},Adv:{tab:["b1"]},N:{tab:["n1"]},P:{tab:["pp"]}},outsider:{N:{tab:["n1"]}},outstanding:{A:{tab:["a1"]}},oven:{N:{tab:["n1"]}},over:{Adv:{tab:["b1"]},N:{tab:["n1"]},P:{tab:["pp"]}},overall:{A:{tab:["a1"]},N:{tab:["n1"]}},overcome:{V:{tab:"v41"}},overlook:{V:{tab:"v1"}},overnight:{Adv:{tab:["b1"]}},overseas:{A:{tab:["a1"]},Adv:{tab:["b1"]}},overtake:{V:{tab:"v20"}},overview:{N:{tab:["n1"]}},overwhelm:{V:{tab:"v1"}},owe:{V:{tab:"v3"}},owl:{N:{tab:["n1"]}},own:{V:{tab:"v1"}},owner:{N:{tab:["n1"]}},ownership:{N:{tab:["n5"]}},oxygen:{N:{tab:["n5"]}},ozone:{N:{tab:["n5"]}},pace:{N:{tab:["n1"]}},pack:{N:{tab:["n1"]},V:{tab:"v1"}},package:{N:{tab:["n1"]},V:{tab:"v3"}},packet:{N:{tab:["n1"]}},pad:{N:{tab:["n1"]}},page:{N:{tab:["n1"]}},pain:{N:{tab:["n1"]}},painful:{A:{tab:["a1"]}},paint:{N:{tab:["n1"]},V:{tab:"v1"}},painter:{N:{tab:["n1"]}},painting:{N:{tab:["n1"]}},pair:{N:{tab:["n1"]}},pal:{N:{tab:["n1"]}},palace:{N:{tab:["n1"]}},pale:{A:{tab:["a2"]}},palm:{N:{tab:["n1"]}},pan:{N:{tab:["n1"]}},panel:{N:{tab:["n1"]}},panic:{N:{tab:["n1"]}},papal:{A:{tab:["a1"]}},paper:{N:{tab:["n1"]}},par:{N:{tab:["n1"]}},parade:{N:{tab:["n1"]}},paragraph:{N:{tab:["n1"]}},parallel:{A:{tab:["a1"]},N:{tab:["n1"]}},parameter:{N:{tab:["n1"]}},parcel:{N:{tab:["n1"]}},pardon:{N:{tab:["n1"]}},parent:{N:{tab:["n1"]}},parental:{A:{tab:["a1"]}},parish:{N:{tab:["n2"]}},park:{N:{tab:["n1"]},V:{tab:"v1"}},parking:{N:{tab:["n5"]}},parliament:{N:{tab:["n1"]}},parliamentary:{A:{tab:["a1"]}},part:{N:{tab:["n1"]},V:{tab:"v1"}},"part-time":{A:{tab:["a1"]}},partial:{A:{tab:["a1"]}},partially:{Adv:{tab:["b1"]}},participant:{N:{tab:["n1"]}},participate:{V:{tab:"v3"}},participation:{N:{tab:["n5"]}},particle:{N:{tab:["n1"]}},particular:{A:{tab:["a1"]},N:{tab:["n1"]}},particularly:{Adv:{tab:["b1"]}},partly:{Adv:{tab:["b1"]}},partner:{N:{tab:["n1"]}},partnership:{N:{tab:["n1"]}},party:{N:{tab:["n3"]}},pass:{N:{tab:["n2"]},V:{tab:"v87"}},passage:{N:{tab:["n1"]}},passenger:{N:{tab:["n1"]}},passion:{N:{tab:["n1"]}},passionate:{A:{tab:["a1"]}},passive:{A:{tab:["a1"]}},passport:{N:{tab:["n1"]}},past:{A:{tab:["a1"]},Adv:{tab:["b1"]},N:{tab:["n1"]},P:{tab:["pp"]}},pasture:{N:{tab:["n1"]}},pat:{V:{tab:"v14"}},patch:{N:{tab:["n2"]}},patent:{N:{tab:["n1"]}},path:{N:{tab:["n1"]}},patience:{N:{tab:["n5"]}},patient:{A:{tab:["a1"]},N:{tab:["n1"]}},patrol:{N:{tab:["n1"]}},patron:{N:{tab:["n1"]}},pattern:{N:{tab:["n1"]}},pause:{N:{tab:["n1"]},V:{tab:"v3"}},pavement:{N:{tab:["n1"]}},pay:{N:{tab:["n5"]},V:{tab:"v19"}},payable:{A:{tab:["a1"]}},payment:{N:{tab:["n1"]}},peace:{N:{tab:["n5"]}},peaceful:{A:{tab:["a1"]}},peak:{N:{tab:["n1"]}},peasant:{N:{tab:["n1"]}},peculiar:{A:{tab:["a1"]}},pedestrian:{N:{tab:["n1"]}},peer:{N:{tab:["n1"]},V:{tab:"v1"}},pen:{N:{tab:["n1"]}},penalty:{N:{tab:["n3"]}},pencil:{N:{tab:["n1"]}},penetrate:{V:{tab:"v3"}},penny:{N:{tab:["n3"]}},pension:{N:{tab:["n1"]}},pensioner:{N:{tab:["n1"]}},people:{N:{tab:["n6"]}},pepper:{N:{tab:["n1"]}},per:{P:{tab:["pp"]}},perceive:{V:{tab:"v3"}},percentage:{N:{tab:["n1"]}},perception:{N:{tab:["n1"]}},perfect:{A:{tab:["a1"]}},perfectly:{Adv:{tab:["b1"]}},perform:{V:{tab:"v1"}},performance:{N:{tab:["n1"]}},performer:{N:{tab:["n1"]}},perhaps:{Adv:{tab:["b1"]}},period:{N:{tab:["n1"]}},permanent:{A:{tab:["a1"]}},permanently:{Adv:{tab:["b1"]}},permission:{N:{tab:["n5"]}},permit:{V:{tab:"v14"}},persist:{V:{tab:"v1"}},persistent:{A:{tab:["a1"]}},person:{N:{tab:["n1"]}},personal:{A:{tab:["a1"]}},personality:{N:{tab:["n3"]}},personally:{Adv:{tab:["b1"]}},personnel:{N:{tab:["n1"]}},perspective:{N:{tab:["n1"]}},persuade:{V:{tab:"v3"}},pest:{N:{tab:["n1"]}},pet:{N:{tab:["n1"]}},petition:{N:{tab:["n1"]}},petrol:{N:{tab:["n5"]}},petty:{A:{tab:["a4"]}},phase:{N:{tab:["n1"]}},phenomenon:{N:{tab:["n26"]}},philosopher:{N:{tab:["n1"]}},philosophical:{A:{tab:["a1"]}},philosophy:{N:{tab:["n3"]}},phone:{N:{tab:["n1"]},V:{tab:"v3"}},photo:{N:{tab:["n1"]}},photograph:{N:{tab:["n1"]},V:{tab:"v1"}},photographer:{N:{tab:["n1"]}},photographic:{A:{tab:["a1"]}},photography:{N:{tab:["n5"]}},phrase:{N:{tab:["n1"]}},physical:{A:{tab:["a1"]}},physically:{Adv:{tab:["b1"]}},physician:{N:{tab:["n1"]}},physics:{N:{tab:["n5"]}},piano:{N:{tab:["n1"]}},pick:{V:{tab:"v1"}},picture:{N:{tab:["n1"]},V:{tab:"v3"}},pie:{N:{tab:["n1"]}},piece:{N:{tab:["n1"]}},pier:{N:{tab:["n1"]}},pig:{N:{tab:["n1"]}},pigeon:{N:{tab:["n1"]}},pile:{N:{tab:["n1"]},V:{tab:"v3"}},pill:{N:{tab:["n1"]}},pillar:{N:{tab:["n1"]}},pillow:{N:{tab:["n1"]}},pilot:{N:{tab:["n1"]}},pin:{N:{tab:["n1"]},V:{tab:"v11"}},pine:{N:{tab:["n1"]}},pink:{A:{tab:["a3"]}},pint:{N:{tab:["n1"]}},pioneer:{N:{tab:["n1"]}},pipe:{N:{tab:["n1"]}},pit:{N:{tab:["n1"]}},pitch:{N:{tab:["n2"]}},pity:{N:{tab:["n3"]}},place:{N:{tab:["n1"]},V:{tab:"v3"}},plain:{A:{tab:["a3"]},N:{tab:["n1"]}},plaintiff:{N:{tab:["n1"]}},plan:{N:{tab:["n1"]},V:{tab:"v11"}},plane:{N:{tab:["n1"]}},planet:{N:{tab:["n1"]}},planner:{N:{tab:["n1"]}},plant:{N:{tab:["n1"]},V:{tab:"v1"}},plasma:{N:{tab:["n5"]}},plaster:{N:{tab:["n1"]}},plastic:{N:{tab:["n1"]}},plate:{N:{tab:["n1"]}},platform:{N:{tab:["n1"]}},plausible:{A:{tab:["a1"]}},play:{N:{tab:["n1"]},V:{tab:"v1"}},player:{N:{tab:["n1"]}},plea:{N:{tab:["n1"]}},plead:{V:{tab:"v165"}},pleasant:{A:{tab:["a1"]}},please:{V:{tab:"v3"}},pleased:{A:{tab:["a1"]}},pleasure:{N:{tab:["n1"]}},pledge:{V:{tab:"v3"}},plot:{N:{tab:["n1"]},V:{tab:"v14"}},plug:{V:{tab:"v7"}},plunge:{V:{tab:"v3"}},plus:{P:{tab:["pp"]}},pocket:{N:{tab:["n1"]}},poem:{N:{tab:["n1"]}},poet:{N:{tab:["n1"]}},poetry:{N:{tab:["n5"]}},point:{N:{tab:["n1"]},V:{tab:"v1"}},poison:{N:{tab:["n1"]},V:{tab:"v1"}},pole:{N:{tab:["n1"]}},police:{N:{tab:["n4"]}},policeman:{N:{tab:["n7"]}},policy:{N:{tab:["n3"]}},polish:{V:{tab:"v2"}},polite:{A:{tab:["a2"]}},political:{A:{tab:["a1"]}},politically:{Adv:{tab:["b1"]}},politician:{N:{tab:["n1"]}},politics:{N:{tab:["n5"]}},poll:{N:{tab:["n1"]}},pollution:{N:{tab:["n5"]}},polytechnic:{N:{tab:["n1"]}},pond:{N:{tab:["n1"]}},pony:{N:{tab:["n3"]}},pool:{N:{tab:["n1"]}},poor:{A:{tab:["a3"]}},poorly:{Adv:{tab:["b1"]}},pop:{N:{tab:["n1"]},V:{tab:"v12"}},popular:{A:{tab:["a1"]}},popularity:{N:{tab:["n5"]}},population:{N:{tab:["n1"]}},port:{N:{tab:["n1"]}},portable:{A:{tab:["a1"]}},porter:{N:{tab:["n1"]}},portfolio:{N:{tab:["n1"]}},portion:{N:{tab:["n1"]}},portrait:{N:{tab:["n1"]}},portray:{V:{tab:"v1"}},pose:{V:{tab:"v3"}},position:{N:{tab:["n1"]},V:{tab:"v1"}},positive:{A:{tab:["a1"]}},positively:{Adv:{tab:["b1"]}},possess:{V:{tab:"v2"}},possession:{N:{tab:["n1"]}},possibility:{N:{tab:["n3"]}},possible:{A:{tab:["a1"]}},possibly:{Adv:{tab:["b1"]}},post:{N:{tab:["n1"]},V:{tab:"v1"}},postcard:{N:{tab:["n1"]}},poster:{N:{tab:["n1"]}},postpone:{V:{tab:"v3"}},pot:{N:{tab:["n1"]}},potato:{N:{tab:["n2"]}},potential:{A:{tab:["a1"]},N:{tab:["n1"]}},potentially:{Adv:{tab:["b1"]}},pottery:{N:{tab:["n3"]}},pound:{N:{tab:["n1"]}},pour:{V:{tab:"v1"}},poverty:{N:{tab:["n5"]}},powder:{N:{tab:["n1"]}},power:{N:{tab:["n1"]},V:{tab:"v1"}},powerful:{A:{tab:["a1"]}},practical:{A:{tab:["a1"]}},practically:{Adv:{tab:["b1"]}},practice:{N:{tab:["n1"]}},practise:{V:{tab:"v3"}},practitioner:{N:{tab:["n1"]}},praise:{N:{tab:["n1"]},V:{tab:"v3"}},pray:{V:{tab:"v1"}},prayer:{N:{tab:["n1"]}},preach:{V:{tab:"v2"}},precaution:{N:{tab:["n1"]}},precede:{V:{tab:"v3"}},precedent:{N:{tab:["n1"]}},precious:{A:{tab:["a1"]}},precise:{A:{tab:["a1"]}},precisely:{Adv:{tab:["b1"]}},precision:{N:{tab:["n5"]}},predator:{N:{tab:["n1"]}},predecessor:{N:{tab:["n1"]}},predict:{V:{tab:"v1"}},predictable:{A:{tab:["a1"]}},prediction:{N:{tab:["n1"]}},predominantly:{Adv:{tab:["b1"]}},prefer:{V:{tab:"v13"}},preference:{N:{tab:["n1"]}},pregnancy:{N:{tab:["n3"]}},pregnant:{A:{tab:["a1"]}},prejudice:{N:{tab:["n1"]}},preliminary:{A:{tab:["a1"]}},premature:{A:{tab:["a1"]}},premier:{A:{tab:["a1"]}},premise:{N:{tab:["n1"]}},premium:{N:{tab:["n1"]}},preoccupation:{N:{tab:["n1"]}},preparation:{N:{tab:["n1"]}},prepare:{V:{tab:"v3"}},prescribe:{V:{tab:"v3"}},prescription:{N:{tab:["n1"]}},presence:{N:{tab:["n5"]}},present:{A:{tab:["a1"]},N:{tab:["n1"]},V:{tab:"v1"}},presentation:{N:{tab:["n1"]}},presently:{Adv:{tab:["b1"]}},preservation:{N:{tab:["n5"]}},preserve:{V:{tab:"v3"}},presidency:{N:{tab:["n3"]}},president:{N:{tab:["n1"]}},presidential:{A:{tab:["a1"]}},press:{N:{tab:["n2"]},V:{tab:"v2"}},pressure:{N:{tab:["n1"]}},prestige:{N:{tab:["n5"]}},presumably:{Adv:{tab:["b1"]}},presume:{V:{tab:"v3"}},pretend:{V:{tab:"v1"}},pretty:{A:{tab:["a4"]},Adv:{tab:["b1"]}},prevail:{V:{tab:"v1"}},prevalence:{N:{tab:["n5"]}},prevent:{V:{tab:"v1"}},prevention:{N:{tab:["n5"]}},previous:{A:{tab:["a1"]}},previously:{Adv:{tab:["b1"]}},prey:{N:{tab:["n1"]}},price:{N:{tab:["n1"]},V:{tab:"v3"}},pride:{N:{tab:["n1"]}},priest:{N:{tab:["n1"]}},primarily:{Adv:{tab:["b1"]}},primary:{A:{tab:["a1"]},N:{tab:["n3"]}},prime:{A:{tab:["a1"]}},primitive:{A:{tab:["a1"]}},prince:{N:{tab:["n1"]}},princess:{N:{g:"f",tab:["n88"]}},principal:{A:{tab:["a1"]},N:{tab:["n1"]}},principally:{Adv:{tab:["b1"]}},principle:{N:{tab:["n1"]}},print:{N:{tab:["n1"]},V:{tab:"v1"}},printer:{N:{tab:["n1"]}},printing:{N:{tab:["n1"]}},prior:{A:{tab:["a1"]}},priority:{N:{tab:["n3"]}},prison:{N:{tab:["n1"]}},prisoner:{N:{tab:["n1"]}},privacy:{N:{tab:["n5"]}},private:{A:{tab:["a1"]}},privately:{Adv:{tab:["b1"]}},privatization:{N:{tab:["n5"]}},privilege:{N:{tab:["n1"]}},privileged:{A:{tab:["a1"]}},prize:{N:{tab:["n1"]}},probability:{N:{tab:["n3"]}},probable:{A:{tab:["a1"]}},probably:{Adv:{tab:["b1"]}},probe:{N:{tab:["n1"]},V:{tab:"v3"}},problem:{N:{tab:["n1"]}},procedure:{N:{tab:["n1"]}},proceed:{V:{tab:"v1"}},proceeding:{N:{tab:["n1"]}},process:{N:{tab:["n2"]},V:{tab:"v2"}},procession:{N:{tab:["n1"]}},proclaim:{V:{tab:"v1"}},produce:{N:{tab:["n5"]},V:{tab:"v3"}},producer:{N:{tab:["n1"]}},product:{N:{tab:["n1"]}},production:{N:{tab:["n1"]}},productive:{A:{tab:["a1"]}},productivity:{N:{tab:["n5"]}},profession:{N:{tab:["n1"]}},professional:{A:{tab:["a1"]},N:{tab:["n1"]}},professor:{N:{tab:["n1"]}},profile:{N:{tab:["n1"]}},profit:{N:{tab:["n1"]},V:{tab:"v1"}},profitable:{A:{tab:["a1"]}},profound:{A:{tab:["a1"]}},program:{N:{tab:["n1"]},V:{tab:"v10"}},programme:{N:{tab:["n1"]}},progress:{N:{tab:["n2"]},V:{tab:"v2"}},progressive:{A:{tab:["a1"]}},prohibit:{V:{tab:"v1"}},project:{N:{tab:["n1"]},V:{tab:"v1"}},projection:{N:{tab:["n1"]}},prolonged:{A:{tab:["a1"]}},prominent:{A:{tab:["a1"]}},promise:{N:{tab:["n1"]},V:{tab:"v3"}},promote:{V:{tab:"v3"}},promoter:{N:{tab:["n1"]}},promotion:{N:{tab:["n1"]}},prompt:{V:{tab:"v1"}},promptly:{Adv:{tab:["b1"]}},prone:{A:{tab:["a1"]}},pronounce:{V:{tab:"v3"}},proof:{N:{tab:["n1"]}},prop:{V:{tab:"v12"}},propaganda:{N:{tab:["n5"]}},proper:{A:{tab:["a1"]}},properly:{Adv:{tab:["b1"]}},property:{N:{tab:["n3"]}},proportion:{N:{tab:["n1"]}},proportional:{A:{tab:["a1"]}},proposal:{N:{tab:["n1"]}},propose:{V:{tab:"v3"}},proposition:{N:{tab:["n1"]}},proprietor:{N:{tab:["n1"]}},prosecute:{V:{tab:"v3"}},prosecution:{N:{tab:["n1"]}},prospect:{N:{tab:["n1"]}},prospective:{A:{tab:["a1"]}},prosperity:{N:{tab:["n5"]}},protect:{V:{tab:"v1"}},protection:{N:{tab:["n1"]}},protective:{A:{tab:["a1"]}},protein:{N:{tab:["n1"]}},protest:{N:{tab:["n1"]},V:{tab:"v1"}},protocol:{N:{tab:["n1"]}},proud:{A:{tab:["a3"]}},prove:{V:{tab:"v52"}},provide:{V:{tab:"v3"}},provider:{N:{tab:["n1"]}},province:{N:{tab:["n1"]}},provincial:{A:{tab:["a1"]}},provision:{N:{tab:["n1"]}},provisional:{A:{tab:["a1"]}},provoke:{V:{tab:"v3"}},psychiatric:{A:{tab:["a1"]}},psychological:{A:{tab:["a1"]}},psychologist:{N:{tab:["n1"]}},psychology:{N:{tab:["n3"]}},pub:{N:{tab:["n1"]}},public:{A:{tab:["a1"]},N:{tab:["n1"]}},publication:{N:{tab:["n1"]}},publicity:{N:{tab:["n5"]}},publicly:{Adv:{tab:["b1"]}},publish:{V:{tab:"v2"}},publisher:{N:{tab:["n1"]}},pudding:{N:{tab:["n1"]}},pull:{V:{tab:"v1"}},pulse:{N:{tab:["n1"]}},pump:{N:{tab:["n1"]},V:{tab:"v1"}},punch:{N:{tab:["n2"]},V:{tab:"v2"}},punish:{V:{tab:"v2"}},punishment:{N:{tab:["n1"]}},pupil:{N:{tab:["n1"]}},purchase:{N:{tab:["n1"]},V:{tab:"v3"}},purchaser:{N:{tab:["n1"]}},pure:{A:{tab:["a2"]}},purely:{Adv:{tab:["b1"]}},purple:{A:{tab:["a1"]}},purpose:{N:{tab:["n1"]}},pursue:{V:{tab:"v3"}},pursuit:{N:{tab:["n1"]}},push:{N:{tab:["n2"]},V:{tab:"v2"}},put:{V:{tab:"v17"}},puzzle:{V:{tab:"v3"}},qualification:{N:{tab:["n1"]}},qualified:{A:{tab:["a1"]}},qualify:{V:{tab:"v4"}},quality:{N:{tab:["n3"]}},quantitative:{A:{tab:["a1"]}},quantity:{N:{tab:["n3"]}},quantum:{N:{tab:["n11"]}},quarry:{N:{tab:["n3"]}},quarter:{N:{tab:["n1"]}},queen:{N:{g:"f",tab:["n87"]}},query:{N:{tab:["n3"]}},quest:{N:{tab:["n1"]}},question:{N:{tab:["n1"]},V:{tab:"v1"}},questionnaire:{N:{tab:["n1"]}},queue:{N:{tab:["n1"]}},quick:{A:{tab:["a3"]},Adv:{tab:["b1"]}},quickly:{Adv:{tab:["b1"]}},quid:{N:{tab:["n1"]}},quiet:{A:{tab:["a3"]}},quietly:{Adv:{tab:["b1"]}},quit:{V:{tab:"v38"}},quite:{Adv:{tab:["b1"]}},quota:{N:{tab:["n1"]}},quotation:{N:{tab:["n1"]}},quote:{V:{tab:"v3"}},rabbit:{N:{tab:["n1"]}},race:{N:{tab:["n1"]},V:{tab:"v3"}},racial:{A:{tab:["a1"]}},racism:{N:{tab:["n5"]}},rack:{N:{tab:["n1"]}},radiation:{N:{tab:["n1"]}},radical:{A:{tab:["a1"]},N:{tab:["n1"]}},radio:{N:{tab:["n1"]}},rage:{N:{tab:["n1"]}},raid:{N:{tab:["n1"]}},rail:{N:{tab:["n1"]}},railway:{N:{tab:["n1"]}},rain:{N:{tab:["n1"]},V:{tab:"v1"}},raise:{V:{tab:"v3"}},rally:{N:{tab:["n3"]},V:{tab:"v4"}},ram:{N:{tab:["n1"]}},range:{N:{tab:["n1"]},V:{tab:"v3"}},rank:{N:{tab:["n1"]},V:{tab:"v1"}},rape:{N:{tab:["n1"]},V:{tab:"v3"}},rapid:{A:{tab:["a1"]}},rapidly:{Adv:{tab:["b1"]}},rare:{A:{tab:["a2"]}},rarely:{Adv:{tab:["b1"]}},rat:{N:{tab:["n1"]}},rate:{N:{tab:["n1"]},V:{tab:"v3"}},rather:{Adv:{tab:["b1"]}},rating:{N:{tab:["n1"]}},ratio:{N:{tab:["n1"]}},rational:{A:{tab:["a1"]}},raw:{A:{tab:["a1"]}},ray:{N:{tab:["n1"]}},reach:{N:{tab:["n2"]},V:{tab:"v2"}},react:{V:{tab:"v1"}},reaction:{N:{tab:["n1"]}},reactor:{N:{tab:["n1"]}},read:{V:{tab:"v18"}},reader:{N:{tab:["n1"]}},readily:{Adv:{tab:["b1"]}},reading:{N:{tab:["n1"]}},ready:{A:{tab:["a4"]}},real:{A:{tab:["a1"]}},realism:{N:{tab:["n5"]}},realistic:{A:{tab:["a1"]}},reality:{N:{tab:["n3"]}},realize:{V:{tab:"v3"}},really:{Adv:{tab:["b1"]}},realm:{N:{tab:["n1"]}},rear:{N:{tab:["n1"]},V:{tab:"v1"}},reason:{N:{tab:["n1"]}},reasonable:{A:{tab:["a1"]}},reasonably:{Adv:{tab:["b1"]}},reasoning:{N:{tab:["n5"]}},reassure:{V:{tab:"v3"}},rebel:{N:{tab:["n1"]}},rebellion:{N:{tab:["n1"]}},rebuild:{V:{tab:"v23"}},recall:{V:{tab:"v1"}},receipt:{N:{tab:["n1"]}},receive:{V:{tab:"v3"}},receiver:{N:{tab:["n1"]}},recent:{A:{tab:["a1"]}},recently:{Adv:{tab:["b1"]}},reception:{N:{tab:["n1"]}},recession:{N:{tab:["n1"]}},recipe:{N:{tab:["n1"]}},recipient:{N:{tab:["n1"]}},reckon:{V:{tab:"v1"}},recognition:{N:{tab:["n5"]}},recognize:{V:{tab:"v3"}},recommend:{V:{tab:"v1"}},recommendation:{N:{tab:["n1"]}},recommended:{A:{tab:["a1"]}},reconcile:{V:{tab:"v3"}},reconstruction:{N:{tab:["n1"]}},record:{N:{tab:["n1"]},V:{tab:"v1"}},recorder:{N:{tab:["n1"]}},recording:{N:{tab:["n1"]}},recover:{V:{tab:"v1"}},recovery:{N:{tab:["n3"]}},recreation:{N:{tab:["n1"]}},recruit:{N:{tab:["n1"]},V:{tab:"v1"}},recruitment:{N:{tab:["n1"]}},recycle:{V:{tab:"v3"}},red:{A:{tab:["a6"]},N:{tab:["n1"]}},reduce:{V:{tab:"v3"}},reduction:{N:{tab:["n1"]}},redundancy:{N:{tab:["n3"]}},redundant:{A:{tab:["a1"]}},refer:{V:{tab:"v13"}},referee:{N:{tab:["n1"]}},reference:{N:{tab:["n1"]}},referendum:{N:{tab:["n1"]}},reflect:{V:{tab:"v1"}},reflection:{N:{tab:["n1"]}},reform:{N:{tab:["n1"]},V:{tab:"v1"}},reformer:{N:{tab:["n1"]}},refuge:{N:{tab:["n1"]}},refugee:{N:{tab:["n1"]}},refusal:{N:{tab:["n1"]}},refuse:{V:{tab:"v3"}},regain:{V:{tab:"v1"}},regard:{N:{tab:["n1"]},V:{tab:"v1"}},regime:{N:{tab:["n1"]}},regiment:{N:{tab:["n1"]}},region:{N:{tab:["n1"]}},regional:{A:{tab:["a1"]}},register:{N:{tab:["n1"]},V:{tab:"v1"}},registration:{N:{tab:["n1"]}},regret:{N:{tab:["n1"]},V:{tab:"v14"}},regular:{A:{tab:["a1"]}},regularly:{Adv:{tab:["b1"]}},regulate:{V:{tab:"v3"}},regulation:{N:{tab:["n1"]}},regulatory:{A:{tab:["a1"]}},rehabilitation:{N:{tab:["n1"]}},rehearsal:{N:{tab:["n1"]}},reign:{N:{tab:["n1"]}},reinforce:{V:{tab:"v3"}},reject:{V:{tab:"v1"}},rejection:{N:{tab:["n1"]}},relate:{V:{tab:"v3"}},relation:{N:{tab:["n1"]}},relationship:{N:{tab:["n1"]}},relative:{A:{tab:["a1"]},N:{tab:["n1"]}},relatively:{Adv:{tab:["b1"]}},relax:{V:{tab:"v2"}},relaxation:{N:{tab:["n1"]}},release:{N:{tab:["n1"]},V:{tab:"v3"}},relevance:{N:{tab:["n1"]}},relevant:{A:{tab:["a1"]}},reliable:{A:{tab:["a1"]}},reliance:{N:{tab:["n5"]}},relief:{N:{tab:["n1"]}},relieve:{V:{tab:"v3"}},religion:{N:{tab:["n1"]}},religious:{A:{tab:["a1"]}},reluctance:{N:{tab:["n5"]}},reluctant:{A:{tab:["a1"]}},reluctantly:{Adv:{tab:["b1"]}},rely:{V:{tab:"v4"}},remain:{V:{tab:"v1"}},remainder:{N:{tab:["n1"]}},remark:{N:{tab:["n1"]},V:{tab:"v1"}},remarkable:{A:{tab:["a1"]}},remarkably:{Adv:{tab:["b1"]}},remedy:{N:{tab:["n3"]}},remember:{V:{tab:"v1"}},remind:{V:{tab:"v1"}},reminder:{N:{tab:["n1"]}},remote:{A:{tab:["a2"]}},removal:{N:{tab:["n1"]}},remove:{V:{tab:"v3"}},renaissance:{N:{tab:["n1"]}},render:{V:{tab:"v1"}},renew:{V:{tab:"v1"}},renewal:{N:{tab:["n1"]}},rent:{N:{tab:["n1"]}},repair:{N:{tab:["n1"]},V:{tab:"v1"}},repay:{V:{tab:"v19"}},repayment:{N:{tab:["n1"]}},repeat:{V:{tab:"v1"}},repeated:{A:{tab:["a1"]}},repeatedly:{Adv:{tab:["b1"]}},repetition:{N:{tab:["n1"]}},replace:{V:{tab:"v3"}},replacement:{N:{tab:["n1"]}},reply:{N:{tab:["n3"]},V:{tab:"v4"}},report:{N:{tab:["n1"]},V:{tab:"v1"}},reportedly:{Adv:{tab:["b1"]}},reporter:{N:{tab:["n1"]}},represent:{V:{tab:"v1"}},representation:{N:{tab:["n1"]}},representative:{A:{tab:["a1"]},N:{tab:["n1"]}},reproduce:{V:{tab:"v3"}},reproduction:{N:{tab:["n1"]}},republic:{N:{tab:["n1"]}},republican:{N:{tab:["n1"]}},reputation:{N:{tab:["n1"]}},request:{N:{tab:["n1"]},V:{tab:"v1"}},require:{V:{tab:"v3"}},requirement:{N:{tab:["n1"]}},rescue:{N:{tab:["n1"]},V:{tab:"v3"}},research:{N:{tab:["n2"]},V:{tab:"v2"}},researcher:{N:{tab:["n1"]}},resemble:{V:{tab:"v3"}},resent:{V:{tab:"v1"}},resentment:{N:{tab:["n5"]}},reservation:{N:{tab:["n1"]}},reserve:{N:{tab:["n1"]},V:{tab:"v3"}},reservoir:{N:{tab:["n1"]}},residence:{N:{tab:["n1"]}},resident:{A:{tab:["a1"]},N:{tab:["n1"]}},residential:{A:{tab:["a1"]}},residue:{N:{tab:["n1"]}},resign:{V:{tab:"v1"}},resignation:{N:{tab:["n1"]}},resist:{V:{tab:"v1"}},resistance:{N:{tab:["n1"]}},resolution:{N:{tab:["n1"]}},resolve:{V:{tab:"v3"}},resort:{N:{tab:["n1"]}},resource:{N:{tab:["n1"]}},respect:{N:{tab:["n1"]},V:{tab:"v1"}},respectable:{A:{tab:["a1"]}},respective:{A:{tab:["a1"]}},respectively:{Adv:{tab:["b1"]}},respond:{V:{tab:"v1"}},respondent:{N:{tab:["n1"]}},response:{N:{tab:["n1"]}},responsibility:{N:{tab:["n3"]}},responsible:{A:{tab:["a1"]}},rest:{N:{tab:["n1"]},V:{tab:"v1"}},restaurant:{N:{tab:["n1"]}},restoration:{N:{tab:["n1"]}},restore:{V:{tab:"v3"}},restrain:{V:{tab:"v1"}},restraint:{N:{tab:["n1"]}},restrict:{V:{tab:"v1"}},restriction:{N:{tab:["n1"]}},restrictive:{A:{tab:["a1"]}},result:{N:{tab:["n1"]},V:{tab:"v1"}},resume:{V:{tab:"v3"}},retailer:{N:{tab:["n1"]}},retain:{V:{tab:"v1"}},retention:{N:{tab:["n5"]}},retire:{V:{tab:"v3"}},retired:{A:{tab:["a1"]}},retirement:{N:{tab:["n1"]}},retreat:{N:{tab:["n1"]},V:{tab:"v1"}},retrieve:{V:{tab:"v3"}},return:{N:{tab:["n1"]},V:{tab:"v1"}},reveal:{V:{tab:"v1"}},revelation:{N:{tab:["n1"]}},revenge:{N:{tab:["n5"]}},revenue:{N:{tab:["n1"]}},reverse:{N:{tab:["n1"]},V:{tab:"v3"}},revert:{V:{tab:"v1"}},review:{N:{tab:["n1"]},V:{tab:"v1"}},revise:{V:{tab:"v3"}},revision:{N:{tab:["n1"]}},revival:{N:{tab:["n1"]}},revive:{V:{tab:"v3"}},revolution:{N:{tab:["n1"]}},revolutionary:{A:{tab:["a1"]}},reward:{N:{tab:["n1"]},V:{tab:"v1"}},rhetoric:{N:{tab:["n5"]}},rhythm:{N:{tab:["n1"]}},rib:{N:{tab:["n1"]}},ribbon:{N:{tab:["n1"]}},rice:{N:{tab:["n5"]}},rich:{A:{tab:["a3"]}},rid:{V:{tab:"v39"}},ride:{N:{tab:["n1"]},V:{tab:"v47"}},rider:{N:{tab:["n1"]}},ridge:{N:{tab:["n1"]}},ridiculous:{A:{tab:["a1"]}},rifle:{N:{tab:["n1"]}},right:{A:{tab:["a1"]},Adv:{tab:["b1"]},N:{tab:["n1"]}},rightly:{Adv:{tab:["b1"]}},rigid:{A:{tab:["a1"]}},ring:{N:{tab:["n1"]},V:{tab:"v46"}},riot:{N:{tab:["n1"]}},rip:{V:{tab:"v12"}},rise:{N:{tab:["n1"]},V:{tab:"v63"}},risk:{N:{tab:["n1"]},V:{tab:"v1"}},ritual:{N:{tab:["n1"]}},rival:{N:{tab:["n1"]}},river:{N:{tab:["n1"]}},road:{N:{tab:["n1"]}},roar:{V:{tab:"v1"}},rob:{V:{tab:"v5"}},robbery:{N:{tab:["n3"]}},rock:{N:{tab:["n1"]},V:{tab:"v1"}},rocket:{N:{tab:["n1"]}},rod:{N:{tab:["n1"]}},role:{N:{tab:["n1"]}},roll:{N:{tab:["n1"]},V:{tab:"v1"}},romance:{N:{tab:["n1"]}},romantic:{A:{tab:["a1"]}},roof:{N:{tab:["n1"]}},room:{N:{tab:["n1"]}},root:{N:{tab:["n1"]},V:{tab:"v1"}},rope:{N:{tab:["n1"]}},rose:{N:{tab:["n1"]}},rotation:{N:{tab:["n1"]}},rotten:{A:{tab:["a1"]}},rough:{A:{tab:["a3"]}},roughly:{Adv:{tab:["b1"]}},round:{A:{tab:["a3"]},N:{tab:["n1"]},P:{tab:["pp"]},V:{tab:"v1"}},route:{N:{tab:["n1"]}},routine:{N:{tab:["n1"]}},row:{N:{tab:["n1"]},V:{tab:"v1"}},royal:{A:{tab:["a1"]}},royalty:{N:{tab:["n3"]}},rub:{V:{tab:"v5"}},rubbish:{N:{tab:["n5"]}},rude:{A:{tab:["a2"]}},rug:{N:{tab:["n1"]}},rugby:{N:{tab:["n5"]}},ruin:{N:{tab:["n1"]},V:{tab:"v1"}},rule:{N:{tab:["n1"]},V:{tab:"v3"}},ruler:{N:{tab:["n1"]}},ruling:{A:{tab:["a1"]},N:{tab:["n1"]}},rumour:{N:{tab:["n1"]}},run:{N:{tab:["n1"]},V:{tab:"v33"}},runner:{N:{tab:["n1"]}},running:{A:{tab:["a1"]}},rural:{A:{tab:["a1"]}},rush:{N:{tab:["n2"]},V:{tab:"v2"}},sack:{N:{tab:["n1"]},V:{tab:"v1"}},sacred:{A:{tab:["a1"]}},sacrifice:{N:{tab:["n1"]},V:{tab:"v3"}},sad:{A:{tab:["a6"]}},sadly:{Adv:{tab:["b1"]}},safe:{A:{tab:["a2"]}},safely:{Adv:{tab:["b1"]}},safety:{N:{tab:["n5"]}},sail:{N:{tab:["n1"]},V:{tab:"v1"}},sailor:{N:{tab:["n1"]}},saint:{N:{tab:["n1"]}},sake:{N:{tab:["n1"]}},salad:{N:{tab:["n1"]}},salary:{N:{tab:["n3"]}},sale:{N:{tab:["n1"]}},salmon:{N:{tab:["n4"]}},salon:{N:{tab:["n1"]}},salt:{N:{tab:["n1"]}},salvation:{N:{tab:["n5"]}},same:{A:{tab:["a1"]}},sample:{N:{tab:["n1"]},V:{tab:"v3"}},sanction:{N:{tab:["n1"]}},sanctuary:{N:{tab:["n3"]}},sand:{N:{tab:["n1"]}},sandwich:{N:{tab:["n2"]}},satellite:{N:{tab:["n1"]}},satisfaction:{N:{tab:["n1"]}},satisfactory:{A:{tab:["a1"]}},satisfy:{V:{tab:"v4"}},sauce:{N:{tab:["n1"]}},sausage:{N:{tab:["n1"]}},save:{V:{tab:"v3"}},saving:{N:{tab:["n1"]}},say:{N:{tab:["n1"]},V:{tab:"v19"}},saying:{N:{tab:["n1"]}},scale:{N:{tab:["n1"]}},scan:{V:{tab:"v11"}},scandal:{N:{tab:["n1"]}},scar:{V:{tab:"v13"}},scarcely:{Adv:{tab:["b1"]}},scatter:{V:{tab:"v1"}},scenario:{N:{tab:["n1"]}},scene:{N:{tab:["n1"]}},scent:{N:{tab:["n1"]}},schedule:{N:{tab:["n1"]},V:{tab:"v3"}},scheme:{N:{tab:["n1"]}},scholar:{N:{tab:["n1"]}},scholarship:{N:{tab:["n1"]}},school:{N:{tab:["n1"]}},science:{N:{tab:["n1"]}},scientific:{A:{tab:["a1"]}},scientist:{N:{tab:["n1"]}},scope:{N:{tab:["n5"]}},score:{N:{tab:["n1"]},V:{tab:"v3"}},scramble:{V:{tab:"v3"}},scrap:{N:{tab:["n1"]}},scrape:{V:{tab:"v3"}},scratch:{V:{tab:"v2"}},scream:{N:{tab:["n1"]},V:{tab:"v1"}},screen:{N:{tab:["n1"]},V:{tab:"v1"}},screw:{N:{tab:["n1"]},V:{tab:"v1"}},script:{N:{tab:["n1"]}},scrutiny:{N:{tab:["n3"]}},sculpture:{N:{tab:["n1"]}},sea:{N:{tab:["n1"]}},seal:{N:{tab:["n1"]},V:{tab:"v1"}},search:{N:{tab:["n2"]},V:{tab:"v2"}},season:{N:{tab:["n1"]}},seasonal:{A:{tab:["a1"]}},seat:{N:{tab:["n1"]},V:{tab:"v1"}},second:{N:{tab:["n1"]}},secondary:{A:{tab:["a1"]}},secondly:{Adv:{tab:["b1"]}},secret:{A:{tab:["a1"]},N:{tab:["n1"]}},secretary:{N:{tab:["n3"]}},secretion:{N:{tab:["n1"]}},section:{N:{tab:["n1"]}},sector:{N:{tab:["n1"]}},secular:{A:{tab:["a1"]}},secure:{A:{tab:["a1"]},V:{tab:"v3"}},security:{N:{tab:["n3"]}},sediment:{N:{tab:["n5"]}},see:{V:{tab:"v50"}},seed:{N:{tab:["n1"]}},seek:{V:{tab:"v131"}},seem:{V:{tab:"v1"}},seemingly:{Adv:{tab:["b1"]}},segment:{N:{tab:["n1"]}},seize:{V:{tab:"v3"}},seldom:{Adv:{tab:["b1"]}},select:{A:{tab:["a1"]},V:{tab:"v1"}},selection:{N:{tab:["n1"]}},selective:{A:{tab:["a1"]}},self:{N:{tab:["n9"]}},sell:{V:{tab:"v31"}},seller:{N:{tab:["n1"]}},semantic:{A:{tab:["a1"]}},"semi-final":{N:{tab:["n1"]}},seminar:{N:{tab:["n1"]}},senate:{N:{tab:["n1"]}},send:{V:{tab:"v23"}},senior:{A:{tab:["a1"]},N:{tab:["n1"]}},sensation:{N:{tab:["n1"]}},sense:{N:{tab:["n1"]},V:{tab:"v3"}},sensible:{A:{tab:["a1"]}},sensitive:{A:{tab:["a1"]}},sensitivity:{N:{tab:["n3"]}},sentence:{N:{tab:["n1"]},V:{tab:"v3"}},sentiment:{N:{tab:["n1"]}},separate:{A:{tab:["a1"]},V:{tab:"v3"}},separately:{Adv:{tab:["b1"]}},separation:{N:{tab:["n1"]}},sequence:{N:{tab:["n1"]}},sergeant:{N:{tab:["n1"]}},series:{N:{tab:["n4"]}},serious:{A:{tab:["a1"]}},seriously:{Adv:{tab:["b1"]}},serum:{N:{tab:["n5"]}},servant:{N:{tab:["n1"]}},serve:{V:{tab:"v3"}},server:{N:{tab:["n1"]}},service:{N:{tab:["n1"]},V:{tab:"v3"}},session:{N:{tab:["n1"]}},set:{N:{tab:["n1"]},V:{tab:"v17"}},setting:{N:{tab:["n1"]}},settle:{V:{tab:"v3"}},settlement:{N:{tab:["n1"]}},severe:{A:{tab:["a2"]}},severely:{Adv:{tab:["b1"]}},sex:{N:{tab:["n2"]}},sexual:{A:{tab:["a1"]}},sexuality:{N:{tab:["n5"]}},sexually:{Adv:{tab:["b1"]}},shade:{N:{tab:["n1"]}},shadow:{N:{tab:["n1"]}},shaft:{N:{tab:["n1"]}},shake:{V:{tab:"v20"}},shall:{V:{tab:"v162"}},shallow:{A:{tab:["a1"]}},shame:{N:{tab:["n5"]}},shape:{N:{tab:["n1"]},V:{tab:"v3"}},share:{N:{tab:["n1"]},V:{tab:"v3"}},shareholder:{N:{tab:["n1"]}},sharp:{A:{tab:["a3"]}},sharply:{Adv:{tab:["b1"]}},shatter:{V:{tab:"v1"}},shed:{N:{tab:["n1"]},V:{tab:"v39"}},sheep:{N:{tab:["n4"]}},sheer:{A:{tab:["a3"]}},sheet:{N:{tab:["n1"]}},shelf:{N:{tab:["n9"]}},shell:{N:{tab:["n1"]}},shelter:{N:{tab:["n1"]}},shield:{N:{tab:["n1"]}},shift:{N:{tab:["n1"]},V:{tab:"v1"}},shilling:{N:{tab:["n1"]}},shine:{V:{tab:"v66"}},ship:{N:{tab:["n1"]},V:{tab:"v12"}},shirt:{N:{tab:["n1"]}},shit:{N:{tab:["n5"]}},shiver:{V:{tab:"v1"}},shock:{N:{tab:["n1"]},V:{tab:"v1"}},shoe:{N:{tab:["n1"]}},shoot:{V:{tab:"v40"}},shop:{N:{tab:["n1"]},V:{tab:"v12"}},shopping:{N:{tab:["n5"]}},shore:{N:{tab:["n1"]}},short:{A:{tab:["a3"]},Adv:{tab:["b1"]},N:{tab:["n1"]}},"short-term":{A:{tab:["a1"]}},shortage:{N:{tab:["n1"]}},shortly:{Adv:{tab:["b1"]}},shot:{N:{tab:["n1"]}},shoulder:{N:{tab:["n1"]}},shout:{N:{tab:["n1"]},V:{tab:"v1"}},show:{N:{tab:["n1"]},V:{tab:"v57"}},shower:{N:{tab:["n1"]}},shrink:{V:{tab:"v64"}},shrub:{N:{tab:["n1"]}},shrug:{V:{tab:"v7"}},shut:{V:{tab:"v17"}},shy:{A:{tab:["a3"]}},sick:{A:{tab:["a1"]}},sickness:{N:{tab:["n2"]}},side:{N:{tab:["n1"]}},sideways:{Adv:{tab:["b1"]}},siege:{N:{tab:["n1"]}},sigh:{N:{tab:["n1"]},V:{tab:"v1"}},sight:{N:{tab:["n1"]}},sign:{N:{tab:["n1"]},V:{tab:"v1"}},signal:{N:{tab:["n1"]},V:{tab:"v9"}},signature:{N:{tab:["n1"]}},significance:{N:{tab:["n5"]}},significant:{A:{tab:["a1"]}},significantly:{Adv:{tab:["b1"]}},silence:{N:{tab:["n1"]}},silent:{A:{tab:["a1"]}},silently:{Adv:{tab:["b1"]}},silk:{N:{tab:["n1"]}},silly:{A:{tab:["a4"]}},silver:{N:{tab:["n5"]}},similar:{A:{tab:["a1"]}},similarity:{N:{tab:["n3"]}},similarly:{Adv:{tab:["b1"]}},simple:{A:{tab:["a2"]}},simplicity:{N:{tab:["n5"]}},simply:{Adv:{tab:["b1"]}},simultaneously:{Adv:{tab:["b1"]}},sin:{N:{tab:["n1"]}},since:{Adv:{tab:["b1"]},P:{tab:["pp"]}},sincerely:{Adv:{tab:["b1"]}},sing:{V:{tab:"v46"}},singer:{N:{tab:["n1"]}},single:{A:{tab:["a1"]},N:{tab:["n1"]}},sink:{N:{tab:["n1"]},V:{tab:"v64"}},sip:{V:{tab:"v12"}},sir:{N:{tab:["n1"]}},sister:{N:{g:"f",tab:["n87"]}},sit:{V:{tab:"v44"}},site:{N:{tab:["n1"]}},situation:{N:{tab:["n1"]}},size:{N:{tab:["n1"]}},skeleton:{N:{tab:["n1"]}},sketch:{N:{tab:["n2"]}},ski:{N:{tab:["n1"]}},skill:{N:{tab:["n1"]}},skilled:{A:{tab:["a1"]}},skin:{N:{tab:["n1"]}},skipper:{N:{tab:["n1"]}},skirt:{N:{tab:["n1"]}},skull:{N:{tab:["n1"]}},sky:{N:{tab:["n3"]}},slab:{N:{tab:["n1"]}},slam:{V:{tab:"v10"}},slap:{V:{tab:"v12"}},slave:{N:{tab:["n1"]}},sleep:{N:{tab:["n5"]},V:{tab:"v29"}},sleeve:{N:{tab:["n1"]}},slice:{N:{tab:["n1"]}},slide:{N:{tab:["n1"]},V:{tab:"v75"}},slight:{A:{tab:["a3"]}},slightly:{Adv:{tab:["b1"]}},slim:{A:{tab:["a9"]}},slip:{N:{tab:["n1"]},V:{tab:"v12"}},slogan:{N:{tab:["n1"]}},slope:{N:{tab:["n1"]}},slot:{N:{tab:["n1"]}},slow:{A:{tab:["a3"]},V:{tab:"v1"}},slowly:{Adv:{tab:["b1"]}},slump:{V:{tab:"v1"}},small:{A:{tab:["a3"]}},smart:{A:{tab:["a3"]}},smash:{V:{tab:"v2"}},smell:{N:{tab:["n1"]},V:{tab:"v99"}},smile:{N:{tab:["n1"]},V:{tab:"v3"}},smoke:{N:{tab:["n1"]},V:{tab:"v3"}},smooth:{A:{tab:["a3"]},V:{tab:"v1"}},smoothly:{Adv:{tab:["b1"]}},snake:{N:{tab:["n1"]}},snap:{V:{tab:"v12"}},snatch:{V:{tab:"v2"}},sniff:{V:{tab:"v1"}},snow:{N:{tab:["n1"]}},so:{Adv:{tab:["b1"]}},"so-called":{A:{tab:["a1"]}},soak:{V:{tab:"v1"}},soap:{N:{tab:["n1"]}},soar:{V:{tab:"v1"}},soccer:{N:{tab:["n5"]}},social:{A:{tab:["a1"]}},socialism:{N:{tab:["n5"]}},socialist:{A:{tab:["a1"]},N:{tab:["n1"]}},socially:{Adv:{tab:["b1"]}},society:{N:{tab:["n3"]}},sociological:{A:{tab:["a1"]}},sociology:{N:{tab:["n5"]}},sock:{N:{tab:["n1"]}},socket:{N:{tab:["n1"]}},sodium:{N:{tab:["n5"]}},sofa:{N:{tab:["n1"]}},soft:{A:{tab:["a3"]}},soften:{V:{tab:"v1"}},softly:{Adv:{tab:["b1"]}},software:{N:{tab:["n5"]}},soil:{N:{tab:["n1"]}},solar:{A:{tab:["a1"]}},soldier:{N:{tab:["n1"]}},sole:{A:{tab:["a1"]}},solely:{Adv:{tab:["b1"]}},solicitor:{N:{tab:["n1"]}},solid:{A:{tab:["a1"]}},solidarity:{N:{tab:["n5"]}},solo:{N:{tab:["n1"]}},solution:{N:{tab:["n1"]}},solve:{V:{tab:"v3"}},solvent:{N:{tab:["n1"]}},somebody:{Pro:{tab:["pn5"]}},somehow:{Adv:{tab:["b1"]}},someone:{Pro:{tab:["pn5"]}},something:{Pro:{tab:["pn5"]}},sometimes:{Adv:{tab:["b1"]}},somewhat:{Adv:{tab:["b1"]}},somewhere:{Adv:{tab:["b1"]}},son:{N:{tab:["n1"]}},song:{N:{tab:["n1"]}},soon:{Adv:{tab:["b1"]}},sophisticated:{A:{tab:["a1"]}},sore:{A:{tab:["a1"]}},sorry:{A:{tab:["a4"]}},sort:{N:{tab:["n1"]},V:{tab:"v1"}},soul:{N:{tab:["n1"]}},sound:{A:{tab:["a1"]},N:{tab:["n1"]},V:{tab:"v1"}},soup:{N:{tab:["n5"]}},source:{N:{tab:["n1"]}},south:{N:{tab:["n5"]}},southern:{A:{tab:["a1"]}},sovereignty:{N:{tab:["n5"]}},space:{N:{tab:["n1"]}},spare:{A:{tab:["a1"]},V:{tab:"v3"}},spatial:{A:{tab:["a1"]}},speak:{V:{tab:"v138"}},speaker:{N:{tab:["n1"]}},special:{A:{tab:["a1"]}},specialist:{N:{tab:["n1"]}},specially:{Adv:{tab:["b1"]}},species:{N:{tab:["n4"]}},specific:{A:{tab:["a1"]}},specifically:{Adv:{tab:["b1"]}},specification:{N:{tab:["n1"]}},specify:{V:{tab:"v4"}},specimen:{N:{tab:["n1"]}},spectacle:{N:{tab:["n1"]}},spectacular:{A:{tab:["a1"]}},spectator:{N:{tab:["n1"]}},spectrum:{N:{tab:["n11"]}},speculation:{N:{tab:["n1"]}},speech:{N:{tab:["n2"]}},speed:{N:{tab:["n1"]},V:{tab:"v133"}},spell:{N:{tab:["n1"]},V:{tab:"v98"}},spelling:{N:{tab:["n1"]}},spend:{V:{tab:"v23"}},sphere:{N:{tab:["n1"]}},spider:{N:{tab:["n1"]}},spill:{V:{tab:"v60"}},spin:{V:{tab:"v104"}},spine:{N:{tab:["n1"]}},spirit:{N:{tab:["n1"]}},spiritual:{A:{tab:["a1"]}},spit:{V:{tab:"v44"}},spite:{N:{tab:["n5"]}},splendid:{A:{tab:["a1"]}},split:{N:{tab:["n1"]},V:{tab:"v17"}},spoil:{V:{tab:"v26"}},spokesman:{N:{tab:["n7"]}},sponsor:{N:{tab:["n1"]},V:{tab:"v1"}},spontaneous:{A:{tab:["a1"]}},spoon:{N:{tab:["n1"]}},sport:{N:{tab:["n1"]}},spot:{N:{tab:["n1"]},V:{tab:"v14"}},spouse:{N:{tab:["n1"]}},spray:{N:{tab:["n1"]},V:{tab:"v1"}},spread:{N:{tab:["n1"]},V:{tab:"v18"}},spring:{N:{tab:["n1"]},V:{tab:"v46"}},spy:{N:{tab:["n3"]}},squad:{N:{tab:["n1"]}},squadron:{N:{tab:["n1"]}},square:{A:{tab:["a1"]},N:{tab:["n1"]},V:{tab:"v3"}},squeeze:{V:{tab:"v3"}},stab:{V:{tab:"v5"}},stability:{N:{tab:["n5"]}},stable:{A:{tab:["a1"]},N:{tab:["n1"]}},stadium:{N:{tab:["n1"]}},staff:{N:{tab:["n1"]},V:{tab:"v1"}},stage:{N:{tab:["n1"]}},stagger:{V:{tab:"v1"}},stain:{V:{tab:"v1"}},stair:{N:{tab:["n1"]}},staircase:{N:{tab:["n1"]}},stake:{N:{tab:["n1"]},V:{tab:"v3"}},stall:{N:{tab:["n1"]}},stamp:{N:{tab:["n1"]},V:{tab:"v1"}},stance:{N:{tab:["n1"]}},stand:{N:{tab:["n1"]},V:{tab:"v37"}},standard:{A:{tab:["a1"]},N:{tab:["n1"]}},standing:{N:{tab:["n5"]}},star:{N:{tab:["n1"]},V:{tab:"v13"}},start:{N:{tab:["n1"]},V:{tab:"v1"}},startle:{V:{tab:"v3"}},state:{N:{tab:["n1"]},V:{tab:"v3"}},statement:{N:{tab:["n1"]}},static:{A:{tab:["a1"]}},station:{N:{tab:["n1"]}},statistical:{A:{tab:["a1"]}},statistics:{N:{tab:["n4"]}},statue:{N:{tab:["n1"]}},status:{N:{tab:["n5"]}},statute:{N:{tab:["n1"]}},statutory:{A:{tab:["a1"]}},stay:{N:{tab:["n1"]},V:{tab:"v1"}},steadily:{Adv:{tab:["b1"]}},steady:{A:{tab:["a4"]}},steal:{V:{tab:"v137"}},steam:{N:{tab:["n5"]}},steel:{N:{tab:["n5"]}},steep:{A:{tab:["a3"]}},steer:{V:{tab:"v1"}},stem:{N:{tab:["n1"]},V:{tab:"v10"}},step:{N:{tab:["n1"]},V:{tab:"v12"}},sterling:{A:{tab:["a1"]}},steward:{N:{tab:["n1"]}},stick:{N:{tab:["n1"]},V:{tab:"v119"}},sticky:{A:{tab:["a4"]}},stiff:{A:{tab:["a3"]}},still:{A:{tab:["a3"]},Adv:{tab:["b1"]}},stimulate:{V:{tab:"v3"}},stimulus:{N:{tab:["n12"]}},stir:{V:{tab:"v13"}},stitch:{N:{tab:["n2"]}},stock:{N:{tab:["n1"]}},stocking:{N:{tab:["n1"]}},stolen:{A:{tab:["a1"]}},stomach:{N:{tab:["n1"]}},stone:{N:{tab:["n1"]}},stool:{N:{tab:["n1"]}},stop:{N:{tab:["n1"]},V:{tab:"v12"}},storage:{N:{tab:["n5"]}},store:{N:{tab:["n1"]},V:{tab:"v3"}},storm:{N:{tab:["n1"]},V:{tab:"v1"}},story:{N:{tab:["n3"]}},straight:{A:{tab:["a1"]},Adv:{tab:["b1"]}},straighten:{V:{tab:"v1"}},straightforward:{A:{tab:["a1"]}},strain:{N:{tab:["n1"]},V:{tab:"v1"}},strand:{N:{tab:["n1"]}},strange:{A:{tab:["a2"]}},strangely:{Adv:{tab:["b1"]}},stranger:{N:{tab:["n1"]}},strap:{N:{tab:["n1"]}},strategic:{A:{tab:["a1"]}},strategy:{N:{tab:["n3"]}},straw:{N:{tab:["n1"]}},stream:{N:{tab:["n1"]}},street:{N:{tab:["n1"]}},strength:{N:{tab:["n1"]}},strengthen:{V:{tab:"v1"}},stress:{N:{tab:["n2"]},V:{tab:"v2"}},stretch:{N:{tab:["n2"]},V:{tab:"v2"}},strict:{A:{tab:["a3"]}},strictly:{Adv:{tab:["b1"]}},stride:{V:{tab:"v47"}},strike:{N:{tab:["n1"]},V:{tab:"v108"}},striker:{N:{tab:["n1"]}},striking:{A:{tab:["a1"]}},string:{N:{tab:["n1"]}},strip:{N:{tab:["n1"]},V:{tab:"v12"}},strive:{V:{tab:"v42"}},stroke:{N:{tab:["n1"]},V:{tab:"v3"}},stroll:{V:{tab:"v1"}},strong:{A:{tab:["a3"]}},strongly:{Adv:{tab:["b1"]}},structural:{A:{tab:["a1"]}},structure:{N:{tab:["n1"]}},struggle:{N:{tab:["n1"]},V:{tab:"v3"}},student:{N:{tab:["n1"]}},studio:{N:{tab:["n1"]}},study:{N:{tab:["n3"]},V:{tab:"v4"}},stuff:{N:{tab:["n1"]},V:{tab:"v1"}},stumble:{V:{tab:"v3"}},stunning:{A:{tab:["a1"]}},stupid:{A:{tab:["a1"]}},style:{N:{tab:["n1"]}},subject:{A:{tab:["a1"]},N:{tab:["n1"]},V:{tab:"v1"}},subjective:{A:{tab:["a1"]}},submission:{N:{tab:["n1"]}},submit:{V:{tab:"v14"}},subscription:{N:{tab:["n1"]}},subsequent:{A:{tab:["a1"]}},subsequently:{Adv:{tab:["b1"]}},subsidiary:{N:{tab:["n3"]}},subsidy:{N:{tab:["n3"]}},substance:{N:{tab:["n1"]}},substantial:{A:{tab:["a1"]}},substantially:{Adv:{tab:["b1"]}},substantive:{A:{tab:["a1"]}},substitute:{N:{tab:["n1"]},V:{tab:"v3"}},subtle:{A:{tab:["a2"]}},suburb:{N:{tab:["n1"]}},succeed:{V:{tab:"v1"}},success:{N:{tab:["n2"]}},successful:{A:{tab:["a1"]}},successfully:{Adv:{tab:["b1"]}},succession:{N:{tab:["n1"]}},successive:{A:{tab:["a1"]}},successor:{N:{tab:["n1"]}},suck:{V:{tab:"v1"}},sudden:{A:{tab:["a1"]}},suddenly:{Adv:{tab:["b1"]}},sue:{V:{tab:"v3"}},suffer:{V:{tab:"v1"}},sufferer:{N:{tab:["n1"]}},suffering:{N:{tab:["n1"]}},sufficient:{A:{tab:["a1"]}},sufficiently:{Adv:{tab:["b1"]}},sugar:{N:{tab:["n1"]}},suggest:{V:{tab:"v1"}},suggestion:{N:{tab:["n1"]}},suicide:{N:{tab:["n1"]}},suit:{N:{tab:["n1"]},V:{tab:"v1"}},suitable:{A:{tab:["a1"]}},suitcase:{N:{tab:["n1"]}},suite:{N:{tab:["n1"]}},sulphur:{N:{tab:["n5"]}},sum:{N:{tab:["n1"]},V:{tab:"v10"}},summary:{N:{tab:["n3"]}},summer:{N:{tab:["n1"]}},summit:{N:{tab:["n1"]}},summon:{V:{tab:"v1"}},sun:{N:{tab:["n1"]}},sunlight:{N:{tab:["n5"]}},sunny:{A:{tab:["a4"]}},sunshine:{N:{tab:["n5"]}},super:{A:{tab:["a1"]}},superb:{A:{tab:["a1"]}},superintendent:{N:{tab:["n1"]}},superior:{A:{tab:["a1"]}},supermarket:{N:{tab:["n1"]}},supervise:{V:{tab:"v3"}},supervision:{N:{tab:["n1"]}},supervisor:{N:{tab:["n1"]}},supper:{N:{tab:["n1"]}},supplement:{N:{tab:["n1"]},V:{tab:"v1"}},supplementary:{A:{tab:["a1"]}},supplier:{N:{tab:["n1"]}},supply:{N:{tab:["n3"]},V:{tab:"v4"}},support:{N:{tab:["n1"]},V:{tab:"v1"}},supporter:{N:{tab:["n1"]}},suppose:{V:{tab:"v3"}},supposed:{A:{tab:["a1"]}},supposedly:{Adv:{tab:["b1"]}},suppress:{V:{tab:"v2"}},supreme:{A:{tab:["a1"]}},sure:{A:{tab:["a2"]},Adv:{tab:["b1"]}},surely:{Adv:{tab:["b1"]}},surface:{N:{tab:["n1"]}},surgeon:{N:{tab:["n1"]}},surgery:{N:{tab:["n3"]}},surplus:{N:{tab:["n2"]}},surprise:{N:{tab:["n1"]},V:{tab:"v3"}},surprised:{A:{tab:["a1"]}},surprising:{A:{tab:["a1"]}},surprisingly:{Adv:{tab:["b1"]}},surrender:{V:{tab:"v1"}},surround:{V:{tab:"v1"}},surrounding:{A:{tab:["a1"]}},survey:{N:{tab:["n1"]},V:{tab:"v1"}},surveyor:{N:{tab:["n1"]}},survival:{N:{tab:["n1"]}},survive:{V:{tab:"v3"}},survivor:{N:{tab:["n1"]}},suspect:{N:{tab:["n1"]},V:{tab:"v1"}},suspend:{V:{tab:"v1"}},suspension:{N:{tab:["n5"]}},suspicion:{N:{tab:["n1"]}},suspicious:{A:{tab:["a1"]}},sustain:{V:{tab:"v1"}},swallow:{V:{tab:"v1"}},swap:{V:{tab:"v12"}},sway:{V:{tab:"v1"}},swear:{V:{tab:"v30"}},sweat:{N:{tab:["n1"]}},sweep:{V:{tab:"v29"}},sweet:{A:{tab:["a3"]},N:{tab:["n1"]}},swell:{V:{tab:"v128"}},swift:{A:{tab:["a3"]}},swiftly:{Adv:{tab:["b1"]}},swim:{V:{tab:"v107"}},swimming:{N:{tab:["n5"]}},swing:{N:{tab:["n1"]},V:{tab:"v21"}},switch:{N:{tab:["n2"]},V:{tab:"v2"}},sword:{N:{tab:["n1"]}},syllable:{N:{tab:["n1"]}},symbol:{N:{tab:["n1"]}},symbolic:{A:{tab:["a1"]}},symmetry:{N:{tab:["n5"]}},sympathetic:{A:{tab:["a1"]}},sympathy:{N:{tab:["n3"]}},symptom:{N:{tab:["n1"]}},syndrome:{N:{tab:["n1"]}},syntactic:{A:{tab:["a1"]}},synthesis:{N:{tab:["n8"]}},system:{N:{tab:["n1"]}},systematic:{A:{tab:["a1"]}},table:{N:{tab:["n1"]}},tablet:{N:{tab:["n1"]}},tackle:{V:{tab:"v3"}},tactic:{N:{tab:["n1"]}},tail:{N:{tab:["n1"]}},take:{V:{tab:"v20"}},takeover:{N:{tab:["n1"]}},tale:{N:{tab:["n1"]}},talent:{N:{tab:["n1"]}},talented:{A:{tab:["a1"]}},talk:{N:{tab:["n1"]},V:{tab:"v1"}},tall:{A:{tab:["a3"]}},tank:{N:{tab:["n1"]}},tap:{N:{tab:["n1"]},V:{tab:"v12"}},tape:{N:{tab:["n1"]}},target:{N:{tab:["n1"]},V:{tab:"v1"}},tariff:{N:{tab:["n1"]}},task:{N:{tab:["n1"]}},taste:{N:{tab:["n1"]},V:{tab:"v3"}},tax:{N:{tab:["n2"]},V:{tab:"v2"}},taxation:{N:{tab:["n5"]}},taxi:{N:{tab:["n1"]}},taxpayer:{N:{tab:["n1"]}},tea:{N:{tab:["n1"]}},teach:{V:{tab:"v142"}},teacher:{N:{tab:["n1"]}},teaching:{N:{tab:["n1"]}},team:{N:{tab:["n1"]}},tear:{N:{tab:["n1"]},V:{tab:"v30"}},tease:{V:{tab:"v3"}},technical:{A:{tab:["a1"]}},technically:{Adv:{tab:["b1"]}},technique:{N:{tab:["n1"]}},technological:{A:{tab:["a1"]}},technology:{N:{tab:["n3"]}},teenage:{A:{tab:["a1"]}},teenager:{N:{tab:["n1"]}},telecommunication:{N:{tab:["n1"]}},telephone:{N:{tab:["n1"]},V:{tab:"v3"}},television:{N:{tab:["n1"]}},tell:{V:{tab:"v31"}},telly:{N:{tab:["n3"]}},temper:{N:{tab:["n1"]}},temperature:{N:{tab:["n1"]}},temple:{N:{tab:["n1"]}},temporarily:{Adv:{tab:["b1"]}},temporary:{A:{tab:["a1"]}},tempt:{V:{tab:"v1"}},temptation:{N:{tab:["n1"]}},tenant:{N:{tab:["n1"]}},tend:{V:{tab:"v1"}},tendency:{N:{tab:["n3"]}},tender:{A:{tab:["a3"]}},tennis:{N:{tab:["n5"]}},tense:{A:{tab:["a2"]}},tension:{N:{tab:["n1"]}},tent:{N:{tab:["n1"]}},term:{N:{tab:["n1"]},V:{tab:"v1"}},terminal:{A:{tab:["a1"]},N:{tab:["n1"]}},terminate:{V:{tab:"v3"}},terrace:{N:{tab:["n1"]}},terrible:{A:{tab:["a1"]}},terribly:{Adv:{tab:["b1"]}},terrify:{V:{tab:"v4"}},territorial:{A:{tab:["a1"]}},territory:{N:{tab:["n3"]}},terror:{N:{tab:["n1"]}},terrorist:{N:{tab:["n1"]}},test:{N:{tab:["n1"]},V:{tab:"v1"}},testament:{N:{tab:["n1"]}},text:{N:{tab:["n1"]}},textbook:{N:{tab:["n1"]}},textile:{N:{tab:["n1"]}},texture:{N:{tab:["n1"]}},than:{P:{tab:["pp"]}},thank:{V:{tab:"v1"}},thanks:{N:{tab:["n6"]}},that:{Adv:{tab:["b1"]},D:{tab:["d3"]},Pro:{tab:["pn6"]}},the:{D:{tab:["d4"]}},theatre:{N:{tab:["n1"]}},theft:{N:{tab:["n1"]}},theme:{N:{tab:["n1"]}},then:{Adv:{tab:["b1"]}},theology:{N:{tab:["n3"]}},theoretical:{A:{tab:["a1"]}},theorist:{N:{tab:["n1"]}},theory:{N:{tab:["n3"]}},therapist:{N:{tab:["n1"]}},therapy:{N:{tab:["n3"]}},thereafter:{Adv:{tab:["b1"]}},thereby:{Adv:{tab:["b1"]}},therefore:{Adv:{tab:["b1"]}},these:{Pro:{tab:["pn8"]}},thesis:{N:{tab:["n8"]}},thick:{A:{tab:["a3"]},Adv:{tab:["b1"]}},thief:{N:{tab:["n9"]}},thigh:{N:{tab:["n1"]}},thin:{A:{tab:["a10"]}},thing:{N:{tab:["n1"]}},think:{V:{tab:"v45"}},thinking:{A:{tab:["a1"]},N:{tab:["n5"]}},this:{Adv:{tab:["b1"]},D:{tab:["d5"]},Pro:{tab:["pn8"]}},thorough:{A:{tab:["a1"]}},thoroughly:{Adv:{tab:["b1"]}},though:{Adv:{tab:["b1"]}},thought:{N:{tab:["n1"]}},thread:{N:{tab:["n1"]}},threat:{N:{tab:["n1"]}},threaten:{V:{tab:"v1"}},threshold:{N:{tab:["n1"]}},throat:{N:{tab:["n1"]}},throne:{N:{tab:["n1"]}},through:{Adv:{tab:["b1"]},P:{tab:["pp"]}},throughout:{P:{tab:["pp"]}},throw:{V:{tab:"v27"}},thrust:{N:{tab:["n1"]},V:{tab:"v18"}},thumb:{N:{tab:["n1"]}},thus:{Adv:{tab:["b1"]}},tick:{V:{tab:"v1"}},ticket:{N:{tab:["n1"]}},tide:{N:{tab:["n1"]}},tie:{N:{tab:["n1"]},V:{tab:"v28"}},tiger:{N:{tab:["n1"]}},tight:{A:{tab:["a3"]},Adv:{tab:["b1"]}},tighten:{V:{tab:"v1"}},tightly:{Adv:{tab:["b1"]}},tile:{N:{tab:["n1"]}},till:{P:{tab:["pp"]}},timber:{N:{tab:["n1"]}},time:{N:{tab:["n1"]},V:{tab:"v3"}},timetable:{N:{tab:["n1"]}},timing:{N:{tab:["n1"]}},tin:{N:{tab:["n1"]}},tiny:{A:{tab:["a4"]}},tip:{N:{tab:["n1"]},V:{tab:"v12"}},tired:{A:{tab:["a1"]}},tissue:{N:{tab:["n1"]}},title:{N:{tab:["n1"]}},to:{P:{tab:["pp"]}},toast:{N:{tab:["n1"]}},tobacco:{N:{tab:["n1"]}},today:{Adv:{tab:["b1"]}},toe:{N:{tab:["n1"]}},together:{Adv:{tab:["b1"]}},toilet:{N:{tab:["n1"]}},tolerate:{V:{tab:"v3"}},toll:{N:{tab:["n1"]}},tomato:{N:{tab:["n2"]}},tomorrow:{Adv:{tab:["b1"]}},ton:{N:{tab:["n1"]}},tone:{N:{tab:["n1"]}},tongue:{N:{tab:["n1"]}},tonight:{Adv:{tab:["b1"]}},tonne:{N:{tab:["n1"]}},too:{Adv:{tab:["b1"]}},tool:{N:{tab:["n1"]}},tooth:{N:{tab:["n20"]}},top:{N:{tab:["n1"]},V:{tab:"v12"}},topic:{N:{tab:["n1"]}},torch:{N:{tab:["n2"]}},toss:{V:{tab:"v2"}},total:{A:{tab:["a1"]},N:{tab:["n1"]},V:{tab:"v9"}},totally:{Adv:{tab:["b1"]}},touch:{N:{tab:["n2"]},V:{tab:"v2"}},tough:{A:{tab:["a3"]}},tour:{N:{tab:["n1"]},V:{tab:"v1"}},tourism:{N:{tab:["n5"]}},tourist:{N:{tab:["n1"]}},tournament:{N:{tab:["n1"]}},toward:{P:{tab:["pp"]}},towards:{P:{tab:["pp"]}},towel:{N:{tab:["n1"]}},tower:{N:{tab:["n1"]}},town:{N:{tab:["n1"]}},toxic:{A:{tab:["a1"]}},toy:{N:{tab:["n1"]}},trace:{N:{tab:["n1"]},V:{tab:"v3"}},track:{N:{tab:["n1"]},V:{tab:"v1"}},tract:{N:{tab:["n1"]}},trade:{N:{tab:["n1"]},V:{tab:"v3"}},trader:{N:{tab:["n1"]}},tradition:{N:{tab:["n1"]}},traditional:{A:{tab:["a1"]}},traditionally:{Adv:{tab:["b1"]}},traffic:{N:{tab:["n5"]}},tragedy:{N:{tab:["n3"]}},tragic:{A:{tab:["a1"]}},trail:{N:{tab:["n1"]},V:{tab:"v1"}},train:{N:{tab:["n1"]},V:{tab:"v1"}},trainee:{N:{tab:["n1"]}},trainer:{N:{tab:["n1"]}},training:{N:{tab:["n5"]}},trait:{N:{tab:["n1"]}},transaction:{N:{tab:["n1"]}},transcription:{N:{tab:["n1"]}},transfer:{N:{tab:["n1"]},V:{tab:"v13"}},transform:{V:{tab:"v1"}},transformation:{N:{tab:["n1"]}},transition:{N:{tab:["n1"]}},translate:{V:{tab:"v3"}},translation:{N:{tab:["n1"]}},transmission:{N:{tab:["n1"]}},transmit:{V:{tab:"v14"}},transport:{N:{tab:["n1"]},V:{tab:"v1"}},trap:{N:{tab:["n1"]},V:{tab:"v12"}},travel:{N:{tab:["n1"]},V:{tab:"v9"}},traveller:{N:{tab:["n1"]}},tray:{N:{tab:["n1"]}},tread:{V:{tab:"v141"}},treasure:{N:{tab:["n1"]}},treasurer:{N:{tab:["n1"]}},treasury:{N:{tab:["n3"]}},treat:{N:{tab:["n1"]},V:{tab:"v1"}},treatment:{N:{tab:["n1"]}},treaty:{N:{tab:["n3"]}},tree:{N:{tab:["n1"]}},tremble:{V:{tab:"v3"}},tremendous:{A:{tab:["a1"]}},trench:{N:{tab:["n2"]}},trend:{N:{tab:["n1"]}},trial:{N:{tab:["n1"]}},triangle:{N:{tab:["n1"]}},tribe:{N:{tab:["n1"]}},tribunal:{N:{tab:["n1"]}},tribute:{N:{tab:["n1"]}},trick:{N:{tab:["n1"]}},trigger:{V:{tab:"v1"}},trip:{N:{tab:["n1"]},V:{tab:"v12"}},triumph:{N:{tab:["n1"]}},trivial:{A:{tab:["a1"]}},trolley:{N:{tab:["n1"]}},troop:{N:{tab:["n1"]}},trophy:{N:{tab:["n3"]}},tropical:{A:{tab:["a1"]}},trouble:{N:{tab:["n1"]},V:{tab:"v3"}},trouser:{N:{tab:["n1"]}},truck:{N:{tab:["n1"]}},true:{A:{tab:["a2"]}},truly:{Adv:{tab:["b1"]}},trunk:{N:{tab:["n1"]}},trust:{N:{tab:["n1"]},V:{tab:"v1"}},trustee:{N:{tab:["n1"]}},truth:{N:{tab:["n1"]}},try:{N:{tab:["n3"]},V:{tab:"v4"}},tube:{N:{tab:["n1"]}},tuck:{V:{tab:"v1"}},tumble:{V:{tab:"v3"}},tumour:{N:{tab:["n1"]}},tune:{N:{tab:["n1"]},V:{tab:"v3"}},tunnel:{N:{tab:["n1"]}},turkey:{N:{tab:["n1"]}},turn:{N:{tab:["n1"]},V:{tab:"v1"}},turnover:{N:{tab:["n1"]}},tutor:{N:{tab:["n1"]}},twin:{N:{tab:["n1"]}},twist:{N:{tab:["n1"]},V:{tab:"v1"}},type:{N:{tab:["n1"]}},typical:{A:{tab:["a1"]}},typically:{Adv:{tab:["b1"]}},tyre:{N:{tab:["n1"]}},ugly:{A:{tab:["a4"]}},ulcer:{N:{tab:["n1"]}},ultimate:{A:{tab:["a1"]}},ultimately:{Adv:{tab:["b1"]}},umbrella:{N:{tab:["n1"]}},unable:{A:{tab:["a1"]}},unacceptable:{A:{tab:["a1"]}},unaware:{A:{tab:["a1"]}},uncertain:{A:{tab:["a1"]}},uncertainty:{N:{tab:["n3"]}},uncle:{N:{tab:["n1"]}},uncomfortable:{A:{tab:["a1"]}},unconscious:{A:{tab:["a1"]}},uncover:{V:{tab:"v1"}},under:{Adv:{tab:["b1"]},P:{tab:["pp"]}},undergo:{V:{tab:"v48"}},underground:{A:{tab:["a1"]}},underline:{V:{tab:"v3"}},undermine:{V:{tab:"v3"}},underneath:{Adv:{tab:["b1"]},P:{tab:["pp"]}},understand:{V:{tab:"v37"}},understandable:{A:{tab:["a1"]}},understanding:{N:{tab:["n1"]}},undertake:{V:{tab:"v20"}},undertaking:{N:{tab:["n1"]}},undoubtedly:{Adv:{tab:["b1"]}},uneasy:{A:{tab:["a1"]}},unemployed:{A:{tab:["a1"]}},unemployment:{N:{tab:["n5"]}},unexpected:{A:{tab:["a1"]}},unexpectedly:{Adv:{tab:["b1"]}},unfair:{A:{tab:["a1"]}},unfamiliar:{A:{tab:["a1"]}},unfortunate:{A:{tab:["a1"]}},unfortunately:{Adv:{tab:["b1"]}},unhappy:{A:{tab:["a4"]}},uniform:{A:{tab:["a1"]},N:{tab:["n1"]}},union:{N:{tab:["n1"]}},unionist:{N:{tab:["n1"]}},unique:{A:{tab:["a1"]}},unit:{N:{tab:["n1"]}},unite:{V:{tab:"v3"}},united:{A:{tab:["a1"]}},unity:{N:{tab:["n3"]}},universal:{A:{tab:["a1"]}},universe:{N:{tab:["n1"]}},university:{N:{tab:["n3"]}},unknown:{A:{tab:["a1"]}},unlike:{A:{tab:["a1"]},P:{tab:["pp"]}},unlikely:{A:{tab:["a1"]}},unnecessary:{A:{tab:["a1"]}},unpleasant:{A:{tab:["a1"]}},unprecedented:{A:{tab:["a1"]}},unreasonable:{A:{tab:["a1"]}},unrest:{N:{tab:["n5"]}},unsuccessful:{A:{tab:["a1"]}},until:{P:{tab:["pp"]}},unusual:{A:{tab:["a1"]}},unusually:{Adv:{tab:["b1"]}},unwilling:{A:{tab:["a1"]}},up:{Adv:{tab:["b1"]},P:{tab:["pp"]}},"up-to-date":{A:{tab:["a1"]}},update:{V:{tab:"v3"}},upgrade:{V:{tab:"v3"}},uphold:{V:{tab:"v34"}},upon:{P:{tab:["pp"]}},upper:{A:{tab:["a1"]}},upset:{V:{tab:"v17"}},upstairs:{Adv:{tab:["b1"]}},upwards:{Adv:{tab:["b1"]}},urban:{A:{tab:["a1"]}},urge:{N:{tab:["n1"]},V:{tab:"v3"}},urgency:{N:{tab:["n5"]}},urgent:{A:{tab:["a1"]}},urgently:{Adv:{tab:["b1"]}},urine:{N:{tab:["n5"]}},usage:{N:{tab:["n1"]}},use:{N:{tab:["n1"]},V:{tab:"v3"}},used:{A:{tab:["a1"]}},useful:{A:{tab:["a1"]}},useless:{A:{tab:["a1"]}},user:{N:{tab:["n1"]}},usual:{A:{tab:["a1"]}},usually:{Adv:{tab:["b1"]}},utility:{N:{tab:["n3"]}},utter:{V:{tab:"v1"}},utterance:{N:{tab:["n1"]}},utterly:{Adv:{tab:["b1"]}},vacant:{A:{tab:["a1"]}},vacuum:{N:{tab:["n1"]}},vague:{A:{tab:["a2"]}},vaguely:{Adv:{tab:["b1"]}},valid:{A:{tab:["a1"]}},validity:{N:{tab:["n5"]}},valley:{N:{tab:["n1"]}},valuable:{A:{tab:["a1"]}},valuation:{N:{tab:["n1"]}},value:{N:{tab:["n1"]},V:{tab:"v3"}},valve:{N:{tab:["n1"]}},van:{N:{tab:["n1"]}},vanish:{V:{tab:"v2"}},variable:{A:{tab:["a1"]},N:{tab:["n1"]}},variant:{N:{tab:["n1"]}},variation:{N:{tab:["n1"]}},varied:{A:{tab:["a1"]}},variety:{N:{tab:["n3"]}},various:{A:{tab:["a1"]}},vary:{V:{tab:"v4"}},vast:{A:{tab:["a1"]}},vat:{N:{tab:["n1"]}},vegetable:{N:{tab:["n1"]}},vegetation:{N:{tab:["n5"]}},vehicle:{N:{tab:["n1"]}},vein:{N:{tab:["n1"]}},velocity:{N:{tab:["n3"]}},velvet:{N:{tab:["n5"]}},vendor:{N:{tab:["n1"]}},venture:{N:{tab:["n1"]},V:{tab:"v3"}},venue:{N:{tab:["n1"]}},verb:{N:{tab:["n1"]}},verbal:{A:{tab:["a1"]}},verdict:{N:{tab:["n1"]}},verse:{N:{tab:["n1"]}},version:{N:{tab:["n1"]}},versus:{P:{tab:["pp"]}},vertical:{A:{tab:["a1"]}},very:{A:{tab:["a1"]},Adv:{tab:["b1"]}},vessel:{N:{tab:["n1"]}},veteran:{N:{tab:["n1"]}},via:{P:{tab:["pp"]}},viable:{A:{tab:["a1"]}},vicar:{N:{tab:["n1"]}},vicious:{A:{tab:["a1"]}},victim:{N:{tab:["n1"]}},victory:{N:{tab:["n3"]}},video:{N:{tab:["n1"]}},view:{N:{tab:["n1"]},V:{tab:"v1"}},viewer:{N:{tab:["n1"]}},viewpoint:{N:{tab:["n1"]}},vigorous:{A:{tab:["a1"]}},villa:{N:{tab:["n1"]}},village:{N:{tab:["n1"]}},villager:{N:{tab:["n1"]}},violation:{N:{tab:["n1"]}},violence:{N:{tab:["n5"]}},violent:{A:{tab:["a1"]}},virgin:{N:{tab:["n1"]}},virtual:{A:{tab:["a1"]}},virtually:{Adv:{tab:["b1"]}},virtue:{N:{tab:["n1"]}},virus:{N:{tab:["n2"]}},visible:{A:{tab:["a1"]}},vision:{N:{tab:["n1"]}},visit:{N:{tab:["n1"]},V:{tab:"v1"}},visitor:{N:{tab:["n1"]}},visual:{A:{tab:["a1"]}},vital:{A:{tab:["a1"]}},vitamin:{N:{tab:["n1"]}},vivid:{A:{tab:["a1"]}},vocabulary:{N:{tab:["n3"]}},vocational:{A:{tab:["a1"]}},voice:{N:{tab:["n1"]}},voltage:{N:{tab:["n1"]}},volume:{N:{tab:["n1"]}},voluntary:{A:{tab:["a1"]}},volunteer:{N:{tab:["n1"]},V:{tab:"v1"}},vote:{N:{tab:["n1"]},V:{tab:"v3"}},voter:{N:{tab:["n1"]}},voucher:{N:{tab:["n1"]}},voyage:{N:{tab:["n1"]}},vulnerable:{A:{tab:["a1"]}},wage:{N:{tab:["n1"]}},waist:{N:{tab:["n1"]}},wait:{V:{tab:"v1"}},waiter:{N:{tab:["n1"]}},wake:{N:{tab:["n1"]},V:{tab:"v164"}},walk:{N:{tab:["n1"]},V:{tab:"v1"}},walker:{N:{tab:["n1"]}},wall:{N:{tab:["n1"]}},wander:{V:{tab:"v1"}},want:{N:{tab:["n1"]},V:{tab:"v1"}},war:{N:{tab:["n1"]}},ward:{N:{tab:["n1"]}},wardrobe:{N:{tab:["n1"]}},warehouse:{N:{tab:["n1"]}},warm:{A:{tab:["a3"]},V:{tab:"v1"}},warmth:{N:{tab:["n5"]}},warn:{V:{tab:"v1"}},warning:{N:{tab:["n1"]}},warrant:{N:{tab:["n1"]}},warranty:{N:{tab:["n3"]}},warrior:{N:{tab:["n1"]}},wartime:{N:{tab:["n5"]}},wary:{A:{tab:["a4"]}},wash:{N:{tab:["n2"]},V:{tab:"v2"}},washing:{N:{tab:["n5"]}},waste:{A:{tab:["a1"]},N:{tab:["n1"]},V:{tab:"v3"}},watch:{N:{tab:["n2"]},V:{tab:"v2"}},water:{N:{tab:["n1"]}},wave:{N:{tab:["n1"]},V:{tab:"v3"}},way:{N:{tab:["n1"]}},weak:{A:{tab:["a3"]}},weaken:{V:{tab:"v1"}},weakness:{N:{tab:["n2"]}},wealth:{N:{tab:["n5"]}},wealthy:{A:{tab:["a4"]}},weapon:{N:{tab:["n1"]}},wear:{V:{tab:"v30"}},weather:{N:{tab:["n1"]}},weave:{V:{tab:"v69"}},wedding:{N:{tab:["n1"]}},wee:{A:{tab:["a1"]}},weed:{N:{tab:["n1"]}},week:{N:{tab:["n1"]}},weekend:{N:{tab:["n1"]}},weekly:{A:{tab:["a1"]}},weep:{V:{tab:"v29"}},weigh:{V:{tab:"v1"}},weight:{N:{tab:["n1"]}},weird:{A:{tab:["a3"]}},welcome:{A:{tab:["a1"]},N:{tab:["n1"]},V:{tab:"v3"}},welfare:{N:{tab:["n5"]}},well:{A:{tab:["a19"]},Adv:{tab:["b3"]},N:{tab:["n1"]}},"well-known":{A:{tab:["a1"]}},west:{N:{tab:["n5"]}},western:{A:{tab:["a1"]}},wet:{A:{tab:["a11"]},V:{tab:"v17"}},whale:{N:{tab:["n1"]}},what:{D:{tab:["d4"]}},whatever:{D:{tab:["d4"]}},whatsoever:{D:{tab:["d4"]}},wheat:{N:{tab:["n5"]}},wheel:{N:{tab:["n1"]}},when:{C:{tab:["cs"]}},whenever:{Adv:{tab:["b1"]}},where:{Pro:{tab:["pn6"]}},which:{D:{tab:["d4"]}},whichever:{D:{tab:["d4"]}},while:{N:{tab:["n5"]}},whip:{N:{tab:["n1"]},V:{tab:"v12"}},whisky:{N:{tab:["n3"]}},whisper:{N:{tab:["n1"]},V:{tab:"v1"}},white:{A:{tab:["a2"]},N:{tab:["n1"]}},who:{Pro:{tab:["pn6"]}},whoever:{Pro:{tab:["pn6"]}},whole:{A:{tab:["a1"]},N:{tab:["n1"]}},wholly:{Adv:{tab:["b1"]}},whom:{Pro:{tab:["pn6"]}},whose:{D:{tab:["d4"]}},why:{Pro:{tab:["pn6"]}},wicked:{A:{tab:["a1"]}},wicket:{N:{tab:["n1"]}},wide:{A:{tab:["a2"]},Adv:{tab:["b1"]}},widely:{Adv:{tab:["b1"]}},widen:{V:{tab:"v1"}},widespread:{A:{tab:["a1"]}},widow:{N:{tab:["n1"]}},width:{N:{tab:["n1"]}},wife:{N:{g:"f",tab:["n91"]}},wild:{A:{tab:["a3"]}},wildly:{Adv:{tab:["b1"]}},will:{N:{tab:["n1"]},V:{tab:"v81"}},willing:{A:{tab:["a1"]}},willingness:{N:{tab:["n5"]}},win:{N:{tab:["n1"]},V:{tab:"v105"}},wind:{N:{tab:["n1"]},V:{tab:"v25"}},window:{N:{tab:["n1"]}},wine:{N:{tab:["n1"]}},wing:{N:{tab:["n1"]}},winner:{N:{tab:["n1"]}},winter:{N:{tab:["n1"]}},wipe:{V:{tab:"v3"}},wire:{N:{tab:["n1"]}},wisdom:{N:{tab:["n5"]}},wise:{A:{tab:["a2"]}},wish:{N:{tab:["n2"]},V:{tab:"v2"}},wit:{N:{tab:["n1"]}},witch:{N:{g:"f",tab:["n88"]}},with:{P:{tab:["pp"]}},withdraw:{V:{tab:"v54"}},withdrawal:{N:{tab:["n1"]}},within:{Adv:{tab:["b1"]},P:{tab:["pp"]}},without:{P:{tab:["pp"]}},witness:{N:{tab:["n2"]},V:{tab:"v2"}},wolf:{N:{tab:["n9"]}},woman:{N:{g:"f",tab:["n90"]}},wonder:{N:{tab:["n1"]},V:{tab:"v1"}},wonderful:{A:{tab:["a1"]}},wood:{N:{tab:["n1"]}},wooden:{A:{tab:["a1"]}},woodland:{N:{tab:["n1"]}},wool:{N:{tab:["n1"]}},word:{N:{tab:["n1"]}},wording:{N:{tab:["n1"]}},work:{N:{tab:["n1"]},V:{tab:"v94"}},worker:{N:{tab:["n1"]}},workforce:{N:{tab:["n1"]}},working:{A:{tab:["a1"]},N:{tab:["n1"]}},"working-class":{A:{tab:["a1"]}},workplace:{N:{tab:["n1"]}},workshop:{N:{tab:["n1"]}},world:{N:{tab:["n1"]}},worldwide:{A:{tab:["a1"]}},worm:{N:{tab:["n1"]}},worried:{A:{tab:["a1"]}},worry:{N:{tab:["n3"]},V:{tab:"v4"}},worrying:{A:{tab:["a1"]}},worship:{N:{tab:["n5"]}},worth:{N:{tab:["n5"]}},worthwhile:{A:{tab:["a1"]}},worthy:{A:{tab:["a4"]}},wound:{N:{tab:["n1"]},V:{tab:"v1"}},wrap:{V:{tab:"v12"}},wrist:{N:{tab:["n1"]}},write:{V:{tab:"v36"}},writer:{N:{tab:["n1"]}},writing:{N:{tab:["n1"]}},wrong:{A:{tab:["a3"]},Adv:{tab:["b1"]},N:{tab:["n1"]}},yacht:{N:{tab:["n1"]}},yard:{N:{tab:["n1"]}},yarn:{N:{tab:["n1"]}},year:{N:{tab:["n1"]}},yell:{V:{tab:"v1"}},yellow:{A:{tab:["a3"]}},yes:{N:{tab:["n2"]}},yesterday:{Adv:{tab:["b1"]}},yet:{Adv:{tab:["b1"]}},yield:{N:{tab:["n1"]},V:{tab:"v1"}},young:{A:{tab:["a3"]}},youngster:{N:{tab:["n1"]}},youth:{N:{tab:["n1"]}},zero:{N:{tab:["n1"]}},zone:{N:{tab:["n1"]}},zoo:{N:{tab:["n1"]}},"{":{Pc:{compl:"}",tab:["pc5"]}},"}":{Pc:{compl:"{",tab:["pc6"]}},"«":{Pc:{compl:"»",tab:["pc7"]}},"»":{Pc:{compl:"«",tab:["pc8"]}}},ruleEn={conjugation:{v1:{ending:"",t:{b:"",ps:"ed",pr:"ing",pp:"ed",p:["","","s","","",""]}},v2:{ending:"",t:{b:"",ps:"ed",pr:"ing",pp:"ed",p:["","","es","","",""]}},v3:{ending:"e",t:{b:"e",ps:"ed",pr:"ing",pp:"ed",p:["e","e","es","e","e","e"]}},v4:{ending:"y",t:{b:"y",ps:"ied",pr:"ying",pp:"ied",p:["y","y","ies","y","y","y"]}},v5:{ending:"b",t:{b:"b",ps:"bbed",pr:"bbing",pp:"bbed",p:["b","b","bs","b","b","b"]}},v6:{ending:"d",t:{b:"d",ps:"dded",pr:"dding",pp:"dded",p:["d","d","ds","d","d","d"]}},v7:{ending:"g",t:{b:"g",ps:"gged",pr:"gging",pp:"gged",p:["g","g","gs","g","g","g"]}},v8:{ending:"k",t:{b:"k",ps:"kked",pr:"kking",pp:"kked",p:["k","k","ks","k","k","k"]}},v9:{ending:"l",t:{b:"l",ps:"lled",pr:"lling",pp:"lled",p:["l","l","ls","l","l","l"]}},v10:{ending:"m",t:{b:"m",ps:"mmed",pr:"mming",pp:"mmed",p:["m","m","ms","m","m","m"]}},v11:{ending:"n",t:{b:"n",ps:"nned",pr:"nning",pp:"nned",p:["n","n","ns","n","n","n"]}},v12:{ending:"p",t:{b:"p",ps:"pped",pr:"pping",pp:"pped",p:["p","p","ps","p","p","p"]}},v13:{ending:"r",t:{b:"r",ps:"rred",pr:"rring",pp:"rred",p:["r","r","rs","r","r","r"]}},v14:{ending:"t",t:{b:"t",ps:"tted",pr:"tting",pp:"tted",p:["t","t","ts","t","t","t"]}},v15:{ending:"v",t:{b:"v",ps:"vved",pr:"vving",pp:"vved",p:["v","v","vs","v","v","v"]}},v16:{ending:"",t:{b:"",ps:"d",pr:"ing",pp:"d",p:["","","s","","",""]}},v17:{ending:"",t:{b:"",ps:"",pr:"ting",pp:"",p:["","","s","","",""]}},v18:{ending:"",t:{b:"",ps:"",pr:"ing",pp:"",p:["","","s","","",""]}},v19:{ending:"y",t:{b:"y",ps:"id",pr:"ying",pp:"id",p:["y","y","ys","y","y","y"]}},v20:{ending:"ake",t:{b:"ake",ps:"ook",pr:"aking",pp:"aken",p:["ake","ake","akes","ake","ake","ake"]}},v21:{ending:"ing",t:{b:"ing",ps:"ung",pr:"inging",pp:"ung",p:["ing","ing","ings","ing","ing","ing"]}},v22:{ending:"ed",t:{b:"ed",ps:"d",pr:"eding",pp:"d",p:["ed","ed","eds","ed","ed","ed"]}},v23:{ending:"d",t:{b:"d",ps:"t",pr:"ding",pp:"t",p:["d","d","ds","d","d","d"]}},v24:{ending:"",t:{b:"",ps:"ked",pr:"king",pp:"ked",p:["","","s","","",""]}},v25:{ending:"ind",t:{b:"ind",ps:"ound",pr:"inding",pp:"ound",p:["ind","ind","inds","ind","ind","ind"]}},v26:{ending:"",t:{b:"",ps:"ed",pr:"ing",pp:"ed",p:["","","s","","",""]}},v27:{ending:"ow",t:{b:"ow",ps:"ew",pr:"owing",pp:"own",p:["ow","ow","ows","ow","ow","ow"]}},v28:{ending:"ie",t:{b:"ie",ps:"ied",pr:"ying",pp:"ied",p:["ie","ie","ies","ie","ie","ie"]}},v29:{ending:"ep",t:{b:"ep",ps:"pt",pr:"eping",pp:"pt",p:["ep","ep","eps","ep","ep","ep"]}},v30:{ending:"ear",t:{b:"ear",ps:"ore",pr:"earing",pp:"orn",p:["ear","ear","ears","ear","ear","ear"]}},v31:{ending:"ell",t:{b:"ell",ps:"old",pr:"elling",pp:"old",p:["ell","ell","ells","ell","ell","ell"]}},v32:{ending:"",t:{b:"",ps:"ed",pr:"ing",pp:"ed",p:["","","s","","",""]}},v33:{ending:"un",t:{b:"un",ps:"an",pr:"unning",pp:"un",p:["un","un","uns","un","un","un"]}},v34:{ending:"old",t:{b:"old",ps:"eld",pr:"olding",pp:"eld",p:["old","old","olds","old","old","old"]}},v35:{ending:"o",t:{b:"o",ps:"id",pr:"oing",pp:"one",p:["o","o","oes","o","o","o"]}},v36:{ending:"ite",t:{b:"ite",ps:"ote",pr:"iting",pp:"itten",p:["ite","ite","ites","ite","ite","ite"]}},v37:{ending:"and",t:{b:"and",ps:"ood",pr:"anding",pp:"ood",p:["and","and","ands","and","and","and"]}},v38:{ending:"",t:{b:"",ps:"",pr:"ting",pp:"",p:["","","s","","",""]}},v39:{ending:"",t:{b:"",ps:"",pr:"ding",pp:"",p:["","","s","","",""]}},v40:{ending:"ot",t:{b:"ot",ps:"t",pr:"oting",pp:"t",p:["ot","ot","ots","ot","ot","ot"]}},v41:{ending:"ome",t:{b:"ome",ps:"ame",pr:"oming",pp:"ome",p:["ome","ome","omes","ome","ome","ome"]}},v42:{ending:"ive",t:{b:"ive",ps:"ove",pr:"iving",pp:"iven",p:["ive","ive","ives","ive","ive","ive"]}},v43:{ending:"ive",t:{b:"ive",ps:"ave",pr:"iving",pp:"iven",p:["ive","ive","ives","ive","ive","ive"]}},v44:{ending:"it",t:{b:"it",ps:"at",pr:"itting",pp:"at",p:["it","it","its","it","it","it"]}},v45:{ending:"ink",t:{b:"ink",ps:"ought",pr:"inking",pp:"ought",p:["ink","ink","inks","ink","ink","ink"]}},v46:{ending:"ing",t:{b:"ing",ps:"ang",pr:"inging",pp:"ung",p:["ing","ing","ings","ing","ing","ing"]}},v47:{ending:"ide",t:{b:"ide",ps:"ode",pr:"iding",pp:"idden",p:["ide","ide","ides","ide","ide","ide"]}},v48:{ending:"go",t:{b:"go",ps:"went",pr:"going",pp:"gone",p:["go","go","goes","go","go","go"]}},v49:{ending:"eeze",t:{b:"eeze",ps:"oze",pr:"eezing",pp:"ozen",p:["eeze","eeze","eezes","eeze","eeze","eeze"]}},v50:{ending:"ee",t:{b:"ee",ps:"aw",pr:"eeing",pp:"een",p:["ee","ee","ees","ee","ee","ee"]}},v51:{ending:"ear",t:{b:"ear",ps:"ore",pr:"earing",pp:"orne",p:["ear","ear","ears","ear","ear","ear"]}},v52:{ending:"e",t:{b:"e",ps:"ed",pr:"ing",pp:"ed",p:["e","e","es","e","e","e"]}},v53:{ending:"d",t:{b:"d",ps:"ded",pr:"ding",pp:"ded",p:["d","d","ds","d","d","d"]}},v54:{ending:"aw",t:{b:"aw",ps:"ew",pr:"awing",pp:"awn",p:["aw","aw","aws","aw","aw","aw"]}},v55:{ending:"",t:{b:"",ps:"t",pr:"ing",pp:"t",p:["","","s","","",""]}},v56:{ending:"",t:{b:"",ps:"sed",pr:"sing",pp:"sed",p:["","","ses","","",""]}},v57:{ending:"",t:{b:"",ps:"ed",pr:"ing",pp:"ed",p:["","","s","","",""]}},v58:{ending:"",t:{b:"",ps:"",pr:"ing",pp:"",p:["","","s","","",""]}},v59:{ending:"uy",t:{b:"uy",ps:"ought",pr:"uying",pp:"ought",p:["uy","uy","uys","uy","uy","uy"]}},v60:{ending:"l",t:{b:"l",ps:"led",pr:"ling",pp:"led",p:["l","l","ls","l","l","l"]}},v61:{ending:"ke",t:{b:"ke",ps:"de",pr:"king",pp:"de",p:["ke","ke","kes","ke","ke","ke"]}},v62:{ending:"ive",t:{b:"ive",ps:"ived",pr:"iving",pp:"ived",p:["ive","ive","ives","ive","ive","ive"]}},v63:{ending:"ise",t:{b:"ise",ps:"ose",pr:"ising",pp:"isen",p:["ise","ise","ises","ise","ise","ise"]}},v64:{ending:"ink",t:{b:"ink",ps:"ank",pr:"inking",pp:"unk",p:["ink","ink","inks","ink","ink","ink"]}},v65:{ending:"ink",t:{b:"ink",ps:"ank",pr:"inking",pp:"unk",p:["ink","ink","inks","ink","ink","ink"]}},v66:{ending:"ine",t:{b:"ine",ps:"one",pr:"ining",pp:"one",p:["ine","ine","ines","ine","ine","ine"]}},v67:{ending:"ight",t:{b:"ight",ps:"ought",pr:"ighting",pp:"ought",p:["ight","ight","ights","ight","ight","ight"]}},v68:{ending:"ght",t:{b:"ght",ps:"ghted",pr:"ghting",pp:"ghted",p:["ght","ght","ghts","ght","ght","ght"]}},v69:{ending:"eave",t:{b:"eave",ps:"ove",pr:"eaving",pp:"oven",p:["eave","eave","eaves","eave","eave","eave"]}},v70:{ending:"eat",t:{b:"eat",ps:"ate",pr:"eating",pp:"eaten",p:["eat","eat","eats","eat","eat","eat"]}},v71:{ending:"e",t:{b:"e",ps:"ed",pr:"ing",pp:"ed",p:["e","e","es","e","e","e"]}},v72:{ending:"e",t:{b:"e",ps:"ed",pr:"eing",pp:"ed",p:["e","e","es","e","e","e"]}},v73:{ending:"e",t:{b:"e",ps:"d",pr:"eing",pp:"d",p:["e","e","es","e","e","e"]}},v74:{ending:"e",t:{b:"e",ps:"",pr:"ing",pp:"ten",p:["e","e","es","e","e","e"]}},v75:{ending:"e",t:{b:"e",ps:"",pr:"ing",pp:"",p:["e","e","es","e","e","e"]}},v76:{ending:"all",t:{b:"all",ps:"ell",pr:"alling",pp:"allen",p:["all","all","alls","all","all","all"]}},v77:{ending:"ad",t:{b:"ad",ps:"d",pr:"ading",pp:"d",p:["ad","ad","ads","ad","ad","ad"]}},v78:{ending:"",t:{b:"",ps:"",pr:"ing",pp:"en",p:["","","s","","",""]}},v79:{ending:"y",t:{b:"y",ps:"id",pr:"ying",pp:"id",p:["y","y","ith","y","y","y"]}},v80:{ending:"y",t:{b:"y",ps:"ew",pr:"ying",pp:"own",p:["y","y","ies","y","y","y"]}},v81:{ending:"will",t:{b:"will",p:"will",ps:"would"}},v82:{ending:"whiz",t:{b:"whiz"}},v83:{ending:"ve",t:{b:"ve",ps:"d",pr:"ving",pp:"d",p:["ve","ve","s","ve","ve","ve"]}},v84:{ending:"tch",t:{b:"tch",ps:"ught",pr:"tching",pp:"ught",p:["tch","tch","tches","tch","tch","tch"]}},v85:{ending:"savvy",t:{b:"savvy"}},v86:{ending:"s",t:{b:"s",ps:"sed",pr:"sing",pp:"ses",p:["s","s","ses","s","s","s"]}},v87:{ending:"s",t:{b:"s",ps:"sed",pr:"sing",pp:"sed",p:["s","s","ses","s","s","s"]}},v88:{ending:"s",t:{b:"s",ps:"ed",pr:"ing",pp:"ed",p:["s","s","s","s","s","s"]}},v89:{ending:"rst",t:{b:"rst",ps:"rst",pr:"rsting",pp:"rst",p:["rst","rst","rsts","rst","rst","rst"]}},v90:{ending:"ow",t:{b:"ow",ps:"ew",pr:"owing",pp:"owed",p:["ow","ow","ows","ow","ow","ow"]}},v91:{ending:"ow",t:{b:"ow",ps:"ew",pr:"owing",pp:"owed",p:["ow","ow","ows","ow","ow","ow"]}},v92:{ending:"othe",t:{b:"othe",ps:"ad",pr:"othing",pp:"ad",p:["othe","othe","othes","othe","othe","othe"]}},v93:{ending:"ose",t:{b:"ose",ps:"se",pr:"osing",pp:"sen",p:["ose","ose","oses","ose","ose","ose"]}},v94:{ending:"ork",t:{b:"ork",ps:"orked",pr:"orking",pp:"orked",p:["ork","ork","orks","ork","ork","ork"]}},v95:{ending:"o",t:{b:"o",ps:"id",p:["o","o","oes","o","o","o"]}},v96:{ending:"o",t:{b:"o",ps:"id",pr:"oing",pp:"one",p:["o","o","oes","o","o","o"]}},v97:{ending:"l",t:{b:"l",ps:"t",pr:"ling",p:["l","l","ls","l","l","l"]}},v98:{ending:"l",t:{b:"l",ps:"led",pr:"ling",pp:"led",p:"ls"}},v99:{ending:"l",t:{b:"l",ps:"led",pr:"ling",pp:"led",p:"ls"}},v100:{ending:"it",t:{b:"it",ps:"at",pr:"itting",pp:"itted",p:["it","it","its","it","it","it"]}},v101:{ending:"ink",t:{b:"ink",ps:"unk",pr:"inking",pp:"unk",p:["ink","ink","inks","ink","ink","ink"]}},v102:{ending:"ink",t:{b:"ink",ps:"ank",pr:"inking",pp:"unk",p:["ink","ink","inks","ink","ink","ink"]}},v103:{ending:"ing",t:{b:"ing",ps:"ought",pr:"inging",pp:"ought",p:["ing","ing","ings","ing","ing","ing"]}},v104:{ending:"in",t:{b:"in",ps:"un",pr:"inning",pp:"un",p:["in","in","ins","in","in","in"]}},v105:{ending:"in",t:{b:"in",ps:"on",pr:"inning",pp:"on",p:["in","in","ins","in","in","in"]}},v106:{ending:"in",t:{b:"in",ps:"an",pr:"inning",pp:"un",p:["in","in","ins","in","in","in"]}},v107:{ending:"im",t:{b:"im",ps:"am",pr:"imming",pp:"um",p:["im","im","ims","im","im","im"]}},v108:{ending:"ike",t:{b:"ike",ps:"uck",pr:"iking",pp:"uck",p:["ike","ike","ikes","ike","ike","ike"]}},v109:{ending:"ig",t:{b:"ig",ps:"ug",pr:"igging",pp:"ug",p:["ig","ig","igs","ig","ig","ig"]}},v110:{ending:"ie",t:{b:"ie",pr:"ying",pp:"ain",p:["ie","ie","ies","ie","ie","ie"]}},v111:{ending:"ie",t:{b:"ie",ps:"ied",pr:"ying",pp:"ain",p:["ie","ie","ies","ie","ie","ie"]}},v112:{ending:"ie",t:{b:"ie",ps:"ied",pr:"ieing",pp:"ied",p:["ie","ie","ies","ie","ie","ie"]}},v113:{ending:"ie",t:{b:"ie",ps:"ay",pr:"ying",pp:"ain",p:["ie","ie","ies","ie","ie","ie"]}},v114:{ending:"ide",t:{b:"ide",ps:"ode",pr:"iding",p:["ide","ide","ides","ide","ide","ide"]}},v115:{ending:"ide",t:{b:"ide",ps:"ode",pr:"iding",pp:"id",p:["ide","ide","ides","ide","ide","ide"]}},v116:{ending:"ide",t:{b:"ide",ps:"ided",pr:"iding",pp:"ided",p:["ide","ide","ides","ide","ide","ide"]}},v117:{ending:"id",t:{b:"id",ps:"ade",pr:"idding",pp:"id",p:["id","id","ids","id","id","id"]}},v118:{ending:"id",t:{b:"id",ps:"ad",pr:"idding",pp:"idden",p:["id","id","ids","id","id","id"]}},v119:{ending:"ick",t:{b:"ick",ps:"uck",pr:"icking",pp:"uck",p:["ick","ick","icks","ick","ick","ick"]}},v120:{ending:"have",t:{b:"have",ps:"had",pr:"having",pp:"had",p:["have","have","has","have","have","have"]}},v121:{ending:"go",t:{b:"go",ps:"went",pp:"gone",p:["go","go","goes","go","go","go"]}},v122:{ending:"go",t:{b:"go",ps:"went",pr:"going",pp:"gone",p:["go","go","goes","go","go","go"]}},v123:{ending:"et",t:{b:"et",ps:"t",pr:"eting",pp:"t",p:["et","et","ets","et","et","et"]}},v124:{ending:"et",t:{b:"et",ps:"ot",pr:"etting",pp:"ot",p:["et","et","ets","et","et","et"]}},v125:{ending:"et",t:{b:"et",ps:"ot",pr:"etting",pp:"otten",p:["et","et","ets","et","et","et"]}},v126:{ending:"et",t:{b:"et",ps:"at",pp:"otten"}},v127:{ending:"elt",t:{b:"elt",ps:"elted",pr:"elting",pp:"elted",p:["elt","elt","elts","elt","elt","elt"]}},v128:{ending:"ell",t:{b:"ell",ps:"elled",pr:"elling",pp:"elled",p:["ell","ell","ells","ell","ell","ell"]}},v129:{ending:"el",t:{b:"el",ps:"lt",pr:"eling",pp:"lt",p:["el","el","els","el","el","el"]}},v130:{ending:"el",t:{b:"el",ps:"eled",pr:"eling",pp:"eled",p:["el","el","els","el","el","el"]}},v131:{ending:"eek",t:{b:"eek",ps:"ought",pr:"eeking",pp:"ought",p:["eek","eek","eeks","eek","eek","eek"]}},v132:{ending:"eech",t:{b:"eech",ps:"eeched",pr:"eeching",pp:"eeched",p:["eech","eech","eeches","eech","eech","eech"]}},v133:{ending:"ed",t:{b:"ed",ps:"d",pr:"eding",pp:"d",p:["ed","ed","eds","ed","ed","ed"]}},v134:{ending:"eave",t:{b:"eave",ps:"eaved",pr:"eaving",pp:"eaved",p:["eave","eave","eaves","eave","eave","eave"]}},v135:{ending:"eave",t:{b:"eave",ps:"ave",pr:"eaving",pp:"eaved",p:["eave","eave","eaves","eave","eave","eave"]}},v136:{ending:"ear",t:{b:"ear",ps:"eared",pr:"earing",pp:"eared",p:["ear","ear","ears","ear","ear","ear"]}},v137:{ending:"eal",t:{b:"eal",ps:"ole",pr:"ealing",pp:"olen",p:["eal","eal","eals","eal","eal","eal"]}},v138:{ending:"eak",t:{b:"eak",ps:"oke",pr:"eaking",pp:"oken",p:["eak","eak","eaks","eak","eak","eak"]}},v139:{ending:"eak",t:{b:"eak",ps:"oke",pr:"eaking",pp:"oke",p:["eak","eak","eaks","eak","eak","eak"]}},v140:{ending:"eak",t:{b:"eak",ps:"ake",pr:"eaking",pp:"oken",p:["eak","eak","eaks","eak","eak","eak"]}},v141:{ending:"ead",t:{b:"ead",ps:"od",pr:"eading",pp:"od",p:["ead","ead","eads","ead","ead","ead"]}},v142:{ending:"each",t:{b:"each",ps:"aught",pr:"eaching",pp:"aught",p:["each","each","eaches","each","each","each"]}},v143:{ending:"e",t:{b:"e",ps:"t",pr:"ing",pp:"t",p:["e","e","es","e","e","e"]}},v145:{ending:"e",t:{b:"e",ps:"e",pr:"ing",pp:"ed",p:["e","e","es","e","e","e"]}},v146:{ending:"e",t:{b:"e",ps:"",pr:"ing",pp:"den",p:["e","e","es","e","e","e"]}},v147:{ending:"e",t:{b:"e",ps:"",pr:"ing",pp:"den",p:["e","e","es","e","e","e"]}},v148:{ending:"de",t:{b:"de",ps:"id",pp:"den"}},v149:{ending:"born",t:{pp:"born"}},v150:{ending:"beware",t:{b:"beware"}},v151:{ending:"be",t:{b:"be",ps:["was","were","was","were","were","were"],pr:"being",pp:"been",p:["am","are","is","are","are","are"]}},v152:{ending:"be",t:{b:"be",p:["'m","'re","is","'re","'re","'re"],ps:["was","were","was","were","were","were"],pr:"being",pp:"been"}},v153:{ending:"ay",t:{b:"ay",ps:"ight",p:["ay","ay","ay","ay","ay","ay"]}},v154:{ending:"ay",t:{b:"ay",ps:"ew",pr:"aying",pp:"ain",p:["ay","ay","ays","ay","ay","ay"]}},v155:{ending:"ave",t:{b:"ave",ps:"ft",pr:"aving",pp:"ft",p:["ave","ave","aves","ave","ave","ave"]}},v156:{ending:"ave",t:{b:"ave",ps:"aved",pr:"aving",pp:"aved",p:["ave","ave","aves","ave","ave","ave"]}},v157:{ending:"ave",t:{b:"ave",ps:"aved",pr:"aving",pp:"aved",p:["ave","ave","aves","ave","ave","ave"]}},v158:{ending:"are",t:{b:"are",ps:"are",p:["are","are","aren't","are","are","are"]}},v159:{ending:"ang",t:{b:"ang",ps:"ung",pr:"anging",pp:"ung",p:["ang","ang","angs","ang","ang","ang"]}},v160:{ending:"ang",t:{b:"ang",ps:"anged",pr:"anging",pp:"anged",p:["ang","ang","angs","ang","ang","ang"]}},v161:{ending:"an",t:{b:"an",ps:"ould",p:["an","an","an","an","an","an"]}},v162:{ending:"all",t:{b:"all",p:"all",ps:"ould"}},v163:{ending:"ake",t:{b:"ake",ps:"oke",pr:"aking",pp:"oke",p:["ake","ake","akes","ake","ake","ake"]}},v164:{ending:"ake",t:{b:"ake",ps:"oke",pr:"aking",pp:"oken",p:["ake","ake","akes","ake","ake","ake"]}},v165:{ending:"ad",t:{b:"ad",ps:"aded",pr:"ading",pp:"aded",p:["ad","ad","ads","ad","ad","ad"]}},v166:{ending:"must",t:{b:"must",p:"must",ps:"must"}},v167:{ending:"",t:{b:"",p:["","","n't","","",""]}},v168:{ending:"ought",t:{b:"",p:"ought",ps:"ought"}},v169:{ending:"",t:{b:"",ps:"zed",pr:"zing",pp:"zed",p:["","","zes","","",""]}},v170:{ending:"",t:{b:"",pp:"n"}},v171:{ending:"",t:{b:"",ps:"ed",pr:"ing",pp:"ed",p:["","","s","","",""]}},v172:{ending:"",t:{b:"",ps:"ed",pr:"ing",pp:"ed",p:["","","es","","",""]}},v173:{ending:"",t:{b:"",ps:"ed",pr:"ing",pp:"ed",p:["","","s","","",""]}},v174:{ending:"",t:{b:"",ps:"ed",pr:"ing",pp:"ed",p:["","","s","","",""]}},v175:{ending:"",t:{b:"",ps:"",pr:"ing",p:["","","s","","",""]}},v176:{ending:"",t:{b:"",ps:"",pr:"ding",pp:""}},v177:{ending:"",t:{b:"",ps:"",pr:"ding",pp:"",p:["","","s","","",""]}},v178:{ending:"",t:{b:"",ps:"",pr:"",pp:"",p:["","","","","",""]}},v179:{ending:"",t:{b:"",ps:"'d",pr:"ing",pp:"'d",p:["","","s","","",""]}},v180:{ending:"",t:{b:"",ps:"'d",pr:"ing",pp:"ed",p:["","","s","","",""]}},v181:{ending:"ll",t:{b:"ll",ps:"lled",pr:"lling",pp:"lled",p:["ll","ll","ls","ll","ll","ll"]}}},declension:{n1:{ending:"",declension:[{val:"",n:"s"},{val:"s",n:"p"}]},n2:{ending:"",declension:[{val:"",n:"s"},{val:"es",n:"p"}]},n3:{ending:"y",declension:[{val:"y",n:"s"},{val:"ies",n:"p"}]},n4:{ending:"",declension:[{val:"",n:"s"},{val:"",n:"p"}]},n5:{ending:"",declension:[{val:"",n:"s"}]},n6:{ending:"",declension:[{val:"",n:"p"}]},n7:{ending:"an",declension:[{val:"an",n:"s"},{val:"en",n:"p"}]},n8:{ending:"is",declension:[{val:"is",n:"s"},{val:"es",n:"p"}]},n9:{ending:"f",declension:[{val:"f",n:"s"},{val:"ves",n:"p"}]},n10:{ending:"fe",declension:[{val:"fe",n:"s"},{val:"ves",n:"p"}]},n11:{ending:"um",declension:[{val:"um",n:"s"},{val:"a",n:"p"}]},n12:{ending:"us",declension:[{val:"us",n:"s"},{val:"i",n:"p"}]},n13:{ending:"",declension:[{val:"",n:"s"},{val:"e",n:"p"}]},n14:{ending:"",declension:[{val:"",n:"s"},{val:"x",n:"p"}]},n15:{ending:"",declension:[{val:"",n:"s"},{val:"ren",n:"p"}]},n16:{ending:"ouse",declension:[{val:"ouse",n:"s"},{val:"ice",n:"p"}]},n17:{ending:"-in-law",declension:[{val:"-in-law",n:"s"},{val:"s-in-law",n:"p"}]},n18:{ending:"",declension:[{val:"",n:"s"},{val:"'s",n:"p"}]},n19:{ending:"oot",declension:[{val:"oot",n:"s"},{val:"eet",n:"p"}]},n20:{ending:"ooth",declension:[{val:"ooth",n:"s"},{val:"eeth",n:"p"}]},n21:{ending:"",declension:[{val:"",n:"s"},{val:"en",n:"p"}]},n22:{ending:"ex",declension:[{val:"ex",n:"s"},{val:"ices",n:"p"}]},n23:{ending:"x",declension:[{val:"x",n:"s"},{val:"ices",n:"p"}]},n24:{ending:"-on",declension:[{val:"-on",n:"s"},{val:"s-on",n:"p"}]},n25:{ending:"us",declension:[{val:"us",n:"s"},{val:"era",n:"p"}]},n26:{ending:"on",declension:[{val:"on",n:"s"},{val:"a",n:"p"}]},n27:{ending:"an-at-arms",declension:[{val:"an-at-arms",n:"s"},{val:"en-at-arms",n:"p"}]},n28:{ending:"-at-arms",declension:[{val:"-at-arms",n:"s"},{val:"s-at-arms",n:"p"}]},n29:{ending:"",declension:[{val:"",n:"s"},{val:"er",n:"p"}]},n30:{ending:"",declension:[{val:"",n:"s"},{val:"i",n:"p"}]},n31:{ending:"",declension:[{val:"",n:"s"},{val:"im",n:"p"}]},n32:{ending:"",declension:[{val:"",n:"s"},{val:"r",n:"p"}]},n33:{ending:"-by",declension:[{val:"-by",n:"s"},{val:"s-by",n:"p"}]},n34:{ending:"a",declension:[{val:"a",n:"s"},{val:"or",n:"p"}]},n35:{ending:"e",declension:[{val:"e",n:"s"},{val:"ae",n:"p"}]},n36:{ending:"e",declension:[{val:"e",n:"s"},{val:"i",n:"p"}]},n37:{ending:"o",declension:[{val:"o",n:"s"},{val:"i",n:"p"}]},n38:{ending:"us",declension:[{val:"us",n:"s"},{val:"ora",n:"p"}]},n39:{ending:"-in",declension:[{val:"-in",n:"s"},{val:"s-in",n:"p"}]},n40:{ending:"oose",declension:[{val:"oose",n:"s"},{val:"eese",n:"p"}]},n41:{ending:"y-in-waiting",declension:[{val:"y-in-waiting",n:"s"},{val:"ies-in-waiting",n:"p"}]},n42:{ending:"-out",declension:[{val:"-out",n:"s"},{val:"s-out",n:"p"}]},n43:{ending:"-up",declension:[{val:"-up",n:"s"},{val:"s-up",n:"p"}]},n44:{ending:"s",declension:[{val:"s",n:"s"},{val:"des",n:"p"}]},n45:{ending:"x",declension:[{val:"x",n:"s"},{val:"ces",n:"p"}]},n46:{ending:"",declension:[{val:"",n:"s"},{val:"een",n:"p"}]},n47:{ending:"",declension:[{val:"",n:"s"},{val:"in",n:"p"}]},n48:{ending:"x",declension:[{val:"x",n:"s"},{val:"ges",n:"p"}]},n49:{ending:"an-of-war",declension:[{val:"an-of-war",n:"s"},{val:"en-of-war",n:"p"}]},n50:{ending:"ey",declension:[{val:"ey",n:"s"},{val:"ies",n:"p"}]},n51:{ending:"Grand Prix",declension:[{val:"Grand Prix",n:"s"},{val:"Grands Prix",n:"p"}]},n52:{ending:"Madame",declension:[{val:"Madame",n:"s"},{val:"Mesdames",n:"p"}]},n53:{ending:"Mademoiselle",declension:[{val:"Mademoiselle",n:"s"},{val:"Mesdemoiselles",n:"p"}]},n54:{ending:"Monsieur",declension:[{val:"Monsieur",n:"s"},{val:"Messieurs",n:"p"}]},n55:{ending:"Mr",declension:[{val:"Mr",n:"s"},{val:"Messrs",n:"p"}]},n56:{ending:"agent provocateur",declension:[{val:"agent provocateur",n:"s"},{val:"agents provocateurs",n:"p"}]},n57:{ending:"aide-de-camp",declension:[{val:"aide-de-camp",n:"s"},{val:"aides-de-camp",n:"p"}]},n58:{ending:"auto-da-fé",declension:[{val:"auto-da-fé",n:"s"},{val:"autos-da-fé",n:"p"}]},n59:{ending:"bête noire",declension:[{val:"bête noire",n:"s"},{val:"bêtes noires",n:"p"}]},n60:{ending:"billet-doux",declension:[{val:"billet-doux",n:"s"},{val:"billets-doux",n:"p"}]},n61:{ending:"bon mot",declension:[{val:"bon mot",n:"s"},{val:"bons mots",n:"p"}]},n62:{ending:"brother",declension:[{val:"brother",n:"s"},{val:"brethren",n:"p"}]},n63:{ending:"carte blanche",declension:[{val:"carte blanche",n:"s"},{val:"cartes blanches",n:"p"}]},n64:{ending:"chef-d'oeuvre",declension:[{val:"chef-d'oeuvre",n:"s"},{val:"chefs-d'oeuvre",n:"p"}]},n65:{ending:"cor anglais",declension:[{val:"cor anglais",n:"s"},{val:"cors anglais",n:"p"}]},n66:{ending:"coup d'etat",declension:[{val:"coup d'etat",n:"s"},{val:"coups d'etat",n:"p"}]},n67:{ending:"coup de grace",declension:[{val:"coup de grace",n:"s"},{val:"coups de grace",n:"p"}]},n68:{ending:"court-martial",declension:[{val:"court-martial",n:"s"},{val:"courts-martial",n:"p"}]},n69:{ending:"cow",declension:[{val:"cow",n:"s"},{val:"kine",n:"p"}]},n70:{ending:"curriculum vitae",declension:[{val:"curriculum vitae",n:"s"},{val:"curricula vitae",n:"p"}]},n71:{ending:"enfant terrible",declension:[{val:"enfant terrible",n:"s"},{val:"enfants terribles",n:"p"}]},n72:{ending:"fait accompli",declension:[{val:"fait accompli",n:"s"},{val:"faits accomplis",n:"p"}]},n73:{ending:"fleur-de-lis",declension:[{val:"fleur-de-lis",n:"s"},{val:"fleurs-de-lis",n:"p"}]},n74:{ending:"fleur-de-lys",declension:[{val:"fleur-de-lys",n:"s"},{val:"fleurs-de-lys",n:"p"}]},n75:{ending:"ignis fatuus",declension:[{val:"ignis fatuus",n:"s"},{val:"ignes fatui",n:"p"}]},n76:{ending:"knight-errant",declension:[{val:"knight-errant",n:"s"},{val:"knights-errant",n:"p"}]},n77:{ending:"nom de plume",declension:[{val:"nom de plume",n:"s"},{val:"noms de plume",n:"p"}]},n78:{ending:"nouveau riche",declension:[{val:"nouveau riche",n:"s"},{val:"nouveaux riches",n:"p"}]},n79:{ending:"penny",declension:[{val:"penny",n:"s"},{val:"pence",n:"p"}]},n80:{ending:"petit bourgeois",declension:[{val:"petit bourgeois",n:"s"},{val:"petits bourgeois",n:"p"}]},n81:{ending:"señor",declension:[{val:"señor",n:"s"},{val:"senores",n:"p"}]},n82:{ending:"sock",declension:[{val:"sock",n:"s"},{val:"sox",n:"p"}]},n83:{ending:"tableau vivant",declension:[{val:"tableau vivant",n:"s"},{val:"tableaux vivants",n:"p"}]},n84:{ending:"wagon-lit",declension:[{val:"wagon-lit",n:"s"},{val:"wagons-lit",n:"p"}]},n85:{ending:"",declension:[{val:"",g:"m",n:"s"},{val:"s",g:"m",n:"p"}]},n86:{ending:"",declension:[{val:"",g:"m",n:"s"},{val:"es",g:"m",n:"p"}]},n87:{ending:"",declension:[{val:"",g:"f",n:"s"},{val:"s",g:"f",n:"p"}]},n88:{ending:"",declension:[{val:"",g:"f",n:"s"},{val:"es",g:"f",n:"p"}]},n89:{ending:"an",declension:[{val:"an",g:"m",n:"s"},{val:"en",g:"m",n:"p"}]},n90:{ending:"an",declension:[{val:"an",g:"f",n:"s"},{val:"en",g:"f",n:"p"}]},n91:{ending:"fe",declension:[{val:"fe",g:"f",n:"s"},{val:"ves",g:"f",n:"p"}]},a1:{ending:"",declension:[{val:""}]},a2:{ending:"",declension:[{val:""},{val:"r",f:"co"},{val:"st",f:"su"}]},a3:{ending:"",declension:[{val:""},{val:"er",f:"co"},{val:"est",f:"su"}]},a4:{ending:"y",declension:[{val:"y"},{val:"ier",f:"co"},{val:"iest",f:"su"}]},a5:{ending:"b",declension:[{val:"b"},{val:"bber",f:"co"},{val:"bbest",f:"su"}]},a6:{ending:"d",declension:[{val:"d"},{val:"dder",f:"co"},{val:"ddest",f:"su"}]},a7:{ending:"g",declension:[{val:"g"},{val:"gger",f:"co"},{val:"ggest",f:"su"}]},a8:{ending:"l",declension:[{val:"l"},{val:"ller",f:"co"},{val:"llest",f:"su"}]},a9:{ending:"m",declension:[{val:"m"},{val:"mmer",f:"co"},{val:"mmest",f:"su"}]},a10:{ending:"n",declension:[{val:"n"},{val:"nner",f:"co"},{val:"nnest",f:"su"}]},a11:{ending:"t",declension:[{val:"t"},{val:"tter",f:"co"},{val:"ttest",f:"su"}]},a12:{ending:"ey",declension:[{val:"ey"},{val:"ier",f:"co"},{val:"iest",f:"su"}]},a13:{ending:"y",declension:[{val:"y"},{val:"er",f:"co"},{val:"est",f:"su"}]},a14:{ending:"bad",declension:[{val:"bad"},{val:"worse",f:"co"},{val:"worst",f:"su"}]},a15:{ending:"good",declension:[{val:"good"},{val:"better",f:"co"},{val:"best",f:"su"}]},a16:{ending:"old",declension:[{val:"old"},{val:"older",f:"co"},{val:"oldest",f:"su"}]},a17:{ending:"far",declension:[{val:"far"},{val:"farther",f:"co"},{val:"farthest",f:"su"}]},a18:{ending:"",declension:[{val:""},{val:"st",f:"su"}]},a19:{ending:"well",declension:[{val:"well"},{val:"better",f:"co"},{val:"best",f:"su"}]},pn1:{ending:"I",declension:[{val:"I",pe:1,n:"s",g:"x"},{val:"you",pe:2,n:"x",g:"x"},{val:"he",pe:3,n:"s",g:"m"},{val:"it",pe:3,n:"s",g:"n"},{val:"she",pe:3,n:"s",g:"f"},{val:"we",pe:1,n:"p",g:"x"},{val:"they",pe:3,n:"p",g:"x"}]},pn2:{ending:"me",declension:[{val:"me",pe:1,n:"s",g:"x"},{val:"you",pe:2,n:"x",g:"x"},{val:"her",pe:3,n:"s",g:"f"},{val:"him",pe:3,n:"s",g:"m"},{val:"it",pe:3,n:"s",g:"n"},{val:"us",pe:1,n:"p",g:"x"},{val:"them",pe:3,n:"p",g:"x"}]},pn3:{ending:"mine",declension:[{val:"mine",pe:1,n:"s",g:"x",own:"s"},{val:"yours",pe:2,n:"x",g:"x",own:"x"},{val:"hers",pe:3,n:"s",g:"f",own:"s"},{val:"his",pe:3,n:"s",g:"m",own:"s"},{val:"its",pe:3,n:"s",g:"n",own:"s"},{val:"ours",pe:1,n:"p",g:"x",own:"p"},{val:"theirs",pe:3,n:"p",g:"x",own:"p"}]},pn4:{ending:"myself",declension:[{val:"myself",pe:1,n:"s",g:"x"},{val:"yourself",pe:2,n:"s",g:"x"},{val:"herself",pe:3,n:"s",g:"f"},{val:"himself",pe:3,n:"s",g:"m"},{val:"itself",pe:3,n:"s",g:"n"},{val:"ourselves",pe:1,n:"p",g:"x"},{val:"yourselves",pe:2,n:"p",g:"x"},{val:"themselves",pe:3,n:"p",g:"x"}]},pn5:{ending:"",declension:[{val:"",pt:"i",pe:3}]},pn6:{ending:"",declension:[{val:"",pt:"in"}]},pn7:{ending:"",declension:[{val:"",pt:"r"}]},pn8:{ending:"",declension:[{val:"",pt:"d"}]},pn9:{ending:"",declension:[{val:"",pt:"ex"}]},d1:{ending:"a",declension:[{val:"a",n:"s"},{val:"",n:"p"}]},d2:{ending:"my",declension:[{val:"my",pe:1,n:"x",g:"x",own:"s"},{val:"your",pe:2,n:"x",g:"x",own:"x"},{val:"her",pe:3,n:"x",g:"f",own:"s"},{val:"his",pe:3,n:"x",g:"m",own:"s"},{val:"its",pe:3,n:"x",g:"n",own:"s"},{val:"our",pe:1,n:"x",g:"x",own:"p"},{val:"their",pe:3,n:"x",g:"x",own:"p"}]},d3:{ending:"that",declension:[{val:"that",n:"s"},{val:"those",n:"p"}]},d4:{ending:"",declension:[{val:"",n:"x"}]},d5:{ending:"this",declension:[{val:"this",n:"s"},{val:"these",n:"p"}]},b1:{ending:"",declension:[{val:""}]},b2:{ending:"badly",declension:[{val:"badly"},{val:"worse",f:"co"},{val:"worst",f:"su"}]},b3:{ending:"well",declension:[{val:"well"},{val:"better",f:"co"},{val:"best",f:"su"}]},b4:{ending:"far",declension:[{val:"far"},{val:"farther",f:"co"},{val:"farthest",f:"su"}]},b5:{ending:"little",declension:[{val:"little"},{val:"less",f:"co"},{val:"least",f:"su"}]}},punctuation:{pc1:{b:"",a:""},pc2:{b:" ",a:" "},pc3:{b:" ",a:""},pc4:{b:"",a:" "},pc5:{b:" ",a:"",pos:"l"},pc6:{b:"",a:" ",pos:"r"},pc7:{b:" ",a:" ",pos:"l"},pc8:{b:" ",a:" ",pos:"r"}},sentence_type:{exc:{type:"exclamative",punctuation:"!"},int:{type:"interrogative",punctuation:"?",prefix:{base:"do",yon:"do",wos:"who",wod:"who",woi:"to whom",wad:"what",whe:"where",how:"how",whn:"when",why:"why",muc:"how much"},future:"will"},dec:{type:"declarative",punctuation:"."}},propositional:{base:"that",subject:"who",autres:["which","whose","whom"]},regular:{pp:{ending:"",option:[{val:""}]}},verb_option:{neg:{prep1:"not"}},usePronoun:{S:"I",SP:"I",NP:"I",VP:"me",PP:"me",Pro:"me"},date:{format:{non_natural:{"year-month-date-day":"[l] [M]/[d]/[Y]","year-month-date":"[M]/[d]/[Y]","year-month":"[M]/[Y]","month-date":"[M]/[d]","month-date-day":"[l] [M]/[d]",year:"[Y]",month:"[M]",date:"[d]",day:"[l]","hour:minute:second":"[H0]:[m0]:[s0] [A]","hour:minute":"[h]:[m0] [A]","minute:second":"[m0]:[s0]",hour:"[h] [A]",minute:"[m]",second:"[s]"},natural:{"year-month-date-day":"on [l], [F] [d], [Y]","year-month-date":"on [F] [d], [Y]","year-month":"on [F] [Y]","month-date":"on [F] [d]","month-date-day":"on [l], [F] [d]",year:"in [Y]",month:"in [F]",date:"on the [d]",day:"on [l]","hour:minute:second":"at [h]:[m0]:[s0] [A]","hour:minute":"at [h]:[m0] [A]","minute:second":"at [m]:[s0] [A]",hour:"at [h] [A]",minute:"at [m] min",second:"at [s] s"},relative_time:{"-":"[x] days ago","-6":"last [l]","-5":"last [l]","-4":"last [l]","-3":"last [l]","-2":"last [l]","-1":"yesterday",0:"today",1:"tomorrow",2:"[l]",3:"[l]",4:"[l]",5:"[l]",6:"[l]","+":"in [x] days"}},text:{weekday:["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"],month:{1:"January",2:"February",3:"March",4:"April",5:"May",6:"June",7:"July",8:"August",9:"September",10:"October",11:"November",12:"December"},meridiem:["a.m.","p.m."]}},number:{symbol:{group:",",decimal:"."},number:["zero"]},elision:{elidables:["a"],voyellesAccentuees:"àäéèêëïîöôùû",voyelles:"aeiouàäéèêëïîöôùû"},union:"or",compound:{alias:"aux",continuous:{aux:"be",participle:"pr"},perfect:{aux:"have",participle:"pp"},passive:{aux:"be",participle:"pp"},future:{aux:"will"},poss:{aux:"can"},perm:{aux:"may"},nece:{aux:"shall"},will:{aux:"will"},obli:{aux:"must"}}},lexiconFr={" ":{Pc:{tab:["pc1"]}},"!":{Pc:{tab:["pc4"]}},'"':{Pc:{compl:'"',tab:["pc5","pc6"]}},"(":{Pc:{compl:")",tab:["pc5"]}},")":{Pc:{compl:"(",tab:["pc6"]}},"*":{Pc:{compl:"*",tab:["pc5","pc6"]}},",":{Pc:{tab:["pc4"]}},"-":{Pc:{tab:["pc1"]}},".":{Pc:{tab:["pc4"]}},"...":{Pc:{tab:["pc4"]}},":":{Pc:{tab:["pc2"]}},";":{Pc:{tab:["pc2"]}},"?":{Pc:{tab:["pc4"]}},"?!":{Pc:{tab:["pc4"]}},"[":{Pc:{compl:"]",tab:["pc5"]}},"]":{Pc:{compl:"[",tab:["pc6"]}},"à":{P:{tab:["pp"]}},abaisser:{V:{aux:["av"],tab:"v36"}},abandonner:{V:{aux:["av"],tab:"v36"}},abattre:{V:{aux:["av"],tab:"v87"}},"abbé":{N:{g:"m",tab:["n3"]}},abeille:{N:{g:"f",tab:["n17"]}},"abîme":{N:{g:"m",tab:["n3"]}},"abîmer":{V:{aux:["av"],tab:"v36"}},abondamment:{Adv:{tab:["av"]}},abondance:{N:{g:"f",tab:["n17"]}},abondant:{A:{tab:["n28"]}},abord:{N:{g:"m",tab:["n3"]}},aborder:{V:{aux:["av"],tab:"v36"}},aboutir:{V:{aux:["av"],tab:"v58"}},aboyer:{V:{aux:["av"],tab:"v5"}},abri:{N:{g:"m",tab:["n3"]}},abriter:{V:{aux:["av"],tab:"v36"}},absence:{N:{g:"f",tab:["n17"]}},absent:{A:{tab:["n28"]}},absenter:{V:{aux:["êt"],tab:"v36"}},absolu:{A:{tab:["n28"]}},absolument:{Adv:{tab:["av"]}},abuser:{V:{aux:["av"],tab:"v36"}},accabler:{V:{aux:["av"],tab:"v36"}},accepter:{V:{aux:["av"],tab:"v36"}},accident:{N:{g:"m",tab:["n3"]}},acclamation:{N:{g:"f",tab:["n17"]}},acclamer:{V:{aux:["av"],tab:"v36"}},accompagner:{V:{aux:["av"],tab:"v36"}},accomplir:{V:{aux:["av"],tab:"v58"}},accord:{N:{g:"m",tab:["n3"]}},accorder:{V:{aux:["av"],tab:"v36"}},accourir:{V:{aux:["aê"],tab:"v57"}},accrocher:{V:{aux:["av"],tab:"v36"}},accueil:{N:{g:"m",tab:["n3"]}},accueillir:{V:{aux:["av"],tab:"v51"}},accuser:{V:{aux:["av"],tab:"v36"}},acharner:{V:{aux:["av"],tab:"v36"}},achat:{N:{g:"m",tab:["n3"]}},acheminer:{V:{aux:["av"],tab:"v36"}},acheter:{V:{aux:["av"],tab:"v11"}},acheteur:{N:{g:"m",tab:["n55"]}},achever:{V:{aux:["av"],tab:"v25"}},acide:{N:{g:"m",tab:["n3"]}},acier:{N:{g:"m",tab:["n3"]}},"acquérir":{V:{aux:["av"],tab:"v39"}},acquitter:{V:{aux:["av"],tab:"v36"}},acte:{N:{g:"m",tab:["n3"]}},actif:{A:{tab:["n46"]}},action:{N:{g:"f",tab:["n17"]}},activement:{Adv:{tab:["av"]}},activer:{V:{aux:["av"],tab:"v36"}},"activité":{N:{g:"f",tab:["n17"]}},actuel:{A:{tab:["n48"]}},actuellement:{Adv:{tab:["av"]}},adieu:{N:{g:"m",tab:["n4"]}},admettre:{V:{aux:["av"],tab:"v89"}},administration:{N:{g:"f",tab:["n17"]}},administrer:{V:{aux:["av"],tab:"v36"}},admirable:{A:{tab:["n25"]}},admiration:{N:{g:"f",tab:["n17"]}},admirer:{V:{aux:["av"],tab:"v36"}},adopter:{V:{aux:["av"],tab:"v36"}},adorer:{V:{aux:["av"],tab:"v36"}},adoucir:{V:{aux:["av"],tab:"v58"}},adresse:{N:{g:"f",tab:["n17"]}},adresser:{V:{aux:["av"],tab:"v36"}},adroit:{A:{tab:["n28"]}},adversaire:{N:{g:"x",tab:["n25"]}},"aérer":{V:{aux:["av"],tab:"v28"}},affaiblir:{V:{aux:["av"],tab:"v58"}},"affairé":{A:{tab:["n28"]}},affaire:{N:{g:"f",tab:["n17"]}},affection:{N:{g:"f",tab:["n17"]}},affectionner:{V:{aux:["av"],tab:"v36"}},affectueusement:{Adv:{tab:["av"]}},affectueux:{A:{tab:["n54"]}},affiche:{N:{g:"f",tab:["n17"]}},affliger:{V:{aux:["av"],tab:"v3"}},affreux:{A:{tab:["n54"]}},agacer:{V:{aux:["av"],tab:"v0"}},"âgé":{A:{tab:["n28"]}},"âge":{N:{g:"m",tab:["n3"]}},agenouiller:{V:{aux:["êt"],tab:"v36"}},agent:{N:{g:"m",tab:["n3"]}},agile:{A:{tab:["n25"]}},agir:{V:{aux:["av"],tab:"v58"}},agitation:{N:{g:"f",tab:["n17"]}},agiter:{V:{aux:["av"],tab:"v36"}},"agréable":{A:{tab:["n25"]}},"agréablement":{Adv:{tab:["av"]}},"agréer":{V:{aux:["av"],tab:"v36"}},"agrément":{N:{g:"m",tab:["n3"]}},"agrémenter":{V:{aux:["av"],tab:"v36"}},aide:{N:{g:"f",tab:["n17"]}},aider:{V:{aux:["av"],tab:"v36"}},aigu:{A:{tab:["n45"]}},aiguille:{N:{g:"f",tab:["n17"]}},aiguiser:{V:{aux:["av"],tab:"v36"}},aile:{N:{g:"f",tab:["n17"]}},ailleurs:{Adv:{tab:["av"]}},aimable:{A:{tab:["n25"]}},aimer:{V:{aux:["av"],tab:"v36"}},"aîné":{A:{tab:["n28"]}},ainsi:{Adv:{tab:["av"]}},air:{N:{g:"m",tab:["n3"]}},aire:{N:{g:"f",tab:["n17"]}},aisance:{N:{g:"f",tab:["n17"]}},"aisé":{A:{tab:["n28"]}},aise:{N:{g:"f",tab:["n17"]}},"aisément":{Adv:{tab:["av"]}},ajouter:{V:{aux:["av"],tab:"v36"}},alcool:{N:{g:"m",tab:["n3"]}},alcoolique:{A:{tab:["n25"]}},alentours:{N:{g:"m",tab:["n1"]}},alerte:{N:{g:"f",tab:["n17"]}},aligner:{V:{aux:["av"],tab:"v36"}},aliment:{N:{g:"m",tab:["n3"]}},"allée":{N:{g:"f",tab:["n17"]}},"allégresse":{N:{g:"f",tab:["n17"]}},allemand:{A:{tab:["n28"]}},aller:{V:{aux:["êt"],tab:"v137"}},allonger:{V:{aux:["av"],tab:"v3"}},allumer:{V:{aux:["av"],tab:"v36"}},allumette:{N:{g:"f",tab:["n17"]}},allure:{N:{g:"f",tab:["n17"]}},alors:{Adv:{tab:["av"]}},alouette:{N:{g:"f",tab:["n17"]}},amant:{N:{g:"m",tab:["n28"]}},amateur:{N:{g:"m",tab:["n3"]}},ambulance:{N:{g:"f",tab:["n17"]}},"âme":{N:{g:"f",tab:["n17"]}},amende:{N:{g:"f",tab:["n17"]}},amener:{V:{aux:["av"],tab:"v24"}},amer:{A:{tab:["n39"]}},"américain":{A:{tab:["n28"]}},ami:{N:{g:"m",tab:["n28"]}},amical:{A:{tab:["n47"]}},amicalement:{Adv:{tab:["av"]}},"amitié":{N:{g:"f",tab:["n17"]}},amour:{N:{g:"m",tab:["n3"]}},ample:{A:{tab:["n25"]}},amusant:{A:{tab:["n28"]}},amusement:{N:{g:"m",tab:["n3"]}},amuser:{V:{aux:["av"],tab:"v36"}},ancien:{A:{tab:["n49"]}},"âne":{N:{g:"m",tab:["n3"]}},ange:{N:{g:"m",tab:["n3"]}},anglais:{A:{tab:["n27"]}},angle:{N:{g:"m",tab:["n3"]}},angoisse:{N:{g:"f",tab:["n17"]}},animal:{N:{g:"m",tab:["n5"]}},animation:{N:{g:"f",tab:["n17"]}},animer:{V:{aux:["av"],tab:"v36"}},anneau:{N:{g:"m",tab:["n4"]}},"année":{N:{g:"f",tab:["n17"]}},anniversaire:{N:{g:"m",tab:["n3"]}},annonce:{N:{g:"f",tab:["n17"]}},annoncer:{V:{aux:["av"],tab:"v0"}},annuel:{A:{tab:["n48"]}},anticiper:{V:{aux:["av"],tab:"v36"}},"anxiété":{N:{g:"f",tab:["n17"]}},anxieux:{A:{tab:["n54"]}},"août":{N:{g:"m",tab:["n3"]}},apaiser:{V:{aux:["av"],tab:"v36"}},apercevoir:{V:{aux:["av"],tab:"v63"}},apostolique:{A:{tab:["n25"]}},"apôtre":{N:{g:"m",tab:["n3"]}},"apparaître":{V:{aux:["aê"],tab:"v101"}},apparence:{N:{g:"f",tab:["n17"]}},apparition:{N:{g:"f",tab:["n17"]}},appartement:{N:{g:"m",tab:["n3"]}},appartenir:{V:{aux:["av"],tab:"v52"}},appel:{N:{g:"m",tab:["n3"]}},appeler:{V:{aux:["av"],tab:"v7"}},"appétissant":{A:{tab:["n28"]}},"appétit":{N:{g:"m",tab:["n3"]}},applaudir:{V:{aux:["av"],tab:"v58"}},application:{N:{g:"f",tab:["n17"]}},appliquer:{V:{aux:["av"],tab:"v36"}},apporter:{V:{aux:["av"],tab:"v36"}},"apprécier":{V:{aux:["av"],tab:"v36"}},apprendre:{V:{aux:["av"],tab:"v90"}},"apprêter":{V:{aux:["av"],tab:"v36"}},approche:{N:{g:"f",tab:["n17"]}},approcher:{V:{aux:["av"],tab:"v36"}},approuver:{V:{aux:["av"],tab:"v36"}},appui:{N:{g:"m",tab:["n3"]}},appuyer:{V:{aux:["av"],tab:"v5"}},"après":{P:{tab:["pp"]}},"après-midi":{N:{g:"m",tab:["n24"]}},"araignée":{N:{g:"f",tab:["n17"]}},arbitre:{N:{g:"m",tab:["n3"]}},arbre:{N:{g:"m",tab:["n3"]}},arbuste:{N:{g:"m",tab:["n3"]}},architecte:{N:{g:"m",tab:["n3"]}},ardent:{A:{tab:["n28"]}},ardeur:{N:{g:"f",tab:["n17"]}},ardoise:{N:{g:"f",tab:["n17"]}},argent:{N:{g:"m",tab:["n3"]}},argenter:{V:{aux:["av"],tab:"v36"}},arme:{N:{g:"f",tab:["n17"]}},"armée":{N:{g:"f",tab:["n17"]}},armer:{V:{aux:["av"],tab:"v36"}},armoire:{N:{g:"f",tab:["n17"]}},arracher:{V:{aux:["av"],tab:"v36"}},arranger:{V:{aux:["av"],tab:"v3"}},"arrêt":{N:{g:"m",tab:["n3"]}},"arrêter":{V:{aux:["av"],tab:"v36"}},"arrière":{N:{g:"m",tab:["n3"]}},"arrivée":{N:{g:"f",tab:["n17"]}},arriver:{V:{aux:["êt"],tab:"v36"}},arrondir:{V:{aux:["av"],tab:"v58"}},arrondissement:{N:{g:"m",tab:["n3"]}},arroser:{V:{aux:["av"],tab:"v36"}},art:{N:{g:"m",tab:["n3"]}},article:{N:{g:"m",tab:["n3"]}},artiste:{N:{g:"x",tab:["n25"]}},aspirer:{V:{aux:["av"],tab:"v36"}},assaut:{N:{g:"m",tab:["n3"]}},assembler:{V:{aux:["av"],tab:"v36"}},asseoir:{V:{aux:["av"],tab:"v74"}},assez:{Adv:{tab:["av"]}},assidu:{A:{tab:["n28"]}},assiette:{N:{g:"f",tab:["n17"]}},assister:{V:{aux:["av"],tab:"v36"}},associer:{V:{aux:["av"],tab:"v36"}},assurer:{V:{aux:["av"],tab:"v36"}},astre:{N:{g:"m",tab:["n3"]}},atelier:{N:{g:"m",tab:["n3"]}},"atmosphère":{N:{g:"f",tab:["n17"]}},attachement:{N:{g:"m",tab:["n3"]}},attacher:{V:{aux:["av"],tab:"v36"}},attaque:{N:{g:"f",tab:["n17"]}},attaquer:{V:{aux:["av"],tab:"v36"}},attarder:{V:{aux:["av"],tab:"v36"}},atteindre:{V:{aux:["av"],tab:"v97"}},atteler:{V:{aux:["av"],tab:"v7"}},attendre:{V:{aux:["av"],tab:"v85"}},attente:{N:{g:"f",tab:["n17"]}},attentif:{A:{tab:["n46"]}},attention:{N:{g:"f",tab:["n17"]}},attentivement:{Adv:{tab:["av"]}},attester:{V:{aux:["av"],tab:"v36"}},attirer:{V:{aux:["av"],tab:"v36"}},attrait:{N:{g:"m",tab:["n3"]}},attraper:{V:{aux:["av"],tab:"v36"}},attribuer:{V:{aux:["av"],tab:"v36"}},attrister:{V:{aux:["av"],tab:"v36"}},au:{D:{tab:["d2"]}},aube:{N:{g:"f",tab:["n17"]}},"aubépine":{N:{g:"f",tab:["n17"]}},auberge:{N:{g:"f",tab:["n17"]}},augmenter:{V:{aux:["aê"],tab:"v36"}},"aujourd'hui":{Adv:{tab:["av"]}},"aumône":{N:{g:"f",tab:["n17"]}},auparavant:{Adv:{tab:["av"]}},"auprès":{Adv:{tab:["av"]}},aurore:{N:{g:"f",tab:["n17"]}},aussi:{Adv:{tab:["av"]}},"aussitôt":{Adv:{tab:["av"]}},autant:{Adv:{tab:["av"]}},autel:{N:{g:"m",tab:["n3"]}},auteur:{N:{g:"m",tab:["n3"]}},auto:{N:{g:"f",tab:["n17"]}},automne:{N:{g:"m",tab:["n3"]}},automobile:{N:{g:"f",tab:["n17"]}},autoriser:{V:{aux:["av"],tab:"v36"}},"autorité":{N:{g:"f",tab:["n17"]}},autre:{A:{pos:"pre",tab:["n25"]}},autrefois:{Adv:{tab:["av"]}},autrement:{Adv:{tab:["av"]}},avaler:{V:{aux:["av"],tab:"v36"}},avance:{N:{g:"f",tab:["n17"]}},avancer:{V:{aux:["av"],tab:"v0"}},avant:{P:{tab:["pp"]}},avantage:{N:{g:"m",tab:["n3"]}},avantageux:{A:{tab:["n54"]}},avec:{P:{tab:["pp"]}},avenir:{N:{g:"m",tab:["n3"]}},aventure:{N:{g:"f",tab:["n17"]}},aventurer:{V:{aux:["av"],tab:"v36"}},avenue:{N:{g:"f",tab:["n17"]}},averse:{N:{g:"f",tab:["n17"]}},avertir:{V:{aux:["av"],tab:"v58"}},aveugle:{A:{tab:["n25"]}},aviateur:{N:{g:"m",tab:["n56"]}},avion:{N:{g:"m",tab:["n3"]}},avis:{N:{g:"m",tab:["n2"]}},aviser:{V:{aux:["av"],tab:"v36"}},avoine:{N:{g:"m",tab:["n17"]}},avoir:{N:{g:"m",tab:["n3"]},V:{aux:["av"],tab:"v135"}},avouer:{V:{aux:["av"],tab:"v36"}},avril:{N:{g:"m",tab:["n3"]}},azur:{N:{g:"m",tab:["n3"]}},"azuré":{A:{tab:["n28"]}},bagage:{N:{g:"m",tab:["n3"]}},baguette:{N:{g:"f",tab:["n17"]}},baigner:{V:{aux:["av"],tab:"v36"}},"bâiller":{V:{aux:["av"],tab:"v36"}},bain:{N:{g:"m",tab:["n3"]}},baiser:{N:{g:"m",tab:["n3"]}},baisser:{V:{aux:["av"],tab:"v36"}},bal:{N:{g:"m",tab:["n3"]}},balancer:{V:{aux:["av"],tab:"v0"}},"balançoire":{N:{g:"f",tab:["n17"]}},balayer:{V:{aux:["av"],tab:"v4"}},balcon:{N:{g:"m",tab:["n3"]}},balle:{N:{g:"f",tab:["n17"]}},ballon:{N:{g:"m",tab:["n3"]}},bambin:{N:{g:"m",tab:["n28"]}},banane:{N:{g:"f",tab:["n17"]}},banc:{N:{g:"m",tab:["n3"]}},bande:{N:{g:"f",tab:["n17"]}},bandit:{N:{g:"m",tab:["n3"]}},banque:{N:{g:"f",tab:["n17"]}},banquier:{N:{g:"m",tab:["n3"]}},"baptême":{N:{g:"m",tab:["n3"]}},baptiser:{V:{aux:["av"],tab:"v36"}},barbe:{N:{g:"f",tab:["n17"]}},barque:{N:{g:"f",tab:["n17"]}},barquette:{N:{g:"f",tab:["n17"]}},barrage:{N:{g:"m",tab:["n3"]}},barre:{N:{g:"f",tab:["n17"]}},barreau:{N:{g:"m",tab:["n4"]}},"barrière":{N:{g:"f",tab:["n17"]}},bas:{A:{tab:["n50"]}},basse:{N:{g:"f",tab:["n17"]}},"basse-cour":{N:{g:"f",tab:["nI"]}},bassin:{N:{g:"m",tab:["n3"]}},bataille:{N:{g:"f",tab:["n17"]}},bateau:{N:{g:"m",tab:["n4"]}},"bâtiment":{N:{g:"m",tab:["n3"]}},"bâtir":{V:{aux:["av"],tab:"v58"}},"bâton":{N:{g:"m",tab:["n3"]}},battre:{V:{aux:["av"],tab:"v87"}},bavarder:{V:{aux:["av"],tab:"v36"}},bazar:{N:{g:"m",tab:["n3"]}},beau:{A:{pos:"pre",tab:["n108"]}},beaucoup:{Adv:{tab:["av"]}},"beauté":{N:{g:"f",tab:["n17"]}},"bébé":{N:{g:"m",tab:["n3"]}},bec:{N:{g:"m",tab:["n3"]}},"bêche":{N:{g:"f",tab:["n17"]}},belge:{A:{tab:["n25"]}},"bénédiction":{N:{g:"f",tab:["n17"]}},"bénir":{V:{aux:["av"],tab:"v58"}},berceau:{N:{g:"m",tab:["n4"]}},bercer:{V:{aux:["av"],tab:"v0"}},"béret":{N:{g:"m",tab:["n3"]}},berger:{N:{g:"m",tab:["n39"]}},"bergère":{N:{g:"f",tab:["n17"]}},besogne:{N:{g:"f",tab:["n17"]}},besoin:{N:{g:"m",tab:["n3"]}},"bétail":{N:{g:"m",tab:["n3"]}},"bête":{N:{g:"f",tab:["n17"]}},betterave:{N:{g:"f",tab:["n17"]}},beurre:{N:{g:"m",tab:["n3"]}},bibelot:{N:{g:"m",tab:["n3"]}},"bibliothèque":{N:{g:"f",tab:["n17"]}},bicyclette:{N:{g:"f",tab:["n17"]}},bien:{Adv:{tab:["av"]}},"bien-aimé":{A:{tab:["n28"]}},"bien-être":{N:{g:"m",tab:["n35"]}},bienfaisant:{A:{tab:["n28"]}},bienfait:{N:{g:"m",tab:["n3"]}},bienfaiteur:{N:{g:"m",tab:["n56"]}},bienheureux:{A:{tab:["n54"]}},"bientôt":{Adv:{tab:["av"]}},bienveillance:{N:{g:"f",tab:["n17"]}},bienveillant:{A:{tab:["n28"]}},"bière":{N:{g:"f",tab:["n17"]}},bijou:{N:{g:"m",tab:["n4"]}},bille:{N:{g:"f",tab:["n17"]}},billet:{N:{g:"m",tab:["n3"]}},bise:{N:{g:"m",tab:["n17"]}},bizarre:{A:{tab:["n25"]}},blanc:{A:{tab:["n61"]}},blancheur:{N:{g:"f",tab:["n17"]}},blanchir:{V:{aux:["av"],tab:"v58"}},"blé":{N:{g:"m",tab:["n3"]}},blesser:{V:{aux:["av"],tab:"v36"}},blessure:{N:{g:"f",tab:["n17"]}},bleu:{A:{tab:["n28"]}},bleuet:{N:{g:"m",tab:["n3"]}},bloc:{N:{g:"m",tab:["n3"]}},blond:{A:{tab:["n28"]}},blottir:{V:{aux:["êt"],tab:"v58"}},blouse:{N:{g:"f",tab:["n17"]}},bluet:{N:{g:"m",tab:["n3"]}},boeuf:{N:{g:"m",tab:["n3"]}},boire:{V:{aux:["av"],tab:"v121"}},bois:{N:{g:"m",tab:["n2"]}},boisson:{N:{g:"f",tab:["n17"]}},"boîte":{N:{g:"f",tab:["n17"]}},boiteux:{A:{tab:["n54"]}},bon:{A:{pos:"pre",tab:["n49"]}},bonbon:{N:{g:"m",tab:["n3"]}},bond:{N:{g:"m",tab:["n3"]}},bondir:{V:{aux:["av"],tab:"v58"}},bonheur:{N:{g:"m",tab:["n3"]}},bonhomme:{N:{g:"m",tab:["n11"]}},bonjour:{N:{g:"m",tab:["n3"]}},bonne:{N:{g:"f",tab:["n17"]}},bonnet:{N:{g:"m",tab:["n3"]}},bonsoir:{N:{g:"m",tab:["n3"]}},"bonté":{N:{g:"f",tab:["n17"]}},bord:{N:{g:"m",tab:["n3"]}},border:{V:{aux:["av"],tab:"v36"}},bordure:{N:{g:"f",tab:["n17"]}},borne:{N:{g:"f",tab:["n17"]}},bosquet:{N:{g:"m",tab:["n3"]}},bossu:{A:{tab:["n28"]}},botte:{N:{g:"f",tab:["n17"]}},bouche:{N:{g:"f",tab:["n17"]}},boucher:{V:{aux:["av"],tab:"v36"}},boucle:{N:{g:"f",tab:["n17"]}},boucler:{V:{aux:["av"],tab:"v36"}},bouder:{V:{aux:["av"],tab:"v36"}},boue:{N:{g:"f",tab:["n17"]}},boueux:{A:{tab:["n54"]}},bouger:{V:{aux:["av"],tab:"v3"}},bougie:{N:{g:"f",tab:["n17"]}},boulanger:{N:{g:"m",tab:["n39"]}},boulangerie:{N:{g:"f",tab:["n17"]}},boule:{N:{g:"f",tab:["n17"]}},bouleau:{N:{g:"m",tab:["n4"]}},boulevard:{N:{g:"m",tab:["n3"]}},bouleverser:{V:{aux:["av"],tab:"v36"}},bouquet:{N:{g:"m",tab:["n3"]}},bourdonnement:{N:{g:"m",tab:["n3"]}},bourdonner:{V:{aux:["av"],tab:"v36"}},bourgeois:{N:{g:"m",tab:["n27"]}},bourgeon:{N:{g:"m",tab:["n3"]}},bourgeonner:{V:{aux:["av"],tab:"v36"}},bourgmestre:{N:{g:"m",tab:["n3"]}},bourrasque:{N:{g:"f",tab:["n17"]}},bourse:{N:{g:"f",tab:["n17"]}},bousculer:{V:{aux:["av"],tab:"v36"}},bout:{N:{g:"m",tab:["n3"]}},bouteille:{N:{g:"f",tab:["n17"]}},boutique:{N:{g:"f",tab:["n17"]}},bouton:{N:{g:"m",tab:["n3"]}},branche:{N:{g:"f",tab:["n17"]}},bras:{N:{g:"m",tab:["n2"]}},brave:{A:{tab:["n25"]}},bravo:{N:{g:"m",tab:["n3"]}},brebis:{N:{g:"f",tab:["n16"]}},"brèche":{N:{g:"f",tab:["n17"]}},bref:{A:{tab:["n38"]}},brigand:{N:{g:"m",tab:["n3"]}},brillant:{A:{tab:["n28"]}},briller:{V:{aux:["av"],tab:"v36"}},brin:{N:{g:"m",tab:["n3"]}},brindille:{N:{g:"f",tab:["n17"]}},brique:{N:{g:"f",tab:["n17"]}},brise:{N:{g:"f",tab:["n17"]}},briser:{V:{aux:["av"],tab:"v36"}},brochure:{N:{g:"f",tab:["n17"]}},broder:{V:{aux:["av"],tab:"v36"}},brouillard:{N:{g:"m",tab:["n3"]}},brouter:{V:{aux:["av"],tab:"v36"}},broyer:{V:{aux:["av"],tab:"v5"}},bruit:{N:{g:"m",tab:["n3"]}},"brûlant":{A:{tab:["n28"]}},"brûler":{V:{aux:["av"],tab:"v36"}},brume:{N:{g:"f",tab:["n17"]}},brumeux:{A:{tab:["n54"]}},brun:{A:{tab:["n28"]}},brusque:{A:{tab:["n25"]}},brusquement:{Adv:{tab:["av"]}},brut:{A:{tab:["n28"]}},brutal:{A:{tab:["n47"]}},bruyamment:{Adv:{tab:["av"]}},bruyant:{A:{tab:["n28"]}},"bûcheron":{N:{g:"m",tab:["n49"]}},buis:{N:{g:"m",tab:["n2"]}},buisson:{N:{g:"m",tab:["n3"]}},bulletin:{N:{g:"m",tab:["n3"]}},bureau:{N:{g:"m",tab:["n4"]}},but:{N:{g:"m",tab:["n3"]}},butiner:{V:{aux:["av"],tab:"v36"}},"ça":{Pro:{g:"n",tab:["pn18"]}},cabane:{N:{g:"f",tab:["n17"]}},cabine:{N:{g:"f",tab:["n17"]}},"cache-cache":{N:{g:"m",tab:["n2"]}},cacher:{V:{aux:["av"],tab:"v36"}},cadavre:{N:{g:"m",tab:["n3"]}},cadeau:{N:{g:"m",tab:["n4"]}},cadet:{A:{tab:["n51"]}},cadran:{N:{g:"m",tab:["n3"]}},cadre:{N:{g:"m",tab:["n3"]}},"café":{N:{g:"m",tab:["n3"]}},cage:{N:{g:"f",tab:["n17"]}},cahier:{N:{g:"m",tab:["n3"]}},caillou:{N:{g:"m",tab:["n4"]}},caisse:{N:{g:"f",tab:["n17"]}},calcul:{N:{g:"m",tab:["n3"]}},calculer:{V:{aux:["av"],tab:"v36"}},calendrier:{N:{g:"m",tab:["n3"]}},calice:{N:{g:"m",tab:["n3"]}},calme:{A:{tab:["n25"]}},calmer:{V:{aux:["av"],tab:"v36"}},calvaire:{N:{g:"m",tab:["n3"]}},camarade:{N:{g:"x",tab:["n25"]}},camion:{N:{g:"m",tab:["n3"]}},camp:{N:{g:"m",tab:["n3"]}},campagnard:{N:{g:"m",tab:["n28"]}},campagne:{N:{g:"f",tab:["n17"]}},canal:{N:{g:"m",tab:["n5"]}},canard:{N:{g:"m",tab:["n3"]}},canif:{N:{g:"m",tab:["n3"]}},canne:{N:{g:"f",tab:["n17"]}},canon:{N:{g:"m",tab:["n3"]}},canot:{N:{g:"m",tab:["n3"]}},cantique:{N:{g:"m",tab:["n3"]}},capable:{A:{tab:["n25"]}},capitaine:{N:{g:"m",tab:["n3"]}},capital:{N:{g:"m",tab:["n5"]}},capitale:{N:{g:"f",tab:["n17"]}},caprice:{N:{g:"m",tab:["n3"]}},carabine:{N:{g:"f",tab:["n17"]}},"caractère":{N:{g:"m",tab:["n3"]}},caresse:{N:{g:"f",tab:["n17"]}},caresser:{V:{aux:["av"],tab:"v36"}},carnet:{N:{g:"m",tab:["n3"]}},carotte:{N:{g:"f",tab:["n17"]}},"carré":{A:{tab:["n28"]}},carreau:{N:{g:"m",tab:["n4"]}},carrefour:{N:{g:"m",tab:["n3"]}},"carrière":{N:{g:"f",tab:["n17"]}},carrousel:{N:{g:"m",tab:["n3"]}},cartable:{N:{g:"m",tab:["n3"]}},carte:{N:{g:"f",tab:["n17"]}},carton:{N:{g:"m",tab:["n3"]}},cas:{N:{g:"m",tab:["n2"]}},casquette:{N:{g:"f",tab:["n17"]}},casser:{V:{aux:["av"],tab:"v36"}},catastrophe:{N:{g:"f",tab:["n17"]}},"catéchisme":{N:{g:"m",tab:["n3"]}},"cathédrale":{N:{g:"f",tab:["n17"]}},catholique:{A:{tab:["n25"]}},cause:{N:{g:"f",tab:["n17"]}},causer:{V:{aux:["av"],tab:"v36"}},cave:{N:{g:"f",tab:["n17"]}},caverne:{N:{g:"f",tab:["n17"]}},ce:{D:{tab:["d7"]},Pro:{g:"n",tab:["pn14"]}},ceci:{Pro:{g:"n",tab:["pn16"]}},"céder":{V:{aux:["av"],tab:"v30"}},ceinture:{N:{g:"f",tab:["n17"]}},cela:{Pro:{g:"n",tab:["pn19"]}},"célèbre":{A:{tab:["n25"]}},"célébrer":{V:{aux:["av"],tab:"v20"}},"céleste":{A:{tab:["n25"]}},celui:{Pro:{g:"m",tab:["pn15"]}},"celui-ci":{Pro:{g:"m",tab:["pn17"]}},"celui-là":{Pro:{g:"m",tab:["pn20"]}},cendre:{N:{g:"f",tab:["n17"]}},centaine:{N:{g:"f",tab:["n17"]}},centime:{N:{g:"m",tab:["n3"]}},"centimètre":{N:{g:"m",tab:["n3"]}},central:{A:{tab:["n47"]}},centre:{N:{g:"m",tab:["n3"]}},cercle:{N:{g:"m",tab:["n3"]}},"cérémonie":{N:{g:"f",tab:["n17"]}},cerf:{N:{g:"m",tab:["n3"]}},cerise:{N:{g:"f",tab:["n17"]}},cerisier:{N:{g:"m",tab:["n3"]}},certain:{A:{tab:["n28"]}},certainement:{Adv:{tab:["av"]}},certes:{Adv:{tab:["av"]}},cesse:{N:{g:"f",tab:["n17"]}},cesser:{V:{aux:["av"],tab:"v36"}},chagrin:{N:{g:"m",tab:["n3"]}},"chaîne":{N:{g:"f",tab:["n17"]}},chair:{N:{g:"f",tab:["n17"]}},chaise:{N:{g:"f",tab:["n17"]}},chaland:{N:{g:"m",tab:["n3"]}},chaleur:{N:{g:"f",tab:["n17"]}},chambre:{N:{g:"f",tab:["n17"]}},chameau:{N:{g:"m",tab:["n4"]}},champ:{N:{g:"m",tab:["n3"]}},chance:{N:{g:"f",tab:["n17"]}},changement:{N:{g:"m",tab:["n3"]}},changer:{V:{aux:["aê"],tab:"v3"}},chanson:{N:{g:"f",tab:["n17"]}},chant:{N:{g:"m",tab:["n3"]}},chanter:{V:{aux:["av"],tab:"v36"}},chanteur:{N:{g:"m",tab:["n55"]}},chantre:{N:{g:"m",tab:["n3"]}},chapeau:{N:{g:"m",tab:["n4"]}},chapelet:{N:{g:"m",tab:["n3"]}},chapelle:{N:{g:"f",tab:["n17"]}},chapitre:{N:{g:"m",tab:["n3"]}},charbon:{N:{g:"m",tab:["n3"]}},charbonnage:{N:{g:"m",tab:["n3"]}},charge:{N:{g:"f",tab:["n17"]}},charger:{V:{aux:["av"],tab:"v3"}},chariot:{N:{g:"m",tab:["n3"]}},charitable:{A:{tab:["n25"]}},"charité":{N:{g:"f",tab:["n17"]}},charlatan:{N:{g:"m",tab:["n3"]}},charmant:{A:{tab:["n28"]}},charme:{N:{g:"m",tab:["n3"]}},charmer:{V:{aux:["av"],tab:"v36"}},charrette:{N:{g:"f",tab:["n17"]}},charrue:{N:{g:"f",tab:["n17"]}},chasse:{N:{g:"f",tab:["n17"]}},chasser:{V:{aux:["av"],tab:"v36"}},chasseur:{N:{g:"m",tab:["n55"]}},chat:{N:{g:"m",tab:["n51"]}},"château":{N:{g:"m",tab:["n4"]}},chaud:{A:{tab:["n28"]}},chaudement:{Adv:{tab:["av"]}},chauffage:{N:{g:"m",tab:["n3"]}},chauffer:{V:{aux:["av"],tab:"v36"}},chauffeur:{N:{g:"m",tab:["n3"]}},chauffeuse:{N:{g:"f",tab:["n17"]}},chaume:{N:{g:"m",tab:["n3"]}},"chaumière":{N:{g:"f",tab:["n17"]}},"chaussée":{N:{g:"f",tab:["n17"]}},chausser:{V:{aux:["av"],tab:"v36"}},chaussure:{N:{g:"f",tab:["n17"]}},chaux:{N:{g:"f",tab:["n16"]}},chef:{N:{g:"m",tab:["n3"]}},"chef-d'oeuvre":{N:{g:"m",tab:["nI"]}},chemin:{N:{g:"m",tab:["n3"]}},"cheminée":{N:{g:"f",tab:["n17"]}},chemise:{N:{g:"f",tab:["n17"]}},"chêne":{N:{g:"m",tab:["n3"]}},cher:{A:{tab:["n39"]}},chercher:{V:{aux:["av"],tab:"v36"}},"chéri":{A:{tab:["n28"]}},"chérir":{V:{aux:["av"],tab:"v58"}},cheval:{N:{g:"m",tab:["n5"]}},chevalier:{N:{g:"m",tab:["n3"]}},"chevalière":{N:{g:"f",tab:["n17"]}},chevelure:{N:{g:"f",tab:["n17"]}},chevet:{N:{g:"m",tab:["n3"]}},cheveu:{N:{g:"m",tab:["n4"]}},"chèvre":{N:{g:"f",tab:["n17"]}},chez:{P:{tab:["pp"]}},chien:{N:{g:"m",tab:["n49"]}},chiffon:{N:{g:"m",tab:["n3"]}},chiffre:{N:{g:"m",tab:["n3"]}},choc:{N:{g:"m",tab:["n3"]}},chocolat:{N:{g:"m",tab:["n3"]}},choeur:{N:{g:"m",tab:["n3"]}},choisir:{V:{aux:["av"],tab:"v58"}},choix:{N:{g:"m",tab:["n2"]}},chose:{N:{g:"f",tab:["n17"]}},chou:{N:{g:"m",tab:["n4"]}},"chrétien":{A:{tab:["n49"]}},"chrysanthème":{N:{g:"m",tab:["n3"]}},chute:{N:{g:"f",tab:["n17"]}},"ci-joint":{A:{tab:["n28"]}},ciel:{N:{g:"m",tab:["n9"]}},cigarette:{N:{g:"f",tab:["n17"]}},cime:{N:{g:"f",tab:["n17"]}},"cimetière":{N:{g:"m",tab:["n3"]}},"cinéma":{N:{g:"m",tab:["n3"]}},circonstance:{N:{g:"f",tab:["n17"]}},circulation:{N:{g:"f",tab:["n17"]}},circuler:{V:{aux:["av"],tab:"v36"}},cirer:{V:{aux:["av"],tab:"v36"}},cirque:{N:{g:"m",tab:["n3"]}},"cité":{N:{g:"f",tab:["n17"]}},citer:{V:{aux:["av"],tab:"v36"}},citoyen:{N:{g:"m",tab:["n49"]}},civil:{A:{tab:["n28"]}},clair:{A:{tab:["n28"]}},"clairière":{N:{g:"f",tab:["n17"]}},clairon:{N:{g:"m",tab:["n3"]}},claquer:{V:{aux:["av"],tab:"v36"}},"clarté":{N:{g:"f",tab:["n17"]}},classe:{N:{g:"f",tab:["n17"]}},classique:{A:{tab:["n25"]}},"clé":{N:{g:"f",tab:["n17"]}},clef:{N:{g:"f",tab:["n17"]}},"clément":{A:{tab:["n28"]}},client:{N:{g:"m",tab:["n28"]}},climat:{N:{g:"m",tab:["n3"]}},"clin d'oeil":{N:{g:"m",tab:["nI"]}},clinique:{N:{g:"f",tab:["n17"]}},cloche:{N:{g:"f",tab:["n17"]}},clocher:{N:{g:"m",tab:["n3"]}},clochette:{N:{g:"f",tab:["n17"]}},clos:{A:{tab:["n27"]}},clou:{N:{g:"m",tab:["n3"]}},clouer:{V:{aux:["av"],tab:"v36"}},clown:{N:{g:"m",tab:["n3"]}},cochon:{N:{g:"m",tab:["n3"]}},coeur:{N:{g:"m",tab:["n3"]}},coffre:{N:{g:"m",tab:["n3"]}},coffret:{N:{g:"m",tab:["n3"]}},coiffer:{V:{aux:["av"],tab:"v36"}},coiffure:{N:{g:"f",tab:["n17"]}},coin:{N:{g:"m",tab:["n3"]}},"colère":{N:{g:"f",tab:["n17"]}},colis:{N:{g:"m",tab:["n2"]}},collection:{N:{g:"f",tab:["n17"]}},"collège":{N:{g:"m",tab:["n3"]}},coller:{V:{aux:["av"],tab:"v36"}},colline:{N:{g:"f",tab:["n17"]}},colonel:{N:{g:"m",tab:["n48"]}},colonial:{A:{tab:["n47"]}},colonne:{N:{g:"f",tab:["n17"]}},colorer:{V:{aux:["av"],tab:"v36"}},combat:{N:{g:"m",tab:["n3"]}},combattant:{N:{g:"m",tab:["n28"]}},combattre:{V:{aux:["av"],tab:"v87"}},comble:{N:{g:"m",tab:["n3"]}},combler:{V:{aux:["av"],tab:"v36"}},commandant:{N:{g:"m",tab:["n28"]}},commande:{N:{g:"f",tab:["n17"]}},commandement:{N:{g:"m",tab:["n3"]}},commander:{V:{aux:["av"],tab:"v36"}},commencement:{N:{g:"m",tab:["n3"]}},commencer:{V:{aux:["av"],tab:"v0"}},"commerçant":{N:{g:"m",tab:["n28"]}},commerce:{N:{g:"m",tab:["n3"]}},commercial:{A:{tab:["n47"]}},commettre:{V:{aux:["av"],tab:"v89"}},commission:{N:{g:"f",tab:["n17"]}},commode:{N:{g:"f",tab:["n17"]}},commun:{A:{tab:["n28"]}},communal:{A:{tab:["n47"]}},commune:{N:{g:"f",tab:["n17"]}},communiant:{N:{g:"m",tab:["n28"]}},communication:{N:{g:"f",tab:["n17"]}},communier:{V:{aux:["av"],tab:"v36"}},communion:{N:{g:"f",tab:["n17"]}},communiquer:{V:{aux:["av"],tab:"v36"}},compagne:{N:{g:"f",tab:["n17"]}},compagnie:{N:{g:"f",tab:["n17"]}},compagnon:{N:{g:"m",tab:["n3"]}},comparaison:{N:{g:"f",tab:["n17"]}},comparer:{V:{aux:["av"],tab:"v36"}},compassion:{N:{g:"f",tab:["n17"]}},complet:{A:{tab:["n40"]}},"complètement":{Adv:{tab:["av"]}},"compléter":{V:{aux:["av"],tab:"v22"}},compliment:{N:{g:"m",tab:["n3"]}},compliquer:{V:{aux:["av"],tab:"v36"}},composer:{V:{aux:["av"],tab:"v36"}},composition:{N:{g:"f",tab:["n17"]}},comprendre:{V:{aux:["av"],tab:"v90"}},compte:{N:{g:"m",tab:["n3"]}},compter:{V:{aux:["av"],tab:"v36"}},comte:{N:{g:"m",tab:["n3"]}},comtesse:{N:{g:"f",tab:["n17"]}},concerner:{V:{aux:["av"],tab:"v36"}},concert:{N:{g:"m",tab:["n3"]}},concession:{N:{g:"f",tab:["n17"]}},conclure:{V:{aux:["av"],tab:"v109"}},concours:{N:{g:"m",tab:["n2"]}},condamner:{V:{aux:["av"],tab:"v36"}},condisciple:{N:{g:"x",tab:["n25"]}},condition:{N:{g:"f",tab:["n17"]}},"condoléances":{N:{g:"f",tab:["n15"]}},conduire:{V:{aux:["av"],tab:"v113"}},conduite:{N:{g:"f",tab:["n17"]}},confectionner:{V:{aux:["av"],tab:"v36"}},"conférence":{N:{g:"f",tab:["n17"]}},confesser:{V:{aux:["av"],tab:"v36"}},confiance:{N:{g:"f",tab:["n17"]}},confier:{V:{aux:["av"],tab:"v36"}},confiture:{N:{g:"f",tab:["n17"]}},confondre:{V:{aux:["av"],tab:"v85"}},"conformément":{Adv:{tab:["av"]}},"confrère":{N:{g:"m",tab:["n3"]}},confus:{A:{tab:["n27"]}},"congé":{N:{g:"m",tab:["n3"]}},"congrès":{N:{g:"m",tab:["n2"]}},connaissance:{N:{g:"f",tab:["n17"]}},"connaître":{V:{aux:["av"],tab:"v101"}},"conquérir":{V:{aux:["av"],tab:"v39"}},consacrer:{V:{aux:["av"],tab:"v36"}},conscience:{N:{g:"f",tab:["n17"]}},conseil:{N:{g:"m",tab:["n3"]}},conseiller:{V:{aux:["av"],tab:"v36"}},consentement:{N:{g:"m",tab:["n3"]}},consentir:{V:{aux:["av"],tab:"v46"}},"conséquence":{N:{g:"f",tab:["n17"]}},conserver:{V:{aux:["av"],tab:"v36"}},"considérable":{A:{tab:["n25"]}},"considérer":{V:{aux:["av"],tab:"v28"}},consister:{V:{aux:["av"],tab:"v36"}},consolation:{N:{g:"f",tab:["n17"]}},consoler:{V:{aux:["av"],tab:"v36"}},constamment:{Adv:{tab:["av"]}},constant:{A:{tab:["n28"]}},constater:{V:{aux:["av"],tab:"v36"}},constituer:{V:{aux:["av"],tab:"v36"}},construction:{N:{g:"f",tab:["n17"]}},construire:{V:{aux:["av"],tab:"v113"}},consulter:{V:{aux:["av"],tab:"v36"}},contact:{N:{g:"m",tab:["n3"]}},conte:{N:{g:"m",tab:["n3"]}},contempler:{V:{aux:["av"],tab:"v36"}},contenir:{V:{aux:["av"],tab:"v52"}},content:{A:{tab:["n28"]}},contenter:{V:{aux:["av"],tab:"v36"}},contenu:{N:{g:"m",tab:["n3"]}},conter:{V:{aux:["av"],tab:"v36"}},continuel:{A:{tab:["n48"]}},continuellement:{Adv:{tab:["av"]}},continuer:{V:{aux:["av"],tab:"v36"}},contraire:{A:{tab:["n25"]}},contrarier:{V:{aux:["av"],tab:"v36"}},contre:{P:{tab:["pp"]}},"contrée":{N:{g:"f",tab:["n17"]}},contribuer:{V:{aux:["av"],tab:"v36"}},convaincre:{V:{aux:["av"],tab:"v86"}},convenable:{A:{tab:["n25"]}},convenir:{V:{aux:["aê"],tab:"v52"}},conversation:{N:{g:"f",tab:["n17"]}},convertir:{V:{aux:["av"],tab:"v58"}},conviction:{N:{g:"f",tab:["n17"]}},copain:{N:{g:"m",tab:["n104"]}},copier:{V:{aux:["av"],tab:"v36"}},coq:{N:{g:"m",tab:["n3"]}},coquelicot:{N:{g:"m",tab:["n3"]}},coquet:{A:{tab:["n51"]}},coquille:{N:{g:"f",tab:["n17"]}},corbeau:{N:{g:"m",tab:["n4"]}},corbeille:{N:{g:"f",tab:["n17"]}},corde:{N:{g:"f",tab:["n17"]}},cordial:{N:{g:"m",tab:["n5"]}},cordialement:{Adv:{tab:["av"]}},cordonnier:{N:{g:"m",tab:["n39"]}},corne:{N:{g:"f",tab:["n17"]}},corniche:{N:{g:"f",tab:["n17"]}},corolle:{N:{g:"f",tab:["n17"]}},corps:{N:{g:"m",tab:["n2"]}},correction:{N:{g:"f",tab:["n17"]}},correspondance:{N:{g:"f",tab:["n17"]}},corridor:{N:{g:"m",tab:["n3"]}},corriger:{V:{aux:["av"],tab:"v3"}},"cortège":{N:{g:"m",tab:["n3"]}},costume:{N:{g:"m",tab:["n3"]}},"côté":{N:{g:"m",tab:["n3"]}},"côte":{N:{g:"f",tab:["n17"]}},coton:{N:{g:"m",tab:["n3"]}},cou:{N:{g:"m",tab:["n3"]}},couche:{N:{g:"f",tab:["n17"]}},coucher:{V:{aux:["av"],tab:"v36"}},coucou:{N:{g:"m",tab:["n3"]}},coude:{N:{g:"m",tab:["n3"]}},coudre:{V:{aux:["av"],tab:"v93"}},couler:{V:{aux:["av"],tab:"v36"}},couleur:{N:{g:"f",tab:["n17"]}},couloir:{N:{g:"m",tab:["n3"]}},coup:{N:{g:"m",tab:["n3"]}},coupable:{A:{tab:["n25"]}},coupe:{N:{g:"f",tab:["n17"]}},couper:{V:{aux:["av"],tab:"v36"}},cour:{N:{g:"f",tab:["n17"]}},courage:{N:{g:"m",tab:["n3"]}},courageusement:{Adv:{tab:["av"]}},courageux:{A:{tab:["n54"]}},courant:{A:{tab:["n28"]}},courber:{V:{aux:["av"],tab:"v36"}},coureur:{N:{g:"m",tab:["n55"]}},courir:{V:{aux:["av"],tab:"v57"}},couronne:{N:{g:"f",tab:["n17"]}},couronner:{V:{aux:["av"],tab:"v36"}},courrier:{N:{g:"m",tab:["n3"]}},cours:{N:{g:"m",tab:["n2"]}},course:{N:{g:"f",tab:["n17"]}},court:{A:{tab:["n28"]}},cousin:{N:{g:"m",tab:["n28"]}},coussin:{N:{g:"m",tab:["n3"]}},couteau:{N:{g:"m",tab:["n4"]}},"coûter":{V:{aux:["av"],tab:"v36"}},coutume:{N:{g:"f",tab:["n17"]}},couture:{N:{g:"f",tab:["n17"]}},couvent:{N:{g:"f",tab:["n17"]}},couver:{V:{aux:["av"],tab:"v36"}},couvercle:{N:{g:"m",tab:["n3"]}},couvert:{N:{g:"m",tab:["n3"]}},couverture:{N:{g:"f",tab:["n17"]}},couvrir:{V:{aux:["av"],tab:"v44"}},craindre:{V:{aux:["av"],tab:"v97"}},crainte:{N:{g:"f",tab:["n17"]}},craquement:{N:{g:"m",tab:["n3"]}},craquer:{V:{aux:["av"],tab:"v36"}},crayon:{N:{g:"m",tab:["n3"]}},"créateur":{N:{g:"m",tab:["n56"]}},"créature":{N:{g:"f",tab:["n17"]}},"crèche":{N:{g:"f",tab:["n17"]}},"créer":{V:{aux:["av"],tab:"v36"}},"crème":{N:{g:"f",tab:["n17"]}},"crêpe":{N:{g:"f",tab:["n17"]}},"crépuscule":{N:{g:"m",tab:["n3"]}},creuser:{V:{aux:["av"],tab:"v36"}},creux:{A:{tab:["n54"]}},crever:{V:{aux:["aê"],tab:"v25"}},cri:{N:{g:"m",tab:["n3"]}},crier:{V:{aux:["av"],tab:"v36"}},crime:{N:{g:"m",tab:["n3"]}},crise:{N:{g:"f",tab:["n17"]}},cristal:{N:{g:"m",tab:["n5"]}},croire:{V:{aux:["av"],tab:"v115"}},croiser:{V:{aux:["av"],tab:"v36"}},"croître":{V:{aux:["av"],tab:"v106"}},croix:{N:{g:"f",tab:["n16"]}},croquer:{V:{aux:["av"],tab:"v36"}},"croûte":{N:{g:"f",tab:["n17"]}},crucifix:{N:{g:"m",tab:["n2"]}},cruel:{A:{tab:["n48"]}},cueillette:{N:{g:"f",tab:["n17"]}},cueillir:{V:{aux:["av"],tab:"v51"}},cuiller:{N:{g:"f",tab:["n17"]}},"cuillère":{N:{g:"f",tab:["n17"]}},cuir:{N:{g:"m",tab:["n3"]}},cuire:{V:{aux:["av"],tab:"v113"}},cuisine:{N:{g:"f",tab:["n17"]}},"cuisinière":{N:{g:"f",tab:["n17"]}},cuivre:{N:{g:"m",tab:["n3"]}},culotte:{N:{g:"f",tab:["n17"]}},cultivateur:{N:{g:"m",tab:["n56"]}},cultiver:{V:{aux:["av"],tab:"v36"}},culture:{N:{g:"f",tab:["n17"]}},"curé":{N:{g:"m",tab:["n3"]}},curieux:{A:{tab:["n54"]}},"curiosité":{N:{g:"f",tab:["n17"]}},cycliste:{N:{g:"x",tab:["n25"]}},cygne:{N:{g:"m",tab:["n3"]}},"d'abord":{Adv:{tab:["av"]}},"d'après":{P:{tab:["pp"]}},dahlia:{N:{g:"m",tab:["n3"]}},daigner:{V:{aux:["av"],tab:"v36"}},dame:{N:{g:"f",tab:["n17"]}},danger:{N:{g:"m",tab:["n3"]}},dangereux:{A:{tab:["n54"]}},dans:{P:{tab:["pp"]}},danse:{N:{g:"f",tab:["n17"]}},danser:{V:{aux:["av"],tab:"v36"}},darder:{V:{aux:["av"],tab:"v36"}},date:{N:{g:"f",tab:["n17"]}},dater:{V:{aux:["av"],tab:"v36"}},davantage:{Adv:{tab:["av"]}},de:{P:{tab:["ppe"]}},"débarquer":{V:{aux:["av"],tab:"v36"}},"débarrasser":{V:{aux:["av"],tab:"v36"}},"débattre":{V:{aux:["av"],tab:"v87"}},"débiter":{V:{aux:["av"],tab:"v36"}},"déborder":{V:{aux:["aê"],tab:"v36"}},"déboucher":{V:{aux:["av"],tab:"v36"}},debout:{Adv:{tab:["av"]}},"débris":{N:{g:"m",tab:["n2"]}},"début":{N:{g:"m",tab:["n3"]}},"décéder":{V:{aux:["êt"],tab:"v30"}},"décembre":{N:{g:"m",tab:["n3"]}},"déception":{N:{g:"f",tab:["n17"]}},"déchaîner":{V:{aux:["av"],tab:"v36"}},"décharger":{V:{aux:["av"],tab:"v3"}},"déchirer":{V:{aux:["av"],tab:"v36"}},"décider":{V:{aux:["av"],tab:"v36"}},"décision":{N:{g:"f",tab:["n17"]}},"déclarer":{V:{aux:["av"],tab:"v36"}},"décorer":{V:{aux:["av"],tab:"v36"}},"découper":{V:{aux:["av"],tab:"v36"}},"décourager":{V:{aux:["av"],tab:"v3"}},"découverte":{N:{g:"f",tab:["n17"]}},"découvrir":{V:{aux:["av"],tab:"v44"}},"décrire":{V:{aux:["av"],tab:"v114"}},"dédaigner":{V:{aux:["av"],tab:"v36"}},dedans:{Adv:{tab:["av"]}},"défaire":{V:{aux:["av"],tab:"v124"}},"défaut":{N:{g:"m",tab:["n3"]}},"défendre":{V:{aux:["av"],tab:"v85"}},"défense":{N:{g:"f",tab:["n17"]}},"défenseur":{N:{g:"m",tab:["n3"]}},"défiler":{V:{aux:["av"],tab:"v36"}},"défunt":{N:{g:"m",tab:["n28"]}},"dégager":{V:{aux:["av"],tab:"v3"}},"dégât":{N:{g:"m",tab:["n3"]}},"degré":{N:{g:"m",tab:["n3"]}},dehors:{Adv:{tab:["av"]}},"déjà":{Adv:{tab:["av"]}},"déjeuner":{V:{aux:["av"],tab:"v36"}},"délaisser":{V:{aux:["av"],tab:"v36"}},"délicat":{A:{tab:["n28"]}},"délice":{N:{g:"m",tab:["n25"]}},"délicieux":{A:{tab:["n54"]}},"délivrer":{V:{aux:["av"],tab:"v36"}},demain:{Adv:{tab:["av"]}},demande:{N:{g:"f",tab:["n17"]}},demander:{V:{aux:["av"],tab:"v36"}},"démarche":{N:{g:"f",tab:["n17"]}},"déménager":{V:{aux:["aê"],tab:"v3"}},demeure:{N:{g:"f",tab:["n17"]}},demeurer:{V:{aux:["aê"],tab:"v36"}},demi:{N:{g:"m",tab:["n3"]}},demoiselle:{N:{g:"f",tab:["n17"]}},"démolir":{V:{aux:["av"],tab:"v58"}},"démontrer":{V:{aux:["av"],tab:"v36"}},dent:{N:{g:"f",tab:["n17"]}},dentelle:{N:{g:"f",tab:["n17"]}},"dénudé":{A:{tab:["n28"]}},"départ":{N:{g:"m",tab:["n3"]}},"dépasser":{V:{aux:["av"],tab:"v36"}},"dépêcher":{V:{aux:["av"],tab:"v36"}},"dépendre":{V:{aux:["av"],tab:"v85"}},"dépens":{N:{g:"m",tab:["n1"]}},"dépenser":{V:{aux:["av"],tab:"v36"}},"déplacer":{V:{aux:["av"],tab:"v0"}},"déplaire":{V:{aux:["av"],tab:"v123"}},"déployer":{V:{aux:["av"],tab:"v5"}},"déposer":{V:{aux:["av"],tab:"v36"}},"dépôt":{N:{g:"m",tab:["n3"]}},"dépouiller":{V:{aux:["av"],tab:"v36"}},depuis:{P:{tab:["pp"]}},"déranger":{V:{aux:["av"],tab:"v3"}},dernier:{A:{pos:"pre",tab:["n39"]}},"dernièrement":{Adv:{tab:["av"]}},"dérober":{V:{aux:["av"],tab:"v36"}},"dérouler":{V:{aux:["av"],tab:"v36"}},"derrière":{P:{tab:["pp"]}},"dès":{P:{tab:["pp"]}},"désagréable":{A:{tab:["n25"]}},"désaltérer":{V:{aux:["av"],tab:"v28"}},"désastre":{N:{g:"m",tab:["n3"]}},descendre:{V:{aux:["aê"],tab:"v85"}},descente:{N:{g:"f",tab:["n17"]}},description:{N:{g:"f",tab:["n17"]}},"désert":{A:{tab:["n28"]}},"désespérer":{V:{aux:["av"],tab:"v28"}},"désespoir":{N:{g:"m",tab:["n3"]}},"déshabiller":{V:{aux:["av"],tab:"v36"}},"désigner":{V:{aux:["av"],tab:"v36"}},"désir":{N:{g:"m",tab:["n3"]}},"désirer":{V:{aux:["av"],tab:"v36"}},"désireux":{A:{tab:["n54"]}},"désobéir":{V:{aux:["av"],tab:"v58"}},"désobéissance":{N:{g:"f",tab:["n17"]}},"désobéissant":{A:{tab:["n28"]}},"désolation":{N:{g:"f",tab:["n17"]}},"désoler":{V:{aux:["av"],tab:"v36"}},"désordre":{N:{g:"m",tab:["n3"]}},"désormais":{Adv:{tab:["av"]}},dessein:{N:{g:"m",tab:["n3"]}},dessert:{N:{g:"m",tab:["n3"]}},dessin:{N:{g:"m",tab:["n3"]}},dessiner:{V:{aux:["av"],tab:"v36"}},dessous:{P:{tab:["pp"]}},destination:{N:{g:"f",tab:["n17"]}},"destinée":{N:{g:"f",tab:["n17"]}},destiner:{V:{aux:["av"],tab:"v36"}},"détacher":{V:{aux:["av"],tab:"v36"}},"détail":{N:{g:"m",tab:["n3"]}},"déterminer":{V:{aux:["av"],tab:"v36"}},"détester":{V:{aux:["av"],tab:"v36"}},"détour":{N:{g:"m",tab:["n3"]}},"détourner":{V:{aux:["av"],tab:"v36"}},"détruire":{V:{aux:["av"],tab:"v113"}},dette:{N:{g:"f",tab:["n17"]}},deuil:{N:{g:"m",tab:["n3"]}},devant:{P:{tab:["pp"]}},"développer":{V:{aux:["av"],tab:"v36"}},devenir:{V:{aux:["êt"],tab:"v52"}},deviner:{V:{aux:["av"],tab:"v36"}},devoir:{V:{aux:["av"],tab:"v64"}},"dévorer":{V:{aux:["av"],tab:"v36"}},"dévouement":{N:{g:"m",tab:["n3"]}},"dévouer":{V:{aux:["av"],tab:"v36"}},diable:{N:{g:"m",tab:["n3"]}},diamant:{N:{g:"m",tab:["n3"]}},"dictée":{N:{g:"f",tab:["n17"]}},dicter:{V:{aux:["av"],tab:"v36"}},dictionnaire:{N:{g:"m",tab:["n3"]}},dieu:{N:{g:"m",tab:["n4"]}},"différence":{N:{g:"f",tab:["n17"]}},"différent":{A:{tab:["n28"]}},"différer":{V:{aux:["av"],tab:"v28"}},difficile:{A:{tab:["n25"]}},difficilement:{Adv:{tab:["av"]}},"difficulté":{N:{g:"f",tab:["n17"]}},digne:{A:{tab:["n25"]}},dimanche:{N:{g:"m",tab:["n3"]}},dimension:{N:{g:"f",tab:["n17"]}},diminuer:{V:{aux:["aê"],tab:"v36"}},"dîner":{V:{aux:["av"],tab:"v36"}},dire:{V:{aux:["av"],tab:"v117"}},directement:{Adv:{tab:["av"]}},directeur:{N:{g:"m",tab:["n56"]}},direction:{N:{g:"f",tab:["n17"]}},directrice:{N:{g:"f",tab:["n17"]}},diriger:{V:{aux:["av"],tab:"v3"}},discours:{N:{g:"m",tab:["n2"]}},discussion:{N:{g:"f",tab:["n17"]}},discuter:{V:{aux:["av"],tab:"v36"}},"disparaître":{V:{aux:["aê"],tab:"v101"}},disparition:{N:{g:"f",tab:["n17"]}},dispenser:{V:{aux:["av"],tab:"v36"}},disperser:{V:{aux:["av"],tab:"v36"}},disposer:{V:{aux:["av"],tab:"v36"}},disposition:{N:{g:"f",tab:["n17"]}},disputer:{V:{aux:["av"],tab:"v36"}},dissiper:{V:{aux:["av"],tab:"v36"}},distance:{N:{g:"f",tab:["n17"]}},distinction:{N:{g:"f",tab:["n17"]}},distinguer:{V:{aux:["av"],tab:"v36"}},distraction:{N:{g:"f",tab:["n17"]}},distraire:{V:{aux:["av"],tab:"v125"}},distrait:{A:{tab:["n28"]}},distribuer:{V:{aux:["av"],tab:"v36"}},distribution:{N:{g:"f",tab:["n17"]}},divin:{A:{tab:["n28"]}},diviser:{V:{aux:["av"],tab:"v36"}},division:{N:{g:"f",tab:["n17"]}},dizaine:{N:{g:"f",tab:["n17"]}},docile:{A:{tab:["n25"]}},docteur:{N:{g:"m",tab:["n3"]}},doigt:{N:{g:"m",tab:["n3"]}},domaine:{N:{g:"m",tab:["n3"]}},domestique:{A:{tab:["n25"]}},domicile:{N:{g:"m",tab:["n3"]}},dominer:{V:{aux:["av"],tab:"v36"}},dommage:{N:{g:"m",tab:["n3"]}},dompteur:{N:{g:"m",tab:["n55"]}},don:{N:{g:"m",tab:["n3"]}},donner:{V:{aux:["av"],tab:"v36"}},dont:{Pro:{tab:["pn23"]}},dorer:{V:{aux:["av"],tab:"v36"}},dormir:{V:{aux:["av"],tab:"v45"}},dortoir:{N:{g:"m",tab:["n3"]}},dos:{N:{g:"m",tab:["n2"]}},dossier:{N:{g:"m",tab:["n3"]}},double:{A:{tab:["n25"]}},doubler:{V:{aux:["av"],tab:"v36"}},doucement:{Adv:{tab:["av"]}},douceur:{N:{g:"f",tab:["n17"]}},douleur:{N:{g:"f",tab:["n17"]}},douloureux:{A:{tab:["n54"]}},doute:{N:{g:"m",tab:["n3"]}},douter:{V:{aux:["av"],tab:"v36"}},doux:{A:{tab:["n70"]}},douzaine:{N:{g:"f",tab:["n17"]}},doyen:{N:{g:"m",tab:["n49"]}},drap:{N:{g:"m",tab:["n3"]}},drapeau:{N:{g:"m",tab:["n4"]}},dresser:{V:{aux:["av"],tab:"v36"}},droit:{A:{tab:["n28"]}},"drôle":{A:{tab:["n25"]}},du:{D:{tab:["d3"]}},duc:{N:{g:"m",tab:["n3"]}},dur:{A:{tab:["n28"]}},durant:{P:{tab:["pp"]}},"durée":{N:{g:"f",tab:["n17"]}},durer:{V:{aux:["av"],tab:"v36"}},duvet:{N:{g:"m",tab:["n3"]}},eau:{N:{g:"f",tab:["n18"]}},"ébats":{N:{g:"m",tab:["n1"]}},"éblouir":{V:{aux:["av"],tab:"v58"}},"ébranler":{V:{aux:["av"],tab:"v36"}},"écarter":{V:{aux:["av"],tab:"v36"}},"échanger":{V:{aux:["av"],tab:"v3"}},"échantillon":{N:{g:"m",tab:["n3"]}},"échapper":{V:{aux:["aê"],tab:"v36"}},"écharpe":{N:{g:"f",tab:["n17"]}},"échec":{N:{g:"m",tab:["n3"]}},"échelle":{N:{g:"f",tab:["n17"]}},"écho":{N:{g:"m",tab:["n3"]}},"éclabousser":{V:{aux:["av"],tab:"v36"}},"éclair":{N:{g:"m",tab:["n3"]}},"éclaircir":{V:{aux:["av"],tab:"v58"}},"éclairer":{V:{aux:["av"],tab:"v36"}},"éclat":{N:{g:"m",tab:["n3"]}},"éclatant":{A:{tab:["n28"]}},"éclater":{V:{aux:["av"],tab:"v36"}},"éclore":{V:{aux:["aê"],tab:"v129"}},"écluse":{N:{g:"f",tab:["n17"]}},"école":{N:{g:"f",tab:["n17"]}},"écolier":{N:{g:"m",tab:["n39"]}},"économie":{N:{g:"f",tab:["n17"]}},"économiser":{V:{aux:["av"],tab:"v36"}},"écorce":{N:{g:"f",tab:["n17"]}},"écouler":{V:{aux:["av"],tab:"v36"}},"écouter":{V:{aux:["av"],tab:"v36"}},"écraser":{V:{aux:["av"],tab:"v36"}},"écrier":{V:{aux:["êt"],tab:"v36"}},"écrire":{V:{aux:["av"],tab:"v114"}},"écrit":{A:{tab:["n28"]}},"écriture":{N:{g:"f",tab:["n17"]}},"écrivain":{N:{g:"m",tab:["n3"]}},"écrouler":{V:{aux:["êt"],tab:"v36"}},"écureuil":{N:{g:"m",tab:["n3"]}},"écurie":{N:{g:"f",tab:["n17"]}},"édifier":{V:{aux:["av"],tab:"v36"}},"éducation":{N:{g:"f",tab:["n17"]}},effacer:{V:{aux:["av"],tab:"v0"}},effectuer:{V:{aux:["av"],tab:"v36"}},effet:{N:{g:"m",tab:["n3"]}},efforcer:{V:{aux:["êt"],tab:"v0"}},effort:{N:{g:"m",tab:["n3"]}},effrayer:{V:{aux:["av"],tab:"v4"}},effroyable:{A:{tab:["n25"]}},"égal":{A:{tab:["n47"]}},"également":{Adv:{tab:["av"]}},"égard":{N:{g:"m",tab:["n3"]}},"égarer":{V:{aux:["av"],tab:"v36"}},"église":{N:{g:"f",tab:["n17"]}},"élan":{N:{g:"m",tab:["n3"]}},"élancer":{V:{aux:["av"],tab:"v0"}},"élargir":{V:{aux:["av"],tab:"v58"}},"électricité":{N:{g:"f",tab:["n17"]}},"électrique":{A:{tab:["n25"]}},"élégant":{A:{tab:["n28"]}},"éléphant":{N:{g:"m",tab:["n3"]}},"élève":{N:{g:"m",tab:["n25"]}},"élever":{V:{aux:["av"],tab:"v25"}},"éloigner":{V:{aux:["av"],tab:"v36"}},emballer:{V:{aux:["av"],tab:"v36"}},embarquer:{V:{aux:["av"],tab:"v36"}},embarras:{N:{g:"m",tab:["n2"]}},embarrasser:{V:{aux:["av"],tab:"v36"}},embaumer:{V:{aux:["av"],tab:"v36"}},embellir:{V:{aux:["aê"],tab:"v58"}},embrasser:{V:{aux:["av"],tab:"v36"}},"émerveiller":{V:{aux:["av"],tab:"v36"}},emmener:{V:{aux:["av"],tab:"v24"}},"émotion":{N:{g:"f",tab:["n17"]}},"émouvoir":{V:{aux:["av"],tab:"v66"}},emparer:{V:{aux:["êt"],tab:"v36"}},"empêcher":{V:{aux:["av"],tab:"v36"}},empereur:{N:{g:"m",tab:["n3"]}},emplacement:{N:{g:"m",tab:["n3"]}},emplir:{V:{aux:["av"],tab:"v58"}},emploi:{N:{g:"m",tab:["n3"]}},"employé":{N:{g:"m",tab:["n28"]}},employer:{V:{aux:["av"],tab:"v5"}},emporter:{V:{aux:["av"],tab:"v36"}},empressement:{N:{g:"m",tab:["n3"]}},empresser:{V:{aux:["êt"],tab:"v36"}},en:{Pro:{tab:["pn10"]}},encadrer:{V:{aux:["av"],tab:"v36"}},"enchanté":{A:{tab:["n28"]}},encombrer:{V:{aux:["av"],tab:"v36"}},encore:{Adv:{tab:["av"]}},encourager:{V:{aux:["av"],tab:"v3"}},encourir:{V:{aux:["av"],tab:"v57"}},encre:{N:{g:"f",tab:["n17"]}},encrier:{N:{g:"m",tab:["n3"]}},endormir:{V:{aux:["av"],tab:"v45"}},endosser:{V:{aux:["av"],tab:"v36"}},endroit:{N:{g:"m",tab:["n3"]}},"énergie":{N:{g:"f",tab:["n17"]}},"énergique":{A:{tab:["n25"]}},enfance:{N:{g:"f",tab:["n17"]}},enfant:{N:{g:"x",tab:["n25"]}},enfermer:{V:{aux:["av"],tab:"v36"}},enfin:{Adv:{tab:["av"]}},enflammer:{V:{aux:["av"],tab:"v36"}},enfoncer:{V:{aux:["av"],tab:"v0"}},enfouir:{V:{aux:["av"],tab:"v58"}},enfuir:{V:{aux:["êt"],tab:"v54"}},engager:{V:{aux:["av"],tab:"v3"}},engloutir:{V:{aux:["av"],tab:"v58"}},enlever:{V:{aux:["av"],tab:"v25"}},ennemi:{N:{g:"m",tab:["n28"]}},ennui:{N:{g:"m",tab:["n3"]}},ennuyer:{V:{aux:["av"],tab:"v5"}},ennuyeux:{A:{tab:["n54"]}},"énorme":{A:{tab:["n25"]}},"énormément":{Adv:{tab:["av"]}},"enquête":{N:{g:"f",tab:["n17"]}},enrichir:{V:{aux:["av"],tab:"v58"}},enseignement:{N:{g:"m",tab:["n3"]}},enseigner:{V:{aux:["av"],tab:"v36"}},ensemble:{Adv:{tab:["av"]}},"ensoleillé":{A:{tab:["n28"]}},ensuite:{Adv:{tab:["av"]}},entasser:{V:{aux:["av"],tab:"v36"}},entendre:{V:{aux:["av"],tab:"v85"}},enterrement:{N:{g:"m",tab:["n3"]}},enterrer:{V:{aux:["av"],tab:"v36"}},enthousiasme:{N:{g:"m",tab:["n3"]}},entier:{A:{tab:["n39"]}},"entièrement":{Adv:{tab:["av"]}},entonner:{V:{aux:["av"],tab:"v36"}},entourer:{V:{aux:["av"],tab:"v36"}},entrain:{N:{g:"m",tab:["n3"]}},"entraîner":{V:{aux:["av"],tab:"v36"}},entre:{P:{tab:["pp"]}},"entrée":{N:{g:"f",tab:["n17"]}},entreprendre:{V:{aux:["av"],tab:"v90"}},entrer:{V:{aux:["êt"],tab:"v36"}},entretenir:{V:{aux:["av"],tab:"v52"}},entretien:{N:{g:"m",tab:["n3"]}},entrevoir:{V:{aux:["av"],tab:"v72"}},entrouvrir:{V:{aux:["av"],tab:"v44"}},envahir:{V:{aux:["av"],tab:"v58"}},enveloppe:{N:{g:"f",tab:["n17"]}},envelopper:{V:{aux:["av"],tab:"v36"}},envers:{N:{g:"m",tab:["n2"]}},envie:{N:{g:"f",tab:["n17"]}},envier:{V:{aux:["av"],tab:"v36"}},environ:{Adv:{tab:["av"]}},environner:{V:{aux:["av"],tab:"v36"}},envoi:{N:{g:"m",tab:["n3"]}},envoler:{V:{aux:["êt"],tab:"v36"}},envoyer:{V:{aux:["av"],tab:"v134"}},"épais":{A:{tab:["n50"]}},"épanouir":{V:{aux:["av"],tab:"v58"}},"épargne":{N:{g:"f",tab:["n17"]}},"épargner":{V:{aux:["av"],tab:"v36"}},"épaule":{N:{g:"f",tab:["n17"]}},"épauler":{V:{aux:["av"],tab:"v36"}},"épée":{N:{g:"f",tab:["n17"]}},"épi":{N:{g:"m",tab:["n3"]}},"épine":{N:{g:"f",tab:["n17"]}},"époque":{N:{g:"f",tab:["n17"]}},"épouser":{V:{aux:["av"],tab:"v36"}},"épouvantable":{A:{tab:["n25"]}},"épouvanter":{V:{aux:["av"],tab:"v36"}},"époux":{N:{g:"m",tab:["n54"]}},"épreuve":{N:{g:"f",tab:["n17"]}},"éprouver":{V:{aux:["av"],tab:"v36"}},"épuiser":{V:{aux:["av"],tab:"v36"}},"équilibre":{N:{g:"m",tab:["n3"]}},"équipage":{N:{g:"m",tab:["n3"]}},"équipe":{N:{g:"f",tab:["n17"]}},"ériger":{V:{aux:["av"],tab:"v3"}},errer:{V:{aux:["av"],tab:"v36"}},erreur:{N:{g:"f",tab:["n17"]}},escalader:{V:{aux:["av"],tab:"v36"}},escalier:{N:{g:"m",tab:["n3"]}},esclave:{N:{g:"x",tab:["n25"]}},espace:{N:{g:"m",tab:["n3"]}},"espèce":{N:{g:"f",tab:["n17"]}},"espérance":{N:{g:"f",tab:["n17"]}},"espérer":{V:{aux:["av"],tab:"v28"}},"espiègle":{A:{tab:["n25"]}},espoir:{N:{g:"m",tab:["n3"]}},esprit:{N:{g:"m",tab:["n3"]}},essai:{N:{g:"m",tab:["n3"]}},essayer:{V:{aux:["av"],tab:"v4"}},essuyer:{V:{aux:["av"],tab:"v5"}},estime:{N:{g:"f",tab:["n17"]}},estimer:{V:{aux:["av"],tab:"v36"}},estomac:{N:{g:"m",tab:["n3"]}},estrade:{N:{g:"f",tab:["n17"]}},"étable":{N:{g:"f",tab:["n17"]}},"établir":{V:{aux:["av"],tab:"v58"}},"établissement":{N:{g:"m",tab:["n3"]}},"étage":{N:{g:"m",tab:["n3"]}},"étagère":{N:{g:"f",tab:["n17"]}},"étalage":{N:{g:"m",tab:["n3"]}},"étaler":{V:{aux:["av"],tab:"v36"}},"étang":{N:{g:"m",tab:["n3"]}},"état":{N:{g:"m",tab:["n3"]}},"été":{N:{g:"m",tab:["n3"]}},"éteindre":{V:{aux:["av"],tab:"v97"}},"étendre":{V:{aux:["av"],tab:"v85"}},"étendue":{N:{g:"f",tab:["n17"]}},"éternel":{A:{tab:["n48"]}},"éternité":{N:{g:"f",tab:["n17"]}},"étincelant":{A:{tab:["n28"]}},"étinceler":{V:{aux:["av"],tab:"v7"}},"étincelle":{N:{g:"f",tab:["n17"]}},"étirer":{V:{aux:["av"],tab:"v36"}},"étoffe":{N:{g:"f",tab:["n17"]}},"étoile":{N:{g:"f",tab:["n17"]}},"étonnement":{N:{g:"m",tab:["n3"]}},"étonner":{V:{aux:["av"],tab:"v36"}},"étouffer":{V:{aux:["av"],tab:"v36"}},"étourdi":{A:{tab:["n28"]}},"étrange":{A:{tab:["n25"]}},"étranger":{A:{tab:["n39"]}},"être":{N:{g:"m",tab:["n3"]},V:{aux:["av"],tab:"v136"}},"étroit":{A:{tab:["n28"]}},"étude":{N:{g:"f",tab:["n17"]}},"étudiant":{N:{g:"m",tab:["n28"]}},"étudier":{V:{aux:["av"],tab:"v36"}},"évangile":{N:{g:"m",tab:["n3"]}},"évanouir":{V:{aux:["êt"],tab:"v58"}},"éveiller":{V:{aux:["av"],tab:"v36"}},"événement":{N:{g:"m",tab:["n3"]}},"évêque":{N:{g:"m",tab:["n3"]}},"évidemment":{Adv:{tab:["av"]}},"éviter":{V:{aux:["av"],tab:"v36"}},exact:{A:{tab:["n28"]}},exactement:{Adv:{tab:["av"]}},exactitude:{N:{g:"f",tab:["n17"]}},examen:{N:{g:"m",tab:["n3"]}},examiner:{V:{aux:["av"],tab:"v36"}},exaucer:{V:{aux:["av"],tab:"v0"}},excellence:{N:{g:"f",tab:["n17"]}},excellent:{A:{tab:["n28"]}},exciter:{V:{aux:["av"],tab:"v36"}},exclamation:{N:{g:"f",tab:["n17"]}},excursion:{N:{g:"f",tab:["n17"]}},excuse:{N:{g:"f",tab:["n17"]}},excuser:{V:{aux:["av"],tab:"v36"}},"exécuter":{V:{aux:["av"],tab:"v36"}},"exécution":{N:{g:"f",tab:["n17"]}},exemplaire:{N:{g:"m",tab:["n3"]}},exemple:{N:{g:"m",tab:["n3"]}},exercer:{V:{aux:["av"],tab:"v0"}},exercice:{N:{g:"m",tab:["n3"]}},exhaler:{V:{aux:["av"],tab:"v36"}},exiger:{V:{aux:["av"],tab:"v3"}},existence:{N:{g:"f",tab:["n17"]}},exister:{V:{aux:["av"],tab:"v36"}},"expédier":{V:{aux:["av"],tab:"v36"}},"expédition":{N:{g:"f",tab:["n17"]}},"expérience":{N:{g:"f",tab:["n17"]}},expirer:{V:{aux:["aê"],tab:"v36"}},explication:{N:{g:"f",tab:["n17"]}},expliquer:{V:{aux:["av"],tab:"v36"}},exposer:{V:{aux:["av"],tab:"v36"}},exposition:{N:{g:"f",tab:["n17"]}},"exprès":{Adv:{tab:["av"]}},expression:{N:{g:"f",tab:["n17"]}},exprimer:{V:{aux:["av"],tab:"v36"}},exquis:{A:{tab:["n27"]}},"extérieur":{A:{tab:["n28"]}},extraire:{V:{aux:["av"],tab:"v125"}},extraordinaire:{A:{tab:["n25"]}},"extrême":{A:{tab:["n25"]}},"extrémité":{N:{g:"f",tab:["n17"]}},fabrication:{N:{g:"f",tab:["n17"]}},fabrique:{N:{g:"f",tab:["n17"]}},fabriquer:{V:{aux:["av"],tab:"v36"}},"façade":{N:{g:"f",tab:["n17"]}},"fâcher":{V:{aux:["av"],tab:"v36"}},"fâcheux":{A:{tab:["n54"]}},facile:{A:{tab:["n25"]}},facilement:{Adv:{tab:["av"]}},"facilité":{N:{g:"f",tab:["n17"]}},faciliter:{V:{aux:["av"],tab:"v36"}},"façon":{N:{g:"f",tab:["n17"]}},"façonner":{V:{aux:["av"],tab:"v36"}},facteur:{N:{g:"m",tab:["n3"]}},faible:{A:{tab:["n25"]}},faiblesse:{N:{g:"f",tab:["n17"]}},faim:{N:{g:"f",tab:["n17"]}},faire:{V:{aux:["av"],tab:"v124"}},fait:{N:{g:"m",tab:["n3"]}},falloir:{V:{aux:["av"],tab:"v80"}},fameux:{A:{tab:["n54"]}},familial:{A:{tab:["n47"]}},familier:{A:{tab:["n39"]}},famille:{N:{g:"f",tab:["n17"]}},faner:{V:{aux:["av"],tab:"v36"}},farce:{N:{g:"f",tab:["n17"]}},farine:{N:{g:"f",tab:["n17"]}},farouche:{A:{tab:["n25"]}},fatal:{A:{tab:["n28"]}},fatigue:{N:{g:"f",tab:["n17"]}},fatiguer:{V:{aux:["av"],tab:"v36"}},faucher:{V:{aux:["av"],tab:"v36"}},faucheur:{N:{g:"m",tab:["n3"]}},faute:{N:{g:"f",tab:["n17"]}},fauteuil:{N:{g:"m",tab:["n3"]}},fauve:{A:{tab:["n25"]}},fauvette:{N:{g:"f",tab:["n17"]}},faux:{A:{tab:["n53"]}},faveur:{N:{g:"f",tab:["n17"]}},favorable:{A:{tab:["n25"]}},favori:{A:{tab:["n34"]}},favoriser:{V:{aux:["av"],tab:"v36"}},"fée":{N:{g:"f",tab:["n17"]}},"féliciter":{V:{aux:["av"],tab:"v36"}},femelle:{N:{g:"f",tab:["n17"]}},femme:{N:{g:"f",tab:["n17"]}},fendre:{V:{aux:["av"],tab:"v85"}},"fenêtre":{N:{g:"f",tab:["n17"]}},fer:{N:{g:"m",tab:["n3"]}},ferme:{N:{g:"f",tab:["n17"]}},fermer:{V:{aux:["av"],tab:"v36"}},fermier:{N:{g:"m",tab:["n39"]}},"féroce":{A:{tab:["n25"]}},ferraille:{N:{g:"f",tab:["n17"]}},ferrer:{V:{aux:["av"],tab:"v36"}},fervent:{A:{tab:["n28"]}},ferveur:{N:{g:"f",tab:["n17"]}},"fête":{N:{g:"f",tab:["n17"]}},"fêter":{V:{aux:["av"],tab:"v36"}},feu:{N:{g:"m",tab:["n4"]}},feuillage:{N:{g:"m",tab:["n3"]}},feuille:{N:{g:"f",tab:["n17"]}},"février":{N:{g:"m",tab:["n3"]}},"fiancé":{N:{g:"m",tab:["n28"]}},ficelle:{N:{g:"f",tab:["n17"]}},"fidèle":{A:{tab:["n25"]}},fier:{A:{tab:["n39"]},V:{aux:["êt"],tab:"v36"}},"fièrement":{Adv:{tab:["av"]}},"fièvre":{N:{g:"f",tab:["n17"]}},figure:{N:{g:"f",tab:["n17"]}},figurer:{V:{aux:["av"],tab:"v36"}},fil:{N:{g:"m",tab:["n3"]}},file:{N:{g:"f",tab:["n17"]}},filer:{V:{aux:["av"],tab:"v36"}},filet:{N:{g:"m",tab:["n3"]}},fille:{N:{g:"f",tab:["n17"]}},fillette:{N:{g:"f",tab:["n17"]}},filleul:{N:{g:"m",tab:["n28"]}},fils:{N:{g:"m",tab:["n2"]}},fin:{N:{g:"f",tab:["n17"]}},finalement:{Adv:{tab:["av"]}},finir:{V:{aux:["av"],tab:"v58"}},firmament:{N:{g:"m",tab:["n3"]}},fixe:{A:{tab:["n25"]}},fixer:{V:{aux:["av"],tab:"v36"}},flacon:{N:{g:"m",tab:["n3"]}},flamand:{A:{tab:["n28"]}},flamber:{V:{aux:["av"],tab:"v36"}},flamme:{N:{g:"f",tab:["n17"]}},flanc:{N:{g:"m",tab:["n3"]}},flaque:{N:{g:"f",tab:["n17"]}},flatter:{V:{aux:["av"],tab:"v36"}},flatteur:{N:{g:"m",tab:["n55"]}},"fléau":{N:{g:"m",tab:["n4"]}},"flèche":{N:{g:"f",tab:["n17"]}},fleur:{N:{g:"f",tab:["n17"]}},fleurette:{N:{g:"f",tab:["n17"]}},fleurir:{V:{aux:["av"],tab:"v43"}},fleuve:{N:{g:"m",tab:["n3"]}},flocon:{N:{g:"m",tab:["n3"]}},flot:{N:{g:"m",tab:["n3"]}},flotter:{V:{aux:["av"],tab:"v36"}},"flûte":{N:{g:"f",tab:["n17"]}},foi:{N:{g:"f",tab:["n17"]}},foie:{N:{g:"m",tab:["n3"]}},foin:{N:{g:"m",tab:["n3"]}},foire:{N:{g:"f",tab:["n17"]}},fois:{N:{g:"f",tab:["n16"]}},foncer:{V:{aux:["av"],tab:"v0"}},fonction:{N:{g:"f",tab:["n17"]}},fond:{N:{g:"m",tab:["n3"]}},fondre:{V:{aux:["av"],tab:"v85"}},fonds:{N:{g:"m",tab:["n2"]}},fontaine:{N:{g:"f",tab:["n17"]}},football:{N:{g:"m",tab:["n35"]}},force:{N:{g:"f",tab:["n17"]}},forcer:{V:{aux:["av"],tab:"v0"}},forestier:{A:{tab:["n39"]}},"forêt":{N:{g:"f",tab:["n17"]}},forge:{N:{g:"f",tab:["n17"]}},forger:{V:{aux:["av"],tab:"v3"}},forgeron:{N:{g:"m",tab:["n3"]}},forme:{N:{g:"f",tab:["n17"]}},former:{V:{aux:["av"],tab:"v36"}},formidable:{A:{tab:["n25"]}},fort:{A:{tab:["n28"]},Adv:{tab:["av"]}},fortement:{Adv:{tab:["av"]}},fortune:{N:{g:"f",tab:["n17"]}},"fossé":{N:{g:"m",tab:["n3"]}},fou:{A:{tab:["n109"]}},foudre:{N:{g:"f",tab:["n17"]}},fouet:{N:{g:"m",tab:["n3"]}},fouetter:{V:{aux:["av"],tab:"v36"}},"fougère":{N:{g:"f",tab:["n17"]}},fouiller:{V:{aux:["av"],tab:"v36"}},foule:{N:{g:"f",tab:["n17"]}},four:{N:{g:"m",tab:["n3"]}},fourmi:{N:{g:"f",tab:["n17"]}},fourneau:{N:{g:"m",tab:["n4"]}},fournir:{V:{aux:["av"],tab:"v58"}},fourniture:{N:{g:"f",tab:["n17"]}},fourrer:{V:{aux:["av"],tab:"v36"}},fourrure:{N:{g:"f",tab:["n17"]}},foyer:{N:{g:"m",tab:["n3"]}},fragile:{A:{tab:["n25"]}},"fraîcheur":{N:{g:"f",tab:["n17"]}},frais:{A:{tab:["n44"]}},fraise:{N:{g:"f",tab:["n17"]}},franc:{A:{tab:["n61"]}},"français":{A:{tab:["n27"]}},franchement:{Adv:{tab:["av"]}},franchir:{V:{aux:["av"],tab:"v58"}},franchise:{N:{g:"f",tab:["n17"]}},frapper:{V:{aux:["av"],tab:"v36"}},frayeur:{N:{g:"f",tab:["n17"]}},"frêle":{A:{tab:["n25"]}},"frémir":{V:{aux:["av"],tab:"v58"}},"fréquemment":{Adv:{tab:["av"]}},"fréquent":{A:{tab:["n28"]}},"fréquenter":{V:{aux:["av"],tab:"v36"}},"frère":{N:{g:"m",tab:["n3"]}},friandise:{N:{g:"f",tab:["n17"]}},frissonner:{V:{aux:["av"],tab:"v36"}},froid:{A:{tab:["n28"]}},froisser:{V:{aux:["av"],tab:"v36"}},fromage:{N:{g:"m",tab:["n3"]}},froment:{N:{g:"m",tab:["n3"]}},front:{N:{g:"m",tab:["n3"]}},"frontière":{N:{g:"f",tab:["n17"]}},frotter:{V:{aux:["av"],tab:"v36"}},fruit:{N:{g:"m",tab:["n3"]}},fruitier:{A:{tab:["n39"]}},fuir:{V:{aux:["av"],tab:"v54"}},fuite:{N:{g:"f",tab:["n17"]}},"fumée":{N:{g:"f",tab:["n17"]}},fumer:{V:{aux:["av"],tab:"v36"}},fureur:{N:{g:"f",tab:["n17"]}},furieux:{A:{tab:["n54"]}},fusil:{N:{g:"m",tab:["n3"]}},futur:{A:{tab:["n28"]}},gagner:{V:{aux:["av"],tab:"v36"}},gai:{A:{tab:["n28"]}},gaiement:{Adv:{tab:["av"]}},"gaieté":{N:{g:"f",tab:["n17"]}},galerie:{N:{g:"f",tab:["n17"]}},gambader:{V:{aux:["av"],tab:"v36"}},gamin:{N:{g:"m",tab:["n28"]}},gant:{N:{g:"m",tab:["n3"]}},garantir:{V:{aux:["av"],tab:"v58"}},"garçon":{N:{g:"m",tab:["n3"]}},garde:{N:{g:"m",tab:["n3"]}},garder:{V:{aux:["av"],tab:"v36"}},gardien:{N:{g:"m",tab:["n49"]}},gare:{N:{g:"f",tab:["n17"]}},garnir:{V:{aux:["av"],tab:"v58"}},garniture:{N:{g:"f",tab:["n17"]}},gars:{N:{g:"m",tab:["n2"]}},"gâteau":{N:{g:"m",tab:["n4"]}},"gâter":{V:{aux:["av"],tab:"v36"}},gauche:{A:{tab:["n25"]}},gaufre:{N:{g:"f",tab:["n17"]}},gaz:{N:{g:"m",tab:["n2"]}},gazon:{N:{g:"m",tab:["n3"]}},gazouillement:{N:{g:"m",tab:["n3"]}},gazouiller:{V:{aux:["av"],tab:"v36"}},"géant":{A:{tab:["n28"]}},"gelée":{N:{g:"f",tab:["n17"]}},geler:{V:{aux:["av"],tab:"v8"}},"gémir":{V:{aux:["av"],tab:"v58"}},gendarme:{N:{g:"m",tab:["n3"]}},"gêner":{V:{aux:["av"],tab:"v36"}},"général":{A:{tab:["n47"]}},"généralement":{Adv:{tab:["av"]}},"génération":{N:{g:"f",tab:["n17"]}},"généreux":{A:{tab:["n54"]}},"générosité":{N:{g:"f",tab:["n17"]}},"genêt":{N:{g:"m",tab:["n3"]}},genou:{N:{g:"m",tab:["n4"]}},genre:{N:{g:"m",tab:["n3"]}},gens:{N:{g:"m",tab:["n2"]}},gentil:{A:{tab:["n48"]}},gentiment:{Adv:{tab:["av"]}},"géographie":{N:{g:"f",tab:["n17"]}},"géranium":{N:{g:"m",tab:["n3"]}},gerbe:{N:{g:"f",tab:["n17"]}},germer:{V:{aux:["av"],tab:"v36"}},geste:{N:{g:"m",tab:["n3"]}},"gibecière":{N:{g:"f",tab:["n17"]}},gibier:{N:{g:"m",tab:["n3"]}},"giboulée":{N:{g:"f",tab:["n17"]}},gigantesque:{A:{tab:["n25"]}},"giroflée":{N:{g:"f",tab:["n17"]}},"gîte":{N:{g:"m",tab:["n3"]}},givre:{N:{g:"m",tab:["n3"]}},glace:{N:{g:"f",tab:["n17"]}},glacer:{V:{aux:["av"],tab:"v0"}},gland:{N:{g:"m",tab:["n3"]}},glissant:{A:{tab:["n28"]}},glisser:{V:{aux:["av"],tab:"v36"}},glissoire:{N:{g:"f",tab:["n17"]}},gloire:{N:{g:"f",tab:["n17"]}},gonfler:{V:{aux:["av"],tab:"v36"}},gorge:{N:{g:"f",tab:["n17"]}},gosse:{N:{g:"x",tab:["n25"]}},gourmand:{A:{tab:["n28"]}},"goût":{N:{g:"m",tab:["n3"]}},"goûter":{V:{aux:["av"],tab:"v36"}},goutte:{N:{g:"f",tab:["n17"]}},gouvernement:{N:{g:"m",tab:["n3"]}},gouverner:{V:{aux:["av"],tab:"v36"}},"grâce":{N:{g:"f",tab:["n17"]}},gracieux:{A:{tab:["n54"]}},grain:{N:{g:"m",tab:["n3"]}},graine:{N:{g:"f",tab:["n17"]}},graisse:{N:{g:"f",tab:["n17"]}},grammaire:{N:{g:"f",tab:["n17"]}},grand:{A:{pos:"pre",tab:["n28"]}},"grand-maman":{N:{g:"f",tab:["nI"]}},"grand-mère":{N:{g:"f",tab:["nI"]}},"grand-père":{N:{g:"m",tab:["nI"]}},grandeur:{N:{g:"f",tab:["n17"]}},grandiose:{A:{tab:["n25"]}},grandir:{V:{aux:["aê"],tab:"v58"}},grange:{N:{g:"f",tab:["n17"]}},grappe:{N:{g:"f",tab:["n17"]}},gras:{A:{tab:["n50"]}},gratitude:{N:{g:"f",tab:["n17"]}},gratter:{V:{aux:["av"],tab:"v36"}},grave:{A:{tab:["n25"]}},gravement:{Adv:{tab:["av"]}},graver:{V:{aux:["av"],tab:"v36"}},gravir:{V:{aux:["av"],tab:"v58"}},gravure:{N:{g:"f",tab:["n17"]}},"grêle":{N:{g:"f",tab:["n17"]}},grelotter:{V:{aux:["av"],tab:"v36"}},grenier:{N:{g:"m",tab:["n3"]}},grenouille:{N:{g:"f",tab:["n17"]}},"grès":{N:{g:"m",tab:["n2"]}},griffe:{N:{g:"f",tab:["n17"]}},griffer:{V:{aux:["av"],tab:"v36"}},grille:{N:{g:"f",tab:["n17"]}},grimper:{V:{aux:["av"],tab:"v36"}},grincer:{V:{aux:["av"],tab:"v0"}},grippe:{N:{g:"f",tab:["n17"]}},gris:{A:{tab:["n27"]}},grive:{N:{g:"f",tab:["n17"]}},gronder:{V:{aux:["av"],tab:"v36"}},gros:{A:{pos:"pre",tab:["n50"]}},groseillier:{N:{g:"m",tab:["n3"]}},grossier:{A:{tab:["n39"]}},grossir:{V:{aux:["aê"],tab:"v58"}},grotte:{N:{g:"f",tab:["n17"]}},groupe:{N:{g:"m",tab:["n3"]}},grouper:{V:{aux:["av"],tab:"v36"}},grue:{N:{g:"f",tab:["n17"]}},"guêpe":{N:{g:"f",tab:["n17"]}},"guère":{Adv:{tab:["av"]}},"guérir":{V:{aux:["av"],tab:"v58"}},"guérison":{N:{g:"f",tab:["n17"]}},guerre:{N:{g:"f",tab:["n17"]}},guetter:{V:{aux:["av"],tab:"v36"}},guichet:{N:{g:"m",tab:["n3"]}},guide:{N:{g:"x",tab:["n3"]}},guider:{V:{aux:["av"],tab:"v36"}},gymnastique:{N:{g:"f",tab:["n17"]}},habile:{A:{tab:["n25"]}},"habileté":{N:{g:"f",tab:["n17"]}},habiller:{V:{aux:["av"],tab:"v36"}},habit:{N:{g:"m",tab:["n3"]}},habitant:{N:{g:"m",tab:["n28"]}},habitation:{N:{g:"f",tab:["n17"]}},habiter:{V:{aux:["av"],tab:"v36"}},habitude:{N:{g:"f",tab:["n17"]}},habituel:{A:{tab:["n48"]}},habituer:{V:{aux:["av"],tab:"v36"}},hache:{N:{g:"f",h:1,tab:["n17"]}},haie:{N:{g:"f",h:1,tab:["n17"]}},haillon:{N:{g:"m",h:1,tab:["n3"]}},haine:{N:{g:"f",h:1,tab:["n17"]}},haleine:{N:{g:"f",tab:["n17"]}},halte:{N:{g:"f",h:1,tab:["n17"]}},hameau:{N:{g:"m",tab:["n4"]}},hangar:{N:{g:"m",h:1,tab:["n3"]}},hanneton:{N:{g:"m",h:1,tab:["n3"]}},hardi:{A:{h:1,tab:["n28"]}},harmonieux:{A:{tab:["n54"]}},hasard:{N:{g:"m",h:1,tab:["n3"]}},"hâte":{N:{g:"f",h:1,tab:["n17"]}},"hâter":{V:{aux:["av"],h:1,tab:"v36"}},hausser:{V:{aux:["av"],h:1,tab:"v36"}},haut:{A:{h:1,tab:["n28"]}},hauteur:{N:{g:"f",h:1,tab:["n17"]}},herbe:{N:{g:"f",tab:["n17"]}},"hérissé":{A:{h:1,tab:["n28"]}},hermine:{N:{g:"f",tab:["n17"]}},"héroïque":{A:{tab:["n25"]}},"héros":{N:{g:"m",h:1,tab:["n2"]}},"hésiter":{V:{aux:["av"],tab:"v36"}},"hêtre":{N:{g:"m",h:1,tab:["n3"]}},heure:{N:{g:"f",tab:["n17"]}},heureusement:{Adv:{tab:["av"]}},heureux:{A:{tab:["n54"]}},heurter:{V:{aux:["av"],h:1,tab:"v36"}},hibou:{N:{g:"m",h:1,tab:["n4"]}},hier:{Adv:{tab:["av"]}},hirondelle:{N:{g:"f",tab:["n17"]}},histoire:{N:{g:"f",tab:["n17"]}},hiver:{N:{g:"m",tab:["n3"]}},hommage:{N:{g:"m",tab:["n3"]}},homme:{N:{g:"m",tab:["n3"]}},"honnête":{A:{tab:["n25"]}},honneur:{N:{g:"m",tab:["n3"]}},honorable:{A:{tab:["n25"]}},honorer:{V:{aux:["av"],tab:"v36"}},honte:{N:{g:"f",h:1,tab:["n17"]}},honteux:{A:{h:1,tab:["n54"]}},"hôpital":{N:{g:"m",tab:["n5"]}},horizon:{N:{g:"m",tab:["n3"]}},horloge:{N:{g:"f",tab:["n17"]}},horreur:{N:{g:"f",tab:["n17"]}},horrible:{A:{tab:["n25"]}},hors:{P:{h:1,tab:["pp"]}},"hôte":{N:{g:"m",tab:["n52"]}},"hôtel":{N:{g:"m",tab:["n3"]}},houille:{N:{g:"f",h:1,tab:["n17"]}},huile:{N:{g:"f",tab:["n17"]}},humain:{A:{tab:["n28"]}},"humanité":{N:{g:"f",tab:["n17"]}},humble:{A:{tab:["n25"]}},humeur:{N:{g:"f",tab:["n17"]}},humide:{A:{tab:["n25"]}},"humidité":{N:{g:"f",tab:["n17"]}},hurler:{V:{aux:["av"],h:1,tab:"v36"}},"hygiène":{N:{g:"f",tab:["n17"]}},hypocrite:{A:{tab:["n25"]}},ici:{Adv:{tab:["av"]}},"idéal":{A:{tab:["n47"]}},"idée":{N:{g:"f",tab:["n17"]}},ignorant:{A:{tab:["n28"]}},ignorer:{V:{aux:["av"],tab:"v36"}},"île":{N:{g:"f",tab:["n17"]}},illuminer:{V:{aux:["av"],tab:"v36"}},illusion:{N:{g:"f",tab:["n17"]}},illustre:{A:{tab:["n25"]}},illustrer:{V:{aux:["av"],tab:"v36"}},image:{N:{g:"f",tab:["n17"]}},imagination:{N:{g:"f",tab:["n17"]}},imaginer:{V:{aux:["av"],tab:"v36"}},imiter:{V:{aux:["av"],tab:"v36"}},"immaculé":{A:{tab:["n28"]}},"immédiatement":{Adv:{tab:["av"]}},immense:{A:{tab:["n25"]}},immobile:{A:{tab:["n25"]}},impatiemment:{Adv:{tab:["av"]}},impatience:{N:{g:"f",tab:["n17"]}},impatient:{A:{tab:["n28"]}},"imperméable":{A:{tab:["n25"]}},implorer:{V:{aux:["av"],tab:"v36"}},importance:{N:{g:"f",tab:["n17"]}},important:{A:{tab:["n28"]}},importer:{V:{aux:["av"],tab:"v36"}},imposant:{A:{tab:["n28"]}},imposer:{V:{aux:["av"],tab:"v36"}},"impossibilité":{N:{g:"f",tab:["n17"]}},impossible:{A:{tab:["n25"]}},impression:{N:{g:"f",tab:["n17"]}},"imprévu":{A:{tab:["n28"]}},imprimer:{V:{aux:["av"],tab:"v36"}},imprudence:{N:{g:"f",tab:["n17"]}},imprudent:{A:{tab:["n28"]}},incendie:{N:{g:"m",tab:["n3"]}},incident:{N:{g:"m",tab:["n3"]}},incliner:{V:{aux:["av"],tab:"v36"}},inconnu:{N:{g:"m",tab:["n28"]}},"inconvénient":{N:{g:"m",tab:["n3"]}},indication:{N:{g:"f",tab:["n17"]}},"indifférent":{A:{tab:["n28"]}},indigne:{A:{tab:["n25"]}},indiquer:{V:{aux:["av"],tab:"v36"}},indispensable:{A:{tab:["n25"]}},industrie:{N:{g:"f",tab:["n17"]}},industriel:{A:{tab:["n48"]}},inerte:{A:{tab:["n25"]}},"inférieur":{A:{tab:["n28"]}},infini:{A:{tab:["n28"]}},infiniment:{Adv:{tab:["av"]}},infirme:{A:{tab:["n25"]}},infirmier:{N:{g:"m",tab:["n39"]}},influence:{N:{g:"f",tab:["n17"]}},informer:{V:{aux:["av"],tab:"v36"}},ingrat:{A:{tab:["n28"]}},ingratitude:{N:{g:"f",tab:["n17"]}},injure:{N:{g:"f",tab:["n17"]}},innocent:{A:{tab:["n28"]}},inondation:{N:{g:"f",tab:["n17"]}},inonder:{V:{aux:["av"],tab:"v36"}},inquiet:{A:{tab:["n40"]}},"inquiéter":{V:{aux:["av"],tab:"v22"}},"inquiétude":{N:{g:"f",tab:["n17"]}},inscrire:{V:{aux:["av"],tab:"v114"}},insecte:{N:{g:"m",tab:["n3"]}},insigne:{N:{g:"m",tab:["n3"]}},insister:{V:{aux:["av"],tab:"v36"}},inspecteur:{N:{g:"m",tab:["n56"]}},inspirer:{V:{aux:["av"],tab:"v36"}},installer:{V:{aux:["av"],tab:"v36"}},instant:{N:{g:"m",tab:["n3"]}},institut:{N:{g:"m",tab:["n3"]}},instituteur:{N:{g:"m",tab:["n56"]}},instructif:{A:{tab:["n46"]}},instruction:{N:{g:"f",tab:["n17"]}},instruire:{V:{aux:["av"],tab:"v113"}},instrument:{N:{g:"m",tab:["n3"]}},intellectuel:{A:{tab:["n48"]}},intelligence:{N:{g:"f",tab:["n17"]}},intelligent:{A:{tab:["n28"]}},intense:{A:{tab:["n25"]}},intention:{N:{g:"f",tab:["n17"]}},interdire:{V:{aux:["av"],tab:"v118"}},"intéressant":{A:{tab:["n28"]}},"intéresser":{V:{aux:["av"],tab:"v36"}},"intérêt":{N:{g:"m",tab:["n3"]}},"intérieur":{A:{tab:["n28"]}},interpeller:{V:{aux:["av"],tab:"v36"}},interroger:{V:{aux:["av"],tab:"v3"}},interrompre:{V:{aux:["av"],tab:"v91"}},interruption:{N:{g:"f",tab:["n17"]}},intervenir:{V:{aux:["êt"],tab:"v52"}},intime:{A:{tab:["n25"]}},introduction:{N:{g:"f",tab:["n17"]}},introduire:{V:{aux:["av"],tab:"v113"}},inutile:{A:{tab:["n25"]}},invention:{N:{g:"f",tab:["n17"]}},invisible:{A:{tab:["n25"]}},invitation:{N:{g:"f",tab:["n17"]}},inviter:{V:{aux:["av"],tab:"v36"}},invoquer:{V:{aux:["av"],tab:"v36"}},irriter:{V:{aux:["av"],tab:"v36"}},isoler:{V:{aux:["av"],tab:"v36"}},ivoire:{N:{g:"m",tab:["n3"]}},ivre:{A:{tab:["n25"]}},ivresse:{N:{g:"f",tab:["n17"]}},jacinthe:{N:{g:"f",tab:["n17"]}},jadis:{Adv:{tab:["av"]}},jaillir:{V:{aux:["av"],tab:"v58"}},jaloux:{A:{tab:["n54"]}},jamais:{Adv:{tab:["av"]}},jambe:{N:{g:"f",tab:["n17"]}},jambon:{N:{g:"m",tab:["n3"]}},janvier:{N:{g:"m",tab:["n3"]}},jardin:{N:{g:"m",tab:["n3"]}},jardinage:{N:{g:"m",tab:["n3"]}},jardinier:{N:{g:"m",tab:["n39"]}},jaune:{A:{tab:["n25"]}},jaunir:{V:{aux:["av"],tab:"v58"}},je:{Pro:{tab:["pn1"]}},jeter:{V:{aux:["av"],tab:"v10"}},jeu:{N:{g:"m",tab:["n4"]}},jeudi:{N:{g:"m",tab:["n3"]}},jeune:{A:{pos:"pre",tab:["n25"]}},jeunesse:{N:{g:"f",tab:["n17"]}},joie:{N:{g:"f",tab:["n17"]}},joindre:{V:{aux:["av"],tab:"v97"}},joli:{A:{pos:"pre",tab:["n28"]}},joncher:{V:{aux:["av"],tab:"v36"}},jonquille:{N:{g:"f",tab:["n17"]}},joue:{N:{g:"f",tab:["n17"]}},jouer:{V:{aux:["av"],tab:"v36"}},jouet:{N:{g:"m",tab:["n3"]}},joueur:{N:{g:"m",tab:["n55"]}},jouir:{V:{aux:["av"],tab:"v58"}},joujou:{N:{g:"m",tab:["n4"]}},jour:{N:{g:"m",tab:["n3"]}},journal:{N:{g:"m",tab:["n5"]}},journalier:{A:{tab:["n39"]}},"journée":{N:{g:"f",tab:["n17"]}},joyeusement:{Adv:{tab:["av"]}},joyeux:{A:{tab:["n54"]}},juge:{N:{g:"m",tab:["n3"]}},jugement:{N:{g:"m",tab:["n3"]}},juger:{V:{aux:["av"],tab:"v3"}},juillet:{N:{g:"m",tab:["n3"]}},juin:{N:{g:"m",tab:["n3"]}},jurer:{V:{aux:["av"],tab:"v36"}},jusque:{P:{tab:["ppe"]}},juste:{A:{tab:["n25"]}},justement:{Adv:{tab:["av"]}},justice:{N:{g:"f",tab:["n17"]}},"képi":{N:{g:"m",tab:["n3"]}},kermesse:{N:{g:"f",tab:["n17"]}},kilogramme:{N:{g:"m",tab:["n3"]}},"kilomètre":{N:{g:"m",tab:["n3"]}},"là":{Adv:{tab:["av"]}},"là-bas":{Adv:{tab:["av"]}},labeur:{N:{g:"m",tab:["n3"]}},laborieux:{A:{tab:["n54"]}},labourer:{V:{aux:["av"],tab:"v36"}},laboureur:{N:{g:"m",tab:["n3"]}},lac:{N:{g:"m",tab:["n3"]}},"lâcher":{V:{aux:["av"],tab:"v36"}},laid:{A:{tab:["n28"]}},laine:{N:{g:"f",tab:["n17"]}},laisser:{V:{aux:["av"],tab:"v36"}},lait:{N:{g:"m",tab:["n3"]}},laitier:{N:{g:"m",tab:["n39"]}},lambeau:{N:{g:"m",tab:["n4"]}},lamentable:{A:{tab:["n25"]}},lampe:{N:{g:"f",tab:["n17"]}},lancer:{V:{aux:["av"],tab:"v0"}},langage:{N:{g:"m",tab:["n3"]}},langue:{N:{g:"f",tab:["n17"]}},lanterne:{N:{g:"f",tab:["n17"]}},lapin:{N:{g:"m",tab:["n28"]}},large:{A:{tab:["n25"]}},largement:{Adv:{tab:["av"]}},larme:{N:{g:"f",tab:["n17"]}},las:{A:{tab:["n50"]}},lasser:{V:{aux:["av"],tab:"v36"}},laver:{V:{aux:["av"],tab:"v36"}},le:{D:{tab:["d1"]},Pro:{g:"m",tab:["d1"]}},"lécher":{V:{aux:["av"],tab:"v27"}},"leçon":{N:{g:"f",tab:["n17"]}},lecture:{N:{g:"f",tab:["n17"]}},"léger":{A:{tab:["n39"]}},"légèrement":{Adv:{tab:["av"]}},"légume":{N:{g:"x",tab:["n3"]}},lendemain:{N:{g:"m",tab:["n3"]}},lent:{A:{tab:["n28"]}},lentement:{Adv:{tab:["av"]}},lenteur:{N:{g:"f",tab:["n17"]}},lequel:{Pro:{tab:["pn24"]}},lettre:{N:{g:"f",tab:["n17"]}},lever:{V:{aux:["av"],tab:"v25"}},"lèvre":{N:{g:"f",tab:["n17"]}},"libérer":{V:{aux:["av"],tab:"v28"}},"liberté":{N:{g:"f",tab:["n17"]}},libre:{A:{tab:["n25"]}},lien:{N:{g:"m",tab:["n3"]}},lier:{V:{aux:["av"],tab:"v36"}},lierre:{N:{g:"m",tab:["n3"]}},lieu:{N:{g:"m",tab:["n4"]}},lieue:{N:{g:"f",tab:["n17"]}},"lièvre":{N:{g:"m",tab:["n3"]}},ligne:{N:{g:"f",tab:["n17"]}},ligue:{N:{g:"f",tab:["n17"]}},lilas:{N:{g:"m",tab:["n2"]}},limite:{N:{g:"f",tab:["n17"]}},limiter:{V:{aux:["av"],tab:"v36"}},limpide:{A:{tab:["n25"]}},lin:{N:{g:"m",tab:["n3"]}},linge:{N:{g:"m",tab:["n3"]}},lion:{N:{g:"m",tab:["n49"]}},liquide:{A:{tab:["n25"]}},lire:{V:{aux:["av"],tab:"v120"}},lis:{N:{g:"m",tab:["n2"]}},"lisière":{N:{g:"f",tab:["n17"]}},lisse:{A:{tab:["n25"]}},liste:{N:{g:"f",tab:["n17"]}},lit:{N:{g:"m",tab:["n3"]}},"litière":{N:{g:"f",tab:["n17"]}},livre:{N:{g:"m",tab:["n3"]}},livrer:{V:{aux:["av"],tab:"v36"}},local:{N:{g:"m",tab:["n5"]}},"localité":{N:{g:"f",tab:["n17"]}},locomotive:{N:{g:"f",tab:["n17"]}},loger:{V:{aux:["av"],tab:"v3"}},logis:{N:{g:"m",tab:["n2"]}},loi:{N:{g:"f",tab:["n17"]}},loin:{Adv:{tab:["av"]}},lointain:{A:{tab:["n28"]}},loisir:{N:{g:"m",tab:["n3"]}},long:{A:{tab:["n64"]}},longer:{V:{aux:["av"],tab:"v3"}},longtemps:{Adv:{tab:["av"]}},longuement:{Adv:{tab:["av"]}},longueur:{N:{g:"f",tab:["n17"]}},lors:{Adv:{tab:["av"]}},lot:{N:{g:"m",tab:["n3"]}},louange:{N:{g:"f",tab:["n17"]}},louer:{V:{aux:["av"],tab:"v36"}},loup:{N:{g:"m",tab:["n3"]}},lourd:{A:{tab:["n28"]}},louve:{N:{g:"f",tab:["n17"]}},loyal:{A:{tab:["n47"]}},lueur:{N:{g:"f",tab:["n17"]}},lugubre:{A:{tab:["n25"]}},luire:{V:{aux:["av"],tab:"v112"}},luisant:{A:{tab:["n28"]}},"lumière":{N:{g:"f",tab:["n17"]}},lumineux:{A:{tab:["n54"]}},lundi:{N:{g:"m",tab:["n3"]}},lune:{N:{g:"f",tab:["n17"]}},lunette:{N:{g:"f",tab:["n17"]}},lutin:{N:{g:"m",tab:["n3"]}},lutte:{N:{g:"f",tab:["n17"]}},lutter:{V:{aux:["av"],tab:"v36"}},lys:{N:{g:"m",tab:["n2"]}},machine:{N:{g:"f",tab:["n17"]}},"mâchoire":{N:{g:"f",tab:["n17"]}},madame:{N:{g:"f",tab:["n19"]}},mademoiselle:{N:{g:"f",tab:["n20"]}},magasin:{N:{g:"m",tab:["n3"]}},magique:{A:{tab:["n25"]}},magnifique:{A:{tab:["n25"]}},mai:{N:{g:"m",tab:["n3"]}},maigre:{A:{tab:["n25"]}},main:{N:{g:"f",tab:["n17"]}},maintenant:{Adv:{tab:["av"]}},maintenir:{V:{aux:["av"],tab:"v52"}},maire:{N:{g:"m",tab:["n3"]}},maison:{N:{g:"f",tab:["n17"]}},"maître":{N:{g:"m",tab:["n52"]}},"majesté":{N:{g:"f",tab:["n17"]}},majestueux:{A:{tab:["n54"]}},mal:{Adv:{tab:["av"]}},malade:{A:{tab:["n25"]}},maladie:{N:{g:"f",tab:["n17"]}},"malgré":{P:{tab:["pp"]}},malheur:{N:{g:"m",tab:["n3"]}},malheureusement:{Adv:{tab:["av"]}},malheureux:{A:{tab:["n54"]}},malin:{A:{tab:["n65"]}},malle:{N:{g:"f",tab:["n17"]}},maman:{N:{g:"f",tab:["n17"]}},manche:{N:{g:"f",tab:["n17"]}},manger:{V:{aux:["av"],tab:"v3"}},manier:{V:{aux:["av"],tab:"v36"}},"manière":{N:{g:"f",tab:["n17"]}},manifester:{V:{aux:["av"],tab:"v36"}},manoeuvre:{N:{g:"m",tab:["n3"]}},manoeuvrer:{V:{aux:["av"],tab:"v36"}},manque:{N:{g:"m",tab:["n3"]}},manquer:{V:{aux:["av"],tab:"v36"}},mansarde:{N:{g:"f",tab:["n17"]}},manteau:{N:{g:"m",tab:["n4"]}},manuel:{A:{tab:["n48"]}},marbre:{N:{g:"m",tab:["n3"]}},marchand:{N:{g:"m",tab:["n28"]}},marchander:{V:{aux:["av"],tab:"v36"}},marchandise:{N:{g:"f",tab:["n17"]}},marche:{N:{g:"f",tab:["n17"]}},"marché":{N:{g:"m",tab:["n3"]}},marcher:{V:{aux:["av"],tab:"v36"}},mardi:{N:{g:"m",tab:["n3"]}},mare:{N:{g:"f",tab:["n17"]}},marguerite:{N:{g:"f",tab:["n17"]}},mari:{N:{g:"m",tab:["n3"]}},mariage:{N:{g:"m",tab:["n3"]}},marier:{V:{aux:["av"],tab:"v36"}},marin:{N:{g:"m",tab:["n3"]}},marine:{N:{g:"f",tab:["n17"]}},marque:{N:{g:"f",tab:["n17"]}},marquer:{V:{aux:["av"],tab:"v36"}},marquis:{N:{g:"m",tab:["n2"]}},marraine:{N:{g:"f",tab:["n17"]}},marron:{N:{g:"m",tab:["n3"]}},marronnier:{N:{g:"m",tab:["n3"]}},mars:{N:{g:"m",tab:["n2"]}},marteau:{N:{g:"m",tab:["n4"]}},masse:{N:{g:"f",tab:["n17"]}},massif:{A:{tab:["n46"]}},"mât":{N:{g:"m",tab:["n3"]}},"matériel":{N:{g:"m",tab:["n3"]}},maternel:{A:{tab:["n48"]}},"matière":{N:{g:"f",tab:["n17"]}},matin:{N:{g:"m",tab:["n3"]}},matinal:{A:{tab:["n47"]}},"matinée":{N:{g:"f",tab:["n17"]}},maudire:{V:{aux:["av"],tab:"v60"}},maussade:{A:{tab:["n25"]}},mauvais:{A:{pos:"pre",tab:["n27"]}},mauve:{A:{tab:["n25"]}},maximum:{N:{g:"m",tab:["n78"]}},me:{Pro:{tab:["pn2"]}},"me*coi":{Pro:{tab:["pn3"]}},"me*refl":{Pro:{tab:["pn6"]}},"mécanique":{A:{tab:["n25"]}},"méchant":{A:{tab:["n28"]}},"mécontent":{A:{tab:["n28"]}},"médaille":{N:{g:"f",tab:["n17"]}},"médecin":{N:{g:"m",tab:["n3"]}},"méditer":{V:{aux:["av"],tab:"v36"}},meilleur:{A:{tab:["n28"]}},"mélancolie":{N:{g:"f",tab:["n17"]}},"mélancolique":{A:{tab:["n25"]}},"mélange":{N:{g:"m",tab:["n3"]}},"mélanger":{V:{aux:["av"],tab:"v3"}},"mêler":{V:{aux:["av"],tab:"v36"}},"mélodie":{N:{g:"f",tab:["n17"]}},"mélodieux":{A:{tab:["n54"]}},membre:{N:{g:"m",tab:["n3"]}},"même":{Adv:{tab:["av"]}},"mémoire":{N:{g:"f",tab:["n17"]}},menacer:{V:{aux:["av"],tab:"v0"}},"ménage":{N:{g:"m",tab:["n3"]}},"ménager":{V:{aux:["av"],tab:"v3"}},"ménagerie":{N:{g:"f",tab:["n17"]}},mendiant:{N:{g:"m",tab:["n28"]}},mendier:{V:{aux:["av"],tab:"v36"}},mener:{V:{aux:["av"],tab:"v24"}},mensonge:{N:{g:"m",tab:["n3"]}},menteur:{N:{g:"m",tab:["n55"]}},mentir:{V:{aux:["av"],tab:"v46"}},menton:{N:{g:"m",tab:["n3"]}},menu:{N:{g:"m",tab:["n3"]}},menuisier:{N:{g:"m",tab:["n3"]}},mer:{N:{g:"f",tab:["n17"]}},merci:{N:{g:"m",tab:["n25"]}},mercredi:{N:{g:"m",tab:["n3"]}},"mère":{N:{g:"f",tab:["n17"]}},"mérite":{N:{g:"m",tab:["n3"]}},"mériter":{V:{aux:["av"],tab:"v36"}},merle:{N:{g:"m",tab:["n3"]}},merveille:{N:{g:"f",tab:["n17"]}},merveilleusement:{Adv:{tab:["av"]}},merveilleux:{A:{tab:["n54"]}},messager:{N:{g:"m",tab:["n39"]}},messe:{N:{g:"f",tab:["n17"]}},mesure:{N:{g:"f",tab:["n17"]}},mesurer:{V:{aux:["av"],tab:"v36"}},"métal":{N:{g:"m",tab:["n5"]}},"méthode":{N:{g:"f",tab:["n17"]}},"métier":{N:{g:"m",tab:["n3"]}},"métis":{A:{tab:["n50"]}},"mètre":{N:{g:"m",tab:["n3"]}},mettre:{V:{aux:["av"],tab:"v89"}},meuble:{N:{g:"m",tab:["n3"]}},meule:{N:{g:"f",tab:["n17"]}},meunier:{N:{g:"m",tab:["n39"]}},midi:{N:{g:"m",tab:["n3"]}},miel:{N:{g:"m",tab:["n3"]}},mien:{Pro:{tab:["pn12"]}},miette:{N:{g:"f",tab:["n17"]}},mieux:{Adv:{tab:["av"]}},mignon:{A:{tab:["n49"]}},migrateur:{A:{tab:["n56"]}},milieu:{N:{g:"m",tab:["n4"]}},militaire:{A:{tab:["n25"]}},millier:{N:{g:"m",tab:["n3"]}},million:{N:{g:"m",tab:["n3"]}},mince:{A:{tab:["n25"]}},mine:{N:{g:"f",tab:["n17"]}},mineur:{N:{g:"m",tab:["n3"]}},ministre:{N:{g:"m",tab:["n25"]}},minuit:{N:{g:"m",tab:["n3"]}},minuscule:{A:{tab:["n25"]}},minute:{N:{g:"f",tab:["n17"]}},miracle:{N:{g:"m",tab:["n3"]}},mirer:{V:{aux:["av"],tab:"v36"}},miroir:{N:{g:"m",tab:["n3"]}},"misérable":{A:{tab:["n25"]}},"misère":{N:{g:"f",tab:["n17"]}},missel:{N:{g:"m",tab:["n3"]}},mission:{N:{g:"f",tab:["n17"]}},missionnaire:{N:{g:"x",tab:["n25"]}},mobile:{A:{tab:["n25"]}},mobilier:{N:{g:"m",tab:["n3"]}},mode:{N:{g:"f",tab:["n17"]}},"modèle":{N:{g:"m",tab:["n3"]}},"modérer":{V:{aux:["av"],tab:"v28"}},moderne:{A:{tab:["n25"]}},modeste:{A:{tab:["n25"]}},modestie:{N:{g:"f",tab:["n17"]}},moelleux:{A:{tab:["n54"]}},moi:{Pro:{tab:["pn4"]}},"moi*refl":{Pro:{tab:["pn7"]}},"moi-même":{Pro:{tab:["pn8"]}},moindre:{A:{tab:["n25"]}},moine:{N:{g:"m",tab:["n3"]}},moineau:{N:{g:"m",tab:["n4"]}},moins:{Adv:{tab:["av"]}},mois:{N:{g:"m",tab:["n2"]}},moisson:{N:{g:"f",tab:["n17"]}},moissonneur:{N:{g:"m",tab:["n55"]}},"moitié":{N:{g:"f",tab:["n17"]}},moment:{N:{g:"m",tab:["n3"]}},mon:{D:{tab:["d5"]}},monde:{N:{g:"m",tab:["n3"]}},monnaie:{N:{g:"f",tab:["n17"]}},monotone:{A:{tab:["n25"]}},monseigneur:{N:{g:"m",tab:["n13"]}},monsieur:{N:{g:"m",tab:["n12"]}},monstre:{N:{g:"m",tab:["n3"]}},mont:{N:{g:"m",tab:["n3"]}},montagne:{N:{g:"f",tab:["n17"]}},montant:{N:{g:"m",tab:["n3"]}},monter:{V:{aux:["aê"],tab:"v36"}},montre:{N:{g:"f",tab:["n17"]}},montrer:{V:{aux:["av"],tab:"v36"}},monument:{N:{g:"m",tab:["n3"]}},moquer:{V:{aux:["av"],tab:"v36"}},moqueur:{A:{tab:["n55"]}},moral:{N:{g:"m",tab:["n5"]}},morale:{N:{g:"f",tab:["n17"]}},morceau:{N:{g:"m",tab:["n4"]}},mordre:{V:{aux:["av"],tab:"v85"}},morne:{A:{tab:["n25"]}},mort:{N:{g:"m",tab:["n28"]}},mortel:{A:{tab:["n48"]}},mot:{N:{g:"m",tab:["n3"]}},moteur:{N:{g:"m",tab:["n3"]}},motif:{N:{g:"m",tab:["n3"]}},moto:{N:{g:"f",tab:["n17"]}},mou:{A:{tab:["n109"]}},mouche:{N:{g:"f",tab:["n17"]}},mouchoir:{N:{g:"m",tab:["n3"]}},moudre:{V:{aux:["av"],tab:"v92"}},mouiller:{V:{aux:["av"],tab:"v36"}},moulin:{N:{g:"m",tab:["n3"]}},mourir:{V:{aux:["êt"],tab:"v55"}},mousse:{N:{g:"f",tab:["n17"]}},moustache:{N:{g:"f",tab:["n17"]}},mouton:{N:{g:"m",tab:["n3"]}},mouvement:{N:{g:"m",tab:["n3"]}},mouvoir:{V:{aux:["av"],tab:"v65"}},moyen:{A:{tab:["n49"]}},moyenne:{N:{g:"f",tab:["n17"]}},muet:{A:{tab:["n51"]}},muguet:{N:{g:"m",tab:["n3"]}},multicolore:{A:{tab:["n25"]}},multiple:{A:{tab:["n25"]}},multitude:{N:{g:"f",tab:["n17"]}},munir:{V:{aux:["av"],tab:"v58"}},"mûr":{A:{tab:["n28"]}},mur:{N:{g:"m",tab:["n3"]}},muraille:{N:{g:"f",tab:["n17"]}},"mûrir":{V:{aux:["av"],tab:"v58"}},murmure:{N:{g:"m",tab:["n3"]}},murmurer:{V:{aux:["av"],tab:"v36"}},muscle:{N:{g:"m",tab:["n3"]}},museau:{N:{g:"m",tab:["n4"]}},"musée":{N:{g:"m",tab:["n3"]}},musicien:{A:{tab:["n49"]}},musique:{N:{g:"f",tab:["n17"]}},myosotis:{N:{g:"m",tab:["n2"]}},"mystère":{N:{g:"m",tab:["n3"]}},"mystérieux":{A:{tab:["n54"]}},nager:{V:{aux:["av"],tab:"v3"}},naissance:{N:{g:"f",tab:["n17"]}},"naître":{V:{aux:["êt"],tab:"v104"}},nappe:{N:{g:"f",tab:["n17"]}},narcisse:{N:{g:"m",tab:["n3"]}},natal:{A:{tab:["n28"]}},nation:{N:{g:"f",tab:["n17"]}},national:{A:{tab:["n47"]}},nature:{N:{g:"f",tab:["n17"]}},naturel:{A:{tab:["n48"]}},naturellement:{Adv:{tab:["av"]}},naufrage:{N:{g:"m",tab:["n3"]}},navire:{N:{g:"m",tab:["n3"]}},ne:{Adv:{tab:["ave"]}},"néanmoins":{Adv:{tab:["av"]}},"nécessaire":{A:{tab:["n25"]}},"négligence":{N:{g:"f",tab:["n17"]}},"négligent":{A:{tab:["n28"]}},"négliger":{V:{aux:["av"],tab:"v3"}},"négociant":{N:{g:"m",tab:["n28"]}},"nègre":{A:{tab:["n25"]}},neige:{N:{g:"f",tab:["n17"]}},neiger:{V:{aux:["av"],tab:"v3"}},nerveux:{A:{tab:["n54"]}},net:{A:{tab:["n51"]}},nettoyer:{V:{aux:["av"],tab:"v5"}},neuf:{A:{tab:["n46"]}},neveu:{N:{g:"m",tab:["n4"]}},nez:{N:{g:"m",tab:["n2"]}},niche:{N:{g:"f",tab:["n17"]}},nid:{N:{g:"m",tab:["n3"]}},"nièce":{N:{g:"f",tab:["n17"]}},niveau:{N:{g:"m",tab:["n4"]}},noble:{A:{tab:["n25"]}},noeud:{N:{g:"m",tab:["n3"]}},noir:{A:{tab:["n28"]}},noircir:{V:{aux:["av"],tab:"v58"}},noisette:{N:{g:"f",tab:["n17"]}},noix:{N:{g:"f",tab:["n16"]}},nom:{N:{g:"m",tab:["n3"]}},nombre:{N:{g:"m",tab:["n3"]}},nombreux:{A:{tab:["n54"]}},nommer:{V:{aux:["av"],tab:"v36"}},non:{Adv:{tab:["av"]}},nord:{N:{g:"m",tab:["n35"]}},normal:{A:{tab:["n47"]}},notaire:{N:{g:"m",tab:["n3"]}},note:{N:{g:"f",tab:["n17"]}},"nôtre":{Pro:{tab:["pn13"]}},notre:{D:{tab:["d6"]}},nourrir:{V:{aux:["av"],tab:"v58"}},nourriture:{N:{g:"f",tab:["n17"]}},nouveau:{A:{pos:"pre",tab:["n108"]}},novembre:{N:{g:"m",tab:["n3"]}},noyer:{V:{aux:["av"],tab:"v5"}},nu:{A:{tab:["n28"]}},nuage:{N:{g:"m",tab:["n3"]}},nuisible:{A:{tab:["n25"]}},nuit:{N:{g:"f",tab:["n17"]}},nullement:{Adv:{tab:["av"]}},"numéro":{N:{g:"m",tab:["n3"]}},"obéir":{V:{aux:["av"],tab:"v58"}},"obéissant":{A:{tab:["n28"]}},objet:{N:{g:"m",tab:["n3"]}},obligeance:{N:{g:"f",tab:["n17"]}},obliger:{V:{aux:["av"],tab:"v3"}},obscur:{A:{tab:["n28"]}},obscurcir:{V:{aux:["av"],tab:"v58"}},"obscurité":{N:{g:"f",tab:["n17"]}},observation:{N:{g:"f",tab:["n17"]}},observer:{V:{aux:["av"],tab:"v36"}},obstacle:{N:{g:"m",tab:["n3"]}},obtenir:{V:{aux:["av"],tab:"v52"}},occasion:{N:{g:"f",tab:["n17"]}},occasionner:{V:{aux:["av"],tab:"v36"}},occupation:{N:{g:"f",tab:["n17"]}},occuper:{V:{aux:["av"],tab:"v36"}},"océan":{N:{g:"m",tab:["n3"]}},octobre:{N:{g:"m",tab:["n3"]}},odeur:{N:{g:"f",tab:["n17"]}},odorant:{A:{tab:["n28"]}},oeil:{N:{g:"m",tab:["n14"]}},oeillet:{N:{g:"m",tab:["n3"]}},oeuf:{N:{g:"m",tab:["n3"]}},oeuvre:{N:{g:"f",tab:["n17"]}},offenser:{V:{aux:["av"],tab:"v36"}},office:{N:{g:"m",tab:["n3"]}},officier:{N:{g:"m",tab:["n3"]}},offre:{N:{g:"f",tab:["n17"]}},offrir:{V:{aux:["av"],tab:"v44"}},oie:{N:{g:"f",tab:["n17"]}},oiseau:{N:{g:"m",tab:["n4"]}},oisillon:{N:{g:"m",tab:["n3"]}},ombrage:{N:{g:"m",tab:["n3"]}},ombre:{N:{g:"f",tab:["n17"]}},on:{Pro:{tab:["pn0"]}},oncle:{N:{g:"m",tab:["n3"]}},onde:{N:{g:"f",tab:["n17"]}},onduler:{V:{aux:["av"],tab:"v36"}},"opération":{N:{g:"f",tab:["n17"]}},"opérer":{V:{aux:["av"],tab:"v28"}},opinion:{N:{g:"f",tab:["n17"]}},opposer:{V:{aux:["av"],tab:"v36"}},or:{N:{g:"m",tab:["n3"]}},orage:{N:{g:"m",tab:["n3"]}},orange:{A:{tab:["n24"]},N:{g:"f",tab:["n17"]}},oranger:{N:{g:"m",tab:["n3"]}},ordinaire:{A:{tab:["n25"]}},ordinairement:{Adv:{tab:["av"]}},ordonner:{V:{aux:["av"],tab:"v36"}},ordre:{N:{g:"m",tab:["n3"]}},"orée":{N:{g:"f",tab:["n17"]}},oreille:{N:{g:"f",tab:["n17"]}},organiser:{V:{aux:["av"],tab:"v36"}},orgue:{N:{g:"m",tab:["n3"]}},orgueil:{N:{g:"m",tab:["n3"]}},orgueilleux:{A:{tab:["n54"]}},ornement:{N:{g:"m",tab:["n3"]}},orner:{V:{aux:["av"],tab:"v36"}},orphelin:{N:{g:"m",tab:["n28"]}},os:{N:{g:"m",tab:["n2"]}},oser:{V:{aux:["av"],tab:"v36"}},osier:{N:{g:"m",tab:["n3"]}},"ôter":{V:{aux:["av"],tab:"v36"}},"où":{Pro:{tab:["pn27"]}},ouate:{N:{g:"f",tab:["n17"]}},oui:{Adv:{h:1,tab:["av"]}},ours:{N:{g:"m",tab:["n2"]}},outil:{N:{g:"m",tab:["n3"]}},ouverture:{N:{g:"f",tab:["n17"]}},ouvrage:{N:{g:"m",tab:["n3"]}},ouvrier:{N:{g:"m",tab:["n39"]}},ouvrir:{V:{aux:["av"],tab:"v44"}},page:{N:{g:"f",tab:["n17"]}},paille:{N:{g:"f",tab:["n17"]}},pain:{N:{g:"m",tab:["n3"]}},paire:{N:{g:"f",tab:["n17"]}},paisible:{A:{tab:["n25"]}},paisiblement:{Adv:{tab:["av"]}},"paître":{V:{aux:["tdir"],tab:"v102"}},paix:{N:{g:"f",tab:["n16"]}},palais:{N:{g:"m",tab:["n2"]}},"pâle":{A:{tab:["n25"]}},paletot:{N:{g:"m",tab:["n3"]}},"pâlir":{V:{aux:["av"],tab:"v58"}},pan:{N:{g:"m",tab:["n3"]}},panache:{N:{g:"m",tab:["n3"]}},panier:{N:{g:"m",tab:["n3"]}},panorama:{N:{g:"m",tab:["n3"]}},pantalon:{N:{g:"m",tab:["n3"]}},papa:{N:{g:"m",tab:["n3"]}},papier:{N:{g:"m",tab:["n3"]}},papillon:{N:{g:"m",tab:["n3"]}},"pâquerette":{N:{g:"f",tab:["n17"]}},paquet:{N:{g:"m",tab:["n3"]}},par:{P:{tab:["pp"]}},paradis:{N:{g:"m",tab:["n2"]}},parages:{N:{g:"m",tab:["n1"]}},"paraître":{V:{aux:["aê"],tab:"v101"}},parapluie:{N:{g:"m",tab:["n3"]}},parc:{N:{g:"m",tab:["n3"]}},parcourir:{V:{aux:["av"],tab:"v57"}},parcours:{N:{g:"m",tab:["n2"]}},pardessus:{N:{g:"m",tab:["n2"]}},pardon:{N:{g:"m",tab:["n3"]}},pardonner:{V:{aux:["av"],tab:"v36"}},pareil:{A:{tab:["n48"]}},parent:{N:{g:"m",tab:["n3"]}},"parenthèse":{N:{g:"f",tab:["n17"]}},parer:{V:{aux:["av"],tab:"v36"}},paresse:{N:{g:"f",tab:["n17"]}},paresseux:{A:{tab:["n54"]}},parfait:{A:{tab:["n28"]}},parfaitement:{Adv:{tab:["av"]}},parfois:{Adv:{tab:["av"]}},parfum:{N:{g:"m",tab:["n3"]}},parfumer:{V:{aux:["av"],tab:"v36"}},parler:{V:{aux:["av"],tab:"v36"}},parmi:{P:{tab:["pp"]}},paroisse:{N:{g:"f",tab:["n17"]}},parole:{N:{g:"f",tab:["n17"]}},parquet:{N:{g:"m",tab:["n3"]}},parrain:{N:{g:"m",tab:["n3"]}},parsemer:{V:{aux:["av"],tab:"v13"}},part:{N:{g:"f",tab:["n17"]}},partager:{V:{aux:["av"],tab:"v3"}},parterre:{N:{g:"m",tab:["n3"]}},parti:{N:{g:"m",tab:["n3"]}},participer:{V:{aux:["av"],tab:"v36"}},particulier:{A:{tab:["n39"]}},"particulièrement":{Adv:{tab:["av"]}},partie:{N:{g:"f",tab:["n17"]}},partir:{V:{aux:["êt"],tab:"v46"}},partout:{Adv:{tab:["av"]}},parure:{N:{g:"f",tab:["n17"]}},parvenir:{V:{aux:["êt"],tab:"v52"}},pas:{Adv:{tab:["av"]},N:{g:"m",tab:["n2"]}},passage:{N:{g:"m",tab:["n3"]}},passager:{N:{g:"m",tab:["n39"]}},passant:{N:{g:"m",tab:["n28"]}},"passé":{N:{g:"m",tab:["n3"]}},passer:{V:{aux:["aê"],tab:"v36"}},passion:{N:{g:"f",tab:["n17"]}},"pâte":{N:{g:"f",tab:["n17"]}},paternel:{A:{tab:["n48"]}},patience:{N:{g:"f",tab:["n17"]}},patin:{N:{g:"m",tab:["n3"]}},"pâtisserie":{N:{g:"f",tab:["n17"]}},"pâtre":{N:{g:"m",tab:["n3"]}},patrie:{N:{g:"f",tab:["n17"]}},patron:{N:{g:"m",tab:["n49"]}},patronage:{N:{g:"m",tab:["n3"]}},patte:{N:{g:"f",tab:["n17"]}},"pâture":{N:{g:"f",tab:["n17"]}},pauvre:{A:{tab:["n25"]}},"pavé":{N:{g:"m",tab:["n3"]}},payer:{V:{aux:["av"],tab:"v4"}},pays:{N:{g:"m",tab:["n2"]}},paysage:{N:{g:"m",tab:["n3"]}},paysan:{N:{g:"m",tab:["n49"]}},peau:{N:{g:"f",tab:["n18"]}},"péché":{N:{g:"m",tab:["n3"]}},"pêche":{N:{g:"f",tab:["n17"]}},"pécher":{V:{aux:["av"],tab:"v27"}},"pêcher":{V:{aux:["av"],tab:"v36"}},"pêcheur":{N:{g:"m",tab:["n55"]}},peindre:{V:{aux:["av"],tab:"v97"}},peine:{N:{g:"f",tab:["n17"]}},peiner:{V:{aux:["av"],tab:"v36"}},peintre:{N:{g:"m",tab:["n3"]}},peinture:{N:{g:"f",tab:["n17"]}},pelage:{N:{g:"m",tab:["n3"]}},pelouse:{N:{g:"f",tab:["n17"]}},pencher:{V:{aux:["av"],tab:"v36"}},pendant:{P:{tab:["pp"]}},pendre:{V:{aux:["av"],tab:"v85"}},pendule:{N:{g:"m",tab:["n3"]}},"pénétrer":{V:{aux:["av"],tab:"v17"}},"pénible":{A:{tab:["n25"]}},"péniblement":{Adv:{tab:["av"]}},"pénitence":{N:{g:"f",tab:["n17"]}},"pensée":{N:{g:"f",tab:["n17"]}},penser:{V:{aux:["av"],tab:"v36"}},pension:{N:{g:"f",tab:["n17"]}},pensionnaire:{N:{g:"x",tab:["n25"]}},pensionnat:{N:{g:"m",tab:["n3"]}},percer:{V:{aux:["av"],tab:"v0"}},perche:{N:{g:"f",tab:["n17"]}},percher:{V:{aux:["av"],tab:"v36"}},perdre:{V:{aux:["av"],tab:"v85"}},perdrix:{N:{g:"f",tab:["n16"]}},"père":{N:{g:"m",tab:["n3"]}},perfection:{N:{g:"f",tab:["n17"]}},"péril":{N:{g:"m",tab:["n3"]}},"périlleux":{A:{tab:["n54"]}},"période":{N:{g:"f",tab:["n17"]}},"périr":{V:{aux:["av"],tab:"v58"}},perle:{N:{g:"f",tab:["n17"]}},permettre:{V:{aux:["av"],tab:"v89"}},permission:{N:{g:"f",tab:["n17"]}},"perpétuel":{A:{tab:["n48"]}},perroquet:{N:{g:"m",tab:["n3"]}},"persévérer":{V:{aux:["av"],tab:"v28"}},personnage:{N:{g:"m",tab:["n3"]}},personne:{N:{g:"f",tab:["n17"]}},personnel:{A:{tab:["n48"]}},perspective:{N:{g:"f",tab:["n17"]}},persuader:{V:{aux:["av"],tab:"v36"}},perte:{N:{g:"f",tab:["n17"]}},peser:{V:{aux:["av"],tab:"v26"}},"pétale":{N:{g:"m",tab:["n3"]}},petit:{A:{pos:"pre",tab:["n28"]},N:{g:"m",tab:["n28"]}},"pétrir":{V:{aux:["av"],tab:"v58"}},peu:{Adv:{tab:["av"]}},peuple:{N:{g:"m",tab:["n3"]}},peupler:{V:{aux:["av"],tab:"v36"}},peuplier:{N:{g:"m",tab:["n3"]}},peur:{N:{g:"f",tab:["n17"]}},"peut-être":{Adv:{tab:["av"]}},photographie:{N:{g:"f",tab:["n17"]}},photographier:{V:{aux:["av"],tab:"v36"}},phrase:{N:{g:"f",tab:["n17"]}},physique:{A:{tab:["n25"]}},piano:{N:{g:"m",tab:["n3"]}},pic:{N:{g:"m",tab:["n3"]}},pie:{N:{g:"f",tab:["n17"]}},"pièce":{N:{g:"f",tab:["n17"]}},pied:{N:{g:"m",tab:["n3"]}},pierre:{N:{g:"f",tab:["n17"]}},"piété":{N:{g:"f",tab:["n17"]}},pieux:{A:{tab:["n54"]}},pigeon:{N:{g:"m",tab:["n3"]}},pin:{N:{g:"m",tab:["n3"]}},pinceau:{N:{g:"m",tab:["n4"]}},pinson:{N:{g:"m",tab:["n3"]}},pipe:{N:{g:"f",tab:["n17"]}},piquer:{V:{aux:["av"],tab:"v36"}},pire:{A:{tab:["n25"]}},pis:{Adv:{tab:["av"]}},piste:{N:{g:"f",tab:["n17"]}},"pitié":{N:{g:"f",tab:["n17"]}},pittoresque:{A:{tab:["n25"]}},place:{N:{g:"f",tab:["n17"]}},placer:{V:{aux:["av"],tab:"v0"}},plafond:{N:{g:"m",tab:["n3"]}},plage:{N:{g:"f",tab:["n17"]}},plaie:{N:{g:"f",tab:["n17"]}},plaindre:{V:{aux:["av"],tab:"v97"}},plaine:{N:{g:"f",tab:["n17"]}},plainte:{N:{g:"f",tab:["n17"]}},plaintif:{A:{tab:["n46"]}},plaire:{V:{aux:["av"],tab:"v123"}},plaisir:{N:{g:"m",tab:["n3"]}},plan:{N:{g:"m",tab:["n3"]}},planche:{N:{g:"f",tab:["n17"]}},plancher:{N:{g:"m",tab:["n3"]}},plane:{N:{g:"f",tab:["n17"]}},planer:{V:{aux:["av"],tab:"v36"}},plante:{N:{g:"f",tab:["n17"]}},planter:{V:{aux:["av"],tab:"v36"}},plaque:{N:{g:"f",tab:["n17"]}},plat:{N:{g:"m",tab:["n3"]}},plate:{N:{g:"f",tab:["n17"]}},plateau:{N:{g:"m",tab:["n4"]}},plein:{A:{tab:["n28"]}},pleur:{N:{g:"m",tab:["n3"]}},pleurer:{V:{aux:["av"],tab:"v36"}},pleuvoir:{V:{aux:["av"],tab:"v79"}},pli:{N:{g:"m",tab:["n3"]}},plier:{V:{aux:["av"],tab:"v36"}},plomb:{N:{g:"m",tab:["n3"]}},plonger:{V:{aux:["av"],tab:"v3"}},pluie:{N:{g:"f",tab:["n17"]}},plumage:{N:{g:"m",tab:["n3"]}},plume:{N:{g:"f",tab:["n17"]}},plumier:{N:{g:"m",tab:["n3"]}},plus:{Adv:{tab:["av"]}},"plutôt":{Adv:{tab:["av"]}},poche:{N:{g:"f",tab:["n17"]}},"poêle":{N:{g:"f",tab:["n17"]}},"poésie":{N:{g:"f",tab:["n17"]}},"poète":{N:{g:"m",tab:["n103"]}},poids:{N:{g:"m",tab:["n2"]}},"poignée":{N:{g:"f",tab:["n17"]}},poil:{N:{g:"m",tab:["n3"]}},poing:{N:{g:"m",tab:["n3"]}},point:{N:{g:"m",tab:["n3"]}},pointe:{N:{g:"f",tab:["n17"]}},pointu:{A:{tab:["n28"]}},poire:{N:{g:"f",tab:["n17"]}},poireau:{N:{g:"m",tab:["n4"]}},poirier:{N:{g:"m",tab:["n3"]}},pois:{N:{g:"m",tab:["n2"]}},poisson:{N:{g:"m",tab:["n3"]}},poitrine:{N:{g:"f",tab:["n17"]}},poli:{A:{tab:["n28"]}},police:{N:{g:"f",tab:["n17"]}},politesse:{N:{g:"f",tab:["n17"]}},politique:{N:{g:"f",tab:["n17"]}},pomme:{N:{g:"f",tab:["n17"]}},pommier:{N:{g:"m",tab:["n3"]}},pompe:{N:{g:"f",tab:["n17"]}},pompier:{N:{g:"m",tab:["n3"]}},pondre:{V:{aux:["av"],tab:"v85"}},pont:{N:{g:"m",tab:["n3"]}},porc:{N:{g:"m",tab:["n3"]}},port:{N:{g:"m",tab:["n3"]}},porte:{N:{g:"f",tab:["n17"]}},"porte-plume":{N:{g:"m",tab:["n2"]}},"portée":{N:{g:"f",tab:["n17"]}},portefeuille:{N:{g:"m",tab:["n3"]}},porter:{V:{aux:["av"],tab:"v36"}},porteur:{N:{g:"m",tab:["n55"]}},"portière":{N:{g:"f",tab:["n17"]}},portrait:{N:{g:"m",tab:["n3"]}},poser:{V:{aux:["av"],tab:"v36"}},position:{N:{g:"f",tab:["n17"]}},"posséder":{V:{aux:["av"],tab:"v30"}},possession:{N:{g:"f",tab:["n17"]}},possible:{A:{tab:["n25"]}},postal:{A:{tab:["n47"]}},poste:{N:{g:"m",tab:["n3"]}},pot:{N:{g:"m",tab:["n3"]}},potager:{N:{g:"m",tab:["n3"]}},poteau:{N:{g:"m",tab:["n4"]}},poudre:{N:{g:"f",tab:["n17"]}},poulailler:{N:{g:"m",tab:["n3"]}},poulain:{N:{g:"m",tab:["n3"]}},poule:{N:{g:"f",tab:["n17"]}},poulet:{N:{g:"m",tab:["n3"]}},poumon:{N:{g:"m",tab:["n3"]}},"poupée":{N:{g:"f",tab:["n17"]}},pour:{P:{tab:["pp"]}},pourpre:{A:{tab:["n25"]}},pourrir:{V:{aux:["aê"],tab:"v58"}},poursuite:{N:{g:"f",tab:["n17"]}},poursuivre:{V:{aux:["av"],tab:"v99"}},pourtant:{Adv:{tab:["av"]}},pourvoir:{V:{aux:["av"],tab:"v82"}},pousser:{V:{aux:["av"],tab:"v36"}},"poussière":{N:{g:"f",tab:["n17"]}},poussin:{N:{g:"m",tab:["n3"]}},poutre:{N:{g:"f",tab:["n17"]}},pouvoir:{V:{aux:["av"],tab:"v71"}},prairie:{N:{g:"f",tab:["n17"]}},pratique:{A:{tab:["n25"]}},pratiquer:{V:{aux:["av"],tab:"v36"}},"pré":{N:{g:"m",tab:["n3"]}},"préau":{N:{g:"m",tab:["n4"]}},"précaution":{N:{g:"f",tab:["n17"]}},"précédent":{A:{tab:["n28"]}},"précéder":{V:{aux:["av"],tab:"v30"}},"prêcher":{V:{aux:["av"],tab:"v36"}},"précieux":{A:{tab:["n54"]}},"précipiter":{V:{aux:["av"],tab:"v36"}},"précisément":{Adv:{tab:["av"]}},"préférence":{N:{g:"f",tab:["n17"]}},"préférer":{V:{aux:["av"],tab:"v28"}},premier:{A:{pos:"pre",tab:["n39"]}},prendre:{V:{aux:["av"],tab:"v90"}},"préparatif":{N:{g:"m",tab:["n3"]}},"préparation":{N:{g:"f",tab:["n17"]}},"préparer":{V:{aux:["av"],tab:"v36"}},"près":{Adv:{tab:["av"]}},"présence":{N:{g:"f",tab:["n17"]}},"présent":{A:{tab:["n28"]}},"présenter":{V:{aux:["av"],tab:"v36"}},"préserver":{V:{aux:["av"],tab:"v36"}},"président":{N:{g:"m",tab:["n28"]}},"présidente":{N:{g:"f",tab:["n17"]}},presque:{Adv:{tab:["av"]}},presser:{V:{aux:["av"],tab:"v36"}},"prêt":{A:{tab:["n28"]}},"prétendre":{V:{aux:["av"],tab:"v85"}},"prêter":{V:{aux:["av"],tab:"v36"}},"prêtre":{N:{g:"m",tab:["n3"]}},preuve:{N:{g:"f",tab:["n17"]}},"prévenir":{V:{aux:["av"],tab:"v52"}},"prévoir":{V:{aux:["av"],tab:"v73"}},prier:{V:{aux:["av"],tab:"v36"}},"prière":{N:{g:"f",tab:["n17"]}},primaire:{A:{tab:["n25"]}},prime:{N:{g:"f",tab:["n17"]}},"primevère":{N:{g:"f",tab:["n17"]}},prince:{N:{g:"m",tab:["n3"]}},princesse:{N:{g:"f",tab:["n17"]}},principal:{A:{tab:["n47"]}},principalement:{Adv:{tab:["av"]}},principe:{N:{g:"m",tab:["n3"]}},printanier:{A:{tab:["n39"]}},printemps:{N:{g:"m",tab:["n2"]}},prise:{N:{g:"f",tab:["n17"]}},prison:{N:{g:"f",tab:["n17"]}},prisonnier:{N:{g:"m",tab:["n39"]}},privation:{N:{g:"f",tab:["n17"]}},priver:{V:{aux:["av"],tab:"v36"}},prix:{N:{g:"m",tab:["n2"]}},probablement:{Adv:{tab:["av"]}},"problème":{N:{g:"m",tab:["n3"]}},"procéder":{V:{aux:["av"],tab:"v30"}},procession:{N:{g:"f",tab:["n17"]}},prochain:{A:{tab:["n28"]}},proche:{A:{tab:["n25"]}},proclamer:{V:{aux:["av"],tab:"v36"}},procurer:{V:{aux:["av"],tab:"v36"}},procureur:{N:{g:"m",tab:["n3"]}},prodigieux:{A:{tab:["n54"]}},prodiguer:{V:{aux:["av"],tab:"v36"}},production:{N:{g:"f",tab:["n17"]}},produire:{V:{aux:["av"],tab:"v113"}},produit:{N:{g:"m",tab:["n3"]}},professeur:{N:{g:"m",tab:["n3"]}},profession:{N:{g:"f",tab:["n17"]}},profit:{N:{g:"m",tab:["n3"]}},profiter:{V:{aux:["av"],tab:"v36"}},profond:{A:{tab:["n28"]}},"profondément":{Adv:{tab:["av"]}},profondeur:{N:{g:"f",tab:["n17"]}},programme:{N:{g:"m",tab:["n3"]}},"progrès":{N:{g:"m",tab:["n2"]}},proie:{N:{g:"f",tab:["n17"]}},projet:{N:{g:"m",tab:["n3"]}},projeter:{V:{aux:["av"],tab:"v10"}},prolonger:{V:{aux:["av"],tab:"v3"}},promenade:{N:{g:"f",tab:["n17"]}},promener:{V:{aux:["av"],tab:"v24"}},promeneur:{N:{g:"m",tab:["n55"]}},promesse:{N:{g:"f",tab:["n17"]}},promettre:{V:{aux:["av"],tab:"v89"}},promotion:{N:{g:"f",tab:["n17"]}},prompt:{A:{tab:["n28"]}},prononcer:{V:{aux:["av"],tab:"v0"}},propice:{A:{tab:["n25"]}},propos:{N:{g:"m",tab:["n2"]}},proposer:{V:{aux:["av"],tab:"v36"}},proposition:{N:{g:"f",tab:["n17"]}},propre:{A:{tab:["n25"]}},proprement:{Adv:{tab:["av"]}},"propreté":{N:{g:"f",tab:["n17"]}},"propriétaire":{N:{g:"x",tab:["n25"]}},"propriété":{N:{g:"f",tab:["n17"]}},"prospérité":{N:{g:"f",tab:["n17"]}},protecteur:{N:{g:"m",tab:["n56"]}},protection:{N:{g:"f",tab:["n17"]}},"protéger":{V:{aux:["av"],tab:"v35"}},prouver:{V:{aux:["av"],tab:"v36"}},provenir:{V:{aux:["êt"],tab:"v52"}},proverbe:{N:{g:"m",tab:["n3"]}},providence:{N:{g:"f",tab:["n17"]}},provision:{N:{g:"f",tab:["n17"]}},provoquer:{V:{aux:["av"],tab:"v36"}},prudence:{N:{g:"f",tab:["n17"]}},prudent:{A:{tab:["n28"]}},public:{A:{tab:["n60"]}},puis:{Adv:{tab:["av"]}},puissance:{N:{g:"f",tab:["n17"]}},puissant:{A:{tab:["n28"]}},puits:{N:{g:"m",tab:["n2"]}},punir:{V:{aux:["av"],tab:"v58"}},punition:{N:{g:"f",tab:["n17"]}},pupitre:{N:{g:"m",tab:["n3"]}},pur:{A:{tab:["n28"]}},purifier:{V:{aux:["av"],tab:"v36"}},quai:{N:{g:"m",tab:["n3"]}},"qualité":{N:{g:"f",tab:["n17"]}},"quantité":{N:{g:"f",tab:["n17"]}},quart:{N:{g:"m",tab:["n3"]}},quartier:{N:{g:"m",tab:["n3"]}},que:{Pro:{tab:["pn31"]}},quelconque:{A:{tab:["n25"]}},quelquefois:{Adv:{tab:["av"]}},question:{N:{g:"f",tab:["n17"]}},queue:{N:{g:"f",tab:["n17"]}},qui:{Pro:{tab:["pn30"]}},quinzaine:{N:{g:"f",tab:["n17"]}},quitter:{V:{aux:["av"],tab:"v36"}},quoi:{Pro:{g:"n",tab:["pn29"]}},quotidien:{A:{tab:["n49"]}},raccommoder:{V:{aux:["av"],tab:"v36"}},raccourcir:{V:{aux:["av"],tab:"v58"}},race:{N:{g:"f",tab:["n17"]}},racine:{N:{g:"f",tab:["n17"]}},raconter:{V:{aux:["av"],tab:"v36"}},radieux:{A:{tab:["n54"]}},"rafraîchir":{V:{aux:["av"],tab:"v58"}},rage:{N:{g:"f",tab:["n17"]}},raide:{A:{tab:["n25"]}},raisin:{N:{g:"m",tab:["n3"]}},raison:{N:{g:"f",tab:["n17"]}},raisonnable:{A:{tab:["n25"]}},ralentir:{V:{aux:["av"],tab:"v58"}},ramage:{N:{g:"m",tab:["n3"]}},ramasser:{V:{aux:["av"],tab:"v36"}},rame:{N:{g:"f",tab:["n17"]}},rameau:{N:{g:"m",tab:["n4"]}},ramener:{V:{aux:["av"],tab:"v24"}},"randonnée":{N:{g:"f",tab:["n17"]}},rang:{N:{g:"m",tab:["n3"]}},"rangée":{N:{g:"f",tab:["n17"]}},ranger:{V:{aux:["av"],tab:"v3"}},ranimer:{V:{aux:["av"],tab:"v36"}},rapide:{A:{tab:["n25"]}},rapidement:{Adv:{tab:["av"]}},"rapidité":{N:{g:"f",tab:["n17"]}},"rapiécer":{V:{aux:["av"],tab:"v0"}},rappeler:{V:{aux:["av"],tab:"v7"}},rapport:{N:{g:"m",tab:["n3"]}},rapporter:{V:{aux:["av"],tab:"v36"}},rapprocher:{V:{aux:["av"],tab:"v36"}},rare:{A:{tab:["n25"]}},rarement:{Adv:{tab:["av"]}},raser:{V:{aux:["av"],tab:"v36"}},rassembler:{V:{aux:["av"],tab:"v36"}},rassurer:{V:{aux:["av"],tab:"v36"}},rat:{N:{g:"m",tab:["n3"]}},rater:{V:{aux:["av"],tab:"v36"}},rattraper:{V:{aux:["av"],tab:"v36"}},ravage:{N:{g:"m",tab:["n3"]}},ravin:{N:{g:"m",tab:["n3"]}},ravir:{V:{aux:["av"],tab:"v58"}},ravissant:{A:{tab:["n28"]}},rayon:{N:{g:"m",tab:["n3"]}},rayonner:{V:{aux:["av"],tab:"v36"}},"réaliser":{V:{aux:["av"],tab:"v36"}},"réalité":{N:{g:"f",tab:["n17"]}},"réception":{N:{g:"f",tab:["n17"]}},recevoir:{V:{aux:["av"],tab:"v63"}},"réchauffer":{V:{aux:["av"],tab:"v36"}},recherche:{N:{g:"f",tab:["n17"]}},rechercher:{V:{aux:["av"],tab:"v36"}},"récit":{N:{g:"m",tab:["n3"]}},"réciter":{V:{aux:["av"],tab:"v36"}},"réclamer":{V:{aux:["av"],tab:"v36"}},"récolte":{N:{g:"f",tab:["n17"]}},"récolter":{V:{aux:["av"],tab:"v36"}},recommandation:{N:{g:"f",tab:["n17"]}},recommander:{V:{aux:["av"],tab:"v36"}},recommencer:{V:{aux:["av"],tab:"v0"}},"récompense":{N:{g:"f",tab:["n17"]}},"récompenser":{V:{aux:["av"],tab:"v36"}},reconduire:{V:{aux:["av"],tab:"v113"}},"réconforter":{V:{aux:["av"],tab:"v36"}},reconnaissance:{N:{g:"f",tab:["n17"]}},reconnaissant:{A:{tab:["n28"]}},"reconnaître":{V:{aux:["av"],tab:"v101"}},recourir:{V:{aux:["av"],tab:"v57"}},recours:{N:{g:"m",tab:["n2"]}},recouvrir:{V:{aux:["av"],tab:"v44"}},"récréation":{N:{g:"f",tab:["n17"]}},recueillir:{V:{aux:["av"],tab:"v51"}},reculer:{V:{aux:["av"],tab:"v36"}},"rédaction":{N:{g:"f",tab:["n17"]}},redescendre:{V:{aux:["aê"],tab:"v85"}},redevenir:{V:{aux:["êt"],tab:"v52"}},redire:{V:{aux:["av"],tab:"v117"}},redoubler:{V:{aux:["av"],tab:"v36"}},redoutable:{A:{tab:["n25"]}},redouter:{V:{aux:["av"],tab:"v36"}},redresser:{V:{aux:["av"],tab:"v36"}},"réduire":{V:{aux:["av"],tab:"v113"}},"réel":{A:{tab:["n48"]}},"réellement":{Adv:{tab:["av"]}},refaire:{V:{aux:["av"],tab:"v124"}},"réfectoire":{N:{g:"m",tab:["n3"]}},refermer:{V:{aux:["av"],tab:"v36"}},"réfléchir":{V:{aux:["av"],tab:"v58"}},reflet:{N:{g:"m",tab:["n3"]}},"refléter":{V:{aux:["av"],tab:"v22"}},"réflexion":{N:{g:"f",tab:["n17"]}},"réformer":{V:{aux:["av"],tab:"v36"}},refrain:{N:{g:"m",tab:["n3"]}},refroidir:{V:{aux:["av"],tab:"v58"}},refuge:{N:{g:"m",tab:["n3"]}},"réfugier":{V:{aux:["êt"],tab:"v36"}},refuser:{V:{aux:["av"],tab:"v36"}},regagner:{V:{aux:["av"],tab:"v36"}},"régaler":{V:{aux:["av"],tab:"v36"}},regard:{N:{g:"m",tab:["n3"]}},regarder:{V:{aux:["av"],tab:"v36"}},"régime":{N:{g:"m",tab:["n3"]}},"régiment":{N:{g:"m",tab:["n3"]}},"région":{N:{g:"f",tab:["n17"]}},"règle":{N:{g:"f",tab:["n17"]}},"régler":{V:{aux:["av"],tab:"v18"}},"règne":{N:{g:"m",tab:["n3"]}},"régner":{V:{aux:["av"],tab:"v19"}},regret:{N:{g:"m",tab:["n3"]}},regretter:{V:{aux:["av"],tab:"v36"}},"régulier":{A:{tab:["n39"]}},"régulièrement":{Adv:{tab:["av"]}},reine:{N:{g:"f",tab:["n17"]}},rejeter:{V:{aux:["av"],tab:"v10"}},rejoindre:{V:{aux:["av"],tab:"v97"}},"réjouir":{V:{aux:["av"],tab:"v58"}},relatif:{A:{tab:["n46"]}},relation:{N:{g:"f",tab:["n17"]}},relativement:{Adv:{tab:["av"]}},relever:{V:{aux:["av"],tab:"v25"}},religieux:{A:{tab:["n54"]}},religion:{N:{g:"f",tab:["n17"]}},relire:{V:{aux:["av"],tab:"v120"}},remarquable:{A:{tab:["n25"]}},remarque:{N:{g:"f",tab:["n17"]}},remarquer:{V:{aux:["av"],tab:"v36"}},"remède":{N:{g:"m",tab:["n3"]}},remerciement:{N:{g:"m",tab:["n3"]}},remercier:{V:{aux:["av"],tab:"v36"}},remettre:{V:{aux:["av"],tab:"v89"}},remise:{N:{g:"f",tab:["n17"]}},remonter:{V:{aux:["av"],tab:"v36"}},remords:{N:{g:"m",tab:["n2"]}},remplacer:{V:{aux:["av"],tab:"v0"}},remplir:{V:{aux:["av"],tab:"v58"}},remporter:{V:{aux:["av"],tab:"v36"}},remuer:{V:{aux:["av"],tab:"v36"}},"renaître":{V:{aux:["intr"],tab:"v105"}},renard:{N:{g:"m",tab:["n3"]}},rencontre:{N:{g:"f",tab:["n17"]}},rencontrer:{V:{aux:["av"],tab:"v36"}},"rendez-vous":{N:{g:"m",tab:["n2"]}},rendre:{V:{aux:["av"],tab:"v85"}},renfermer:{V:{aux:["av"],tab:"v36"}},renoncer:{V:{aux:["av"],tab:"v0"}},renoncule:{N:{g:"f",tab:["n17"]}},renouveau:{N:{g:"m",tab:["n4"]}},renouveler:{V:{aux:["av"],tab:"v7"}},renouvellement:{N:{g:"m",tab:["n3"]}},renseignement:{N:{g:"m",tab:["n3"]}},renseigner:{V:{aux:["av"],tab:"v36"}},"rentrée":{N:{g:"f",tab:["n17"]}},rentrer:{V:{aux:["aê"],tab:"v36"}},renverser:{V:{aux:["av"],tab:"v36"}},renvoyer:{V:{aux:["av"],tab:"v134"}},"répandre":{V:{aux:["av"],tab:"v85"}},"reparaître":{V:{aux:["av"],tab:"v101"}},"réparer":{V:{aux:["av"],tab:"v36"}},"répartir":{V:{aux:["av"],tab:"v58"}},repas:{N:{g:"m",tab:["n2"]}},repasser:{V:{aux:["av"],tab:"v36"}},repentir:{V:{aux:["êt"],tab:"v46"}},"répéter":{V:{aux:["av"],tab:"v22"}},replier:{V:{aux:["av"],tab:"v36"}},"répondre":{V:{aux:["av"],tab:"v85"}},"réponse":{N:{g:"f",tab:["n17"]}},reporter:{V:{aux:["av"],tab:"v36"}},repos:{N:{g:"m",tab:["n2"]}},reposer:{V:{aux:["av"],tab:"v36"}},repousser:{V:{aux:["av"],tab:"v36"}},reprendre:{V:{aux:["av"],tab:"v90"}},"représentant":{N:{g:"m",tab:["n3"]}},"représentation":{N:{g:"f",tab:["n17"]}},"représenter":{V:{aux:["av"],tab:"v36"}},reprise:{N:{g:"f",tab:["n17"]}},reproche:{N:{g:"m",tab:["n3"]}},reprocher:{V:{aux:["av"],tab:"v36"}},"réserve":{N:{g:"f",tab:["n17"]}},"réserver":{V:{aux:["av"],tab:"v36"}},"résigner":{V:{aux:["av"],tab:"v36"}},"résistance":{N:{g:"f",tab:["n17"]}},"résister":{V:{aux:["av"],tab:"v36"}},"résolution":{N:{g:"f",tab:["n17"]}},"résonner":{V:{aux:["av"],tab:"v36"}},"résoudre":{V:{aux:["av"],tab:"v94"}},respect:{N:{g:"m",tab:["n3"]}},respecter:{V:{aux:["av"],tab:"v36"}},respectueux:{A:{tab:["n54"]}},respiration:{N:{g:"f",tab:["n17"]}},respirer:{V:{aux:["av"],tab:"v36"}},resplendir:{V:{aux:["av"],tab:"v58"}},ressembler:{V:{aux:["av"],tab:"v36"}},ressentir:{V:{aux:["av"],tab:"v46"}},ressort:{N:{g:"m",tab:["n3"]}},ressource:{N:{g:"f",tab:["n17"]}},reste:{N:{g:"m",tab:["n3"]}},rester:{V:{aux:["êt"],tab:"v36"}},"résultat":{N:{g:"m",tab:["n3"]}},"rétablir":{V:{aux:["av"],tab:"v58"}},retard:{N:{g:"m",tab:["n3"]}},retardataire:{N:{g:"m",tab:["n25"]}},retenir:{V:{aux:["av"],tab:"v52"}},retentir:{V:{aux:["av"],tab:"v58"}},retirer:{V:{aux:["av"],tab:"v36"}},retomber:{V:{aux:["av"],tab:"v36"}},retour:{N:{g:"m",tab:["n3"]}},retourner:{V:{aux:["êt"],tab:"v36"}},retraite:{N:{g:"f",tab:["n17"]}},retrousser:{V:{aux:["av"],tab:"v36"}},retrouver:{V:{aux:["av"],tab:"v36"}},"réunion":{N:{g:"f",tab:["n17"]}},"réunir":{V:{aux:["av"],tab:"v58"}},"réussir":{V:{aux:["av"],tab:"v58"}},"rêve":{N:{g:"m",tab:["n3"]}},"réveil":{N:{g:"m",tab:["n3"]}},"réveiller":{V:{aux:["av"],tab:"v36"}},"révéler":{V:{aux:["av"],tab:"v16"}},revenir:{V:{aux:["êt"],tab:"v52"}},"rêver":{V:{aux:["av"],tab:"v36"}},reverdir:{V:{aux:["av"],tab:"v58"}},"revêtir":{V:{aux:["av"],tab:"v56"}},revivre:{V:{aux:["av"],tab:"v100"}},revoir:{V:{aux:["av"],tab:"v72"}},revue:{N:{g:"f",tab:["n17"]}},"rez-de-chaussée":{N:{g:"m",tab:["n2"]}},rhume:{N:{g:"m",tab:["n3"]}},riant:{A:{tab:["n28"]}},riche:{A:{tab:["n25"]}},richesse:{N:{g:"f",tab:["n17"]}},rideau:{N:{g:"m",tab:["n4"]}},rider:{V:{aux:["av"],tab:"v36"}},rien:{Adv:{tab:["av"]}},rigole:{N:{g:"f",tab:["n17"]}},rigoureux:{A:{tab:["n54"]}},rire:{V:{aux:["av"],tab:"v107"}},risque:{N:{g:"m",tab:["n3"]}},risquer:{V:{aux:["av"],tab:"v36"}},rive:{N:{g:"f",tab:["n17"]}},"rivière":{N:{g:"f",tab:["n17"]}},riz:{N:{g:"m",tab:["n2"]}},robe:{N:{g:"f",tab:["n17"]}},robuste:{A:{tab:["n25"]}},rocher:{N:{g:"m",tab:["n3"]}},"rôder":{V:{aux:["av"],tab:"v36"}},roi:{N:{g:"m",tab:["n3"]}},"rôle":{N:{g:"m",tab:["n3"]}},romain:{A:{tab:["n28"]}},rompre:{V:{aux:["av"],tab:"v91"}},ronce:{N:{g:"f",tab:["n17"]}},rond:{A:{tab:["n28"]}},ronde:{N:{g:"f",tab:["n17"]}},ronger:{V:{aux:["av"],tab:"v3"}},ronronner:{V:{aux:["av"],tab:"v36"}},rose:{N:{g:"f",tab:["n17"]}},roseau:{N:{g:"m",tab:["n4"]}},"rosée":{N:{g:"f",tab:["n17"]}},rosier:{N:{g:"m",tab:["n3"]}},rossignol:{N:{g:"m",tab:["n3"]}},"rôti":{N:{g:"m",tab:["n3"]}},roue:{N:{g:"f",tab:["n17"]}},rouge:{A:{tab:["n25"]}},rougir:{V:{aux:["av"],tab:"v58"}},rouiller:{V:{aux:["av"],tab:"v36"}},rouleau:{N:{g:"m",tab:["n4"]}},rouler:{V:{aux:["av"],tab:"v36"}},roulotte:{N:{g:"f",tab:["n17"]}},route:{N:{g:"f",tab:["n17"]}},roux:{A:{tab:["n53"]}},royal:{A:{tab:["n47"]}},royaume:{N:{g:"m",tab:["n3"]}},ruban:{N:{g:"m",tab:["n3"]}},ruche:{N:{g:"f",tab:["n17"]}},rude:{A:{tab:["n25"]}},rue:{N:{g:"f",tab:["n17"]}},ruelle:{N:{g:"f",tab:["n17"]}},ruine:{N:{g:"m",tab:["n17"]}},ruiner:{V:{aux:["av"],tab:"v36"}},ruisseau:{N:{g:"m",tab:["n4"]}},ruisseler:{V:{aux:["av"],tab:"v7"}},ruisselet:{N:{g:"m",tab:["n3"]}},"rusé":{A:{tab:["n28"]}},rustique:{A:{tab:["n25"]}},sable:{N:{g:"m",tab:["n3"]}},sabot:{N:{g:"m",tab:["n3"]}},sabre:{N:{g:"m",tab:["n3"]}},sac:{N:{g:"m",tab:["n3"]}},sacoche:{N:{g:"f",tab:["n17"]}},"sacré":{A:{tab:["n28"]}},sacrement:{N:{g:"m",tab:["n3"]}},sacrifice:{N:{g:"m",tab:["n3"]}},sacrifier:{V:{aux:["av"],tab:"v36"}},sage:{A:{tab:["n25"]}},sagement:{Adv:{tab:["av"]}},sagesse:{N:{g:"f",tab:["n17"]}},saigner:{V:{aux:["av"],tab:"v36"}},sain:{A:{tab:["n28"]}},saint:{A:{tab:["n28"]}},saisir:{V:{aux:["av"],tab:"v58"}},saison:{N:{g:"f",tab:["n17"]}},salade:{N:{g:"f",tab:["n17"]}},salaire:{N:{g:"m",tab:["n3"]}},sale:{A:{tab:["n25"]}},salir:{V:{aux:["av"],tab:"v58"}},salle:{N:{g:"f",tab:["n17"]}},salon:{N:{g:"m",tab:["n3"]}},saluer:{V:{aux:["av"],tab:"v36"}},salut:{N:{g:"m",tab:["n3"]}},salutation:{N:{g:"f",tab:["n17"]}},samedi:{N:{g:"m",tab:["n3"]}},sang:{N:{g:"m",tab:["n3"]}},sanglot:{N:{g:"m",tab:["n3"]}},sans:{P:{tab:["pp"]}},"santé":{N:{g:"f",tab:["n17"]}},sapin:{N:{g:"m",tab:["n3"]}},satin:{N:{g:"m",tab:["n3"]}},satisfaction:{N:{g:"f",tab:["n17"]}},satisfaire:{V:{aux:["av"],tab:"v124"}},satisfait:{A:{tab:["n28"]}},sauce:{N:{g:"f",tab:["n17"]}},sauf:{P:{tab:["pp"]}},saule:{N:{g:"m",tab:["n3"]}},saut:{N:{g:"m",tab:["n3"]}},sauter:{V:{aux:["av"],tab:"v36"}},sautiller:{V:{aux:["av"],tab:"v36"}},sauvage:{A:{tab:["n25"]}},sauver:{V:{aux:["av"],tab:"v36"}},savant:{N:{g:"m",tab:["n28"]}},savoir:{V:{aux:["av"],tab:"v67"}},savon:{N:{g:"m",tab:["n3"]}},savourer:{V:{aux:["av"],tab:"v36"}},savoureux:{A:{tab:["n54"]}},"scène":{N:{g:"f",tab:["n17"]}},science:{N:{g:"f",tab:["n17"]}},scier:{V:{aux:["av"],tab:"v36"}},scintiller:{V:{aux:["av"],tab:"v36"}},scolaire:{A:{tab:["n25"]}},"séance":{N:{g:"f",tab:["n17"]}},seau:{N:{g:"m",tab:["n4"]}},sec:{A:{tab:["n37"]}},"sécher":{V:{aux:["av"],tab:"v27"}},seconde:{N:{g:"f",tab:["n17"]}},secouer:{V:{aux:["av"],tab:"v36"}},secourir:{V:{aux:["av"],tab:"v57"}},secours:{N:{g:"m",tab:["n2"]}},secret:{N:{g:"m",tab:["n3"]}},"sécurité":{N:{g:"f",tab:["n17"]}},seigneur:{N:{g:"m",tab:["n3"]}},sein:{N:{g:"m",tab:["n3"]}},"séjour":{N:{g:"m",tab:["n3"]}},sel:{N:{g:"m",tab:["n3"]}},selon:{P:{tab:["pp"]}},semaine:{N:{g:"f",tab:["n17"]}},semblable:{A:{tab:["n25"]}},sembler:{V:{aux:["av"],tab:"v36"}},semer:{V:{aux:["av"],tab:"v13"}},"séminaire":{N:{g:"m",tab:["n3"]}},sens:{N:{g:"m",tab:["n2"]}},sensible:{A:{tab:["n25"]}},sentier:{N:{g:"m",tab:["n3"]}},sentiment:{N:{g:"m",tab:["n3"]}},sentir:{V:{aux:["av"],tab:"v46"}},"séparer":{V:{aux:["av"],tab:"v36"}},septembre:{N:{g:"m",tab:["n3"]}},serein:{A:{tab:["n28"]}},sergent:{N:{g:"m",tab:["n3"]}},"série":{N:{g:"f",tab:["n17"]}},"sérieusement":{Adv:{tab:["av"]}},"sérieux":{A:{tab:["n54"]}},sermon:{N:{g:"m",tab:["n3"]}},serrer:{V:{aux:["av"],tab:"v36"}},serrure:{N:{g:"f",tab:["n17"]}},servante:{N:{g:"f",tab:["n17"]}},serviable:{A:{tab:["n25"]}},service:{N:{g:"m",tab:["n3"]}},serviette:{N:{g:"f",tab:["n17"]}},servir:{V:{aux:["av"],tab:"v47"}},serviteur:{N:{g:"m",tab:["n3"]}},seuil:{N:{g:"m",tab:["n3"]}},seul:{A:{tab:["n28"]}},seulement:{Adv:{tab:["av"]}},"sève":{N:{g:"f",tab:["n17"]}},"sévère":{A:{tab:["n25"]}},"sévèrement":{Adv:{tab:["av"]}},"sévir":{V:{aux:["av"],tab:"v58"}},"siècle":{N:{g:"m",tab:["n3"]}},"siège":{N:{g:"m",tab:["n3"]}},sifflement:{N:{g:"m",tab:["n3"]}},siffler:{V:{aux:["av"],tab:"v36"}},sifflet:{N:{g:"m",tab:["n3"]}},signal:{N:{g:"m",tab:["n5"]}},signaler:{V:{aux:["av"],tab:"v36"}},signature:{N:{g:"f",tab:["n17"]}},signe:{N:{g:"m",tab:["n3"]}},signer:{V:{aux:["av"],tab:"v36"}},signifier:{V:{aux:["av"],tab:"v36"}},silence:{N:{g:"m",tab:["n3"]}},silencieusement:{Adv:{tab:["av"]}},silencieux:{A:{tab:["n54"]}},sillon:{N:{g:"m",tab:["n3"]}},sillonner:{V:{aux:["av"],tab:"v36"}},simple:{A:{tab:["n25"]}},simplement:{Adv:{tab:["av"]}},"simplicité":{N:{g:"f",tab:["n17"]}},"sincère":{A:{tab:["n25"]}},"sincèrement":{Adv:{tab:["av"]}},"sincérité":{N:{g:"f",tab:["n17"]}},singe:{N:{g:"m",tab:["n3"]}},singulier:{A:{tab:["n39"]}},sinistre:{A:{tab:["n25"]}},"sirène":{N:{g:"f",tab:["n17"]}},"sitôt":{Adv:{tab:["av"]}},situation:{N:{g:"f",tab:["n17"]}},situer:{V:{aux:["av"],tab:"v36"}},sobre:{A:{tab:["n25"]}},"société":{N:{g:"f",tab:["n17"]}},soeur:{N:{g:"f",tab:["n17"]}},"soi-même":{Pro:{tab:["pn9"]}},soie:{N:{g:"f",tab:["n17"]}},soif:{N:{g:"f",tab:["n17"]}},soigner:{V:{aux:["av"],tab:"v36"}},soigneusement:{Adv:{tab:["av"]}},soigneux:{A:{tab:["n54"]}},soin:{N:{g:"m",tab:["n3"]}},soir:{N:{g:"m",tab:["n3"]}},"soirée":{N:{g:"f",tab:["n17"]}},sol:{N:{g:"m",tab:["n3"]}},soldat:{N:{g:"m",tab:["n3"]}},soleil:{N:{g:"m",tab:["n3"]}},solennel:{A:{tab:["n48"]}},solide:{A:{tab:["n25"]}},solitaire:{A:{tab:["n25"]}},solitude:{N:{g:"f",tab:["n17"]}},solliciter:{V:{aux:["av"],tab:"v36"}},sombre:{A:{tab:["n25"]}},somme:{N:{g:"f",tab:["n17"]}},sommeil:{N:{g:"m",tab:["n3"]}},sommet:{N:{g:"m",tab:["n3"]}},son:{N:{g:"m",tab:["n3"]}},songer:{V:{aux:["av"],tab:"v3"}},sonner:{V:{aux:["aê"],tab:"v36"}},sonnette:{N:{g:"f",tab:["n17"]}},sonore:{A:{tab:["n25"]}},sort:{N:{g:"m",tab:["n3"]}},sorte:{N:{g:"f",tab:["n17"]}},sortie:{N:{g:"f",tab:["n17"]}},sortir:{V:{aux:["aê"],tab:"v46"}},sot:{A:{tab:["n51"]}},sou:{N:{g:"m",tab:["n3"]}},souci:{N:{g:"m",tab:["n3"]}},soudain:{Adv:{tab:["av"]}},souffle:{N:{g:"m",tab:["n3"]}},souffler:{V:{aux:["av"],tab:"v36"}},souffrance:{N:{g:"f",tab:["n17"]}},souffrir:{V:{aux:["av"],tab:"v44"}},souhait:{N:{g:"m",tab:["n3"]}},souhaiter:{V:{aux:["av"],tab:"v36"}},souiller:{V:{aux:["av"],tab:"v36"}},soulagement:{N:{g:"m",tab:["n3"]}},soulager:{V:{aux:["av"],tab:"v3"}},soulever:{V:{aux:["av"],tab:"v25"}},soulier:{N:{g:"m",tab:["n3"]}},soumettre:{V:{aux:["av"],tab:"v89"}},"soupçonner":{V:{aux:["av"],tab:"v36"}},soupe:{N:{g:"f",tab:["n17"]}},souper:{V:{aux:["av"],tab:"v36"}},soupir:{N:{g:"m",tab:["n3"]}},soupirer:{V:{aux:["av"],tab:"v36"}},souple:{A:{tab:["n25"]}},source:{N:{g:"f",tab:["n17"]}},sourd:{A:{tab:["n28"]}},souriant:{A:{tab:["n28"]}},sourire:{V:{aux:["av"],tab:"v107"}},souris:{N:{g:"f",tab:["n16"]}},sous:{P:{tab:["pp"]}},soutenir:{V:{aux:["av"],tab:"v52"}},souterrain:{A:{tab:["n28"]}},soutien:{N:{g:"m",tab:["n3"]}},souvenir:{N:{g:"m",tab:["n3"]}},souvent:{Adv:{tab:["av"]}},souverain:{N:{g:"m",tab:["n28"]}},soyeux:{A:{tab:["n54"]}},spacieux:{A:{tab:["n54"]}},"spécial":{A:{tab:["n47"]}},"spécialement":{Adv:{tab:["av"]}},spectacle:{N:{g:"m",tab:["n3"]}},spectateur:{N:{g:"m",tab:["n56"]}},splendeur:{N:{g:"f",tab:["n17"]}},splendide:{A:{tab:["n25"]}},sport:{N:{g:"m",tab:["n3"]}},station:{N:{g:"f",tab:["n17"]}},stationner:{V:{aux:["aê"],tab:"v36"}},statue:{N:{g:"f",tab:["n17"]}},studieux:{A:{tab:["n54"]}},"stupéfaction":{N:{g:"f",tab:["n17"]}},style:{N:{g:"m",tab:["n3"]}},suave:{A:{tab:["n25"]}},subir:{V:{aux:["av"],tab:"v58"}},subitement:{Adv:{tab:["av"]}},sublime:{A:{tab:["n25"]}},suc:{N:{g:"m",tab:["n3"]}},"succéder":{V:{aux:["av"],tab:"v30"}},"succès":{N:{g:"m",tab:["n2"]}},successivement:{Adv:{tab:["av"]}},succulent:{A:{tab:["n28"]}},sucer:{V:{aux:["av"],tab:"v0"}},sucre:{N:{g:"m",tab:["n3"]}},sud:{N:{g:"m",tab:["n35"]}},sueur:{N:{g:"f",tab:["n17"]}},suffire:{V:{aux:["av"],tab:"v116"}},suffisamment:{Adv:{tab:["av"]}},suffisant:{A:{tab:["n28"]}},suite:{N:{g:"f",tab:["n17"]}},suivant:{A:{tab:["n28"]}},suivre:{V:{aux:["av"],tab:"v99"}},sujet:{N:{g:"m",tab:["n3"]}},superbe:{A:{tab:["n25"]}},"supérieur":{A:{tab:["n28"]}},supplier:{V:{aux:["av"],tab:"v36"}},supporter:{V:{aux:["av"],tab:"v36"}},supposer:{V:{aux:["av"],tab:"v36"}},"suprême":{A:{tab:["n25"]}},sur:{P:{tab:["pp"]}},"sûr":{A:{tab:["n28"]}},"sûrement":{Adv:{tab:["av"]}},surface:{N:{g:"f",tab:["n17"]}},surgir:{V:{aux:["av"],tab:"v58"}},surmonter:{V:{aux:["av"],tab:"v36"}},surprendre:{V:{aux:["av"],tab:"v90"}},surprise:{N:{g:"f",tab:["n17"]}},sursaut:{N:{g:"m",tab:["n3"]}},sursauter:{V:{aux:["av"],tab:"v36"}},surtout:{Adv:{tab:["av"]}},surveiller:{V:{aux:["av"],tab:"v36"}},survenir:{V:{aux:["êt"],tab:"v52"}},suspect:{N:{g:"m",tab:["n28"]}},suspendre:{V:{aux:["av"],tab:"v85"}},symbole:{N:{g:"m",tab:["n3"]}},sympathie:{N:{g:"f",tab:["n17"]}},tabac:{N:{g:"m",tab:["n3"]}},table:{N:{g:"f",tab:["n17"]}},tableau:{N:{g:"m",tab:["n4"]}},tablier:{N:{g:"m",tab:["n3"]}},"tâche":{N:{g:"f",tab:["n17"]}},tache:{N:{g:"f",tab:["n17"]}},"tâcher":{V:{aux:["av"],tab:"v36"}},tacher:{V:{aux:["av"],tab:"v36"}},tacheter:{V:{aux:["av"],tab:"v10"}},taille:{N:{g:"f",tab:["n17"]}},tailler:{V:{aux:["av"],tab:"v36"}},tailleur:{N:{g:"m",tab:["n3"]}},taillis:{N:{g:"m",tab:["n2"]}},taire:{V:{aux:["av"],tab:"v122"}},talent:{N:{g:"m",tab:["n3"]}},talus:{N:{g:"m",tab:["n2"]}},tambour:{N:{g:"m",tab:["n3"]}},tant:{Adv:{tab:["av"]}},tante:{N:{g:"f",tab:["n17"]}},"tantôt":{Adv:{tab:["av"]}},tapage:{N:{g:"m",tab:["n3"]}},taper:{V:{aux:["av"],tab:"v36"}},tapis:{N:{g:"m",tab:["n2"]}},tapisser:{V:{aux:["av"],tab:"v36"}},taquiner:{V:{aux:["av"],tab:"v36"}},tard:{Adv:{tab:["av"]}},tarder:{V:{aux:["av"],tab:"v36"}},tarte:{N:{g:"f",tab:["n17"]}},tartine:{N:{g:"f",tab:["n17"]}},tas:{N:{g:"m",tab:["n2"]}},tasse:{N:{g:"f",tab:["n17"]}},teinte:{N:{g:"f",tab:["n17"]}},"télégramme":{N:{g:"m",tab:["n3"]}},"téléphone":{N:{g:"m",tab:["n3"]}},"téléphoner":{V:{aux:["av"],tab:"v36"}},tellement:{Adv:{tab:["av"]}},"témoignage":{N:{g:"m",tab:["n3"]}},"témoigner":{V:{aux:["av"],tab:"v36"}},"témoin":{N:{g:"m",tab:["n3"]}},"température":{N:{g:"f",tab:["n17"]}},"tempête":{N:{g:"f",tab:["n17"]}},temps:{N:{g:"m",tab:["n2"]}},tendre:{A:{tab:["n25"]}},tendrement:{Adv:{tab:["av"]}},tendresse:{N:{g:"f",tab:["n17"]}},"ténèbres":{N:{g:"f",tab:["n15"]}},tenir:{V:{aux:["av"],tab:"v52"}},tentation:{N:{g:"f",tab:["n17"]}},tente:{N:{g:"f",tab:["n17"]}},tenter:{V:{aux:["av"],tab:"v36"}},tenue:{N:{g:"f",tab:["n17"]}},terme:{N:{g:"m",tab:["n3"]}},terminer:{V:{aux:["av"],tab:"v36"}},terrain:{N:{g:"m",tab:["n3"]}},terrasse:{N:{g:"f",tab:["n17"]}},terre:{N:{g:"f",tab:["n17"]}},terrestre:{A:{tab:["n25"]}},terreur:{N:{g:"f",tab:["n17"]}},terrible:{A:{tab:["n25"]}},terrier:{N:{g:"m",tab:["n3"]}},"tête":{N:{g:"f",tab:["n17"]}},"thé":{N:{g:"m",tab:["n3"]}},"théâtre":{N:{g:"m",tab:["n3"]}},"tiède":{A:{tab:["n25"]}},tige:{N:{g:"f",tab:["n17"]}},tigre:{N:{g:"m",tab:["n52"]}},tilleul:{N:{g:"m",tab:["n3"]}},timbre:{N:{g:"m",tab:["n3"]}},timide:{A:{tab:["n25"]}},tinter:{V:{aux:["av"],tab:"v36"}},tirelire:{N:{g:"f",tab:["n17"]}},tirer:{V:{aux:["av"],tab:"v36"}},tiroir:{N:{g:"m",tab:["n3"]}},tissu:{N:{g:"m",tab:["n3"]}},titre:{N:{g:"m",tab:["n3"]}},toile:{N:{g:"f",tab:["n17"]}},toilette:{N:{g:"f",tab:["n17"]}},toit:{N:{g:"m",tab:["n3"]}},tombe:{N:{g:"f",tab:["n17"]}},tombeau:{N:{g:"m",tab:["n4"]}},tomber:{V:{aux:["êt"],tab:"v36"}},ton:{N:{g:"m",tab:["n3"]}},tonneau:{N:{g:"m",tab:["n4"]}},tonnerre:{N:{g:"m",tab:["n3"]}},tordre:{V:{aux:["av"],tab:"v85"}},torrent:{N:{g:"m",tab:["n3"]}},tort:{N:{g:"m",tab:["n3"]}},tortue:{N:{g:"f",tab:["n17"]}},"tôt":{Adv:{tab:["av"]}},toucher:{V:{aux:["av"],tab:"v36"}},touffe:{N:{g:"f",tab:["n17"]}},touffu:{A:{tab:["n28"]}},toujours:{Adv:{tab:["av"]}},tour:{N:{g:"m",tab:["n3"]}},tourbillon:{N:{g:"m",tab:["n3"]}},tourbillonner:{V:{aux:["av"],tab:"v36"}},tourment:{N:{g:"m",tab:["n3"]}},tourmenter:{V:{aux:["av"],tab:"v36"}},tournant:{N:{g:"m",tab:["n3"]}},"tournée":{N:{g:"f",tab:["n17"]}},tourner:{V:{aux:["aê"],tab:"v36"}},tournoyer:{V:{aux:["av"],tab:"v5"}},toutefois:{Adv:{tab:["av"]}},toux:{N:{g:"f",tab:["n16"]}},trace:{N:{g:"f",tab:["n17"]}},tracer:{V:{aux:["av"],tab:"v0"}},train:{N:{g:"m",tab:["n3"]}},"traîneau":{N:{g:"m",tab:["n4"]}},"traîner":{V:{aux:["av"],tab:"v36"}},trait:{N:{g:"m",tab:["n3"]}},traitement:{N:{g:"m",tab:["n3"]}},traiter:{V:{aux:["av"],tab:"v36"}},trajet:{N:{g:"m",tab:["n3"]}},tram:{N:{g:"m",tab:["n3"]}},tramway:{N:{g:"m",tab:["n3"]}},tranche:{N:{g:"f",tab:["n17"]}},trancher:{V:{aux:["av"],tab:"v36"}},tranquille:{A:{tab:["n25"]}},tranquillement:{Adv:{tab:["av"]}},transformation:{N:{g:"f",tab:["n17"]}},transformer:{V:{aux:["av"],tab:"v36"}},transmettre:{V:{aux:["av"],tab:"v89"}},transparent:{A:{tab:["n28"]}},transport:{N:{g:"m",tab:["n3"]}},transporter:{V:{aux:["av"],tab:"v36"}},travail:{N:{g:"m",tab:["n6"]}},travailler:{V:{aux:["av"],tab:"v36"}},travailleur:{N:{g:"m",tab:["n55"]}},travailleuse:{N:{g:"f",tab:["n17"]}},travers:{N:{g:"m",tab:["n2"]}},traverser:{V:{aux:["av"],tab:"v36"}},trembler:{V:{aux:["av"],tab:"v36"}},tremper:{V:{aux:["av"],tab:"v36"}},"très":{Adv:{tab:["av"]}},"trésor":{N:{g:"m",tab:["n3"]}},tressaillir:{V:{aux:["av"],tab:"v49"}},tribunal:{N:{g:"m",tab:["n5"]}},tricolore:{A:{tab:["n25"]}},tricot:{N:{g:"m",tab:["n3"]}},tricoter:{V:{aux:["av"],tab:"v36"}},trimestre:{N:{g:"m",tab:["n3"]}},triomphe:{N:{g:"m",tab:["n3"]}},triompher:{V:{aux:["av"],tab:"v36"}},triste:{A:{tab:["n25"]}},tristement:{Adv:{tab:["av"]}},tristesse:{N:{g:"f",tab:["n17"]}},tromper:{V:{aux:["av"],tab:"v36"}},trompette:{N:{g:"f",tab:["n17"]}},tronc:{N:{g:"m",tab:["n3"]}},trop:{Adv:{tab:["av"]}},trotter:{V:{aux:["av"],tab:"v36"}},trottoir:{N:{g:"m",tab:["n3"]}},trou:{N:{g:"m",tab:["n3"]}},trouble:{N:{g:"m",tab:["n3"]}},troubler:{V:{aux:["av"],tab:"v36"}},trouer:{V:{aux:["av"],tab:"v36"}},troupe:{N:{g:"f",tab:["n17"]}},troupeau:{N:{g:"m",tab:["n4"]}},trouver:{V:{aux:["av"],tab:"v36"}},tuer:{V:{aux:["av"],tab:"v36"}},tuile:{N:{g:"f",tab:["n17"]}},tulipe:{N:{g:"f",tab:["n17"]}},tunnel:{N:{g:"m",tab:["n3"]}},tuque:{N:{g:"f",tab:["n17"]}},turbulent:{A:{tab:["n28"]}},tuyau:{N:{g:"m",tab:["n4"]}},type:{N:{g:"m",tab:["n3"]}},un:{D:{tab:["d4"]}},"un peu":{Adv:{tab:["av"]}},union:{N:{g:"f",tab:["n17"]}},unique:{A:{tab:["n25"]}},unir:{V:{aux:["av"],tab:"v58"}},univers:{N:{g:"m",tab:["n2"]}},universel:{A:{tab:["n48"]}},urgent:{A:{tab:["n28"]}},usage:{N:{g:"m",tab:["n3"]}},user:{V:{aux:["av"],tab:"v36"}},usine:{N:{g:"f",tab:["n17"]}},utile:{A:{tab:["n25"]}},utiliser:{V:{aux:["av"],tab:"v36"}},"utilité":{N:{g:"f",tab:["n17"]}},vache:{N:{g:"f",tab:["n17"]}},vagabond:{A:{tab:["n28"]}},vague:{N:{g:"f",tab:["n17"]}},vaillant:{A:{tab:["n28"]}},vain:{A:{tab:["n28"]}},vaincre:{V:{aux:["av"],tab:"v86"}},vainqueur:{N:{g:"m",tab:["n3"]}},vaisseau:{N:{tab:["n4"]}},vaisselle:{N:{g:"f",tab:["n17"]}},valet:{N:{g:"m",tab:["n3"]}},valeur:{N:{g:"f",tab:["n17"]}},valise:{N:{g:"f",tab:["n17"]}},"vallée":{N:{g:"f",tab:["n17"]}},valoir:{V:{aux:["av"],tab:"v69"}},vanter:{V:{aux:["av"],tab:"v36"}},vapeur:{N:{g:"f",tab:["n17"]}},varier:{V:{aux:["av"],tab:"v36"}},vase:{N:{g:"m",tab:["n3"]}},vaste:{A:{tab:["n25"]}},veau:{N:{g:"m",tab:["n4"]}},"végétal":{A:{tab:["n47"]}},"végétation":{N:{g:"f",tab:["n17"]}},"véhicule":{N:{g:"m",tab:["n3"]}},veille:{N:{g:"f",tab:["n17"]}},veiller:{V:{aux:["av"],tab:"v36"}},veine:{N:{g:"f",tab:["n17"]}},"vélo":{N:{g:"m",tab:["n3"]}},velours:{N:{g:"m",tab:["n2"]}},"velouté":{A:{tab:["n28"]}},vendeur:{N:{g:"m",tab:["n55"]}},vendre:{V:{aux:["av"],tab:"v85"}},vendredi:{N:{g:"m",tab:["n3"]}},"vénérer":{V:{aux:["av"],tab:"v28"}},venger:{V:{aux:["av"],tab:"v3"}},venir:{V:{aux:["êt"],tab:"v52"}},vent:{N:{g:"m",tab:["n3"]}},vente:{N:{g:"f",tab:["n17"]}},ventre:{N:{g:"m",tab:["n3"]}},"vêpres":{N:{g:"f",tab:["n15"]}},ver:{N:{g:"m",tab:["n3"]}},"verdâtre":{A:{tab:["n25"]}},verdoyant:{A:{tab:["n28"]}},verdure:{N:{g:"f",tab:["n17"]}},verger:{N:{g:"m",tab:["n3"]}},"vérifier":{V:{aux:["av"],tab:"v36"}},"véritable":{A:{tab:["n25"]}},"vérité":{N:{g:"f",tab:["n17"]}},vermeil:{N:{g:"m",tab:["n3"]}},vernir:{V:{aux:["av"],tab:"v58"}},verre:{N:{g:"m",tab:["n3"]}},vers:{P:{tab:["pp"]}},verser:{V:{aux:["av"],tab:"v36"}},vert:{A:{tab:["n28"]}},vertu:{N:{g:"f",tab:["n17"]}},veston:{N:{g:"m",tab:["n3"]}},"vêtement":{N:{g:"m",tab:["n3"]}},"vêtir":{V:{aux:["av"],tab:"v56"}},veuf:{A:{tab:["n46"]}},viande:{N:{g:"f",tab:["n17"]}},vicaire:{N:{g:"m",tab:["n3"]}},vice:{N:{g:"m",tab:["n3"]}},victime:{N:{g:"f",tab:["n17"]}},victoire:{N:{g:"f",tab:["n17"]}},vide:{A:{tab:["n25"]}},vider:{V:{aux:["av"],tab:"v36"}},vie:{N:{g:"f",tab:["n17"]}},vieillard:{N:{g:"m",tab:["n3"]}},vieillesse:{N:{g:"f",tab:["n17"]}},vierge:{A:{tab:["n25"]}},vieux:{A:{pos:"pre",tab:["n73"]}},vif:{A:{tab:["n46"]}},vigne:{N:{g:"f",tab:["n17"]}},vigoureux:{A:{tab:["n54"]}},vigueur:{N:{g:"f",tab:["n17"]}},vilain:{A:{tab:["n28"]}},villa:{N:{g:"f",tab:["n17"]}},village:{N:{g:"m",tab:["n3"]}},villageois:{N:{g:"m",tab:["n27"]}},ville:{N:{g:"f",tab:["n17"]}},vin:{N:{g:"m",tab:["n3"]}},violence:{N:{g:"f",tab:["n17"]}},violent:{A:{tab:["n28"]}},violet:{A:{tab:["n51"]}},violette:{N:{g:"f",tab:["n17"]}},visage:{N:{g:"m",tab:["n3"]}},viser:{V:{aux:["av"],tab:"v36"}},visible:{A:{tab:["n25"]}},visite:{N:{g:"f",tab:["n17"]}},visiter:{V:{aux:["av"],tab:"v36"}},visiteur:{N:{g:"m",tab:["n55"]}},vite:{Adv:{tab:["av"]}},vitesse:{N:{g:"f",tab:["n17"]}},vitre:{N:{g:"f",tab:["n17"]}},vitrine:{N:{g:"f",tab:["n17"]}},vivant:{A:{tab:["n28"]}},vivement:{Adv:{tab:["av"]}},vivre:{V:{aux:["av"],tab:"v100"}},voeu:{N:{g:"m",tab:["n4"]}},voie:{N:{g:"f",tab:["n17"]}},"voilà":{P:{tab:["pp"]}},voile:{N:{g:"f",tab:["n17"]}},voiler:{V:{aux:["av"],tab:"v36"}},voir:{V:{aux:["av"],tab:"v72"}},voisin:{N:{g:"m",tab:["n28"]}},voisinage:{N:{g:"m",tab:["n3"]}},voiture:{N:{g:"f",tab:["n17"]}},voix:{N:{g:"f",tab:["n16"]}},vol:{N:{g:"m",tab:["n3"]}},volaille:{N:{g:"f",tab:["n17"]}},"volée":{N:{g:"f",tab:["n17"]}},voler:{V:{aux:["av"],tab:"v36"}},volet:{N:{g:"m",tab:["n3"]}},voleur:{N:{g:"m",tab:["n55"]}},"volonté":{N:{g:"f",tab:["n17"]}},volontiers:{Adv:{tab:["av"]}},voltiger:{V:{aux:["av"],tab:"v3"}},volume:{N:{g:"m",tab:["n3"]}},vouloir:{V:{aux:["av"],tab:"v68"}},"voûte":{N:{g:"f",tab:["n17"]}},voyage:{N:{g:"m",tab:["n3"]}},voyager:{V:{aux:["av"],tab:"v3"}},voyageur:{N:{g:"m",tab:["n55"]}},vrai:{A:{tab:["n28"]}},vraiment:{Adv:{tab:["av"]}},vue:{N:{g:"f",tab:["n17"]}},vulgaire:{A:{tab:["n25"]}},wagon:{N:{g:"m",tab:["n3"]}},y:{Pro:{tab:["pn11"]}},"zèle":{N:{g:"m",tab:["n3"]}},"{":{Pc:{compl:"}",tab:["pc5"]}},"}":{Pc:{compl:"{",tab:["pc6"]}}},ruleFr={conjugation:{v0:{ending:"cer",t:{p:["ce","ces","ce","çons","cez","cent"],i:["çais","çais","çait","cions","ciez","çaient"],f:["cerai","ceras","cera","cerons","cerez","ceront"],ps:["çai","ças","ça","çâmes","çâtes","cèrent"],c:["cerais","cerais","cerait","cerions","ceriez","ceraient"],s:["ce","ces","ce","cions","ciez","cent"],si:["çasse","çasses","çât","çassions","çassiez","çassent"],ip:[null,"ce",null,"çons","cez",null],pr:"çant",pp:"cé",b:"cer"}},v1:{ending:"er",t:{p:["e","es","e","ons","ez","ent"],i:["ais","ais","ait","ons","ez","aient"],f:["erai","eras","era","erons","erez","eront"],ps:["ai","as","a","âmes","âtes","èrent"],c:["erais","erais","erait","erions","eriez","eraient"],s:["e","es","e","ions","iez","ent"],si:["asse","asses","ât","assions","assiez","assent"],ip:[null,"e",null,"ons","ez",null],pr:"ant",pp:"é",b:"er"}},v2:{ending:"ecer",t:{p:["ece","eces","ece","eçons","ecez","ecent"],i:["eçais","eçais","eçait","ecions","eciez","eçaient"],f:["ecerai","eceras","ecera","ecerons","ecerez","eceront"],ps:["eçai","eças","eça","eçâmes","eçâtes","ecèrent"],c:["ecerais","ecerais","ecerait","ecerions","eceriez","eceraient"],s:["ece","eces","ece","ecions","eciez","ecent"],si:["eçasse","eçasses","eçât","eçassions","eçassiez","eçassent"],ip:[null,"ece",null,"eçons","ecez",null],pr:"eçant",pp:"ecé",b:"ecer"}},v3:{ending:"ger",t:{p:["ge","ges","ge","geons","gez","gent"],i:["geais","geais","geait","gions","giez","geaient"],f:["gerai","geras","gera","gerons","gerez","geront"],ps:["geai","geas","gea","geâmes","geâtes","gèrent"],c:["gerais","gerais","gerait","gerions","geriez","geraient"],s:["ge","ges","ge","gions","giez","gent"],si:["geasse","geasses","geât","geassions","geassiez","geassent"],ip:[null,"ge",null,"geons","gez",null],pr:"geant",pp:"gé",b:"ger"}},v4:{ending:"yer",t:{p:["ie","ies","ie","yons","yez","ient"],i:["yais","yais","yait","yions","yiez","yaient"],f:["ierai","ieras","iera","ierons","ierez","ieront"],ps:["yai","yas","ya","yâmes","yâtes","yèrent"],c:["ierais","ierais","ierait","ierions","ieriez","ieraient"],s:["ie","ies","ie","yions","yiez","ient"],si:["yasse","yasses","yât","yassions","yassiez","yassent"],ip:[null,"ie",null,"yons","yez",null],pr:"yant",pp:"yé",b:"yer"}},v5:{ending:"yer",t:{p:["ie","ies","ie","yons","yez","ient"],i:["yais","yais","yait","yions","yiez","yaient"],f:["ierai","ieras","iera","ierons","ierez","ieront"],ps:["yai","yas","ya","yâmes","yâtes","yèrent"],c:["ierais","ierais","ierait","ierions","ieriez","ieraient"],s:["ie","ies","ie","yions","yiez","ient"],si:["yasse","yasses","yât","yassions","yassiez","yassent"],ip:[null,"ie",null,"yons","yez",null],pr:"yant",pp:"yé",b:"yer"}},v6:{ending:"yer",t:{p:["ye","yes","ye","yons","yez","yent"],i:["yais","yais","yait","yions","yiez","yaient"],f:["yerai","yeras","yera","yerons","yerez","yeront"],ps:["yai","yas","ya","yâmes","yâtes","yèrent"],c:["yerais","yerais","yerait","yerions","yeriez","yeraient"],s:["ye","yes","ye","yions","yiez","yent"],si:["yasse","yasses","yât","yassions","yassiez","yassent"],ip:[null,"ye",null,"yons","yez",null],pr:"yant",pp:"yé",b:"yer"}},v7:{ending:"eler",t:{p:["elle","elles","elle","elons","elez","ellent"],i:["elais","elais","elait","elions","eliez","elaient"],f:["ellerai","elleras","ellera","ellerons","ellerez","elleront"],ps:["elai","elas","ela","elâmes","elâtes","elèrent"],c:["ellerais","ellerais","ellerait","ellerions","elleriez","elleraient"],s:["elle","elles","elle","elions","eliez","ellent"],si:["elasse","elasses","elât","elassions","elassiez","elassent"],ip:[null,"elle",null,"elons","elez",null],pr:"elant",pp:"elé",b:"eler"}},v8:{ending:"eler",t:{p:["èle","èles","èle","elons","elez","èlent"],i:["elais","elais","elait","elions","eliez","elaient"],f:["èlerai","èleras","èlera","èlerons","èlerez","èleront"],ps:["elai","elas","ela","elâmes","elâtes","elèrent"],c:["èlerais","èlerais","èlerait","èlerions","èleriez","èleraient"],s:["èle","èles","èle","elions","eliez","èlent"],si:["elasse","elasses","elât","elassions","elassiez","elassent"],ip:[null,"èle",null,"elons","elez",null],pr:"elant",pp:"elé",b:"eler"}},v9:{ending:"eler",t:{p:["elle","elles","elle","elons","elez","ellent"],i:["elais","elais","elait","elions","eliez","elaient"],f:["ellerai","elleras","ellera","ellerons","ellerez","elleront"],ps:["elai","elas","ela","elâmes","elâtes","elèrent"],c:["ellerais","ellerais","ellerait","ellerions","elleriez","elleraient"],s:["elle","elles","elle","elions","eliez","ellent"],si:["elasse","elasses","elât","elassions","elassiez","elassent"],ip:[null,"elle",null,"elons","elez",null],pr:"elant",pp:"elé",b:"eler"}},v10:{ending:"eter",t:{p:["ette","ettes","ette","etons","etez","ettent"],i:["etais","etais","etait","etions","etiez","etaient"],f:["etterai","etteras","ettera","etterons","etterez","etteront"],ps:["etai","etas","eta","etâmes","etâtes","etèrent"],c:["etterais","etterais","etterait","etterions","etteriez","etteraient"],s:["ette","ettes","ette","etions","etiez","ettent"],si:["etasse","etasses","etât","etassions","etassiez","etassent"],ip:[null,"ette",null,"etons","etez",null],pr:"etant",pp:"eté",b:"eter"}},v11:{ending:"eter",t:{p:["ète","ètes","ète","etons","etez","ètent"],i:["etais","etais","etait","etions","etiez","etaient"],f:["èterai","èteras","ètera","èterons","èterez","èteront"],ps:["etai","etas","eta","etâmes","etâtes","etèrent"],c:["èterais","èterais","èterait","èterions","èteriez","èteraient"],s:["ète","ètes","ète","etions","etiez","ètent"],si:["etasse","etasses","etât","etassions","etassiez","etassent"],ip:[null,"ète",null,"etons","etez",null],pr:"etant",pp:"eté",b:"eter"}},v12:{ending:"éter",t:{p:["ète","ètes","ète","étons","étez","ètent"],i:["étais","étais","était","étions","étiez","étaient"],f:["èterai","èteras","ètera","èterons","èterez","èteront"],ps:["étai","étas","éta","étâmes","étâtes","étèrent"],c:["èterais","èterais","èterait","èterions","èteriez","èteraient"],s:["ète","ètes","ète","étions","étiez","ètent"],si:["étasse","étasses","étât","étassions","étassiez","étassent"],ip:[null,"ète",null,"étons","étez",null],pr:"étant",pp:"été",b:"éter"}},v13:{ending:"emer",t:{p:["ème","èmes","ème","emons","emez","èment"],i:["emais","emais","emait","emions","emiez","emaient"],f:["èmerai","èmeras","èmera","èmerons","èmerez","èmeront"],ps:["emai","emas","ema","emâmes","emâtes","emèrent"],c:["èmerais","èmerais","èmerait","èmerions","èmeriez","èmeraient"],s:["ème","èmes","ème","emions","emiez","èment"],si:["emasse","emasses","emât","emassions","emassiez","emassent"],ip:[null,"ème",null,"emons","emez",null],pr:"emant",pp:"emé",b:"emer"}},v14:{ending:"éguer",t:{p:["ègue","ègues","ègue","éguons","éguez","èguent"],i:["éguais","éguais","éguait","éguions","éguiez","éguaient"],f:["èguerai","ègueras","èguera","èguerons","èguerez","ègueront"],ps:["éguai","éguas","égua","éguâmes","éguâtes","éguèrent"],c:["èguerais","èguerais","èguerait","èguerions","ègueriez","ègueraient"],s:["ègue","ègues","ègue","éguions","éguiez","èguent"],si:["éguasse","éguasses","éguât","éguassions","éguassiez","éguassent"],ip:[null,"ègue",null,"éguons","éguez",null],pr:"éguant",pp:"égué",b:"éguer"}},v15:{ending:"équer",t:{p:["èque","èques","èque","équons","équez","èquent"],i:["équais","équais","équait","équions","équiez","équaient"],f:["èquerai","èqueras","èquera","èquerons","èquerez","èqueront"],ps:["équai","équas","équa","équâmes","équâtes","équèrent"],c:["èquerais","èquerais","èquerait","èquerions","èqueriez","èqueraient"],s:["èque","èques","èque","équions","équiez","èquent"],si:["équasse","équasses","équât","équassions","équassiez","équassent"],ip:[null,"èque",null,"équons","équez",null],pr:"équant",pp:"équé",b:"équer"}},v16:{ending:"éler",t:{p:["èle","èles","èle","élons","élez","èlent"],i:["élais","élais","élait","élions","éliez","élaient"],f:["élerai","éleras","élera","élerons","élerez","éleront"],ps:["élai","élas","éla","élâmes","élâtes","élèrent"],c:["élerais","élerais","élerait","élerions","éleriez","éleraient"],s:["èle","èles","èle","élions","éliez","èlent"],si:["élasse","élasses","élât","élassions","élassiez","élassent"],ip:[null,"èle",null,"élons","élez",null],pr:"élant",pp:"élé",b:"éler"}},v17:{ending:"étrer",t:{p:["ètre","ètres","ètre","étrons","étrez","ètrent"],i:["étrais","étrais","étrait","étrions","étriez","étraient"],f:["étrerai","étreras","étrera","étrerons","étrerez","étreront"],ps:["étrai","étras","étra","étrâmes","étrâtes","étrèrent"],c:["étrerais","étrerais","étrerait","étrerions","étreriez","étreraient"],s:["ètre","ètres","ètre","étrions","étriez","ètrent"],si:["étrasse","étrasses","étrât","étrassions","étrassiez","étrassent"],ip:[null,"ètre",null,"étrons","étrez",null],pr:"étrant",pp:"étré",b:"étrer"}},v18:{ending:"égler",t:{p:["ègle","ègles","ègle","églons","églez","èglent"],i:["églais","églais","églait","églions","égliez","églaient"],f:["églerai","égleras","églera","églerons","églerez","égleront"],ps:["églai","églas","égla","églâmes","églâtes","églèrent"],c:["églerais","églerais","églerait","églerions","égleriez","égleraient"],s:["ègle","ègles","ègle","églions","égliez","èglent"],si:["églasse","églasses","églât","églassions","églassiez","églassent"],ip:[null,"ègle",null,"églons","églez",null],pr:"églant",pp:"églé",b:"égler"}},v19:{ending:"égner",t:{p:["ègne","ègnes","ègne","égnons","égnez","ègnent"],i:["égnais","égnais","égnait","égnions","égniez","égnaient"],f:["égnerai","égneras","égnera","égnerons","égnerez","égneront"],ps:["égnai","égnas","égna","égnâmes","égnâtes","égnèrent"],c:["égnerais","égnerais","égnerait","égnerions","égneriez","égneraient"],s:["ègne","ègnes","ègne","égnions","égniez","ègnent"],si:["égnasse","égnasses","égnât","égnassions","égnassiez","égnassent"],ip:[null,"ègne",null,"égnons","égnez",null],pr:"égnant",pp:"égné",b:"égner"}},v20:{ending:"ébrer",t:{p:["èbre","èbres","èbre","ébrons","ébrez","èbrent"],i:["ébrais","ébrais","ébrait","ébrions","ébriez","ébraient"],f:["ébrerai","ébreras","ébrera","ébrerons","ébrerez","ébreront"],ps:["ébrai","ébras","ébra","ébrâmes","ébrâtes","ébrèrent"],c:["ébrerais","ébrerais","ébrerait","ébrerions","ébreriez","ébreraient"],s:["èbre","èbres","èbre","ébrions","ébriez","èbrent"],si:["ébrasse","ébrasses","ébrât","ébrassions","ébrassiez","ébrassent"],ip:[null,"èbre",null,"ébrons","ébrez",null],pr:"ébrant",pp:"ébré",b:"ébrer"}},v21:{ending:"égrer",t:{p:["ègre","ègres","ègre","égrons","égrez","ègrent"],i:["égrais","égrais","égrait","égrions","égriez","égraient"],f:["égrerai","égreras","égrera","égrerons","égrerez","égreront"],ps:["égrai","égras","égra","égrâmes","égrâtes","égrèrent"],c:["égrerais","égrerais","égrerait","égrerions","égreriez","égreraient"],s:["ègre","ègres","ègre","égrions","égriez","ègrent"],si:["égrasse","égrasses","égrât","égrassions","égrassiez","égrassent"],ip:[null,"ègre",null,"égrons","égrez",null],pr:"égrant",pp:"égré",b:"égrer"}},v22:{ending:"éter",t:{p:["ète","ètes","ète","étons","étez","ètent"],i:["étais","étais","était","étions","étiez","étaient"],f:["éterai","éteras","étera","éterons","éterez","éteront"],ps:["étai","étas","éta","étâmes","étâtes","étèrent"],c:["éterais","éterais","éterait","éterions","éteriez","éteraient"],s:["ète","ètes","ète","étions","étiez","ètent"],si:["étasse","étasses","étât","étassions","étassiez","étassent"],ip:[null,"ète",null,"étons","étez",null],pr:"étant",pp:"été",b:"éter"}},v23:{ending:"éner",t:{p:["ène","ènes","ène","énons","énez","ènent"],i:["énais","énais","énait","énions","éniez","énaient"],f:["énerai","éneras","énera","énerons","énerez","éneront"],ps:["énai","énas","éna","énâmes","énâtes","énèrent"],c:["énerais","énerais","énerait","énerions","éneriez","éneraient"],s:["ène","ènes","ène","énions","éniez","ènent"],si:["énasse","énasses","énât","énassions","énassiez","énassent"],ip:[null,"ène",null,"énons","énez",null],pr:"énant",pp:"éné",b:"éner"}},v24:{ending:"ener",t:{p:["ène","ènes","ène","enons","enez","ènent"],i:["enais","enais","enait","enions","eniez","enaient"],f:["ènerai","èneras","ènera","ènerons","ènerez","èneront"],ps:["enai","enas","ena","enâmes","enâtes","enèrent"],c:["ènerais","ènerais","ènerait","ènerions","èneriez","èneraient"],s:["ène","ènes","ène","enions","eniez","ènent"],si:["enasse","enasses","enât","enassions","enassiez","enassent"],ip:[null,"ène",null,"enons","enez",null],pr:"enant",pp:"ené",b:"ener"}},v25:{ending:"ever",t:{p:["ève","èves","ève","evons","evez","èvent"],i:["evais","evais","evait","evions","eviez","evaient"],f:["èverai","èveras","èvera","èverons","èverez","èveront"],ps:["evai","evas","eva","evâmes","evâtes","evèrent"],c:["èverais","èverais","èverait","èverions","èveriez","èveraient"],s:["ève","èves","ève","evions","eviez","èvent"],si:["evasse","evasses","evât","evassions","evassiez","evassent"],ip:[null,"ève",null,"evons","evez",null],pr:"evant",pp:"evé",b:"ever"}},v26:{ending:"eser",t:{p:["èse","èses","èse","esons","esez","èsent"],i:["esais","esais","esait","esions","esiez","esaient"],f:["èserai","èseras","èsera","èserons","èserez","èseront"],ps:["esai","esas","esa","esâmes","esâtes","esèrent"],c:["èserais","èserais","èserait","èserions","èseriez","èseraient"],s:["èse","èses","èse","esions","esiez","èsent"],si:["esasse","esasses","esât","esassions","esassiez","esassent"],ip:[null,"èse",null,"esons","esez",null],pr:"esant",pp:"esé",b:"eser"}},v27:{ending:"écher",t:{p:["èche","èches","èche","échons","échez","èchent"],i:["échais","échais","échait","échions","échiez","échaient"],f:["écherai","écheras","échera","écherons","écherez","écheront"],ps:["échai","échas","écha","échâmes","échâtes","échèrent"],c:["écherais","écherais","écherait","écherions","écheriez","écheraient"],s:["èche","èches","èche","échions","échiez","èchent"],si:["échasse","échasses","échât","échassions","échassiez","échassent"],ip:[null,"èche",null,"échons","échez",null],pr:"échant",pp:"éché",b:"écher"}},v28:{ending:"érer",t:{p:["ère","ères","ère","érons","érez","èrent"],i:["érais","érais","érait","érions","ériez","éraient"],f:["érerai","éreras","érera","érerons","érerez","éreront"],ps:["érai","éras","éra","érâmes","érâtes","érèrent"],c:["érerais","érerais","érerait","érerions","éreriez","éreraient"],s:["ère","ères","ère","érions","ériez","èrent"],si:["érasse","érasses","érât","érassions","érassiez","érassent"],ip:[null,"ère",null,"érons","érez",null],pr:"érant",pp:"éré",b:"érer"}},v29:{ending:"evrer",t:{p:["èvre","èvres","èvre","evrons","evrez","èvrent"],i:["evrais","evrais","evrait","evrions","evriez","evraient"],f:["èvrerai","èvreras","èvrera","èvrerons","èvrerez","èvreront"],ps:["evrai","evras","evra","evrâmes","evrâtes","evrèrent"],c:["èvrerais","èvrerais","èvrerait","èvrerions","èvreriez","èvreraient"],s:["èvre","èvres","èvre","evrions","evriez","èvrent"],si:["evrasse","evrasses","evrât","evrassions","evrassiez","evrassent"],ip:[null,"èvre",null,"evrons","evrez",null],pr:"evrant",pp:"evré",b:"evrer"}},v30:{ending:"éder",t:{p:["ède","èdes","ède","édons","édez","èdent"],i:["édais","édais","édait","édions","édiez","édaient"],f:["éderai","éderas","édera","éderons","éderez","éderont"],ps:["édai","édas","éda","édâmes","édâtes","édèrent"],c:["éderais","éderais","éderait","éderions","éderiez","éderaient"],s:["ède","èdes","ède","édions","édiez","èdent"],si:["édasse","édasses","édât","édassions","édassiez","édassent"],ip:[null,"ède",null,"édons","édez",null],pr:"édant",pp:"édé",b:"éder"}},v31:{ending:"éper",t:{p:["èpe","èpes","èpe","épons","épez","èpent"],i:["épais","épais","épait","épions","épiez","épaient"],f:["éperai","éperas","épera","éperons","éperez","éperont"],ps:["épai","épas","épa","épâmes","épâtes","épèrent"],c:["éperais","éperais","éperait","éperions","éperiez","éperaient"],s:["èpe","èpes","èpe","éprions","épiez","èpent"],si:["épasse","épasses","épât","épassions","épassiez","épassent"],ip:[null,"èpe",null,"épons","épez",null],pr:"épant",pp:"épé",b:"éper"}},v32:{ending:"eper",t:{p:["èpe","èpes","èpe","epons","epez","èpent"],i:["epais","epais","epait","epions","epiez","epaient"],f:["eperai","eperas","epera","eperons","eperez","eperont"],ps:["epai","epas","epa","epâmes","epâtes","epèrent"],c:["eperais","eperais","eperait","eperions","eperiez","eperaient"],s:["èpe","èpes","èpe","eprions","epiez","èpent"],si:["epasse","epasses","epât","epassions","epassiez","epassent"],ip:[null,"èpe",null,"epons","epez",null],pr:"epant",pp:"epé",b:"eper"}},v33:{ending:"éser",t:{p:["èse","èses","èse","ésons","ésez","èsent"],i:["ésais","ésais","ésait","ésions","ésiez","ésaient"],f:["éserai","éseras","ésera","éserons","éserez","éseront"],ps:["ésai","ésas","ésa","ésâmes","ésâtes","ésèrent"],c:["éserais","éserais","éserait","éserions","éseriez","éseraient"],s:["èse","èses","èse","ésrions","ésiez","èsent"],si:["ésasse","ésasses","ésât","ésassions","ésassiez","ésassent"],ip:[null,"èse",null,"ésons","ésez",null],pr:"ésant",pp:"ésé",b:"éser"}},v34:{ending:"émer",t:{p:["ème","èmes","ème","émons","émez","èment"],i:["émais","émais","émait","émions","émiez","émaient"],f:["émerai","émeras","émera","émerons","émerez","émeront"],ps:["émai","émas","éma","émâmes","émâtes","émèrent"],c:["émerais","émerais","émerait","émerions","émeriez","émeraient"],s:["ème","èmes","ème","émrions","émiez","èment"],si:["émasse","émasses","émât","émassions","émassiez","émassent"],ip:[null,"ème",null,"émons","émez",null],pr:"émant",pp:"émé",b:"émer"}},v35:{ending:"éger",t:{p:["ège","èges","ège","égeons","égez","ègent"],i:["égeais","égeais","égeait","égions","égiez","égeaient"],f:["ègerai","ègeras","ègera","ègerons","ègerez","ègeront"],ps:["égeai","égeas","égea","égeâmes","égeâtes","égèrent"],c:["ègerais","ègerais","ègerait","ègerions","ègeriez","ègeraient"],s:["ège","èges","ège","égions","égiez","ègent"],si:["égeasse","égeasses","égeât","égeassions","égeassiez","égeassent"],ip:[null,"ège",null,"égeons","égez",null],pr:"égeant",pp:"égé",b:"éger"}},v36:{ending:"er",t:{p:["e","es","e","ons","ez","ent"],i:["ais","ais","ait","ions","iez","aient"],f:["erai","eras","era","erons","erez","eront"],ps:["ai","as","a","âmes","âtes","èrent"],c:["erais","erais","erait","erions","eriez","eraient"],s:["e","es","e","ions","iez","ent"],si:["asse","asses","ât","assions","assiez","assent"],ip:[null,"e",null,"ons","ez",null],pr:"ant",pp:"é",b:"er"}},v37:{ending:"évrer",t:{p:["èvre","èvres","èvre","évrons","évrez","èvrent"],i:["évrais","évrais","évrait","évrions","évriez","évraient"],f:["évrerai","évreras","évrera","évrerons","évrerez","évreront"],ps:["évrai","évras","évra","évrâmes","évrâtes","évrèrent"],c:["évrerais","évrerais","évrerait","évrerions","évreriez","évreraient"],s:["èvre","èvres","èvre","évrions","évriez","èvrent"],si:["évrasse","évrasses","évrât","évrassions","évrassiez","évrassent"],ip:[null,"èvre",null,"évrons","évrez",null],pr:"évrant",pp:"évré",b:"évrer"}},v38:{ending:"écrer",t:{p:["ècre","ècres","ècre","écrons","écrez","ècrent"],i:["écrais","écrais","écrait","écrions","écriez","écraient"],f:["écrerai","écreras","écrera","écrerons","écrerez","écreront"],ps:["écrai","écras","écra","écrâmes","écrâtes","écrèrent"],c:["écrerais","écrerais","écrerait","écrerions","écreriez","écreraient"],s:["ècre","ècres","ècre","écrions","écriez","ècrent"],si:["écrasse","écrasses","écrât","écrassions","écrassiez","écrassent"],ip:[null,"ècre",null,"écrons","écrez",null],pr:"écrant",pp:"écré",b:"écrer"}},v39:{ending:"érir",t:{p:["iers","iers","iert","érons","érez","ièrent"],i:["érais","érais","érait","érions","ériez","éraient"],f:["errai","erras","erra","errons","errez","erront"],ps:["is","is","it","îmes","îtes","irent"],c:["errais","errais","errait","errions","erriez","erraient"],s:["ière","ières","ière","érions","ériez","ièrent"],si:["isse","isses","ît","issions","issiez","issent"],ip:[null,"iers",null,"érons","érez",null],pr:"érant",pp:"is",b:"érir"}},v40:{ending:"érir",t:{p:[null,null,null,null,null,null],i:[null,null,null,null,null,null],f:[null,null,null,null,null,null],ps:[null,null,null,null,null,null],c:[null,null,null,null,null,null],s:[null,null,null,null,null,null],si:[null,null,null,null,null,null],ip:[null,null,null,null,null,null],pr:null,pp:null,b:"érir"}},v41:{ending:"ïr",t:{p:["is","is","it","ïssons","ïssez","ïssent"],i:["ïssais","ïssais","ïssait","ïssions","ïssiez","ïssaient"],f:["ïrai","ïras","ïra","ïrons","ïrez","ïront"],ps:["ïs","ïs","ït","ïmes","ïtes","ïrent"],c:["ïrais","ïrais","ïrait","ïrions","ïriez","ïraient"],s:["ïsse","ïsses","ïsse","ïssions","ïssiez","ïssent"],si:["ïsse","ïsses","ït","ïssions","ïssiez","ïssent"],ip:[null,"is",null,"ïssons","ïssez",null],pr:"ïssant",pp:"ï",b:"ïr"}},v42:{ending:"ïr",t:{p:["ïs","ïs","ït","ïssons","ïssez","ïssent"],i:["ïssais","ïssais","ïssait","ïssions","ïssiez","ïssaient"],f:["ïrai","ïras","ïra","ïrons","ïrez","ïront"],ps:["ïs","ïs","ït","ïmes","ïtes","ïrent"],c:["ïrais","ïrais","ïrait","ïrions","ïriez","ïraient"],s:["ïsse","ïsses","ïsse","ïssions","ïssiez","ïssent"],si:["ïsse","ïsses","ït","ïssions","ïssiez","ïssent"],ip:[null,"ïs",null,"ïssons","ïssez",null],pr:"ïssant",pp:"ï",b:"ïr"}},v43:{ending:"eurir",t:{p:["euris","euris","eurit","eurissons","eurissez","eurissent"],i:["eurissais","eurissais","eurissait","eurissions","eurissiez","eurissaient"],f:["eurirai","euriras","eurira","eurirons","eurirez","euriront"],ps:["euris","euris","eurit","eurîmes","eurîtes","eurirent"],c:["eurirais","eurirais","eurirait","euririons","euririez","euriraient"],s:["eurisse","eurisses","eurisse","eurissions","eurissiez","eurissent"],si:["eurisse","eurisses","eurît","eurissions","eurissiez","eurissent"],ip:[null,"euris",null,"eurissons","eurissez",null],pr:"eurissant",pp:"euri",b:"eurir"}},v44:{ending:"rir",t:{p:["re","res","re","rons","rez","rent"],i:["rais","rais","rait","rions","riez","raient"],f:["rirai","riras","rira","rirons","rirez","riront"],ps:["ris","ris","rit","rîmes","rîtes","rirent"],c:["rirais","rirais","rirait","ririons","ririez","riraient"],s:["re","res","re","rions","riez","rent"],si:["risse","risses","rît","rissions","rissiez","rissent"],ip:[null,"re",null,"rons","rez",null],pr:"rant",pp:"ert",b:"rir"}},v45:{ending:"mir",t:{p:["s","s","t","mons","mez","ment"],i:["mais","mais","mait","mions","miez","maient"],f:["mirai","miras","mira","mirons","mirez","miront"],ps:["mis","mis","mit","mîmes","mîtes","mirent"],c:["mirais","mirais","mirait","mirions","miriez","miraient"],s:["me","mes","me","mions","miez","ment"],si:["misse","misses","mît","missions","missiez","missent"],ip:[null,"s",null,"mons","mez",null],pr:"mant",pp:"mi",b:"mir"}},v46:{ending:"tir",t:{p:["s","s","t","tons","tez","tent"],i:["tais","tais","tait","tions","tiez","taient"],f:["tirai","tiras","tira","tirons","tirez","tiront"],ps:["tis","tis","tit","tîmes","tîtes","tirent"],c:["tirais","tirais","tirait","tirions","tiriez","tiraient"],s:["te","tes","te","tions","tiez","tent"],si:["tisse","tisses","tît","tissions","tissiez","tissent"],ip:[null,"s",null,"tons","tez",null],pr:"tant",pp:"ti",b:"tir"}},v47:{ending:"vir",t:{p:["s","s","t","vons","vez","vent"],i:["vais","vais","vait","vions","viez","vaient"],f:["virai","viras","vira","virons","virez","viront"],ps:["vis","vis","vit","vîmes","vîtes","virent"],c:["virais","virais","virait","virions","viriez","viraient"],s:["ve","ves","ve","vions","viez","vent"],si:["visse","visses","vît","vissions","vissiez","vissent"],ip:[null,"s",null,"vons","vez",null],pr:"vant",pp:"vi",b:"vir"}},v48:{ending:"illir",t:{p:["s","s","t","illons","illez","illent"],i:["illais","illais","illait","illions","illiez","illaient"],f:["illirai","illiras","illira","illirons","illirez","illiront"],ps:["illis","illis","illit","illîmes","illîtes","illirent"],c:["illirais","illirais","illirait","illirions","illiriez","illiraient"],s:["ille","illes","ille","illions","illiez","illent"],si:["illisse","illisses","illît","illissions","illissiez","illissent"],ip:[null,"s",null,"illons","illez",null],pr:"illant",pp:"illi",b:"illir"}},v49:{ending:"ir",t:{p:["e","es","e","ons","ez","ent"],i:["ais","ais","ait","ions","iez","aient"],f:["irai","iras","ira","irons","irez","iront"],ps:["is","is","it","îmes","îtes","irent"],c:["irais","irais","irait","irions","iriez","iraient"],s:["e","es","e","ions","iez","ent"],si:["isse","isses","ît","issions","issiez","issent"],ip:[null,"e",null,"ons","ez",null],pr:"ant",pp:"i",b:"ir"}},v50:{ending:"ir",t:{p:["is","is","it","issons","issez","issent"],i:["issais","issais","issait","issions","issiez","issaient"],f:["irai","iras","ira","irons","irez","iront"],ps:["is","is","it","îmes","îtes","irent"],c:["irais","irais","irait","irions","iriez","iraient"],s:["isse","isses","isse","issions","issiez","issent"],si:["isse","isses","ît","issions","issiez","issent"],ip:[null,"is",null,"issons","issez",null],pr:"issant",pp:"i",b:"ir"}},v51:{ending:"ir",t:{p:["e","es","e","ons","ez","ent"],i:["ais","ais","ait","ions","iez","aient"],f:["erai","eras","era","erons","erez","eront"],ps:["is","is","it","îmes","îtes","irent"],c:["erais","erais","erait","erions","eriez","eraient"],s:["e","es","e","ions","iez","ent"],si:["isse","isses","ît","issions","issiez","issent"],ip:[null,"e",null,"ons","ez",null],pr:"ant",pp:"i",b:"ir"}},v52:{ending:"enir",t:{p:["iens","iens","ient","enons","enez","iennent"],i:["enais","enais","enait","enions","eniez","enaient"],f:["iendrai","iendras","iendra","iendrons","iendrez","iendront"],ps:["ins","ins","int","înmes","întes","inrent"],c:["iendrais","iendrais","iendrait","iendrions","iendriez","iendraient"],s:["ienne","iennes","ienne","enions","eniez","iennent"],si:["insse","insses","înt","inssions","inssiez","inssent"],ip:[null,"iens",null,"enons","enez",null],pr:"enant",pp:"enu",b:"enir"}},v53:{ending:"enir",t:{p:[null,null,"ient",null,null,null],i:[null,null,"enait",null,null,null],f:[null,null,"iendra",null,null,null],ps:[null,null,"int",null,null,null],c:[null,null,"iendrait",null,null,null],s:[null,null,"ienne",null,null,null],si:[null,null,"înt",null,null,null],ip:[null,null,null,null,null,null],pr:"enant",pp:"enu",b:"enir"}},v54:{ending:"ir",t:{p:["is","is","it","yons","yez","ient"],i:["yais","yais","yait","yions","yiez","yaient"],f:["irai","iras","ira","irons","irez","iront"],ps:["is","is","it","îmes","îtes","irent"],c:["irais","irais","irait","irions","iriez","iraient"],s:["ie","ies","ie","yions","yiez","ient"],si:["isse","isses","ît","issions","issiez","issent"],ip:[null,"is",null,"yons","yez",null],pr:"yant",pp:"i",b:"ir"}},v55:{ending:"ourir",t:{p:["eurs","eurs","eurt","ourons","ourez","eurent"],i:["ourais","ourais","ourait","ourions","ouriez","ouraient"],f:["ourrai","ourras","ourra","ourrons","ourrez","ourront"],ps:["ourus","ourus","ourut","ourûmes","ourûtes","oururent"],c:["ourrais","ourrais","ourrait","ourrions","ourriez","ourraient"],s:["eure","eures","eure","ourions","ouriez","eurent"],si:["ourusse","ourusses","ourût","ourussions","ourussiez","ourussent"],ip:[null,"eurs",null,"ourons","ourez",null],pr:"ourant",pp:"ort",b:"ourir"}},v56:{ending:"ir",t:{p:["s","s","","ons","ez","ent"],i:["ais","ais","ait","ions","iez","aient"],f:["irai","iras","ira","irons","irez","iront"],ps:["is","is","it","îmes","îtes","irent"],c:["irais","irais","irait","irions","iriez","iraient"],s:["e","es","e","ions","iez","ent"],si:["isse","isses","ît","issions","issiez","issent"],ip:[null,"s",null,"ons","ez",null],pr:"ant",pp:"u",b:"ir"}},v57:{ending:"ir",t:{p:["s","s","t","ons","ez","ent"],i:["ais","ais","ait","ions","iez","aient"],f:["rai","ras","ra","rons","rez","ront"],ps:["us","us","ut","ûmes","ûtes","urent"],c:["rais","rais","rait","rions","riez","raient"],s:["e","es","e","ions","iez","ent"],si:["usse","usses","ût","ussions","ussiez","ussent"],ip:[null,"s",null,"ons","ez",null],pr:"ant",pp:"u",b:"ir"}},v58:{ending:"ir",t:{p:["is","is","it","issons","issez","issent"],i:["issais","issais","issait","issions","issiez","issaient"],f:["irai","iras","ira","irons","irez","iront"],ps:["is","is","it","îmes","îtes","irent"],c:["irais","irais","irait","irions","iriez","iraient"],s:["isse","isses","isse","issions","issiez","issent"],si:["isse","isses","ît","issions","issiez","issent"],ip:[null,"is",null,"issons","issez",null],pr:"issant",pp:"i",b:"ir"}},v59:{ending:"ir",t:{p:["is","is","it","ons","ez","ent"],i:["ais","ais","ait","ions","iez","aient"],f:["irai","iras","ira","irons","irez","iront"],ps:["is","is","it","îmes","îtes","irent"],c:["irais","irais","irait","irions","iriez","iraient"],s:["e","es","e","ions","iez","ent"],si:["isse","isses","ît","issions","issiez","issent"],ip:[null,"is",null,"ons","ez",null],pr:"ant",pp:"i",b:"ir"}},v60:{ending:"ire",t:{p:["is","is","it","issons","issez","issent"],i:["issais","issais","issait","issions","issiez","issaient"],f:["irai","iras","ira","irons","irez","iront"],ps:["is","is","it","îmes","îtes","irent"],c:["irais","irais","irait","irions","iriez","iraient"],s:["isse","isses","isse","issions","issiez","issent"],si:["isse","isses","ît","issions","issiez","issent"],ip:[null,"is",null,"issons","issez",null],pr:"issant",pp:"it",b:"ire"}},v61:{ending:"illir",t:{p:["ux","ux","ut","illons","illez","illent"],i:["illais","illais","illait","illions","illiez","illaient"],f:["illirai","illiras","illira","illirons","illirez","illiront"],ps:["illis","illis","illit","illîmes","illîtes","illirent"],c:["illirais","illirais","illirait","illirions","illiriez","illiraient"],s:["illisse","illisses","illisse","illissions","illissiez","illissent"],si:["illisse","illisses","illît","illissions","illissiez","illissent"],ip:[null,null,null,null,null,null],pr:"illant",pp:"illi",b:"illir"}},v62:{ending:"ésir",t:{p:["is","is","ît","isons","isez","isent"],i:["isais","isais","isait","isions","isiez","isaient"],f:[null,null,null,null,null,null],ps:[null,null,null,null,null,null],c:[null,null,null,null,null,null],s:[null,null,null,null,null,null],si:[null,null,null,null,null,null],ip:[null,null,null,null,null,null],pr:"isant",pp:null,b:"ésir"}},v63:{ending:"cevoir",t:{p:["çois","çois","çoit","cevons","cevez","çoivent"],i:["cevais","cevais","cevait","cevions","ceviez","cevaient"],f:["cevrai","cevras","cevra","cevrons","cevrez","cevront"],ps:["çus","çus","çut","çûmes","çûtes","çurent"],c:["cevrais","cevrais","cevrait","cevrions","cevriez","cevraient"],s:["çoive","çoives","çoive","cevions","ceviez","çoivent"],si:["çusse","çusses","çût","çussions","çussiez","çussent"],ip:[null,"çois",null,"cevons","cevez",null],pr:"cevant",pp:"çu",b:"cevoir"}},v64:{ending:"evoir",t:{p:["ois","ois","oit","evons","evez","oivent"],i:["evais","evais","evait","evions","eviez","evaient"],f:["evrai","evras","evra","evrons","evrez","evront"],ps:["us","us","ut","ûmes","ûtes","urent"],c:["evrais","evrais","evrait","evrions","evriez","evraient"],s:["oive","oives","oive","evions","eviez","oivent"],si:["usse","usses","ût","ussions","ussiez","ussent"],ip:[null,"ois",null,"evons","evez",null],pr:"evant",pp:"û",b:"evoir"}},v65:{ending:"ouvoir",t:{p:["eus","eus","eut","ouvons","ouvez","euvent"],i:["ouvais","ouvais","ouvait","ouvions","ouviez","ouvaient"],f:["ouvrai","ouvras","ouvra","ouvrons","ouvrez","ouvront"],ps:["us","us","ut","ûmes","ûtes","urent"],c:["ouvrais","ouvrais","ouvrait","ouvrions","ouvriez","ouvraient"],s:["euve","euves","euve","ouvions","ouviez","euvent"],si:["usse","usses","ût","ussions","ussiez","ussent"],ip:[null,"eus",null,"ouvons","ouvez",null],pr:"ouvant",pp:"u",b:"ouvoir"}},v66:{ending:"ouvoir",t:{p:["eus","eus","eut","ouvons","ouvez","euvent"],i:["ouvais","ouvais","ouvait","ouvions","ouviez","ouvaient"],f:["ouvrai","ouvras","ouvra","ouvrons","ouvrez","ouvront"],ps:["us","us","ut","ûmes","ûtes","urent"],c:["ouvrais","ouvrais","ouvrait","ouvrions","ouvriez","ouvraient"],s:["euve","euves","euve","ouvions","ouviez","euvent"],si:["usse","usses","ût","ussions","ussiez","ussent"],ip:[null,"eus",null,"ouvons","ouvez",null],pr:"ouvant",pp:"u",b:"ouvoir"}},v67:{ending:"avoir",t:{p:["ais","ais","ait","avons","avez","avent"],i:["avais","avais","avait","avions","aviez","avaient"],f:["aurai","auras","aura","aurons","aurez","auront"],ps:["us","us","ut","ûmes","ûtes","urent"],c:["aurais","aurais","aurait","aurions","auriez","auraient"],s:["ache","aches","ache","achions","achiez","achent"],si:["usse","usses","ût","ussions","ussiez","ussent"],ip:[null,"ache",null,"achons","achez",null],pr:"achant",pp:"u",b:"avoir"}},v68:{ending:"ouloir",t:{p:["eux","eux","eut","oulons","oulez","eulent"],i:["oulais","oulais","oulait","oulions","ouliez","oulaient"],f:["oudrai","oudras","oudra","oudrons","oudrez","oudront"],ps:["oulus","oulus","oulut","oulûmes","oulûtes","oulurent"],c:["oudrais","oudrais","oudrait","oudrions","oudriez","oudraient"],s:["euille","euilles","euille","oulions","ouliez","euillent"],si:["oulusse","oulusses","oulût","oulussions","oulussiez","oulussent"],ip:[null,"euille",null,"oulons","euillez",null],pr:"oulant",pp:"oulu",b:"ouloir"}},v69:{ending:"loir",t:{p:["ux","ux","ut","lons","lez","lent"],i:["lais","lais","lait","lions","liez","laient"],f:["udrai","udras","udra","udrons","udrez","udront"],ps:["lus","lus","lut","lûmes","lûtes","lurent"],c:["udrais","udrais","udrait","udrions","udriez","udraient"],s:["ille","illes","ille","lions","liez","illent"],si:["lusse","lusses","lût","lussions","lussiez","lussent"],ip:[null,"ux",null,"lons","lez",null],pr:"lant",pp:"lu",b:"loir"}},v70:{ending:"loir",t:{p:["ux","ux","ut","lons","lez","lent"],i:["lais","lais","lait","lions","liez","laient"],f:["udrai","udras","udra","udrons","udrez","udront"],ps:["lus","lus","lut","lûmes","lûtes","lurent"],c:["udrais","udrais","udrait","udrions","udriez","udraient"],s:["le","les","le","lions","liez","lent"],si:["lusse","lusses","lût","lussions","lussiez","lussent"],ip:[null,"ux",null,"lons","lez",null],pr:"lant",pp:"lu",b:"loir"}},v71:{ending:"ouvoir",t:{p:["eux","eux","eut","ouvons","ouvez","euvent"],i:["ouvais","ouvais","ouvait","ouvions","ouviez","ouvaient"],f:["ourrai","ourras","ourra","ourrons","ourrez","ourront"],ps:["us","us","ut","ûmes","ûtes","urent"],c:["ourrais","ourrais","ourrait","ourrions","ourriez","ourraient"],s:["uisse","uisses","uisse","uissions","uissiez","uissent"],si:["usse","usses","ût","ussions","ussiez","ussent"],ip:[null,null,null,null,null,null],pr:"ouvant",pp:"u",b:"ouvoir"}},v72:{ending:"oir",t:{p:["ois","ois","oit","oyons","oyez","oient"],i:["oyais","oyais","oyait","oyions","oyiez","oyaient"],f:["errai","erras","erra","errons","errez","erront"],ps:["is","is","it","îmes","îtes","irent"],c:["errais","errais","errait","errions","erriez","erraient"],s:["oie","oies","oie","oyions","oyiez","oient"],si:["isse","isses","ît","issions","issiez","issent"],ip:[null,"ois",null,"oyons","oyez",null],pr:"oyant",pp:"u",b:"oir"}},v73:{ending:"oir",t:{p:["ois","ois","oit","oyons","oyez","oient"],i:["oyais","oyais","oyait","oyions","oyiez","oyaient"],f:["oirai","oiras","oira","oirons","oirez","oiront"],ps:["is","is","it","îmes","îtes","irent"],c:["oirais","oirais","oirait","oirions","oiriez","oiraient"],s:["oie","oies","oie","oyions","oyiez","oient"],si:["isse","isses","ît","issions","issiez","issent"],ip:[null,"ois",null,"oyons","oyez",null],pr:"oyant",pp:"u",b:"oir"}},v74:{ending:"eoir",t:{p:["ieds","ieds","ied","eyons","eyez","eyent"],i:["eyais","eyais","eyait","eyions","eyiez","eyaient"],f:["iérai","iéras","iéra","iérons","iérez","iéront"],ps:["is","is","it","îmes","îtes","irent"],c:["iérais","iérais","iérait","iérions","iériez","iéraient"],s:["eye","eyes","eye","eyions","eyiez","eyent"],si:["isse","isses","ît","issions","issiez","issent"],ip:[null,"ieds",null,"eyons","eyez",null],pr:"eyant",pp:"is",b:"eoir"}},v75:{ending:"eoir",t:{p:["ieds","ieds","ied","eyons","eyez","eyent"],i:["eyais","eyais","eyait","eyions","eyiez","eyaient"],f:["iérai","iéras","iéra","iérons","iérez","iéront"],ps:["is","is","it","îmes","îtes","irent"],c:["iérais","iérais","iérait","iérions","iériez","iéraient"],s:["eye","eyes","eye","eyions","eyiez","eyent"],si:["isse","isses","ît","issions","issiez","issent"],ip:[null,"ieds",null,"eyons","eyez",null],pr:"eyant",pp:"is",b:"eoir"}},v76:{ending:"eoir",t:{p:["ois","ois","oit","oyons","oyez","oient"],i:["oyais","oyais","oyait","oyions","oyiez","oyaient"],f:["eoirai","eoiras","eoira","eoirons","eoirez","eoiront"],ps:["is","is","it","îmes","îtes","irent"],c:["eoirais","eoirais","eoirait","eoirions","eoiriez","eoiraient"],s:["oie","oies","oie","oyions","oyiez","oient"],si:["isse","isses","ît","issions","issiez","issent"],ip:[null,"ois",null,"oyons","oyez",null],pr:"oyant",pp:"is",b:"eoir"}},v77:{ending:"oir",t:{p:["ois","ois","oit","oyons","oyez","oient"],i:["oyais","oyais","oyait","oyions","oyiez","oyaient"],f:["oirai","oiras","oira","oirons","oirez","oiront"],ps:["is","is","it","îmes","îtes","irent"],c:["oirais","oirais","oirait","oirions","oiriez","oiraient"],s:["oie","oies","oie","oyions","oyiez","oient"],si:["isse","isses","ît","issions","issiez","issent"],ip:[null,"ois",null,"oyons","oyez",null],pr:"oyant",pp:"is",b:"oir"}},v78:{ending:"eoir",t:{p:[null,null,"ied",null,null,"iéent"],i:[null,null,"eyait",null,null,"eyaient"],f:[null,null,"iéra",null,null,"iéront"],ps:[null,null,null,null,null,null],c:[null,null,"iérait",null,null,"iéraient"],s:[null,null,"iée",null,null,"iéent"],si:[null,null,null,null,null,null],ip:[null,null,null,null,null,null],pr:"éant",pp:"is",b:"eoir"}},v79:{ending:"euvoir",t:{p:[null,null,"eut",null,null,"euvent"],i:[null,null,"euvait",null,null,"euvaient"],f:[null,null,"euvra",null,null,"euvront"],ps:[null,null,"ut",null,null,null],c:[null,null,"euvrait",null,null,"euvraient"],s:[null,null,"euve",null,null,"euvent"],si:[null,null,"ût",null,null,null],ip:[null,null,null,null,null,null],pr:"euvant",pp:"u",b:"euvoir"}},v80:{ending:"lloir",t:{p:[null,null,"ut",null,null,null],i:[null,null,"llait",null,null,null],f:[null,null,"udra",null,null,null],ps:[null,null,"llut",null,null,null],c:[null,null,"udrait",null,null,null],s:[null,null,"ille",null,null,null],si:[null,null,"llût",null,null,null],ip:[null,null,null,null,null,null],pr:null,pp:"llu",b:"lloir"}},v81:{ending:"oir",t:{p:["ois","ois","oit","oyons","oyez","oient"],i:["oyais","oyais","oyait","oyions","oyiez","oyaient"],f:["oirai","oiras","oira","oirons","oirez","oiront"],ps:["us","us","ut","ûmes","ûtes","urent"],c:["oirais","oirais","oirait","oirions","oiriez","oiraient"],s:["oie","oies","oie","oyions","oyiez","oient"],si:["usse","usses","ût","ussions","ussiez","ussent"],ip:[null,null,null,null,null,null],pr:null,pp:"u",b:"oir"}},v82:{ending:"oir",t:{p:["ois","ois","oit","oyons","oyez","oient"],i:["oyais","oyais","oyait","oyions","oyiez","oyaient"],f:["oirai","oiras","oira","oirons","oirez","oiront"],ps:["us","us","ut","ûmes","ûtes","urent"],c:["oirais","oirais","oirait","oirions","oiriez","oiraient"],s:["oie","oies","oie","oyions","oyiez","oient"],si:["usse","usses","ût","ussions","ussiez","ussent"],ip:[null,"ois",null,"oyons","oyez",null],pr:"oyant",pp:"u",b:"oir"}},v83:{ending:"oir",t:{p:["ois","ois","oit","oyons","oyez","oient"],i:[null,null,null,null,null,null],f:["oirai","oiras","oira","oirons","oirez","oiront"],ps:["us","us","ut","ûmes","ûtes","urent"],c:["oirais","oirais","oirait","oirions","oiriez","oiraient"],s:[null,null,null,null,null,null],si:[null,null,"ût",null,null,null],ip:[null,null,null,null,null,null],pr:"oyant",pp:"u",b:"oir"}},v84:{ending:"oir",t:{p:[null,null,"oit",null,null,"oient"],i:[null,null,"oyait",null,null,"oyaient"],f:[null,null,"oira",null,null,"oiront"],ps:[null,null,"ut",null,null,"urent"],c:[null,null,"oirait",null,null,"oiraient"],s:[null,null,"oie",null,null,"oient"],si:[null,null,"ût",null,null,"ussent"],ip:[null,null,null,null,null,null],pr:"éant",pp:"u",b:"oir"}},v85:{ending:"dre",t:{p:["ds","ds","d","dons","dez","dent"],i:["dais","dais","dait","dions","diez","daient"],f:["drai","dras","dra","drons","drez","dront"],ps:["dis","dis","dit","dîmes","dîtes","dirent"],c:["drais","drais","drait","drions","driez","draient"],s:["de","des","de","dions","diez","dent"],si:["disse","disses","dît","dissions","dissiez","dissent"],ip:[null,"ds",null,"dons","dez",null],pr:"dant",pp:"du",b:"dre"}},v86:{ending:"cre",t:{p:["cs","cs","c","quons","quez","quent"],i:["quais","quais","quait","quions","quiez","quaient"],f:["crai","cras","cra","crons","crez","cront"],ps:["quis","quis","quit","quîmes","quîtes","quirent"],c:["crais","crais","crait","crions","criez","craient"],s:["que","ques","que","quions","quiez","quent"],si:["quisse","quisses","quît","quissions","quissiez","quissent"],ip:[null,"cs",null,"quons","quez",null],pr:"quant",pp:"cu",b:"cre"}},v87:{ending:"tre",t:{p:["s","s","","tons","tez","tent"],i:["tais","tais","tait","tions","tiez","taient"],f:["trai","tras","tra","trons","trez","tront"],ps:["tis","tis","tit","tîmes","tîtes","tirent"],c:["trais","trais","trait","trions","triez","traient"],s:["te","tes","te","tions","tiez","tent"],si:["tisse","tisses","tît","tissions","tissiez","tissent"],ip:[null,"s",null,"tons","tez",null],pr:"tant",pp:"tu",b:"tre"}},v88:{ending:"tre",t:{p:["s","s","t","tons","tez","tent"],i:["tais","tais","tait","tions","tiez","taient"],f:["trai","tras","tra","trons","trez","tront"],ps:[null,null,null,null,null,null],c:["trais","trais","trait","trions","triez","traient"],s:["te","tes","te","tions","tiez","tent"],si:[null,null,null,null,null,null],ip:[null,"s",null,"tons","tez",null],pr:"tant",pp:"tu",b:"tre"}},v89:{ending:"ettre",t:{p:["ets","ets","et","ettons","ettez","ettent"],i:["ettais","ettais","ettait","ettions","ettiez","ettaient"],f:["ettrai","ettras","ettra","ettrons","ettrez","ettront"],ps:["is","is","it","îmes","îtes","irent"],c:["ettrais","ettrais","ettrait","ettrions","ettriez","ettraient"],s:["ette","ettes","ette","ettions","ettiez","ettent"],si:["isse","isses","ît","issions","issiez","issent"],ip:[null,"ets",null,"ettons","ettez",null],pr:"ettant",pp:"is",b:"ettre"}},v90:{ending:"endre",t:{p:["ends","ends","end","enons","enez","ennent"],i:["enais","enais","enait","enions","eniez","enaient"],f:["endrai","endras","endra","endrons","endrez","endront"],ps:["is","is","it","îmes","îtes","irent"],c:["endrais","endrais","endrait","endrions","endriez","endraient"],s:["enne","ennes","enne","enions","eniez","ennent"],si:["isse","isses","ît","issions","issiez","issent"],ip:[null,"ends",null,"enons","enez",null],pr:"enant",pp:"is",b:"endre"}},v91:{ending:"pre",t:{p:["ps","ps","pt","pons","pez","pent"],i:["pais","pais","pait","pions","piez","paient"],f:["prai","pras","pra","prons","prez","pront"],ps:["pis","pis","pit","pîmes","pîtes","pirent"],c:["prais","prais","prait","prions","priez","praient"],s:["pe","pes","pe","pions","piez","pent"],si:["pisse","pisses","pît","pissions","pissiez","pissent"],ip:[null,"ps",null,"pons","pez",null],pr:"pant",pp:"pu",b:"pre"}},v92:{ending:"dre",t:{p:["ds","ds","d","lons","lez","lent"],i:["lais","lais","lait","lions","liez","laient"],f:["drai","dras","dra","drons","drez","dront"],ps:["lus","lus","lut","lûmes","lûtes","lurent"],c:["drais","drais","drait","drions","driez","draient"],s:["le","les","le","lions","liez","lent"],si:["lusse","lusses","lût","lussions","lussiez","lussent"],ip:[null,"ds",null,"lons","lez",null],pr:"lant",pp:"lu",b:"dre"}},v93:{ending:"dre",t:{p:["ds","ds","d","sons","sez","sent"],i:["sais","sais","sait","sions","siez","saient"],f:["drai","dras","dra","drons","drez","dront"],ps:["sis","sis","sit","sîmes","sîtes","sirent"],c:["drais","drais","drait","drions","driez","draient"],s:["se","ses","se","sions","siez","sent"],si:["sisse","sisses","sît","sissions","sissiez","sissent"],ip:[null,"ds",null,"sons","sez",null],pr:"sant",pp:"su",b:"dre"}},v94:{ending:"udre",t:{p:["us","us","ut","lvons","lvez","lvent"],i:["lvais","lvais","lvait","lvions","lviez","lvaient"],f:["udrai","udras","udra","udrons","udrez","udront"],ps:["lus","lus","lut","lûmes","lûtes","lurent"],c:["udrais","udrais","udrait","udrions","udriez","udraient"],s:["lve","lves","lve","lvions","lviez","lvent"],si:["lusse","lusses","lût","lussions","lussiez","lussent"],ip:[null,"us",null,"lvons","lvez",null],pr:"lvant",pp:"lu",b:"udre"}},v95:{ending:"udre",t:{p:["us","us","ut","lvons","lvez","lvent"],i:["lvais","lvais","lvait","lvions","lviez","lvaient"],f:["udrai","udras","udra","udrons","udrez","udront"],ps:[null,null,null,null,null,null],c:["udrais","udrais","udrait","udrions","udriez","udraient"],s:["lve","lves","lve","lvions","lviez","lvent"],si:[null,null,null,null,null,null],ip:[null,"us",null,"lvons","lvez",null],pr:"lvant",pp:"us",b:"udre"}},v96:{ending:"udre",t:{p:["us","us","ut","lvons","lvez","lvent"],i:["lvais","lvais","lvait","lvions","lviez","lvaient"],f:["udrai","udras","udra","udrons","udrez","udront"],ps:[null,null,null,null,null,null],c:["udrais","udrais","udrait","udrions","udriez","udraient"],s:["lve","lves","lve","lvions","lviez","lvent"],si:[null,null,null,null,null,null],ip:[null,"us",null,"lvons","lvez",null],pr:"lvant",pp:"us",b:"udre"}},v97:{ending:"ndre",t:{p:["ns","ns","nt","gnons","gnez","gnent"],i:["gnais","gnais","gnait","gnions","gniez","gnaient"],f:["ndrai","ndras","ndra","ndrons","ndrez","ndront"],ps:["gnis","gnis","gnit","gnîmes","gnîtes","gnirent"],c:["ndrais","ndrais","ndrait","ndrions","ndriez","ndraient"],s:["gne","gnes","gne","gnions","gniez","gnent"],si:["gnisse","gnisses","gnît","gnissions","gnissiez","gnissent"],ip:[null,"ns",null,"gnons","gnez",null],pr:"gnant",pp:"nt",b:"ndre"}},v98:{ending:"ndre",t:{p:["ns","ns","nt","gnons","gnez","gnent"],i:["gnais","gnais","gnait","gnions","gniez","gnaient"],f:["ndrai","ndras","ndra","ndrons","ndrez","ndront"],ps:["gnis","gnis","gnit","gnîmes","gnîtes","gnirent"],c:["ndrais","ndrais","ndrait","ndrions","ndriez","ndraient"],s:["gne","gnes","gne","gnions","gniez","gnent"],si:["gnisse","gnisses","gnît","gnissions","gnissiez","gnissent"],ip:[null,null,null,null,null,null],pr:"gnant",pp:null,b:"ndre"}},v99:{ending:"vre",t:{p:["s","s","t","vons","vez","vent"],i:["vais","vais","vait","vions","viez","vaient"],f:["vrai","vras","vra","vrons","vrez","vront"],ps:["vis","vis","vit","vîmes","vîtes","virent"],c:["vrais","vrais","vrait","vrions","vriez","vraient"],s:["ve","ves","ve","vions","viez","vent"],si:["visse","visses","vît","vissions","vissiez","vissent"],ip:[null,"s",null,"vons","vez",null],pr:"vant",pp:"vi",b:"vre"}},v100:{ending:"ivre",t:{p:["is","is","it","ivons","ivez","ivent"],i:["ivais","ivais","ivait","ivions","iviez","ivaient"],f:["ivrai","ivras","ivra","ivrons","ivrez","ivront"],ps:["écus","écus","écut","écûmes","écûtes","écurent"],c:["ivrais","ivrais","ivrait","ivrions","ivriez","ivraient"],s:["ive","ives","ive","ivions","iviez","ivent"],si:["écusse","écusses","écût","écussions","écussiez","écussent"],ip:[null,"is",null,"ivons","ivez",null],pr:"ivant",pp:"écu",b:"ivre"}},v101:{ending:"aître",t:{p:["ais","ais","aît","aissons","aissez","aissent"],i:["aissais","aissais","aissait","aissions","aissiez","aissaient"],f:["aîtrai","aîtras","aîtra","aîtrons","aîtrez","aîtront"],ps:["us","us","ut","ûmes","ûtes","urent"],c:["aîtrais","aîtrais","aîtrait","aîtrions","aîtriez","aîtraient"],s:["aisse","aisses","aisse","aissions","aissiez","aissent"],si:["usse","usses","ût","ussions","ussiez","ussent"],ip:[null,"ais",null,"aissons","aissez",null],pr:"aissant",pp:"u",b:"aître"}},v102:{ending:"aître",t:{p:["ais","ais","aît","aissons","aissez","aissent"],i:["aissais","aissais","aissait","aissions","aissiez","aissaient"],f:["aîtrai","aîtras","aîtra","aîtrons","aîtrez","aîtront"],ps:[null,null,null,null,null,null],c:["aîtrais","aîtrais","aîtrait","aîtrions","aîtriez","aîtraient"],s:["aisse","aisses","aisse","aissions","aissiez","aissent"],si:[null,null,null,null,null,null],ip:[null,"ais",null,null,"aissez",null],pr:"aissant",pp:"u",b:"aître"}},v103:{ending:"aître",t:{p:["ais","ais","aît","aissons","aissez","aissent"],i:["aissais","aissais","aissait","aissions","aissiez","aissaient"],f:["aîtrai","aîtras","aîtra","aîtrons","aîtrez","aîtront"],ps:["us","us","ut","ûmes","ûtes","urent"],c:["aîtrais","aîtrais","aîtrait","aîtrions","aîtriez","aîtraient"],s:["aisse","aisses","aisse","aissions","aissiez","aissent"],si:["usse","usses","ût","ussions","ussiez","ussent"],ip:[null,"ais",null,"aissons","aissez",null],pr:"aissant",pp:"u",b:"aître"}},v104:{ending:"aître",t:{p:["ais","ais","aît","aissons","aissez","aissent"],i:["aissais","aissais","aissait","aissions","aissiez","aissaient"],f:["aîtrai","aîtras","aîtra","aîtrons","aîtrez","aîtront"],ps:["aquis","aquis","aquit","aquîmes","aquîtes","aquirent"],c:["aîtrais","aîtrais","aîtrait","aîtrions","aîtriez","aîtraient"],s:["aisse","aisses","aisse","aissions","aissiez","aissent"],si:["aquisse","aquisses","aquît","aquissions","aquissiez","aquissent"],ip:[null,"ais",null,"aissons","aissez",null],pr:"aissant",pp:"é",b:"aître"}},v105:{ending:"aître",t:{p:["ais","ais","aît","aissons","aissez","aissent"],i:["aissais","aissais","aissait","aissions","aissiez","aissaient"],f:["aîtrai","aîtras","aîtra","aîtrons","aîtrez","aîtront"],ps:["aquis","aquis","aquit","aquîmes","aquîtes","aquirent"],c:["aîtrais","aîtrais","aîtrait","aîtrions","aîtriez","aîtraient"],s:["aisse","aisses","aisse","aissions","aissiez","aissent"],si:["aquisse","aquisses","aquît","aquissions","aquissiez","aquissent"],ip:[null,"ais",null,"aissons","aissez",null],pr:"aissant",pp:null,b:"aître"}},v106:{ending:"oître",t:{p:["oîs","oîs","oît","oissons","oissez","oissent"],i:["oissais","oissais","oissait","oissions","oissiez","oissaient"],f:["oîtrai","oîtras","oîtra","oîtrons","oîtrez","oîtront"],ps:["us","us","ut","ûmes","ûtes","urent"],c:["oîtrais","oîtrais","oîtrait","oîtrions","oîtriez","oîtraient"],s:["oisse","oisses","oisse","oissions","oissiez","oissent"],si:["usse","usses","ût","ussions","ussiez","ussent"],ip:[null,"oîs",null,"oissons","oissez",null],pr:"oissant",pp:"û",b:"oître"}},v107:{ending:"ire",t:{p:["is","is","it","ions","iez","ient"],i:["iais","iais","iait","iions","iiez","iaient"],f:["irai","iras","ira","irons","irez","iront"],ps:["is","is","it","îmes","îtes","irent"],c:["irais","irais","irait","irions","iriez","iraient"],s:["ie","ies","ie","iions","iiez","ient"],si:["isse","isses","ît","issions","issiez","issent"],ip:[null,"is",null,"ions","iez",null],pr:"iant",pp:"i",b:"ire"}},v108:{ending:"ire",t:{p:["is","is","it","isons","isez","isent"],i:["isais","isais","isait","isions","isiez","isaient"],f:["irai","iras","ira","irons","irez","iront"],ps:["is","is","it","îmes","îtes","irent"],c:["irais","irais","irait","irions","iriez","iraient"],s:["ise","ises","ise","isions","isiez","isent"],si:["isse","isses","ît","issions","issiez","issent"],ip:[null,"is",null,"isons","isez",null],pr:"isant",pp:"is",b:"ire"}},v109:{ending:"ure",t:{p:["us","us","ut","uons","uez","uent"],i:["uais","uais","uait","uions","uiez","uaient"],f:["urai","uras","ura","urons","urez","uront"],ps:["us","us","ut","ûmes","ûtes","urent"],c:["urais","urais","urait","urions","uriez","uraient"],s:["ue","ues","ue","uions","uiez","uent"],si:["usse","usses","ût","ussions","ussiez","ussent"],ip:[null,"us",null,"uons","uez",null],pr:"uant",pp:"u",b:"ure"}},v110:{ending:"ure",t:{p:["us","us","ut","uons","uez","uent"],i:["uais","uais","uait","uions","uiez","uaient"],f:["urai","uras","ura","urons","urez","uront"],ps:["us","us","ut","ûmes","ûtes","urent"],c:["urais","urais","urait","urions","uriez","uraient"],s:["ue","ues","ue","uions","uiez","uent"],si:["usse","usses","ût","ussions","ussiez","ussent"],ip:[null,"us",null,"uons","uez",null],pr:"uant",pp:"us",b:"ure"}},v111:{ending:"re",t:{p:["s","s","t","sons","sez","sent"],i:["sais","sais","sait","sions","siez","saient"],f:["rai","ras","ra","rons","rez","ront"],ps:["sis","sis","sit","sîmes","sîtes","sirent"],c:["rais","rais","rait","rions","riez","raient"],s:["se","ses","se","sions","siez","sent"],si:["sisse","sisses","sît","sissions","sissiez","sissent"],ip:[null,"s",null,"sons","sez",null],pr:"sant",pp:"",b:"re"}},v112:{ending:"ire",t:{p:["is","is","it","isons","isez","isent"],i:["isais","isais","isait","isions","isiez","isaient"],f:["irai","iras","ira","irons","irez","iront"],ps:["is","is","it","îmes","îtes","irent"],c:["irais","irais","irait","irions","iriez","iraient"],s:["ise","ises","ise","isions","isiez","isent"],si:["isse","isses","ît","issions","issiez","issent"],ip:[null,"is",null,"isons","isez",null],pr:"isant",pp:"i",b:"ire"}},v113:{ending:"re",t:{p:["s","s","t","sons","sez","sent"],i:["sais","sais","sait","sions","siez","saient"],f:["rai","ras","ra","rons","rez","ront"],ps:["sis","sis","sit","sîmes","sîtes","sirent"],c:["rais","rais","rait","rions","riez","raient"],s:["se","ses","se","sions","siez","sent"],si:["sisse","sisses","sît","sissions","sissiez","sissent"],ip:[null,"s",null,"sons","sez",null],pr:"sant",pp:"t",b:"re"}},v114:{ending:"re",t:{p:["s","s","t","vons","vez","vent"],i:["vais","vais","vait","vions","viez","vaient"],f:["rai","ras","ra","rons","rez","ront"],ps:["vis","vis","vit","vîmes","vîtes","virent"],c:["rais","rais","rait","rions","riez","raient"],s:["ve","ves","ve","vions","viez","vent"],si:["visse","visses","vît","vissions","vissiez","vissent"],ip:[null,"s",null,"vons","vez",null],pr:"vant",pp:"t",b:"re"}},v115:{ending:"oire",t:{p:["ois","ois","oit","oyons","oyez","oient"],i:["oyais","oyais","oyait","oyions","oyiez","oyaient"],f:["oirai","oiras","oira","oirons","oirez","oiront"],ps:["us","us","ut","ûmes","ûtes","urent"],c:["oirais","oirais","oirait","oirions","oiriez","oiraient"],s:["oie","oies","oie","oyions","oyiez","oient"],si:["usse","usses","ût","ussions","ussiez","ussent"],ip:[null,"ois",null,"oyons","oyez",null],pr:"oyant",pp:"u",b:"oire"}},v116:{ending:"ire",t:{p:["is","is","it","isons","isez","isent"],i:["isais","isais","isait","isions","isiez","isaient"],f:["irai","iras","ira","irons","irez","iront"],ps:["is","is","it","îmes","îtes","irent"],c:["irais","irais","irait","irions","iriez","iraient"],s:["ise","ises","ise","isions","isiez","isent"],si:["isse","isses","ît","issions","issiez","issent"],ip:[null,"is",null,"isons","isez",null],pr:"isant",pp:"i",b:"ire"}},v117:{ending:"ire",t:{p:["is","is","it","isons","ites","isent"],i:["isais","isais","isait","isions","isiez","isaient"],f:["irai","iras","ira","irons","irez","iront"],ps:["is","is","it","îmes","îtes","irent"],c:["irais","irais","irait","irions","iriez","iraient"],s:["ise","ises","ise","isions","isiez","isent"],si:["isse","isses","ît","issions","issiez","issent"],ip:[null,"is",null,"isons","ites",null],pr:"isant",pp:"it",b:"ire"}},v118:{ending:"ire",t:{p:["is","is","it","isons","isez","isent"],i:["isais","isais","isait","isions","isiez","isaient"],f:["irai","iras","ira","irons","irez","iront"],ps:["is","is","it","îmes","îtes","irent"],c:["irais","irais","irait","irions","iriez","iraient"],s:["ise","ises","ise","isions","isiez","isent"],si:["isse","isses","ît","issions","issiez","issent"],ip:[null,"is",null,"isons","isez",null],pr:"isant",pp:"it",b:"ire"}},v119:{ending:"ire",t:{p:["is","is","it","isons","isez","isent"],i:["isais","isais","isait","isions","isiez","isaient"],f:["irai","iras","ira","irons","irez","iront"],ps:["is","is","it","îmes","îtes","irent"],c:["irais","irais","irait","irions","iriez","iraient"],s:["ise","ises","ise","isions","isiez","isent"],si:["isse","isses","ît","issions","issiez","issent"],ip:[null,"is",null,"isons","isez",null],pr:"isant",pp:"it",b:"ire"}},v120:{ending:"ire",t:{p:["is","is","it","isons","isez","isent"],i:["isais","isais","isait","isions","isiez","isaient"],f:["irai","iras","ira","irons","irez","iront"],ps:["us","us","ut","ûmes","ûtes","urent"],c:["irais","irais","irait","irions","iriez","iraient"],s:["ise","ises","ise","isions","isiez","isent"],si:["usse","usses","ût","ussions","ussiez","ussent"],ip:[null,"is",null,"isons","isez",null],pr:"isant",pp:"u",b:"ire"}},v121:{ending:"oire",t:{p:["ois","ois","oit","uvons","uvez","oivent"],i:["uvais","uvais","uvait","uvions","uviez","uvaient"],f:["oirai","oiras","oira","oirons","oirez","oiront"],ps:["us","us","ut","ûmes","ûtes","urent"],c:["oirais","oirais","oirait","oirions","oiriez","oiraient"],s:["oive","oives","oive","uvions","uviez","oivent"],si:["usse","usses","ût","ussions","ussiez","ussent"],ip:[null,"ois",null,"uvons","uvez",null],pr:"uvant",pp:"u",b:"oire"}},v122:{ending:"aire",t:{p:["ais","ais","ait","aisons","aisez","aisent"],i:["aisais","aisais","aisait","aisions","aisiez","aisaient"],f:["airai","airas","aira","airons","airez","airont"],ps:["us","us","ut","ûmes","ûtes","urent"],c:["airais","airais","airait","airions","airiez","airaient"],s:["aise","aises","aise","aisions","aisiez","aisent"],si:["usse","usses","ût","ussions","ussiez","ussent"],ip:[null,"ais",null,"aisons","aisez",null],pr:"aisant",pp:"u",b:"aire"}},v123:{ending:"aire",t:{p:["ais","ais","aît","aisons","aisez","aisent"],i:["aisais","aisais","aisait","aisions","aisiez","aisaient"],f:["airai","airas","aira","airons","airez","airont"],ps:["us","us","ut","ûmes","ûtes","urent"],c:["airais","airais","airait","airions","airiez","airaient"],s:["aise","aises","aise","aisions","aisiez","aisent"],si:["usse","usses","ût","ussions","ussiez","ussent"],ip:[null,"ais",null,"aisons","aisez",null],pr:"aisant",pp:"u",b:"aire"}},v124:{ending:"aire",t:{p:["ais","ais","ait","aisons","aites","ont"],i:["aisais","aisais","aisait","aisions","aisiez","aisaient"],f:["erai","eras","era","erons","erez","eront"],ps:["is","is","it","îmes","îtes","irent"],c:["erais","erais","erait","erions","eriez","eraient"],s:["asse","asses","asse","assions","assiez","assent"],si:["isse","isses","ît","issions","issiez","issent"],ip:[null,"ais",null,"aisons","aites",null],pr:"aisant",pp:"ait",b:"aire"}},v125:{ending:"ire",t:{p:["is","is","it","yons","yez","ient"],i:["yais","yais","yait","yions","yiez","yaient"],f:["irai","iras","ira","irons","irez","iront"],ps:[null,null,null,null,null,null],c:["irais","irais","irait","irions","iriez","iraient"],s:["ie","ies","ie","yions","yiez","ient"],si:[null,null,null,null,null,null],ip:[null,"is",null,"yons","yez",null],pr:"yant",pp:"it",b:"ire"}},v126:{ending:"ire",t:{p:["is","is","it","yons","yez","ient"],i:["yais","yais","yait","yions","yiez","yaient"],f:["irai","iras","ira","irons","irez","iront"],ps:[null,null,null,null,null,null],c:["irais","irais","irait","irions","iriez","iraient"],s:["ie","ies","ie","yions","yiez","ient"],si:[null,null,null,null,null,null],ip:[null,"is",null,"yons","yez",null],pr:"yant",pp:"it",b:"ire"}},v127:{ending:"ourdre",t:{p:[null,null,"ourd",null,null,"ourdent"],i:[null,null,"ourdait",null,null,"ourdaient"],f:[null,null,null,null,null,null],ps:[null,null,null,null,null,null],c:[null,null,null,null,null,null],s:[null,null,null,null,null,null],si:[null,null,null,null,null,null],ip:[null,null,null,null,null,null],pr:null,pp:null,b:"ourdre"}},v128:{ending:"ore",t:{p:["os","os","ôt",null,null,"osent"],i:[null,null,null,null,null,null],f:["orai","oras","ora","orons","orez","oront"],ps:[null,null,null,null,null,null],c:["orais","orais","orait","orions","oriez","oraient"],s:["ose","oses","ose","osions","osiez","osent"],si:[null,null,null,null,null,null],ip:[null,"os",null,null,null,null],pr:"osant",pp:"os",b:"ore"}},v129:{ending:"re",t:{p:["s","s","t",null,null,"sent"],i:[null,null,null,null,null,null],f:["rai","ras","ra","rons","rez","ront"],ps:[null,null,null,null,null,null],c:["rais","rais","rait","rions","riez","raient"],s:["se","ses","se","sions","siez","sent"],si:[null,null,null,null,null,null],ip:[null,"s",null,null,null,null],pr:"sant",pp:"s",b:"re"}},v130:{ending:"re",t:{p:[null,null,null,null,null,null],i:[null,null,null,null,null,null],f:[null,null,null,null,null,null],ps:[null,null,null,null,null,null],c:[null,null,null,null,null,null],s:[null,null,null,null,null,null],si:[null,null,null,null,null,null],ip:[null,null,null,null,null,null],pr:null,pp:"s",b:"re"}},v131:{ending:"re",t:{p:["s","s","t",null,null,null],i:[null,null,null,null,null,null],f:["rai","ras","ra","rons","rez","ront"],ps:[null,null,null,null,null,null],c:["rais","rais","rait","rions","riez","raient"],s:[null,null,null,null,null,null],si:[null,null,null,null,null,null],ip:[null,"s",null,null,null,null],pr:null,pp:"t",b:"re"}},v132:{ending:"re",t:{p:[null,null,"t",null,null,"ssent"],i:[null,null,"ssait",null,null,"ssaient"],f:[null,null,null,null,null,null],ps:[null,null,null,null,null,null],c:[null,null,null,null,null,null],s:[null,null,"sse",null,null,"ssent"],si:[null,null,null,null,null,null],ip:[null,null,null,null,null,null],pr:"ssant",pp:null,b:"re"}},v133:{ending:"ndre",t:{p:["ns","ns","nt","gnons","gnez","gnent"],i:["gnais","gnais","gnait","gnions","gniez","gnaient"],f:["ndrai","ndras","ndra","ndrons","ndrez","ndront"],ps:["gnis","gnis","gnit","gnîmes","gnîtes","gnirent"],c:["ndrais","ndrais","ndrait","ndrions","ndriez","ndraient"],s:["gne","gnes","gne","gnions","gniez","gnent"],si:["gnisse","gnisses","gnît","gnissions","gnissiez","gnissent"],ip:[null,"ns",null,"gnons","gnez",null],pr:"gnant",pp:"nt",b:"ndre"}},v134:{ending:"oyer",t:{p:["oie","oies","oie","oyons","oyez","oient"],i:["oyais","oyais","oyait","oyions","oyiez","oyaient"],f:["errai","erras","erra","errons","errez","erront"],ps:["oyai","oyas","oya","oyâmes","oyâtes","oyèrent"],c:["errais","errais","errait","errions","erriez","erraient"],s:["oie","oies","oie","oyions","oyiez","oient"],si:["oyasse","oyasses","oyât","oyassions","oyassiez","oyassent"],ip:[null,"oie",null,"oyons","oyez",null],pr:"oyant",pp:"oyé",b:"oyer"}},v135:{ending:"avoir",t:{p:["ai","as","a","avons","avez","ont"],i:["avais","avais","avait","avions","aviez","avaient"],f:["aurai","auras","aura","aurons","aurez","auront"],ps:["eus","eus","eut","eûmes","eûtes","eurent"],c:["aurais","aurais","aurait","aurions","auriez","auraient"],s:["aie","aies","ait","ayons","ayez","aient"],si:["eusse","eusses","eût","eussions","eussiez","eussent"],ip:[null,"aie",null,"ayons","ayez",null],pr:"ayant",pp:"eu",b:"avoir"}},v136:{ending:"être",t:{p:["suis","es","est","sommes","êtes","sont"],i:["étais","étais","était","étions","étiez","étaient"],f:["serai","seras","sera","serons","serez","seront"],ps:["fus","fus","fut","fûmes","fûtes","furent"],c:["serais","serais","serait","serions","seriez","seraient"],s:["sois","sois","soit","soyons","soyez","soient"],si:["fusse","fusses","fût","fussions","fussiez","fussent"],ip:[null,"sois",null,"soyons","soyez",null],pr:"étant",pp:"été",b:"être"}},v137:{ending:"aller",t:{p:["vais","vas","va","allons","allez","vont"],i:["allais","allais","allait","allions","alliez","allaient"],f:["irai","iras","ira","irons","irez","iront"],ps:["allai","allas","alla","allâmes","allâtes","allèrent"],c:["irais","irais","irait","irions","iriez","iraient"],s:["aille","ailles","aille","allions","alliez","aillent"],si:["allasse","allasses","allât","allassions","allassiez","allassent"],ip:[null,"va",null,"allons","allez",null],pr:"allant",pp:"allé",b:"aller"}},v138:{ending:"aroir",t:{p:[null,null,"ert",null,null,null],i:[null,null,null,null,null,null],f:[null,null,null,null,null,null],ps:[null,null,null,null,null,null],c:[null,null,null,null,null,null],s:[null,null,null,null,null,null],si:[null,null,null,null,null,null],ip:[null,null,null,null,null,null],pr:null,pp:null,b:"aroir"}},v139:{ending:"loir",t:{p:[null,null,"ut",null,null,null],i:[null,null,null,null,null,null],f:[null,null,null,null,null,null],ps:[null,null,null,null,null,null],c:[null,null,null,null,null,null],s:[null,null,null,null,null,null],si:[null,null,null,null,null,null],ip:[null,null,null,null,null,null],pr:null,pp:null,b:"loir"}},v140:{ending:"ravoir",t:{p:[null,null,null,null,null,null],i:[null,null,null,null,null,null],f:[null,null,null,null,null,null],ps:[null,null,null,null,null,null],c:[null,null,null,null,null,null],s:[null,null,null,null,null,null],si:[null,null,null,null,null,null],ip:[null,null,null,null,null,null],pr:null,pp:null,b:"ravoir"}},v141:{ending:"er",t:{p:[null,null,null,null,null,null],i:[null,null,null,null,null,null],f:[null,null,null,null,null,null],ps:[null,null,null,null,null,null],c:[null,null,null,null,null,null],s:[null,null,null,null,null,null],si:[null,null,null,null,null,null],ip:[null,null,null,null,null,null],pr:null,pp:null,b:"er"}},v142:{ending:"ir",t:{p:[null,null,null,null,null,null],i:[null,null,null,null,null,null],f:[null,null,null,null,null,null],ps:[null,null,null,null,null,null],c:[null,null,null,null,null,null],s:[null,null,null,null,null,null],si:[null,null,null,null,null,null],ip:[null,null,null,null,null,null],pr:null,pp:"u",b:"ir"}},v143:{ending:"uïr",t:{p:["is","is","it","yons","yez","ient"],i:["yais","yais","yait","yions","yiez","yaient"],f:["irai","iras","ira","irons","irez","iront"],ps:["uïs","uïs","uït","uïmes","uïtes","uïrent"],c:["irais","irais","irait","irions","iriez","iraient"],s:["ie","ies","ie","yions","yiez","ient"],si:["uïsse","uïsses","uït","uïssions","uïssiez","uïssent"],ip:[null,"is",null,"yons","yez",null],pr:"yant",pp:"uï",b:"uïr"}},v144:{ending:"re",t:{p:[null,null,null,null,null,null],i:[null,null,null,null,null,null],f:[null,null,null,null,null,null],ps:[null,null,null,null,null,null],c:[null,null,null,null,null,null],s:[null,null,null,null,null,null],si:[null,null,null,null,null,null],ip:[null,null,null,null,null,null],pr:null,pp:"s",b:"re"}},v145:{ending:"er",t:{p:[null,null,"e",null,null,null],i:[null,null,"ait",null,null,null],f:[null,null,"era",null,null,null],ps:[null,null,"a",null,null,null],c:[null,null,"erait",null,null,null],s:[null,null,"e",null,null,null],si:[null,null,"ât",null,null,null],ip:[null,null,null,null,null,null],pr:"ant",pp:"é",b:"er"}}},compound:{alias:"aux",participle:"pp",aux:{av:"avoir","êt":"être","aê":"avoir"},pc:{auxTense:"p",progAuxTense:"i"},pq:{auxTense:"i",progAuxTense:"i"},spa:{auxTense:"s",progAuxTense:"i"},spq:{auxTense:"si",progAuxTense:"i"},cp:{auxTense:"c",progAuxTense:"c"},fa:{auxTense:"f",progAuxTense:"f"}},elision:{elisionEtre:{verbe:["en","est","était"],aux:["a","aura","avait","ait","eût","aurait"],pp:["été","étés","étées"]},elidables:["la","ma","ta","sa","le","me","te","se","ce","de","ne","je","si","que","jusque","lorsque","puisque","quoique","nouveau","beau"],voyellesAccentuees:"àäéèêëïîöôùû",voyelles:"aeiouàäéèêëïîöôùû"},declension:{nI:{ending:"",declension:[{val:"",g:"m",n:"s"},{val:"",g:"f",n:"s"},{val:"",g:"m",n:"p"},{val:"",g:"f",n:"p"}]},n1:{ending:"",declension:[{val:"",g:"m",n:"p"}]},n2:{ending:"",declension:[{val:"",g:"m",n:"s"},{val:"",g:"m",n:"p"}]},n3:{ending:"",declension:[{val:"",g:"m",n:"s"},{val:"s",g:"m",n:"p"}]},n4:{ending:"",declension:[{val:"",g:"m",n:"s"},{val:"x",g:"m",n:"p"}]},n5:{ending:"al",declension:[{val:"al",g:"m",n:"s"},{val:"aux",g:"m",n:"p"}]},n6:{ending:"ail",declension:[{val:"ail",g:"m",n:"s"},{val:"aux",g:"m",n:"p"}]},n7:{ending:"ail",declension:[{val:"ail",g:"m",n:"s"},{val:"aulx",g:"m",n:"p"}]},n8:{ending:"aïeul",declension:[{val:"aïeul",g:"m",n:"s"},{val:"aïeux",g:"m",n:"p"}]},n9:{ending:"ciel",declension:[{val:"ciel",g:"m",n:"s"},{val:"cieux",g:"m",n:"p"}]},n10:{ending:"dit",declension:[{val:"dit",g:"m",n:"s"},{val:"xdits",g:"m",n:"p"}]},n11:{ending:"homme",declension:[{val:"homme",g:"m",n:"s"},{val:"shommes",g:"m",n:"p"}]},n12:{ending:"monsieur",declension:[{val:"monsieur",g:"m",n:"s"},{val:"messieurs",g:"m",n:"p"}]},n13:{ending:"monseigneur",declension:[{val:"monseigneur",g:"m",n:"s"},{val:"messeigneurs",g:"m",n:"p"}]},n14:{ending:"oeil",declension:[{val:"oeil",g:"m",n:"s"},{val:"yeux",g:"m",n:"p"}]},n15:{ending:"",declension:[{val:"",g:"f",n:"p"}]},n16:{ending:"",declension:[{val:"",g:"f",n:"s"},{val:"",g:"f",n:"p"}]},n17:{ending:"",declension:[{val:"",g:"f",n:"s"},{val:"s",g:"f",n:"p"}]},n18:{ending:"",declension:[{val:"",g:"f",n:"s"},{val:"x",g:"f",n:"p"}]},n19:{ending:"madame",declension:[{val:"madame",g:"f",n:"s"},{val:"mesdames",g:"f",n:"p"}]},n20:{ending:"mademoiselle",declension:[{val:"mademoiselle",g:"f",n:"s"},{val:"mesdemoiselles",g:"f",n:"p"}]},n21:{ending:"",declension:[{val:"",g:"m",n:"p"},{val:"",g:"f",n:"p"}]},n22:{ending:"",declension:[{val:"",g:"m",n:"p"},{val:"es",g:"f",n:"p"}]},n23:{ending:"",declension:[{val:"",g:"m",n:"s"},{val:"",g:"f",n:"s"}]},n24:{ending:"",declension:[{val:"",g:"m",n:"s"},{val:"",g:"f",n:"s"},{val:"",g:"m",n:"p"},{val:"",g:"f",n:"p"}]},n25:{ending:"",declension:[{val:"",g:"m",n:"s"},{val:"",g:"f",n:"s"},{val:"s",g:"m",n:"p"},{val:"s",g:"f",n:"p"}]},n26:{ending:"s",declension:[{val:"s",g:"m",n:"p"},{val:"es",g:"f",n:"p"}]},n27:{ending:"",declension:[{val:"",g:"m",n:"s"},{val:"e",g:"f",n:"s"},{val:"",g:"m",n:"p"},{val:"es",g:"f",n:"p"}]},n28:{ending:"",declension:[{val:"",g:"m",n:"s"},{val:"e",g:"f",n:"s"},{val:"s",g:"m",n:"p"},{val:"es",g:"f",n:"p"}]},n29:{ending:"eau",declension:[{val:"eau",g:"m",n:"s"},{val:"elle",g:"f",n:"s"},{val:"eaux",g:"m",n:"p"},{val:"elles",g:"f",n:"p"}]},n30:{ending:"",declension:[{val:"",g:"m",n:"s"},{val:"de",g:"f",n:"s"},{val:"s",g:"m",n:"p"},{val:"des",g:"f",n:"p"}]},n31:{ending:"ou",declension:[{val:"ou",g:"m",n:"s"},{val:"olle",g:"f",n:"s"},{val:"ous",g:"m",n:"p"},{val:"olles",g:"f",n:"p"}]},n32:{ending:"fou-fou",declension:[{val:"fou-fou",g:"m",n:"s"},{val:"fofolle",g:"f",n:"s"},{val:"fou-fou",g:"m",n:"p"},{val:"fofolles",g:"f",n:"p"}]},n33:{ending:"ou",declension:[{val:"ou",g:"m",n:"s"},{val:"ouse",g:"f",n:"s"},{val:"ous",g:"m",n:"p"},{val:"ouses",g:"f",n:"p"}]},n34:{ending:"",declension:[{val:"",g:"m",n:"s"},{val:"te",g:"f",n:"s"},{val:"s",g:"m",n:"p"},{val:"tes",g:"f",n:"p"}]},n35:{ending:"",declension:[{val:"",g:"m",n:"s"}]},n36:{ending:"",declension:[{val:"",g:"f",n:"s"}]},n37:{ending:"ec",declension:[{val:"ec",g:"m",n:"s"},{val:"èche",g:"f",n:"s"},{val:"ecs",g:"m",n:"p"},{val:"èches",g:"f",n:"p"}]},n38:{ending:"ef",declension:[{val:"ef",g:"m",n:"s"},{val:"ève",g:"f",n:"s"},{val:"efs",g:"m",n:"p"},{val:"èves",g:"f",n:"p"}]},n39:{ending:"er",declension:[{val:"er",g:"m",n:"s"},{val:"ère",g:"f",n:"s"},{val:"ers",g:"m",n:"p"},{val:"ères",g:"f",n:"p"}]},n40:{ending:"et",declension:[{val:"et",g:"m",n:"s"},{val:"ète",g:"f",n:"s"},{val:"ets",g:"m",n:"p"},{val:"ètes",g:"f",n:"p"}]},n41:{ending:"ès",declension:[{val:"ès",g:"m",n:"s"},{val:"esse",g:"f",n:"s"},{val:"ès",g:"m",n:"p"},{val:"esses",g:"f",n:"p"}]},n42:{ending:"ès",declension:[{val:"ès",g:"m",n:"s"},{val:"èze",g:"f",n:"s"},{val:"ès",g:"m",n:"p"},{val:"èzes",g:"f",n:"p"}]},n43:{ending:"nègre",declension:[{val:"nègre",g:"m",n:"s"},{val:"négresse",g:"f",n:"s"},{val:"nègres",g:"m",n:"p"},{val:"négresses",g:"f",n:"p"}]},n44:{ending:"ais",declension:[{val:"ais",g:"m",n:"s"},{val:"aîche",g:"f",n:"s"},{val:"ais",g:"m",n:"p"},{val:"aîches",g:"f",n:"p"}]},n45:{ending:"igu",declension:[{val:"igu",g:"m",n:"s"},{val:"iguë",g:"f",n:"s"},{val:"igus",g:"m",n:"p"},{val:"iguës",g:"f",n:"p"}]},n46:{ending:"f",declension:[{val:"f",g:"m",n:"s"},{val:"ve",g:"f",n:"s"},{val:"fs",g:"m",n:"p"},{val:"ves",g:"f",n:"p"}]},n47:{ending:"al",declension:[{val:"al",g:"m",n:"s"},{val:"ale",g:"f",n:"s"},{val:"aux",g:"m",n:"p"},{val:"ales",g:"f",n:"p"}]},n48:{ending:"l",declension:[{val:"l",g:"m",n:"s"},{val:"lle",g:"f",n:"s"},{val:"ls",g:"m",n:"p"},{val:"lles",g:"f",n:"p"}]},n49:{ending:"n",declension:[{val:"n",g:"m",n:"s"},{val:"nne",g:"f",n:"s"},{val:"ns",g:"m",n:"p"},{val:"nnes",g:"f",n:"p"}]},n50:{ending:"s",declension:[{val:"s",g:"m",n:"s"},{val:"sse",g:"f",n:"s"},{val:"s",g:"m",n:"p"},{val:"sses",g:"f",n:"p"}]},n51:{ending:"t",declension:[{val:"t",g:"m",n:"s"},{val:"tte",g:"f",n:"s"},{val:"ts",g:"m",n:"p"},{val:"ttes",g:"f",n:"p"}]},n52:{ending:"",declension:[{val:"",g:"m",n:"s"},{val:"sse",g:"f",n:"s"},{val:"s",g:"m",n:"p"},{val:"sses",g:"f",n:"p"}]},n53:{ending:"x",declension:[{val:"x",g:"m",n:"s"},{val:"sse",g:"f",n:"s"},{val:"x",g:"m",n:"p"},{val:"sses",g:"f",n:"p"}]},n54:{ending:"x",declension:[{val:"x",g:"m",n:"s"},{val:"se",g:"f",n:"s"},{val:"x",g:"m",n:"p"},{val:"ses",g:"f",n:"p"}]},n55:{ending:"eur",declension:[{val:"eur",g:"m",n:"s"},{val:"euse",g:"f",n:"s"},{val:"eurs",g:"m",n:"p"},{val:"euses",g:"f",n:"p"}]},n56:{ending:"eur",declension:[{val:"eur",g:"m",n:"s"},{val:"rice",g:"f",n:"s"},{val:"eurs",g:"m",n:"p"},{val:"rices",g:"f",n:"p"}]},n57:{ending:"sauveur",declension:[{val:"sauveur",g:"m",n:"s"},{val:"salvatrice",g:"f",n:"s"},{val:"sauveurs",g:"m",n:"p"},{val:"salvatrices",g:"f",n:"p"}]},n58:{ending:"eur",declension:[{val:"eur",g:"m",n:"s"},{val:"eresse",g:"f",n:"s"},{val:"eurs",g:"m",n:"p"},{val:"eresses",g:"f",n:"p"}]},n59:{ending:"er",declension:[{val:"er",g:"m",n:"s"},{val:"eresse",g:"f",n:"s"},{val:"ers",g:"m",n:"p"},{val:"eresses",g:"f",n:"p"}]},n60:{ending:"c",declension:[{val:"c",g:"m",n:"s"},{val:"que",g:"f",n:"s"},{val:"cs",g:"m",n:"p"},{val:"ques",g:"f",n:"p"}]},n61:{ending:"anc",declension:[{val:"anc",g:"m",n:"s"},{val:"anche",g:"f",n:"s"},{val:"ancs",g:"m",n:"p"},{val:"anches",g:"f",n:"p"}]},n62:{ending:"duc",declension:[{val:"duc",g:"m",n:"s"},{val:"duchesse",g:"f",n:"s"},{val:"ducs",g:"m",n:"p"},{val:"duchesses",g:"f",n:"p"}]},n63:{ending:"e",declension:[{val:"e",g:"m",n:"s"},{val:"esque",g:"f",n:"s"},{val:"es",g:"m",n:"p"},{val:"esques",g:"f",n:"p"}]},n64:{ending:"ong",declension:[{val:"ong",g:"m",n:"s"},{val:"ongue",g:"f",n:"s"},{val:"ongs",g:"m",n:"p"},{val:"ongues",g:"f",n:"p"}]},n65:{ending:"in",declension:[{val:"in",g:"m",n:"s"},{val:"igne",g:"f",n:"s"},{val:"ins",g:"m",n:"p"},{val:"ignes",g:"f",n:"p"}]},n66:{ending:"",declension:[{val:"",g:"m",n:"s"},{val:"e",g:"f",n:"s"}]},n67:{ending:"iers",declension:[{val:"iers",g:"m",n:"s"},{val:"ierce",g:"f",n:"s"},{val:"iers",g:"m",n:"p"},{val:"ierces",g:"f",n:"p"}]},n68:{ending:"ant",declension:[{val:"ant",g:"m",n:"s"},{val:"antine",g:"f",n:"s"},{val:"ants",g:"m",n:"p"},{val:"antines",g:"f",n:"p"}]},n69:{ending:"ut",declension:[{val:"ut",g:"m",n:"s"},{val:"use",g:"f",n:"s"},{val:"uts",g:"m",n:"p"},{val:"uses",g:"f",n:"p"}]},n70:{ending:"doux",declension:[{val:"doux",g:"m",n:"s"},{val:"douce",g:"f",n:"s"},{val:"doux",g:"m",n:"p"},{val:"douces",g:"f",n:"p"}]},n71:{ending:"empereur",declension:[{val:"empereur",g:"m",n:"s"},{val:"impératrice",g:"f",n:"s"},{val:"empereurs",g:"m",n:"p"},{val:"impératrices",g:"f",n:"p"}]},n72:{ending:"hébreu",declension:[{val:"hébreu",g:"m",n:"s"},{val:"hébraïque",g:"f",n:"s"},{val:"hébreux",g:"m",n:"p"},{val:"hébraïques",g:"f",n:"p"}]},n73:{ending:"vieux",declension:[{val:"vieux",g:"m",n:"s"},{val:"vieille",g:"f",n:"s"},{val:"vieux",g:"m",n:"p"},{val:"vieilles",g:"f",n:"p"}]},n74:{ending:"c",declension:[{val:"c",g:"m",n:"s"},{val:"cque",g:"f",n:"s"},{val:"cs",g:"m",n:"p"},{val:"cques",g:"f",n:"p"}]},n75:{ending:"quelqu'un",declension:[{val:"quelqu'un",g:"m",n:"s"},{val:"quelqu'une",g:"f",n:"s"},{val:"quelques-uns",g:"m",n:"p"},{val:"quelques-unes",g:"f",n:"p"}]},n76:{ending:"tout",declension:[{val:"tout",g:"m",n:"s"},{val:"toute",g:"f",n:"s"},{val:"tous",g:"m",n:"p"},{val:"toutes",g:"f",n:"p"}]},n77:{ending:"us",declension:[{val:"us",g:"m",n:"s"},{val:"i",g:"m",n:"p"}]},n78:{ending:"um",declension:[{val:"um",g:"m",n:"s"},{val:"a",g:"m",n:"p"}]},n79:{ending:"um",declension:[{val:"um",g:"m",n:"s"},{val:"a",g:"f",n:"s"},{val:"a",g:"m",n:"p"},{val:"a",g:"f",n:"p"}]},n80:{ending:"",declension:[{val:"",g:"m",n:"s"},{val:"es",g:"m",n:"p"}]},n81:{ending:"eu",declension:[{val:"eu",g:"m",n:"s"},{val:"ei",g:"m",n:"p"}]},n82:{ending:"man",declension:[{val:"man",g:"m",n:"s"},{val:"men",g:"m",n:"p"}]},n83:{ending:"y",declension:[{val:"y",g:"m",n:"s"},{val:"ies",g:"m",n:"p"}]},n84:{ending:"man",declension:[{val:"man",g:"f",n:"s"},{val:"men",g:"f",n:"p"}]},n85:{ending:"y",declension:[{val:"y",g:"f",n:"s"},{val:"ies",g:"f",n:"p"}]},n86:{ending:"",declension:[{val:"",g:"m",n:"s"},{val:"i",g:"m",n:"p"}]},n87:{ending:"o",declension:[{val:"o",g:"m",n:"s"},{val:"i",g:"m",n:"p"}]},n88:{ending:"o",declension:[{val:"o",g:"m",n:"s"},{val:"o",g:"f",n:"s"},{val:"i",g:"m",n:"p"},{val:"i",g:"f",n:"p"}]},n89:{ending:"or",declension:[{val:"or",g:"m",n:"s"},{val:"ores",g:"m",n:"p"}]},n90:{ending:"o",declension:[{val:"o",g:"m",n:"s"},{val:"a",g:"m",n:"p"}]},n91:{ending:"o",declension:[{val:"o",g:"m",n:"s"},{val:"a",g:"f",n:"s"},{val:"a",g:"m",n:"p"},{val:"a",g:"f",n:"p"}]},n92:{ending:"",declension:[{val:"",g:"m",n:"s"},{val:"e",g:"m",n:"p"}]},n93:{ending:"",declension:[{val:"",g:"m",n:"s"},{val:"er",g:"m",n:"p"}]},n94:{ending:"ar",declension:[{val:"ar",g:"m",n:"s"},{val:"our",g:"m",n:"p"}]},n95:{ending:"",declension:[{val:"",g:"m",n:"s"},{val:"a",g:"m",n:"p"}]},n96:{ending:"oy",declension:[{val:"oy",g:"m",n:"s"},{val:"oyim",g:"m",n:"p"}]},n97:{ending:"oï",declension:[{val:"oï",g:"m",n:"s"},{val:"oïm",g:"m",n:"p"}]},n98:{ending:"ai",declension:[{val:"ai",g:"m",n:"s"},{val:"ayin",g:"m",n:"p"}]},n99:{ending:"e",declension:[{val:"e",g:"m",n:"s"},{val:"i",g:"m",n:"p"}]},n100:{ending:"a",declension:[{val:"a",g:"f",n:"s"},{val:"ae",g:"f",n:"p"}]},n101:{ending:"gens",declension:[{val:"gens",g:"f",n:"s"},{val:"gentes",g:"f",n:"p"}]},n102:{ending:"au",declension:[{val:"au",g:"m",n:"s"},{val:"aude",g:"f",n:"s"},{val:"aux",g:"m",n:"p"},{val:"audes",g:"f",n:"p"}]},n103:{ending:"ète",declension:[{val:"ète",g:"m",n:"s"},{val:"étesse",g:"f",n:"s"},{val:"ètes",g:"m",n:"p"},{val:"étesses",g:"f",n:"p"}]},n104:{ending:"ain",declension:[{val:"ain",g:"m",n:"s"},{val:"ine",g:"f",n:"s"},{val:"ains",g:"m",n:"p"},{val:"ines",g:"f",n:"p"}]},n105:{ending:"in",declension:[{val:"in",g:"m",n:"s"},{val:"ineresse",g:"f",n:"s"},{val:"ins",g:"m",n:"p"},{val:"ineresses",g:"f",n:"p"}]},n106:{ending:"eg",declension:[{val:"eg",g:"m",n:"s"},{val:"ègue",g:"f",n:"s"},{val:"egs",g:"m",n:"p"},{val:"ègues",g:"f",n:"p"}]},n107:{ending:"targui",declension:[{val:"targui",g:"m",n:"s"},{val:"targuia",g:"f",n:"s"},{val:"touareg",g:"m",n:"p"},{val:"targuiat",g:"f",n:"p"}]},n108:{ending:"eau",declension:[{val:"eau",g:"m",n:"s"},{val:"elle",g:"f",n:"s"},{val:"eaux",g:"m",n:"p"},{val:"elles",g:"f",n:"p"}]},n109:{ending:"ou",declension:[{val:"ou",g:"m",n:"s"},{val:"olle",g:"f",n:"s"},{val:"ous",g:"m",n:"p"},{val:"olles",g:"f",n:"p"}]},pn0:{ending:"on",declension:[{val:"on",g:"x",n:"s",pe:3}]},pn1:{ending:"je",declension:[{val:"je",g:"x",n:"s",pe:1},{val:"nous",g:"x",n:"p",pe:1},{val:"tu",g:"x",n:"s",pe:2},{val:"vous",g:"x",n:"p",pe:2},{val:"il",g:"m",n:"s",pe:3},{val:"elle",g:"f",n:"s",pe:3},{val:"ils",g:"m",n:"p",pe:3},{val:"elles",g:"f",n:"p",pe:3}]},pn2:{ending:"me",declension:[{val:"me",g:"x",n:"s",pe:1},{val:"nous",g:"x",n:"p",pe:1},{val:"te",g:"x",n:"s",pe:2},{val:"vous",g:"x",n:"p",pe:2},{val:"le",g:"m",n:"s",pe:3},{val:"la",g:"f",n:"s",pe:3},{val:"les",g:"x",n:"p",pe:3}]},pn3:{ending:"me*coi",declension:[{val:"me",g:"x",n:"s",pe:1},{val:"nous",g:"x",n:"p",pe:1},{val:"te",g:"x",n:"s",pe:2},{val:"vous",g:"x",n:"p",pe:2},{val:"lui",g:"x",n:"s",pe:3},{val:"leur",g:"x",n:"p",pe:3}]},pn4:{ending:"moi",declension:[{val:"moi",g:"x",n:"s",pe:1},{val:"nous",g:"x",n:"p",pe:1},{val:"toi",g:"x",n:"s",pe:2},{val:"vous",g:"x",n:"p",pe:2},{val:"lui",g:"m",n:"s",pe:3},{val:"elle",g:"f",n:"s",pe:3},{val:"eux",g:"m",n:"p",pe:3},{val:"elles",g:"f",n:"p",pe:3}]},pn5:{ending:"mézigue",declension:[{val:"mézigue",g:"m",n:"s",pe:1},{val:"mézigues",g:"m",n:"p",pe:1},{val:"tézigue",g:"m",n:"s",pe:2},{val:"tézigues",g:"m",n:"p",pe:2},{val:"sézigue",g:"m",n:"s",pe:3},{val:"sézigues",g:"m",n:"p",pe:3}]},pn6:{ending:"me*refl",declension:[{val:"me",g:"x",n:"s",pe:1},{val:"nous",g:"x",n:"p",pe:1},{val:"te",g:"x",n:"s",pe:2},{val:"vous",g:"x",n:"p",pe:2},{val:"se",g:"x",n:"x",pe:3}]},pn7:{ending:"moi*refl",declension:[{val:"moi",g:"x",n:"s",pe:1},{val:"nous",g:"x",n:"p",pe:1},{val:"toi",g:"x",n:"s",pe:2},{val:"vous",g:"x",n:"p",pe:2},{val:"soi",g:"x",n:"x",pe:3}]},pn8:{ending:"moi-même",declension:[{val:"moi-même",g:"x",n:"s",pe:1},{val:"nous-mêmes",g:"x",n:"p",pe:1},{val:"toi-même",g:"x",n:"s",pe:2},{val:"vous-mêmes",g:"x",n:"p",pe:2},{val:"lui-même",g:"m",n:"s",pe:3},{val:"elle-même",g:"f",n:"s",pe:3},{val:"eux-mêmes",g:"m",n:"p",pe:3},{val:"elles-mêmes",g:"f",n:"p",pe:3}]},pn9:{ending:"soi-même",declension:[{val:"soi-même",g:"x",n:"s",pe:3}]},pn10:{ending:"en",declension:[{val:"en",g:"x",n:"x"}]},pn11:{ending:"y",declension:[{val:"y",g:"x",n:"x"}]},pn12:{ending:"mien",declension:[{val:"mien",g:"m",n:"s",pe:1},{val:"mienne",g:"f",n:"s",pe:1},{val:"miens",g:"m",n:"p",pe:1},{val:"miennes",g:"f",n:"p",pe:1},{val:"tien",g:"m",n:"s",pe:2},{val:"tienne",g:"f",n:"s",pe:2},{val:"tiens",g:"m",n:"p",pe:2},{val:"tiennes",g:"f",n:"p",pe:2},{val:"sien",g:"m",n:"s",pe:3},{val:"sienne",g:"f",n:"s",pe:3},{val:"siens",g:"m",n:"p",pe:3},{val:"siennes",g:"f",n:"p",pe:3}]},pn13:{ending:"nôtre",declension:[{val:"nôtre",g:"m",n:"s",pe:1},{val:"nôtre",g:"f",n:"s",pe:1},{val:"nôtres",g:"m",n:"p",pe:1},{val:"nôtres",g:"f",n:"p",pe:1},{val:"vôtre",g:"m",n:"s",pe:2},{val:"vôtre",g:"f",n:"s",pe:2},{val:"vôtres",g:"m",n:"p",pe:2},{val:"vôtres",g:"f",n:"p",pe:2},{val:"leur",g:"m",n:"s",pe:3},{val:"leur",g:"f",n:"s",pe:3},{val:"leurs",g:"m",n:"p",pe:3},{val:"leurs",g:"f",n:"p",pe:3}]},pn14:{ending:"ce",declension:[{val:"ce",g:"n",n:"s",pe:3}]},pn15:{ending:"celui",declension:[{val:"celui",g:"m",n:"s",pe:3},{val:"celle",g:"f",n:"s",pe:3},{val:"ceux",g:"m",n:"p",pe:3},{val:"celles",g:"f",n:"p",pe:3}]},pn16:{ending:"ceci",declension:[{val:"ceci",g:"n",n:"s",pe:3}]},pn17:{ending:"celui-ci",declension:[{val:"celui-ci",g:"m",n:"s",pe:3},{val:"celle-ci",g:"f",n:"s",pe:3},{val:"ceux-ci",g:"m",n:"p",pe:3},{val:"celles-ci",g:"f",n:"p",pe:3}]},pn18:{ending:"ça",declension:[{val:"ça",g:"n",n:"s",pe:3}]},pn19:{ending:"cela",declension:[{val:"cela",g:"n",n:"s",pe:3}]},pn20:{ending:"celui-là",declension:[{val:"celui-là",g:"m",n:"s",pe:3},{val:"celle-là",g:"f",n:"s",pe:3},{val:"ceux-là",g:"m",n:"p",pe:3},{val:"celles-là",g:"f",n:"p",pe:3}]},pn21:{ending:"qui",declension:[{val:"qui",g:"m",n:"s",pe:3},{val:"qui",g:"f",n:"s",pe:3},{val:"qui",g:"m",n:"p",pe:3},{val:"qui",g:"f",n:"p",pe:3}]},pn22:{ending:"que",declension:[{val:"que",g:"m",n:"s"},{val:"que",g:"f",n:"s"},{val:"que",g:"m",n:"p"},{val:"que",g:"f",n:"p"}]},pn23:{ending:"dont",declension:[{val:"dont",g:"m",n:"s"},{val:"dont",g:"f",n:"s"},{val:"dont",g:"m",n:"p"},{val:"dont",g:"f",n:"p"}]},pn24:{ending:"lequel",declension:[{val:"lequel",g:"m",n:"s"},{val:"laquelle",g:"f",n:"s"},{val:"lesquels",g:"m",n:"p"},{val:"lesquelles",g:"f",n:"p"}]},pn25:{ending:"auquel",declension:[{val:"auquel",g:"m",n:"s"},{val:"à laquelle",g:"f",n:"s"},{val:"auxquels",g:"m",n:"p"},{val:"auxquelles",g:"f",n:"p"}]},pn26:{ending:"duquel",declension:[{val:"duquel",g:"m",n:"s"},{val:"de laquelle",g:"f",n:"s"},{val:"desquels",g:"m",n:"p"},{val:"desquelles",g:"f",n:"p"}]},pn27:{ending:"où",declension:[{val:"où"}]},pn28:{ending:"quand",declension:[{val:"quand"}]},pn29:{ending:"quoi",declension:[{val:"quoi"}]},pn30:{ending:"qui",declension:[{val:"qui"}]},pn31:{ending:"que",declension:[{val:"que"}]},pn32:{ending:"comment",declension:[{val:"comment"}]},pn33:{ending:"combien",declension:[{val:"combien"}]},pn34:{ending:"pourquoi",declension:[{val:"pourquoi"}]},pn35:{ending:"",declension:[{val:"",g:"m",n:"s"},{val:"le",g:"f",n:"s"},{val:"s",g:"m",n:"p"},{val:"lles",g:"f",n:"p"}]},d1:{ending:"le",declension:[{val:"le",g:"m",n:"s"},{val:"la",g:"f",n:"s"},{val:"les",g:"m",n:"p"},{val:"les",g:"f",n:"p"}]},d2:{ending:"au",declension:[{val:"au",g:"m",n:"s"},{val:"à la",g:"f",n:"s"},{val:"aux",g:"m",n:"p"},{val:"aux",g:"f",n:"p"}]},d3:{ending:"du",declension:[{val:"du",g:"m",n:"s"},{val:"de la",g:"f",n:"s"},{val:"des",g:"m",n:"p"},{val:"des",g:"f",n:"p"}]},d4:{ending:"un",declension:[{val:"un",g:"m",n:"s"},{val:"une",g:"f",n:"s"},{val:"des",g:"m",n:"p"},{val:"des",g:"f",n:"p"}]},d5:{ending:"mon",declension:[{val:"mon",g:"m",n:"s",pe:1},{val:"ma",g:"f",n:"s",pe:1},{val:"mes",g:"m",n:"p",pe:1},{val:"mes",g:"f",n:"p",pe:1},{val:"ton",g:"m",n:"s",pe:2},{val:"ta",g:"f",n:"s",pe:2},{val:"tes",g:"m",n:"p",pe:2},{val:"tes",g:"f",n:"p",pe:2},{val:"son",g:"m",n:"s",pe:3},{val:"sa",g:"f",n:"s",pe:3},{val:"ses",g:"m",n:"p",pe:3},{val:"ses",g:"f",n:"p",pe:3}]},d6:{ending:"notre",declension:[{val:"notre",g:"m",n:"s",pe:1},{val:"notre",g:"f",n:"s",pe:1},{val:"nos",g:"m",n:"p",pe:1},{val:"nos",g:"f",n:"p",pe:1},{val:"votre",g:"m",n:"s",pe:2},{val:"votre",g:"f",n:"s",pe:2},{val:"vos",g:"m",n:"p",pe:2},{val:"vos",g:"f",n:"p",pe:2},{val:"leur",g:"m",n:"s",pe:3},{val:"leur",g:"f",n:"s",pe:3},{val:"leurs",g:"m",n:"p",pe:3},{val:"leurs",g:"f",n:"p",pe:3}]},d7:{ending:"",declension:[{val:"",g:"m",n:"s"},{val:"tte",g:"f",n:"s"},{val:"s",g:"m",n:"p"},{val:"s",g:"f",n:"p"}]},d8:{ending:"",declension:[{val:"",g:"m",n:"s"},{val:"le",g:"f",n:"s"},{val:"s",g:"m",n:"p"},{val:"les",g:"f",n:"p"}]}},punctuation:{pc1:{b:"",a:""},pc2:{b:" ",a:" "},pc3:{b:" ",a:""},pc4:{b:"",a:" "},pc5:{b:" ",a:"",pos:"l"},pc6:{b:"",a:" ",pos:"r"},pc7:{b:" ",a:" ",pos:"l"},pc8:{b:" ",a:" ",pos:"r"}},sentence_type:{exc:{type:"exclamative",punctuation:"!"},int:{type:"interrogative",punctuation:"?",prefix:{base:"est-ce que",yon:"est-ce que",wos:"qui est-ce qui",wod:"qui est-ce que",woi:"à qui est-ce que",wad:"qu'est-ce que",whe:"où est-ce que",how:"comment est-ce que",whn:"quand est-ce que",why:"pourquoi est-ce que",muc:"combien"}},dec:{type:"declarative",punctuation:"."}},propositional:{base:"que",subject:"qui",pronoun:{alias:"pro",type:"Pro"},cdInfo:{alias:"cdInfo"}},regular:{av:{ending:"",option:[{val:""}]},ave:{ending:"e",option:[{val:"e"},{val:"'"}]},pp:{ending:"",option:[{val:""}]},ppe:{ending:"e",option:[{val:"e"},{val:"'"}]}},verb_option:{neg:{prep1:"ne",prep2:"pas",autres:["pas","jamais","plus","guère","nullement","rien","que"]},prog:{aux:"être",keyword:"en train de"},modalityVerb:{possibility:"pouvoir",permission:"pouvoir",necessity:"devoir",willingness:"vouloir",obligation:"devoir"}},usePronoun:{S:"je",VP:"le",PP:"moi",Pro:"moi"},date:{format:{non_natural:{"year-month-date-day":"[l] [d]/[M]/[Y]","year-month-date":"[d]/[M]/[Y]","year-month":"[M]/[Y]","month-date":"[d]/[M]","month-date-day":"[l] [d]/[M]",year:"[Y]",month:"[m]",date:"[d]",day:"[l]","hour:minute:second":"[H0]:[m0]:[s0]","hour:minute":"[H0]:[m0]","minute:second":"[m0]:[s0]",hour:"[H]",minute:"[m]",second:"[s]"},natural:{"year-month-date-day":"le [l] [d] [F] [Y]","year-month-date":"le [d] [F] [Y]","year-month":"en [F] [Y]","month-date":"le [d] [F]","month-date-day":"le [l] [d] [F]",year:"en [Y]",month:"en [F]",date:"le [d]",day:"le [l]","hour:minute:second":"à [H] h [m] min [s] s","hour:minute":"à [H] h [m]","minute:second":"à [m] min [s] s",hour:"à [H] h",minute:"à [i] min",second:"à [s] s"},relative_time:{"-":"il y a [x] jours","-6":"[l] dernier","-5":"[l] dernier","-4":"[l] dernier","-3":"[l] dernier","-2":"avant-hier","-1":"hier",0:"aujourd'hui",1:"demain",2:"après-demain",3:"[l] prochain",4:"[l] prochain",5:"[l] prochain",6:"[l] prochain","+":"dans [x] jours"}},text:{weekday:["dimanche","lundi","mardi","mercredi","jeudi","vendredi","samedi"],month:{1:"janvier",2:"février",3:"mars",4:"avril",5:"mai",6:"juin",7:"juillet",8:"août",9:"septembre",10:"octobre",11:"novembre",12:"décembre"}}},number:{symbol:{group:" ",decimal:","},number:["zéro"]},union:"ou"};exports.N=N,exports.A=A,exports.Pro=Pro,exports.D=D,exports.V=V,exports.Adv=Adv,exports.P=P,exports.C=C,exports.Q=Q,exports.S=S,exports.SP=SP,exports.CP=CP,exports.VP=VP,exports.NP=NP,exports.AP=AP,exports.PP=PP,exports.AdvP=AdvP,exports.DT=DT,exports.NO=NO,exports.addToLexicon=addToLexicon,exports.updateLexicon=updateLexicon,exports.getLemma=getLemma,exports.getLanguage=getLanguage,exports.oneOf=oneOf,exports.setExceptionOnWarning=setExceptionOnWarning,exports.jsRealB_version=jsRealB_version,exports.jsRealB_dateCreated=jsRealB_dateCreated,void 0!==lexiconEn&&(exports.lexiconEn=lexiconEn),void 0!==loadEn&&(exports.loadEn=loadEn),void 0!==lexiconFr&&(exports.lexiconFr=lexiconFr),void 0!==loadFr&&(exports.loadFr=loadFr);var checkAmbiguities=!1;function isConstituent(obj){return obj instanceof Constituent}function showConjugation(conjugations,mot,query,terminaison){var regexp=new RegExp("^"+query+"$"),$div=$(""),found=!1;for(no in conjugations)if(regexp.test(terminaison?conjugations[no].ending:no)){found=!0;for(var conjugation=conjugations[no],$caption=$(""),$thead=$(""),lesTemps=($tbody=$(""),conjugation.t),nomTemps=Object.keys(lesTemps),nbTemps=nomTemps.length,i=0;i");$div.append($("
").html(mot+" "+no+" :: "+conjugation.ending),$tbody=$("
tempsvaleurs
"+nomTemps[i]+""+lesTemps[nomTemps[i]]+"
").append($caption,$thead,$tbody))}return found?$div:$("

"+query+":"+("fr"==lang?"conjugaison non trouvée":"conjugation not found")+"

")}function showDeclension(declensions,mot,query,terminaison){var regexp=new RegExp("^"+query+"$"),$div=$(""),found=!1;for(no in declensions)if(regexp.test(terminaison?declensions[no].ending:no)){found=!0;var declension=declensions[no],$caption=$(""),$thead=$(""),i=($tbody=$(""),0);i");for(var j=0;j"+lines[i][fields[j]]+"");$tbody.append($tr)}$div.append($("
").html(mot+" "+no+" :: "+declension.ending),lines=declension.declension,nbLines=lines.length,fields=["val"],line0=lines[0];for(var field in line0)fields.indexOf(field)<0&&fields.push(field);for(var nbFields=fields.length,$tbody=$("
"+fields.join("")+"
").append($caption,$thead,$tbody))}return found?$div:$("

"+query+":"+("fr"==lang?"déclinaison non trouvée":"declension not found")+"

")}function showLemmata(lemmata){console.log("-------");var keys=Array.from(lemmata.keys());keys.sort();for(var i=0;i %s != %s",jsRexp,genWord,word)}var l=lemmata.get(word);void 0===l&&lemmata.set(word,l=[]),l.push(jsRexp)}function genExp(declension,pos,entry,lexiconEntry){var out=pos+'("'+entry+'")';switch(pos){case"N":var g=lexiconEntry.g;if("en"==lemmataLang||declension.g==g||"x"==declension.g)return out+("p"==declension.n?'.n("p")':"");break;case"Pro":case"D":var defGender="fr"==lemmataLang?"m":"n";if(void 0!==(g=declension.g)&&"x"!=g&&"n"!=g||(g=defGender),out+='.g("'+g+'")',void 0!==(n=declension.n)&&"x"!=n||(n="s"),out+="s"!=n?'.n("'+n+'")':"","pe"in declension){var pe=declension.pe;out+=3!=pe?".pe("+pe+")":""}return"own"in declension&&(out+='.ow("'+declension.own+'")'),out;case"A":var n;return"fr"==lemmataLang?(void 0!==(g=declension.g)&&"x"!=g||(g="m"),void 0===(n=declension.n)&&(n="s"),out+("m"!=g?'.g("'+g+'")':"")+("s"!=n?'.n("'+n+'")':"")):out+(null==(f=declension.f)?"":'.f("'+f+'")');case"Adv":return"fr"==lemmataLang?out:out+(null==(f=declension.f)?"":'.f("'+f+'")');var f;default:console.log("***POS not implemented:%s",pos)}return null}function expandConjugation(lexicon,lemmata,rules,entry,tab,conjug){if(null!=(conjug=rules.conjugation[tab])){var ending=conjug.ending,endRadical=entry.length-ending.length,radical=entry.slice(0,endRadical);if(entry.slice(endRadical)==ending)for(var tenses=Object.keys(conjug.t),k=0;k=3?"p":"s";addLemma(lemmata,radical+persons[pe],'V("'+entry+'")'+("p"!=t?'.t("'+t+'")':"")+(3!=pe3?".pe("+pe3+")":"")+("s"!=n?'.n("'+n+'")':""))}}else"string"==typeof persons?addLemma(lemmata,radical+persons,'V("'+entry+'")'+("p"!=t?'.t("'+t+'")':"")):console.log("***Strange persons:",entry,tenses,k,persons)}else console.log("strange ending:",entry,":",ending)}}function expandDeclension(lexicon,lemmata,rules,entry,pos,tabs){for(var k=0;ka==b?0:removeAccent(a) 1 && indexOf(match, "") > -1) { - r2 = RegExp(this.source, real.replace.call(getNativeFlags(this), "g", "")); - real.replace.call(str.slice(match.index), r2, function () { - for (var i = 1; i < arguments.length - 2; i++) { - if (arguments[i] === undefined) - match[i] = undefined; - } - }); - } - if (this._xregexp && this._xregexp.captureNames) { - for (var i = 1; i < match.length; i++) { - name = this._xregexp.captureNames[i - 1]; - if (name) - match[name] = match[i]; - } - } - if (!compliantLastIndexIncrement && this.global && !match[0].length && (this.lastIndex > match.index)) - this.lastIndex--; - } - return match; - }; - if (!compliantLastIndexIncrement) { - RegExp.prototype.test = function (str) { - var match = real.exec.call(this, str); - if (match && this.global && !match[0].length && (this.lastIndex > match.index)) - this.lastIndex--; - return !!match; - }; - } - - function getNativeFlags (regex) { - return (regex.global ? "g" : "") + - (regex.ignoreCase ? "i" : "") + - (regex.multiline ? "m" : "") + - (regex.extended ? "x" : "") + // Proposed for ES4; included in AS3 - (regex.sticky ? "y" : ""); - } - - function indexOf (array, item, from) { - if (Array.prototype.indexOf) // Use the native array method if available - return array.indexOf(item, from); - for (var i = from || 0; i < array.length; i++) { - if (array[i] === item) - return i; - } - return -1; - } - -}); - -ace.define('ace/lib/es5-shim', ['require', 'exports', 'module' ], function(require, exports, module) { - -function Empty() {} - -if (!Function.prototype.bind) { - Function.prototype.bind = function bind(that) { // .length is 1 - var target = this; - if (typeof target != "function") { - throw new TypeError("Function.prototype.bind called on incompatible " + target); - } - var args = slice.call(arguments, 1); // for normal call - var bound = function () { - - if (this instanceof bound) { - - var result = target.apply( - this, - args.concat(slice.call(arguments)) - ); - if (Object(result) === result) { - return result; - } - return this; - - } else { - return target.apply( - that, - args.concat(slice.call(arguments)) - ); - - } - - }; - if(target.prototype) { - Empty.prototype = target.prototype; - bound.prototype = new Empty(); - Empty.prototype = null; - } - return bound; - }; -} -var call = Function.prototype.call; -var prototypeOfArray = Array.prototype; -var prototypeOfObject = Object.prototype; -var slice = prototypeOfArray.slice; -var _toString = call.bind(prototypeOfObject.toString); -var owns = call.bind(prototypeOfObject.hasOwnProperty); -var defineGetter; -var defineSetter; -var lookupGetter; -var lookupSetter; -var supportsAccessors; -if ((supportsAccessors = owns(prototypeOfObject, "__defineGetter__"))) { - defineGetter = call.bind(prototypeOfObject.__defineGetter__); - defineSetter = call.bind(prototypeOfObject.__defineSetter__); - lookupGetter = call.bind(prototypeOfObject.__lookupGetter__); - lookupSetter = call.bind(prototypeOfObject.__lookupSetter__); -} -if ([1,2].splice(0).length != 2) { - if(function() { // test IE < 9 to splice bug - see issue #138 - function makeArray(l) { - var a = new Array(l+2); - a[0] = a[1] = 0; - return a; - } - var array = [], lengthBefore; - - array.splice.apply(array, makeArray(20)); - array.splice.apply(array, makeArray(26)); - - lengthBefore = array.length; //46 - array.splice(5, 0, "XXX"); // add one element - - lengthBefore + 1 == array.length - - if (lengthBefore + 1 == array.length) { - return true;// has right splice implementation without bugs - } - }()) {//IE 6/7 - var array_splice = Array.prototype.splice; - Array.prototype.splice = function(start, deleteCount) { - if (!arguments.length) { - return []; - } else { - return array_splice.apply(this, [ - start === void 0 ? 0 : start, - deleteCount === void 0 ? (this.length - start) : deleteCount - ].concat(slice.call(arguments, 2))) - } - }; - } else {//IE8 - Array.prototype.splice = function(pos, removeCount){ - var length = this.length; - if (pos > 0) { - if (pos > length) - pos = length; - } else if (pos == void 0) { - pos = 0; - } else if (pos < 0) { - pos = Math.max(length + pos, 0); - } - - if (!(pos+removeCount < length)) - removeCount = length - pos; - - var removed = this.slice(pos, pos+removeCount); - var insert = slice.call(arguments, 2); - var add = insert.length; - if (pos === length) { - if (add) { - this.push.apply(this, insert); - } - } else { - var remove = Math.min(removeCount, length - pos); - var tailOldPos = pos + remove; - var tailNewPos = tailOldPos + add - remove; - var tailCount = length - tailOldPos; - var lengthAfterRemove = length - remove; - - if (tailNewPos < tailOldPos) { // case A - for (var i = 0; i < tailCount; ++i) { - this[tailNewPos+i] = this[tailOldPos+i]; - } - } else if (tailNewPos > tailOldPos) { // case B - for (i = tailCount; i--; ) { - this[tailNewPos+i] = this[tailOldPos+i]; - } - } // else, add == remove (nothing to do) - - if (add && pos === lengthAfterRemove) { - this.length = lengthAfterRemove; // truncate array - this.push.apply(this, insert); - } else { - this.length = lengthAfterRemove + add; // reserves space - for (i = 0; i < add; ++i) { - this[pos+i] = insert[i]; - } - } - } - return removed; - }; - } -} -if (!Array.isArray) { - Array.isArray = function isArray(obj) { - return _toString(obj) == "[object Array]"; - }; -} -var boxedString = Object("a"), - splitString = boxedString[0] != "a" || !(0 in boxedString); - -if (!Array.prototype.forEach) { - Array.prototype.forEach = function forEach(fun /*, thisp*/) { - var object = toObject(this), - self = splitString && _toString(this) == "[object String]" ? - this.split("") : - object, - thisp = arguments[1], - i = -1, - length = self.length >>> 0; - if (_toString(fun) != "[object Function]") { - throw new TypeError(); // TODO message - } - - while (++i < length) { - if (i in self) { - fun.call(thisp, self[i], i, object); - } - } - }; -} -if (!Array.prototype.map) { - Array.prototype.map = function map(fun /*, thisp*/) { - var object = toObject(this), - self = splitString && _toString(this) == "[object String]" ? - this.split("") : - object, - length = self.length >>> 0, - result = Array(length), - thisp = arguments[1]; - if (_toString(fun) != "[object Function]") { - throw new TypeError(fun + " is not a function"); - } - - for (var i = 0; i < length; i++) { - if (i in self) - result[i] = fun.call(thisp, self[i], i, object); - } - return result; - }; -} -if (!Array.prototype.filter) { - Array.prototype.filter = function filter(fun /*, thisp */) { - var object = toObject(this), - self = splitString && _toString(this) == "[object String]" ? - this.split("") : - object, - length = self.length >>> 0, - result = [], - value, - thisp = arguments[1]; - if (_toString(fun) != "[object Function]") { - throw new TypeError(fun + " is not a function"); - } - - for (var i = 0; i < length; i++) { - if (i in self) { - value = self[i]; - if (fun.call(thisp, value, i, object)) { - result.push(value); - } - } - } - return result; - }; -} -if (!Array.prototype.every) { - Array.prototype.every = function every(fun /*, thisp */) { - var object = toObject(this), - self = splitString && _toString(this) == "[object String]" ? - this.split("") : - object, - length = self.length >>> 0, - thisp = arguments[1]; - if (_toString(fun) != "[object Function]") { - throw new TypeError(fun + " is not a function"); - } - - for (var i = 0; i < length; i++) { - if (i in self && !fun.call(thisp, self[i], i, object)) { - return false; - } - } - return true; - }; -} -if (!Array.prototype.some) { - Array.prototype.some = function some(fun /*, thisp */) { - var object = toObject(this), - self = splitString && _toString(this) == "[object String]" ? - this.split("") : - object, - length = self.length >>> 0, - thisp = arguments[1]; - if (_toString(fun) != "[object Function]") { - throw new TypeError(fun + " is not a function"); - } - - for (var i = 0; i < length; i++) { - if (i in self && fun.call(thisp, self[i], i, object)) { - return true; - } - } - return false; - }; -} -if (!Array.prototype.reduce) { - Array.prototype.reduce = function reduce(fun /*, initial*/) { - var object = toObject(this), - self = splitString && _toString(this) == "[object String]" ? - this.split("") : - object, - length = self.length >>> 0; - if (_toString(fun) != "[object Function]") { - throw new TypeError(fun + " is not a function"); - } - if (!length && arguments.length == 1) { - throw new TypeError("reduce of empty array with no initial value"); - } - - var i = 0; - var result; - if (arguments.length >= 2) { - result = arguments[1]; - } else { - do { - if (i in self) { - result = self[i++]; - break; - } - if (++i >= length) { - throw new TypeError("reduce of empty array with no initial value"); - } - } while (true); - } - - for (; i < length; i++) { - if (i in self) { - result = fun.call(void 0, result, self[i], i, object); - } - } - - return result; - }; -} -if (!Array.prototype.reduceRight) { - Array.prototype.reduceRight = function reduceRight(fun /*, initial*/) { - var object = toObject(this), - self = splitString && _toString(this) == "[object String]" ? - this.split("") : - object, - length = self.length >>> 0; - if (_toString(fun) != "[object Function]") { - throw new TypeError(fun + " is not a function"); - } - if (!length && arguments.length == 1) { - throw new TypeError("reduceRight of empty array with no initial value"); - } - - var result, i = length - 1; - if (arguments.length >= 2) { - result = arguments[1]; - } else { - do { - if (i in self) { - result = self[i--]; - break; - } - if (--i < 0) { - throw new TypeError("reduceRight of empty array with no initial value"); - } - } while (true); - } - - do { - if (i in this) { - result = fun.call(void 0, result, self[i], i, object); - } - } while (i--); - - return result; - }; -} -if (!Array.prototype.indexOf || ([0, 1].indexOf(1, 2) != -1)) { - Array.prototype.indexOf = function indexOf(sought /*, fromIndex */ ) { - var self = splitString && _toString(this) == "[object String]" ? - this.split("") : - toObject(this), - length = self.length >>> 0; - - if (!length) { - return -1; - } - - var i = 0; - if (arguments.length > 1) { - i = toInteger(arguments[1]); - } - i = i >= 0 ? i : Math.max(0, length + i); - for (; i < length; i++) { - if (i in self && self[i] === sought) { - return i; - } - } - return -1; - }; -} -if (!Array.prototype.lastIndexOf || ([0, 1].lastIndexOf(0, -3) != -1)) { - Array.prototype.lastIndexOf = function lastIndexOf(sought /*, fromIndex */) { - var self = splitString && _toString(this) == "[object String]" ? - this.split("") : - toObject(this), - length = self.length >>> 0; - - if (!length) { - return -1; - } - var i = length - 1; - if (arguments.length > 1) { - i = Math.min(i, toInteger(arguments[1])); - } - i = i >= 0 ? i : length - Math.abs(i); - for (; i >= 0; i--) { - if (i in self && sought === self[i]) { - return i; - } - } - return -1; - }; -} -if (!Object.getPrototypeOf) { - Object.getPrototypeOf = function getPrototypeOf(object) { - return object.__proto__ || ( - object.constructor ? - object.constructor.prototype : - prototypeOfObject - ); - }; -} -if (!Object.getOwnPropertyDescriptor) { - var ERR_NON_OBJECT = "Object.getOwnPropertyDescriptor called on a " + - "non-object: "; - Object.getOwnPropertyDescriptor = function getOwnPropertyDescriptor(object, property) { - if ((typeof object != "object" && typeof object != "function") || object === null) - throw new TypeError(ERR_NON_OBJECT + object); - if (!owns(object, property)) - return; - - var descriptor, getter, setter; - descriptor = { enumerable: true, configurable: true }; - if (supportsAccessors) { - var prototype = object.__proto__; - object.__proto__ = prototypeOfObject; - - var getter = lookupGetter(object, property); - var setter = lookupSetter(object, property); - object.__proto__ = prototype; - - if (getter || setter) { - if (getter) descriptor.get = getter; - if (setter) descriptor.set = setter; - return descriptor; - } - } - descriptor.value = object[property]; - return descriptor; - }; -} -if (!Object.getOwnPropertyNames) { - Object.getOwnPropertyNames = function getOwnPropertyNames(object) { - return Object.keys(object); - }; -} -if (!Object.create) { - var createEmpty; - if (Object.prototype.__proto__ === null) { - createEmpty = function () { - return { "__proto__": null }; - }; - } else { - createEmpty = function () { - var empty = {}; - for (var i in empty) - empty[i] = null; - empty.constructor = - empty.hasOwnProperty = - empty.propertyIsEnumerable = - empty.isPrototypeOf = - empty.toLocaleString = - empty.toString = - empty.valueOf = - empty.__proto__ = null; - return empty; - } - } - - Object.create = function create(prototype, properties) { - var object; - if (prototype === null) { - object = createEmpty(); - } else { - if (typeof prototype != "object") - throw new TypeError("typeof prototype["+(typeof prototype)+"] != 'object'"); - var Type = function () {}; - Type.prototype = prototype; - object = new Type(); - object.__proto__ = prototype; - } - if (properties !== void 0) - Object.defineProperties(object, properties); - return object; - }; -} - -function doesDefinePropertyWork(object) { - try { - Object.defineProperty(object, "sentinel", {}); - return "sentinel" in object; - } catch (exception) { - } -} -if (Object.defineProperty) { - var definePropertyWorksOnObject = doesDefinePropertyWork({}); - var definePropertyWorksOnDom = typeof document == "undefined" || - doesDefinePropertyWork(document.createElement("div")); - if (!definePropertyWorksOnObject || !definePropertyWorksOnDom) { - var definePropertyFallback = Object.defineProperty; - } -} - -if (!Object.defineProperty || definePropertyFallback) { - var ERR_NON_OBJECT_DESCRIPTOR = "Property description must be an object: "; - var ERR_NON_OBJECT_TARGET = "Object.defineProperty called on non-object: " - var ERR_ACCESSORS_NOT_SUPPORTED = "getters & setters can not be defined " + - "on this javascript engine"; - - Object.defineProperty = function defineProperty(object, property, descriptor) { - if ((typeof object != "object" && typeof object != "function") || object === null) - throw new TypeError(ERR_NON_OBJECT_TARGET + object); - if ((typeof descriptor != "object" && typeof descriptor != "function") || descriptor === null) - throw new TypeError(ERR_NON_OBJECT_DESCRIPTOR + descriptor); - if (definePropertyFallback) { - try { - return definePropertyFallback.call(Object, object, property, descriptor); - } catch (exception) { - } - } - if (owns(descriptor, "value")) { - - if (supportsAccessors && (lookupGetter(object, property) || - lookupSetter(object, property))) - { - var prototype = object.__proto__; - object.__proto__ = prototypeOfObject; - delete object[property]; - object[property] = descriptor.value; - object.__proto__ = prototype; - } else { - object[property] = descriptor.value; - } - } else { - if (!supportsAccessors) - throw new TypeError(ERR_ACCESSORS_NOT_SUPPORTED); - if (owns(descriptor, "get")) - defineGetter(object, property, descriptor.get); - if (owns(descriptor, "set")) - defineSetter(object, property, descriptor.set); - } - - return object; - }; -} -if (!Object.defineProperties) { - Object.defineProperties = function defineProperties(object, properties) { - for (var property in properties) { - if (owns(properties, property)) - Object.defineProperty(object, property, properties[property]); - } - return object; - }; -} -if (!Object.seal) { - Object.seal = function seal(object) { - return object; - }; -} -if (!Object.freeze) { - Object.freeze = function freeze(object) { - return object; - }; -} -try { - Object.freeze(function () {}); -} catch (exception) { - Object.freeze = (function freeze(freezeObject) { - return function freeze(object) { - if (typeof object == "function") { - return object; - } else { - return freezeObject(object); - } - }; - })(Object.freeze); -} -if (!Object.preventExtensions) { - Object.preventExtensions = function preventExtensions(object) { - return object; - }; -} -if (!Object.isSealed) { - Object.isSealed = function isSealed(object) { - return false; - }; -} -if (!Object.isFrozen) { - Object.isFrozen = function isFrozen(object) { - return false; - }; -} -if (!Object.isExtensible) { - Object.isExtensible = function isExtensible(object) { - if (Object(object) === object) { - throw new TypeError(); // TODO message - } - var name = ''; - while (owns(object, name)) { - name += '?'; - } - object[name] = true; - var returnValue = owns(object, name); - delete object[name]; - return returnValue; - }; -} -if (!Object.keys) { - var hasDontEnumBug = true, - dontEnums = [ - "toString", - "toLocaleString", - "valueOf", - "hasOwnProperty", - "isPrototypeOf", - "propertyIsEnumerable", - "constructor" - ], - dontEnumsLength = dontEnums.length; - - for (var key in {"toString": null}) { - hasDontEnumBug = false; - } - - Object.keys = function keys(object) { - - if ( - (typeof object != "object" && typeof object != "function") || - object === null - ) { - throw new TypeError("Object.keys called on a non-object"); - } - - var keys = []; - for (var name in object) { - if (owns(object, name)) { - keys.push(name); - } - } - - if (hasDontEnumBug) { - for (var i = 0, ii = dontEnumsLength; i < ii; i++) { - var dontEnum = dontEnums[i]; - if (owns(object, dontEnum)) { - keys.push(dontEnum); - } - } - } - return keys; - }; - -} -if (!Date.now) { - Date.now = function now() { - return new Date().getTime(); - }; -} -var ws = "\x09\x0A\x0B\x0C\x0D\x20\xA0\u1680\u180E\u2000\u2001\u2002\u2003" + - "\u2004\u2005\u2006\u2007\u2008\u2009\u200A\u202F\u205F\u3000\u2028" + - "\u2029\uFEFF"; -if (!String.prototype.trim || ws.trim()) { - ws = "[" + ws + "]"; - var trimBeginRegexp = new RegExp("^" + ws + ws + "*"), - trimEndRegexp = new RegExp(ws + ws + "*$"); - String.prototype.trim = function trim() { - return String(this).replace(trimBeginRegexp, "").replace(trimEndRegexp, ""); - }; -} - -function toInteger(n) { - n = +n; - if (n !== n) { // isNaN - n = 0; - } else if (n !== 0 && n !== (1/0) && n !== -(1/0)) { - n = (n > 0 || -1) * Math.floor(Math.abs(n)); - } - return n; -} - -function isPrimitive(input) { - var type = typeof input; - return ( - input === null || - type === "undefined" || - type === "boolean" || - type === "number" || - type === "string" - ); -} - -function toPrimitive(input) { - var val, valueOf, toString; - if (isPrimitive(input)) { - return input; - } - valueOf = input.valueOf; - if (typeof valueOf === "function") { - val = valueOf.call(input); - if (isPrimitive(val)) { - return val; - } - } - toString = input.toString; - if (typeof toString === "function") { - val = toString.call(input); - if (isPrimitive(val)) { - return val; - } - } - throw new TypeError(); -} -var toObject = function (o) { - if (o == null) { // this matches both null and undefined - throw new TypeError("can't convert "+o+" to object"); - } - return Object(o); -}; - -}); - -ace.define('ace/lib/dom', ['require', 'exports', 'module' ], function(require, exports, module) { - - -if (typeof document == "undefined") - return; - -var XHTML_NS = "http://www.w3.org/1999/xhtml"; - -exports.getDocumentHead = function(doc) { - if (!doc) - doc = document; - return doc.head || doc.getElementsByTagName("head")[0] || doc.documentElement; -} - -exports.createElement = function(tag, ns) { - return document.createElementNS ? - document.createElementNS(ns || XHTML_NS, tag) : - document.createElement(tag); -}; - -exports.hasCssClass = function(el, name) { - var classes = el.className.split(/\s+/g); - return classes.indexOf(name) !== -1; -}; -exports.addCssClass = function(el, name) { - if (!exports.hasCssClass(el, name)) { - el.className += " " + name; - } -}; -exports.removeCssClass = function(el, name) { - var classes = el.className.split(/\s+/g); - while (true) { - var index = classes.indexOf(name); - if (index == -1) { - break; - } - classes.splice(index, 1); - } - el.className = classes.join(" "); -}; - -exports.toggleCssClass = function(el, name) { - var classes = el.className.split(/\s+/g), add = true; - while (true) { - var index = classes.indexOf(name); - if (index == -1) { - break; - } - add = false; - classes.splice(index, 1); - } - if(add) - classes.push(name); - - el.className = classes.join(" "); - return add; -}; -exports.setCssClass = function(node, className, include) { - if (include) { - exports.addCssClass(node, className); - } else { - exports.removeCssClass(node, className); - } -}; - -exports.hasCssString = function(id, doc) { - var index = 0, sheets; - doc = doc || document; - - if (doc.createStyleSheet && (sheets = doc.styleSheets)) { - while (index < sheets.length) - if (sheets[index++].owningElement.id === id) return true; - } else if ((sheets = doc.getElementsByTagName("style"))) { - while (index < sheets.length) - if (sheets[index++].id === id) return true; - } - - return false; -}; - -exports.importCssString = function importCssString(cssText, id, doc) { - doc = doc || document; - if (id && exports.hasCssString(id, doc)) - return null; - - var style; - - if (doc.createStyleSheet) { - style = doc.createStyleSheet(); - style.cssText = cssText; - if (id) - style.owningElement.id = id; - } else { - style = doc.createElementNS - ? doc.createElementNS(XHTML_NS, "style") - : doc.createElement("style"); - - style.appendChild(doc.createTextNode(cssText)); - if (id) - style.id = id; - - exports.getDocumentHead(doc).appendChild(style); - } -}; - -exports.importCssStylsheet = function(uri, doc) { - if (doc.createStyleSheet) { - doc.createStyleSheet(uri); - } else { - var link = exports.createElement('link'); - link.rel = 'stylesheet'; - link.href = uri; - - exports.getDocumentHead(doc).appendChild(link); - } -}; - -exports.getInnerWidth = function(element) { - return ( - parseInt(exports.computedStyle(element, "paddingLeft"), 10) + - parseInt(exports.computedStyle(element, "paddingRight"), 10) + - element.clientWidth - ); -}; - -exports.getInnerHeight = function(element) { - return ( - parseInt(exports.computedStyle(element, "paddingTop"), 10) + - parseInt(exports.computedStyle(element, "paddingBottom"), 10) + - element.clientHeight - ); -}; - -if (window.pageYOffset !== undefined) { - exports.getPageScrollTop = function() { - return window.pageYOffset; - }; - - exports.getPageScrollLeft = function() { - return window.pageXOffset; - }; -} -else { - exports.getPageScrollTop = function() { - return document.body.scrollTop; - }; - - exports.getPageScrollLeft = function() { - return document.body.scrollLeft; - }; -} - -if (window.getComputedStyle) - exports.computedStyle = function(element, style) { - if (style) - return (window.getComputedStyle(element, "") || {})[style] || ""; - return window.getComputedStyle(element, "") || {}; - }; -else - exports.computedStyle = function(element, style) { - if (style) - return element.currentStyle[style]; - return element.currentStyle; - }; - -exports.scrollbarWidth = function(document) { - var inner = exports.createElement("ace_inner"); - inner.style.width = "100%"; - inner.style.minWidth = "0px"; - inner.style.height = "200px"; - inner.style.display = "block"; - - var outer = exports.createElement("ace_outer"); - var style = outer.style; - - style.position = "absolute"; - style.left = "-10000px"; - style.overflow = "hidden"; - style.width = "200px"; - style.minWidth = "0px"; - style.height = "150px"; - style.display = "block"; - - outer.appendChild(inner); - - var body = document.documentElement; - body.appendChild(outer); - - var noScrollbar = inner.offsetWidth; - - style.overflow = "scroll"; - var withScrollbar = inner.offsetWidth; - - if (noScrollbar == withScrollbar) { - withScrollbar = outer.clientWidth; - } - - body.removeChild(outer); - - return noScrollbar-withScrollbar; -}; -exports.setInnerHtml = function(el, innerHtml) { - var element = el.cloneNode(false);//document.createElement("div"); - element.innerHTML = innerHtml; - el.parentNode.replaceChild(element, el); - return element; -}; - -if ("textContent" in document.documentElement) { - exports.setInnerText = function(el, innerText) { - el.textContent = innerText; - }; - - exports.getInnerText = function(el) { - return el.textContent; - }; -} -else { - exports.setInnerText = function(el, innerText) { - el.innerText = innerText; - }; - - exports.getInnerText = function(el) { - return el.innerText; - }; -} - -exports.getParentWindow = function(document) { - return document.defaultView || document.parentWindow; -}; - -}); - -ace.define('ace/lib/event', ['require', 'exports', 'module' , 'ace/lib/keys', 'ace/lib/useragent', 'ace/lib/dom'], function(require, exports, module) { - - -var keys = require("./keys"); -var useragent = require("./useragent"); -var dom = require("./dom"); - -exports.addListener = function(elem, type, callback) { - if (elem.addEventListener) { - return elem.addEventListener(type, callback, false); - } - if (elem.attachEvent) { - var wrapper = function() { - callback.call(elem, window.event); - }; - callback._wrapper = wrapper; - elem.attachEvent("on" + type, wrapper); - } -}; - -exports.removeListener = function(elem, type, callback) { - if (elem.removeEventListener) { - return elem.removeEventListener(type, callback, false); - } - if (elem.detachEvent) { - elem.detachEvent("on" + type, callback._wrapper || callback); - } -}; -exports.stopEvent = function(e) { - exports.stopPropagation(e); - exports.preventDefault(e); - return false; -}; - -exports.stopPropagation = function(e) { - if (e.stopPropagation) - e.stopPropagation(); - else - e.cancelBubble = true; -}; - -exports.preventDefault = function(e) { - if (e.preventDefault) - e.preventDefault(); - else - e.returnValue = false; -}; -exports.getButton = function(e) { - if (e.type == "dblclick") - return 0; - if (e.type == "contextmenu" || (e.ctrlKey && useragent.isMac)) - return 2; - if (e.preventDefault) { - return e.button; - } - else { - return {1:0, 2:2, 4:1}[e.button]; - } -}; - -exports.capture = function(el, eventHandler, releaseCaptureHandler) { - function onMouseUp(e) { - eventHandler && eventHandler(e); - releaseCaptureHandler && releaseCaptureHandler(e); - - exports.removeListener(document, "mousemove", eventHandler, true); - exports.removeListener(document, "mouseup", onMouseUp, true); - exports.removeListener(document, "dragstart", onMouseUp, true); - } - - exports.addListener(document, "mousemove", eventHandler, true); - exports.addListener(document, "mouseup", onMouseUp, true); - exports.addListener(document, "dragstart", onMouseUp, true); - - return onMouseUp; -}; - -exports.addMouseWheelListener = function(el, callback) { - if ("onmousewheel" in el) { - exports.addListener(el, "mousewheel", function(e) { - var factor = 8; - if (e.wheelDeltaX !== undefined) { - e.wheelX = -e.wheelDeltaX / factor; - e.wheelY = -e.wheelDeltaY / factor; - } else { - e.wheelX = 0; - e.wheelY = -e.wheelDelta / factor; - } - callback(e); - }); - } else if ("onwheel" in el) { - exports.addListener(el, "wheel", function(e) { - var factor = 0.35; - switch (e.deltaMode) { - case e.DOM_DELTA_PIXEL: - e.wheelX = e.deltaX * factor || 0; - e.wheelY = e.deltaY * factor || 0; - break; - case e.DOM_DELTA_LINE: - case e.DOM_DELTA_PAGE: - e.wheelX = (e.deltaX || 0) * 5; - e.wheelY = (e.deltaY || 0) * 5; - break; - } - - callback(e); - }); - } else { - exports.addListener(el, "DOMMouseScroll", function(e) { - if (e.axis && e.axis == e.HORIZONTAL_AXIS) { - e.wheelX = (e.detail || 0) * 5; - e.wheelY = 0; - } else { - e.wheelX = 0; - e.wheelY = (e.detail || 0) * 5; - } - callback(e); - }); - } -}; - -exports.addMultiMouseDownListener = function(el, timeouts, eventHandler, callbackName) { - var clicks = 0; - var startX, startY, timer; - var eventNames = { - 2: "dblclick", - 3: "tripleclick", - 4: "quadclick" - }; - - exports.addListener(el, "mousedown", function(e) { - if (exports.getButton(e) != 0) { - clicks = 0; - } else if (e.detail > 1) { - clicks++; - if (clicks > 4) - clicks = 1; - } else { - clicks = 1; - } - if (useragent.isIE) { - var isNewClick = Math.abs(e.clientX - startX) > 5 || Math.abs(e.clientY - startY) > 5; - if (isNewClick) { - clicks = 1; - } - if (clicks == 1) { - startX = e.clientX; - startY = e.clientY; - } - } - - eventHandler[callbackName]("mousedown", e); - - if (clicks > 4) - clicks = 0; - else if (clicks > 1) - return eventHandler[callbackName](eventNames[clicks], e); - }); - - if (useragent.isOldIE) { - exports.addListener(el, "dblclick", function(e) { - clicks = 2; - if (timer) - clearTimeout(timer); - timer = setTimeout(function() {timer = null}, timeouts[clicks - 1] || 600); - eventHandler[callbackName]("mousedown", e); - eventHandler[callbackName](eventNames[clicks], e); - }); - } -}; - -function normalizeCommandKeys(callback, e, keyCode) { - var hashId = 0; - if ((useragent.isOpera && !("KeyboardEvent" in window)) && useragent.isMac) { - hashId = 0 | (e.metaKey ? 1 : 0) | (e.altKey ? 2 : 0) - | (e.shiftKey ? 4 : 0) | (e.ctrlKey ? 8 : 0); - } else { - hashId = 0 | (e.ctrlKey ? 1 : 0) | (e.altKey ? 2 : 0) - | (e.shiftKey ? 4 : 0) | (e.metaKey ? 8 : 0); - } - - if (!useragent.isMac && pressedKeys) { - if (pressedKeys[91] || pressedKeys[92]) - hashId |= 8; - if (pressedKeys.altGr) { - if ((3 & hashId) != 3) - pressedKeys.altGr = 0 - else - return; - } - if (keyCode === 18 || keyCode === 17) { - var location = e.location || e.keyLocation; - if (keyCode === 17 && location === 1) { - ts = e.timeStamp; - } else if (keyCode === 18 && hashId === 3 && location === 2) { - var dt = -ts; - ts = e.timeStamp; - dt += ts; - if (dt < 3) - pressedKeys.altGr = true; - } - } - } - - if (keyCode in keys.MODIFIER_KEYS) { - switch (keys.MODIFIER_KEYS[keyCode]) { - case "Alt": - hashId = 2; - break; - case "Shift": - hashId = 4; - break; - case "Ctrl": - hashId = 1; - break; - default: - hashId = 8; - break; - } - keyCode = 0; - } - - if (hashId & 8 && (keyCode === 91 || keyCode === 93)) { - keyCode = 0; - } - - if (!hashId && keyCode === 13) { - if (e.location || e.keyLocation === 3) { - callback(e, hashId, -keyCode) - if (e.defaultPrevented) - return; - } - } - if (!hashId && !(keyCode in keys.FUNCTION_KEYS) && !(keyCode in keys.PRINTABLE_KEYS)) { - return false; - } - - - - return callback(e, hashId, keyCode); -} - -var pressedKeys = null; -var ts = 0; -exports.addCommandKeyListener = function(el, callback) { - var addListener = exports.addListener; - if (useragent.isOldGecko || (useragent.isOpera && !("KeyboardEvent" in window))) { - var lastKeyDownKeyCode = null; - addListener(el, "keydown", function(e) { - lastKeyDownKeyCode = e.keyCode; - }); - addListener(el, "keypress", function(e) { - return normalizeCommandKeys(callback, e, lastKeyDownKeyCode); - }); - } else { - var lastDefaultPrevented = null; - - addListener(el, "keydown", function(e) { - pressedKeys[e.keyCode] = true; - var result = normalizeCommandKeys(callback, e, e.keyCode); - lastDefaultPrevented = e.defaultPrevented; - return result; - }); - - addListener(el, "keypress", function(e) { - if (lastDefaultPrevented && (e.ctrlKey || e.altKey || e.shiftKey || e.metaKey)) { - exports.stopEvent(e); - lastDefaultPrevented = null; - } - }); - - addListener(el, "keyup", function(e) { - pressedKeys[e.keyCode] = null; - }); - - if (!pressedKeys) { - pressedKeys = Object.create(null); - addListener(window, "focus", function(e) { - pressedKeys = Object.create(null); - }); - } - } -}; - -if (window.postMessage && !useragent.isOldIE) { - var postMessageId = 1; - exports.nextTick = function(callback, win) { - win = win || window; - var messageName = "zero-timeout-message-" + postMessageId; - exports.addListener(win, "message", function listener(e) { - if (e.data == messageName) { - exports.stopPropagation(e); - exports.removeListener(win, "message", listener); - callback(); - } - }); - win.postMessage(messageName, "*"); - }; -} - - -exports.nextFrame = window.requestAnimationFrame || - window.mozRequestAnimationFrame || - window.webkitRequestAnimationFrame || - window.msRequestAnimationFrame || - window.oRequestAnimationFrame; - -if (exports.nextFrame) - exports.nextFrame = exports.nextFrame.bind(window); -else - exports.nextFrame = function(callback) { - setTimeout(callback, 17); - }; -}); - -ace.define('ace/lib/keys', ['require', 'exports', 'module' , 'ace/lib/oop'], function(require, exports, module) { - - -var oop = require("./oop"); -var Keys = (function() { - var ret = { - MODIFIER_KEYS: { - 16: 'Shift', 17: 'Ctrl', 18: 'Alt', 224: 'Meta' - }, - - KEY_MODS: { - "ctrl": 1, "alt": 2, "option" : 2, - "shift": 4, "meta": 8, "command": 8, "cmd": 8 - }, - - FUNCTION_KEYS : { - 8 : "Backspace", - 9 : "Tab", - 13 : "Return", - 19 : "Pause", - 27 : "Esc", - 32 : "Space", - 33 : "PageUp", - 34 : "PageDown", - 35 : "End", - 36 : "Home", - 37 : "Left", - 38 : "Up", - 39 : "Right", - 40 : "Down", - 44 : "Print", - 45 : "Insert", - 46 : "Delete", - 96 : "Numpad0", - 97 : "Numpad1", - 98 : "Numpad2", - 99 : "Numpad3", - 100: "Numpad4", - 101: "Numpad5", - 102: "Numpad6", - 103: "Numpad7", - 104: "Numpad8", - 105: "Numpad9", - '-13': "NumpadEnter", - 112: "F1", - 113: "F2", - 114: "F3", - 115: "F4", - 116: "F5", - 117: "F6", - 118: "F7", - 119: "F8", - 120: "F9", - 121: "F10", - 122: "F11", - 123: "F12", - 144: "Numlock", - 145: "Scrolllock" - }, - - PRINTABLE_KEYS: { - 32: ' ', 48: '0', 49: '1', 50: '2', 51: '3', 52: '4', 53: '5', - 54: '6', 55: '7', 56: '8', 57: '9', 59: ';', 61: '=', 65: 'a', - 66: 'b', 67: 'c', 68: 'd', 69: 'e', 70: 'f', 71: 'g', 72: 'h', - 73: 'i', 74: 'j', 75: 'k', 76: 'l', 77: 'm', 78: 'n', 79: 'o', - 80: 'p', 81: 'q', 82: 'r', 83: 's', 84: 't', 85: 'u', 86: 'v', - 87: 'w', 88: 'x', 89: 'y', 90: 'z', 107: '+', 109: '-', 110: '.', - 188: ',', 190: '.', 191: '/', 192: '`', 219: '[', 220: '\\', - 221: ']', 222: '\'' - } - }; - for (var i in ret.FUNCTION_KEYS) { - var name = ret.FUNCTION_KEYS[i].toLowerCase(); - ret[name] = parseInt(i, 10); - } - oop.mixin(ret, ret.MODIFIER_KEYS); - oop.mixin(ret, ret.PRINTABLE_KEYS); - oop.mixin(ret, ret.FUNCTION_KEYS); - ret.enter = ret["return"]; - ret.escape = ret.esc; - ret.del = ret["delete"]; - ret[173] = '-'; - - return ret; -})(); -oop.mixin(exports, Keys); - -exports.keyCodeToString = function(keyCode) { - return (Keys[keyCode] || String.fromCharCode(keyCode)).toLowerCase(); -} - -}); - -ace.define('ace/lib/oop', ['require', 'exports', 'module' ], function(require, exports, module) { - - -exports.inherits = function(ctor, superCtor) { - ctor.super_ = superCtor; - ctor.prototype = Object.create(superCtor.prototype, { - constructor: { - value: ctor, - enumerable: false, - writable: true, - configurable: true - } - }); -}; - -exports.mixin = function(obj, mixin) { - for (var key in mixin) { - obj[key] = mixin[key]; - } - return obj; -}; - -exports.implement = function(proto, mixin) { - exports.mixin(proto, mixin); -}; - -}); - -ace.define('ace/lib/useragent', ['require', 'exports', 'module' ], function(require, exports, module) { -exports.OS = { - LINUX: "LINUX", - MAC: "MAC", - WINDOWS: "WINDOWS" -}; -exports.getOS = function() { - if (exports.isMac) { - return exports.OS.MAC; - } else if (exports.isLinux) { - return exports.OS.LINUX; - } else { - return exports.OS.WINDOWS; - } -}; -if (typeof navigator != "object") - return; - -var os = (navigator.platform.match(/mac|win|linux/i) || ["other"])[0].toLowerCase(); -var ua = navigator.userAgent; -exports.isWin = (os == "win"); -exports.isMac = (os == "mac"); -exports.isLinux = (os == "linux"); -exports.isIE = - (navigator.appName == "Microsoft Internet Explorer" || navigator.appName.indexOf("MSAppHost") >= 0) - && parseFloat(navigator.userAgent.match(/MSIE ([0-9]+[\.0-9]+)/)[1]); - -exports.isOldIE = exports.isIE && exports.isIE < 9; -exports.isGecko = exports.isMozilla = window.controllers && window.navigator.product === "Gecko"; -exports.isOldGecko = exports.isGecko && parseInt((navigator.userAgent.match(/rv\:(\d+)/)||[])[1], 10) < 4; -exports.isOpera = window.opera && Object.prototype.toString.call(window.opera) == "[object Opera]"; -exports.isWebKit = parseFloat(ua.split("WebKit/")[1]) || undefined; - -exports.isChrome = parseFloat(ua.split(" Chrome/")[1]) || undefined; - -exports.isAIR = ua.indexOf("AdobeAIR") >= 0; - -exports.isIPad = ua.indexOf("iPad") >= 0; - -exports.isTouchPad = ua.indexOf("TouchPad") >= 0; - -}); - -ace.define('ace/editor', ['require', 'exports', 'module' , 'ace/lib/fixoldbrowsers', 'ace/lib/oop', 'ace/lib/dom', 'ace/lib/lang', 'ace/lib/useragent', 'ace/keyboard/textinput', 'ace/mouse/mouse_handler', 'ace/mouse/fold_handler', 'ace/keyboard/keybinding', 'ace/edit_session', 'ace/search', 'ace/range', 'ace/lib/event_emitter', 'ace/commands/command_manager', 'ace/commands/default_commands', 'ace/config'], function(require, exports, module) { - - -require("./lib/fixoldbrowsers"); - -var oop = require("./lib/oop"); -var dom = require("./lib/dom"); -var lang = require("./lib/lang"); -var useragent = require("./lib/useragent"); -var TextInput = require("./keyboard/textinput").TextInput; -var MouseHandler = require("./mouse/mouse_handler").MouseHandler; -var FoldHandler = require("./mouse/fold_handler").FoldHandler; -var KeyBinding = require("./keyboard/keybinding").KeyBinding; -var EditSession = require("./edit_session").EditSession; -var Search = require("./search").Search; -var Range = require("./range").Range; -var EventEmitter = require("./lib/event_emitter").EventEmitter; -var CommandManager = require("./commands/command_manager").CommandManager; -var defaultCommands = require("./commands/default_commands").commands; -var config = require("./config"); -var Editor = function(renderer, session) { - var container = renderer.getContainerElement(); - this.container = container; - this.renderer = renderer; - - this.commands = new CommandManager(useragent.isMac ? "mac" : "win", defaultCommands); - this.textInput = new TextInput(renderer.getTextAreaContainer(), this); - this.renderer.textarea = this.textInput.getElement(); - this.keyBinding = new KeyBinding(this); - this.$mouseHandler = new MouseHandler(this); - new FoldHandler(this); - - this.$blockScrolling = 0; - this.$search = new Search().set({ - wrap: true - }); - - this.$historyTracker = this.$historyTracker.bind(this); - this.commands.on("exec", this.$historyTracker); - - this.$initOperationListeners(); - - this._$emitInputEvent = lang.delayedCall(function() { - this._signal("input", {}); - this.session.bgTokenizer && this.session.bgTokenizer.scheduleStart(); - }.bind(this)); - - this.on("change", function(_, _self) { - _self._$emitInputEvent.schedule(31); - }); - - this.setSession(session || new EditSession("")); - config.resetOptions(this); - config._emit("editor", this); -}; - -(function(){ - - oop.implement(this, EventEmitter); - - this.$initOperationListeners = function() { - function last(a) {return a[a.length - 1]} - - this.selections = []; - this.commands.on("exec", function(e) { - this.startOperation(e); - - var command = e.command; - if (command.aceCommandGroup == "fileJump") { - var prev = this.prevOp; - if (!prev || prev.command.aceCommandGroup != "fileJump") { - this.lastFileJumpPos = last(this.selections); - } - } else { - this.lastFileJumpPos = null; - } - }.bind(this), true); - - this.commands.on("afterExec", function(e) { - var command = e.command; - - if (command.aceCommandGroup == "fileJump") { - if (this.lastFileJumpPos && !this.curOp.selectionChanged) { - this.selection.fromJSON(this.lastFileJumpPos); - } - } - this.endOperation(e); - }.bind(this), true); - - this.$opResetTimer = lang.delayedCall(this.endOperation.bind(this)); - - this.on("change", function() { - this.curOp || this.startOperation(); - this.curOp.docChanged = true; - }.bind(this), true); - - this.on("changeSelection", function() { - this.curOp || this.startOperation(); - this.curOp.selectionChanged = true; - }.bind(this), true); - }; - - this.curOp = null; - this.prevOp = {}; - this.startOperation = function(commadEvent) { - if (this.curOp) { - if (!commadEvent || this.curOp.command) - return; - this.prevOp = this.curOp; - } - if (!commadEvent) { - this.previousCommand = null; - commadEvent = {}; - } - - this.$opResetTimer.schedule(); - this.curOp = { - command: commadEvent.command || {}, - args: commadEvent.args, - scrollTop: this.renderer.scrollTop - }; - - var command = this.curOp.command; - if (command && command.scrollIntoView) - this.$blockScrolling++; - - this.selections.push(this.selection.toJSON()); - }; - - this.endOperation = function() { - if (this.curOp) { - var command = this.curOp.command; - if (command && command.scrollIntoView) { - this.$blockScrolling--; - switch (command.scrollIntoView) { - case "center": - this.renderer.scrollCursorIntoView(null, 0.5); - break; - case "animate": - case "cursor": - this.renderer.scrollCursorIntoView(); - break; - case "selectionPart": - var range = this.selection.getRange(); - var config = this.renderer.layerConfig; - if (range.start.row >= config.lastRow || range.end.row <= config.firstRow) { - this.renderer.scrollSelectionIntoView(this.selection.anchor, this.selection.lead); - } - break; - default: - break; - } - if (command.scrollIntoView == "animate") - this.renderer.animateScrolling(this.curOp.scrollTop); - } - - this.prevOp = this.curOp; - this.curOp = null; - } - }; - - this.$historyTracker = function(e) { - if (!this.$mergeUndoDeltas) - return; - - - var prev = this.prevOp; - var mergeableCommands = ["backspace", "del", "insertstring"]; - var shouldMerge = prev.command && (e.command.name == prev.command.name); - if (e.command.name == "insertstring") { - var text = e.args; - if (this.mergeNextCommand === undefined) - this.mergeNextCommand = true; - - shouldMerge = shouldMerge - && this.mergeNextCommand // previous command allows to coalesce with - && (!/\s/.test(text) || /\s/.test(prev.args)); // previous insertion was of same type - - this.mergeNextCommand = true; - } else { - shouldMerge = shouldMerge - && mergeableCommands.indexOf(e.command.name) !== -1; // the command is mergeable - } - - if ( - this.$mergeUndoDeltas != "always" - && Date.now() - this.sequenceStartTime > 2000 - ) { - shouldMerge = false; // the sequence is too long - } - - if (shouldMerge) - this.session.mergeUndoDeltas = true; - else if (mergeableCommands.indexOf(e.command.name) !== -1) - this.sequenceStartTime = Date.now(); - }; - this.setKeyboardHandler = function(keyboardHandler) { - if (!keyboardHandler) { - this.keyBinding.setKeyboardHandler(null); - } else if (typeof keyboardHandler === "string") { - this.$keybindingId = keyboardHandler; - var _self = this; - config.loadModule(["keybinding", keyboardHandler], function(module) { - if (_self.$keybindingId == keyboardHandler) - _self.keyBinding.setKeyboardHandler(module && module.handler); - }); - } else { - this.$keybindingId = null; - this.keyBinding.setKeyboardHandler(keyboardHandler); - } - }; - this.getKeyboardHandler = function() { - return this.keyBinding.getKeyboardHandler(); - }; - this.setSession = function(session) { - if (this.session == session) - return; - - if (this.session) { - var oldSession = this.session; - this.session.removeEventListener("change", this.$onDocumentChange); - this.session.removeEventListener("changeMode", this.$onChangeMode); - this.session.removeEventListener("tokenizerUpdate", this.$onTokenizerUpdate); - this.session.removeEventListener("changeTabSize", this.$onChangeTabSize); - this.session.removeEventListener("changeWrapLimit", this.$onChangeWrapLimit); - this.session.removeEventListener("changeWrapMode", this.$onChangeWrapMode); - this.session.removeEventListener("onChangeFold", this.$onChangeFold); - this.session.removeEventListener("changeFrontMarker", this.$onChangeFrontMarker); - this.session.removeEventListener("changeBackMarker", this.$onChangeBackMarker); - this.session.removeEventListener("changeBreakpoint", this.$onChangeBreakpoint); - this.session.removeEventListener("changeAnnotation", this.$onChangeAnnotation); - this.session.removeEventListener("changeOverwrite", this.$onCursorChange); - this.session.removeEventListener("changeScrollTop", this.$onScrollTopChange); - this.session.removeEventListener("changeScrollLeft", this.$onScrollLeftChange); - - var selection = this.session.getSelection(); - selection.removeEventListener("changeCursor", this.$onCursorChange); - selection.removeEventListener("changeSelection", this.$onSelectionChange); - } - - this.session = session; - - this.$onDocumentChange = this.onDocumentChange.bind(this); - session.addEventListener("change", this.$onDocumentChange); - this.renderer.setSession(session); - - this.$onChangeMode = this.onChangeMode.bind(this); - session.addEventListener("changeMode", this.$onChangeMode); - - this.$onTokenizerUpdate = this.onTokenizerUpdate.bind(this); - session.addEventListener("tokenizerUpdate", this.$onTokenizerUpdate); - - this.$onChangeTabSize = this.renderer.onChangeTabSize.bind(this.renderer); - session.addEventListener("changeTabSize", this.$onChangeTabSize); - - this.$onChangeWrapLimit = this.onChangeWrapLimit.bind(this); - session.addEventListener("changeWrapLimit", this.$onChangeWrapLimit); - - this.$onChangeWrapMode = this.onChangeWrapMode.bind(this); - session.addEventListener("changeWrapMode", this.$onChangeWrapMode); - - this.$onChangeFold = this.onChangeFold.bind(this); - session.addEventListener("changeFold", this.$onChangeFold); - - this.$onChangeFrontMarker = this.onChangeFrontMarker.bind(this); - this.session.addEventListener("changeFrontMarker", this.$onChangeFrontMarker); - - this.$onChangeBackMarker = this.onChangeBackMarker.bind(this); - this.session.addEventListener("changeBackMarker", this.$onChangeBackMarker); - - this.$onChangeBreakpoint = this.onChangeBreakpoint.bind(this); - this.session.addEventListener("changeBreakpoint", this.$onChangeBreakpoint); - - this.$onChangeAnnotation = this.onChangeAnnotation.bind(this); - this.session.addEventListener("changeAnnotation", this.$onChangeAnnotation); - - this.$onCursorChange = this.onCursorChange.bind(this); - this.session.addEventListener("changeOverwrite", this.$onCursorChange); - - this.$onScrollTopChange = this.onScrollTopChange.bind(this); - this.session.addEventListener("changeScrollTop", this.$onScrollTopChange); - - this.$onScrollLeftChange = this.onScrollLeftChange.bind(this); - this.session.addEventListener("changeScrollLeft", this.$onScrollLeftChange); - - this.selection = session.getSelection(); - this.selection.addEventListener("changeCursor", this.$onCursorChange); - - this.$onSelectionChange = this.onSelectionChange.bind(this); - this.selection.addEventListener("changeSelection", this.$onSelectionChange); - - this.onChangeMode(); - - this.$blockScrolling += 1; - this.onCursorChange(); - this.$blockScrolling -= 1; - - this.onScrollTopChange(); - this.onScrollLeftChange(); - this.onSelectionChange(); - this.onChangeFrontMarker(); - this.onChangeBackMarker(); - this.onChangeBreakpoint(); - this.onChangeAnnotation(); - this.session.getUseWrapMode() && this.renderer.adjustWrapLimit(); - this.renderer.updateFull(); - - this._emit("changeSession", { - session: session, - oldSession: oldSession - }); - }; - this.getSession = function() { - return this.session; - }; - this.setValue = function(val, cursorPos) { - this.session.doc.setValue(val); - - if (!cursorPos) - this.selectAll(); - else if (cursorPos == 1) - this.navigateFileEnd(); - else if (cursorPos == -1) - this.navigateFileStart(); - - return val; - }; - this.getValue = function() { - return this.session.getValue(); - }; - this.getSelection = function() { - return this.selection; - }; - this.resize = function(force) { - this.renderer.onResize(force); - }; - this.setTheme = function(theme) { - this.renderer.setTheme(theme); - }; - this.getTheme = function() { - return this.renderer.getTheme(); - }; - this.setStyle = function(style) { - this.renderer.setStyle(style); - }; - this.unsetStyle = function(style) { - this.renderer.unsetStyle(style); - }; - this.getFontSize = function () { - return this.getOption("fontSize") || - dom.computedStyle(this.container, "fontSize"); - }; - this.setFontSize = function(size) { - this.setOption("fontSize", size); - }; - - this.$highlightBrackets = function() { - if (this.session.$bracketHighlight) { - this.session.removeMarker(this.session.$bracketHighlight); - this.session.$bracketHighlight = null; - } - - if (this.$highlightPending) { - return; - } - var self = this; - this.$highlightPending = true; - setTimeout(function() { - self.$highlightPending = false; - - var pos = self.session.findMatchingBracket(self.getCursorPosition()); - if (pos) { - var range = new Range(pos.row, pos.column, pos.row, pos.column+1); - } else if (self.session.$mode.getMatching) { - var range = self.session.$mode.getMatching(self.session); - } - if (range) - self.session.$bracketHighlight = self.session.addMarker(range, "ace_bracket", "text"); - }, 50); - }; - this.focus = function() { - var _self = this; - setTimeout(function() { - _self.textInput.focus(); - }); - this.textInput.focus(); - }; - this.isFocused = function() { - return this.textInput.isFocused(); - }; - this.blur = function() { - this.textInput.blur(); - }; - this.onFocus = function() { - if (this.$isFocused) - return; - this.$isFocused = true; - this.renderer.showCursor(); - this.renderer.visualizeFocus(); - this._emit("focus"); - }; - this.onBlur = function() { - if (!this.$isFocused) - return; - this.$isFocused = false; - this.renderer.hideCursor(); - this.renderer.visualizeBlur(); - this._emit("blur"); - }; - - this.$cursorChange = function() { - this.renderer.updateCursor(); - }; - this.onDocumentChange = function(e) { - var delta = e.data; - var range = delta.range; - var lastRow; - - if (range.start.row == range.end.row && delta.action != "insertLines" && delta.action != "removeLines") - lastRow = range.end.row; - else - lastRow = Infinity; - this.renderer.updateLines(range.start.row, lastRow); - - this._emit("change", e); - this.$cursorChange(); - }; - - this.onTokenizerUpdate = function(e) { - var rows = e.data; - this.renderer.updateLines(rows.first, rows.last); - }; - - - this.onScrollTopChange = function() { - this.renderer.scrollToY(this.session.getScrollTop()); - }; - - this.onScrollLeftChange = function() { - this.renderer.scrollToX(this.session.getScrollLeft()); - }; - this.onCursorChange = function() { - this.$cursorChange(); - - if (!this.$blockScrolling) { - this.renderer.scrollCursorIntoView(); - } - - this.$highlightBrackets(); - this.$updateHighlightActiveLine(); - this._emit("changeSelection"); - }; - - this.$updateHighlightActiveLine = function() { - var session = this.getSession(); - - var highlight; - if (this.$highlightActiveLine) { - if ((this.$selectionStyle != "line" || !this.selection.isMultiLine())) - highlight = this.getCursorPosition(); - if (this.renderer.$maxLines && this.session.getLength() === 1) - highlight = false; - } - - if (session.$highlightLineMarker && !highlight) { - session.removeMarker(session.$highlightLineMarker.id); - session.$highlightLineMarker = null; - } else if (!session.$highlightLineMarker && highlight) { - var range = new Range(highlight.row, highlight.column, highlight.row, Infinity); - range.id = session.addMarker(range, "ace_active-line", "screenLine"); - session.$highlightLineMarker = range; - } else if (highlight) { - session.$highlightLineMarker.start.row = highlight.row; - session.$highlightLineMarker.end.row = highlight.row; - session.$highlightLineMarker.start.column = highlight.column; - session._emit("changeBackMarker"); - } - }; - - this.onSelectionChange = function(e) { - var session = this.session; - - if (session.$selectionMarker) { - session.removeMarker(session.$selectionMarker); - } - session.$selectionMarker = null; - - if (!this.selection.isEmpty()) { - var range = this.selection.getRange(); - var style = this.getSelectionStyle(); - session.$selectionMarker = session.addMarker(range, "ace_selection", style); - } else { - this.$updateHighlightActiveLine(); - } - - var re = this.$highlightSelectedWord && this.$getSelectionHighLightRegexp(); - this.session.highlight(re); - - this._emit("changeSelection"); - }; - - this.$getSelectionHighLightRegexp = function() { - var session = this.session; - - var selection = this.getSelectionRange(); - if (selection.isEmpty() || selection.isMultiLine()) - return; - - var startOuter = selection.start.column - 1; - var endOuter = selection.end.column + 1; - var line = session.getLine(selection.start.row); - var lineCols = line.length; - var needle = line.substring(Math.max(startOuter, 0), - Math.min(endOuter, lineCols)); - if ((startOuter >= 0 && /^[\w\d]/.test(needle)) || - (endOuter <= lineCols && /[\w\d]$/.test(needle))) - return; - - needle = line.substring(selection.start.column, selection.end.column); - if (!/^[\w\d]+$/.test(needle)) - return; - - var re = this.$search.$assembleRegExp({ - wholeWord: true, - caseSensitive: true, - needle: needle - }); - - return re; - }; - - - this.onChangeFrontMarker = function() { - this.renderer.updateFrontMarkers(); - }; - - this.onChangeBackMarker = function() { - this.renderer.updateBackMarkers(); - }; - - - this.onChangeBreakpoint = function() { - this.renderer.updateBreakpoints(); - }; - - this.onChangeAnnotation = function() { - this.renderer.setAnnotations(this.session.getAnnotations()); - }; - - - this.onChangeMode = function(e) { - this.renderer.updateText(); - this._emit("changeMode", e); - }; - - - this.onChangeWrapLimit = function() { - this.renderer.updateFull(); - }; - - this.onChangeWrapMode = function() { - this.renderer.onResize(true); - }; - - - this.onChangeFold = function() { - this.$updateHighlightActiveLine(); - this.renderer.updateFull(); - }; - this.getSelectedText = function() { - return this.session.getTextRange(this.getSelectionRange()); - }; - this.getCopyText = function() { - var text = this.getSelectedText(); - this._signal("copy", text); - return text; - }; - this.onCopy = function() { - this.commands.exec("copy", this); - }; - this.onCut = function() { - this.commands.exec("cut", this); - }; - this.onPaste = function(text) { - if (this.$readOnly) - return; - this._emit("paste", text); - this.insert(text); - }; - - - this.execCommand = function(command, args) { - this.commands.exec(command, this, args); - }; - this.insert = function(text) { - var session = this.session; - var mode = session.getMode(); - var cursor = this.getCursorPosition(); - - if (this.getBehavioursEnabled()) { - var transform = mode.transformAction(session.getState(cursor.row), 'insertion', this, session, text); - if (transform) { - if (text !== transform.text) { - this.session.mergeUndoDeltas = false; - this.$mergeNextCommand = false; - } - text = transform.text; - - } - } - - if (text == "\t") - text = this.session.getTabString(); - if (!this.selection.isEmpty()) { - var range = this.getSelectionRange(); - cursor = this.session.remove(range); - this.clearSelection(); - } - else if (this.session.getOverwrite()) { - var range = new Range.fromPoints(cursor, cursor); - range.end.column += text.length; - this.session.remove(range); - } - - if (text == "\n" || text == "\r\n") { - var line = session.getLine(cursor.row); - if (cursor.column > line.search(/\S|$/)) { - var d = line.substr(cursor.column).search(/\S|$/); - session.doc.removeInLine(cursor.row, cursor.column, cursor.column + d); - } - } - this.clearSelection(); - - var start = cursor.column; - var lineState = session.getState(cursor.row); - var line = session.getLine(cursor.row); - var shouldOutdent = mode.checkOutdent(lineState, line, text); - var end = session.insert(cursor, text); - - if (transform && transform.selection) { - if (transform.selection.length == 2) { // Transform relative to the current column - this.selection.setSelectionRange( - new Range(cursor.row, start + transform.selection[0], - cursor.row, start + transform.selection[1])); - } else { // Transform relative to the current row. - this.selection.setSelectionRange( - new Range(cursor.row + transform.selection[0], - transform.selection[1], - cursor.row + transform.selection[2], - transform.selection[3])); - } - } - - if (session.getDocument().isNewLine(text)) { - var lineIndent = mode.getNextLineIndent(lineState, line.slice(0, cursor.column), session.getTabString()); - - session.insert({row: cursor.row+1, column: 0}, lineIndent); - } - if (shouldOutdent) - mode.autoOutdent(lineState, session, cursor.row); - }; - - this.onTextInput = function(text) { - this.keyBinding.onTextInput(text); - }; - - this.onCommandKey = function(e, hashId, keyCode) { - this.keyBinding.onCommandKey(e, hashId, keyCode); - }; - this.setOverwrite = function(overwrite) { - this.session.setOverwrite(overwrite); - }; - this.getOverwrite = function() { - return this.session.getOverwrite(); - }; - this.toggleOverwrite = function() { - this.session.toggleOverwrite(); - }; - this.setScrollSpeed = function(speed) { - this.setOption("scrollSpeed", speed); - }; - this.getScrollSpeed = function() { - return this.getOption("scrollSpeed"); - }; - this.setDragDelay = function(dragDelay) { - this.setOption("dragDelay", dragDelay); - }; - this.getDragDelay = function() { - return this.getOption("dragDelay"); - }; - this.setSelectionStyle = function(val) { - this.setOption("selectionStyle", val); - }; - this.getSelectionStyle = function() { - return this.getOption("selectionStyle"); - }; - this.setHighlightActiveLine = function(shouldHighlight) { - this.setOption("highlightActiveLine", shouldHighlight); - }; - this.getHighlightActiveLine = function() { - return this.getOption("highlightActiveLine"); - }; - this.setHighlightGutterLine = function(shouldHighlight) { - this.setOption("highlightGutterLine", shouldHighlight); - }; - - this.getHighlightGutterLine = function() { - return this.getOption("highlightGutterLine"); - }; - this.setHighlightSelectedWord = function(shouldHighlight) { - this.setOption("highlightSelectedWord", shouldHighlight); - }; - this.getHighlightSelectedWord = function() { - return this.$highlightSelectedWord; - }; - - this.setAnimatedScroll = function(shouldAnimate){ - this.renderer.setAnimatedScroll(shouldAnimate); - }; - - this.getAnimatedScroll = function(){ - return this.renderer.getAnimatedScroll(); - }; - this.setShowInvisibles = function(showInvisibles) { - this.renderer.setShowInvisibles(showInvisibles); - }; - this.getShowInvisibles = function() { - return this.renderer.getShowInvisibles(); - }; - - this.setDisplayIndentGuides = function(display) { - this.renderer.setDisplayIndentGuides(display); - }; - - this.getDisplayIndentGuides = function() { - return this.renderer.getDisplayIndentGuides(); - }; - this.setShowPrintMargin = function(showPrintMargin) { - this.renderer.setShowPrintMargin(showPrintMargin); - }; - this.getShowPrintMargin = function() { - return this.renderer.getShowPrintMargin(); - }; - this.setPrintMarginColumn = function(showPrintMargin) { - this.renderer.setPrintMarginColumn(showPrintMargin); - }; - this.getPrintMarginColumn = function() { - return this.renderer.getPrintMarginColumn(); - }; - this.setReadOnly = function(readOnly) { - this.setOption("readOnly", readOnly); - }; - this.getReadOnly = function() { - return this.getOption("readOnly"); - }; - this.setBehavioursEnabled = function (enabled) { - this.setOption("behavioursEnabled", enabled); - }; - this.getBehavioursEnabled = function () { - return this.getOption("behavioursEnabled"); - }; - this.setWrapBehavioursEnabled = function (enabled) { - this.setOption("wrapBehavioursEnabled", enabled); - }; - this.getWrapBehavioursEnabled = function () { - return this.getOption("wrapBehavioursEnabled"); - }; - this.setShowFoldWidgets = function(show) { - this.setOption("showFoldWidgets", show); - - }; - this.getShowFoldWidgets = function() { - return this.getOption("showFoldWidgets"); - }; - - this.setFadeFoldWidgets = function(fade) { - this.setOption("fadeFoldWidgets", fade); - }; - - this.getFadeFoldWidgets = function() { - return this.getOption("fadeFoldWidgets"); - }; - this.remove = function(dir) { - if (this.selection.isEmpty()){ - if (dir == "left") - this.selection.selectLeft(); - else - this.selection.selectRight(); - } - - var range = this.getSelectionRange(); - if (this.getBehavioursEnabled()) { - var session = this.session; - var state = session.getState(range.start.row); - var new_range = session.getMode().transformAction(state, 'deletion', this, session, range); - - if (range.end.column === 0) { - var text = session.getTextRange(range); - if (text[text.length - 1] == "\n") { - var line = session.getLine(range.end.row); - if (/^\s+$/.test(line)) { - range.end.column = line.length; - } - } - } - if (new_range) - range = new_range; - } - - this.session.remove(range); - this.clearSelection(); - }; - this.removeWordRight = function() { - if (this.selection.isEmpty()) - this.selection.selectWordRight(); - - this.session.remove(this.getSelectionRange()); - this.clearSelection(); - }; - this.removeWordLeft = function() { - if (this.selection.isEmpty()) - this.selection.selectWordLeft(); - - this.session.remove(this.getSelectionRange()); - this.clearSelection(); - }; - this.removeToLineStart = function() { - if (this.selection.isEmpty()) - this.selection.selectLineStart(); - - this.session.remove(this.getSelectionRange()); - this.clearSelection(); - }; - this.removeToLineEnd = function() { - if (this.selection.isEmpty()) - this.selection.selectLineEnd(); - - var range = this.getSelectionRange(); - if (range.start.column == range.end.column && range.start.row == range.end.row) { - range.end.column = 0; - range.end.row++; - } - - this.session.remove(range); - this.clearSelection(); - }; - this.splitLine = function() { - if (!this.selection.isEmpty()) { - this.session.remove(this.getSelectionRange()); - this.clearSelection(); - } - - var cursor = this.getCursorPosition(); - this.insert("\n"); - this.moveCursorToPosition(cursor); - }; - this.transposeLetters = function() { - if (!this.selection.isEmpty()) { - return; - } - - var cursor = this.getCursorPosition(); - var column = cursor.column; - if (column === 0) - return; - - var line = this.session.getLine(cursor.row); - var swap, range; - if (column < line.length) { - swap = line.charAt(column) + line.charAt(column-1); - range = new Range(cursor.row, column-1, cursor.row, column+1); - } - else { - swap = line.charAt(column-1) + line.charAt(column-2); - range = new Range(cursor.row, column-2, cursor.row, column); - } - this.session.replace(range, swap); - }; - this.toLowerCase = function() { - var originalRange = this.getSelectionRange(); - if (this.selection.isEmpty()) { - this.selection.selectWord(); - } - - var range = this.getSelectionRange(); - var text = this.session.getTextRange(range); - this.session.replace(range, text.toLowerCase()); - this.selection.setSelectionRange(originalRange); - }; - this.toUpperCase = function() { - var originalRange = this.getSelectionRange(); - if (this.selection.isEmpty()) { - this.selection.selectWord(); - } - - var range = this.getSelectionRange(); - var text = this.session.getTextRange(range); - this.session.replace(range, text.toUpperCase()); - this.selection.setSelectionRange(originalRange); - }; - this.indent = function() { - var session = this.session; - var range = this.getSelectionRange(); - - if (range.start.row < range.end.row) { - var rows = this.$getSelectedRows(); - session.indentRows(rows.first, rows.last, "\t"); - return; - } else if (range.start.column < range.end.column) { - var text = session.getTextRange(range); - if (!/^\s+$/.test(text)) { - var rows = this.$getSelectedRows(); - session.indentRows(rows.first, rows.last, "\t"); - return; - } - } - - var line = session.getLine(range.start.row); - var position = range.start; - var size = session.getTabSize(); - var column = session.documentToScreenColumn(position.row, position.column); - - if (this.session.getUseSoftTabs()) { - var count = (size - column % size); - var indentString = lang.stringRepeat(" ", count); - } else { - var count = column % size; - while (line[range.start.column] == " " && count) { - range.start.column--; - count--; - } - this.selection.setSelectionRange(range); - indentString = "\t"; - } - return this.insert(indentString); - }; - this.blockIndent = function() { - var rows = this.$getSelectedRows(); - this.session.indentRows(rows.first, rows.last, "\t"); - }; - this.blockOutdent = function() { - var selection = this.session.getSelection(); - this.session.outdentRows(selection.getRange()); - }; - this.sortLines = function() { - var rows = this.$getSelectedRows(); - var session = this.session; - - var lines = []; - for (i = rows.first; i <= rows.last; i++) - lines.push(session.getLine(i)); - - lines.sort(function(a, b) { - if (a.toLowerCase() < b.toLowerCase()) return -1; - if (a.toLowerCase() > b.toLowerCase()) return 1; - return 0; - }); - - var deleteRange = new Range(0, 0, 0, 0); - for (var i = rows.first; i <= rows.last; i++) { - var line = session.getLine(i); - deleteRange.start.row = i; - deleteRange.end.row = i; - deleteRange.end.column = line.length; - session.replace(deleteRange, lines[i-rows.first]); - } - }; - this.toggleCommentLines = function() { - var state = this.session.getState(this.getCursorPosition().row); - var rows = this.$getSelectedRows(); - this.session.getMode().toggleCommentLines(state, this.session, rows.first, rows.last); - }; - - this.toggleBlockComment = function() { - var cursor = this.getCursorPosition(); - var state = this.session.getState(cursor.row); - var range = this.getSelectionRange(); - this.session.getMode().toggleBlockComment(state, this.session, range, cursor); - }; - this.getNumberAt = function(row, column) { - var _numberRx = /[\-]?[0-9]+(?:\.[0-9]+)?/g; - _numberRx.lastIndex = 0; - - var s = this.session.getLine(row); - while (_numberRx.lastIndex < column) { - var m = _numberRx.exec(s); - if(m.index <= column && m.index+m[0].length >= column){ - var number = { - value: m[0], - start: m.index, - end: m.index+m[0].length - }; - return number; - } - } - return null; - }; - this.modifyNumber = function(amount) { - var row = this.selection.getCursor().row; - var column = this.selection.getCursor().column; - var charRange = new Range(row, column-1, row, column); - - var c = this.session.getTextRange(charRange); - if (!isNaN(parseFloat(c)) && isFinite(c)) { - var nr = this.getNumberAt(row, column); - if (nr) { - var fp = nr.value.indexOf(".") >= 0 ? nr.start + nr.value.indexOf(".") + 1 : nr.end; - var decimals = nr.start + nr.value.length - fp; - - var t = parseFloat(nr.value); - t *= Math.pow(10, decimals); - - - if(fp !== nr.end && column < fp){ - amount *= Math.pow(10, nr.end - column - 1); - } else { - amount *= Math.pow(10, nr.end - column); - } - - t += amount; - t /= Math.pow(10, decimals); - var nnr = t.toFixed(decimals); - var replaceRange = new Range(row, nr.start, row, nr.end); - this.session.replace(replaceRange, nnr); - this.moveCursorTo(row, Math.max(nr.start +1, column + nnr.length - nr.value.length)); - - } - } - }; - this.removeLines = function() { - var rows = this.$getSelectedRows(); - var range; - if (rows.first === 0 || rows.last+1 < this.session.getLength()) - range = new Range(rows.first, 0, rows.last+1, 0); - else - range = new Range( - rows.first-1, this.session.getLine(rows.first-1).length, - rows.last, this.session.getLine(rows.last).length - ); - this.session.remove(range); - this.clearSelection(); - }; - - this.duplicateSelection = function() { - var sel = this.selection; - var doc = this.session; - var range = sel.getRange(); - var reverse = sel.isBackwards(); - if (range.isEmpty()) { - var row = range.start.row; - doc.duplicateLines(row, row); - } else { - var point = reverse ? range.start : range.end; - var endPoint = doc.insert(point, doc.getTextRange(range), false); - range.start = point; - range.end = endPoint; - - sel.setSelectionRange(range, reverse); - } - }; - this.moveLinesDown = function() { - this.$moveLines(function(firstRow, lastRow) { - return this.session.moveLinesDown(firstRow, lastRow); - }); - }; - this.moveLinesUp = function() { - this.$moveLines(function(firstRow, lastRow) { - return this.session.moveLinesUp(firstRow, lastRow); - }); - }; - this.moveText = function(range, toPosition, copy) { - return this.session.moveText(range, toPosition, copy); - }; - this.copyLinesUp = function() { - this.$moveLines(function(firstRow, lastRow) { - this.session.duplicateLines(firstRow, lastRow); - return 0; - }); - }; - this.copyLinesDown = function() { - this.$moveLines(function(firstRow, lastRow) { - return this.session.duplicateLines(firstRow, lastRow); - }); - }; - this.$moveLines = function(mover) { - var selection = this.selection; - if (!selection.inMultiSelectMode || this.inVirtualSelectionMode) { - var range = selection.toOrientedRange(); - var rows = this.$getSelectedRows(range); - var linesMoved = mover.call(this, rows.first, rows.last); - range.moveBy(linesMoved, 0); - selection.fromOrientedRange(range); - } else { - var ranges = selection.rangeList.ranges; - selection.rangeList.detach(this.session); - - for (var i = ranges.length; i--; ) { - var rangeIndex = i; - var rows = ranges[i].collapseRows(); - var last = rows.end.row; - var first = rows.start.row; - while (i--) { - rows = ranges[i].collapseRows(); - if (first - rows.end.row <= 1) - first = rows.end.row; - else - break; - } - i++; - - var linesMoved = mover.call(this, first, last); - while (rangeIndex >= i) { - ranges[rangeIndex].moveBy(linesMoved, 0); - rangeIndex--; - } - } - selection.fromOrientedRange(selection.ranges[0]); - selection.rangeList.attach(this.session); - } - }; - this.$getSelectedRows = function() { - var range = this.getSelectionRange().collapseRows(); - - return { - first: this.session.getRowFoldStart(range.start.row), - last: this.session.getRowFoldEnd(range.end.row) - }; - }; - - this.onCompositionStart = function(text) { - this.renderer.showComposition(this.getCursorPosition()); - }; - - this.onCompositionUpdate = function(text) { - this.renderer.setCompositionText(text); - }; - - this.onCompositionEnd = function() { - this.renderer.hideComposition(); - }; - this.getFirstVisibleRow = function() { - return this.renderer.getFirstVisibleRow(); - }; - this.getLastVisibleRow = function() { - return this.renderer.getLastVisibleRow(); - }; - this.isRowVisible = function(row) { - return (row >= this.getFirstVisibleRow() && row <= this.getLastVisibleRow()); - }; - this.isRowFullyVisible = function(row) { - return (row >= this.renderer.getFirstFullyVisibleRow() && row <= this.renderer.getLastFullyVisibleRow()); - }; - this.$getVisibleRowCount = function() { - return this.renderer.getScrollBottomRow() - this.renderer.getScrollTopRow() + 1; - }; - - this.$moveByPage = function(dir, select) { - var renderer = this.renderer; - var config = this.renderer.layerConfig; - var rows = dir * Math.floor(config.height / config.lineHeight); - - this.$blockScrolling++; - if (select === true) { - this.selection.$moveSelection(function(){ - this.moveCursorBy(rows, 0); - }); - } else if (select === false) { - this.selection.moveCursorBy(rows, 0); - this.selection.clearSelection(); - } - this.$blockScrolling--; - - var scrollTop = renderer.scrollTop; - - renderer.scrollBy(0, rows * config.lineHeight); - if (select != null) - renderer.scrollCursorIntoView(null, 0.5); - - renderer.animateScrolling(scrollTop); - }; - this.selectPageDown = function() { - this.$moveByPage(1, true); - }; - this.selectPageUp = function() { - this.$moveByPage(-1, true); - }; - this.gotoPageDown = function() { - this.$moveByPage(1, false); - }; - this.gotoPageUp = function() { - this.$moveByPage(-1, false); - }; - this.scrollPageDown = function() { - this.$moveByPage(1); - }; - this.scrollPageUp = function() { - this.$moveByPage(-1); - }; - this.scrollToRow = function(row) { - this.renderer.scrollToRow(row); - }; - this.scrollToLine = function(line, center, animate, callback) { - this.renderer.scrollToLine(line, center, animate, callback); - }; - this.centerSelection = function() { - var range = this.getSelectionRange(); - var pos = { - row: Math.floor(range.start.row + (range.end.row - range.start.row) / 2), - column: Math.floor(range.start.column + (range.end.column - range.start.column) / 2) - }; - this.renderer.alignCursor(pos, 0.5); - }; - this.getCursorPosition = function() { - return this.selection.getCursor(); - }; - this.getCursorPositionScreen = function() { - return this.session.documentToScreenPosition(this.getCursorPosition()); - }; - this.getSelectionRange = function() { - return this.selection.getRange(); - }; - this.selectAll = function() { - this.$blockScrolling += 1; - this.selection.selectAll(); - this.$blockScrolling -= 1; - }; - this.clearSelection = function() { - this.selection.clearSelection(); - }; - this.moveCursorTo = function(row, column) { - this.selection.moveCursorTo(row, column); - }; - this.moveCursorToPosition = function(pos) { - this.selection.moveCursorToPosition(pos); - }; - this.jumpToMatching = function(select) { - var cursor = this.getCursorPosition(); - - var range = this.session.getBracketRange(cursor); - if (!range) { - range = this.find({ - needle: /[{}()\[\]]/g, - preventScroll:true, - start: {row: cursor.row, column: cursor.column - 1} - }); - if (!range) - return; - var pos = range.start; - if (pos.row == cursor.row && Math.abs(pos.column - cursor.column) < 2) - range = this.session.getBracketRange(pos); - } - - pos = range && range.cursor || pos; - if (pos) { - if (select) { - if (range && range.isEqual(this.getSelectionRange())) - this.clearSelection(); - else - this.selection.selectTo(pos.row, pos.column); - } else { - this.clearSelection(); - this.moveCursorTo(pos.row, pos.column); - } - } - }; - this.gotoLine = function(lineNumber, column, animate) { - this.selection.clearSelection(); - this.session.unfold({row: lineNumber - 1, column: column || 0}); - - this.$blockScrolling += 1; - this.exitMultiSelectMode && this.exitMultiSelectMode(); - this.moveCursorTo(lineNumber - 1, column || 0); - this.$blockScrolling -= 1; - - if (!this.isRowFullyVisible(lineNumber - 1)) - this.scrollToLine(lineNumber - 1, true, animate); - }; - this.navigateTo = function(row, column) { - this.clearSelection(); - this.moveCursorTo(row, column); - }; - this.navigateUp = function(times) { - if (this.selection.isMultiLine() && !this.selection.isBackwards()) { - var selectionStart = this.selection.anchor.getPosition(); - return this.moveCursorToPosition(selectionStart); - } - this.selection.clearSelection(); - times = times || 1; - this.selection.moveCursorBy(-times, 0); - }; - this.navigateDown = function(times) { - if (this.selection.isMultiLine() && this.selection.isBackwards()) { - var selectionEnd = this.selection.anchor.getPosition(); - return this.moveCursorToPosition(selectionEnd); - } - this.selection.clearSelection(); - times = times || 1; - this.selection.moveCursorBy(times, 0); - }; - this.navigateLeft = function(times) { - if (!this.selection.isEmpty()) { - var selectionStart = this.getSelectionRange().start; - this.moveCursorToPosition(selectionStart); - } - else { - times = times || 1; - while (times--) { - this.selection.moveCursorLeft(); - } - } - this.clearSelection(); - }; - this.navigateRight = function(times) { - if (!this.selection.isEmpty()) { - var selectionEnd = this.getSelectionRange().end; - this.moveCursorToPosition(selectionEnd); - } - else { - times = times || 1; - while (times--) { - this.selection.moveCursorRight(); - } - } - this.clearSelection(); - }; - this.navigateLineStart = function() { - this.selection.moveCursorLineStart(); - this.clearSelection(); - }; - this.navigateLineEnd = function() { - this.selection.moveCursorLineEnd(); - this.clearSelection(); - }; - this.navigateFileEnd = function() { - this.selection.moveCursorFileEnd(); - this.clearSelection(); - }; - this.navigateFileStart = function() { - this.selection.moveCursorFileStart(); - this.clearSelection(); - }; - this.navigateWordRight = function() { - this.selection.moveCursorWordRight(); - this.clearSelection(); - }; - this.navigateWordLeft = function() { - this.selection.moveCursorWordLeft(); - this.clearSelection(); - }; - this.replace = function(replacement, options) { - if (options) - this.$search.set(options); - - var range = this.$search.find(this.session); - var replaced = 0; - if (!range) - return replaced; - - if (this.$tryReplace(range, replacement)) { - replaced = 1; - } - if (range !== null) { - this.selection.setSelectionRange(range); - this.renderer.scrollSelectionIntoView(range.start, range.end); - } - - return replaced; - }; - this.replaceAll = function(replacement, options) { - if (options) { - this.$search.set(options); - } - - var ranges = this.$search.findAll(this.session); - var replaced = 0; - if (!ranges.length) - return replaced; - - this.$blockScrolling += 1; - - var selection = this.getSelectionRange(); - this.clearSelection(); - this.selection.moveCursorTo(0, 0); - - for (var i = ranges.length - 1; i >= 0; --i) { - if(this.$tryReplace(ranges[i], replacement)) { - replaced++; - } - } - - this.selection.setSelectionRange(selection); - this.$blockScrolling -= 1; - - return replaced; - }; - - this.$tryReplace = function(range, replacement) { - var input = this.session.getTextRange(range); - replacement = this.$search.replace(input, replacement); - if (replacement !== null) { - range.end = this.session.replace(range, replacement); - return range; - } else { - return null; - } - }; - this.getLastSearchOptions = function() { - return this.$search.getOptions(); - }; - this.find = function(needle, options, animate) { - if (!options) - options = {}; - - if (typeof needle == "string" || needle instanceof RegExp) - options.needle = needle; - else if (typeof needle == "object") - oop.mixin(options, needle); - - var range = this.selection.getRange(); - if (options.needle == null) { - needle = this.session.getTextRange(range) - || this.$search.$options.needle; - if (!needle) { - range = this.session.getWordRange(range.start.row, range.start.column); - needle = this.session.getTextRange(range); - } - this.$search.set({needle: needle}); - } - - this.$search.set(options); - if (!options.start) - this.$search.set({start: range}); - - var newRange = this.$search.find(this.session); - if (options.preventScroll) - return newRange; - if (newRange) { - this.revealRange(newRange, animate); - return newRange; - } - if (options.backwards) - range.start = range.end; - else - range.end = range.start; - this.selection.setRange(range); - }; - this.findNext = function(options, animate) { - this.find({skipCurrent: true, backwards: false}, options, animate); - }; - this.findPrevious = function(options, animate) { - this.find(options, {skipCurrent: true, backwards: true}, animate); - }; - - this.revealRange = function(range, animate) { - this.$blockScrolling += 1; - this.session.unfold(range); - this.selection.setSelectionRange(range); - this.$blockScrolling -= 1; - - var scrollTop = this.renderer.scrollTop; - this.renderer.scrollSelectionIntoView(range.start, range.end, 0.5); - if (animate !== false) - this.renderer.animateScrolling(scrollTop); - }; - this.undo = function() { - this.$blockScrolling++; - this.session.getUndoManager().undo(); - this.$blockScrolling--; - this.renderer.scrollCursorIntoView(null, 0.5); - }; - this.redo = function() { - this.$blockScrolling++; - this.session.getUndoManager().redo(); - this.$blockScrolling--; - this.renderer.scrollCursorIntoView(null, 0.5); - }; - this.destroy = function() { - this.renderer.destroy(); - this._emit("destroy", this); - }; - this.setAutoScrollEditorIntoView = function(enable) { - if (enable === false) - return; - var rect; - var self = this; - var shouldScroll = false; - if (!this.$scrollAnchor) - this.$scrollAnchor = document.createElement("div"); - var scrollAnchor = this.$scrollAnchor; - scrollAnchor.style.cssText = "position:absolute"; - this.container.insertBefore(scrollAnchor, this.container.firstChild); - var onChangeSelection = this.on("changeSelection", function() { - shouldScroll = true; - }); - var onBeforeRender = this.renderer.on("beforeRender", function() { - if (shouldScroll) - rect = self.renderer.container.getBoundingClientRect(); - }); - var onAfterRender = this.renderer.on("afterRender", function() { - if (shouldScroll && rect && self.isFocused()) { - var renderer = self.renderer; - var pos = renderer.$cursorLayer.$pixelPos; - var config = renderer.layerConfig; - var top = pos.top - config.offset; - if (pos.top >= 0 && top + rect.top < 0) { - shouldScroll = true; - } else if (pos.top < config.height && - pos.top + rect.top + config.lineHeight > window.innerHeight) { - shouldScroll = false; - } else { - shouldScroll = null; - } - if (shouldScroll != null) { - scrollAnchor.style.top = top + "px"; - scrollAnchor.style.left = pos.left + "px"; - scrollAnchor.style.height = config.lineHeight + "px"; - scrollAnchor.scrollIntoView(shouldScroll); - } - shouldScroll = rect = null; - } - }); - this.setAutoScrollEditorIntoView = function(enable) { - if (enable === true) - return; - delete this.setAutoScrollEditorIntoView; - this.removeEventListener("changeSelection", onChangeSelection); - this.renderer.removeEventListener("afterRender", onAfterRender); - this.renderer.removeEventListener("beforeRender", onBeforeRender); - }; - }; - - - this.$resetCursorStyle = function() { - var style = this.$cursorStyle || "ace"; - var cursorLayer = this.renderer.$cursorLayer; - if (!cursorLayer) - return; - cursorLayer.setSmoothBlinking(style == "smooth"); - cursorLayer.isBlinking = !this.$readOnly && style != "wide"; - }; - -}).call(Editor.prototype); - - - -config.defineOptions(Editor.prototype, "editor", { - selectionStyle: { - set: function(style) { - this.onSelectionChange(); - this._emit("changeSelectionStyle", {data: style}); - }, - initialValue: "line" - }, - highlightActiveLine: { - set: function() {this.$updateHighlightActiveLine();}, - initialValue: true - }, - highlightSelectedWord: { - set: function(shouldHighlight) {this.$onSelectionChange();}, - initialValue: true - }, - readOnly: { - set: function(readOnly) { - this.textInput.setReadOnly(readOnly); - this.$resetCursorStyle(); - }, - initialValue: false - }, - cursorStyle: { - set: function(val) { this.$resetCursorStyle(); }, - values: ["ace", "slim", "smooth", "wide"], - initialValue: "ace" - }, - mergeUndoDeltas: { - values: [false, true, "always"], - initialValue: true - }, - behavioursEnabled: {initialValue: true}, - wrapBehavioursEnabled: {initialValue: true}, - - hScrollBarAlwaysVisible: "renderer", - vScrollBarAlwaysVisible: "renderer", - highlightGutterLine: "renderer", - animatedScroll: "renderer", - showInvisibles: "renderer", - showPrintMargin: "renderer", - printMarginColumn: "renderer", - printMargin: "renderer", - fadeFoldWidgets: "renderer", - showFoldWidgets: "renderer", - showGutter: "renderer", - displayIndentGuides: "renderer", - fontSize: "renderer", - fontFamily: "renderer", - maxLines: "renderer", - minLines: "renderer", - scrollPastEnd: "renderer", - fixedWidthGutter: "renderer", - theme: "renderer", - - scrollSpeed: "$mouseHandler", - dragDelay: "$mouseHandler", - dragEnabled: "$mouseHandler", - focusTimout: "$mouseHandler", - - firstLineNumber: "session", - overwrite: "session", - newLineMode: "session", - useWorker: "session", - useSoftTabs: "session", - tabSize: "session", - wrap: "session", - foldStyle: "session", - mode: "session" -}); - -exports.Editor = Editor; -}); - -ace.define('ace/lib/lang', ['require', 'exports', 'module' ], function(require, exports, module) { - - -exports.stringReverse = function(string) { - return string.split("").reverse().join(""); -}; - -exports.stringRepeat = function (string, count) { - var result = ''; - while (count > 0) { - if (count & 1) - result += string; - - if (count >>= 1) - string += string; - } - return result; -}; - -var trimBeginRegexp = /^\s\s*/; -var trimEndRegexp = /\s\s*$/; - -exports.stringTrimLeft = function (string) { - return string.replace(trimBeginRegexp, ''); -}; - -exports.stringTrimRight = function (string) { - return string.replace(trimEndRegexp, ''); -}; - -exports.copyObject = function(obj) { - var copy = {}; - for (var key in obj) { - copy[key] = obj[key]; - } - return copy; -}; - -exports.copyArray = function(array){ - var copy = []; - for (var i=0, l=array.length; i= 0) { - anchor = this.$clickSelection.start; - if (range.start.row != cursor.row || range.start.column != cursor.column) - cursor = range.end; - } else if (cmpStart == -1 && cmpEnd == 1) { - cursor = range.end; - anchor = range.start; - } else { - var orientedRange = calcRangeOrientation(this.$clickSelection, cursor); - cursor = orientedRange.cursor; - anchor = orientedRange.anchor; - } - editor.selection.setSelectionAnchor(anchor.row, anchor.column); - } - editor.selection.selectToPosition(cursor); - - editor.renderer.scrollCursorIntoView(); - }; - - this.selectEnd = - this.selectAllEnd = - this.selectByWordsEnd = - this.selectByLinesEnd = function() { - this.editor.unsetStyle("ace_selecting"); - if (this.editor.renderer.scroller.releaseCapture) { - this.editor.renderer.scroller.releaseCapture(); - } - }; - - this.focusWait = function() { - var distance = calcDistance(this.mousedownEvent.x, this.mousedownEvent.y, this.x, this.y); - var time = Date.now(); - - if (distance > DRAG_OFFSET || time - this.mousedownEvent.time > this.$focusTimout) - this.startSelect(this.mousedownEvent.getDocumentPosition()); - }; - - this.onDoubleClick = function(ev) { - var pos = ev.getDocumentPosition(); - var editor = this.editor; - var session = editor.session; - - var range = session.getBracketRange(pos); - if (range) { - if (range.isEmpty()) { - range.start.column--; - range.end.column++; - } - this.setState("select"); - } else { - range = editor.selection.getWordRange(pos.row, pos.column); - this.setState("selectByWords"); - } - this.$clickSelection = range; - this[this.state] && this[this.state](ev); - }; - - this.onTripleClick = function(ev) { - var pos = ev.getDocumentPosition(); - var editor = this.editor; - - this.setState("selectByLines"); - this.$clickSelection = editor.selection.getLineRange(pos.row); - this[this.state] && this[this.state](ev); - }; - - this.onQuadClick = function(ev) { - var editor = this.editor; - - editor.selectAll(); - this.$clickSelection = editor.getSelectionRange(); - this.setState("selectAll"); - }; - - this.onMouseWheel = function(ev) { - if (ev.getShiftKey() || ev.getAccelKey()) - return; - var t = ev.domEvent.timeStamp; - var dt = t - (this.$lastScrollTime||0); - - var editor = this.editor; - var isScrolable = editor.renderer.isScrollableBy(ev.wheelX * ev.speed, ev.wheelY * ev.speed); - if (isScrolable || dt < 200) { - this.$lastScrollTime = t; - editor.renderer.scrollBy(ev.wheelX * ev.speed, ev.wheelY * ev.speed); - return ev.stop(); - } - }; - -}).call(DefaultHandlers.prototype); - -exports.DefaultHandlers = DefaultHandlers; - -function calcDistance(ax, ay, bx, by) { - return Math.sqrt(Math.pow(bx - ax, 2) + Math.pow(by - ay, 2)); -} - -function calcRangeOrientation(range, cursor) { - if (range.start.row == range.end.row) - var cmp = 2 * cursor.column - range.start.column - range.end.column; - else if (range.start.row == range.end.row - 1 && !range.start.column && !range.end.column) - var cmp = cursor.column - 4; - else - var cmp = 2 * cursor.row - range.start.row - range.end.row; - - if (cmp < 0) - return {cursor: range.start, anchor: range.end}; - else - return {cursor: range.end, anchor: range.start}; -} - -}); - -ace.define('ace/mouse/default_gutter_handler', ['require', 'exports', 'module' , 'ace/lib/dom', 'ace/lib/event'], function(require, exports, module) { - -var dom = require("../lib/dom"); -var event = require("../lib/event"); - -function GutterHandler(mouseHandler) { - var editor = mouseHandler.editor; - var gutter = editor.renderer.$gutterLayer; - - mouseHandler.editor.setDefaultHandler("guttermousedown", function(e) { - if (!editor.isFocused() || e.getButton() != 0) - return; - var gutterRegion = gutter.getRegion(e); - - if (gutterRegion == "foldWidgets") - return; - - var row = e.getDocumentPosition().row; - var selection = editor.session.selection; - - if (e.getShiftKey()) - selection.selectTo(row, 0); - else { - if (e.domEvent.detail == 2) { - editor.selectAll(); - return e.preventDefault(); - } - mouseHandler.$clickSelection = editor.selection.getLineRange(row); - } - mouseHandler.setState("selectByLines"); - mouseHandler.captureMouse(e); - return e.preventDefault(); - }); - - - var tooltipTimeout, mouseEvent, tooltip, tooltipAnnotation; - function createTooltip() { - tooltip = dom.createElement("div"); - tooltip.className = "ace_gutter-tooltip"; - tooltip.style.display = "none"; - editor.container.appendChild(tooltip); - } - - function showTooltip() { - if (!tooltip) { - createTooltip(); - } - var row = mouseEvent.getDocumentPosition().row; - var annotation = gutter.$annotations[row]; - if (!annotation) - return hideTooltip(); - - var maxRow = editor.session.getLength(); - if (row == maxRow) { - var screenRow = editor.renderer.pixelToScreenCoordinates(0, mouseEvent.y).row; - var pos = mouseEvent.$pos; - if (screenRow > editor.session.documentToScreenRow(pos.row, pos.column)) - return hideTooltip(); - } - - if (tooltipAnnotation == annotation) - return; - tooltipAnnotation = annotation.text.join("
"); - - tooltip.style.display = "block"; - tooltip.innerHTML = tooltipAnnotation; - editor.on("mousewheel", hideTooltip); - - moveTooltip(mouseEvent); - } - - function hideTooltip() { - if (tooltipTimeout) - tooltipTimeout = clearTimeout(tooltipTimeout); - if (tooltipAnnotation) { - tooltip.style.display = "none"; - tooltipAnnotation = null; - editor.removeEventListener("mousewheel", hideTooltip); - } - } - - function moveTooltip(e) { - var rect = editor.renderer.$gutter.getBoundingClientRect(); - tooltip.style.left = e.x + 15 + "px"; - if (e.y + 3 * editor.renderer.lineHeight + 15 < rect.bottom) { - tooltip.style.bottom = ""; - tooltip.style.top = e.y + 15 + "px"; - } else { - tooltip.style.top = ""; - var innerHeight = window.innerHeight || document.documentElement.clientHeight; - tooltip.style.bottom = innerHeight - e.y + 5 + "px"; - } - } - - mouseHandler.editor.setDefaultHandler("guttermousemove", function(e) { - var target = e.domEvent.target || e.domEvent.srcElement; - if (dom.hasCssClass(target, "ace_fold-widget")) - return hideTooltip(); - - if (tooltipAnnotation) - moveTooltip(e); - - mouseEvent = e; - if (tooltipTimeout) - return; - tooltipTimeout = setTimeout(function() { - tooltipTimeout = null; - if (mouseEvent && !mouseHandler.isMousePressed) - showTooltip(); - else - hideTooltip(); - }, 50); - }); - - event.addListener(editor.renderer.$gutter, "mouseout", function(e) { - mouseEvent = null; - if (!tooltipAnnotation || tooltipTimeout) - return; - - tooltipTimeout = setTimeout(function() { - tooltipTimeout = null; - hideTooltip(); - }, 50); - }); - - editor.on("changeSession", hideTooltip); -} - -exports.GutterHandler = GutterHandler; - -}); - -ace.define('ace/mouse/mouse_event', ['require', 'exports', 'module' , 'ace/lib/event', 'ace/lib/useragent'], function(require, exports, module) { - - -var event = require("../lib/event"); -var useragent = require("../lib/useragent"); -var MouseEvent = exports.MouseEvent = function(domEvent, editor) { - this.domEvent = domEvent; - this.editor = editor; - - this.x = this.clientX = domEvent.clientX; - this.y = this.clientY = domEvent.clientY; - - this.$pos = null; - this.$inSelection = null; - - this.propagationStopped = false; - this.defaultPrevented = false; -}; - -(function() { - - this.stopPropagation = function() { - event.stopPropagation(this.domEvent); - this.propagationStopped = true; - }; - - this.preventDefault = function() { - event.preventDefault(this.domEvent); - this.defaultPrevented = true; - }; - - this.stop = function() { - this.stopPropagation(); - this.preventDefault(); - }; - this.getDocumentPosition = function() { - if (this.$pos) - return this.$pos; - - this.$pos = this.editor.renderer.screenToTextCoordinates(this.clientX, this.clientY); - return this.$pos; - }; - this.inSelection = function() { - if (this.$inSelection !== null) - return this.$inSelection; - - var editor = this.editor; - - - var selectionRange = editor.getSelectionRange(); - if (selectionRange.isEmpty()) - this.$inSelection = false; - else { - var pos = this.getDocumentPosition(); - this.$inSelection = selectionRange.contains(pos.row, pos.column); - } - - return this.$inSelection; - }; - this.getButton = function() { - return event.getButton(this.domEvent); - }; - this.getShiftKey = function() { - return this.domEvent.shiftKey; - }; - - this.getAccelKey = useragent.isMac - ? function() { return this.domEvent.metaKey; } - : function() { return this.domEvent.ctrlKey; }; - -}).call(MouseEvent.prototype); - -}); - -ace.define('ace/mouse/dragdrop_handler', ['require', 'exports', 'module' , 'ace/lib/dom', 'ace/lib/event', 'ace/lib/useragent'], function(require, exports, module) { - - -var dom = require("../lib/dom"); -var event = require("../lib/event"); -var useragent = require("../lib/useragent"); - -var AUTOSCROLL_DELAY = 200; -var SCROLL_CURSOR_DELAY = 200; -var SCROLL_CURSOR_HYSTERESIS = 5; - -function DragdropHandler(mouseHandler) { - - var editor = mouseHandler.editor; - - var blankImage = dom.createElement("img"); - blankImage.src = "data:image/gif;base64,R0lGODlhAQABAAAAACH5BAEKAAEALAAAAAABAAEAAAICTAEAOw=="; - if (useragent.isOpera) - blankImage.style.cssText = "width:1px;height:1px;position:fixed;top:0;left:0;z-index:2147483647;opacity:0;"; - - var exports = ["dragWait", "dragWaitEnd", "startDrag", "dragReadyEnd", "onMouseDrag"]; - - exports.forEach(function(x) { - mouseHandler[x] = this[x]; - }, this); - editor.addEventListener("mousedown", this.onMouseDown.bind(mouseHandler)); - - - var mouseTarget = editor.container; - var dragSelectionMarker, x, y; - var timerId, range; - var dragCursor, counter = 0; - var dragOperation; - var isInternal; - var autoScrollStartTime; - var cursorMovedTime; - var cursorPointOnCaretMoved; - - this.onDragStart = function(e) { - if (this.cancelDrag || !mouseTarget.draggable) { - var self = this; - setTimeout(function(){ - self.startSelect(); - self.captureMouse(e); - }, 0); - return e.preventDefault(); - } - range = editor.getSelectionRange(); - - var dataTransfer = e.dataTransfer; - dataTransfer.effectAllowed = editor.getReadOnly() ? "copy" : "copyMove"; - if (useragent.isOpera) { - editor.container.appendChild(blankImage); - blankImage._top = blankImage.offsetTop; - } - dataTransfer.setDragImage && dataTransfer.setDragImage(blankImage, 0, 0); - if (useragent.isOpera) { - editor.container.removeChild(blankImage); - } - dataTransfer.clearData(); - dataTransfer.setData("Text", editor.session.getTextRange()); - - isInternal = true; - this.setState("drag"); - }; - - this.onDragEnd = function(e) { - mouseTarget.draggable = false; - isInternal = false; - this.setState(null); - if (!editor.getReadOnly()) { - var dropEffect = e.dataTransfer.dropEffect; - if (!dragOperation && dropEffect == "move") - editor.session.remove(editor.getSelectionRange()); - editor.renderer.$cursorLayer.setBlinking(true); - } - this.editor.unsetStyle("ace_dragging"); - }; - - this.onDragEnter = function(e) { - if (editor.getReadOnly() || !canAccept(e.dataTransfer)) - return; - if (!dragSelectionMarker) - addDragMarker(); - counter++; - e.dataTransfer.dropEffect = dragOperation = getDropEffect(e); - return event.preventDefault(e); - }; - - this.onDragOver = function(e) { - if (editor.getReadOnly() || !canAccept(e.dataTransfer)) - return; - if (!dragSelectionMarker) { - addDragMarker(); - counter++; - } - if (onMouseMoveTimer !== null) - onMouseMoveTimer = null; - x = e.clientX; - y = e.clientY; - - e.dataTransfer.dropEffect = dragOperation = getDropEffect(e); - return event.preventDefault(e); - }; - - this.onDragLeave = function(e) { - counter--; - if (counter <= 0 && dragSelectionMarker) { - clearDragMarker(); - dragOperation = null; - return event.preventDefault(e); - } - }; - - this.onDrop = function(e) { - if (!dragSelectionMarker) - return; - var dataTransfer = e.dataTransfer; - if (isInternal) { - switch (dragOperation) { - case "move": - if (range.contains(dragCursor.row, dragCursor.column)) { - range = { - start: dragCursor, - end: dragCursor - }; - } else { - range = editor.moveText(range, dragCursor); - } - break; - case "copy": - range = editor.moveText(range, dragCursor, true); - break; - } - } else { - var dropData = dataTransfer.getData('Text'); - range = { - start: dragCursor, - end: editor.session.insert(dragCursor, dropData) - }; - editor.focus(); - dragOperation = null; - } - clearDragMarker(); - return event.preventDefault(e); - }; - - event.addListener(mouseTarget, "dragstart", this.onDragStart.bind(mouseHandler)); - event.addListener(mouseTarget, "dragend", this.onDragEnd.bind(mouseHandler)); - event.addListener(mouseTarget, "dragenter", this.onDragEnter.bind(mouseHandler)); - event.addListener(mouseTarget, "dragover", this.onDragOver.bind(mouseHandler)); - event.addListener(mouseTarget, "dragleave", this.onDragLeave.bind(mouseHandler)); - event.addListener(mouseTarget, "drop", this.onDrop.bind(mouseHandler)); - - function scrollCursorIntoView(cursor, prevCursor) { - var now = Date.now(); - var vMovement = !prevCursor || cursor.row != prevCursor.row; - var hMovement = !prevCursor || cursor.column != prevCursor.column; - if (!cursorMovedTime || vMovement || hMovement) { - editor.$blockScrolling += 1; - editor.moveCursorToPosition(cursor); - editor.$blockScrolling -= 1; - cursorMovedTime = now; - cursorPointOnCaretMoved = {x: x, y: y}; - } else { - var distance = calcDistance(cursorPointOnCaretMoved.x, cursorPointOnCaretMoved.y, x, y); - if (distance > SCROLL_CURSOR_HYSTERESIS) { - cursorMovedTime = null; - } else if (now - cursorMovedTime >= SCROLL_CURSOR_DELAY) { - editor.renderer.scrollCursorIntoView(); - cursorMovedTime = null; - } - } - } - - function autoScroll(cursor, prevCursor) { - var now = Date.now(); - var lineHeight = editor.renderer.layerConfig.lineHeight; - var characterWidth = editor.renderer.layerConfig.characterWidth; - var editorRect = editor.renderer.scroller.getBoundingClientRect(); - var offsets = { - x: { - left: x - editorRect.left, - right: editorRect.right - x - }, - y: { - top: y - editorRect.top, - bottom: editorRect.bottom - y - } - }; - var nearestXOffset = Math.min(offsets.x.left, offsets.x.right); - var nearestYOffset = Math.min(offsets.y.top, offsets.y.bottom); - var scrollCursor = {row: cursor.row, column: cursor.column}; - if (nearestXOffset / characterWidth <= 2) { - scrollCursor.column += (offsets.x.left < offsets.x.right ? -3 : +2); - } - if (nearestYOffset / lineHeight <= 1) { - scrollCursor.row += (offsets.y.top < offsets.y.bottom ? -1 : +1); - } - var vScroll = cursor.row != scrollCursor.row; - var hScroll = cursor.column != scrollCursor.column; - var vMovement = !prevCursor || cursor.row != prevCursor.row; - if (vScroll || (hScroll && !vMovement)) { - if (!autoScrollStartTime) - autoScrollStartTime = now; - else if (now - autoScrollStartTime >= AUTOSCROLL_DELAY) - editor.renderer.scrollCursorIntoView(scrollCursor); - } else { - autoScrollStartTime = null; - } - } - - function onDragInterval() { - var prevCursor = dragCursor; - dragCursor = editor.renderer.screenToTextCoordinates(x, y); - scrollCursorIntoView(dragCursor, prevCursor); - autoScroll(dragCursor, prevCursor); - } - - function addDragMarker() { - range = editor.selection.toOrientedRange(); - dragSelectionMarker = editor.session.addMarker(range, "ace_selection", editor.getSelectionStyle()); - editor.clearSelection(); - if (editor.isFocused()) - editor.renderer.$cursorLayer.setBlinking(false); - clearInterval(timerId); - timerId = setInterval(onDragInterval, 20); - counter = 0; - event.addListener(document, "mousemove", onMouseMove); - } - - function clearDragMarker() { - clearInterval(timerId); - editor.session.removeMarker(dragSelectionMarker); - dragSelectionMarker = null; - editor.$blockScrolling += 1; - editor.selection.fromOrientedRange(range); - editor.$blockScrolling -= 1; - if (editor.isFocused() && !isInternal) - editor.renderer.$cursorLayer.setBlinking(!editor.getReadOnly()); - range = null; - counter = 0; - autoScrollStartTime = null; - cursorMovedTime = null; - event.removeListener(document, "mousemove", onMouseMove); - } - var onMouseMoveTimer = null; - function onMouseMove() { - if (onMouseMoveTimer == null) { - onMouseMoveTimer = setTimeout(function() { - if (onMouseMoveTimer != null && dragSelectionMarker) - clearDragMarker(); - }, 20); - } - } - - function canAccept(dataTransfer) { - var types = dataTransfer.types; - return !types || Array.prototype.some.call(types, function(type) { - return type == 'text/plain' || type == 'Text'; - }); - } - - function getDropEffect(e) { - var copyAllowed = ['copy', 'copymove', 'all', 'uninitialized']; - var moveAllowed = ['move', 'copymove', 'linkmove', 'all', 'uninitialized']; - - var copyModifierState = useragent.isMac ? e.altKey : e.ctrlKey; - var effectAllowed = "uninitialized"; - try { - effectAllowed = e.dataTransfer.effectAllowed.toLowerCase(); - } catch (e) {} - var dropEffect = "none"; - - if (copyModifierState && copyAllowed.indexOf(effectAllowed) >= 0) - dropEffect = "copy"; - else if (moveAllowed.indexOf(effectAllowed) >= 0) - dropEffect = "move"; - else if (copyAllowed.indexOf(effectAllowed) >= 0) - dropEffect = "copy"; - - return dropEffect; - } -} - -(function() { - - this.dragWait = function() { - var interval = Date.now() - this.mousedownEvent.time; - if (interval > this.editor.getDragDelay()) - this.startDrag(); - }; - - this.dragWaitEnd = function() { - var target = this.editor.container; - target.draggable = false; - this.startSelect(this.mousedownEvent.getDocumentPosition()); - this.selectEnd(); - }; - - this.dragReadyEnd = function(e) { - this.editor.renderer.$cursorLayer.setBlinking(!this.editor.getReadOnly()); - this.editor.unsetStyle("ace_dragging"); - this.dragWaitEnd(); - }; - - this.startDrag = function(){ - this.cancelDrag = false; - var target = this.editor.container; - target.draggable = true; - this.editor.renderer.$cursorLayer.setBlinking(false); - this.editor.setStyle("ace_dragging"); - this.setState("dragReady"); - }; - - this.onMouseDrag = function(e) { - var target = this.editor.container; - if (useragent.isIE && this.state == "dragReady") { - var distance = calcDistance(this.mousedownEvent.x, this.mousedownEvent.y, this.x, this.y); - if (distance > 3) - target.dragDrop(); - } - if (this.state === "dragWait") { - var distance = calcDistance(this.mousedownEvent.x, this.mousedownEvent.y, this.x, this.y); - if (distance > 0) { - target.draggable = false; - this.startSelect(this.mousedownEvent.getDocumentPosition()); - } - } - }; - - this.onMouseDown = function(e) { - if (!this.$dragEnabled) - return; - this.mousedownEvent = e; - var editor = this.editor; - - var inSelection = e.inSelection(); - var button = e.getButton(); - var clickCount = e.domEvent.detail || 1; - if (clickCount === 1 && button === 0 && inSelection) { - if (e.editor.inMultiSelectMode && (e.getAccelKey() || e.getShiftKey())) - return; - this.mousedownEvent.time = Date.now(); - var eventTarget = e.domEvent.target || e.domEvent.srcElement; - if ("unselectable" in eventTarget) - eventTarget.unselectable = "on"; - if (editor.getDragDelay()) { - if (useragent.isWebKit) { - this.cancelDrag = true; - var mouseTarget = editor.container; - mouseTarget.draggable = true; - } - this.setState("dragWait"); - } else { - this.startDrag(); - } - this.captureMouse(e, this.onMouseDrag.bind(this)); - e.defaultPrevented = true; - } - }; - -}).call(DragdropHandler.prototype); - - -function calcDistance(ax, ay, bx, by) { - return Math.sqrt(Math.pow(bx - ax, 2) + Math.pow(by - ay, 2)); -} - -exports.DragdropHandler = DragdropHandler; - -}); - -ace.define('ace/config', ['require', 'exports', 'module' , 'ace/lib/lang', 'ace/lib/oop', 'ace/lib/net', 'ace/lib/event_emitter'], function(require, exports, module) { -"no use strict"; - -var lang = require("./lib/lang"); -var oop = require("./lib/oop"); -var net = require("./lib/net"); -var EventEmitter = require("./lib/event_emitter").EventEmitter; - -var global = (function() { - return this; -})(); - -var options = { - packaged: false, - workerPath: null, - modePath: null, - themePath: null, - basePath: "", - suffix: ".js", - $moduleUrls: {} -}; - -exports.get = function(key) { - if (!options.hasOwnProperty(key)) - throw new Error("Unknown config key: " + key); - - return options[key]; -}; - -exports.set = function(key, value) { - if (!options.hasOwnProperty(key)) - throw new Error("Unknown config key: " + key); - - options[key] = value; -}; - -exports.all = function() { - return lang.copyObject(options); -}; -oop.implement(exports, EventEmitter); - -exports.moduleUrl = function(name, component) { - if (options.$moduleUrls[name]) - return options.$moduleUrls[name]; - - var parts = name.split("/"); - component = component || parts[parts.length - 2] || ""; - var sep = component == "snippets" ? "/" : "-"; - var base = parts[parts.length - 1]; - if (sep == "-") { - var re = new RegExp("^" + component + "[\\-_]|[\\-_]" + component + "$", "g"); - base = base.replace(re, ""); - } - - if ((!base || base == component) && parts.length > 1) - base = parts[parts.length - 2]; - var path = options[component + "Path"]; - if (path == null) { - path = options.basePath; - } else if (sep == "/") { - component = sep = ""; - } - if (path && path.slice(-1) != "/") - path += "/"; - return path + component + sep + base + this.get("suffix"); -}; - -exports.setModuleUrl = function(name, subst) { - return options.$moduleUrls[name] = subst; -}; - -exports.$loading = {}; -exports.loadModule = function(moduleName, onLoad) { - var module, moduleType; - if (Array.isArray(moduleName)) { - moduleType = moduleName[0]; - moduleName = moduleName[1]; - } - - try { - module = require(moduleName); - } catch (e) {} - if (module && !exports.$loading[moduleName]) - return onLoad && onLoad(module); - - if (!exports.$loading[moduleName]) - exports.$loading[moduleName] = []; - - exports.$loading[moduleName].push(onLoad); - - if (exports.$loading[moduleName].length > 1) - return; - - var afterLoad = function() { - require([moduleName], function(module) { - exports._emit("load.module", {name: moduleName, module: module}); - var listeners = exports.$loading[moduleName]; - exports.$loading[moduleName] = null; - listeners.forEach(function(onLoad) { - onLoad && onLoad(module); - }); - }); - }; - - if (!exports.get("packaged")) - return afterLoad(); - net.loadScript(exports.moduleUrl(moduleName, moduleType), afterLoad); -}; -exports.init = function() { - options.packaged = require.packaged || module.packaged || (global.define && define.packaged); - - if (!global.document) - return ""; - - var scriptOptions = {}; - var scriptUrl = ""; - - var scripts = document.getElementsByTagName("script"); - for (var i=0; i i) { - this.$docRowCache.splice(i, l); - this.$screenRowCache.splice(i, l); - } - }; - - this.$getRowCacheIndex = function(cacheArray, val) { - var low = 0; - var hi = cacheArray.length - 1; - - while (low <= hi) { - var mid = (low + hi) >> 1; - var c = cacheArray[mid]; - - if (val > c) - low = mid + 1; - else if (val < c) - hi = mid - 1; - else - return mid; - } - - return low -1; - }; - - this.resetCaches = function() { - this.$modified = true; - this.$wrapData = []; - this.$rowLengthCache = []; - this.$resetRowCache(0); - if (this.bgTokenizer) - this.bgTokenizer.start(0); - }; - - this.onChangeFold = function(e) { - var fold = e.data; - this.$resetRowCache(fold.start.row); - }; - - this.onChange = function(e) { - var delta = e.data; - this.$modified = true; - - this.$resetRowCache(delta.range.start.row); - - var removedFolds = this.$updateInternalDataOnChange(e); - if (!this.$fromUndo && this.$undoManager && !delta.ignore) { - this.$deltasDoc.push(delta); - if (removedFolds && removedFolds.length != 0) { - this.$deltasFold.push({ - action: "removeFolds", - folds: removedFolds - }); - } - - this.$informUndoManager.schedule(); - } - - this.bgTokenizer.$updateOnChange(delta); - this._emit("change", e); - }; - this.setValue = function(text) { - this.doc.setValue(text); - this.selection.moveCursorTo(0, 0); - this.selection.clearSelection(); - - this.$resetRowCache(0); - this.$deltas = []; - this.$deltasDoc = []; - this.$deltasFold = []; - this.getUndoManager().reset(); - }; - this.getValue = - this.toString = function() { - return this.doc.getValue(); - }; - this.getSelection = function() { - return this.selection; - }; - this.getState = function(row) { - return this.bgTokenizer.getState(row); - }; - this.getTokens = function(row) { - return this.bgTokenizer.getTokens(row); - }; - this.getTokenAt = function(row, column) { - var tokens = this.bgTokenizer.getTokens(row); - var token, c = 0; - if (column == null) { - i = tokens.length - 1; - c = this.getLine(row).length; - } else { - for (var i = 0; i < tokens.length; i++) { - c += tokens[i].value.length; - if (c >= column) - break; - } - } - token = tokens[i]; - if (!token) - return null; - token.index = i; - token.start = c - token.value.length; - return token; - }; - this.setUndoManager = function(undoManager) { - this.$undoManager = undoManager; - this.$deltas = []; - this.$deltasDoc = []; - this.$deltasFold = []; - - if (this.$informUndoManager) - this.$informUndoManager.cancel(); - - if (undoManager) { - var self = this; - - this.$syncInformUndoManager = function() { - self.$informUndoManager.cancel(); - - if (self.$deltasFold.length) { - self.$deltas.push({ - group: "fold", - deltas: self.$deltasFold - }); - self.$deltasFold = []; - } - - if (self.$deltasDoc.length) { - self.$deltas.push({ - group: "doc", - deltas: self.$deltasDoc - }); - self.$deltasDoc = []; - } - - if (self.$deltas.length > 0) { - undoManager.execute({ - action: "aceupdate", - args: [self.$deltas, self], - merge: self.mergeUndoDeltas - }); - } - self.mergeUndoDeltas = false; - self.$deltas = []; - } - this.$informUndoManager = lang.delayedCall(this.$syncInformUndoManager); - } - }; - this.markUndoGroup = function() { - if (this.$syncInformUndoManager) - this.$syncInformUndoManager(); - }; - - this.$defaultUndoManager = { - undo: function() {}, - redo: function() {}, - reset: function() {} - }; - this.getUndoManager = function() { - return this.$undoManager || this.$defaultUndoManager; - }; - this.getTabString = function() { - if (this.getUseSoftTabs()) { - return lang.stringRepeat(" ", this.getTabSize()); - } else { - return "\t"; - } - }; - this.setUseSoftTabs = function(val) { - this.setOption("useSoftTabs", val); - }; - this.getUseSoftTabs = function() { - return this.$useSoftTabs && !this.$mode.$indentWithTabs; - }; - this.setTabSize = function(tabSize) { - this.setOption("tabSize", tabSize) - }; - this.getTabSize = function() { - return this.$tabSize; - }; - this.isTabStop = function(position) { - return this.$useSoftTabs && (position.column % this.$tabSize == 0); - }; - - this.$overwrite = false; - this.setOverwrite = function(overwrite) { - this.setOption("overwrite", overwrite) - }; - this.getOverwrite = function() { - return this.$overwrite; - }; - this.toggleOverwrite = function() { - this.setOverwrite(!this.$overwrite); - }; - this.addGutterDecoration = function(row, className) { - if (!this.$decorations[row]) - this.$decorations[row] = ""; - this.$decorations[row] += " " + className; - this._emit("changeBreakpoint", {}); - }; - this.removeGutterDecoration = function(row, className) { - this.$decorations[row] = (this.$decorations[row] || "").replace(" " + className, ""); - this._emit("changeBreakpoint", {}); - }; - this.getBreakpoints = function() { - return this.$breakpoints; - }; - this.setBreakpoints = function(rows) { - this.$breakpoints = []; - for (var i=0; i 0) - inToken = !!line.charAt(column - 1).match(this.tokenRe); - - if (!inToken) - inToken = !!line.charAt(column).match(this.tokenRe); - - if (inToken) - var re = this.tokenRe; - else if (/^\s+$/.test(line.slice(column-1, column+1))) - var re = /\s/; - else - var re = this.nonTokenRe; - - var start = column; - if (start > 0) { - do { - start--; - } - while (start >= 0 && line.charAt(start).match(re)); - start++; - } - - var end = column; - while (end < line.length && line.charAt(end).match(re)) { - end++; - } - - return new Range(row, start, row, end); - }; - this.getAWordRange = function(row, column) { - var wordRange = this.getWordRange(row, column); - var line = this.getLine(wordRange.end.row); - - while (line.charAt(wordRange.end.column).match(/[ \t]/)) { - wordRange.end.column += 1; - } - return wordRange; - }; - this.setNewLineMode = function(newLineMode) { - this.doc.setNewLineMode(newLineMode); - }; - this.getNewLineMode = function() { - return this.doc.getNewLineMode(); - }; - this.setUseWorker = function(useWorker) { this.setOption("useWorker", useWorker); }; - this.getUseWorker = function() { return this.$useWorker; }; - this.onReloadTokenizer = function(e) { - var rows = e.data; - this.bgTokenizer.start(rows.first); - this._emit("tokenizerUpdate", e); - }; - - this.$modes = {}; - this.$mode = null; - this.$modeId = null; - this.setMode = function(mode, cb) { - if (mode && typeof mode === "object") { - if (mode.getTokenizer) - return this.$onChangeMode(mode); - var options = mode; - var path = options.path; - } else { - path = mode || "ace/mode/text"; - } - if (!this.$modes["ace/mode/text"]) - this.$modes["ace/mode/text"] = new TextMode(); - - if (this.$modes[path] && !options) { - this.$onChangeMode(this.$modes[path]); - cb && cb(); - return; - } - this.$modeId = path; - config.loadModule(["mode", path], function(m) { - if (this.$modeId !== path) - return cb && cb(); - if (this.$modes[path] && !options) - return this.$onChangeMode(this.$modes[path]); - if (m && m.Mode) { - m = new m.Mode(options); - if (!options) { - this.$modes[path] = m; - m.$id = path; - } - this.$onChangeMode(m); - cb && cb(); - } - }.bind(this)); - if (!this.$mode) - this.$onChangeMode(this.$modes["ace/mode/text"], true); - }; - - this.$onChangeMode = function(mode, $isPlaceholder) { - if (!$isPlaceholder) - this.$modeId = mode.$id; - if (this.$mode === mode) - return; - - this.$mode = mode; - - this.$stopWorker(); - - if (this.$useWorker) - this.$startWorker(); - - var tokenizer = mode.getTokenizer(); - - if(tokenizer.addEventListener !== undefined) { - var onReloadTokenizer = this.onReloadTokenizer.bind(this); - tokenizer.addEventListener("update", onReloadTokenizer); - } - - if (!this.bgTokenizer) { - this.bgTokenizer = new BackgroundTokenizer(tokenizer); - var _self = this; - this.bgTokenizer.addEventListener("update", function(e) { - _self._emit("tokenizerUpdate", e); - }); - } else { - this.bgTokenizer.setTokenizer(tokenizer); - } - - this.bgTokenizer.setDocument(this.getDocument()); - - this.tokenRe = mode.tokenRe; - this.nonTokenRe = mode.nonTokenRe; - - - if (!$isPlaceholder) { - this.$options.wrapMethod.set.call(this, this.$wrapMethod); - this.$setFolding(mode.foldingRules); - this.bgTokenizer.start(0); - this._emit("changeMode"); - } - }; - - - this.$stopWorker = function() { - if (this.$worker) - this.$worker.terminate(); - - this.$worker = null; - }; - - this.$startWorker = function() { - if (typeof Worker !== "undefined" && !require.noWorker) { - try { - this.$worker = this.$mode.createWorker(this); - } catch (e) { - console.log("Could not load worker"); - console.log(e); - this.$worker = null; - } - } - else - this.$worker = null; - }; - this.getMode = function() { - return this.$mode; - }; - - this.$scrollTop = 0; - this.setScrollTop = function(scrollTop) { - if (this.$scrollTop === scrollTop || isNaN(scrollTop)) - return; - - this.$scrollTop = scrollTop; - this._signal("changeScrollTop", scrollTop); - }; - this.getScrollTop = function() { - return this.$scrollTop; - }; - - this.$scrollLeft = 0; - this.setScrollLeft = function(scrollLeft) { - if (this.$scrollLeft === scrollLeft || isNaN(scrollLeft)) - return; - - this.$scrollLeft = scrollLeft; - this._signal("changeScrollLeft", scrollLeft); - }; - this.getScrollLeft = function() { - return this.$scrollLeft; - }; - this.getScreenWidth = function() { - this.$computeWidth(); - if (this.lineWidgets) - return Math.max(this.getLineWidgetMaxWidth(), this.screenWidth); - return this.screenWidth; - }; - - this.getLineWidgetMaxWidth = function() { - if (this.lineWidgetsWidth != null) return this.lineWidgetsWidth - var width = 0; - this.lineWidgets.forEach(function(w) { - if (w && w.screenWidth > width) - width = w.screenWidth; - }); - return this.lineWidgetWidth = width; - } - - this.$computeWidth = function(force) { - if (this.$modified || force) { - this.$modified = false; - - if (this.$useWrapMode) - return this.screenWidth = this.$wrapLimit; - - var lines = this.doc.getAllLines(); - var cache = this.$rowLengthCache; - var longestScreenLine = 0; - var foldIndex = 0; - var foldLine = this.$foldData[foldIndex]; - var foldStart = foldLine ? foldLine.start.row : Infinity; - var len = lines.length; - - for (var i = 0; i < len; i++) { - if (i > foldStart) { - i = foldLine.end.row + 1; - if (i >= len) - break; - foldLine = this.$foldData[foldIndex++]; - foldStart = foldLine ? foldLine.start.row : Infinity; - } - - if (cache[i] == null) - cache[i] = this.$getStringScreenWidth(lines[i])[0]; - - if (cache[i] > longestScreenLine) - longestScreenLine = cache[i]; - } - this.screenWidth = longestScreenLine; - } - }; - this.getLine = function(row) { - return this.doc.getLine(row); - }; - this.getLines = function(firstRow, lastRow) { - return this.doc.getLines(firstRow, lastRow); - }; - this.getLength = function() { - return this.doc.getLength(); - }; - this.getTextRange = function(range) { - return this.doc.getTextRange(range || this.selection.getRange()); - }; - this.insert = function(position, text) { - return this.doc.insert(position, text); - }; - this.remove = function(range) { - return this.doc.remove(range); - }; - this.undoChanges = function(deltas, dontSelect) { - if (!deltas.length) - return; - - this.$fromUndo = true; - var lastUndoRange = null; - for (var i = deltas.length - 1; i != -1; i--) { - var delta = deltas[i]; - if (delta.group == "doc") { - this.doc.revertDeltas(delta.deltas); - lastUndoRange = - this.$getUndoSelection(delta.deltas, true, lastUndoRange); - } else { - delta.deltas.forEach(function(foldDelta) { - this.addFolds(foldDelta.folds); - }, this); - } - } - this.$fromUndo = false; - lastUndoRange && - this.$undoSelect && - !dontSelect && - this.selection.setSelectionRange(lastUndoRange); - return lastUndoRange; - }; - this.redoChanges = function(deltas, dontSelect) { - if (!deltas.length) - return; - - this.$fromUndo = true; - var lastUndoRange = null; - for (var i = 0; i < deltas.length; i++) { - var delta = deltas[i]; - if (delta.group == "doc") { - this.doc.applyDeltas(delta.deltas); - lastUndoRange = - this.$getUndoSelection(delta.deltas, false, lastUndoRange); - } - } - this.$fromUndo = false; - lastUndoRange && - this.$undoSelect && - !dontSelect && - this.selection.setSelectionRange(lastUndoRange); - return lastUndoRange; - }; - this.setUndoSelect = function(enable) { - this.$undoSelect = enable; - }; - - this.$getUndoSelection = function(deltas, isUndo, lastUndoRange) { - function isInsert(delta) { - var insert = - delta.action === "insertText" || delta.action === "insertLines"; - return isUndo ? !insert : insert; - } - - var delta = deltas[0]; - var range, point; - var lastDeltaIsInsert = false; - if (isInsert(delta)) { - range = Range.fromPoints(delta.range.start, delta.range.end); - lastDeltaIsInsert = true; - } else { - range = Range.fromPoints(delta.range.start, delta.range.start); - lastDeltaIsInsert = false; - } - - for (var i = 1; i < deltas.length; i++) { - delta = deltas[i]; - if (isInsert(delta)) { - point = delta.range.start; - if (range.compare(point.row, point.column) == -1) { - range.setStart(delta.range.start); - } - point = delta.range.end; - if (range.compare(point.row, point.column) == 1) { - range.setEnd(delta.range.end); - } - lastDeltaIsInsert = true; - } else { - point = delta.range.start; - if (range.compare(point.row, point.column) == -1) { - range = - Range.fromPoints(delta.range.start, delta.range.start); - } - lastDeltaIsInsert = false; - } - } - if (lastUndoRange != null) { - if (Range.comparePoints(lastUndoRange.start, range.start) == 0) { - lastUndoRange.start.column += range.end.column - range.start.column; - lastUndoRange.end.column += range.end.column - range.start.column; - } - - var cmp = lastUndoRange.compareRange(range); - if (cmp == 1) { - range.setStart(lastUndoRange.start); - } else if (cmp == -1) { - range.setEnd(lastUndoRange.end); - } - } - - return range; - }; - this.replace = function(range, text) { - return this.doc.replace(range, text); - }; - this.moveText = function(fromRange, toPosition, copy) { - var text = this.getTextRange(fromRange); - var folds = this.getFoldsInRange(fromRange); - - var toRange = Range.fromPoints(toPosition, toPosition); - if (!copy) { - this.remove(fromRange); - var rowDiff = fromRange.start.row - fromRange.end.row; - var collDiff = rowDiff ? -fromRange.end.column : fromRange.start.column - fromRange.end.column; - if (collDiff) { - if (toRange.start.row == fromRange.end.row && toRange.start.column > fromRange.end.column) - toRange.start.column += collDiff; - if (toRange.end.row == fromRange.end.row && toRange.end.column > fromRange.end.column) - toRange.end.column += collDiff; - } - if (rowDiff && toRange.start.row >= fromRange.end.row) { - toRange.start.row += rowDiff; - toRange.end.row += rowDiff; - } - } - - toRange.end = this.insert(toRange.start, text); - if (folds.length) { - var oldStart = fromRange.start; - var newStart = toRange.start; - var rowDiff = newStart.row - oldStart.row; - var collDiff = newStart.column - oldStart.column; - this.addFolds(folds.map(function(x) { - x = x.clone(); - if (x.start.row == oldStart.row) - x.start.column += collDiff; - if (x.end.row == oldStart.row) - x.end.column += collDiff; - x.start.row += rowDiff; - x.end.row += rowDiff; - return x; - })); - } - - return toRange; - }; - this.indentRows = function(startRow, endRow, indentString) { - indentString = indentString.replace(/\t/g, this.getTabString()); - for (var row=startRow; row<=endRow; row++) - this.insert({row: row, column:0}, indentString); - }; - this.outdentRows = function (range) { - var rowRange = range.collapseRows(); - var deleteRange = new Range(0, 0, 0, 0); - var size = this.getTabSize(); - - for (var i = rowRange.start.row; i <= rowRange.end.row; ++i) { - var line = this.getLine(i); - - deleteRange.start.row = i; - deleteRange.end.row = i; - for (var j = 0; j < size; ++j) - if (line.charAt(j) != ' ') - break; - if (j < size && line.charAt(j) == '\t') { - deleteRange.start.column = j; - deleteRange.end.column = j + 1; - } else { - deleteRange.start.column = 0; - deleteRange.end.column = j; - } - this.remove(deleteRange); - } - }; - - this.$moveLines = function(firstRow, lastRow, dir) { - firstRow = this.getRowFoldStart(firstRow); - lastRow = this.getRowFoldEnd(lastRow); - if (dir < 0) { - var row = this.getRowFoldStart(firstRow + dir); - if (row < 0) return 0; - var diff = row-firstRow; - } else if (dir > 0) { - var row = this.getRowFoldEnd(lastRow + dir); - if (row > this.doc.getLength()-1) return 0; - var diff = row-lastRow; - } else { - firstRow = this.$clipRowToDocument(firstRow); - lastRow = this.$clipRowToDocument(lastRow); - var diff = lastRow - firstRow + 1; - } - - var range = new Range(firstRow, 0, lastRow, Number.MAX_VALUE); - var folds = this.getFoldsInRange(range).map(function(x){ - x = x.clone(); - x.start.row += diff; - x.end.row += diff; - return x; - }); - - var lines = dir == 0 - ? this.doc.getLines(firstRow, lastRow) - : this.doc.removeLines(firstRow, lastRow); - this.doc.insertLines(firstRow+diff, lines); - folds.length && this.addFolds(folds); - return diff; - }; - this.moveLinesUp = function(firstRow, lastRow) { - return this.$moveLines(firstRow, lastRow, -1); - }; - this.moveLinesDown = function(firstRow, lastRow) { - return this.$moveLines(firstRow, lastRow, 1); - }; - this.duplicateLines = function(firstRow, lastRow) { - return this.$moveLines(firstRow, lastRow, 0); - }; - - - this.$clipRowToDocument = function(row) { - return Math.max(0, Math.min(row, this.doc.getLength()-1)); - }; - - this.$clipColumnToRow = function(row, column) { - if (column < 0) - return 0; - return Math.min(this.doc.getLine(row).length, column); - }; - - - this.$clipPositionToDocument = function(row, column) { - column = Math.max(0, column); - - if (row < 0) { - row = 0; - column = 0; - } else { - var len = this.doc.getLength(); - if (row >= len) { - row = len - 1; - column = this.doc.getLine(len-1).length; - } else { - column = Math.min(this.doc.getLine(row).length, column); - } - } - - return { - row: row, - column: column - }; - }; - - this.$clipRangeToDocument = function(range) { - if (range.start.row < 0) { - range.start.row = 0; - range.start.column = 0; - } else { - range.start.column = this.$clipColumnToRow( - range.start.row, - range.start.column - ); - } - - var len = this.doc.getLength() - 1; - if (range.end.row > len) { - range.end.row = len; - range.end.column = this.doc.getLine(len).length; - } else { - range.end.column = this.$clipColumnToRow( - range.end.row, - range.end.column - ); - } - return range; - }; - this.$wrapLimit = 80; - this.$useWrapMode = false; - this.$wrapLimitRange = { - min : null, - max : null - }; - this.setUseWrapMode = function(useWrapMode) { - if (useWrapMode != this.$useWrapMode) { - this.$useWrapMode = useWrapMode; - this.$modified = true; - this.$resetRowCache(0); - if (useWrapMode) { - var len = this.getLength(); - this.$wrapData = []; - for (var i = 0; i < len; i++) { - this.$wrapData.push([]); - } - this.$updateWrapData(0, len - 1); - } - - this._emit("changeWrapMode"); - } - }; - this.getUseWrapMode = function() { - return this.$useWrapMode; - }; - this.setWrapLimitRange = function(min, max) { - if (this.$wrapLimitRange.min !== min || this.$wrapLimitRange.max !== max) { - this.$wrapLimitRange = { - min: min, - max: max - }; - this.$modified = true; - this._emit("changeWrapMode"); - } - }; - this.adjustWrapLimit = function(desiredLimit, $printMargin) { - var limits = this.$wrapLimitRange - if (limits.max < 0) - limits = {min: $printMargin, max: $printMargin}; - var wrapLimit = this.$constrainWrapLimit(desiredLimit, limits.min, limits.max); - if (wrapLimit != this.$wrapLimit && wrapLimit > 1) { - this.$wrapLimit = wrapLimit; - this.$modified = true; - if (this.$useWrapMode) { - this.$updateWrapData(0, this.getLength() - 1); - this.$resetRowCache(0); - this._emit("changeWrapLimit"); - } - return true; - } - return false; - }; - - this.$constrainWrapLimit = function(wrapLimit, min, max) { - if (min) - wrapLimit = Math.max(min, wrapLimit); - - if (max) - wrapLimit = Math.min(max, wrapLimit); - - return wrapLimit; - }; - this.getWrapLimit = function() { - return this.$wrapLimit; - }; - this.setWrapLimit = function (limit) { - this.setWrapLimitRange(limit, limit); - }; - this.getWrapLimitRange = function() { - return { - min : this.$wrapLimitRange.min, - max : this.$wrapLimitRange.max - }; - }; - - this.$updateInternalDataOnChange = function(e) { - var useWrapMode = this.$useWrapMode; - var len; - var action = e.data.action; - var firstRow = e.data.range.start.row; - var lastRow = e.data.range.end.row; - var start = e.data.range.start; - var end = e.data.range.end; - var removedFolds = null; - - if (action.indexOf("Lines") != -1) { - if (action == "insertLines") { - lastRow = firstRow + (e.data.lines.length); - } else { - lastRow = firstRow; - } - len = e.data.lines ? e.data.lines.length : lastRow - firstRow; - } else { - len = lastRow - firstRow; - } - - this.$updating = true; - if (len != 0) { - if (action.indexOf("remove") != -1) { - this[useWrapMode ? "$wrapData" : "$rowLengthCache"].splice(firstRow, len); - - var foldLines = this.$foldData; - removedFolds = this.getFoldsInRange(e.data.range); - this.removeFolds(removedFolds); - - var foldLine = this.getFoldLine(end.row); - var idx = 0; - if (foldLine) { - foldLine.addRemoveChars(end.row, end.column, start.column - end.column); - foldLine.shiftRow(-len); - - var foldLineBefore = this.getFoldLine(firstRow); - if (foldLineBefore && foldLineBefore !== foldLine) { - foldLineBefore.merge(foldLine); - foldLine = foldLineBefore; - } - idx = foldLines.indexOf(foldLine) + 1; - } - - for (idx; idx < foldLines.length; idx++) { - var foldLine = foldLines[idx]; - if (foldLine.start.row >= end.row) { - foldLine.shiftRow(-len); - } - } - - lastRow = firstRow; - } else { - var args; - if (useWrapMode) { - args = [firstRow, 0]; - for (var i = 0; i < len; i++) args.push([]); - this.$wrapData.splice.apply(this.$wrapData, args); - } else { - args = Array(len); - args.unshift(firstRow, 0); - this.$rowLengthCache.splice.apply(this.$rowLengthCache, args); - } - var foldLines = this.$foldData; - var foldLine = this.getFoldLine(firstRow); - var idx = 0; - if (foldLine) { - var cmp = foldLine.range.compareInside(start.row, start.column) - if (cmp == 0) { - foldLine = foldLine.split(start.row, start.column); - foldLine.shiftRow(len); - foldLine.addRemoveChars( - lastRow, 0, end.column - start.column); - } else - if (cmp == -1) { - foldLine.addRemoveChars(firstRow, 0, end.column - start.column); - foldLine.shiftRow(len); - } - idx = foldLines.indexOf(foldLine) + 1; - } - - for (idx; idx < foldLines.length; idx++) { - var foldLine = foldLines[idx]; - if (foldLine.start.row >= firstRow) { - foldLine.shiftRow(len); - } - } - } - } else { - len = Math.abs(e.data.range.start.column - e.data.range.end.column); - if (action.indexOf("remove") != -1) { - removedFolds = this.getFoldsInRange(e.data.range); - this.removeFolds(removedFolds); - - len = -len; - } - var foldLine = this.getFoldLine(firstRow); - if (foldLine) { - foldLine.addRemoveChars(firstRow, start.column, len); - } - } - - if (useWrapMode && this.$wrapData.length != this.doc.getLength()) { - console.error("doc.getLength() and $wrapData.length have to be the same!"); - } - this.$updating = false; - - if (useWrapMode) - this.$updateWrapData(firstRow, lastRow); - else - this.$updateRowLengthCache(firstRow, lastRow); - - return removedFolds; - }; - - this.$updateRowLengthCache = function(firstRow, lastRow, b) { - this.$rowLengthCache[firstRow] = null; - this.$rowLengthCache[lastRow] = null; - }; - - this.$updateWrapData = function(firstRow, lastRow) { - var lines = this.doc.getAllLines(); - var tabSize = this.getTabSize(); - var wrapData = this.$wrapData; - var wrapLimit = this.$wrapLimit; - var tokens; - var foldLine; - - var row = firstRow; - lastRow = Math.min(lastRow, lines.length - 1); - while (row <= lastRow) { - foldLine = this.getFoldLine(row, foldLine); - if (!foldLine) { - tokens = this.$getDisplayTokens(lines[row]); - wrapData[row] = this.$computeWrapSplits(tokens, wrapLimit, tabSize); - row ++; - } else { - tokens = []; - foldLine.walk(function(placeholder, row, column, lastColumn) { - var walkTokens; - if (placeholder != null) { - walkTokens = this.$getDisplayTokens( - placeholder, tokens.length); - walkTokens[0] = PLACEHOLDER_START; - for (var i = 1; i < walkTokens.length; i++) { - walkTokens[i] = PLACEHOLDER_BODY; - } - } else { - walkTokens = this.$getDisplayTokens( - lines[row].substring(lastColumn, column), - tokens.length); - } - tokens = tokens.concat(walkTokens); - }.bind(this), - foldLine.end.row, - lines[foldLine.end.row].length + 1 - ); - - wrapData[foldLine.start.row] - = this.$computeWrapSplits(tokens, wrapLimit, tabSize); - row = foldLine.end.row + 1; - } - } - }; - var CHAR = 1, - CHAR_EXT = 2, - PLACEHOLDER_START = 3, - PLACEHOLDER_BODY = 4, - PUNCTUATION = 9, - SPACE = 10, - TAB = 11, - TAB_SPACE = 12; - - - this.$computeWrapSplits = function(tokens, wrapLimit) { - if (tokens.length == 0) { - return []; - } - - var splits = []; - var displayLength = tokens.length; - var lastSplit = 0, lastDocSplit = 0; - - var isCode = this.$wrapAsCode; - - function addSplit(screenPos) { - var displayed = tokens.slice(lastSplit, screenPos); - var len = displayed.length; - displayed.join(""). - replace(/12/g, function() { - len -= 1; - }). - replace(/2/g, function() { - len -= 1; - }); - - lastDocSplit += len; - splits.push(lastDocSplit); - lastSplit = screenPos; - } - - while (displayLength - lastSplit > wrapLimit) { - var split = lastSplit + wrapLimit; - if (tokens[split - 1] >= SPACE && tokens[split] >= SPACE) { - addSplit(split); - continue; - } - if (tokens[split] == PLACEHOLDER_START || tokens[split] == PLACEHOLDER_BODY) { - for (split; split != lastSplit - 1; split--) { - if (tokens[split] == PLACEHOLDER_START) { - break; - } - } - if (split > lastSplit) { - addSplit(split); - continue; - } - split = lastSplit + wrapLimit; - for (split; split < tokens.length; split++) { - if (tokens[split] != PLACEHOLDER_BODY) { - break; - } - } - if (split == tokens.length) { - break; // Breaks the while-loop. - } - addSplit(split); - continue; - } - var minSplit = Math.max(split - (isCode ? 10 : wrapLimit-(wrapLimit>>2)), lastSplit - 1); - while (split > minSplit && tokens[split] < PLACEHOLDER_START) { - split --; - } - if (isCode) { - while (split > minSplit && tokens[split] < PLACEHOLDER_START) { - split --; - } - while (split > minSplit && tokens[split] == PUNCTUATION) { - split --; - } - } else { - while (split > minSplit && tokens[split] < SPACE) { - split --; - } - } - if (split > minSplit) { - addSplit(++split); - continue; - } - split = lastSplit + wrapLimit; - addSplit(split); - } - return splits; - }; - this.$getDisplayTokens = function(str, offset) { - var arr = []; - var tabSize; - offset = offset || 0; - - for (var i = 0; i < str.length; i++) { - var c = str.charCodeAt(i); - if (c == 9) { - tabSize = this.getScreenTabSize(arr.length + offset); - arr.push(TAB); - for (var n = 1; n < tabSize; n++) { - arr.push(TAB_SPACE); - } - } - else if (c == 32) { - arr.push(SPACE); - } else if((c > 39 && c < 48) || (c > 57 && c < 64)) { - arr.push(PUNCTUATION); - } - else if (c >= 0x1100 && isFullWidth(c)) { - arr.push(CHAR, CHAR_EXT); - } else { - arr.push(CHAR); - } - } - return arr; - }; - this.$getStringScreenWidth = function(str, maxScreenColumn, screenColumn) { - if (maxScreenColumn == 0) - return [0, 0]; - if (maxScreenColumn == null) - maxScreenColumn = Infinity; - screenColumn = screenColumn || 0; - - var c, column; - for (column = 0; column < str.length; column++) { - c = str.charCodeAt(column); - if (c == 9) { - screenColumn += this.getScreenTabSize(screenColumn); - } - else if (c >= 0x1100 && isFullWidth(c)) { - screenColumn += 2; - } else { - screenColumn += 1; - } - if (screenColumn > maxScreenColumn) { - break; - } - } - - return [screenColumn, column]; - }; - - this.lineWidgets = null; - this.getRowLength = function(row) { - if (this.lineWidgets) - var h = this.lineWidgets[row] && this.lineWidgets[row].rowCount || 0; - else - h = 0 - if (!this.$useWrapMode || !this.$wrapData[row]) { - return 1 + h; - } else { - return this.$wrapData[row].length + 1 + h; - } - }; - this.getRowLineCount = function(row) { - if (!this.$useWrapMode || !this.$wrapData[row]) { - return 1; - } else { - return this.$wrapData[row].length + 1; - } - }; - this.getScreenLastRowColumn = function(screenRow) { - var pos = this.screenToDocumentPosition(screenRow, Number.MAX_VALUE); - return this.documentToScreenColumn(pos.row, pos.column); - }; - this.getDocumentLastRowColumn = function(docRow, docColumn) { - var screenRow = this.documentToScreenRow(docRow, docColumn); - return this.getScreenLastRowColumn(screenRow); - }; - this.getDocumentLastRowColumnPosition = function(docRow, docColumn) { - var screenRow = this.documentToScreenRow(docRow, docColumn); - return this.screenToDocumentPosition(screenRow, Number.MAX_VALUE / 10); - }; - this.getRowSplitData = function(row) { - if (!this.$useWrapMode) { - return undefined; - } else { - return this.$wrapData[row]; - } - }; - this.getScreenTabSize = function(screenColumn) { - return this.$tabSize - screenColumn % this.$tabSize; - }; - - - this.screenToDocumentRow = function(screenRow, screenColumn) { - return this.screenToDocumentPosition(screenRow, screenColumn).row; - }; - - - this.screenToDocumentColumn = function(screenRow, screenColumn) { - return this.screenToDocumentPosition(screenRow, screenColumn).column; - }; - this.screenToDocumentPosition = function(screenRow, screenColumn) { - if (screenRow < 0) - return {row: 0, column: 0}; - - var line; - var docRow = 0; - var docColumn = 0; - var column; - var row = 0; - var rowLength = 0; - - var rowCache = this.$screenRowCache; - var i = this.$getRowCacheIndex(rowCache, screenRow); - var l = rowCache.length; - if (l && i >= 0) { - var row = rowCache[i]; - var docRow = this.$docRowCache[i]; - var doCache = screenRow > rowCache[l - 1]; - } else { - var doCache = !l; - } - - var maxRow = this.getLength() - 1; - var foldLine = this.getNextFoldLine(docRow); - var foldStart = foldLine ? foldLine.start.row : Infinity; - - while (row <= screenRow) { - rowLength = this.getRowLength(docRow); - if (row + rowLength > screenRow || docRow >= maxRow) { - break; - } else { - row += rowLength; - docRow++; - if (docRow > foldStart) { - docRow = foldLine.end.row+1; - foldLine = this.getNextFoldLine(docRow, foldLine); - foldStart = foldLine ? foldLine.start.row : Infinity; - } - } - - if (doCache) { - this.$docRowCache.push(docRow); - this.$screenRowCache.push(row); - } - } - - if (foldLine && foldLine.start.row <= docRow) { - line = this.getFoldDisplayLine(foldLine); - docRow = foldLine.start.row; - } else if (row + rowLength <= screenRow || docRow > maxRow) { - return { - row: maxRow, - column: this.getLine(maxRow).length - } - } else { - line = this.getLine(docRow); - foldLine = null; - } - - if (this.$useWrapMode) { - var splits = this.$wrapData[docRow]; - if (splits) { - var splitIndex = Math.floor(screenRow - row); - column = splits[splitIndex]; - if(splitIndex > 0 && splits.length) { - docColumn = splits[splitIndex - 1] || splits[splits.length - 1]; - line = line.substring(docColumn); - } - } - } - - docColumn += this.$getStringScreenWidth(line, screenColumn)[1]; - if (this.$useWrapMode && docColumn >= column) - docColumn = column - 1; - - if (foldLine) - return foldLine.idxToPosition(docColumn); - - return {row: docRow, column: docColumn}; - }; - this.documentToScreenPosition = function(docRow, docColumn) { - if (typeof docColumn === "undefined") - var pos = this.$clipPositionToDocument(docRow.row, docRow.column); - else - pos = this.$clipPositionToDocument(docRow, docColumn); - - docRow = pos.row; - docColumn = pos.column; - - var screenRow = 0; - var foldStartRow = null; - var fold = null; - fold = this.getFoldAt(docRow, docColumn, 1); - if (fold) { - docRow = fold.start.row; - docColumn = fold.start.column; - } - - var rowEnd, row = 0; - - - var rowCache = this.$docRowCache; - var i = this.$getRowCacheIndex(rowCache, docRow); - var l = rowCache.length; - if (l && i >= 0) { - var row = rowCache[i]; - var screenRow = this.$screenRowCache[i]; - var doCache = docRow > rowCache[l - 1]; - } else { - var doCache = !l; - } - - var foldLine = this.getNextFoldLine(row); - var foldStart = foldLine ?foldLine.start.row :Infinity; - - while (row < docRow) { - if (row >= foldStart) { - rowEnd = foldLine.end.row + 1; - if (rowEnd > docRow) - break; - foldLine = this.getNextFoldLine(rowEnd, foldLine); - foldStart = foldLine ?foldLine.start.row :Infinity; - } - else { - rowEnd = row + 1; - } - - screenRow += this.getRowLength(row); - row = rowEnd; - - if (doCache) { - this.$docRowCache.push(row); - this.$screenRowCache.push(screenRow); - } - } - var textLine = ""; - if (foldLine && row >= foldStart) { - textLine = this.getFoldDisplayLine(foldLine, docRow, docColumn); - foldStartRow = foldLine.start.row; - } else { - textLine = this.getLine(docRow).substring(0, docColumn); - foldStartRow = docRow; - } - if (this.$useWrapMode) { - var wrapRow = this.$wrapData[foldStartRow]; - var screenRowOffset = 0; - while (textLine.length >= wrapRow[screenRowOffset]) { - screenRow ++; - screenRowOffset++; - } - textLine = textLine.substring( - wrapRow[screenRowOffset - 1] || 0, textLine.length - ); - } - - return { - row: screenRow, - column: this.$getStringScreenWidth(textLine)[0] - }; - }; - this.documentToScreenColumn = function(row, docColumn) { - return this.documentToScreenPosition(row, docColumn).column; - }; - this.documentToScreenRow = function(docRow, docColumn) { - return this.documentToScreenPosition(docRow, docColumn).row; - }; - this.getScreenLength = function() { - var screenRows = 0; - var fold = null; - if (!this.$useWrapMode) { - screenRows = this.getLength(); - var foldData = this.$foldData; - for (var i = 0; i < foldData.length; i++) { - fold = foldData[i]; - screenRows -= fold.end.row - fold.start.row; - } - } else { - var lastRow = this.$wrapData.length; - var row = 0, i = 0; - var fold = this.$foldData[i++]; - var foldStart = fold ? fold.start.row :Infinity; - - while (row < lastRow) { - screenRows += this.$wrapData[row].length + 1; - row ++; - if (row > foldStart) { - row = fold.end.row+1; - fold = this.$foldData[i++]; - foldStart = fold ?fold.start.row :Infinity; - } - } - } - if (this.lineWidgets) - screenRows += this.$getWidgetScreenLength(); - - return screenRows; - }; - function isFullWidth(c) { - if (c < 0x1100) - return false; - return c >= 0x1100 && c <= 0x115F || - c >= 0x11A3 && c <= 0x11A7 || - c >= 0x11FA && c <= 0x11FF || - c >= 0x2329 && c <= 0x232A || - c >= 0x2E80 && c <= 0x2E99 || - c >= 0x2E9B && c <= 0x2EF3 || - c >= 0x2F00 && c <= 0x2FD5 || - c >= 0x2FF0 && c <= 0x2FFB || - c >= 0x3000 && c <= 0x303E || - c >= 0x3041 && c <= 0x3096 || - c >= 0x3099 && c <= 0x30FF || - c >= 0x3105 && c <= 0x312D || - c >= 0x3131 && c <= 0x318E || - c >= 0x3190 && c <= 0x31BA || - c >= 0x31C0 && c <= 0x31E3 || - c >= 0x31F0 && c <= 0x321E || - c >= 0x3220 && c <= 0x3247 || - c >= 0x3250 && c <= 0x32FE || - c >= 0x3300 && c <= 0x4DBF || - c >= 0x4E00 && c <= 0xA48C || - c >= 0xA490 && c <= 0xA4C6 || - c >= 0xA960 && c <= 0xA97C || - c >= 0xAC00 && c <= 0xD7A3 || - c >= 0xD7B0 && c <= 0xD7C6 || - c >= 0xD7CB && c <= 0xD7FB || - c >= 0xF900 && c <= 0xFAFF || - c >= 0xFE10 && c <= 0xFE19 || - c >= 0xFE30 && c <= 0xFE52 || - c >= 0xFE54 && c <= 0xFE66 || - c >= 0xFE68 && c <= 0xFE6B || - c >= 0xFF01 && c <= 0xFF60 || - c >= 0xFFE0 && c <= 0xFFE6; - }; - -}).call(EditSession.prototype); - -require("./edit_session/folding").Folding.call(EditSession.prototype); -require("./edit_session/bracket_match").BracketMatch.call(EditSession.prototype); - - -config.defineOptions(EditSession.prototype, "session", { - wrap: { - set: function(value) { - if (!value || value == "off") - value = false; - else if (value == "free") - value = true; - else if (value == "printMargin") - value = -1; - else if (typeof value == "string") - value = parseInt(value, 10) || false; - - if (this.$wrap == value) - return; - if (!value) { - this.setUseWrapMode(false); - } else { - var col = typeof value == "number" ? value : null; - this.setWrapLimitRange(col, col); - this.setUseWrapMode(true); - } - this.$wrap = value; - }, - get: function() { - if (this.getUseWrapMode()) { - if (this.$wrap == -1) - return "printMargin"; - if (!this.getWrapLimitRange().min) - return "free"; - return this.$wrap; - } - return "off"; - }, - handlesSet: true - }, - wrapMethod: { - set: function(val) { - val = val == "auto" - ? this.$mode.type != "text" - : val != "text"; - if (val != this.$wrapAsCode) { - this.$wrapAsCode = val; - if (this.$useWrapMode) { - this.$modified = true; - this.$resetRowCache(0); - this.$updateWrapData(0, this.getLength() - 1); - } - } - }, - initialValue: "auto" - }, - firstLineNumber: { - set: function() {this._emit("changeBreakpoint");}, - initialValue: 1 - }, - useWorker: { - set: function(useWorker) { - this.$useWorker = useWorker; - - this.$stopWorker(); - if (useWorker) - this.$startWorker(); - }, - initialValue: true - }, - useSoftTabs: {initialValue: true}, - tabSize: { - set: function(tabSize) { - if (isNaN(tabSize) || this.$tabSize === tabSize) return; - - this.$modified = true; - this.$rowLengthCache = []; - this.$tabSize = tabSize; - this._emit("changeTabSize"); - }, - initialValue: 4, - handlesSet: true - }, - overwrite: { - set: function(val) {this._emit("changeOverwrite");}, - initialValue: false - }, - newLineMode: { - set: function(val) {this.doc.setNewLineMode(val)}, - get: function() {return this.doc.getNewLineMode()}, - handlesSet: true - }, - mode: { - set: function(val) { this.setMode(val) }, - get: function() { return this.$modeId } - } -}); - -exports.EditSession = EditSession; -}); - -ace.define('ace/selection', ['require', 'exports', 'module' , 'ace/lib/oop', 'ace/lib/lang', 'ace/lib/event_emitter', 'ace/range'], function(require, exports, module) { - - -var oop = require("./lib/oop"); -var lang = require("./lib/lang"); -var EventEmitter = require("./lib/event_emitter").EventEmitter; -var Range = require("./range").Range; -var Selection = function(session) { - this.session = session; - this.doc = session.getDocument(); - - this.clearSelection(); - this.lead = this.selectionLead = this.doc.createAnchor(0, 0); - this.anchor = this.selectionAnchor = this.doc.createAnchor(0, 0); - - var self = this; - this.lead.on("change", function(e) { - self._emit("changeCursor"); - if (!self.$isEmpty) - self._emit("changeSelection"); - if (!self.$keepDesiredColumnOnChange && e.old.column != e.value.column) - self.$desiredColumn = null; - }); - - this.selectionAnchor.on("change", function() { - if (!self.$isEmpty) - self._emit("changeSelection"); - }); -}; - -(function() { - - oop.implement(this, EventEmitter); - this.isEmpty = function() { - return (this.$isEmpty || ( - this.anchor.row == this.lead.row && - this.anchor.column == this.lead.column - )); - }; - this.isMultiLine = function() { - if (this.isEmpty()) { - return false; - } - - return this.getRange().isMultiLine(); - }; - this.getCursor = function() { - return this.lead.getPosition(); - }; - this.setSelectionAnchor = function(row, column) { - this.anchor.setPosition(row, column); - - if (this.$isEmpty) { - this.$isEmpty = false; - this._emit("changeSelection"); - } - }; - this.getSelectionAnchor = function() { - if (this.$isEmpty) - return this.getSelectionLead() - else - return this.anchor.getPosition(); - }; - this.getSelectionLead = function() { - return this.lead.getPosition(); - }; - this.shiftSelection = function(columns) { - if (this.$isEmpty) { - this.moveCursorTo(this.lead.row, this.lead.column + columns); - return; - }; - - var anchor = this.getSelectionAnchor(); - var lead = this.getSelectionLead(); - - var isBackwards = this.isBackwards(); - - if (!isBackwards || anchor.column !== 0) - this.setSelectionAnchor(anchor.row, anchor.column + columns); - - if (isBackwards || lead.column !== 0) { - this.$moveSelection(function() { - this.moveCursorTo(lead.row, lead.column + columns); - }); - } - }; - this.isBackwards = function() { - var anchor = this.anchor; - var lead = this.lead; - return (anchor.row > lead.row || (anchor.row == lead.row && anchor.column > lead.column)); - }; - this.getRange = function() { - var anchor = this.anchor; - var lead = this.lead; - - if (this.isEmpty()) - return Range.fromPoints(lead, lead); - - if (this.isBackwards()) { - return Range.fromPoints(lead, anchor); - } - else { - return Range.fromPoints(anchor, lead); - } - }; - this.clearSelection = function() { - if (!this.$isEmpty) { - this.$isEmpty = true; - this._emit("changeSelection"); - } - }; - this.selectAll = function() { - var lastRow = this.doc.getLength() - 1; - this.setSelectionAnchor(0, 0); - this.moveCursorTo(lastRow, this.doc.getLine(lastRow).length); - }; - this.setRange = - this.setSelectionRange = function(range, reverse) { - if (reverse) { - this.setSelectionAnchor(range.end.row, range.end.column); - this.selectTo(range.start.row, range.start.column); - } else { - this.setSelectionAnchor(range.start.row, range.start.column); - this.selectTo(range.end.row, range.end.column); - } - if (this.getRange().isEmpty()) - this.$isEmpty = true; - this.$desiredColumn = null; - }; - - this.$moveSelection = function(mover) { - var lead = this.lead; - if (this.$isEmpty) - this.setSelectionAnchor(lead.row, lead.column); - - mover.call(this); - }; - this.selectTo = function(row, column) { - this.$moveSelection(function() { - this.moveCursorTo(row, column); - }); - }; - this.selectToPosition = function(pos) { - this.$moveSelection(function() { - this.moveCursorToPosition(pos); - }); - }; - this.selectUp = function() { - this.$moveSelection(this.moveCursorUp); - }; - this.selectDown = function() { - this.$moveSelection(this.moveCursorDown); - }; - this.selectRight = function() { - this.$moveSelection(this.moveCursorRight); - }; - this.selectLeft = function() { - this.$moveSelection(this.moveCursorLeft); - }; - this.selectLineStart = function() { - this.$moveSelection(this.moveCursorLineStart); - }; - this.selectLineEnd = function() { - this.$moveSelection(this.moveCursorLineEnd); - }; - this.selectFileEnd = function() { - this.$moveSelection(this.moveCursorFileEnd); - }; - this.selectFileStart = function() { - this.$moveSelection(this.moveCursorFileStart); - }; - this.selectWordRight = function() { - this.$moveSelection(this.moveCursorWordRight); - }; - this.selectWordLeft = function() { - this.$moveSelection(this.moveCursorWordLeft); - }; - this.getWordRange = function(row, column) { - if (typeof column == "undefined") { - var cursor = row || this.lead; - row = cursor.row; - column = cursor.column; - } - return this.session.getWordRange(row, column); - }; - this.selectWord = function() { - this.setSelectionRange(this.getWordRange()); - }; - this.selectAWord = function() { - var cursor = this.getCursor(); - var range = this.session.getAWordRange(cursor.row, cursor.column); - this.setSelectionRange(range); - }; - - this.getLineRange = function(row, excludeLastChar) { - var rowStart = typeof row == "number" ? row : this.lead.row; - var rowEnd; - - var foldLine = this.session.getFoldLine(rowStart); - if (foldLine) { - rowStart = foldLine.start.row; - rowEnd = foldLine.end.row; - } else { - rowEnd = rowStart; - } - if (excludeLastChar === true) - return new Range(rowStart, 0, rowEnd, this.session.getLine(rowEnd).length); - else - return new Range(rowStart, 0, rowEnd + 1, 0); - }; - this.selectLine = function() { - this.setSelectionRange(this.getLineRange()); - }; - this.moveCursorUp = function() { - this.moveCursorBy(-1, 0); - }; - this.moveCursorDown = function() { - this.moveCursorBy(1, 0); - }; - this.moveCursorLeft = function() { - var cursor = this.lead.getPosition(), - fold; - - if (fold = this.session.getFoldAt(cursor.row, cursor.column, -1)) { - this.moveCursorTo(fold.start.row, fold.start.column); - } else if (cursor.column == 0) { - if (cursor.row > 0) { - this.moveCursorTo(cursor.row - 1, this.doc.getLine(cursor.row - 1).length); - } - } - else { - var tabSize = this.session.getTabSize(); - if (this.session.isTabStop(cursor) && this.doc.getLine(cursor.row).slice(cursor.column-tabSize, cursor.column).split(" ").length-1 == tabSize) - this.moveCursorBy(0, -tabSize); - else - this.moveCursorBy(0, -1); - } - }; - this.moveCursorRight = function() { - var cursor = this.lead.getPosition(), - fold; - if (fold = this.session.getFoldAt(cursor.row, cursor.column, 1)) { - this.moveCursorTo(fold.end.row, fold.end.column); - } - else if (this.lead.column == this.doc.getLine(this.lead.row).length) { - if (this.lead.row < this.doc.getLength() - 1) { - this.moveCursorTo(this.lead.row + 1, 0); - } - } - else { - var tabSize = this.session.getTabSize(); - var cursor = this.lead; - if (this.session.isTabStop(cursor) && this.doc.getLine(cursor.row).slice(cursor.column, cursor.column+tabSize).split(" ").length-1 == tabSize) - this.moveCursorBy(0, tabSize); - else - this.moveCursorBy(0, 1); - } - }; - this.moveCursorLineStart = function() { - var row = this.lead.row; - var column = this.lead.column; - var screenRow = this.session.documentToScreenRow(row, column); - var firstColumnPosition = this.session.screenToDocumentPosition(screenRow, 0); - var beforeCursor = this.session.getDisplayLine( - row, null, firstColumnPosition.row, - firstColumnPosition.column - ); - - var leadingSpace = beforeCursor.match(/^\s*/); - if (leadingSpace[0].length != column && !this.session.$useEmacsStyleLineStart) - firstColumnPosition.column += leadingSpace[0].length; - this.moveCursorToPosition(firstColumnPosition); - }; - this.moveCursorLineEnd = function() { - var lead = this.lead; - var lineEnd = this.session.getDocumentLastRowColumnPosition(lead.row, lead.column); - if (this.lead.column == lineEnd.column) { - var line = this.session.getLine(lineEnd.row); - if (lineEnd.column == line.length) { - var textEnd = line.search(/\s+$/); - if (textEnd > 0) - lineEnd.column = textEnd; - } - } - - this.moveCursorTo(lineEnd.row, lineEnd.column); - }; - this.moveCursorFileEnd = function() { - var row = this.doc.getLength() - 1; - var column = this.doc.getLine(row).length; - this.moveCursorTo(row, column); - }; - this.moveCursorFileStart = function() { - this.moveCursorTo(0, 0); - }; - this.moveCursorLongWordRight = function() { - var row = this.lead.row; - var column = this.lead.column; - var line = this.doc.getLine(row); - var rightOfCursor = line.substring(column); - - var match; - this.session.nonTokenRe.lastIndex = 0; - this.session.tokenRe.lastIndex = 0; - var fold = this.session.getFoldAt(row, column, 1); - if (fold) { - this.moveCursorTo(fold.end.row, fold.end.column); - return; - } - if (match = this.session.nonTokenRe.exec(rightOfCursor)) { - column += this.session.nonTokenRe.lastIndex; - this.session.nonTokenRe.lastIndex = 0; - rightOfCursor = line.substring(column); - } - if (column >= line.length) { - this.moveCursorTo(row, line.length); - this.moveCursorRight(); - if (row < this.doc.getLength() - 1) - this.moveCursorWordRight(); - return; - } - if (match = this.session.tokenRe.exec(rightOfCursor)) { - column += this.session.tokenRe.lastIndex; - this.session.tokenRe.lastIndex = 0; - } - - this.moveCursorTo(row, column); - }; - this.moveCursorLongWordLeft = function() { - var row = this.lead.row; - var column = this.lead.column; - var fold; - if (fold = this.session.getFoldAt(row, column, -1)) { - this.moveCursorTo(fold.start.row, fold.start.column); - return; - } - - var str = this.session.getFoldStringAt(row, column, -1); - if (str == null) { - str = this.doc.getLine(row).substring(0, column) - } - - var leftOfCursor = lang.stringReverse(str); - var match; - this.session.nonTokenRe.lastIndex = 0; - this.session.tokenRe.lastIndex = 0; - if (match = this.session.nonTokenRe.exec(leftOfCursor)) { - column -= this.session.nonTokenRe.lastIndex; - leftOfCursor = leftOfCursor.slice(this.session.nonTokenRe.lastIndex); - this.session.nonTokenRe.lastIndex = 0; - } - if (column <= 0) { - this.moveCursorTo(row, 0); - this.moveCursorLeft(); - if (row > 0) - this.moveCursorWordLeft(); - return; - } - if (match = this.session.tokenRe.exec(leftOfCursor)) { - column -= this.session.tokenRe.lastIndex; - this.session.tokenRe.lastIndex = 0; - } - - this.moveCursorTo(row, column); - }; - - this.$shortWordEndIndex = function(rightOfCursor) { - var match, index = 0, ch; - var whitespaceRe = /\s/; - var tokenRe = this.session.tokenRe; - - tokenRe.lastIndex = 0; - if (match = this.session.tokenRe.exec(rightOfCursor)) { - index = this.session.tokenRe.lastIndex; - } else { - while ((ch = rightOfCursor[index]) && whitespaceRe.test(ch)) - index ++; - - if (index < 1) { - tokenRe.lastIndex = 0; - while ((ch = rightOfCursor[index]) && !tokenRe.test(ch)) { - tokenRe.lastIndex = 0; - index ++; - if (whitespaceRe.test(ch)) { - if (index > 2) { - index-- - break; - } else { - while ((ch = rightOfCursor[index]) && whitespaceRe.test(ch)) - index ++; - if (index > 2) - break - } - } - } - } - } - tokenRe.lastIndex = 0; - - return index; - }; - - this.moveCursorShortWordRight = function() { - var row = this.lead.row; - var column = this.lead.column; - var line = this.doc.getLine(row); - var rightOfCursor = line.substring(column); - - var fold = this.session.getFoldAt(row, column, 1); - if (fold) - return this.moveCursorTo(fold.end.row, fold.end.column); - - if (column == line.length) { - var l = this.doc.getLength(); - do { - row++; - rightOfCursor = this.doc.getLine(row) - } while (row < l && /^\s*$/.test(rightOfCursor)) - - if (!/^\s+/.test(rightOfCursor)) - rightOfCursor = "" - column = 0; - } - - var index = this.$shortWordEndIndex(rightOfCursor); - - this.moveCursorTo(row, column + index); - }; - - this.moveCursorShortWordLeft = function() { - var row = this.lead.row; - var column = this.lead.column; - - var fold; - if (fold = this.session.getFoldAt(row, column, -1)) - return this.moveCursorTo(fold.start.row, fold.start.column); - - var line = this.session.getLine(row).substring(0, column); - if (column == 0) { - do { - row--; - line = this.doc.getLine(row); - } while (row > 0 && /^\s*$/.test(line)) - - column = line.length; - if (!/\s+$/.test(line)) - line = "" - } - - var leftOfCursor = lang.stringReverse(line); - var index = this.$shortWordEndIndex(leftOfCursor); - - return this.moveCursorTo(row, column - index); - }; - - this.moveCursorWordRight = function() { - if (this.session.$selectLongWords) - this.moveCursorLongWordRight(); - else - this.moveCursorShortWordRight(); - }; - - this.moveCursorWordLeft = function() { - if (this.session.$selectLongWords) - this.moveCursorLongWordLeft(); - else - this.moveCursorShortWordLeft(); - }; - this.moveCursorBy = function(rows, chars) { - var screenPos = this.session.documentToScreenPosition( - this.lead.row, - this.lead.column - ); - - if (chars === 0) { - if (this.$desiredColumn) - screenPos.column = this.$desiredColumn; - else - this.$desiredColumn = screenPos.column; - } - - var docPos = this.session.screenToDocumentPosition(screenPos.row + rows, screenPos.column); - - if (rows !== 0 && chars === 0 && docPos.row === this.lead.row && docPos.column === this.lead.column) { - if (this.session.lineWidgets && this.session.lineWidgets[docPos.row]) - docPos.row++; - } - this.moveCursorTo(docPos.row, docPos.column + chars, chars === 0); - }; - this.moveCursorToPosition = function(position) { - this.moveCursorTo(position.row, position.column); - }; - this.moveCursorTo = function(row, column, keepDesiredColumn) { - var fold = this.session.getFoldAt(row, column, 1); - if (fold) { - row = fold.start.row; - column = fold.start.column; - } - - this.$keepDesiredColumnOnChange = true; - this.lead.setPosition(row, column); - this.$keepDesiredColumnOnChange = false; - - if (!keepDesiredColumn) - this.$desiredColumn = null; - }; - this.moveCursorToScreen = function(row, column, keepDesiredColumn) { - var pos = this.session.screenToDocumentPosition(row, column); - this.moveCursorTo(pos.row, pos.column, keepDesiredColumn); - }; - this.detach = function() { - this.lead.detach(); - this.anchor.detach(); - this.session = this.doc = null; - } - - this.fromOrientedRange = function(range) { - this.setSelectionRange(range, range.cursor == range.start); - this.$desiredColumn = range.desiredColumn || this.$desiredColumn; - } - - this.toOrientedRange = function(range) { - var r = this.getRange(); - if (range) { - range.start.column = r.start.column; - range.start.row = r.start.row; - range.end.column = r.end.column; - range.end.row = r.end.row; - } else { - range = r; - } - - range.cursor = this.isBackwards() ? range.start : range.end; - range.desiredColumn = this.$desiredColumn; - return range; - } - - this.toJSON = function() { - if (this.rangeCount) { - var data = this.ranges.map(function(r) { - var r1 = r.clone(); - r1.isBackwards = r.cursor == r.start; - return r1; - }); - } else { - var data = this.getRange(); - data.isBackwards = this.isBackwards(); - } - return data; - }; - - this.fromJSON = function(data) { - if (data.start == undefined) { - if (this.rangeList) { - this.toSingleRange(data[0]); - for (var i = data.length; i--; ) { - var r = Range.fromPoints(data[i].start, data[i].end); - if (data.isBackwards) - r.cursor = r.start; - this.addRange(r, true); - } - return; - } else - data = data[0]; - } - if (this.rangeList) - this.toSingleRange(data); - this.setSelectionRange(data, data.isBackwards); - }; - - this.isEqual = function(data) { - if ((data.length || this.rangeCount) && data.length != this.rangeCount) - return false; - if (!data.length || !this.ranges) - return this.getRange().isEqual(data); - - for (var i = this.ranges.length; i--; ) { - if (!this.ranges[i].isEqual(data[i])) - return false - } - return true; - } - -}).call(Selection.prototype); - -exports.Selection = Selection; -}); - -ace.define('ace/range', ['require', 'exports', 'module' ], function(require, exports, module) { - -var comparePoints = function(p1, p2) { - return p1.row - p2.row || p1.column - p2.column; -}; -var Range = function(startRow, startColumn, endRow, endColumn) { - this.start = { - row: startRow, - column: startColumn - }; - - this.end = { - row: endRow, - column: endColumn - }; -}; - -(function() { - this.isEqual = function(range) { - return this.start.row === range.start.row && - this.end.row === range.end.row && - this.start.column === range.start.column && - this.end.column === range.end.column; - }; - this.toString = function() { - return ("Range: [" + this.start.row + "/" + this.start.column + - "] -> [" + this.end.row + "/" + this.end.column + "]"); - }; - - this.contains = function(row, column) { - return this.compare(row, column) == 0; - }; - this.compareRange = function(range) { - var cmp, - end = range.end, - start = range.start; - - cmp = this.compare(end.row, end.column); - if (cmp == 1) { - cmp = this.compare(start.row, start.column); - if (cmp == 1) { - return 2; - } else if (cmp == 0) { - return 1; - } else { - return 0; - } - } else if (cmp == -1) { - return -2; - } else { - cmp = this.compare(start.row, start.column); - if (cmp == -1) { - return -1; - } else if (cmp == 1) { - return 42; - } else { - return 0; - } - } - }; - this.comparePoint = function(p) { - return this.compare(p.row, p.column); - }; - this.containsRange = function(range) { - return this.comparePoint(range.start) == 0 && this.comparePoint(range.end) == 0; - }; - this.intersects = function(range) { - var cmp = this.compareRange(range); - return (cmp == -1 || cmp == 0 || cmp == 1); - }; - this.isEnd = function(row, column) { - return this.end.row == row && this.end.column == column; - }; - this.isStart = function(row, column) { - return this.start.row == row && this.start.column == column; - }; - this.setStart = function(row, column) { - if (typeof row == "object") { - this.start.column = row.column; - this.start.row = row.row; - } else { - this.start.row = row; - this.start.column = column; - } - }; - this.setEnd = function(row, column) { - if (typeof row == "object") { - this.end.column = row.column; - this.end.row = row.row; - } else { - this.end.row = row; - this.end.column = column; - } - }; - this.inside = function(row, column) { - if (this.compare(row, column) == 0) { - if (this.isEnd(row, column) || this.isStart(row, column)) { - return false; - } else { - return true; - } - } - return false; - }; - this.insideStart = function(row, column) { - if (this.compare(row, column) == 0) { - if (this.isEnd(row, column)) { - return false; - } else { - return true; - } - } - return false; - }; - this.insideEnd = function(row, column) { - if (this.compare(row, column) == 0) { - if (this.isStart(row, column)) { - return false; - } else { - return true; - } - } - return false; - }; - this.compare = function(row, column) { - if (!this.isMultiLine()) { - if (row === this.start.row) { - return column < this.start.column ? -1 : (column > this.end.column ? 1 : 0); - }; - } - - if (row < this.start.row) - return -1; - - if (row > this.end.row) - return 1; - - if (this.start.row === row) - return column >= this.start.column ? 0 : -1; - - if (this.end.row === row) - return column <= this.end.column ? 0 : 1; - - return 0; - }; - this.compareStart = function(row, column) { - if (this.start.row == row && this.start.column == column) { - return -1; - } else { - return this.compare(row, column); - } - }; - this.compareEnd = function(row, column) { - if (this.end.row == row && this.end.column == column) { - return 1; - } else { - return this.compare(row, column); - } - }; - this.compareInside = function(row, column) { - if (this.end.row == row && this.end.column == column) { - return 1; - } else if (this.start.row == row && this.start.column == column) { - return -1; - } else { - return this.compare(row, column); - } - }; - this.clipRows = function(firstRow, lastRow) { - if (this.end.row > lastRow) - var end = {row: lastRow + 1, column: 0}; - else if (this.end.row < firstRow) - var end = {row: firstRow, column: 0}; - - if (this.start.row > lastRow) - var start = {row: lastRow + 1, column: 0}; - else if (this.start.row < firstRow) - var start = {row: firstRow, column: 0}; - - return Range.fromPoints(start || this.start, end || this.end); - }; - this.extend = function(row, column) { - var cmp = this.compare(row, column); - - if (cmp == 0) - return this; - else if (cmp == -1) - var start = {row: row, column: column}; - else - var end = {row: row, column: column}; - - return Range.fromPoints(start || this.start, end || this.end); - }; - - this.isEmpty = function() { - return (this.start.row === this.end.row && this.start.column === this.end.column); - }; - this.isMultiLine = function() { - return (this.start.row !== this.end.row); - }; - this.clone = function() { - return Range.fromPoints(this.start, this.end); - }; - this.collapseRows = function() { - if (this.end.column == 0) - return new Range(this.start.row, 0, Math.max(this.start.row, this.end.row-1), 0) - else - return new Range(this.start.row, 0, this.end.row, 0) - }; - this.toScreenRange = function(session) { - var screenPosStart = session.documentToScreenPosition(this.start); - var screenPosEnd = session.documentToScreenPosition(this.end); - - return new Range( - screenPosStart.row, screenPosStart.column, - screenPosEnd.row, screenPosEnd.column - ); - }; - this.moveBy = function(row, column) { - this.start.row += row; - this.start.column += column; - this.end.row += row; - this.end.column += column; - }; - -}).call(Range.prototype); -Range.fromPoints = function(start, end) { - return new Range(start.row, start.column, end.row, end.column); -}; -Range.comparePoints = comparePoints; - -Range.comparePoints = function(p1, p2) { - return p1.row - p2.row || p1.column - p2.column; -}; - - -exports.Range = Range; -}); - -ace.define('ace/mode/text', ['require', 'exports', 'module' , 'ace/tokenizer', 'ace/mode/text_highlight_rules', 'ace/mode/behaviour', 'ace/unicode', 'ace/lib/lang', 'ace/token_iterator', 'ace/range'], function(require, exports, module) { - - -var Tokenizer = require("../tokenizer").Tokenizer; -var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; -var Behaviour = require("./behaviour").Behaviour; -var unicode = require("../unicode"); -var lang = require("../lib/lang"); -var TokenIterator = require("../token_iterator").TokenIterator; -var Range = require("../range").Range; - -var Mode = function() { - this.HighlightRules = TextHighlightRules; - this.$behaviour = new Behaviour(); -}; - -(function() { - - this.tokenRe = new RegExp("^[" - + unicode.packages.L - + unicode.packages.Mn + unicode.packages.Mc - + unicode.packages.Nd - + unicode.packages.Pc + "\\$_]+", "g" - ); - - this.nonTokenRe = new RegExp("^(?:[^" - + unicode.packages.L - + unicode.packages.Mn + unicode.packages.Mc - + unicode.packages.Nd - + unicode.packages.Pc + "\\$_]|\s])+", "g" - ); - - this.getTokenizer = function() { - if (!this.$tokenizer) { - this.$highlightRules = new this.HighlightRules(); - this.$tokenizer = new Tokenizer(this.$highlightRules.getRules()); - } - return this.$tokenizer; - }; - - this.lineCommentStart = ""; - this.blockComment = ""; - - this.toggleCommentLines = function(state, session, startRow, endRow) { - var doc = session.doc; - - var ignoreBlankLines = true; - var shouldRemove = true; - var minIndent = Infinity; - var tabSize = session.getTabSize(); - var insertAtTabStop = false; - - if (!this.lineCommentStart) { - if (!this.blockComment) - return false; - var lineCommentStart = this.blockComment.start; - var lineCommentEnd = this.blockComment.end; - var regexpStart = new RegExp("^(\\s*)(?:" + lang.escapeRegExp(lineCommentStart) + ")"); - var regexpEnd = new RegExp("(?:" + lang.escapeRegExp(lineCommentEnd) + ")\\s*$"); - - var comment = function(line, i) { - if (testRemove(line, i)) - return; - if (!ignoreBlankLines || /\S/.test(line)) { - doc.insertInLine({row: i, column: line.length}, lineCommentEnd); - doc.insertInLine({row: i, column: minIndent}, lineCommentStart); - } - }; - - var uncomment = function(line, i) { - var m; - if (m = line.match(regexpEnd)) - doc.removeInLine(i, line.length - m[0].length, line.length); - if (m = line.match(regexpStart)) - doc.removeInLine(i, m[1].length, m[0].length); - }; - - var testRemove = function(line, row) { - if (regexpStart.test(line)) - return true; - var tokens = session.getTokens(row); - for (var i = 0; i < tokens.length; i++) { - if (tokens[i].type === 'comment') - return true; - } - }; - } else { - if (Array.isArray(this.lineCommentStart)) { - var regexpStart = this.lineCommentStart.map(lang.escapeRegExp).join("|"); - var lineCommentStart = this.lineCommentStart[0]; - } else { - var regexpStart = lang.escapeRegExp(this.lineCommentStart); - var lineCommentStart = this.lineCommentStart; - } - regexpStart = new RegExp("^(\\s*)(?:" + regexpStart + ") ?"); - - insertAtTabStop = session.getUseSoftTabs(); - - var uncomment = function(line, i) { - var m = line.match(regexpStart); - if (!m) return; - var start = m[1].length, end = m[0].length; - if (!shouldInsertSpace(line, start, end) && m[0][end - 1] == " ") - end--; - doc.removeInLine(i, start, end); - }; - var commentWithSpace = lineCommentStart + " "; - var comment = function(line, i) { - if (!ignoreBlankLines || /\S/.test(line)) { - if (shouldInsertSpace(line, minIndent, minIndent)) - doc.insertInLine({row: i, column: minIndent}, commentWithSpace); - else - doc.insertInLine({row: i, column: minIndent}, lineCommentStart); - } - }; - var testRemove = function(line, i) { - return regexpStart.test(line); - }; - - var shouldInsertSpace = function(line, before, after) { - var spaces = 0; - while (before-- && line.charAt(before) == " ") - spaces++; - if (spaces % tabSize != 0) - return false; - var spaces = 0; - while (line.charAt(after++) == " ") - spaces++; - if (tabSize > 2) - return spaces % tabSize != tabSize - 1; - else - return spaces % tabSize == 0; - return true; - }; - } - - function iter(fun) { - for (var i = startRow; i <= endRow; i++) - fun(doc.getLine(i), i); - } - - - var minEmptyLength = Infinity; - iter(function(line, i) { - var indent = line.search(/\S/); - if (indent !== -1) { - if (indent < minIndent) - minIndent = indent; - if (shouldRemove && !testRemove(line, i)) - shouldRemove = false; - } else if (minEmptyLength > line.length) { - minEmptyLength = line.length; - } - }); - - if (minIndent == Infinity) { - minIndent = minEmptyLength; - ignoreBlankLines = false; - shouldRemove = false; - } - - if (insertAtTabStop && minIndent % tabSize != 0) - minIndent = Math.floor(minIndent / tabSize) * tabSize; - - iter(shouldRemove ? uncomment : comment); - }; - - this.toggleBlockComment = function(state, session, range, cursor) { - var comment = this.blockComment; - if (!comment) - return; - if (!comment.start && comment[0]) - comment = comment[0]; - - var iterator = new TokenIterator(session, cursor.row, cursor.column); - var token = iterator.getCurrentToken(); - - var sel = session.selection; - var initialRange = session.selection.toOrientedRange(); - var startRow, colDiff; - - if (token && /comment/.test(token.type)) { - var startRange, endRange; - while (token && /comment/.test(token.type)) { - var i = token.value.indexOf(comment.start); - if (i != -1) { - var row = iterator.getCurrentTokenRow(); - var column = iterator.getCurrentTokenColumn() + i; - startRange = new Range(row, column, row, column + comment.start.length); - break - } - token = iterator.stepBackward(); - }; - - var iterator = new TokenIterator(session, cursor.row, cursor.column); - var token = iterator.getCurrentToken(); - while (token && /comment/.test(token.type)) { - var i = token.value.indexOf(comment.end); - if (i != -1) { - var row = iterator.getCurrentTokenRow(); - var column = iterator.getCurrentTokenColumn() + i; - endRange = new Range(row, column, row, column + comment.end.length); - break; - } - token = iterator.stepForward(); - } - if (endRange) - session.remove(endRange); - if (startRange) { - session.remove(startRange); - startRow = startRange.start.row; - colDiff = -comment.start.length - } - } else { - colDiff = comment.start.length - startRow = range.start.row; - session.insert(range.end, comment.end); - session.insert(range.start, comment.start); - } - if (initialRange.start.row == startRow) - initialRange.start.column += colDiff; - if (initialRange.end.row == startRow) - initialRange.end.column += colDiff; - session.selection.fromOrientedRange(initialRange); - }; - - this.getNextLineIndent = function(state, line, tab) { - return this.$getIndent(line); - }; - - this.checkOutdent = function(state, line, input) { - return false; - }; - - this.autoOutdent = function(state, doc, row) { - }; - - this.$getIndent = function(line) { - return line.match(/^\s*/)[0]; - }; - - this.createWorker = function(session) { - return null; - }; - - this.createModeDelegates = function (mapping) { - this.$embeds = []; - this.$modes = {}; - for (var i in mapping) { - if (mapping[i]) { - this.$embeds.push(i); - this.$modes[i] = new mapping[i](); - } - } - - var delegations = ['toggleCommentLines', 'getNextLineIndent', 'checkOutdent', 'autoOutdent', 'transformAction', 'getCompletions']; - - for (var i = 0; i < delegations.length; i++) { - (function(scope) { - var functionName = delegations[i]; - var defaultHandler = scope[functionName]; - scope[delegations[i]] = function() { - return this.$delegator(functionName, arguments, defaultHandler); - } - } (this)); - } - }; - - this.$delegator = function(method, args, defaultHandler) { - var state = args[0]; - if (typeof state != "string") - state = state[0]; - for (var i = 0; i < this.$embeds.length; i++) { - if (!this.$modes[this.$embeds[i]]) continue; - - var split = state.split(this.$embeds[i]); - if (!split[0] && split[1]) { - args[0] = split[1]; - var mode = this.$modes[this.$embeds[i]]; - return mode[method].apply(mode, args); - } - } - var ret = defaultHandler.apply(this, args); - return defaultHandler ? ret : undefined; - }; - - this.transformAction = function(state, action, editor, session, param) { - if (this.$behaviour) { - var behaviours = this.$behaviour.getBehaviours(); - for (var key in behaviours) { - if (behaviours[key][action]) { - var ret = behaviours[key][action].apply(this, arguments); - if (ret) { - return ret; - } - } - } - } - }; - - this.getKeywords = function(append) { - if (!this.completionKeywords) { - var rules = this.$tokenizer.rules; - var completionKeywords = []; - for (var rule in rules) { - var ruleItr = rules[rule]; - for (var r = 0, l = ruleItr.length; r < l; r++) { - if (typeof ruleItr[r].token === "string") { - if (/keyword|support|storage/.test(ruleItr[r].token)) - completionKeywords.push(ruleItr[r].regex); - } - else if (typeof ruleItr[r].token === "object") { - for (var a = 0, aLength = ruleItr[r].token.length; a < aLength; a++) { - if (/keyword|support|storage/.test(ruleItr[r].token[a])) { - var rule = ruleItr[r].regex.match(/\(.+?\)/g)[a]; - completionKeywords.push(rule.substr(1, rule.length - 2)); - } - } - } - } - } - this.completionKeywords = completionKeywords; - } - if (!append) - return this.$keywordList; - return completionKeywords.concat(this.$keywordList || []); - }; - - this.$createKeywordList = function() { - if (!this.$highlightRules) - this.getTokenizer(); - return this.$keywordList = this.$highlightRules.$keywordList || []; - } - - this.getCompletions = function(state, session, pos, prefix) { - var keywords = this.$keywordList || this.$createKeywordList(); - return keywords.map(function(word) { - return { - name: word, - value: word, - score: 0, - meta: "keyword" - }; - }); - }; - - this.$id = "ace/mode/text"; -}).call(Mode.prototype); - -exports.Mode = Mode; -}); - -ace.define('ace/tokenizer', ['require', 'exports', 'module' ], function(require, exports, module) { -var MAX_TOKEN_COUNT = 1000; -var Tokenizer = function(rules) { - this.states = rules; - - this.regExps = {}; - this.matchMappings = {}; - for (var key in this.states) { - var state = this.states[key]; - var ruleRegExps = []; - var matchTotal = 0; - var mapping = this.matchMappings[key] = {defaultToken: "text"}; - var flag = "g"; - - var splitterRurles = []; - for (var i = 0; i < state.length; i++) { - var rule = state[i]; - if (rule.defaultToken) - mapping.defaultToken = rule.defaultToken; - if (rule.caseInsensitive) - flag = "gi"; - if (rule.regex == null) - continue; - - if (rule.regex instanceof RegExp) - rule.regex = rule.regex.toString().slice(1, -1); - var adjustedregex = rule.regex; - var matchcount = new RegExp("(?:(" + adjustedregex + ")|(.))").exec("a").length - 2; - if (Array.isArray(rule.token)) { - if (rule.token.length == 1 || matchcount == 1) { - rule.token = rule.token[0]; - } else if (matchcount - 1 != rule.token.length) { - throw new Error("number of classes and regexp groups in '" + - rule.token + "'\n'" + rule.regex + "' doesn't match\n" - + (matchcount - 1) + "!=" + rule.token.length); - } else { - rule.tokenArray = rule.token; - rule.token = null; - rule.onMatch = this.$arrayTokens; - } - } else if (typeof rule.token == "function" && !rule.onMatch) { - if (matchcount > 1) - rule.onMatch = this.$applyToken; - else - rule.onMatch = rule.token; - } - - if (matchcount > 1) { - if (/\\\d/.test(rule.regex)) { - adjustedregex = rule.regex.replace(/\\([0-9]+)/g, function(match, digit) { - return "\\" + (parseInt(digit, 10) + matchTotal + 1); - }); - } else { - matchcount = 1; - adjustedregex = this.removeCapturingGroups(rule.regex); - } - if (!rule.splitRegex && typeof rule.token != "string") - splitterRurles.push(rule); // flag will be known only at the very end - } - - mapping[matchTotal] = i; - matchTotal += matchcount; - - ruleRegExps.push(adjustedregex); - if (!rule.onMatch) - rule.onMatch = null; - rule.__proto__ = null; - } - - splitterRurles.forEach(function(rule) { - rule.splitRegex = this.createSplitterRegexp(rule.regex, flag); - }, this); - - this.regExps[key] = new RegExp("(" + ruleRegExps.join(")|(") + ")|($)", flag); - } -}; - -(function() { - this.$setMaxTokenCount = function(m) { - MAX_TOKEN_COUNT = m | 0; - }; - - this.$applyToken = function(str) { - var values = this.splitRegex.exec(str).slice(1); - var types = this.token.apply(this, values); - if (typeof types === "string") - return [{type: types, value: str}]; - - var tokens = []; - for (var i = 0, l = types.length; i < l; i++) { - if (values[i]) - tokens[tokens.length] = { - type: types[i], - value: values[i] - }; - } - return tokens; - }, - - this.$arrayTokens = function(str) { - if (!str) - return []; - var values = this.splitRegex.exec(str); - if (!values) - return "text"; - var tokens = []; - var types = this.tokenArray; - for (var i = 0, l = types.length; i < l; i++) { - if (values[i + 1]) - tokens[tokens.length] = { - type: types[i], - value: values[i + 1] - }; - } - return tokens; - }; - - this.removeCapturingGroups = function(src) { - var r = src.replace( - /\[(?:\\.|[^\]])*?\]|\\.|\(\?[:=!]|(\()/g, - function(x, y) {return y ? "(?:" : x;} - ); - return r; - }; - - this.createSplitterRegexp = function(src, flag) { - if (src.indexOf("(?=") != -1) { - var stack = 0; - var inChClass = false; - var lastCapture = {}; - src.replace(/(\\.)|(\((?:\?[=!])?)|(\))|([\[\]])/g, function( - m, esc, parenOpen, parenClose, square, index - ) { - if (inChClass) { - inChClass = square != "]"; - } else if (square) { - inChClass = true; - } else if (parenClose) { - if (stack == lastCapture.stack) { - lastCapture.end = index+1; - lastCapture.stack = -1; - } - stack--; - } else if (parenOpen) { - stack++; - if (parenOpen.length != 1) { - lastCapture.stack = stack - lastCapture.start = index; - } - } - return m; - }); - - if (lastCapture.end != null && /^\)*$/.test(src.substr(lastCapture.end))) - src = src.substring(0, lastCapture.start) + src.substr(lastCapture.end); - } - return new RegExp(src, (flag||"").replace("g", "")); - }; - this.getLineTokens = function(line, startState) { - if (startState && typeof startState != "string") { - var stack = startState.slice(0); - startState = stack[0]; - } else - var stack = []; - - var currentState = startState || "start"; - var state = this.states[currentState]; - if (!state) { - currentState = "start"; - state = this.states[currentState]; - } - var mapping = this.matchMappings[currentState]; - var re = this.regExps[currentState]; - re.lastIndex = 0; - - var match, tokens = []; - var lastIndex = 0; - - var token = {type: null, value: ""}; - - while (match = re.exec(line)) { - var type = mapping.defaultToken; - var rule = null; - var value = match[0]; - var index = re.lastIndex; - - if (index - value.length > lastIndex) { - var skipped = line.substring(lastIndex, index - value.length); - if (token.type == type) { - token.value += skipped; - } else { - if (token.type) - tokens.push(token); - token = {type: type, value: skipped}; - } - } - - for (var i = 0; i < match.length-2; i++) { - if (match[i + 1] === undefined) - continue; - - rule = state[mapping[i]]; - - if (rule.onMatch) - type = rule.onMatch(value, currentState, stack); - else - type = rule.token; - - if (rule.next) { - if (typeof rule.next == "string") - currentState = rule.next; - else - currentState = rule.next(currentState, stack); - - state = this.states[currentState]; - if (!state) { - window.console && console.error && console.error(currentState, "doesn't exist"); - currentState = "start"; - state = this.states[currentState]; - } - mapping = this.matchMappings[currentState]; - lastIndex = index; - re = this.regExps[currentState]; - re.lastIndex = index; - } - break; - } - - if (value) { - if (typeof type == "string") { - if ((!rule || rule.merge !== false) && token.type === type) { - token.value += value; - } else { - if (token.type) - tokens.push(token); - token = {type: type, value: value}; - } - } else if (type) { - if (token.type) - tokens.push(token); - token = {type: null, value: ""}; - for (var i = 0; i < type.length; i++) - tokens.push(type[i]); - } - } - - if (lastIndex == line.length) - break; - - lastIndex = index; - - if (tokens.length > MAX_TOKEN_COUNT) { - while (lastIndex < line.length) { - if (token.type) - tokens.push(token); - token = { - value: line.substring(lastIndex, lastIndex += 2000), - type: "overflow" - }; - } - currentState = "start"; - stack = []; - break; - } - } - - if (token.type) - tokens.push(token); - - if (stack.length > 1) { - if (stack[0] !== currentState) - stack.unshift(currentState); - } - return { - tokens : tokens, - state : stack.length ? stack : currentState - }; - }; - -}).call(Tokenizer.prototype); - -exports.Tokenizer = Tokenizer; -}); - -ace.define('ace/mode/text_highlight_rules', ['require', 'exports', 'module' , 'ace/lib/lang'], function(require, exports, module) { - - -var lang = require("../lib/lang"); - -var TextHighlightRules = function() { - - this.$rules = { - "start" : [{ - token : "empty_line", - regex : '^$' - }, { - defaultToken : "text" - }] - }; -}; - -(function() { - - this.addRules = function(rules, prefix) { - if (!prefix) { - for (var key in rules) - this.$rules[key] = rules[key]; - return; - } - for (var key in rules) { - var state = rules[key]; - for (var i = 0; i < state.length; i++) { - var rule = state[i]; - if (rule.next) { - if (typeof rule.next != "string") { - if (rule.nextState && rule.nextState.indexOf(prefix) !== 0) - rule.nextState = prefix + rule.nextState; - } else { - if (rule.next.indexOf(prefix) !== 0) - rule.next = prefix + rule.next; - } - - } - } - this.$rules[prefix + key] = state; - } - }; - - this.getRules = function() { - return this.$rules; - }; - - this.embedRules = function (HighlightRules, prefix, escapeRules, states, append) { - var embedRules = new HighlightRules().getRules(); - if (states) { - for (var i = 0; i < states.length; i++) - states[i] = prefix + states[i]; - } else { - states = []; - for (var key in embedRules) - states.push(prefix + key); - } - - this.addRules(embedRules, prefix); - - if (escapeRules) { - var addRules = Array.prototype[append ? "push" : "unshift"]; - for (var i = 0; i < states.length; i++) - addRules.apply(this.$rules[states[i]], lang.deepCopy(escapeRules)); - } - - if (!this.$embeds) - this.$embeds = []; - this.$embeds.push(prefix); - }; - - this.getEmbeds = function() { - return this.$embeds; - }; - - var pushState = function(currentState, stack) { - if (currentState != "start") - stack.unshift(this.nextState, currentState); - return this.nextState; - }; - var popState = function(currentState, stack) { - if (stack[0] !== currentState) - return "start"; - stack.shift(); - return stack.shift(); - }; - - this.normalizeRules = function() { - var id = 0; - var rules = this.$rules; - function processState(key) { - var state = rules[key]; - state.processed = true; - for (var i = 0; i < state.length; i++) { - var rule = state[i]; - if (!rule.regex && rule.start) { - rule.regex = rule.start; - if (!rule.next) - rule.next = []; - rule.next.push({ - defaultToken: rule.token - }, { - token: rule.token + ".end", - regex: rule.end || rule.start, - next: "pop" - }); - rule.token = rule.token + ".start"; - rule.push = true; - } - var next = rule.next || rule.push; - if (next && Array.isArray(next)) { - var stateName = rule.stateName; - if (!stateName) { - stateName = rule.token; - if (typeof stateName != "string") - stateName = stateName[0] || ""; - if (rules[stateName]) - stateName += id++; - } - rules[stateName] = next; - rule.next = stateName; - processState(stateName); - } else if (next == "pop") { - rule.next = popState; - } - - if (rule.push) { - rule.nextState = rule.next || rule.push; - rule.next = pushState; - delete rule.push; - } - - if (rule.rules) { - for (var r in rule.rules) { - if (rules[r]) { - if (rules[r].push) - rules[r].push.apply(rules[r], rule.rules[r]); - } else { - rules[r] = rule.rules[r]; - } - } - } - if (rule.include || typeof rule == "string") { - var includeName = rule.include || rule; - var toInsert = rules[includeName]; - } else if (Array.isArray(rule)) - toInsert = rule; - - if (toInsert) { - var args = [i, 1].concat(toInsert); - if (rule.noEscape) - args = args.filter(function(x) {return !x.next;}); - state.splice.apply(state, args); - i--; - toInsert = null - } - - if (rule.keywordMap) { - rule.token = this.createKeywordMapper( - rule.keywordMap, rule.defaultToken || "text", rule.caseInsensitive - ); - delete rule.defaultToken; - } - } - }; - Object.keys(rules).forEach(processState, this); - }; - - this.createKeywordMapper = function(map, defaultToken, ignoreCase, splitChar) { - var keywords = Object.create(null); - Object.keys(map).forEach(function(className) { - var a = map[className]; - if (ignoreCase) - a = a.toLowerCase(); - var list = a.split(splitChar || "|"); - for (var i = list.length; i--; ) - keywords[list[i]] = className; - }); - if (Object.getPrototypeOf(keywords)) { - keywords.__proto__ = null; - } - this.$keywordList = Object.keys(keywords); - map = null; - return ignoreCase - ? function(value) {return keywords[value.toLowerCase()] || defaultToken } - : function(value) {return keywords[value] || defaultToken }; - } - - this.getKeywords = function() { - return this.$keywords; - }; - -}).call(TextHighlightRules.prototype); - -exports.TextHighlightRules = TextHighlightRules; -}); - -ace.define('ace/mode/behaviour', ['require', 'exports', 'module' ], function(require, exports, module) { - - -var Behaviour = function() { - this.$behaviours = {}; -}; - -(function () { - - this.add = function (name, action, callback) { - switch (undefined) { - case this.$behaviours: - this.$behaviours = {}; - case this.$behaviours[name]: - this.$behaviours[name] = {}; - } - this.$behaviours[name][action] = callback; - } - - this.addBehaviours = function (behaviours) { - for (var key in behaviours) { - for (var action in behaviours[key]) { - this.add(key, action, behaviours[key][action]); - } - } - } - - this.remove = function (name) { - if (this.$behaviours && this.$behaviours[name]) { - delete this.$behaviours[name]; - } - } - - this.inherit = function (mode, filter) { - if (typeof mode === "function") { - var behaviours = new mode().getBehaviours(filter); - } else { - var behaviours = mode.getBehaviours(filter); - } - this.addBehaviours(behaviours); - } - - this.getBehaviours = function (filter) { - if (!filter) { - return this.$behaviours; - } else { - var ret = {} - for (var i = 0; i < filter.length; i++) { - if (this.$behaviours[filter[i]]) { - ret[filter[i]] = this.$behaviours[filter[i]]; - } - } - return ret; - } - } - -}).call(Behaviour.prototype); - -exports.Behaviour = Behaviour; -}); -ace.define('ace/unicode', ['require', 'exports', 'module' ], function(require, exports, module) { -exports.packages = {}; - -addUnicodePackage({ - L: "0041-005A0061-007A00AA00B500BA00C0-00D600D8-00F600F8-02C102C6-02D102E0-02E402EC02EE0370-037403760377037A-037D03860388-038A038C038E-03A103A3-03F503F7-0481048A-05250531-055605590561-058705D0-05EA05F0-05F20621-064A066E066F0671-06D306D506E506E606EE06EF06FA-06FC06FF07100712-072F074D-07A507B107CA-07EA07F407F507FA0800-0815081A082408280904-0939093D09500958-0961097109720979-097F0985-098C098F09900993-09A809AA-09B009B209B6-09B909BD09CE09DC09DD09DF-09E109F009F10A05-0A0A0A0F0A100A13-0A280A2A-0A300A320A330A350A360A380A390A59-0A5C0A5E0A72-0A740A85-0A8D0A8F-0A910A93-0AA80AAA-0AB00AB20AB30AB5-0AB90ABD0AD00AE00AE10B05-0B0C0B0F0B100B13-0B280B2A-0B300B320B330B35-0B390B3D0B5C0B5D0B5F-0B610B710B830B85-0B8A0B8E-0B900B92-0B950B990B9A0B9C0B9E0B9F0BA30BA40BA8-0BAA0BAE-0BB90BD00C05-0C0C0C0E-0C100C12-0C280C2A-0C330C35-0C390C3D0C580C590C600C610C85-0C8C0C8E-0C900C92-0CA80CAA-0CB30CB5-0CB90CBD0CDE0CE00CE10D05-0D0C0D0E-0D100D12-0D280D2A-0D390D3D0D600D610D7A-0D7F0D85-0D960D9A-0DB10DB3-0DBB0DBD0DC0-0DC60E01-0E300E320E330E40-0E460E810E820E840E870E880E8A0E8D0E94-0E970E99-0E9F0EA1-0EA30EA50EA70EAA0EAB0EAD-0EB00EB20EB30EBD0EC0-0EC40EC60EDC0EDD0F000F40-0F470F49-0F6C0F88-0F8B1000-102A103F1050-1055105A-105D106110651066106E-10701075-1081108E10A0-10C510D0-10FA10FC1100-1248124A-124D1250-12561258125A-125D1260-1288128A-128D1290-12B012B2-12B512B8-12BE12C012C2-12C512C8-12D612D8-13101312-13151318-135A1380-138F13A0-13F41401-166C166F-167F1681-169A16A0-16EA1700-170C170E-17111720-17311740-17511760-176C176E-17701780-17B317D717DC1820-18771880-18A818AA18B0-18F51900-191C1950-196D1970-19741980-19AB19C1-19C71A00-1A161A20-1A541AA71B05-1B331B45-1B4B1B83-1BA01BAE1BAF1C00-1C231C4D-1C4F1C5A-1C7D1CE9-1CEC1CEE-1CF11D00-1DBF1E00-1F151F18-1F1D1F20-1F451F48-1F4D1F50-1F571F591F5B1F5D1F5F-1F7D1F80-1FB41FB6-1FBC1FBE1FC2-1FC41FC6-1FCC1FD0-1FD31FD6-1FDB1FE0-1FEC1FF2-1FF41FF6-1FFC2071207F2090-209421022107210A-211321152119-211D212421262128212A-212D212F-2139213C-213F2145-2149214E218321842C00-2C2E2C30-2C5E2C60-2CE42CEB-2CEE2D00-2D252D30-2D652D6F2D80-2D962DA0-2DA62DA8-2DAE2DB0-2DB62DB8-2DBE2DC0-2DC62DC8-2DCE2DD0-2DD62DD8-2DDE2E2F300530063031-3035303B303C3041-3096309D-309F30A1-30FA30FC-30FF3105-312D3131-318E31A0-31B731F0-31FF3400-4DB54E00-9FCBA000-A48CA4D0-A4FDA500-A60CA610-A61FA62AA62BA640-A65FA662-A66EA67F-A697A6A0-A6E5A717-A71FA722-A788A78BA78CA7FB-A801A803-A805A807-A80AA80C-A822A840-A873A882-A8B3A8F2-A8F7A8FBA90A-A925A930-A946A960-A97CA984-A9B2A9CFAA00-AA28AA40-AA42AA44-AA4BAA60-AA76AA7AAA80-AAAFAAB1AAB5AAB6AAB9-AABDAAC0AAC2AADB-AADDABC0-ABE2AC00-D7A3D7B0-D7C6D7CB-D7FBF900-FA2DFA30-FA6DFA70-FAD9FB00-FB06FB13-FB17FB1DFB1F-FB28FB2A-FB36FB38-FB3CFB3EFB40FB41FB43FB44FB46-FBB1FBD3-FD3DFD50-FD8FFD92-FDC7FDF0-FDFBFE70-FE74FE76-FEFCFF21-FF3AFF41-FF5AFF66-FFBEFFC2-FFC7FFCA-FFCFFFD2-FFD7FFDA-FFDC", - Ll: "0061-007A00AA00B500BA00DF-00F600F8-00FF01010103010501070109010B010D010F01110113011501170119011B011D011F01210123012501270129012B012D012F01310133013501370138013A013C013E014001420144014601480149014B014D014F01510153015501570159015B015D015F01610163016501670169016B016D016F0171017301750177017A017C017E-0180018301850188018C018D019201950199-019B019E01A101A301A501A801AA01AB01AD01B001B401B601B901BA01BD-01BF01C601C901CC01CE01D001D201D401D601D801DA01DC01DD01DF01E101E301E501E701E901EB01ED01EF01F001F301F501F901FB01FD01FF02010203020502070209020B020D020F02110213021502170219021B021D021F02210223022502270229022B022D022F02310233-0239023C023F0240024202470249024B024D024F-02930295-02AF037103730377037B-037D039003AC-03CE03D003D103D5-03D703D903DB03DD03DF03E103E303E503E703E903EB03ED03EF-03F303F503F803FB03FC0430-045F04610463046504670469046B046D046F04710473047504770479047B047D047F0481048B048D048F04910493049504970499049B049D049F04A104A304A504A704A904AB04AD04AF04B104B304B504B704B904BB04BD04BF04C204C404C604C804CA04CC04CE04CF04D104D304D504D704D904DB04DD04DF04E104E304E504E704E904EB04ED04EF04F104F304F504F704F904FB04FD04FF05010503050505070509050B050D050F05110513051505170519051B051D051F0521052305250561-05871D00-1D2B1D62-1D771D79-1D9A1E011E031E051E071E091E0B1E0D1E0F1E111E131E151E171E191E1B1E1D1E1F1E211E231E251E271E291E2B1E2D1E2F1E311E331E351E371E391E3B1E3D1E3F1E411E431E451E471E491E4B1E4D1E4F1E511E531E551E571E591E5B1E5D1E5F1E611E631E651E671E691E6B1E6D1E6F1E711E731E751E771E791E7B1E7D1E7F1E811E831E851E871E891E8B1E8D1E8F1E911E931E95-1E9D1E9F1EA11EA31EA51EA71EA91EAB1EAD1EAF1EB11EB31EB51EB71EB91EBB1EBD1EBF1EC11EC31EC51EC71EC91ECB1ECD1ECF1ED11ED31ED51ED71ED91EDB1EDD1EDF1EE11EE31EE51EE71EE91EEB1EED1EEF1EF11EF31EF51EF71EF91EFB1EFD1EFF-1F071F10-1F151F20-1F271F30-1F371F40-1F451F50-1F571F60-1F671F70-1F7D1F80-1F871F90-1F971FA0-1FA71FB0-1FB41FB61FB71FBE1FC2-1FC41FC61FC71FD0-1FD31FD61FD71FE0-1FE71FF2-1FF41FF61FF7210A210E210F2113212F21342139213C213D2146-2149214E21842C30-2C5E2C612C652C662C682C6A2C6C2C712C732C742C76-2C7C2C812C832C852C872C892C8B2C8D2C8F2C912C932C952C972C992C9B2C9D2C9F2CA12CA32CA52CA72CA92CAB2CAD2CAF2CB12CB32CB52CB72CB92CBB2CBD2CBF2CC12CC32CC52CC72CC92CCB2CCD2CCF2CD12CD32CD52CD72CD92CDB2CDD2CDF2CE12CE32CE42CEC2CEE2D00-2D25A641A643A645A647A649A64BA64DA64FA651A653A655A657A659A65BA65DA65FA663A665A667A669A66BA66DA681A683A685A687A689A68BA68DA68FA691A693A695A697A723A725A727A729A72BA72DA72F-A731A733A735A737A739A73BA73DA73FA741A743A745A747A749A74BA74DA74FA751A753A755A757A759A75BA75DA75FA761A763A765A767A769A76BA76DA76FA771-A778A77AA77CA77FA781A783A785A787A78CFB00-FB06FB13-FB17FF41-FF5A", - Lu: "0041-005A00C0-00D600D8-00DE01000102010401060108010A010C010E01100112011401160118011A011C011E01200122012401260128012A012C012E01300132013401360139013B013D013F0141014301450147014A014C014E01500152015401560158015A015C015E01600162016401660168016A016C016E017001720174017601780179017B017D018101820184018601870189-018B018E-0191019301940196-0198019C019D019F01A001A201A401A601A701A901AC01AE01AF01B1-01B301B501B701B801BC01C401C701CA01CD01CF01D101D301D501D701D901DB01DE01E001E201E401E601E801EA01EC01EE01F101F401F6-01F801FA01FC01FE02000202020402060208020A020C020E02100212021402160218021A021C021E02200222022402260228022A022C022E02300232023A023B023D023E02410243-02460248024A024C024E03700372037603860388-038A038C038E038F0391-03A103A3-03AB03CF03D2-03D403D803DA03DC03DE03E003E203E403E603E803EA03EC03EE03F403F703F903FA03FD-042F04600462046404660468046A046C046E04700472047404760478047A047C047E0480048A048C048E04900492049404960498049A049C049E04A004A204A404A604A804AA04AC04AE04B004B204B404B604B804BA04BC04BE04C004C104C304C504C704C904CB04CD04D004D204D404D604D804DA04DC04DE04E004E204E404E604E804EA04EC04EE04F004F204F404F604F804FA04FC04FE05000502050405060508050A050C050E05100512051405160518051A051C051E0520052205240531-055610A0-10C51E001E021E041E061E081E0A1E0C1E0E1E101E121E141E161E181E1A1E1C1E1E1E201E221E241E261E281E2A1E2C1E2E1E301E321E341E361E381E3A1E3C1E3E1E401E421E441E461E481E4A1E4C1E4E1E501E521E541E561E581E5A1E5C1E5E1E601E621E641E661E681E6A1E6C1E6E1E701E721E741E761E781E7A1E7C1E7E1E801E821E841E861E881E8A1E8C1E8E1E901E921E941E9E1EA01EA21EA41EA61EA81EAA1EAC1EAE1EB01EB21EB41EB61EB81EBA1EBC1EBE1EC01EC21EC41EC61EC81ECA1ECC1ECE1ED01ED21ED41ED61ED81EDA1EDC1EDE1EE01EE21EE41EE61EE81EEA1EEC1EEE1EF01EF21EF41EF61EF81EFA1EFC1EFE1F08-1F0F1F18-1F1D1F28-1F2F1F38-1F3F1F48-1F4D1F591F5B1F5D1F5F1F68-1F6F1FB8-1FBB1FC8-1FCB1FD8-1FDB1FE8-1FEC1FF8-1FFB21022107210B-210D2110-211221152119-211D212421262128212A-212D2130-2133213E213F214521832C00-2C2E2C602C62-2C642C672C692C6B2C6D-2C702C722C752C7E-2C802C822C842C862C882C8A2C8C2C8E2C902C922C942C962C982C9A2C9C2C9E2CA02CA22CA42CA62CA82CAA2CAC2CAE2CB02CB22CB42CB62CB82CBA2CBC2CBE2CC02CC22CC42CC62CC82CCA2CCC2CCE2CD02CD22CD42CD62CD82CDA2CDC2CDE2CE02CE22CEB2CEDA640A642A644A646A648A64AA64CA64EA650A652A654A656A658A65AA65CA65EA662A664A666A668A66AA66CA680A682A684A686A688A68AA68CA68EA690A692A694A696A722A724A726A728A72AA72CA72EA732A734A736A738A73AA73CA73EA740A742A744A746A748A74AA74CA74EA750A752A754A756A758A75AA75CA75EA760A762A764A766A768A76AA76CA76EA779A77BA77DA77EA780A782A784A786A78BFF21-FF3A", - Lt: "01C501C801CB01F21F88-1F8F1F98-1F9F1FA8-1FAF1FBC1FCC1FFC", - Lm: "02B0-02C102C6-02D102E0-02E402EC02EE0374037A0559064006E506E607F407F507FA081A0824082809710E460EC610FC17D718431AA71C78-1C7D1D2C-1D611D781D9B-1DBF2071207F2090-20942C7D2D6F2E2F30053031-3035303B309D309E30FC-30FEA015A4F8-A4FDA60CA67FA717-A71FA770A788A9CFAA70AADDFF70FF9EFF9F", - Lo: "01BB01C0-01C3029405D0-05EA05F0-05F20621-063F0641-064A066E066F0671-06D306D506EE06EF06FA-06FC06FF07100712-072F074D-07A507B107CA-07EA0800-08150904-0939093D09500958-096109720979-097F0985-098C098F09900993-09A809AA-09B009B209B6-09B909BD09CE09DC09DD09DF-09E109F009F10A05-0A0A0A0F0A100A13-0A280A2A-0A300A320A330A350A360A380A390A59-0A5C0A5E0A72-0A740A85-0A8D0A8F-0A910A93-0AA80AAA-0AB00AB20AB30AB5-0AB90ABD0AD00AE00AE10B05-0B0C0B0F0B100B13-0B280B2A-0B300B320B330B35-0B390B3D0B5C0B5D0B5F-0B610B710B830B85-0B8A0B8E-0B900B92-0B950B990B9A0B9C0B9E0B9F0BA30BA40BA8-0BAA0BAE-0BB90BD00C05-0C0C0C0E-0C100C12-0C280C2A-0C330C35-0C390C3D0C580C590C600C610C85-0C8C0C8E-0C900C92-0CA80CAA-0CB30CB5-0CB90CBD0CDE0CE00CE10D05-0D0C0D0E-0D100D12-0D280D2A-0D390D3D0D600D610D7A-0D7F0D85-0D960D9A-0DB10DB3-0DBB0DBD0DC0-0DC60E01-0E300E320E330E40-0E450E810E820E840E870E880E8A0E8D0E94-0E970E99-0E9F0EA1-0EA30EA50EA70EAA0EAB0EAD-0EB00EB20EB30EBD0EC0-0EC40EDC0EDD0F000F40-0F470F49-0F6C0F88-0F8B1000-102A103F1050-1055105A-105D106110651066106E-10701075-1081108E10D0-10FA1100-1248124A-124D1250-12561258125A-125D1260-1288128A-128D1290-12B012B2-12B512B8-12BE12C012C2-12C512C8-12D612D8-13101312-13151318-135A1380-138F13A0-13F41401-166C166F-167F1681-169A16A0-16EA1700-170C170E-17111720-17311740-17511760-176C176E-17701780-17B317DC1820-18421844-18771880-18A818AA18B0-18F51900-191C1950-196D1970-19741980-19AB19C1-19C71A00-1A161A20-1A541B05-1B331B45-1B4B1B83-1BA01BAE1BAF1C00-1C231C4D-1C4F1C5A-1C771CE9-1CEC1CEE-1CF12135-21382D30-2D652D80-2D962DA0-2DA62DA8-2DAE2DB0-2DB62DB8-2DBE2DC0-2DC62DC8-2DCE2DD0-2DD62DD8-2DDE3006303C3041-3096309F30A1-30FA30FF3105-312D3131-318E31A0-31B731F0-31FF3400-4DB54E00-9FCBA000-A014A016-A48CA4D0-A4F7A500-A60BA610-A61FA62AA62BA66EA6A0-A6E5A7FB-A801A803-A805A807-A80AA80C-A822A840-A873A882-A8B3A8F2-A8F7A8FBA90A-A925A930-A946A960-A97CA984-A9B2AA00-AA28AA40-AA42AA44-AA4BAA60-AA6FAA71-AA76AA7AAA80-AAAFAAB1AAB5AAB6AAB9-AABDAAC0AAC2AADBAADCABC0-ABE2AC00-D7A3D7B0-D7C6D7CB-D7FBF900-FA2DFA30-FA6DFA70-FAD9FB1DFB1F-FB28FB2A-FB36FB38-FB3CFB3EFB40FB41FB43FB44FB46-FBB1FBD3-FD3DFD50-FD8FFD92-FDC7FDF0-FDFBFE70-FE74FE76-FEFCFF66-FF6FFF71-FF9DFFA0-FFBEFFC2-FFC7FFCA-FFCFFFD2-FFD7FFDA-FFDC", - M: "0300-036F0483-04890591-05BD05BF05C105C205C405C505C70610-061A064B-065E067006D6-06DC06DE-06E406E706E806EA-06ED07110730-074A07A6-07B007EB-07F30816-0819081B-08230825-08270829-082D0900-0903093C093E-094E0951-0955096209630981-098309BC09BE-09C409C709C809CB-09CD09D709E209E30A01-0A030A3C0A3E-0A420A470A480A4B-0A4D0A510A700A710A750A81-0A830ABC0ABE-0AC50AC7-0AC90ACB-0ACD0AE20AE30B01-0B030B3C0B3E-0B440B470B480B4B-0B4D0B560B570B620B630B820BBE-0BC20BC6-0BC80BCA-0BCD0BD70C01-0C030C3E-0C440C46-0C480C4A-0C4D0C550C560C620C630C820C830CBC0CBE-0CC40CC6-0CC80CCA-0CCD0CD50CD60CE20CE30D020D030D3E-0D440D46-0D480D4A-0D4D0D570D620D630D820D830DCA0DCF-0DD40DD60DD8-0DDF0DF20DF30E310E34-0E3A0E47-0E4E0EB10EB4-0EB90EBB0EBC0EC8-0ECD0F180F190F350F370F390F3E0F3F0F71-0F840F860F870F90-0F970F99-0FBC0FC6102B-103E1056-1059105E-10601062-10641067-106D1071-10741082-108D108F109A-109D135F1712-17141732-1734175217531772177317B6-17D317DD180B-180D18A91920-192B1930-193B19B0-19C019C819C91A17-1A1B1A55-1A5E1A60-1A7C1A7F1B00-1B041B34-1B441B6B-1B731B80-1B821BA1-1BAA1C24-1C371CD0-1CD21CD4-1CE81CED1CF21DC0-1DE61DFD-1DFF20D0-20F02CEF-2CF12DE0-2DFF302A-302F3099309AA66F-A672A67CA67DA6F0A6F1A802A806A80BA823-A827A880A881A8B4-A8C4A8E0-A8F1A926-A92DA947-A953A980-A983A9B3-A9C0AA29-AA36AA43AA4CAA4DAA7BAAB0AAB2-AAB4AAB7AAB8AABEAABFAAC1ABE3-ABEAABECABEDFB1EFE00-FE0FFE20-FE26", - Mn: "0300-036F0483-04870591-05BD05BF05C105C205C405C505C70610-061A064B-065E067006D6-06DC06DF-06E406E706E806EA-06ED07110730-074A07A6-07B007EB-07F30816-0819081B-08230825-08270829-082D0900-0902093C0941-0948094D0951-095509620963098109BC09C1-09C409CD09E209E30A010A020A3C0A410A420A470A480A4B-0A4D0A510A700A710A750A810A820ABC0AC1-0AC50AC70AC80ACD0AE20AE30B010B3C0B3F0B41-0B440B4D0B560B620B630B820BC00BCD0C3E-0C400C46-0C480C4A-0C4D0C550C560C620C630CBC0CBF0CC60CCC0CCD0CE20CE30D41-0D440D4D0D620D630DCA0DD2-0DD40DD60E310E34-0E3A0E47-0E4E0EB10EB4-0EB90EBB0EBC0EC8-0ECD0F180F190F350F370F390F71-0F7E0F80-0F840F860F870F90-0F970F99-0FBC0FC6102D-10301032-10371039103A103D103E10581059105E-10601071-1074108210851086108D109D135F1712-17141732-1734175217531772177317B7-17BD17C617C9-17D317DD180B-180D18A91920-19221927192819321939-193B1A171A181A561A58-1A5E1A601A621A65-1A6C1A73-1A7C1A7F1B00-1B031B341B36-1B3A1B3C1B421B6B-1B731B801B811BA2-1BA51BA81BA91C2C-1C331C361C371CD0-1CD21CD4-1CE01CE2-1CE81CED1DC0-1DE61DFD-1DFF20D0-20DC20E120E5-20F02CEF-2CF12DE0-2DFF302A-302F3099309AA66FA67CA67DA6F0A6F1A802A806A80BA825A826A8C4A8E0-A8F1A926-A92DA947-A951A980-A982A9B3A9B6-A9B9A9BCAA29-AA2EAA31AA32AA35AA36AA43AA4CAAB0AAB2-AAB4AAB7AAB8AABEAABFAAC1ABE5ABE8ABEDFB1EFE00-FE0FFE20-FE26", - Mc: "0903093E-09400949-094C094E0982098309BE-09C009C709C809CB09CC09D70A030A3E-0A400A830ABE-0AC00AC90ACB0ACC0B020B030B3E0B400B470B480B4B0B4C0B570BBE0BBF0BC10BC20BC6-0BC80BCA-0BCC0BD70C01-0C030C41-0C440C820C830CBE0CC0-0CC40CC70CC80CCA0CCB0CD50CD60D020D030D3E-0D400D46-0D480D4A-0D4C0D570D820D830DCF-0DD10DD8-0DDF0DF20DF30F3E0F3F0F7F102B102C10311038103B103C105610571062-10641067-106D108310841087-108C108F109A-109C17B617BE-17C517C717C81923-19261929-192B193019311933-193819B0-19C019C819C91A19-1A1B1A551A571A611A631A641A6D-1A721B041B351B3B1B3D-1B411B431B441B821BA11BA61BA71BAA1C24-1C2B1C341C351CE11CF2A823A824A827A880A881A8B4-A8C3A952A953A983A9B4A9B5A9BAA9BBA9BD-A9C0AA2FAA30AA33AA34AA4DAA7BABE3ABE4ABE6ABE7ABE9ABEAABEC", - Me: "0488048906DE20DD-20E020E2-20E4A670-A672", - N: "0030-003900B200B300B900BC-00BE0660-066906F0-06F907C0-07C90966-096F09E6-09EF09F4-09F90A66-0A6F0AE6-0AEF0B66-0B6F0BE6-0BF20C66-0C6F0C78-0C7E0CE6-0CEF0D66-0D750E50-0E590ED0-0ED90F20-0F331040-10491090-10991369-137C16EE-16F017E0-17E917F0-17F91810-18191946-194F19D0-19DA1A80-1A891A90-1A991B50-1B591BB0-1BB91C40-1C491C50-1C5920702074-20792080-20892150-21822185-21892460-249B24EA-24FF2776-27932CFD30073021-30293038-303A3192-31953220-32293251-325F3280-328932B1-32BFA620-A629A6E6-A6EFA830-A835A8D0-A8D9A900-A909A9D0-A9D9AA50-AA59ABF0-ABF9FF10-FF19", - Nd: "0030-00390660-066906F0-06F907C0-07C90966-096F09E6-09EF0A66-0A6F0AE6-0AEF0B66-0B6F0BE6-0BEF0C66-0C6F0CE6-0CEF0D66-0D6F0E50-0E590ED0-0ED90F20-0F291040-10491090-109917E0-17E91810-18191946-194F19D0-19DA1A80-1A891A90-1A991B50-1B591BB0-1BB91C40-1C491C50-1C59A620-A629A8D0-A8D9A900-A909A9D0-A9D9AA50-AA59ABF0-ABF9FF10-FF19", - Nl: "16EE-16F02160-21822185-218830073021-30293038-303AA6E6-A6EF", - No: "00B200B300B900BC-00BE09F4-09F90BF0-0BF20C78-0C7E0D70-0D750F2A-0F331369-137C17F0-17F920702074-20792080-20892150-215F21892460-249B24EA-24FF2776-27932CFD3192-31953220-32293251-325F3280-328932B1-32BFA830-A835", - P: "0021-00230025-002A002C-002F003A003B003F0040005B-005D005F007B007D00A100AB00B700BB00BF037E0387055A-055F0589058A05BE05C005C305C605F305F40609060A060C060D061B061E061F066A-066D06D40700-070D07F7-07F90830-083E0964096509700DF40E4F0E5A0E5B0F04-0F120F3A-0F3D0F850FD0-0FD4104A-104F10FB1361-13681400166D166E169B169C16EB-16ED1735173617D4-17D617D8-17DA1800-180A1944194519DE19DF1A1E1A1F1AA0-1AA61AA8-1AAD1B5A-1B601C3B-1C3F1C7E1C7F1CD32010-20272030-20432045-20512053-205E207D207E208D208E2329232A2768-277527C527C627E6-27EF2983-299829D8-29DB29FC29FD2CF9-2CFC2CFE2CFF2E00-2E2E2E302E313001-30033008-30113014-301F3030303D30A030FBA4FEA4FFA60D-A60FA673A67EA6F2-A6F7A874-A877A8CEA8CFA8F8-A8FAA92EA92FA95FA9C1-A9CDA9DEA9DFAA5C-AA5FAADEAADFABEBFD3EFD3FFE10-FE19FE30-FE52FE54-FE61FE63FE68FE6AFE6BFF01-FF03FF05-FF0AFF0C-FF0FFF1AFF1BFF1FFF20FF3B-FF3DFF3FFF5BFF5DFF5F-FF65", - Pd: "002D058A05BE140018062010-20152E172E1A301C303030A0FE31FE32FE58FE63FF0D", - Ps: "0028005B007B0F3A0F3C169B201A201E2045207D208D23292768276A276C276E27702772277427C527E627E827EA27EC27EE2983298529872989298B298D298F299129932995299729D829DA29FC2E222E242E262E283008300A300C300E3010301430163018301A301DFD3EFE17FE35FE37FE39FE3BFE3DFE3FFE41FE43FE47FE59FE5BFE5DFF08FF3BFF5BFF5FFF62", - Pe: "0029005D007D0F3B0F3D169C2046207E208E232A2769276B276D276F27712773277527C627E727E927EB27ED27EF298429862988298A298C298E2990299229942996299829D929DB29FD2E232E252E272E293009300B300D300F3011301530173019301B301E301FFD3FFE18FE36FE38FE3AFE3CFE3EFE40FE42FE44FE48FE5AFE5CFE5EFF09FF3DFF5DFF60FF63", - Pi: "00AB2018201B201C201F20392E022E042E092E0C2E1C2E20", - Pf: "00BB2019201D203A2E032E052E0A2E0D2E1D2E21", - Pc: "005F203F20402054FE33FE34FE4D-FE4FFF3F", - Po: "0021-00230025-0027002A002C002E002F003A003B003F0040005C00A100B700BF037E0387055A-055F058905C005C305C605F305F40609060A060C060D061B061E061F066A-066D06D40700-070D07F7-07F90830-083E0964096509700DF40E4F0E5A0E5B0F04-0F120F850FD0-0FD4104A-104F10FB1361-1368166D166E16EB-16ED1735173617D4-17D617D8-17DA1800-18051807-180A1944194519DE19DF1A1E1A1F1AA0-1AA61AA8-1AAD1B5A-1B601C3B-1C3F1C7E1C7F1CD3201620172020-20272030-2038203B-203E2041-20432047-205120532055-205E2CF9-2CFC2CFE2CFF2E002E012E06-2E082E0B2E0E-2E162E182E192E1B2E1E2E1F2E2A-2E2E2E302E313001-3003303D30FBA4FEA4FFA60D-A60FA673A67EA6F2-A6F7A874-A877A8CEA8CFA8F8-A8FAA92EA92FA95FA9C1-A9CDA9DEA9DFAA5C-AA5FAADEAADFABEBFE10-FE16FE19FE30FE45FE46FE49-FE4CFE50-FE52FE54-FE57FE5F-FE61FE68FE6AFE6BFF01-FF03FF05-FF07FF0AFF0CFF0EFF0FFF1AFF1BFF1FFF20FF3CFF61FF64FF65", - S: "0024002B003C-003E005E0060007C007E00A2-00A900AC00AE-00B100B400B600B800D700F702C2-02C502D2-02DF02E5-02EB02ED02EF-02FF03750384038503F604820606-0608060B060E060F06E906FD06FE07F609F209F309FA09FB0AF10B700BF3-0BFA0C7F0CF10CF20D790E3F0F01-0F030F13-0F170F1A-0F1F0F340F360F380FBE-0FC50FC7-0FCC0FCE0FCF0FD5-0FD8109E109F13601390-139917DB194019E0-19FF1B61-1B6A1B74-1B7C1FBD1FBF-1FC11FCD-1FCF1FDD-1FDF1FED-1FEF1FFD1FFE20442052207A-207C208A-208C20A0-20B8210021012103-21062108210921142116-2118211E-2123212521272129212E213A213B2140-2144214A-214D214F2190-2328232B-23E82400-24262440-244A249C-24E92500-26CD26CF-26E126E326E8-26FF2701-27042706-2709270C-27272729-274B274D274F-27522756-275E2761-276727942798-27AF27B1-27BE27C0-27C427C7-27CA27CC27D0-27E527F0-29822999-29D729DC-29FB29FE-2B4C2B50-2B592CE5-2CEA2E80-2E992E9B-2EF32F00-2FD52FF0-2FFB300430123013302030363037303E303F309B309C319031913196-319F31C0-31E33200-321E322A-32503260-327F328A-32B032C0-32FE3300-33FF4DC0-4DFFA490-A4C6A700-A716A720A721A789A78AA828-A82BA836-A839AA77-AA79FB29FDFCFDFDFE62FE64-FE66FE69FF04FF0BFF1C-FF1EFF3EFF40FF5CFF5EFFE0-FFE6FFE8-FFEEFFFCFFFD", - Sm: "002B003C-003E007C007E00AC00B100D700F703F60606-060820442052207A-207C208A-208C2140-2144214B2190-2194219A219B21A021A321A621AE21CE21CF21D221D421F4-22FF2308-230B23202321237C239B-23B323DC-23E125B725C125F8-25FF266F27C0-27C427C7-27CA27CC27D0-27E527F0-27FF2900-29822999-29D729DC-29FB29FE-2AFF2B30-2B442B47-2B4CFB29FE62FE64-FE66FF0BFF1C-FF1EFF5CFF5EFFE2FFE9-FFEC", - Sc: "002400A2-00A5060B09F209F309FB0AF10BF90E3F17DB20A0-20B8A838FDFCFE69FF04FFE0FFE1FFE5FFE6", - Sk: "005E006000A800AF00B400B802C2-02C502D2-02DF02E5-02EB02ED02EF-02FF0375038403851FBD1FBF-1FC11FCD-1FCF1FDD-1FDF1FED-1FEF1FFD1FFE309B309CA700-A716A720A721A789A78AFF3EFF40FFE3", - So: "00A600A700A900AE00B000B60482060E060F06E906FD06FE07F609FA0B700BF3-0BF80BFA0C7F0CF10CF20D790F01-0F030F13-0F170F1A-0F1F0F340F360F380FBE-0FC50FC7-0FCC0FCE0FCF0FD5-0FD8109E109F13601390-1399194019E0-19FF1B61-1B6A1B74-1B7C210021012103-21062108210921142116-2118211E-2123212521272129212E213A213B214A214C214D214F2195-2199219C-219F21A121A221A421A521A7-21AD21AF-21CD21D021D121D321D5-21F32300-2307230C-231F2322-2328232B-237B237D-239A23B4-23DB23E2-23E82400-24262440-244A249C-24E92500-25B625B8-25C025C2-25F72600-266E2670-26CD26CF-26E126E326E8-26FF2701-27042706-2709270C-27272729-274B274D274F-27522756-275E2761-276727942798-27AF27B1-27BE2800-28FF2B00-2B2F2B452B462B50-2B592CE5-2CEA2E80-2E992E9B-2EF32F00-2FD52FF0-2FFB300430123013302030363037303E303F319031913196-319F31C0-31E33200-321E322A-32503260-327F328A-32B032C0-32FE3300-33FF4DC0-4DFFA490-A4C6A828-A82BA836A837A839AA77-AA79FDFDFFE4FFE8FFEDFFEEFFFCFFFD", - Z: "002000A01680180E2000-200A20282029202F205F3000", - Zs: "002000A01680180E2000-200A202F205F3000", - Zl: "2028", - Zp: "2029", - C: "0000-001F007F-009F00AD03780379037F-0383038B038D03A20526-05300557055805600588058B-059005C8-05CF05EB-05EF05F5-0605061C061D0620065F06DD070E070F074B074C07B2-07BF07FB-07FF082E082F083F-08FF093A093B094F095609570973-097809800984098D098E0991099209A909B109B3-09B509BA09BB09C509C609C909CA09CF-09D609D8-09DB09DE09E409E509FC-0A000A040A0B-0A0E0A110A120A290A310A340A370A3A0A3B0A3D0A43-0A460A490A4A0A4E-0A500A52-0A580A5D0A5F-0A650A76-0A800A840A8E0A920AA90AB10AB40ABA0ABB0AC60ACA0ACE0ACF0AD1-0ADF0AE40AE50AF00AF2-0B000B040B0D0B0E0B110B120B290B310B340B3A0B3B0B450B460B490B4A0B4E-0B550B58-0B5B0B5E0B640B650B72-0B810B840B8B-0B8D0B910B96-0B980B9B0B9D0BA0-0BA20BA5-0BA70BAB-0BAD0BBA-0BBD0BC3-0BC50BC90BCE0BCF0BD1-0BD60BD8-0BE50BFB-0C000C040C0D0C110C290C340C3A-0C3C0C450C490C4E-0C540C570C5A-0C5F0C640C650C70-0C770C800C810C840C8D0C910CA90CB40CBA0CBB0CC50CC90CCE-0CD40CD7-0CDD0CDF0CE40CE50CF00CF3-0D010D040D0D0D110D290D3A-0D3C0D450D490D4E-0D560D58-0D5F0D640D650D76-0D780D800D810D840D97-0D990DB20DBC0DBE0DBF0DC7-0DC90DCB-0DCE0DD50DD70DE0-0DF10DF5-0E000E3B-0E3E0E5C-0E800E830E850E860E890E8B0E8C0E8E-0E930E980EA00EA40EA60EA80EA90EAC0EBA0EBE0EBF0EC50EC70ECE0ECF0EDA0EDB0EDE-0EFF0F480F6D-0F700F8C-0F8F0F980FBD0FCD0FD9-0FFF10C6-10CF10FD-10FF1249124E124F12571259125E125F1289128E128F12B112B612B712BF12C112C612C712D7131113161317135B-135E137D-137F139A-139F13F5-13FF169D-169F16F1-16FF170D1715-171F1737-173F1754-175F176D17711774-177F17B417B517DE17DF17EA-17EF17FA-17FF180F181A-181F1878-187F18AB-18AF18F6-18FF191D-191F192C-192F193C-193F1941-1943196E196F1975-197F19AC-19AF19CA-19CF19DB-19DD1A1C1A1D1A5F1A7D1A7E1A8A-1A8F1A9A-1A9F1AAE-1AFF1B4C-1B4F1B7D-1B7F1BAB-1BAD1BBA-1BFF1C38-1C3A1C4A-1C4C1C80-1CCF1CF3-1CFF1DE7-1DFC1F161F171F1E1F1F1F461F471F4E1F4F1F581F5A1F5C1F5E1F7E1F7F1FB51FC51FD41FD51FDC1FF01FF11FF51FFF200B-200F202A-202E2060-206F20722073208F2095-209F20B9-20CF20F1-20FF218A-218F23E9-23FF2427-243F244B-245F26CE26E226E4-26E727002705270A270B2728274C274E2753-2755275F27602795-279727B027BF27CB27CD-27CF2B4D-2B4F2B5A-2BFF2C2F2C5F2CF2-2CF82D26-2D2F2D66-2D6E2D70-2D7F2D97-2D9F2DA72DAF2DB72DBF2DC72DCF2DD72DDF2E32-2E7F2E9A2EF4-2EFF2FD6-2FEF2FFC-2FFF3040309730983100-3104312E-3130318F31B8-31BF31E4-31EF321F32FF4DB6-4DBF9FCC-9FFFA48D-A48FA4C7-A4CFA62C-A63FA660A661A674-A67BA698-A69FA6F8-A6FFA78D-A7FAA82C-A82FA83A-A83FA878-A87FA8C5-A8CDA8DA-A8DFA8FC-A8FFA954-A95EA97D-A97FA9CEA9DA-A9DDA9E0-A9FFAA37-AA3FAA4EAA4FAA5AAA5BAA7C-AA7FAAC3-AADAAAE0-ABBFABEEABEFABFA-ABFFD7A4-D7AFD7C7-D7CAD7FC-F8FFFA2EFA2FFA6EFA6FFADA-FAFFFB07-FB12FB18-FB1CFB37FB3DFB3FFB42FB45FBB2-FBD2FD40-FD4FFD90FD91FDC8-FDEFFDFEFDFFFE1A-FE1FFE27-FE2FFE53FE67FE6C-FE6FFE75FEFD-FF00FFBF-FFC1FFC8FFC9FFD0FFD1FFD8FFD9FFDD-FFDFFFE7FFEF-FFFBFFFEFFFF", - Cc: "0000-001F007F-009F", - Cf: "00AD0600-060306DD070F17B417B5200B-200F202A-202E2060-2064206A-206FFEFFFFF9-FFFB", - Co: "E000-F8FF", - Cs: "D800-DFFF", - Cn: "03780379037F-0383038B038D03A20526-05300557055805600588058B-059005C8-05CF05EB-05EF05F5-05FF06040605061C061D0620065F070E074B074C07B2-07BF07FB-07FF082E082F083F-08FF093A093B094F095609570973-097809800984098D098E0991099209A909B109B3-09B509BA09BB09C509C609C909CA09CF-09D609D8-09DB09DE09E409E509FC-0A000A040A0B-0A0E0A110A120A290A310A340A370A3A0A3B0A3D0A43-0A460A490A4A0A4E-0A500A52-0A580A5D0A5F-0A650A76-0A800A840A8E0A920AA90AB10AB40ABA0ABB0AC60ACA0ACE0ACF0AD1-0ADF0AE40AE50AF00AF2-0B000B040B0D0B0E0B110B120B290B310B340B3A0B3B0B450B460B490B4A0B4E-0B550B58-0B5B0B5E0B640B650B72-0B810B840B8B-0B8D0B910B96-0B980B9B0B9D0BA0-0BA20BA5-0BA70BAB-0BAD0BBA-0BBD0BC3-0BC50BC90BCE0BCF0BD1-0BD60BD8-0BE50BFB-0C000C040C0D0C110C290C340C3A-0C3C0C450C490C4E-0C540C570C5A-0C5F0C640C650C70-0C770C800C810C840C8D0C910CA90CB40CBA0CBB0CC50CC90CCE-0CD40CD7-0CDD0CDF0CE40CE50CF00CF3-0D010D040D0D0D110D290D3A-0D3C0D450D490D4E-0D560D58-0D5F0D640D650D76-0D780D800D810D840D97-0D990DB20DBC0DBE0DBF0DC7-0DC90DCB-0DCE0DD50DD70DE0-0DF10DF5-0E000E3B-0E3E0E5C-0E800E830E850E860E890E8B0E8C0E8E-0E930E980EA00EA40EA60EA80EA90EAC0EBA0EBE0EBF0EC50EC70ECE0ECF0EDA0EDB0EDE-0EFF0F480F6D-0F700F8C-0F8F0F980FBD0FCD0FD9-0FFF10C6-10CF10FD-10FF1249124E124F12571259125E125F1289128E128F12B112B612B712BF12C112C612C712D7131113161317135B-135E137D-137F139A-139F13F5-13FF169D-169F16F1-16FF170D1715-171F1737-173F1754-175F176D17711774-177F17DE17DF17EA-17EF17FA-17FF180F181A-181F1878-187F18AB-18AF18F6-18FF191D-191F192C-192F193C-193F1941-1943196E196F1975-197F19AC-19AF19CA-19CF19DB-19DD1A1C1A1D1A5F1A7D1A7E1A8A-1A8F1A9A-1A9F1AAE-1AFF1B4C-1B4F1B7D-1B7F1BAB-1BAD1BBA-1BFF1C38-1C3A1C4A-1C4C1C80-1CCF1CF3-1CFF1DE7-1DFC1F161F171F1E1F1F1F461F471F4E1F4F1F581F5A1F5C1F5E1F7E1F7F1FB51FC51FD41FD51FDC1FF01FF11FF51FFF2065-206920722073208F2095-209F20B9-20CF20F1-20FF218A-218F23E9-23FF2427-243F244B-245F26CE26E226E4-26E727002705270A270B2728274C274E2753-2755275F27602795-279727B027BF27CB27CD-27CF2B4D-2B4F2B5A-2BFF2C2F2C5F2CF2-2CF82D26-2D2F2D66-2D6E2D70-2D7F2D97-2D9F2DA72DAF2DB72DBF2DC72DCF2DD72DDF2E32-2E7F2E9A2EF4-2EFF2FD6-2FEF2FFC-2FFF3040309730983100-3104312E-3130318F31B8-31BF31E4-31EF321F32FF4DB6-4DBF9FCC-9FFFA48D-A48FA4C7-A4CFA62C-A63FA660A661A674-A67BA698-A69FA6F8-A6FFA78D-A7FAA82C-A82FA83A-A83FA878-A87FA8C5-A8CDA8DA-A8DFA8FC-A8FFA954-A95EA97D-A97FA9CEA9DA-A9DDA9E0-A9FFAA37-AA3FAA4EAA4FAA5AAA5BAA7C-AA7FAAC3-AADAAAE0-ABBFABEEABEFABFA-ABFFD7A4-D7AFD7C7-D7CAD7FC-D7FFFA2EFA2FFA6EFA6FFADA-FAFFFB07-FB12FB18-FB1CFB37FB3DFB3FFB42FB45FBB2-FBD2FD40-FD4FFD90FD91FDC8-FDEFFDFEFDFFFE1A-FE1FFE27-FE2FFE53FE67FE6C-FE6FFE75FEFDFEFEFF00FFBF-FFC1FFC8FFC9FFD0FFD1FFD8FFD9FFDD-FFDFFFE7FFEF-FFF8FFFEFFFF" -}); - -function addUnicodePackage (pack) { - var codePoint = /\w{4}/g; - for (var name in pack) - exports.packages[name] = pack[name].replace(codePoint, "\\u$&"); -}; - -}); - -ace.define('ace/token_iterator', ['require', 'exports', 'module' ], function(require, exports, module) { -var TokenIterator = function(session, initialRow, initialColumn) { - this.$session = session; - this.$row = initialRow; - this.$rowTokens = session.getTokens(initialRow); - - var token = session.getTokenAt(initialRow, initialColumn); - this.$tokenIndex = token ? token.index : -1; -}; - -(function() { - this.stepBackward = function() { - this.$tokenIndex -= 1; - - while (this.$tokenIndex < 0) { - this.$row -= 1; - if (this.$row < 0) { - this.$row = 0; - return null; - } - - this.$rowTokens = this.$session.getTokens(this.$row); - this.$tokenIndex = this.$rowTokens.length - 1; - } - - return this.$rowTokens[this.$tokenIndex]; - }; - this.stepForward = function() { - this.$tokenIndex += 1; - var rowCount; - while (this.$tokenIndex >= this.$rowTokens.length) { - this.$row += 1; - if (!rowCount) - rowCount = this.$session.getLength(); - if (this.$row >= rowCount) { - this.$row = rowCount - 1; - return null; - } - - this.$rowTokens = this.$session.getTokens(this.$row); - this.$tokenIndex = 0; - } - - return this.$rowTokens[this.$tokenIndex]; - }; - this.getCurrentToken = function () { - return this.$rowTokens[this.$tokenIndex]; - }; - this.getCurrentTokenRow = function () { - return this.$row; - }; - this.getCurrentTokenColumn = function() { - var rowTokens = this.$rowTokens; - var tokenIndex = this.$tokenIndex; - var column = rowTokens[tokenIndex].start; - if (column !== undefined) - return column; - - column = 0; - while (tokenIndex > 0) { - tokenIndex -= 1; - column += rowTokens[tokenIndex].value.length; - } - - return column; - }; - -}).call(TokenIterator.prototype); - -exports.TokenIterator = TokenIterator; -}); - -ace.define('ace/document', ['require', 'exports', 'module' , 'ace/lib/oop', 'ace/lib/event_emitter', 'ace/range', 'ace/anchor'], function(require, exports, module) { - - -var oop = require("./lib/oop"); -var EventEmitter = require("./lib/event_emitter").EventEmitter; -var Range = require("./range").Range; -var Anchor = require("./anchor").Anchor; - -var Document = function(text) { - this.$lines = []; - if (text.length == 0) { - this.$lines = [""]; - } else if (Array.isArray(text)) { - this._insertLines(0, text); - } else { - this.insert({row: 0, column:0}, text); - } -}; - -(function() { - - oop.implement(this, EventEmitter); - this.setValue = function(text) { - var len = this.getLength(); - this.remove(new Range(0, 0, len, this.getLine(len-1).length)); - this.insert({row: 0, column:0}, text); - }; - this.getValue = function() { - return this.getAllLines().join(this.getNewLineCharacter()); - }; - this.createAnchor = function(row, column) { - return new Anchor(this, row, column); - }; - if ("aaa".split(/a/).length == 0) - this.$split = function(text) { - return text.replace(/\r\n|\r/g, "\n").split("\n"); - } - else - this.$split = function(text) { - return text.split(/\r\n|\r|\n/); - }; - - - this.$detectNewLine = function(text) { - var match = text.match(/^.*?(\r\n|\r|\n)/m); - this.$autoNewLine = match ? match[1] : "\n"; - }; - this.getNewLineCharacter = function() { - switch (this.$newLineMode) { - case "windows": - return "\r\n"; - case "unix": - return "\n"; - default: - return this.$autoNewLine; - } - }; - - this.$autoNewLine = "\n"; - this.$newLineMode = "auto"; - this.setNewLineMode = function(newLineMode) { - if (this.$newLineMode === newLineMode) - return; - - this.$newLineMode = newLineMode; - }; - this.getNewLineMode = function() { - return this.$newLineMode; - }; - this.isNewLine = function(text) { - return (text == "\r\n" || text == "\r" || text == "\n"); - }; - this.getLine = function(row) { - return this.$lines[row] || ""; - }; - this.getLines = function(firstRow, lastRow) { - return this.$lines.slice(firstRow, lastRow + 1); - }; - this.getAllLines = function() { - return this.getLines(0, this.getLength()); - }; - this.getLength = function() { - return this.$lines.length; - }; - this.getTextRange = function(range) { - if (range.start.row == range.end.row) { - return this.getLine(range.start.row) - .substring(range.start.column, range.end.column); - } - var lines = this.getLines(range.start.row, range.end.row); - lines[0] = (lines[0] || "").substring(range.start.column); - var l = lines.length - 1; - if (range.end.row - range.start.row == l) - lines[l] = lines[l].substring(0, range.end.column); - return lines.join(this.getNewLineCharacter()); - }; - - this.$clipPosition = function(position) { - var length = this.getLength(); - if (position.row >= length) { - position.row = Math.max(0, length - 1); - position.column = this.getLine(length-1).length; - } else if (position.row < 0) - position.row = 0; - return position; - }; - this.insert = function(position, text) { - if (!text || text.length === 0) - return position; - - position = this.$clipPosition(position); - if (this.getLength() <= 1) - this.$detectNewLine(text); - - var lines = this.$split(text); - var firstLine = lines.splice(0, 1)[0]; - var lastLine = lines.length == 0 ? null : lines.splice(lines.length - 1, 1)[0]; - - position = this.insertInLine(position, firstLine); - if (lastLine !== null) { - position = this.insertNewLine(position); // terminate first line - position = this._insertLines(position.row, lines); - position = this.insertInLine(position, lastLine || ""); - } - return position; - }; - this.insertLines = function(row, lines) { - if (row >= this.getLength()) - return this.insert({row: row, column: 0}, "\n" + lines.join("\n")); - return this._insertLines(Math.max(row, 0), lines); - }; - this._insertLines = function(row, lines) { - if (lines.length == 0) - return {row: row, column: 0}; - if (lines.length > 0xFFFF) { - var end = this._insertLines(row, lines.slice(0xFFFF)); - lines = lines.slice(0, 0xFFFF); - } - - var args = [row, 0]; - args.push.apply(args, lines); - this.$lines.splice.apply(this.$lines, args); - - var range = new Range(row, 0, row + lines.length, 0); - var delta = { - action: "insertLines", - range: range, - lines: lines - }; - this._emit("change", { data: delta }); - return end || range.end; - }; - this.insertNewLine = function(position) { - position = this.$clipPosition(position); - var line = this.$lines[position.row] || ""; - - this.$lines[position.row] = line.substring(0, position.column); - this.$lines.splice(position.row + 1, 0, line.substring(position.column, line.length)); - - var end = { - row : position.row + 1, - column : 0 - }; - - var delta = { - action: "insertText", - range: Range.fromPoints(position, end), - text: this.getNewLineCharacter() - }; - this._emit("change", { data: delta }); - - return end; - }; - this.insertInLine = function(position, text) { - if (text.length == 0) - return position; - - var line = this.$lines[position.row] || ""; - - this.$lines[position.row] = line.substring(0, position.column) + text - + line.substring(position.column); - - var end = { - row : position.row, - column : position.column + text.length - }; - - var delta = { - action: "insertText", - range: Range.fromPoints(position, end), - text: text - }; - this._emit("change", { data: delta }); - - return end; - }; - this.remove = function(range) { - if (!range instanceof Range) - range = Range.fromPoints(range.start, range.end); - range.start = this.$clipPosition(range.start); - range.end = this.$clipPosition(range.end); - - if (range.isEmpty()) - return range.start; - - var firstRow = range.start.row; - var lastRow = range.end.row; - - if (range.isMultiLine()) { - var firstFullRow = range.start.column == 0 ? firstRow : firstRow + 1; - var lastFullRow = lastRow - 1; - - if (range.end.column > 0) - this.removeInLine(lastRow, 0, range.end.column); - - if (lastFullRow >= firstFullRow) - this._removeLines(firstFullRow, lastFullRow); - - if (firstFullRow != firstRow) { - this.removeInLine(firstRow, range.start.column, this.getLine(firstRow).length); - this.removeNewLine(range.start.row); - } - } - else { - this.removeInLine(firstRow, range.start.column, range.end.column); - } - return range.start; - }; - this.removeInLine = function(row, startColumn, endColumn) { - if (startColumn == endColumn) - return; - - var range = new Range(row, startColumn, row, endColumn); - var line = this.getLine(row); - var removed = line.substring(startColumn, endColumn); - var newLine = line.substring(0, startColumn) + line.substring(endColumn, line.length); - this.$lines.splice(row, 1, newLine); - - var delta = { - action: "removeText", - range: range, - text: removed - }; - this._emit("change", { data: delta }); - return range.start; - }; - this.removeLines = function(firstRow, lastRow) { - if (firstRow < 0 || lastRow >= this.getLength()) - return this.remove(new Range(firstRow, 0, lastRow + 1, 0)); - return this._removeLines(firstRow, lastRow); - }; - - this._removeLines = function(firstRow, lastRow) { - var range = new Range(firstRow, 0, lastRow + 1, 0); - var removed = this.$lines.splice(firstRow, lastRow - firstRow + 1); - - var delta = { - action: "removeLines", - range: range, - nl: this.getNewLineCharacter(), - lines: removed - }; - this._emit("change", { data: delta }); - return removed; - }; - this.removeNewLine = function(row) { - var firstLine = this.getLine(row); - var secondLine = this.getLine(row+1); - - var range = new Range(row, firstLine.length, row+1, 0); - var line = firstLine + secondLine; - - this.$lines.splice(row, 2, line); - - var delta = { - action: "removeText", - range: range, - text: this.getNewLineCharacter() - }; - this._emit("change", { data: delta }); - }; - this.replace = function(range, text) { - if (!range instanceof Range) - range = Range.fromPoints(range.start, range.end); - if (text.length == 0 && range.isEmpty()) - return range.start; - if (text == this.getTextRange(range)) - return range.end; - - this.remove(range); - if (text) { - var end = this.insert(range.start, text); - } - else { - end = range.start; - } - - return end; - }; - this.applyDeltas = function(deltas) { - for (var i=0; i=0; i--) { - var delta = deltas[i]; - - var range = Range.fromPoints(delta.range.start, delta.range.end); - - if (delta.action == "insertLines") - this._removeLines(range.start.row, range.end.row - 1); - else if (delta.action == "insertText") - this.remove(range); - else if (delta.action == "removeLines") - this._insertLines(range.start.row, delta.lines); - else if (delta.action == "removeText") - this.insert(range.start, delta.text); - } - }; - this.indexToPosition = function(index, startRow) { - var lines = this.$lines || this.getAllLines(); - var newlineLength = this.getNewLineCharacter().length; - for (var i = startRow || 0, l = lines.length; i < l; i++) { - index -= lines[i].length + newlineLength; - if (index < 0) - return {row: i, column: index + lines[i].length + newlineLength}; - } - return {row: l-1, column: lines[l-1].length}; - }; - this.positionToIndex = function(pos, startRow) { - var lines = this.$lines || this.getAllLines(); - var newlineLength = this.getNewLineCharacter().length; - var index = 0; - var row = Math.min(pos.row, lines.length); - for (var i = startRow || 0; i < row; ++i) - index += lines[i].length + newlineLength; - - return index + pos.column; - }; - -}).call(Document.prototype); - -exports.Document = Document; -}); - -ace.define('ace/anchor', ['require', 'exports', 'module' , 'ace/lib/oop', 'ace/lib/event_emitter'], function(require, exports, module) { - - -var oop = require("./lib/oop"); -var EventEmitter = require("./lib/event_emitter").EventEmitter; - -var Anchor = exports.Anchor = function(doc, row, column) { - this.$onChange = this.onChange.bind(this); - this.attach(doc); - - if (typeof column == "undefined") - this.setPosition(row.row, row.column); - else - this.setPosition(row, column); -}; - -(function() { - - oop.implement(this, EventEmitter); - this.getPosition = function() { - return this.$clipPositionToDocument(this.row, this.column); - }; - this.getDocument = function() { - return this.document; - }; - this.$insertRight = false; - this.onChange = function(e) { - var delta = e.data; - var range = delta.range; - - if (range.start.row == range.end.row && range.start.row != this.row) - return; - - if (range.start.row > this.row) - return; - - if (range.start.row == this.row && range.start.column > this.column) - return; - - var row = this.row; - var column = this.column; - var start = range.start; - var end = range.end; - - if (delta.action === "insertText") { - if (start.row === row && start.column <= column) { - if (start.column === column && this.$insertRight) { - } else if (start.row === end.row) { - column += end.column - start.column; - } else { - column -= start.column; - row += end.row - start.row; - } - } else if (start.row !== end.row && start.row < row) { - row += end.row - start.row; - } - } else if (delta.action === "insertLines") { - if (start.row <= row) { - row += end.row - start.row; - } - } else if (delta.action === "removeText") { - if (start.row === row && start.column < column) { - if (end.column >= column) - column = start.column; - else - column = Math.max(0, column - (end.column - start.column)); - - } else if (start.row !== end.row && start.row < row) { - if (end.row === row) - column = Math.max(0, column - end.column) + start.column; - row -= (end.row - start.row); - } else if (end.row === row) { - row -= end.row - start.row; - column = Math.max(0, column - end.column) + start.column; - } - } else if (delta.action == "removeLines") { - if (start.row <= row) { - if (end.row <= row) - row -= end.row - start.row; - else { - row = start.row; - column = 0; - } - } - } - - this.setPosition(row, column, true); - }; - this.setPosition = function(row, column, noClip) { - var pos; - if (noClip) { - pos = { - row: row, - column: column - }; - } else { - pos = this.$clipPositionToDocument(row, column); - } - - if (this.row == pos.row && this.column == pos.column) - return; - - var old = { - row: this.row, - column: this.column - }; - - this.row = pos.row; - this.column = pos.column; - this._emit("change", { - old: old, - value: pos - }); - }; - this.detach = function() { - this.document.removeEventListener("change", this.$onChange); - }; - this.attach = function(doc) { - this.document = doc || this.document; - this.document.on("change", this.$onChange); - }; - this.$clipPositionToDocument = function(row, column) { - var pos = {}; - - if (row >= this.document.getLength()) { - pos.row = Math.max(0, this.document.getLength() - 1); - pos.column = this.document.getLine(pos.row).length; - } - else if (row < 0) { - pos.row = 0; - pos.column = 0; - } - else { - pos.row = row; - pos.column = Math.min(this.document.getLine(pos.row).length, Math.max(0, column)); - } - - if (column < 0) - pos.column = 0; - - return pos; - }; - -}).call(Anchor.prototype); - -}); - -ace.define('ace/background_tokenizer', ['require', 'exports', 'module' , 'ace/lib/oop', 'ace/lib/event_emitter'], function(require, exports, module) { - - -var oop = require("./lib/oop"); -var EventEmitter = require("./lib/event_emitter").EventEmitter; - -var BackgroundTokenizer = function(tokenizer, editor) { - this.running = false; - this.lines = []; - this.states = []; - this.currentLine = 0; - this.tokenizer = tokenizer; - - var self = this; - - this.$worker = function() { - if (!self.running) { return; } - - var workerStart = new Date(); - var currentLine = self.currentLine; - var endLine = -1; - var doc = self.doc; - - while (self.lines[currentLine]) - currentLine++; - - var startLine = currentLine; - - var len = doc.getLength(); - var processedLines = 0; - self.running = false; - while (currentLine < len) { - self.$tokenizeRow(currentLine); - endLine = currentLine; - do { - currentLine++; - } while (self.lines[currentLine]); - processedLines ++; - if ((processedLines % 5 == 0) && (new Date() - workerStart) > 20) { - self.running = setTimeout(self.$worker, 20); - self.currentLine = currentLine; - return; - } - } - self.currentLine = currentLine; - - if (startLine <= endLine) - self.fireUpdateEvent(startLine, endLine); - }; -}; - -(function(){ - - oop.implement(this, EventEmitter); - this.setTokenizer = function(tokenizer) { - this.tokenizer = tokenizer; - this.lines = []; - this.states = []; - - this.start(0); - }; - this.setDocument = function(doc) { - this.doc = doc; - this.lines = []; - this.states = []; - - this.stop(); - }; - this.fireUpdateEvent = function(firstRow, lastRow) { - var data = { - first: firstRow, - last: lastRow - }; - this._emit("update", {data: data}); - }; - this.start = function(startRow) { - this.currentLine = Math.min(startRow || 0, this.currentLine, this.doc.getLength()); - this.lines.splice(this.currentLine, this.lines.length); - this.states.splice(this.currentLine, this.states.length); - - this.stop(); - this.running = setTimeout(this.$worker, 700); - }; - - this.scheduleStart = function() { - if (!this.running) - this.running = setTimeout(this.$worker, 700); - } - - this.$updateOnChange = function(delta) { - var range = delta.range; - var startRow = range.start.row; - var len = range.end.row - startRow; - - if (len === 0) { - this.lines[startRow] = null; - } else if (delta.action == "removeText" || delta.action == "removeLines") { - this.lines.splice(startRow, len + 1, null); - this.states.splice(startRow, len + 1, null); - } else { - var args = Array(len + 1); - args.unshift(startRow, 1); - this.lines.splice.apply(this.lines, args); - this.states.splice.apply(this.states, args); - } - - this.currentLine = Math.min(startRow, this.currentLine, this.doc.getLength()); - - this.stop(); - }; - this.stop = function() { - if (this.running) - clearTimeout(this.running); - this.running = false; - }; - this.getTokens = function(row) { - return this.lines[row] || this.$tokenizeRow(row); - }; - this.getState = function(row) { - if (this.currentLine == row) - this.$tokenizeRow(row); - return this.states[row] || "start"; - }; - - this.$tokenizeRow = function(row) { - var line = this.doc.getLine(row); - var state = this.states[row - 1]; - - var data = this.tokenizer.getLineTokens(line, state, row); - - if (this.states[row] + "" !== data.state + "") { - this.states[row] = data.state; - this.lines[row + 1] = null; - if (this.currentLine > row + 1) - this.currentLine = row + 1; - } else if (this.currentLine == row) { - this.currentLine = row + 1; - } - - return this.lines[row] = data.tokens; - }; - -}).call(BackgroundTokenizer.prototype); - -exports.BackgroundTokenizer = BackgroundTokenizer; -}); - -ace.define('ace/search_highlight', ['require', 'exports', 'module' , 'ace/lib/lang', 'ace/lib/oop', 'ace/range'], function(require, exports, module) { - - -var lang = require("./lib/lang"); -var oop = require("./lib/oop"); -var Range = require("./range").Range; - -var SearchHighlight = function(regExp, clazz, type) { - this.setRegexp(regExp); - this.clazz = clazz; - this.type = type || "text"; -}; - -(function() { - this.MAX_RANGES = 500; - - this.setRegexp = function(regExp) { - if (this.regExp+"" == regExp+"") - return; - this.regExp = regExp; - this.cache = []; - }; - - this.update = function(html, markerLayer, session, config) { - if (!this.regExp) - return; - var start = config.firstRow, end = config.lastRow; - - for (var i = start; i <= end; i++) { - var ranges = this.cache[i]; - if (ranges == null) { - ranges = lang.getMatchOffsets(session.getLine(i), this.regExp); - if (ranges.length > this.MAX_RANGES) - ranges = ranges.slice(0, this.MAX_RANGES); - ranges = ranges.map(function(match) { - return new Range(i, match.offset, i, match.offset + match.length); - }); - this.cache[i] = ranges.length ? ranges : ""; - } - - for (var j = ranges.length; j --; ) { - markerLayer.drawSingleLineMarker( - html, ranges[j].toScreenRange(session), this.clazz, config); - } - } - }; - -}).call(SearchHighlight.prototype); - -exports.SearchHighlight = SearchHighlight; -}); - -ace.define('ace/edit_session/folding', ['require', 'exports', 'module' , 'ace/range', 'ace/edit_session/fold_line', 'ace/edit_session/fold', 'ace/token_iterator'], function(require, exports, module) { - - -var Range = require("../range").Range; -var FoldLine = require("./fold_line").FoldLine; -var Fold = require("./fold").Fold; -var TokenIterator = require("../token_iterator").TokenIterator; - -function Folding() { - this.getFoldAt = function(row, column, side) { - var foldLine = this.getFoldLine(row); - if (!foldLine) - return null; - - var folds = foldLine.folds; - for (var i = 0; i < folds.length; i++) { - var fold = folds[i]; - if (fold.range.contains(row, column)) { - if (side == 1 && fold.range.isEnd(row, column)) { - continue; - } else if (side == -1 && fold.range.isStart(row, column)) { - continue; - } - return fold; - } - } - }; - this.getFoldsInRange = function(range) { - var start = range.start; - var end = range.end; - var foldLines = this.$foldData; - var foundFolds = []; - - start.column += 1; - end.column -= 1; - - for (var i = 0; i < foldLines.length; i++) { - var cmp = foldLines[i].range.compareRange(range); - if (cmp == 2) { - continue; - } - else if (cmp == -2) { - break; - } - - var folds = foldLines[i].folds; - for (var j = 0; j < folds.length; j++) { - var fold = folds[j]; - cmp = fold.range.compareRange(range); - if (cmp == -2) { - break; - } else if (cmp == 2) { - continue; - } else - if (cmp == 42) { - break; - } - foundFolds.push(fold); - } - } - start.column -= 1; - end.column += 1; - - return foundFolds; - }; - - this.getFoldsInRangeList = function(ranges) { - if (Array.isArray(ranges)) { - var folds = []; - ranges.forEach(function(range) { - folds = folds.concat(this.getFoldsInRange(range)); - }, this); - } else { - var folds = this.getFoldsInRange(ranges); - } - return folds; - } - this.getAllFolds = function() { - var folds = []; - var foldLines = this.$foldData; - - for (var i = 0; i < foldLines.length; i++) - for (var j = 0; j < foldLines[i].folds.length; j++) - folds.push(foldLines[i].folds[j]); - - return folds; - }; - this.getFoldStringAt = function(row, column, trim, foldLine) { - foldLine = foldLine || this.getFoldLine(row); - if (!foldLine) - return null; - - var lastFold = { - end: { column: 0 } - }; - var str, fold; - for (var i = 0; i < foldLine.folds.length; i++) { - fold = foldLine.folds[i]; - var cmp = fold.range.compareEnd(row, column); - if (cmp == -1) { - str = this - .getLine(fold.start.row) - .substring(lastFold.end.column, fold.start.column); - break; - } - else if (cmp === 0) { - return null; - } - lastFold = fold; - } - if (!str) - str = this.getLine(fold.start.row).substring(lastFold.end.column); - - if (trim == -1) - return str.substring(0, column - lastFold.end.column); - else if (trim == 1) - return str.substring(column - lastFold.end.column); - else - return str; - }; - - this.getFoldLine = function(docRow, startFoldLine) { - var foldData = this.$foldData; - var i = 0; - if (startFoldLine) - i = foldData.indexOf(startFoldLine); - if (i == -1) - i = 0; - for (i; i < foldData.length; i++) { - var foldLine = foldData[i]; - if (foldLine.start.row <= docRow && foldLine.end.row >= docRow) { - return foldLine; - } else if (foldLine.end.row > docRow) { - return null; - } - } - return null; - }; - this.getNextFoldLine = function(docRow, startFoldLine) { - var foldData = this.$foldData; - var i = 0; - if (startFoldLine) - i = foldData.indexOf(startFoldLine); - if (i == -1) - i = 0; - for (i; i < foldData.length; i++) { - var foldLine = foldData[i]; - if (foldLine.end.row >= docRow) { - return foldLine; - } - } - return null; - }; - - this.getFoldedRowCount = function(first, last) { - var foldData = this.$foldData, rowCount = last-first+1; - for (var i = 0; i < foldData.length; i++) { - var foldLine = foldData[i], - end = foldLine.end.row, - start = foldLine.start.row; - if (end >= last) { - if(start < last) { - if(start >= first) - rowCount -= last-start; - else - rowCount = 0;//in one fold - } - break; - } else if(end >= first){ - if (start >= first) //fold inside range - rowCount -= end-start; - else - rowCount -= end-first+1; - } - } - return rowCount; - }; - - this.$addFoldLine = function(foldLine) { - this.$foldData.push(foldLine); - this.$foldData.sort(function(a, b) { - return a.start.row - b.start.row; - }); - return foldLine; - }; - this.addFold = function(placeholder, range) { - var foldData = this.$foldData; - var added = false; - var fold; - - if (placeholder instanceof Fold) - fold = placeholder; - else { - fold = new Fold(range, placeholder); - fold.collapseChildren = range.collapseChildren; - } - this.$clipRangeToDocument(fold.range); - - var startRow = fold.start.row; - var startColumn = fold.start.column; - var endRow = fold.end.row; - var endColumn = fold.end.column; - if (!(startRow < endRow || - startRow == endRow && startColumn <= endColumn - 2)) - throw new Error("The range has to be at least 2 characters width"); - - var startFold = this.getFoldAt(startRow, startColumn, 1); - var endFold = this.getFoldAt(endRow, endColumn, -1); - if (startFold && endFold == startFold) - return startFold.addSubFold(fold); - - if ( - (startFold && !startFold.range.isStart(startRow, startColumn)) - || (endFold && !endFold.range.isEnd(endRow, endColumn)) - ) { - throw new Error("A fold can't intersect already existing fold" + fold.range + startFold.range); - } - var folds = this.getFoldsInRange(fold.range); - if (folds.length > 0) { - this.removeFolds(folds); - folds.forEach(function(subFold) { - fold.addSubFold(subFold); - }); - } - - for (var i = 0; i < foldData.length; i++) { - var foldLine = foldData[i]; - if (endRow == foldLine.start.row) { - foldLine.addFold(fold); - added = true; - break; - } else if (startRow == foldLine.end.row) { - foldLine.addFold(fold); - added = true; - if (!fold.sameRow) { - var foldLineNext = foldData[i + 1]; - if (foldLineNext && foldLineNext.start.row == endRow) { - foldLine.merge(foldLineNext); - break; - } - } - break; - } else if (endRow <= foldLine.start.row) { - break; - } - } - - if (!added) - foldLine = this.$addFoldLine(new FoldLine(this.$foldData, fold)); - - if (this.$useWrapMode) - this.$updateWrapData(foldLine.start.row, foldLine.start.row); - else - this.$updateRowLengthCache(foldLine.start.row, foldLine.start.row); - this.$modified = true; - this._emit("changeFold", { data: fold, action: "add" }); - - return fold; - }; - - this.addFolds = function(folds) { - folds.forEach(function(fold) { - this.addFold(fold); - }, this); - }; - - this.removeFold = function(fold) { - var foldLine = fold.foldLine; - var startRow = foldLine.start.row; - var endRow = foldLine.end.row; - - var foldLines = this.$foldData; - var folds = foldLine.folds; - if (folds.length == 1) { - foldLines.splice(foldLines.indexOf(foldLine), 1); - } else - if (foldLine.range.isEnd(fold.end.row, fold.end.column)) { - folds.pop(); - foldLine.end.row = folds[folds.length - 1].end.row; - foldLine.end.column = folds[folds.length - 1].end.column; - } else - if (foldLine.range.isStart(fold.start.row, fold.start.column)) { - folds.shift(); - foldLine.start.row = folds[0].start.row; - foldLine.start.column = folds[0].start.column; - } else - if (fold.sameRow) { - folds.splice(folds.indexOf(fold), 1); - } else - { - var newFoldLine = foldLine.split(fold.start.row, fold.start.column); - folds = newFoldLine.folds; - folds.shift(); - newFoldLine.start.row = folds[0].start.row; - newFoldLine.start.column = folds[0].start.column; - } - - if (!this.$updating) { - if (this.$useWrapMode) - this.$updateWrapData(startRow, endRow); - else - this.$updateRowLengthCache(startRow, endRow); - } - this.$modified = true; - this._emit("changeFold", { data: fold, action: "remove" }); - }; - - this.removeFolds = function(folds) { - var cloneFolds = []; - for (var i = 0; i < folds.length; i++) { - cloneFolds.push(folds[i]); - } - - cloneFolds.forEach(function(fold) { - this.removeFold(fold); - }, this); - this.$modified = true; - }; - - this.expandFold = function(fold) { - this.removeFold(fold); - fold.subFolds.forEach(function(subFold) { - fold.restoreRange(subFold); - this.addFold(subFold); - }, this); - if (fold.collapseChildren > 0) { - this.foldAll(fold.start.row+1, fold.end.row, fold.collapseChildren-1); - } - fold.subFolds = []; - }; - - this.expandFolds = function(folds) { - folds.forEach(function(fold) { - this.expandFold(fold); - }, this); - }; - - this.unfold = function(location, expandInner) { - var range, folds; - if (location == null) { - range = new Range(0, 0, this.getLength(), 0); - expandInner = true; - } else if (typeof location == "number") - range = new Range(location, 0, location, this.getLine(location).length); - else if ("row" in location) - range = Range.fromPoints(location, location); - else - range = location; - - folds = this.getFoldsInRangeList(range); - if (expandInner) { - this.removeFolds(folds); - } else { - var subFolds = folds; - while (subFolds.length) { - this.expandFolds(subFolds); - subFolds = this.getFoldsInRangeList(range); - } - } - if (folds.length) - return folds; - }; - this.isRowFolded = function(docRow, startFoldRow) { - return !!this.getFoldLine(docRow, startFoldRow); - }; - - this.getRowFoldEnd = function(docRow, startFoldRow) { - var foldLine = this.getFoldLine(docRow, startFoldRow); - return foldLine ? foldLine.end.row : docRow; - }; - - this.getRowFoldStart = function(docRow, startFoldRow) { - var foldLine = this.getFoldLine(docRow, startFoldRow); - return foldLine ? foldLine.start.row : docRow; - }; - - this.getFoldDisplayLine = function(foldLine, endRow, endColumn, startRow, startColumn) { - if (startRow == null) { - startRow = foldLine.start.row; - startColumn = 0; - } - - if (endRow == null) { - endRow = foldLine.end.row; - endColumn = this.getLine(endRow).length; - } - var doc = this.doc; - var textLine = ""; - - foldLine.walk(function(placeholder, row, column, lastColumn) { - if (row < startRow) - return; - if (row == startRow) { - if (column < startColumn) - return; - lastColumn = Math.max(startColumn, lastColumn); - } - - if (placeholder != null) { - textLine += placeholder; - } else { - textLine += doc.getLine(row).substring(lastColumn, column); - } - }, endRow, endColumn); - return textLine; - }; - - this.getDisplayLine = function(row, endColumn, startRow, startColumn) { - var foldLine = this.getFoldLine(row); - - if (!foldLine) { - var line; - line = this.doc.getLine(row); - return line.substring(startColumn || 0, endColumn || line.length); - } else { - return this.getFoldDisplayLine( - foldLine, row, endColumn, startRow, startColumn); - } - }; - - this.$cloneFoldData = function() { - var fd = []; - fd = this.$foldData.map(function(foldLine) { - var folds = foldLine.folds.map(function(fold) { - return fold.clone(); - }); - return new FoldLine(fd, folds); - }); - - return fd; - }; - - this.toggleFold = function(tryToUnfold) { - var selection = this.selection; - var range = selection.getRange(); - var fold; - var bracketPos; - - if (range.isEmpty()) { - var cursor = range.start; - fold = this.getFoldAt(cursor.row, cursor.column); - - if (fold) { - this.expandFold(fold); - return; - } else if (bracketPos = this.findMatchingBracket(cursor)) { - if (range.comparePoint(bracketPos) == 1) { - range.end = bracketPos; - } else { - range.start = bracketPos; - range.start.column++; - range.end.column--; - } - } else if (bracketPos = this.findMatchingBracket({row: cursor.row, column: cursor.column + 1})) { - if (range.comparePoint(bracketPos) == 1) - range.end = bracketPos; - else - range.start = bracketPos; - - range.start.column++; - } else { - range = this.getCommentFoldRange(cursor.row, cursor.column) || range; - } - } else { - var folds = this.getFoldsInRange(range); - if (tryToUnfold && folds.length) { - this.expandFolds(folds); - return; - } else if (folds.length == 1 ) { - fold = folds[0]; - } - } - - if (!fold) - fold = this.getFoldAt(range.start.row, range.start.column); - - if (fold && fold.range.toString() == range.toString()) { - this.expandFold(fold); - return; - } - - var placeholder = "..."; - if (!range.isMultiLine()) { - placeholder = this.getTextRange(range); - if(placeholder.length < 4) - return; - placeholder = placeholder.trim().substring(0, 2) + ".."; - } - - this.addFold(placeholder, range); - }; - - this.getCommentFoldRange = function(row, column, dir) { - var iterator = new TokenIterator(this, row, column); - var token = iterator.getCurrentToken(); - if (token && /^comment|string/.test(token.type)) { - var range = new Range(); - var re = new RegExp(token.type.replace(/\..*/, "\\.")); - if (dir != 1) { - do { - token = iterator.stepBackward(); - } while(token && re.test(token.type)); - iterator.stepForward(); - } - - range.start.row = iterator.getCurrentTokenRow(); - range.start.column = iterator.getCurrentTokenColumn() + 2; - - iterator = new TokenIterator(this, row, column); - - if (dir != -1) { - do { - token = iterator.stepForward(); - } while(token && re.test(token.type)); - token = iterator.stepBackward(); - } else - token = iterator.getCurrentToken(); - - range.end.row = iterator.getCurrentTokenRow(); - range.end.column = iterator.getCurrentTokenColumn() + token.value.length - 2; - return range; - } - }; - - this.foldAll = function(startRow, endRow, depth) { - if (depth == undefined) - depth = 100000; // JSON.stringify doesn't hanle Infinity - var foldWidgets = this.foldWidgets; - if (!foldWidgets) - return; // mode doesn't support folding - endRow = endRow || this.getLength(); - startRow = startRow || 0; - for (var row = startRow; row < endRow; row++) { - if (foldWidgets[row] == null) - foldWidgets[row] = this.getFoldWidget(row); - if (foldWidgets[row] != "start") - continue; - - var range = this.getFoldWidgetRange(row); - if (range && range.isMultiLine() - && range.end.row <= endRow - && range.start.row >= startRow - ) { - row = range.end.row; - try { - var fold = this.addFold("...", range); - if (fold) - fold.collapseChildren = depth; - } catch(e) {} - } - } - }; - this.$foldStyles = { - "manual": 1, - "markbegin": 1, - "markbeginend": 1 - }; - this.$foldStyle = "markbegin"; - this.setFoldStyle = function(style) { - if (!this.$foldStyles[style]) - throw new Error("invalid fold style: " + style + "[" + Object.keys(this.$foldStyles).join(", ") + "]"); - - if (this.$foldStyle == style) - return; - - this.$foldStyle = style; - - if (style == "manual") - this.unfold(); - var mode = this.$foldMode; - this.$setFolding(null); - this.$setFolding(mode); - }; - - this.$setFolding = function(foldMode) { - if (this.$foldMode == foldMode) - return; - - this.$foldMode = foldMode; - - this.removeListener('change', this.$updateFoldWidgets); - this._emit("changeAnnotation"); - - if (!foldMode || this.$foldStyle == "manual") { - this.foldWidgets = null; - return; - } - - this.foldWidgets = []; - this.getFoldWidget = foldMode.getFoldWidget.bind(foldMode, this, this.$foldStyle); - this.getFoldWidgetRange = foldMode.getFoldWidgetRange.bind(foldMode, this, this.$foldStyle); - - this.$updateFoldWidgets = this.updateFoldWidgets.bind(this); - this.on('change', this.$updateFoldWidgets); - - }; - - this.getParentFoldRangeData = function (row, ignoreCurrent) { - var fw = this.foldWidgets; - if (!fw || (ignoreCurrent && fw[row])) - return {}; - - var i = row - 1, firstRange; - while (i >= 0) { - var c = fw[i]; - if (c == null) - c = fw[i] = this.getFoldWidget(i); - - if (c == "start") { - var range = this.getFoldWidgetRange(i); - if (!firstRange) - firstRange = range; - if (range && range.end.row >= row) - break; - } - i--; - } - - return { - range: i !== -1 && range, - firstRange: firstRange - }; - } - - this.onFoldWidgetClick = function(row, e) { - e = e.domEvent; - var options = { - children: e.shiftKey, - all: e.ctrlKey || e.metaKey, - siblings: e.altKey - }; - - var range = this.$toggleFoldWidget(row, options); - if (!range) { - var el = (e.target || e.srcElement) - if (el && /ace_fold-widget/.test(el.className)) - el.className += " ace_invalid"; - } - }; - - this.$toggleFoldWidget = function(row, options) { - if (!this.getFoldWidget) - return; - var type = this.getFoldWidget(row); - var line = this.getLine(row); - - var dir = type === "end" ? -1 : 1; - var fold = this.getFoldAt(row, dir === -1 ? 0 : line.length, dir); - - if (fold) { - if (options.children || options.all) - this.removeFold(fold); - else - this.expandFold(fold); - return; - } - - var range = this.getFoldWidgetRange(row, true); - if (range && !range.isMultiLine()) { - fold = this.getFoldAt(range.start.row, range.start.column, 1); - if (fold && range.isEqual(fold.range)) { - this.removeFold(fold); - return; - } - } - - if (options.siblings) { - var data = this.getParentFoldRangeData(row); - if (data.range) { - var startRow = data.range.start.row + 1; - var endRow = data.range.end.row; - } - this.foldAll(startRow, endRow, options.all ? 10000 : 0); - } else if (options.children) { - endRow = range ? range.end.row : this.getLength(); - this.foldAll(row + 1, range.end.row, options.all ? 10000 : 0); - } else if (range) { - if (options.all) - range.collapseChildren = 10000; - this.addFold("...", range); - } - - return range; - }; - - - - this.toggleFoldWidget = function(toggleParent) { - var row = this.selection.getCursor().row; - row = this.getRowFoldStart(row); - var range = this.$toggleFoldWidget(row, {}); - - if (range) - return; - var data = this.getParentFoldRangeData(row, true); - range = data.range || data.firstRange; - - if (range) { - row = range.start.row; - var fold = this.getFoldAt(row, this.getLine(row).length, 1); - - if (fold) { - this.removeFold(fold); - } else { - this.addFold("...", range); - } - } - }; - - this.updateFoldWidgets = function(e) { - var delta = e.data; - var range = delta.range; - var firstRow = range.start.row; - var len = range.end.row - firstRow; - - if (len === 0) { - this.foldWidgets[firstRow] = null; - } else if (delta.action == "removeText" || delta.action == "removeLines") { - this.foldWidgets.splice(firstRow, len + 1, null); - } else { - var args = Array(len + 1); - args.unshift(firstRow, 1); - this.foldWidgets.splice.apply(this.foldWidgets, args); - } - }; - -} - -exports.Folding = Folding; - -}); - -ace.define('ace/edit_session/fold_line', ['require', 'exports', 'module' , 'ace/range'], function(require, exports, module) { - - -var Range = require("../range").Range; -function FoldLine(foldData, folds) { - this.foldData = foldData; - if (Array.isArray(folds)) { - this.folds = folds; - } else { - folds = this.folds = [ folds ]; - } - - var last = folds[folds.length - 1] - this.range = new Range(folds[0].start.row, folds[0].start.column, - last.end.row, last.end.column); - this.start = this.range.start; - this.end = this.range.end; - - this.folds.forEach(function(fold) { - fold.setFoldLine(this); - }, this); -} - -(function() { - this.shiftRow = function(shift) { - this.start.row += shift; - this.end.row += shift; - this.folds.forEach(function(fold) { - fold.start.row += shift; - fold.end.row += shift; - }); - } - - this.addFold = function(fold) { - if (fold.sameRow) { - if (fold.start.row < this.startRow || fold.endRow > this.endRow) { - throw new Error("Can't add a fold to this FoldLine as it has no connection"); - } - this.folds.push(fold); - this.folds.sort(function(a, b) { - return -a.range.compareEnd(b.start.row, b.start.column); - }); - if (this.range.compareEnd(fold.start.row, fold.start.column) > 0) { - this.end.row = fold.end.row; - this.end.column = fold.end.column; - } else if (this.range.compareStart(fold.end.row, fold.end.column) < 0) { - this.start.row = fold.start.row; - this.start.column = fold.start.column; - } - } else if (fold.start.row == this.end.row) { - this.folds.push(fold); - this.end.row = fold.end.row; - this.end.column = fold.end.column; - } else if (fold.end.row == this.start.row) { - this.folds.unshift(fold); - this.start.row = fold.start.row; - this.start.column = fold.start.column; - } else { - throw new Error("Trying to add fold to FoldRow that doesn't have a matching row"); - } - fold.foldLine = this; - } - - this.containsRow = function(row) { - return row >= this.start.row && row <= this.end.row; - } - - this.walk = function(callback, endRow, endColumn) { - var lastEnd = 0, - folds = this.folds, - fold, - comp, stop, isNewRow = true; - - if (endRow == null) { - endRow = this.end.row; - endColumn = this.end.column; - } - - for (var i = 0; i < folds.length; i++) { - fold = folds[i]; - - comp = fold.range.compareStart(endRow, endColumn); - if (comp == -1) { - callback(null, endRow, endColumn, lastEnd, isNewRow); - return; - } - - stop = callback(null, fold.start.row, fold.start.column, lastEnd, isNewRow); - stop = !stop && callback(fold.placeholder, fold.start.row, fold.start.column, lastEnd); - if (stop || comp == 0) { - return; - } - isNewRow = !fold.sameRow; - lastEnd = fold.end.column; - } - callback(null, endRow, endColumn, lastEnd, isNewRow); - } - - this.getNextFoldTo = function(row, column) { - var fold, cmp; - for (var i = 0; i < this.folds.length; i++) { - fold = this.folds[i]; - cmp = fold.range.compareEnd(row, column); - if (cmp == -1) { - return { - fold: fold, - kind: "after" - }; - } else if (cmp == 0) { - return { - fold: fold, - kind: "inside" - } - } - } - return null; - } - - this.addRemoveChars = function(row, column, len) { - var ret = this.getNextFoldTo(row, column), - fold, folds; - if (ret) { - fold = ret.fold; - if (ret.kind == "inside" - && fold.start.column != column - && fold.start.row != row) - { - window.console && window.console.log(row, column, fold); - } else if (fold.start.row == row) { - folds = this.folds; - var i = folds.indexOf(fold); - if (i == 0) { - this.start.column += len; - } - for (i; i < folds.length; i++) { - fold = folds[i]; - fold.start.column += len; - if (!fold.sameRow) { - return; - } - fold.end.column += len; - } - this.end.column += len; - } - } - } - - this.split = function(row, column) { - var fold = this.getNextFoldTo(row, column).fold; - var folds = this.folds; - var foldData = this.foldData; - - if (!fold) - return null; - - var i = folds.indexOf(fold); - var foldBefore = folds[i - 1]; - this.end.row = foldBefore.end.row; - this.end.column = foldBefore.end.column; - folds = folds.splice(i, folds.length - i); - - var newFoldLine = new FoldLine(foldData, folds); - foldData.splice(foldData.indexOf(this) + 1, 0, newFoldLine); - return newFoldLine; - } - - this.merge = function(foldLineNext) { - var folds = foldLineNext.folds; - for (var i = 0; i < folds.length; i++) { - this.addFold(folds[i]); - } - var foldData = this.foldData; - foldData.splice(foldData.indexOf(foldLineNext), 1); - } - - this.toString = function() { - var ret = [this.range.toString() + ": [" ]; - - this.folds.forEach(function(fold) { - ret.push(" " + fold.toString()); - }); - ret.push("]") - return ret.join("\n"); - } - - this.idxToPosition = function(idx) { - var lastFoldEndColumn = 0; - var fold; - - for (var i = 0; i < this.folds.length; i++) { - var fold = this.folds[i]; - - idx -= fold.start.column - lastFoldEndColumn; - if (idx < 0) { - return { - row: fold.start.row, - column: fold.start.column + idx - }; - } - - idx -= fold.placeholder.length; - if (idx < 0) { - return fold.start; - } - - lastFoldEndColumn = fold.end.column; - } - - return { - row: this.end.row, - column: this.end.column + idx - }; - } -}).call(FoldLine.prototype); - -exports.FoldLine = FoldLine; -}); - -ace.define('ace/edit_session/fold', ['require', 'exports', 'module' , 'ace/range', 'ace/range_list', 'ace/lib/oop'], function(require, exports, module) { - - -var Range = require("../range").Range; -var RangeList = require("../range_list").RangeList; -var oop = require("../lib/oop") -var Fold = exports.Fold = function(range, placeholder) { - this.foldLine = null; - this.placeholder = placeholder; - this.range = range; - this.start = range.start; - this.end = range.end; - - this.sameRow = range.start.row == range.end.row; - this.subFolds = this.ranges = []; -}; - -oop.inherits(Fold, RangeList); - -(function() { - - this.toString = function() { - return '"' + this.placeholder + '" ' + this.range.toString(); - }; - - this.setFoldLine = function(foldLine) { - this.foldLine = foldLine; - this.subFolds.forEach(function(fold) { - fold.setFoldLine(foldLine); - }); - }; - - this.clone = function() { - var range = this.range.clone(); - var fold = new Fold(range, this.placeholder); - this.subFolds.forEach(function(subFold) { - fold.subFolds.push(subFold.clone()); - }); - fold.collapseChildren = this.collapseChildren; - return fold; - }; - - this.addSubFold = function(fold) { - if (this.range.isEqual(fold)) - return; - - if (!this.range.containsRange(fold)) - throw new Error("A fold can't intersect already existing fold" + fold.range + this.range); - consumeRange(fold, this.start); - - var row = fold.start.row, column = fold.start.column; - for (var i = 0, cmp = -1; i < this.subFolds.length; i++) { - cmp = this.subFolds[i].range.compare(row, column); - if (cmp != 1) - break; - } - var afterStart = this.subFolds[i]; - - if (cmp == 0) - return afterStart.addSubFold(fold); - var row = fold.range.end.row, column = fold.range.end.column; - for (var j = i, cmp = -1; j < this.subFolds.length; j++) { - cmp = this.subFolds[j].range.compare(row, column); - if (cmp != 1) - break; - } - var afterEnd = this.subFolds[j]; - - if (cmp == 0) - throw new Error("A fold can't intersect already existing fold" + fold.range + this.range); - - var consumedFolds = this.subFolds.splice(i, j - i, fold); - fold.setFoldLine(this.foldLine); - - return fold; - }; - - this.restoreRange = function(range) { - return restoreRange(range, this.start); - }; - -}).call(Fold.prototype); - -function consumePoint(point, anchor) { - point.row -= anchor.row; - if (point.row == 0) - point.column -= anchor.column; -} -function consumeRange(range, anchor) { - consumePoint(range.start, anchor); - consumePoint(range.end, anchor); -} -function restorePoint(point, anchor) { - if (point.row == 0) - point.column += anchor.column; - point.row += anchor.row; -} -function restoreRange(range, anchor) { - restorePoint(range.start, anchor); - restorePoint(range.end, anchor); -} - -}); - -ace.define('ace/range_list', ['require', 'exports', 'module' , 'ace/range'], function(require, exports, module) { - -var Range = require("./range").Range; -var comparePoints = Range.comparePoints; - -var RangeList = function() { - this.ranges = []; -}; - -(function() { - this.comparePoints = comparePoints; - - this.pointIndex = function(pos, excludeEdges, startIndex) { - var list = this.ranges; - - for (var i = startIndex || 0; i < list.length; i++) { - var range = list[i]; - var cmpEnd = comparePoints(pos, range.end); - if (cmpEnd > 0) - continue; - var cmpStart = comparePoints(pos, range.start); - if (cmpEnd === 0) - return excludeEdges && cmpStart !== 0 ? -i-2 : i; - if (cmpStart > 0 || (cmpStart === 0 && !excludeEdges)) - return i; - - return -i-1; - } - return -i - 1; - }; - - this.add = function(range) { - var excludeEdges = !range.isEmpty(); - var startIndex = this.pointIndex(range.start, excludeEdges); - if (startIndex < 0) - startIndex = -startIndex - 1; - - var endIndex = this.pointIndex(range.end, excludeEdges, startIndex); - - if (endIndex < 0) - endIndex = -endIndex - 1; - else - endIndex++; - return this.ranges.splice(startIndex, endIndex - startIndex, range); - }; - - this.addList = function(list) { - var removed = []; - for (var i = list.length; i--; ) { - removed.push.call(removed, this.add(list[i])); - } - return removed; - }; - - this.substractPoint = function(pos) { - var i = this.pointIndex(pos); - - if (i >= 0) - return this.ranges.splice(i, 1); - }; - this.merge = function() { - var removed = []; - var list = this.ranges; - - list = list.sort(function(a, b) { - return comparePoints(a.start, b.start); - }); - - var next = list[0], range; - for (var i = 1; i < list.length; i++) { - range = next; - next = list[i]; - var cmp = comparePoints(range.end, next.start); - if (cmp < 0) - continue; - - if (cmp == 0 && !range.isEmpty() && !next.isEmpty()) - continue; - - if (comparePoints(range.end, next.end) < 0) { - range.end.row = next.end.row; - range.end.column = next.end.column; - } - - list.splice(i, 1); - removed.push(next); - next = range; - i--; - } - - this.ranges = list; - - return removed; - }; - - this.contains = function(row, column) { - return this.pointIndex({row: row, column: column}) >= 0; - }; - - this.containsPoint = function(pos) { - return this.pointIndex(pos) >= 0; - }; - - this.rangeAtPoint = function(pos) { - var i = this.pointIndex(pos); - if (i >= 0) - return this.ranges[i]; - }; - - - this.clipRows = function(startRow, endRow) { - var list = this.ranges; - if (list[0].start.row > endRow || list[list.length - 1].start.row < startRow) - return []; - - var startIndex = this.pointIndex({row: startRow, column: 0}); - if (startIndex < 0) - startIndex = -startIndex - 1; - var endIndex = this.pointIndex({row: endRow, column: 0}, startIndex); - if (endIndex < 0) - endIndex = -endIndex - 1; - - var clipped = []; - for (var i = startIndex; i < endIndex; i++) { - clipped.push(list[i]); - } - return clipped; - }; - - this.removeAll = function() { - return this.ranges.splice(0, this.ranges.length); - }; - - this.attach = function(session) { - if (this.session) - this.detach(); - - this.session = session; - this.onChange = this.$onChange.bind(this); - - this.session.on('change', this.onChange); - }; - - this.detach = function() { - if (!this.session) - return; - this.session.removeListener('change', this.onChange); - this.session = null; - }; - - this.$onChange = function(e) { - var changeRange = e.data.range; - if (e.data.action[0] == "i"){ - var start = changeRange.start; - var end = changeRange.end; - } else { - var end = changeRange.start; - var start = changeRange.end; - } - var startRow = start.row; - var endRow = end.row; - var lineDif = endRow - startRow; - - var colDiff = -start.column + end.column; - var ranges = this.ranges; - - for (var i = 0, n = ranges.length; i < n; i++) { - var r = ranges[i]; - if (r.end.row < startRow) - continue; - if (r.start.row > startRow) - break; - - if (r.start.row == startRow && r.start.column >= start.column ) { - if (r.start.column == start.column && this.$insertRight) { - } else { - r.start.column += colDiff; - r.start.row += lineDif; - } - } - if (r.end.row == startRow && r.end.column >= start.column) { - if (r.end.column == start.column && this.$insertRight) { - continue; - } - if (r.end.column == start.column && colDiff > 0 && i < n - 1) { - if (r.end.column > r.start.column && r.end.column == ranges[i+1].start.column) - r.end.column -= colDiff; - } - r.end.column += colDiff; - r.end.row += lineDif; - } - } - - if (lineDif != 0 && i < n) { - for (; i < n; i++) { - var r = ranges[i]; - r.start.row += lineDif; - r.end.row += lineDif; - } - } - }; - -}).call(RangeList.prototype); - -exports.RangeList = RangeList; -}); - -ace.define('ace/edit_session/bracket_match', ['require', 'exports', 'module' , 'ace/token_iterator', 'ace/range'], function(require, exports, module) { - - -var TokenIterator = require("../token_iterator").TokenIterator; -var Range = require("../range").Range; - - -function BracketMatch() { - - this.findMatchingBracket = function(position, chr) { - if (position.column == 0) return null; - - var charBeforeCursor = chr || this.getLine(position.row).charAt(position.column-1); - if (charBeforeCursor == "") return null; - - var match = charBeforeCursor.match(/([\(\[\{])|([\)\]\}])/); - if (!match) - return null; - - if (match[1]) - return this.$findClosingBracket(match[1], position); - else - return this.$findOpeningBracket(match[2], position); - }; - - this.getBracketRange = function(pos) { - var line = this.getLine(pos.row); - var before = true, range; - - var chr = line.charAt(pos.column-1); - var match = chr && chr.match(/([\(\[\{])|([\)\]\}])/); - if (!match) { - chr = line.charAt(pos.column); - pos = {row: pos.row, column: pos.column + 1}; - match = chr && chr.match(/([\(\[\{])|([\)\]\}])/); - before = false; - } - if (!match) - return null; - - if (match[1]) { - var bracketPos = this.$findClosingBracket(match[1], pos); - if (!bracketPos) - return null; - range = Range.fromPoints(pos, bracketPos); - if (!before) { - range.end.column++; - range.start.column--; - } - range.cursor = range.end; - } else { - var bracketPos = this.$findOpeningBracket(match[2], pos); - if (!bracketPos) - return null; - range = Range.fromPoints(bracketPos, pos); - if (!before) { - range.start.column++; - range.end.column--; - } - range.cursor = range.start; - } - - return range; - }; - - this.$brackets = { - ")": "(", - "(": ")", - "]": "[", - "[": "]", - "{": "}", - "}": "{" - }; - - this.$findOpeningBracket = function(bracket, position, typeRe) { - var openBracket = this.$brackets[bracket]; - var depth = 1; - - var iterator = new TokenIterator(this, position.row, position.column); - var token = iterator.getCurrentToken(); - if (!token) - token = iterator.stepForward(); - if (!token) - return; - - if (!typeRe){ - typeRe = new RegExp( - "(\\.?" + - token.type.replace(".", "\\.").replace("rparen", ".paren") - + ")+" - ); - } - var valueIndex = position.column - iterator.getCurrentTokenColumn() - 2; - var value = token.value; - - while (true) { - - while (valueIndex >= 0) { - var chr = value.charAt(valueIndex); - if (chr == openBracket) { - depth -= 1; - if (depth == 0) { - return {row: iterator.getCurrentTokenRow(), - column: valueIndex + iterator.getCurrentTokenColumn()}; - } - } - else if (chr == bracket) { - depth += 1; - } - valueIndex -= 1; - } - do { - token = iterator.stepBackward(); - } while (token && !typeRe.test(token.type)); - - if (token == null) - break; - - value = token.value; - valueIndex = value.length - 1; - } - - return null; - }; - - this.$findClosingBracket = function(bracket, position, typeRe) { - var closingBracket = this.$brackets[bracket]; - var depth = 1; - - var iterator = new TokenIterator(this, position.row, position.column); - var token = iterator.getCurrentToken(); - if (!token) - token = iterator.stepForward(); - if (!token) - return; - - if (!typeRe){ - typeRe = new RegExp( - "(\\.?" + - token.type.replace(".", "\\.").replace("lparen", ".paren") - + ")+" - ); - } - var valueIndex = position.column - iterator.getCurrentTokenColumn(); - - while (true) { - - var value = token.value; - var valueLength = value.length; - while (valueIndex < valueLength) { - var chr = value.charAt(valueIndex); - if (chr == closingBracket) { - depth -= 1; - if (depth == 0) { - return {row: iterator.getCurrentTokenRow(), - column: valueIndex + iterator.getCurrentTokenColumn()}; - } - } - else if (chr == bracket) { - depth += 1; - } - valueIndex += 1; - } - do { - token = iterator.stepForward(); - } while (token && !typeRe.test(token.type)); - - if (token == null) - break; - - valueIndex = 0; - } - - return null; - }; -} -exports.BracketMatch = BracketMatch; - -}); - -ace.define('ace/search', ['require', 'exports', 'module' , 'ace/lib/lang', 'ace/lib/oop', 'ace/range'], function(require, exports, module) { - - -var lang = require("./lib/lang"); -var oop = require("./lib/oop"); -var Range = require("./range").Range; - -var Search = function() { - this.$options = {}; -}; - -(function() { - this.set = function(options) { - oop.mixin(this.$options, options); - return this; - }; - this.getOptions = function() { - return lang.copyObject(this.$options); - }; - this.setOptions = function(options) { - this.$options = options; - }; - this.find = function(session) { - var iterator = this.$matchIterator(session, this.$options); - - if (!iterator) - return false; - - var firstRange = null; - iterator.forEach(function(range, row, offset) { - if (!range.start) { - var column = range.offset + (offset || 0); - firstRange = new Range(row, column, row, column+range.length); - } else - firstRange = range; - return true; - }); - - return firstRange; - }; - this.findAll = function(session) { - var options = this.$options; - if (!options.needle) - return []; - this.$assembleRegExp(options); - - var range = options.range; - var lines = range - ? session.getLines(range.start.row, range.end.row) - : session.doc.getAllLines(); - - var ranges = []; - var re = options.re; - if (options.$isMultiLine) { - var len = re.length; - var maxRow = lines.length - len; - for (var row = re.offset || 0; row <= maxRow; row++) { - for (var j = 0; j < len; j++) - if (lines[row + j].search(re[j]) == -1) - break; - - var startLine = lines[row]; - var line = lines[row + len - 1]; - var startIndex = startLine.match(re[0])[0].length; - var endIndex = line.match(re[len - 1])[0].length; - - ranges.push(new Range( - row, startLine.length - startIndex, - row + len - 1, endIndex - )); - } - } else { - for (var i = 0; i < lines.length; i++) { - var matches = lang.getMatchOffsets(lines[i], re); - for (var j = 0; j < matches.length; j++) { - var match = matches[j]; - ranges.push(new Range(i, match.offset, i, match.offset + match.length)); - } - } - } - - if (range) { - var startColumn = range.start.column; - var endColumn = range.start.column; - var i = 0, j = ranges.length - 1; - while (i < j && ranges[i].start.column < startColumn && ranges[i].start.row == range.start.row) - i++; - - while (i < j && ranges[j].end.column > endColumn && ranges[j].end.row == range.end.row) - j--; - - ranges = ranges.slice(i, j + 1); - for (i = 0, j = ranges.length; i < j; i++) { - ranges[i].start.row += range.start.row; - ranges[i].end.row += range.start.row; - } - } - - return ranges; - }; - this.replace = function(input, replacement) { - var options = this.$options; - - var re = this.$assembleRegExp(options); - if (options.$isMultiLine) - return replacement; - - if (!re) - return; - - var match = re.exec(input); - if (!match || match[0].length != input.length) - return null; - - replacement = input.replace(re, replacement); - if (options.preserveCase) { - replacement = replacement.split(""); - for (var i = Math.min(input.length, input.length); i--; ) { - var ch = input[i]; - if (ch && ch.toLowerCase() != ch) - replacement[i] = replacement[i].toUpperCase(); - else - replacement[i] = replacement[i].toLowerCase(); - } - replacement = replacement.join(""); - } - - return replacement; - }; - - this.$matchIterator = function(session, options) { - var re = this.$assembleRegExp(options); - if (!re) - return false; - - var self = this, callback, backwards = options.backwards; - - if (options.$isMultiLine) { - var len = re.length; - var matchIterator = function(line, row, offset) { - var startIndex = line.search(re[0]); - if (startIndex == -1) - return; - for (var i = 1; i < len; i++) { - line = session.getLine(row + i); - if (line.search(re[i]) == -1) - return; - } - - var endIndex = line.match(re[len - 1])[0].length; - - var range = new Range(row, startIndex, row + len - 1, endIndex); - if (re.offset == 1) { - range.start.row--; - range.start.column = Number.MAX_VALUE; - } else if (offset) - range.start.column += offset; - - if (callback(range)) - return true; - }; - } else if (backwards) { - var matchIterator = function(line, row, startIndex) { - var matches = lang.getMatchOffsets(line, re); - for (var i = matches.length-1; i >= 0; i--) - if (callback(matches[i], row, startIndex)) - return true; - }; - } else { - var matchIterator = function(line, row, startIndex) { - var matches = lang.getMatchOffsets(line, re); - for (var i = 0; i < matches.length; i++) - if (callback(matches[i], row, startIndex)) - return true; - }; - } - - return { - forEach: function(_callback) { - callback = _callback; - self.$lineIterator(session, options).forEach(matchIterator); - } - }; - }; - - this.$assembleRegExp = function(options, $disableFakeMultiline) { - if (options.needle instanceof RegExp) - return options.re = options.needle; - - var needle = options.needle; - - if (!options.needle) - return options.re = false; - - if (!options.regExp) - needle = lang.escapeRegExp(needle); - - if (options.wholeWord) - needle = "\\b" + needle + "\\b"; - - var modifier = options.caseSensitive ? "g" : "gi"; - - options.$isMultiLine = !$disableFakeMultiline && /[\n\r]/.test(needle); - if (options.$isMultiLine) - return options.re = this.$assembleMultilineRegExp(needle, modifier); - - try { - var re = new RegExp(needle, modifier); - } catch(e) { - re = false; - } - return options.re = re; - }; - - this.$assembleMultilineRegExp = function(needle, modifier) { - var parts = needle.replace(/\r\n|\r|\n/g, "$\n^").split("\n"); - var re = []; - for (var i = 0; i < parts.length; i++) try { - re.push(new RegExp(parts[i], modifier)); - } catch(e) { - return false; - } - if (parts[0] == "") { - re.shift(); - re.offset = 1; - } else { - re.offset = 0; - } - return re; - }; - - this.$lineIterator = function(session, options) { - var backwards = options.backwards == true; - var skipCurrent = options.skipCurrent != false; - - var range = options.range; - var start = options.start; - if (!start) - start = range ? range[backwards ? "end" : "start"] : session.selection.getRange(); - - if (start.start) - start = start[skipCurrent != backwards ? "end" : "start"]; - - var firstRow = range ? range.start.row : 0; - var lastRow = range ? range.end.row : session.getLength() - 1; - - var forEach = backwards ? function(callback) { - var row = start.row; - - var line = session.getLine(row).substring(0, start.column); - if (callback(line, row)) - return; - - for (row--; row >= firstRow; row--) - if (callback(session.getLine(row), row)) - return; - - if (options.wrap == false) - return; - - for (row = lastRow, firstRow = start.row; row >= firstRow; row--) - if (callback(session.getLine(row), row)) - return; - } : function(callback) { - var row = start.row; - - var line = session.getLine(row).substr(start.column); - if (callback(line, row, start.column)) - return; - - for (row = row+1; row <= lastRow; row++) - if (callback(session.getLine(row), row)) - return; - - if (options.wrap == false) - return; - - for (row = firstRow, lastRow = start.row; row <= lastRow; row++) - if (callback(session.getLine(row), row)) - return; - }; - - return {forEach: forEach}; - }; - -}).call(Search.prototype); - -exports.Search = Search; -}); -ace.define('ace/commands/command_manager', ['require', 'exports', 'module' , 'ace/lib/oop', 'ace/keyboard/hash_handler', 'ace/lib/event_emitter'], function(require, exports, module) { - - -var oop = require("../lib/oop"); -var HashHandler = require("../keyboard/hash_handler").HashHandler; -var EventEmitter = require("../lib/event_emitter").EventEmitter; - -var CommandManager = function(platform, commands) { - HashHandler.call(this, commands, platform); - this.byName = this.commands; - this.setDefaultHandler("exec", function(e) { - return e.command.exec(e.editor, e.args || {}); - }); -}; - -oop.inherits(CommandManager, HashHandler); - -(function() { - - oop.implement(this, EventEmitter); - - this.exec = function(command, editor, args) { - if (typeof command === 'string') - command = this.commands[command]; - - if (!command) - return false; - - if (editor && editor.$readOnly && !command.readOnly) - return false; - - var e = {editor: editor, command: command, args: args}; - var retvalue = this._emit("exec", e); - this._signal("afterExec", e); - - return retvalue === false ? false : true; - }; - - this.toggleRecording = function(editor) { - if (this.$inReplay) - return; - - editor && editor._emit("changeStatus"); - if (this.recording) { - this.macro.pop(); - this.removeEventListener("exec", this.$addCommandToMacro); - - if (!this.macro.length) - this.macro = this.oldMacro; - - return this.recording = false; - } - if (!this.$addCommandToMacro) { - this.$addCommandToMacro = function(e) { - this.macro.push([e.command, e.args]); - }.bind(this); - } - - this.oldMacro = this.macro; - this.macro = []; - this.on("exec", this.$addCommandToMacro); - return this.recording = true; - }; - - this.replay = function(editor) { - if (this.$inReplay || !this.macro) - return; - - if (this.recording) - return this.toggleRecording(editor); - - try { - this.$inReplay = true; - this.macro.forEach(function(x) { - if (typeof x == "string") - this.exec(x, editor); - else - this.exec(x[0], editor, x[1]); - }, this); - } finally { - this.$inReplay = false; - } - }; - - this.trimMacro = function(m) { - return m.map(function(x){ - if (typeof x[0] != "string") - x[0] = x[0].name; - if (!x[1]) - x = x[0]; - return x; - }); - }; - -}).call(CommandManager.prototype); - -exports.CommandManager = CommandManager; - -}); - -ace.define('ace/keyboard/hash_handler', ['require', 'exports', 'module' , 'ace/lib/keys', 'ace/lib/useragent'], function(require, exports, module) { - - -var keyUtil = require("../lib/keys"); -var useragent = require("../lib/useragent"); - -function HashHandler(config, platform) { - this.platform = platform || (useragent.isMac ? "mac" : "win"); - this.commands = {}; - this.commandKeyBinding = {}; - if (this.__defineGetter__ && this.__defineSetter__ && typeof console != "undefined" && console.error) { - var warned = false; - var warn = function() { - if (!warned) { - warned = true; - console.error("commmandKeyBinding has too many m's. use commandKeyBinding"); - } - }; - this.__defineGetter__("commmandKeyBinding", function() { - warn(); - return this.commandKeyBinding; - }); - this.__defineSetter__("commmandKeyBinding", function(val) { - warn(); - return this.commandKeyBinding = val; - }); - } else { - this.commmandKeyBinding = this.commandKeyBinding; - } - - this.addCommands(config); -}; - -(function() { - - this.addCommand = function(command) { - if (this.commands[command.name]) - this.removeCommand(command); - - this.commands[command.name] = command; - - if (command.bindKey) - this._buildKeyHash(command); - }; - - this.removeCommand = function(command) { - var name = (typeof command === 'string' ? command : command.name); - command = this.commands[name]; - delete this.commands[name]; - var ckb = this.commandKeyBinding; - for (var hashId in ckb) { - for (var key in ckb[hashId]) { - if (ckb[hashId][key] == command) - delete ckb[hashId][key]; - } - } - }; - - this.bindKey = function(key, command) { - if(!key) - return; - if (typeof command == "function") { - this.addCommand({exec: command, bindKey: key, name: command.name || key}); - return; - } - - var ckb = this.commandKeyBinding; - key.split("|").forEach(function(keyPart) { - var binding = this.parseKeys(keyPart, command); - var hashId = binding.hashId; - (ckb[hashId] || (ckb[hashId] = {}))[binding.key] = command; - }, this); - }; - - this.addCommands = function(commands) { - commands && Object.keys(commands).forEach(function(name) { - var command = commands[name]; - if (!command) - return; - - if (typeof command === "string") - return this.bindKey(command, name); - - if (typeof command === "function") - command = { exec: command }; - - if (typeof command !== "object") - return; - - if (!command.name) - command.name = name; - - this.addCommand(command); - }, this); - }; - - this.removeCommands = function(commands) { - Object.keys(commands).forEach(function(name) { - this.removeCommand(commands[name]); - }, this); - }; - - this.bindKeys = function(keyList) { - Object.keys(keyList).forEach(function(key) { - this.bindKey(key, keyList[key]); - }, this); - }; - - this._buildKeyHash = function(command) { - var binding = command.bindKey; - if (!binding) - return; - - var key = typeof binding == "string" ? binding: binding[this.platform]; - this.bindKey(key, command); - }; - this.parseKeys = function(keys) { - if (keys.indexOf(" ") != -1) - keys = keys.split(/\s+/).pop(); - - var parts = keys.toLowerCase().split(/[\-\+]([\-\+])?/).filter(function(x){return x}); - var key = parts.pop(); - - var keyCode = keyUtil[key]; - if (keyUtil.FUNCTION_KEYS[keyCode]) - key = keyUtil.FUNCTION_KEYS[keyCode].toLowerCase(); - else if (!parts.length) - return {key: key, hashId: -1}; - else if (parts.length == 1 && parts[0] == "shift") - return {key: key.toUpperCase(), hashId: -1}; - - var hashId = 0; - for (var i = parts.length; i--;) { - var modifier = keyUtil.KEY_MODS[parts[i]]; - if (modifier == null) { - if (typeof console != "undefined") - console.error("invalid modifier " + parts[i] + " in " + keys); - return false; - } - hashId |= modifier; - } - return {key: key, hashId: hashId}; - }; - - this.findKeyCommand = function findKeyCommand(hashId, keyString) { - var ckbr = this.commandKeyBinding; - return ckbr[hashId] && ckbr[hashId][keyString]; - }; - - this.handleKeyboard = function(data, hashId, keyString, keyCode) { - return { - command: this.findKeyCommand(hashId, keyString) - }; - }; - -}).call(HashHandler.prototype) - -exports.HashHandler = HashHandler; -}); - -ace.define('ace/commands/default_commands', ['require', 'exports', 'module' , 'ace/lib/lang', 'ace/config'], function(require, exports, module) { - - -var lang = require("../lib/lang"); -var config = require("../config"); - -function bindKey(win, mac) { - return {win: win, mac: mac}; -} -exports.commands = [{ - name: "showSettingsMenu", - bindKey: bindKey("Ctrl-,", "Command-,"), - exec: function(editor) { - config.loadModule("ace/ext/settings_menu", function(module) { - module.init(editor); - editor.showSettingsMenu(); - }); - }, - readOnly: true -}, { - name: "goToNextError", - bindKey: bindKey("Alt-E", "Ctrl-E"), - exec: function(editor) { - config.loadModule("ace/ext/error_marker", function(module) { - module.showErrorMarker(editor, 1); - }); - }, - scrollIntoView: "center", - readOnly: true -}, { - name: "goToPreviousError", - bindKey: bindKey("Alt-Shift-E", "Ctrl-Shift-E"), - exec: function(editor) { - config.loadModule("ace/ext/error_marker", function(module) { - module.showErrorMarker(editor, -1); - }); - }, - scrollIntoView: "center", - readOnly: true -}, { - name: "selectall", - bindKey: bindKey("Ctrl-A", "Command-A"), - exec: function(editor) { editor.selectAll(); }, - readOnly: true -}, { - name: "centerselection", - bindKey: bindKey(null, "Ctrl-L"), - exec: function(editor) { editor.centerSelection(); }, - readOnly: true -}, { - name: "gotoline", - bindKey: bindKey("Ctrl-L", "Command-L"), - exec: function(editor) { - var line = parseInt(prompt("Enter line number:"), 10); - if (!isNaN(line)) { - editor.gotoLine(line); - } - }, - readOnly: true -}, { - name: "fold", - bindKey: bindKey("Alt-L|Ctrl-F1", "Command-Alt-L|Command-F1"), - exec: function(editor) { editor.session.toggleFold(false); }, - scrollIntoView: "center", - readOnly: true -}, { - name: "unfold", - bindKey: bindKey("Alt-Shift-L|Ctrl-Shift-F1", "Command-Alt-Shift-L|Command-Shift-F1"), - exec: function(editor) { editor.session.toggleFold(true); }, - scrollIntoView: "center", - readOnly: true -}, { - name: "toggleFoldWidget", - bindKey: bindKey("F2", "F2"), - exec: function(editor) { editor.session.toggleFoldWidget(); }, - scrollIntoView: "center", - readOnly: true -}, { - name: "toggleParentFoldWidget", - bindKey: bindKey("Alt-F2", "Alt-F2"), - exec: function(editor) { editor.session.toggleFoldWidget(true); }, - scrollIntoView: "center", - readOnly: true -}, { - name: "foldall", - bindKey: bindKey("Ctrl-Alt-0", "Ctrl-Command-Option-0"), - exec: function(editor) { editor.session.foldAll(); }, - scrollIntoView: "center", - readOnly: true -}, { - name: "foldOther", - bindKey: bindKey("Alt-0", "Command-Option-0"), - exec: function(editor) { - editor.session.foldAll(); - editor.session.unfold(editor.selection.getAllRanges()); - }, - scrollIntoView: "center", - readOnly: true -}, { - name: "unfoldall", - bindKey: bindKey("Alt-Shift-0", "Command-Option-Shift-0"), - exec: function(editor) { editor.session.unfold(); }, - scrollIntoView: "center", - readOnly: true -}, { - name: "findnext", - bindKey: bindKey("Ctrl-K", "Command-G"), - exec: function(editor) { editor.findNext(); }, - readOnly: true -}, { - name: "findprevious", - bindKey: bindKey("Ctrl-Shift-K", "Command-Shift-G"), - exec: function(editor) { editor.findPrevious(); }, - readOnly: true -}, { - name: "selectOrFindNext", - bindKey: bindKey("ALt-K", "Ctrl-G"), - exec: function(editor) { - if (editor.selection.isEmpty()) - editor.selection.selectWord(); - else - editor.findNext(); - }, - readOnly: true -}, { - name: "selectOrFindPrevious", - bindKey: bindKey("Alt-Shift-K", "Ctrl-Shift-G"), - exec: function(editor) { - if (editor.selection.isEmpty()) - editor.selection.selectWord(); - else - editor.findPrevious(); - }, - readOnly: true -}, { - name: "find", - bindKey: bindKey("Ctrl-F", "Command-F"), - exec: function(editor) { - config.loadModule("ace/ext/searchbox", function(e) {e.Search(editor)}); - }, - readOnly: true -}, { - name: "overwrite", - bindKey: "Insert", - exec: function(editor) { editor.toggleOverwrite(); }, - readOnly: true -}, { - name: "selecttostart", - bindKey: bindKey("Ctrl-Shift-Home", "Command-Shift-Up"), - exec: function(editor) { editor.getSelection().selectFileStart(); }, - multiSelectAction: "forEach", - readOnly: true, - scrollIntoView: "animate", - aceCommandGroup: "fileJump" -}, { - name: "gotostart", - bindKey: bindKey("Ctrl-Home", "Command-Home|Command-Up"), - exec: function(editor) { editor.navigateFileStart(); }, - multiSelectAction: "forEach", - readOnly: true, - scrollIntoView: "animate", - aceCommandGroup: "fileJump" -}, { - name: "selectup", - bindKey: bindKey("Shift-Up", "Shift-Up"), - exec: function(editor) { editor.getSelection().selectUp(); }, - multiSelectAction: "forEach", - readOnly: true -}, { - name: "golineup", - bindKey: bindKey("Up", "Up|Ctrl-P"), - exec: function(editor, args) { editor.navigateUp(args.times); }, - multiSelectAction: "forEach", - readOnly: true -}, { - name: "selecttoend", - bindKey: bindKey("Ctrl-Shift-End", "Command-Shift-Down"), - exec: function(editor) { editor.getSelection().selectFileEnd(); }, - multiSelectAction: "forEach", - readOnly: true, - scrollIntoView: "animate", - aceCommandGroup: "fileJump" -}, { - name: "gotoend", - bindKey: bindKey("Ctrl-End", "Command-End|Command-Down"), - exec: function(editor) { editor.navigateFileEnd(); }, - multiSelectAction: "forEach", - readOnly: true, - scrollIntoView: "animate", - aceCommandGroup: "fileJump" -}, { - name: "selectdown", - bindKey: bindKey("Shift-Down", "Shift-Down"), - exec: function(editor) { editor.getSelection().selectDown(); }, - multiSelectAction: "forEach", - scrollIntoView: "cursor", - readOnly: true -}, { - name: "golinedown", - bindKey: bindKey("Down", "Down|Ctrl-N"), - exec: function(editor, args) { editor.navigateDown(args.times); }, - multiSelectAction: "forEach", - scrollIntoView: "cursor", - readOnly: true -}, { - name: "selectwordleft", - bindKey: bindKey("Ctrl-Shift-Left", "Option-Shift-Left"), - exec: function(editor) { editor.getSelection().selectWordLeft(); }, - multiSelectAction: "forEach", - scrollIntoView: "cursor", - readOnly: true -}, { - name: "gotowordleft", - bindKey: bindKey("Ctrl-Left", "Option-Left"), - exec: function(editor) { editor.navigateWordLeft(); }, - multiSelectAction: "forEach", - scrollIntoView: "cursor", - readOnly: true -}, { - name: "selecttolinestart", - bindKey: bindKey("Alt-Shift-Left", "Command-Shift-Left"), - exec: function(editor) { editor.getSelection().selectLineStart(); }, - multiSelectAction: "forEach", - scrollIntoView: "cursor", - readOnly: true -}, { - name: "gotolinestart", - bindKey: bindKey("Alt-Left|Home", "Command-Left|Home|Ctrl-A"), - exec: function(editor) { editor.navigateLineStart(); }, - multiSelectAction: "forEach", - scrollIntoView: "cursor", - readOnly: true -}, { - name: "selectleft", - bindKey: bindKey("Shift-Left", "Shift-Left"), - exec: function(editor) { editor.getSelection().selectLeft(); }, - multiSelectAction: "forEach", - scrollIntoView: "cursor", - readOnly: true -}, { - name: "gotoleft", - bindKey: bindKey("Left", "Left|Ctrl-B"), - exec: function(editor, args) { editor.navigateLeft(args.times); }, - multiSelectAction: "forEach", - scrollIntoView: "cursor", - readOnly: true -}, { - name: "selectwordright", - bindKey: bindKey("Ctrl-Shift-Right", "Option-Shift-Right"), - exec: function(editor) { editor.getSelection().selectWordRight(); }, - multiSelectAction: "forEach", - scrollIntoView: "cursor", - readOnly: true -}, { - name: "gotowordright", - bindKey: bindKey("Ctrl-Right", "Option-Right"), - exec: function(editor) { editor.navigateWordRight(); }, - multiSelectAction: "forEach", - scrollIntoView: "cursor", - readOnly: true -}, { - name: "selecttolineend", - bindKey: bindKey("Alt-Shift-Right", "Command-Shift-Right"), - exec: function(editor) { editor.getSelection().selectLineEnd(); }, - multiSelectAction: "forEach", - scrollIntoView: "cursor", - readOnly: true -}, { - name: "gotolineend", - bindKey: bindKey("Alt-Right|End", "Command-Right|End|Ctrl-E"), - exec: function(editor) { editor.navigateLineEnd(); }, - multiSelectAction: "forEach", - scrollIntoView: "cursor", - readOnly: true -}, { - name: "selectright", - bindKey: bindKey("Shift-Right", "Shift-Right"), - exec: function(editor) { editor.getSelection().selectRight(); }, - multiSelectAction: "forEach", - scrollIntoView: "cursor", - readOnly: true -}, { - name: "gotoright", - bindKey: bindKey("Right", "Right|Ctrl-F"), - exec: function(editor, args) { editor.navigateRight(args.times); }, - multiSelectAction: "forEach", - scrollIntoView: "cursor", - readOnly: true -}, { - name: "selectpagedown", - bindKey: "Shift-PageDown", - exec: function(editor) { editor.selectPageDown(); }, - readOnly: true -}, { - name: "pagedown", - bindKey: bindKey(null, "Option-PageDown"), - exec: function(editor) { editor.scrollPageDown(); }, - readOnly: true -}, { - name: "gotopagedown", - bindKey: bindKey("PageDown", "PageDown|Ctrl-V"), - exec: function(editor) { editor.gotoPageDown(); }, - readOnly: true -}, { - name: "selectpageup", - bindKey: "Shift-PageUp", - exec: function(editor) { editor.selectPageUp(); }, - readOnly: true -}, { - name: "pageup", - bindKey: bindKey(null, "Option-PageUp"), - exec: function(editor) { editor.scrollPageUp(); }, - readOnly: true -}, { - name: "gotopageup", - bindKey: "PageUp", - exec: function(editor) { editor.gotoPageUp(); }, - readOnly: true -}, { - name: "scrollup", - bindKey: bindKey("Ctrl-Up", null), - exec: function(e) { e.renderer.scrollBy(0, -2 * e.renderer.layerConfig.lineHeight); }, - readOnly: true -}, { - name: "scrolldown", - bindKey: bindKey("Ctrl-Down", null), - exec: function(e) { e.renderer.scrollBy(0, 2 * e.renderer.layerConfig.lineHeight); }, - readOnly: true -}, { - name: "selectlinestart", - bindKey: "Shift-Home", - exec: function(editor) { editor.getSelection().selectLineStart(); }, - multiSelectAction: "forEach", - readOnly: true -}, { - name: "selectlineend", - bindKey: "Shift-End", - exec: function(editor) { editor.getSelection().selectLineEnd(); }, - multiSelectAction: "forEach", - readOnly: true -}, { - name: "togglerecording", - bindKey: bindKey("Ctrl-Alt-E", "Command-Option-E"), - exec: function(editor) { editor.commands.toggleRecording(editor); }, - readOnly: true -}, { - name: "replaymacro", - bindKey: bindKey("Ctrl-Shift-E", "Command-Shift-E"), - exec: function(editor) { editor.commands.replay(editor); }, - readOnly: true -}, { - name: "jumptomatching", - bindKey: bindKey("Ctrl-P", "Ctrl-Shift-P"), - exec: function(editor) { editor.jumpToMatching(); }, - multiSelectAction: "forEach", - readOnly: true -}, { - name: "selecttomatching", - bindKey: bindKey("Ctrl-Shift-P", null), - exec: function(editor) { editor.jumpToMatching(true); }, - multiSelectAction: "forEach", - readOnly: true -}, -{ - name: "cut", - exec: function(editor) { - var range = editor.getSelectionRange(); - editor._emit("cut", range); - - if (!editor.selection.isEmpty()) { - editor.session.remove(range); - editor.clearSelection(); - } - }, - multiSelectAction: "forEach" -}, { - name: "removeline", - bindKey: bindKey("Ctrl-D", "Command-D"), - exec: function(editor) { editor.removeLines(); }, - multiSelectAction: "forEachLine" -}, { - name: "duplicateSelection", - bindKey: bindKey("Ctrl-Shift-D", "Command-Shift-D"), - exec: function(editor) { editor.duplicateSelection(); }, - multiSelectAction: "forEach" -}, { - name: "sortlines", - bindKey: bindKey("Ctrl-Alt-S", "Command-Alt-S"), - exec: function(editor) { editor.sortLines(); }, - multiSelectAction: "forEachLine" -}, { - name: "togglecomment", - bindKey: bindKey("Ctrl-/", "Command-/"), - exec: function(editor) { editor.toggleCommentLines(); }, - multiSelectAction: "forEachLine", - scrollIntoView: "selectionPart" -}, { - name: "toggleBlockComment", - bindKey: bindKey("Ctrl-Shift-/", "Command-Shift-/"), - exec: function(editor) { editor.toggleBlockComment(); }, - multiSelectAction: "forEach" -}, { - name: "modifyNumberUp", - bindKey: bindKey("Ctrl-Shift-Up", "Alt-Shift-Up"), - exec: function(editor) { editor.modifyNumber(1); }, - multiSelectAction: "forEach" -}, { - name: "modifyNumberDown", - bindKey: bindKey("Ctrl-Shift-Down", "Alt-Shift-Down"), - exec: function(editor) { editor.modifyNumber(-1); }, - multiSelectAction: "forEach" -}, { - name: "replace", - bindKey: bindKey("Ctrl-H", "Command-Option-F"), - exec: function(editor) { - config.loadModule("ace/ext/searchbox", function(e) {e.Search(editor, true)}); - } -}, { - name: "undo", - bindKey: bindKey("Ctrl-Z", "Command-Z"), - exec: function(editor) { editor.undo(); } -}, { - name: "redo", - bindKey: bindKey("Ctrl-Shift-Z|Ctrl-Y", "Command-Shift-Z|Command-Y"), - exec: function(editor) { editor.redo(); } -}, { - name: "copylinesup", - bindKey: bindKey("Alt-Shift-Up", "Command-Option-Up"), - exec: function(editor) { editor.copyLinesUp(); } -}, { - name: "movelinesup", - bindKey: bindKey("Alt-Up", "Option-Up"), - exec: function(editor) { editor.moveLinesUp(); } -}, { - name: "copylinesdown", - bindKey: bindKey("Alt-Shift-Down", "Command-Option-Down"), - exec: function(editor) { editor.copyLinesDown(); } -}, { - name: "movelinesdown", - bindKey: bindKey("Alt-Down", "Option-Down"), - exec: function(editor) { editor.moveLinesDown(); } -}, { - name: "del", - bindKey: bindKey("Delete", "Delete|Ctrl-D|Shift-Delete"), - exec: function(editor) { editor.remove("right"); }, - multiSelectAction: "forEach" -}, { - name: "backspace", - bindKey: bindKey( - "Shift-Backspace|Backspace", - "Ctrl-Backspace|Shift-Backspace|Backspace|Ctrl-H" - ), - exec: function(editor) { editor.remove("left"); }, - multiSelectAction: "forEach" -}, { - name: "cut_or_delete", - bindKey: bindKey("Shift-Delete", null), - exec: function(editor) { - if (editor.selection.isEmpty()) { - editor.remove("left"); - } else { - return false; - } - }, - multiSelectAction: "forEach" -}, { - name: "removetolinestart", - bindKey: bindKey("Alt-Backspace", "Command-Backspace"), - exec: function(editor) { editor.removeToLineStart(); }, - multiSelectAction: "forEach" -}, { - name: "removetolineend", - bindKey: bindKey("Alt-Delete", "Ctrl-K"), - exec: function(editor) { editor.removeToLineEnd(); }, - multiSelectAction: "forEach" -}, { - name: "removewordleft", - bindKey: bindKey("Ctrl-Backspace", "Alt-Backspace|Ctrl-Alt-Backspace"), - exec: function(editor) { editor.removeWordLeft(); }, - multiSelectAction: "forEach" -}, { - name: "removewordright", - bindKey: bindKey("Ctrl-Delete", "Alt-Delete"), - exec: function(editor) { editor.removeWordRight(); }, - multiSelectAction: "forEach" -}, { - name: "outdent", - bindKey: bindKey("Shift-Tab", "Shift-Tab"), - exec: function(editor) { editor.blockOutdent(); }, - multiSelectAction: "forEach", - scrollIntoView: "selectionPart" -}, { - name: "indent", - bindKey: bindKey("Tab", "Tab"), - exec: function(editor) { editor.indent(); }, - multiSelectAction: "forEach", - scrollIntoView: "selectionPart" -}, { - name: "blockoutdent", - bindKey: bindKey("Ctrl-[", "Ctrl-["), - exec: function(editor) { editor.blockOutdent(); }, - multiSelectAction: "forEachLine", - scrollIntoView: "selectionPart" -}, { - name: "blockindent", - bindKey: bindKey("Ctrl-]", "Ctrl-]"), - exec: function(editor) { editor.blockIndent(); }, - multiSelectAction: "forEachLine", - scrollIntoView: "selectionPart" -}, { - name: "insertstring", - exec: function(editor, str) { editor.insert(str); }, - multiSelectAction: "forEach", - scrollIntoView: "cursor" -}, { - name: "inserttext", - exec: function(editor, args) { - editor.insert(lang.stringRepeat(args.text || "", args.times || 1)); - }, - multiSelectAction: "forEach" -}, { - name: "splitline", - bindKey: bindKey(null, "Ctrl-O"), - exec: function(editor) { editor.splitLine(); }, - multiSelectAction: "forEach" -}, { - name: "transposeletters", - bindKey: bindKey("Ctrl-T", "Ctrl-T"), - exec: function(editor) { editor.transposeLetters(); }, - multiSelectAction: function(editor) {editor.transposeSelections(1); } -}, { - name: "touppercase", - bindKey: bindKey("Ctrl-U", "Ctrl-U"), - exec: function(editor) { editor.toUpperCase(); }, - multiSelectAction: "forEach" -}, { - name: "tolowercase", - bindKey: bindKey("Ctrl-Shift-U", "Ctrl-Shift-U"), - exec: function(editor) { editor.toLowerCase(); }, - multiSelectAction: "forEach" -}]; - -}); - -ace.define('ace/undomanager', ['require', 'exports', 'module' ], function(require, exports, module) { -var UndoManager = function() { - this.reset(); -}; - -(function() { - this.execute = function(options) { - var deltas = options.args[0]; - this.$doc = options.args[1]; - if (options.merge && this.hasUndo()){ - deltas = this.$undoStack.pop().concat(deltas); - } - this.$undoStack.push(deltas); - this.$redoStack = []; - - if (this.dirtyCounter < 0) { - this.dirtyCounter = NaN; - } - this.dirtyCounter++; - }; - this.undo = function(dontSelect) { - var deltas = this.$undoStack.pop(); - var undoSelectionRange = null; - if (deltas) { - undoSelectionRange = - this.$doc.undoChanges(deltas, dontSelect); - this.$redoStack.push(deltas); - this.dirtyCounter--; - } - - return undoSelectionRange; - }; - this.redo = function(dontSelect) { - var deltas = this.$redoStack.pop(); - var redoSelectionRange = null; - if (deltas) { - redoSelectionRange = - this.$doc.redoChanges(deltas, dontSelect); - this.$undoStack.push(deltas); - this.dirtyCounter++; - } - - return redoSelectionRange; - }; - this.reset = function() { - this.$undoStack = []; - this.$redoStack = []; - this.dirtyCounter = 0; - }; - this.hasUndo = function() { - return this.$undoStack.length > 0; - }; - this.hasRedo = function() { - return this.$redoStack.length > 0; - }; - this.markClean = function() { - this.dirtyCounter = 0; - }; - this.isClean = function() { - return this.dirtyCounter === 0; - }; - -}).call(UndoManager.prototype); - -exports.UndoManager = UndoManager; -}); - -ace.define('ace/virtual_renderer', ['require', 'exports', 'module' , 'ace/lib/oop', 'ace/lib/dom', 'ace/lib/useragent', 'ace/config', 'ace/layer/gutter', 'ace/layer/marker', 'ace/layer/text', 'ace/layer/cursor', 'ace/scrollbar', 'ace/renderloop', 'ace/lib/event_emitter'], function(require, exports, module) { - - -var oop = require("./lib/oop"); -var dom = require("./lib/dom"); -var useragent = require("./lib/useragent"); -var config = require("./config"); -var GutterLayer = require("./layer/gutter").Gutter; -var MarkerLayer = require("./layer/marker").Marker; -var TextLayer = require("./layer/text").Text; -var CursorLayer = require("./layer/cursor").Cursor; -var HScrollBar = require("./scrollbar").HScrollBar; -var VScrollBar = require("./scrollbar").VScrollBar; -var RenderLoop = require("./renderloop").RenderLoop; -var EventEmitter = require("./lib/event_emitter").EventEmitter; -var editorCss = ".ace_editor {\ -position: relative;\ -overflow: hidden;\ -font-family: 'Monaco', 'Menlo', 'Ubuntu Mono', 'Consolas', 'source-code-pro', monospace;\ -font-size: 12px;\ -line-height: normal;\ -color: black;\ -}\ -.ace_editor .ace_line {\ -direction: ltr;\ -unicode-bidi: bidi-override;\ -}\ -.ace_scroller {\ -position: absolute;\ -overflow: hidden;\ -top: 0;\ -bottom: 0;\ -background-color: inherit;\ --ms-user-select: none;\ --moz-user-select: none;\ --webkit-user-select: none;\ -user-select: none;\ -}\ -.ace_content {\ -position: absolute;\ --moz-box-sizing: border-box;\ --webkit-box-sizing: border-box;\ -box-sizing: border-box;\ -cursor: text;\ -min-width: 100%;\ -}\ -.ace_dragging, .ace_dragging * {\ -cursor: move !important;\ -}\ -.ace_dragging .ace_scroller:before{\ -position: absolute;\ -top: 0;\ -left: 0;\ -right: 0;\ -bottom: 0;\ -content: '';\ -background: rgba(250, 250, 250, 0.01);\ -z-index: 1000;\ -}\ -.ace_dragging.ace_dark .ace_scroller:before{\ -background: rgba(0, 0, 0, 0.01);\ -}\ -.ace_selecting, .ace_selecting * {\ -cursor: text !important;\ -}\ -.ace_gutter {\ -position: absolute;\ -overflow : hidden;\ -width: auto;\ -top: 0;\ -bottom: 0;\ -left: 0;\ -cursor: default;\ -z-index: 4;\ -}\ -.ace_gutter-active-line {\ -position: absolute;\ -left: 0;\ -right: 0;\ -}\ -.ace_scroller.ace_scroll-left {\ -box-shadow: 17px 0 16px -16px rgba(0, 0, 0, 0.4) inset;\ -}\ -.ace_gutter-cell {\ -padding-left: 19px;\ -padding-right: 6px;\ -background-repeat: no-repeat;\ -}\ -.ace_gutter-cell.ace_error {\ -background-image: url(\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyJpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMC1jMDYwIDYxLjEzNDc3NywgMjAxMC8wMi8xMi0xNzozMjowMCAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNSBNYWNpbnRvc2giIHhtcE1NOkluc3RhbmNlSUQ9InhtcC5paWQ6QUM2OEZDQTQ4RTU0MTFFMUEzM0VFRTM2RUY1M0RBMjYiIHhtcE1NOkRvY3VtZW50SUQ9InhtcC5kaWQ6QUM2OEZDQTU4RTU0MTFFMUEzM0VFRTM2RUY1M0RBMjYiPiA8eG1wTU06RGVyaXZlZEZyb20gc3RSZWY6aW5zdGFuY2VJRD0ieG1wLmlpZDpBQzY4RkNBMjhFNTQxMUUxQTMzRUVFMzZFRjUzREEyNiIgc3RSZWY6ZG9jdW1lbnRJRD0ieG1wLmRpZDpBQzY4RkNBMzhFNTQxMUUxQTMzRUVFMzZFRjUzREEyNiIvPiA8L3JkZjpEZXNjcmlwdGlvbj4gPC9yZGY6UkRGPiA8L3g6eG1wbWV0YT4gPD94cGFja2V0IGVuZD0iciI/PkgXxbAAAAJbSURBVHjapFNNaBNBFH4zs5vdZLP5sQmNpT82QY209heh1ioWisaDRcSKF0WKJ0GQnrzrxasHsR6EnlrwD0TagxJabaVEpFYxLWlLSS822tr87m66ccfd2GKyVhA6MMybgfe97/vmPUQphd0sZjto9XIn9OOsvlu2nkqRzVU+6vvlzPf8W6bk8dxQ0NPbxAALgCgg2JkaQuhzQau/El0zbmUA7U0Es8v2CiYmKQJHGO1QICCLoqilMhkmurDAyapKgqItezi/USRdJqEYY4D5jCy03ht2yMkkvL91jTTX10qzyyu2hruPRN7jgbH+EOsXcMLgYiThEgAMhABW85oqy1DXdRIdvP1AHJ2acQXvDIrVHcdQNrEKNYSVMSZGMjEzIIAwDXIo+6G/FxcGnzkC3T2oMhLjre49sBB+RRcHLqdafK6sYdE/GGBwU1VpFNj0aN8pJbe+BkZyevUrvLl6Xmm0W9IuTc0DxrDNAJd5oEvI/KRsNC3bQyNjPO9yQ1YHcfj2QvfQc/5TUhJTBc2iM0U7AWDQtc1nJHvD/cfO2s7jaGkiTEfa/Ep8coLu7zmNmh8+dc5lZDuUeFAGUNA/OY6JVaypQ0vjr7XYjUvJM37vt+j1vuTK5DgVfVUoTjVe+y3/LxMxY2GgU+CSLy4cpfsYorRXuXIOi0Vt40h67uZFTdIo6nLaZcwUJWAzwNS0tBnqqKzQDnjdG/iPyZxo46HaKUpbvYkj8qYRTZsBhge+JHhZyh0x9b95JqjVJkT084kZIPwu/mPWqPgfQ5jXh2+92Ay7HedfAgwA6KDWafb4w3cAAAAASUVORK5CYII=\");\ -background-repeat: no-repeat;\ -background-position: 2px center;\ -}\ -.ace_gutter-cell.ace_warning {\ -background-image: url(\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyJpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMC1jMDYwIDYxLjEzNDc3NywgMjAxMC8wMi8xMi0xNzozMjowMCAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNSBNYWNpbnRvc2giIHhtcE1NOkluc3RhbmNlSUQ9InhtcC5paWQ6QUM2OEZDQTg4RTU0MTFFMUEzM0VFRTM2RUY1M0RBMjYiIHhtcE1NOkRvY3VtZW50SUQ9InhtcC5kaWQ6QUM2OEZDQTk4RTU0MTFFMUEzM0VFRTM2RUY1M0RBMjYiPiA8eG1wTU06RGVyaXZlZEZyb20gc3RSZWY6aW5zdGFuY2VJRD0ieG1wLmlpZDpBQzY4RkNBNjhFNTQxMUUxQTMzRUVFMzZFRjUzREEyNiIgc3RSZWY6ZG9jdW1lbnRJRD0ieG1wLmRpZDpBQzY4RkNBNzhFNTQxMUUxQTMzRUVFMzZFRjUzREEyNiIvPiA8L3JkZjpEZXNjcmlwdGlvbj4gPC9yZGY6UkRGPiA8L3g6eG1wbWV0YT4gPD94cGFja2V0IGVuZD0iciI/Pgd7PfIAAAGmSURBVHjaYvr//z8DJZiJgUIANoCRkREb9gLiSVAaQx4OQM7AAkwd7XU2/v++/rOttdYGEB9dASEvOMydGKfH8Gv/p4XTkvRBfLxeQAP+1cUhXopyvzhP7P/IoSj7g7Mw09cNKO6J1QQ0L4gICPIv/veg/8W+JdFvQNLHVsW9/nmn9zk7B+cCkDwhL7gt6knSZnx9/LuCEOcvkIAMP+cvto9nfqyZmmUAksfnBUtbM60gX/3/kgyv3/xSFOL5DZT+L8vP+Yfh5cvfPvp/xUHyQHXGyAYwgpwBjZYFT3Y1OEl/OfCH4ffv3wzc4iwMvNIsDJ+f/mH4+vIPAxsb631WW0Yln6ZpQLXdMK/DXGDflh+sIv37EivD5x//Gb7+YWT4y86sl7BCCkSD+Z++/1dkvsFRl+HnD1Rvje4F8whjMXmGj58YGf5zsDMwcnAwfPvKcml62DsQDeaDxN+/Y0qwlpEHqrdB94IRNIDUgfgfKJChGK4OikEW3gTiXUB950ASLFAF54AC94A0G9QAfOnmF9DCDzABFqS08IHYDIScdijOjQABBgC+/9awBH96jwAAAABJRU5ErkJggg==\");\ -background-position: 2px center;\ -}\ -.ace_gutter-cell.ace_info {\ -background-image: url(\"data:image/gif;base64,R0lGODlhEAAQAMQAAAAAAEFBQVJSUl5eXmRkZGtra39/f4WFhYmJiZGRkaampry8vMPDw8zMzNXV1dzc3OTk5Orq6vDw8P///wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAkAABQALAAAAAAQABAAAAUuICWOZGmeaBml5XGwFCQSBGyXRSAwtqQIiRuiwIM5BoYVbEFIyGCQoeJGrVptIQA7\");\ -background-position: 2px center;\ -}\ -.ace_dark .ace_gutter-cell.ace_info {\ -background-image: url(\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyRpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMy1jMDExIDY2LjE0NTY2MSwgMjAxMi8wMi8wNi0xNDo1NjoyNyAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNiAoTWFjaW50b3NoKSIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDpGRTk5MTVGREIxNDkxMUUxOTc5Q0FFREQyMTNGMjBFQyIgeG1wTU06RG9jdW1lbnRJRD0ieG1wLmRpZDpGRTk5MTVGRUIxNDkxMUUxOTc5Q0FFREQyMTNGMjBFQyI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOkZFOTkxNUZCQjE0OTExRTE5NzlDQUVERDIxM0YyMEVDIiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOkZFOTkxNUZDQjE0OTExRTE5NzlDQUVERDIxM0YyMEVDIi8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+SIDkjAAAAJ1JREFUeNpi/P//PwMlgImBQkB7A6qrq/+DMC55FkIGKCoq4pVnpFkgTp069f/+/fv/r1u37r+tre1/kg0A+ptn9uzZYLaRkRHpLvjw4cNXWVlZhufPnzOcO3eOdAO0tbVPAjHDmzdvGA4fPsxIsgGSkpJmv379Ynj37h2DjIyMCMkG3LhxQ/T27dsMampqDHZ2dq/pH41DxwCAAAMAFdc68dUsFZgAAAAASUVORK5CYII=\");\ -}\ -.ace_scrollbar {\ -position: absolute;\ -right: 0;\ -bottom: 0;\ -z-index: 6;\ -}\ -.ace_scrollbar-inner {\ -position: absolute;\ -cursor: text;\ -left: 0;\ -top: 0;\ -}\ -.ace_scrollbar-v{\ -overflow-x: hidden;\ -overflow-y: scroll;\ -top: 0;\ -}\ -.ace_scrollbar-h {\ -overflow-x: scroll;\ -overflow-y: hidden;\ -left: 0;\ -}\ -.ace_print-margin {\ -position: absolute;\ -height: 100%;\ -}\ -.ace_text-input {\ -position: absolute;\ -z-index: 0;\ -width: 0.5em;\ -height: 1em;\ -opacity: 0;\ -background: transparent;\ --moz-appearance: none;\ -appearance: none;\ -border: none;\ -resize: none;\ -outline: none;\ -overflow: hidden;\ -font: inherit;\ -padding: 0 1px;\ -margin: 0 -1px;\ -text-indent: -1em;\ --ms-user-select: text;\ --moz-user-select: text;\ --webkit-user-select: text;\ -user-select: text;\ -}\ -.ace_text-input.ace_composition {\ -background: #f8f8f8;\ -color: #111;\ -z-index: 1000;\ -opacity: 1;\ -text-indent: 0;\ -}\ -.ace_layer {\ -z-index: 1;\ -position: absolute;\ -overflow: hidden;\ -white-space: pre;\ -height: 100%;\ -width: 100%;\ --moz-box-sizing: border-box;\ --webkit-box-sizing: border-box;\ -box-sizing: border-box;\ -/* setting pointer-events: auto; on node under the mouse, which changes\ -during scroll, will break mouse wheel scrolling in Safari */\ -pointer-events: none;\ -}\ -.ace_gutter-layer {\ -position: relative;\ -width: auto;\ -text-align: right;\ -pointer-events: auto;\ -}\ -.ace_text-layer {\ -font: inherit !important;\ -}\ -.ace_cjk {\ -display: inline-block;\ -text-align: center;\ -}\ -.ace_cursor-layer {\ -z-index: 4;\ -}\ -.ace_cursor {\ -z-index: 4;\ -position: absolute;\ --moz-box-sizing: border-box;\ --webkit-box-sizing: border-box;\ -box-sizing: border-box;\ -border-left: 2px solid\ -}\ -.ace_slim-cursors .ace_cursor {\ -border-left-width: 1px;\ -}\ -.ace_overwrite-cursors .ace_cursor {\ -border-left-width: 0px;\ -border-bottom: 1px solid;\ -}\ -.ace_hidden-cursors .ace_cursor {\ -opacity: 0.2;\ -}\ -.ace_smooth-blinking .ace_cursor {\ --moz-transition: opacity 0.18s;\ --webkit-transition: opacity 0.18s;\ --o-transition: opacity 0.18s;\ --ms-transition: opacity 0.18s;\ -transition: opacity 0.18s;\ -}\ -.ace_cursor[style*=\"opacity: 0\"]{\ --ms-filter: \"progid:DXImageTransform.Microsoft.Alpha(Opacity=0)\";\ -}\ -.ace_editor.ace_multiselect .ace_cursor {\ -border-left-width: 1px;\ -}\ -.ace_marker-layer .ace_step, .ace_marker-layer .ace_stack {\ -position: absolute;\ -z-index: 3;\ -}\ -.ace_marker-layer .ace_selection {\ -position: absolute;\ -z-index: 5;\ -}\ -.ace_marker-layer .ace_bracket {\ -position: absolute;\ -z-index: 6;\ -}\ -.ace_marker-layer .ace_active-line {\ -position: absolute;\ -z-index: 2;\ -}\ -.ace_marker-layer .ace_selected-word {\ -position: absolute;\ -z-index: 4;\ --moz-box-sizing: border-box;\ --webkit-box-sizing: border-box;\ -box-sizing: border-box;\ -}\ -.ace_line .ace_fold {\ --moz-box-sizing: border-box;\ --webkit-box-sizing: border-box;\ -box-sizing: border-box;\ -display: inline-block;\ -height: 11px;\ -margin-top: -2px;\ -vertical-align: middle;\ -background-image:\ -url(\"data:image/png,%89PNG%0D%0A%1A%0A%00%00%00%0DIHDR%00%00%00%11%00%00%00%09%08%06%00%00%00%D4%E8%C7%0C%00%00%03%1EiCCPICC%20Profile%00%00x%01%85T%DFk%D3P%14%FE%DAe%9D%B0%E1%8B%3Ag%11%09%3Eh%91ndStC%9C%B6kW%BA%CDZ%EA6%B7!H%9B%A6m%5C%9A%C6%24%ED~%B0%07%D9%8Bo%3A%C5w%F1%07%3E%F9%07%0C%D9%83o%7B%92%0D%C6%14a%F8%AC%88%22L%F6%22%B3%9E%9B4M'S%03%B9%F7%BB%DF%F9%EE9'%E7%E4%5E%A0%F9qZ%D3%14%2F%0F%14USO%C5%C2%FC%C4%E4%14%DF%F2%01%5E%1CC%2B%FChM%8B%86%16J%26G%40%0F%D3%B2y%EF%B3%F3%0E%1E%C6lt%EEo%DF%AB%FEc%D5%9A%95%0C%11%F0%1C%20%BE%945%C4%22%E1Y%A0i%5C%D4t%13%E0%D6%89%EF%9D15%C2%CDLsX%A7%04%09%1Fg8oc%81%E1%8C%8D%23%96f45%40%9A%09%C2%07%C5B%3AK%B8%408%98i%E0%F3%0D%D8%CE%81%14%E4'%26%A9%92.%8B%3C%ABER%2F%E5dE%B2%0C%F6%F0%1Fs%83%F2_%B0%A8%94%E9%9B%AD%E7%10%8Dm%9A%19N%D1%7C%8A%DE%1F9%7Dp%8C%E6%00%D5%C1%3F_%18%BDA%B8%9DpX6%E3%A35~B%CD%24%AE%11%26%BD%E7%EEti%98%EDe%9A%97Y)%12%25%1C%24%BCbT%AE3li%E6%0B%03%89%9A%E6%D3%ED%F4P%92%B0%9F4%BF43Y%F3%E3%EDP%95%04%EB1%C5%F5%F6KF%F4%BA%BD%D7%DB%91%93%07%E35%3E%A7)%D6%7F%40%FE%BD%F7%F5r%8A%E5y%92%F0%EB%B4%1E%8D%D5%F4%5B%92%3AV%DB%DB%E4%CD%A6%23%C3%C4wQ%3F%03HB%82%8E%1Cd(%E0%91B%0Ca%9Ac%C4%AA%F8L%16%19%22J%A4%D2itTy%B28%D6%3B(%93%96%ED%1CGx%C9_%0E%B8%5E%16%F5%5B%B2%B8%F6%E0%FB%9E%DD%25%D7%8E%BC%15%85%C5%B7%A3%D8Q%ED%B5%81%E9%BA%B2%13%9A%1B%7Fua%A5%A3n%E17%B9%E5%9B%1Bm%AB%0B%08Q%FE%8A%E5%B1H%5Ee%CAO%82Q%D7u6%E6%90S%97%FCu%0B%CF2%94%EE%25v%12X%0C%BA%AC%F0%5E%F8*l%0AO%85%17%C2%97%BF%D4%C8%CE%DE%AD%11%CB%80q%2C%3E%AB%9ES%CD%C6%EC%25%D2L%D2%EBd%B8%BF%8A%F5B%C6%18%F9%901CZ%9D%BE%24M%9C%8A9%F2%DAP%0B'%06w%82%EB%E6%E2%5C%2F%D7%07%9E%BB%CC%5D%E1%FA%B9%08%AD.r%23%8E%C2%17%F5E%7C!%F0%BE3%BE%3E_%B7o%88a%A7%DB%BE%D3d%EB%A31Z%EB%BB%D3%91%BA%A2%B1z%94%8F%DB'%F6%3D%8E%AA%13%19%B2%B1%BE%B1~V%08%2B%B4%A2cjJ%B3tO%00%03%25mN%97%F3%05%93%EF%11%84%0B%7C%88%AE-%89%8F%ABbW%90O%2B%0Ao%99%0C%5E%97%0CI%AFH%D9.%B0%3B%8F%ED%03%B6S%D6%5D%E6i_s9%F3*p%E9%1B%FD%C3%EB.7U%06%5E%19%C0%D1s.%17%A03u%E4%09%B0%7C%5E%2C%EB%15%DB%1F%3C%9E%B7%80%91%3B%DBc%AD%3Dma%BA%8B%3EV%AB%DBt.%5B%1E%01%BB%0F%AB%D5%9F%CF%AA%D5%DD%E7%E4%7F%0Bx%A3%FC%06%A9%23%0A%D6%C2%A1_2%00%00%00%09pHYs%00%00%0B%13%00%00%0B%13%01%00%9A%9C%18%00%00%00%B5IDAT(%15%A5%91%3D%0E%02!%10%85ac%E1%05%D6%CE%D6%C6%CE%D2%E8%ED%CD%DE%C0%C6%D6N.%E0V%F8%3D%9Ca%891XH%C2%BE%D9y%3F%90!%E6%9C%C3%BFk%E5%011%C6-%F5%C8N%04%DF%BD%FF%89%DFt%83DN%60%3E%F3%AB%A0%DE%1A%5Dg%BE%10Q%97%1B%40%9C%A8o%10%8F%5E%828%B4%1B%60%87%F6%02%26%85%1Ch%1E%C1%2B%5Bk%FF%86%EE%B7j%09%9A%DA%9B%ACe%A3%F9%EC%DA!9%B4%D5%A6%81%86%86%98%CC%3C%5B%40%FA%81%B3%E9%CB%23%94%C16Azo%05%D4%E1%C1%95a%3B%8A'%A0%E8%CC%17%22%85%1D%BA%00%A2%FA%DC%0A%94%D1%D1%8D%8B%3A%84%17B%C7%60%1A%25Z%FC%8D%00%00%00%00IEND%AEB%60%82\"),\ -url(\"data:image/png,%89PNG%0D%0A%1A%0A%00%00%00%0DIHDR%00%00%00%05%00%00%007%08%06%00%00%00%C4%DD%80C%00%00%03%1EiCCPICC%20Profile%00%00x%01%85T%DFk%D3P%14%FE%DAe%9D%B0%E1%8B%3Ag%11%09%3Eh%91ndStC%9C%B6kW%BA%CDZ%EA6%B7!H%9B%A6m%5C%9A%C6%24%ED~%B0%07%D9%8Bo%3A%C5w%F1%07%3E%F9%07%0C%D9%83o%7B%92%0D%C6%14a%F8%AC%88%22L%F6%22%B3%9E%9B4M'S%03%B9%F7%BB%DF%F9%EE9'%E7%E4%5E%A0%F9qZ%D3%14%2F%0F%14USO%C5%C2%FC%C4%E4%14%DF%F2%01%5E%1CC%2B%FChM%8B%86%16J%26G%40%0F%D3%B2y%EF%B3%F3%0E%1E%C6lt%EEo%DF%AB%FEc%D5%9A%95%0C%11%F0%1C%20%BE%945%C4%22%E1Y%A0i%5C%D4t%13%E0%D6%89%EF%9D15%C2%CDLsX%A7%04%09%1Fg8oc%81%E1%8C%8D%23%96f45%40%9A%09%C2%07%C5B%3AK%B8%408%98i%E0%F3%0D%D8%CE%81%14%E4'%26%A9%92.%8B%3C%ABER%2F%E5dE%B2%0C%F6%F0%1Fs%83%F2_%B0%A8%94%E9%9B%AD%E7%10%8Dm%9A%19N%D1%7C%8A%DE%1F9%7Dp%8C%E6%00%D5%C1%3F_%18%BDA%B8%9DpX6%E3%A35~B%CD%24%AE%11%26%BD%E7%EEti%98%EDe%9A%97Y)%12%25%1C%24%BCbT%AE3li%E6%0B%03%89%9A%E6%D3%ED%F4P%92%B0%9F4%BF43Y%F3%E3%EDP%95%04%EB1%C5%F5%F6KF%F4%BA%BD%D7%DB%91%93%07%E35%3E%A7)%D6%7F%40%FE%BD%F7%F5r%8A%E5y%92%F0%EB%B4%1E%8D%D5%F4%5B%92%3AV%DB%DB%E4%CD%A6%23%C3%C4wQ%3F%03HB%82%8E%1Cd(%E0%91B%0Ca%9Ac%C4%AA%F8L%16%19%22J%A4%D2itTy%B28%D6%3B(%93%96%ED%1CGx%C9_%0E%B8%5E%16%F5%5B%B2%B8%F6%E0%FB%9E%DD%25%D7%8E%BC%15%85%C5%B7%A3%D8Q%ED%B5%81%E9%BA%B2%13%9A%1B%7Fua%A5%A3n%E17%B9%E5%9B%1Bm%AB%0B%08Q%FE%8A%E5%B1H%5Ee%CAO%82Q%D7u6%E6%90S%97%FCu%0B%CF2%94%EE%25v%12X%0C%BA%AC%F0%5E%F8*l%0AO%85%17%C2%97%BF%D4%C8%CE%DE%AD%11%CB%80q%2C%3E%AB%9ES%CD%C6%EC%25%D2L%D2%EBd%B8%BF%8A%F5B%C6%18%F9%901CZ%9D%BE%24M%9C%8A9%F2%DAP%0B'%06w%82%EB%E6%E2%5C%2F%D7%07%9E%BB%CC%5D%E1%FA%B9%08%AD.r%23%8E%C2%17%F5E%7C!%F0%BE3%BE%3E_%B7o%88a%A7%DB%BE%D3d%EB%A31Z%EB%BB%D3%91%BA%A2%B1z%94%8F%DB'%F6%3D%8E%AA%13%19%B2%B1%BE%B1~V%08%2B%B4%A2cjJ%B3tO%00%03%25mN%97%F3%05%93%EF%11%84%0B%7C%88%AE-%89%8F%ABbW%90O%2B%0Ao%99%0C%5E%97%0CI%AFH%D9.%B0%3B%8F%ED%03%B6S%D6%5D%E6i_s9%F3*p%E9%1B%FD%C3%EB.7U%06%5E%19%C0%D1s.%17%A03u%E4%09%B0%7C%5E%2C%EB%15%DB%1F%3C%9E%B7%80%91%3B%DBc%AD%3Dma%BA%8B%3EV%AB%DBt.%5B%1E%01%BB%0F%AB%D5%9F%CF%AA%D5%DD%E7%E4%7F%0Bx%A3%FC%06%A9%23%0A%D6%C2%A1_2%00%00%00%09pHYs%00%00%0B%13%00%00%0B%13%01%00%9A%9C%18%00%00%00%3AIDAT8%11c%FC%FF%FF%7F%18%03%1A%60%01%F2%3F%A0%891%80%04%FF%11-%F8%17%9BJ%E2%05%B1ZD%81v%26t%E7%80%F8%A3%82h%A12%1A%20%A3%01%02%0F%01%BA%25%06%00%19%C0%0D%AEF%D5%3ES%00%00%00%00IEND%AEB%60%82\");\ -background-repeat: no-repeat, repeat-x;\ -background-position: center center, top left;\ -color: transparent;\ -border: 1px solid black;\ --moz-border-radius: 2px;\ --webkit-border-radius: 2px;\ -border-radius: 2px;\ -cursor: pointer;\ -pointer-events: auto;\ -}\ -.ace_dark .ace_fold {\ -}\ -.ace_fold:hover{\ -background-image:\ -url(\"data:image/png,%89PNG%0D%0A%1A%0A%00%00%00%0DIHDR%00%00%00%11%00%00%00%09%08%06%00%00%00%D4%E8%C7%0C%00%00%03%1EiCCPICC%20Profile%00%00x%01%85T%DFk%D3P%14%FE%DAe%9D%B0%E1%8B%3Ag%11%09%3Eh%91ndStC%9C%B6kW%BA%CDZ%EA6%B7!H%9B%A6m%5C%9A%C6%24%ED~%B0%07%D9%8Bo%3A%C5w%F1%07%3E%F9%07%0C%D9%83o%7B%92%0D%C6%14a%F8%AC%88%22L%F6%22%B3%9E%9B4M'S%03%B9%F7%BB%DF%F9%EE9'%E7%E4%5E%A0%F9qZ%D3%14%2F%0F%14USO%C5%C2%FC%C4%E4%14%DF%F2%01%5E%1CC%2B%FChM%8B%86%16J%26G%40%0F%D3%B2y%EF%B3%F3%0E%1E%C6lt%EEo%DF%AB%FEc%D5%9A%95%0C%11%F0%1C%20%BE%945%C4%22%E1Y%A0i%5C%D4t%13%E0%D6%89%EF%9D15%C2%CDLsX%A7%04%09%1Fg8oc%81%E1%8C%8D%23%96f45%40%9A%09%C2%07%C5B%3AK%B8%408%98i%E0%F3%0D%D8%CE%81%14%E4'%26%A9%92.%8B%3C%ABER%2F%E5dE%B2%0C%F6%F0%1Fs%83%F2_%B0%A8%94%E9%9B%AD%E7%10%8Dm%9A%19N%D1%7C%8A%DE%1F9%7Dp%8C%E6%00%D5%C1%3F_%18%BDA%B8%9DpX6%E3%A35~B%CD%24%AE%11%26%BD%E7%EEti%98%EDe%9A%97Y)%12%25%1C%24%BCbT%AE3li%E6%0B%03%89%9A%E6%D3%ED%F4P%92%B0%9F4%BF43Y%F3%E3%EDP%95%04%EB1%C5%F5%F6KF%F4%BA%BD%D7%DB%91%93%07%E35%3E%A7)%D6%7F%40%FE%BD%F7%F5r%8A%E5y%92%F0%EB%B4%1E%8D%D5%F4%5B%92%3AV%DB%DB%E4%CD%A6%23%C3%C4wQ%3F%03HB%82%8E%1Cd(%E0%91B%0Ca%9Ac%C4%AA%F8L%16%19%22J%A4%D2itTy%B28%D6%3B(%93%96%ED%1CGx%C9_%0E%B8%5E%16%F5%5B%B2%B8%F6%E0%FB%9E%DD%25%D7%8E%BC%15%85%C5%B7%A3%D8Q%ED%B5%81%E9%BA%B2%13%9A%1B%7Fua%A5%A3n%E17%B9%E5%9B%1Bm%AB%0B%08Q%FE%8A%E5%B1H%5Ee%CAO%82Q%D7u6%E6%90S%97%FCu%0B%CF2%94%EE%25v%12X%0C%BA%AC%F0%5E%F8*l%0AO%85%17%C2%97%BF%D4%C8%CE%DE%AD%11%CB%80q%2C%3E%AB%9ES%CD%C6%EC%25%D2L%D2%EBd%B8%BF%8A%F5B%C6%18%F9%901CZ%9D%BE%24M%9C%8A9%F2%DAP%0B'%06w%82%EB%E6%E2%5C%2F%D7%07%9E%BB%CC%5D%E1%FA%B9%08%AD.r%23%8E%C2%17%F5E%7C!%F0%BE3%BE%3E_%B7o%88a%A7%DB%BE%D3d%EB%A31Z%EB%BB%D3%91%BA%A2%B1z%94%8F%DB'%F6%3D%8E%AA%13%19%B2%B1%BE%B1~V%08%2B%B4%A2cjJ%B3tO%00%03%25mN%97%F3%05%93%EF%11%84%0B%7C%88%AE-%89%8F%ABbW%90O%2B%0Ao%99%0C%5E%97%0CI%AFH%D9.%B0%3B%8F%ED%03%B6S%D6%5D%E6i_s9%F3*p%E9%1B%FD%C3%EB.7U%06%5E%19%C0%D1s.%17%A03u%E4%09%B0%7C%5E%2C%EB%15%DB%1F%3C%9E%B7%80%91%3B%DBc%AD%3Dma%BA%8B%3EV%AB%DBt.%5B%1E%01%BB%0F%AB%D5%9F%CF%AA%D5%DD%E7%E4%7F%0Bx%A3%FC%06%A9%23%0A%D6%C2%A1_2%00%00%00%09pHYs%00%00%0B%13%00%00%0B%13%01%00%9A%9C%18%00%00%00%B5IDAT(%15%A5%91%3D%0E%02!%10%85ac%E1%05%D6%CE%D6%C6%CE%D2%E8%ED%CD%DE%C0%C6%D6N.%E0V%F8%3D%9Ca%891XH%C2%BE%D9y%3F%90!%E6%9C%C3%BFk%E5%011%C6-%F5%C8N%04%DF%BD%FF%89%DFt%83DN%60%3E%F3%AB%A0%DE%1A%5Dg%BE%10Q%97%1B%40%9C%A8o%10%8F%5E%828%B4%1B%60%87%F6%02%26%85%1Ch%1E%C1%2B%5Bk%FF%86%EE%B7j%09%9A%DA%9B%ACe%A3%F9%EC%DA!9%B4%D5%A6%81%86%86%98%CC%3C%5B%40%FA%81%B3%E9%CB%23%94%C16Azo%05%D4%E1%C1%95a%3B%8A'%A0%E8%CC%17%22%85%1D%BA%00%A2%FA%DC%0A%94%D1%D1%8D%8B%3A%84%17B%C7%60%1A%25Z%FC%8D%00%00%00%00IEND%AEB%60%82\"),\ -url(\"data:image/png,%89PNG%0D%0A%1A%0A%00%00%00%0DIHDR%00%00%00%05%00%00%007%08%06%00%00%00%C4%DD%80C%00%00%03%1EiCCPICC%20Profile%00%00x%01%85T%DFk%D3P%14%FE%DAe%9D%B0%E1%8B%3Ag%11%09%3Eh%91ndStC%9C%B6kW%BA%CDZ%EA6%B7!H%9B%A6m%5C%9A%C6%24%ED~%B0%07%D9%8Bo%3A%C5w%F1%07%3E%F9%07%0C%D9%83o%7B%92%0D%C6%14a%F8%AC%88%22L%F6%22%B3%9E%9B4M'S%03%B9%F7%BB%DF%F9%EE9'%E7%E4%5E%A0%F9qZ%D3%14%2F%0F%14USO%C5%C2%FC%C4%E4%14%DF%F2%01%5E%1CC%2B%FChM%8B%86%16J%26G%40%0F%D3%B2y%EF%B3%F3%0E%1E%C6lt%EEo%DF%AB%FEc%D5%9A%95%0C%11%F0%1C%20%BE%945%C4%22%E1Y%A0i%5C%D4t%13%E0%D6%89%EF%9D15%C2%CDLsX%A7%04%09%1Fg8oc%81%E1%8C%8D%23%96f45%40%9A%09%C2%07%C5B%3AK%B8%408%98i%E0%F3%0D%D8%CE%81%14%E4'%26%A9%92.%8B%3C%ABER%2F%E5dE%B2%0C%F6%F0%1Fs%83%F2_%B0%A8%94%E9%9B%AD%E7%10%8Dm%9A%19N%D1%7C%8A%DE%1F9%7Dp%8C%E6%00%D5%C1%3F_%18%BDA%B8%9DpX6%E3%A35~B%CD%24%AE%11%26%BD%E7%EEti%98%EDe%9A%97Y)%12%25%1C%24%BCbT%AE3li%E6%0B%03%89%9A%E6%D3%ED%F4P%92%B0%9F4%BF43Y%F3%E3%EDP%95%04%EB1%C5%F5%F6KF%F4%BA%BD%D7%DB%91%93%07%E35%3E%A7)%D6%7F%40%FE%BD%F7%F5r%8A%E5y%92%F0%EB%B4%1E%8D%D5%F4%5B%92%3AV%DB%DB%E4%CD%A6%23%C3%C4wQ%3F%03HB%82%8E%1Cd(%E0%91B%0Ca%9Ac%C4%AA%F8L%16%19%22J%A4%D2itTy%B28%D6%3B(%93%96%ED%1CGx%C9_%0E%B8%5E%16%F5%5B%B2%B8%F6%E0%FB%9E%DD%25%D7%8E%BC%15%85%C5%B7%A3%D8Q%ED%B5%81%E9%BA%B2%13%9A%1B%7Fua%A5%A3n%E17%B9%E5%9B%1Bm%AB%0B%08Q%FE%8A%E5%B1H%5Ee%CAO%82Q%D7u6%E6%90S%97%FCu%0B%CF2%94%EE%25v%12X%0C%BA%AC%F0%5E%F8*l%0AO%85%17%C2%97%BF%D4%C8%CE%DE%AD%11%CB%80q%2C%3E%AB%9ES%CD%C6%EC%25%D2L%D2%EBd%B8%BF%8A%F5B%C6%18%F9%901CZ%9D%BE%24M%9C%8A9%F2%DAP%0B'%06w%82%EB%E6%E2%5C%2F%D7%07%9E%BB%CC%5D%E1%FA%B9%08%AD.r%23%8E%C2%17%F5E%7C!%F0%BE3%BE%3E_%B7o%88a%A7%DB%BE%D3d%EB%A31Z%EB%BB%D3%91%BA%A2%B1z%94%8F%DB'%F6%3D%8E%AA%13%19%B2%B1%BE%B1~V%08%2B%B4%A2cjJ%B3tO%00%03%25mN%97%F3%05%93%EF%11%84%0B%7C%88%AE-%89%8F%ABbW%90O%2B%0Ao%99%0C%5E%97%0CI%AFH%D9.%B0%3B%8F%ED%03%B6S%D6%5D%E6i_s9%F3*p%E9%1B%FD%C3%EB.7U%06%5E%19%C0%D1s.%17%A03u%E4%09%B0%7C%5E%2C%EB%15%DB%1F%3C%9E%B7%80%91%3B%DBc%AD%3Dma%BA%8B%3EV%AB%DBt.%5B%1E%01%BB%0F%AB%D5%9F%CF%AA%D5%DD%E7%E4%7F%0Bx%A3%FC%06%A9%23%0A%D6%C2%A1_2%00%00%00%09pHYs%00%00%0B%13%00%00%0B%13%01%00%9A%9C%18%00%00%003IDAT8%11c%FC%FF%FF%7F%3E%03%1A%60%01%F2%3F%A3%891%80%04%FFQ%26%F8w%C0%B43%A1%DB%0C%E2%8F%0A%A2%85%CAh%80%8C%06%08%3C%04%E8%96%18%00%A3S%0D%CD%CF%D8%C1%9D%00%00%00%00IEND%AEB%60%82\");\ -background-repeat: no-repeat, repeat-x;\ -background-position: center center, top left;\ -}\ -.ace_gutter-tooltip {\ -background-color: #FFF;\ -background-image: -webkit-linear-gradient(top, transparent, rgba(0, 0, 0, 0.1));\ -background-image: linear-gradient(to bottom, transparent, rgba(0, 0, 0, 0.1));\ -border: 1px solid gray;\ -border-radius: 1px;\ -box-shadow: 0 1px 2px rgba(0, 0, 0, 0.3);\ -color: black;\ -display: inline-block;\ -max-width: 500px;\ -padding: 4px;\ -position: fixed;\ -z-index: 999999;\ --moz-box-sizing: border-box;\ --webkit-box-sizing: border-box;\ -box-sizing: border-box;\ -cursor: default;\ -white-space: pre-line;\ -word-wrap: break-word;\ -line-height: normal;\ -font-style: normal;\ -font-weight: normal;\ -letter-spacing: normal;\ -}\ -.ace_folding-enabled > .ace_gutter-cell {\ -padding-right: 13px;\ -}\ -.ace_fold-widget {\ --moz-box-sizing: border-box;\ --webkit-box-sizing: border-box;\ -box-sizing: border-box;\ -margin: 0 -12px 0 1px;\ -display: none;\ -width: 11px;\ -vertical-align: top;\ -background-image: url(\"data:image/png,%89PNG%0D%0A%1A%0A%00%00%00%0DIHDR%00%00%00%05%00%00%00%05%08%06%00%00%00%8Do%26%E5%00%00%004IDATx%DAe%8A%B1%0D%000%0C%C2%F2%2CK%96%BC%D0%8F9%81%88H%E9%D0%0E%96%C0%10%92%3E%02%80%5E%82%E4%A9*-%EEsw%C8%CC%11%EE%96w%D8%DC%E9*Eh%0C%151(%00%00%00%00IEND%AEB%60%82\");\ -background-repeat: no-repeat;\ -background-position: center;\ -border-radius: 3px;\ -border: 1px solid transparent;\ -cursor: pointer;\ -}\ -.ace_folding-enabled .ace_fold-widget {\ -display: inline-block; \ -}\ -.ace_fold-widget.ace_end {\ -background-image: url(\"data:image/png,%89PNG%0D%0A%1A%0A%00%00%00%0DIHDR%00%00%00%05%00%00%00%05%08%06%00%00%00%8Do%26%E5%00%00%004IDATx%DAm%C7%C1%09%000%08C%D1%8C%ECE%C8E(%8E%EC%02)%1EZJ%F1%C1'%04%07I%E1%E5%EE%CAL%F5%A2%99%99%22%E2%D6%1FU%B5%FE0%D9x%A7%26Wz5%0E%D5%00%00%00%00IEND%AEB%60%82\");\ -}\ -.ace_fold-widget.ace_closed {\ -background-image: url(\"data:image/png,%89PNG%0D%0A%1A%0A%00%00%00%0DIHDR%00%00%00%03%00%00%00%06%08%06%00%00%00%06%E5%24%0C%00%00%009IDATx%DA5%CA%C1%09%000%08%03%C0%AC*(%3E%04%C1%0D%BA%B1%23%A4Uh%E0%20%81%C0%CC%F8%82%81%AA%A2%AArGfr%88%08%11%11%1C%DD%7D%E0%EE%5B%F6%F6%CB%B8%05Q%2F%E9tai%D9%00%00%00%00IEND%AEB%60%82\");\ -}\ -.ace_fold-widget:hover {\ -border: 1px solid rgba(0, 0, 0, 0.3);\ -background-color: rgba(255, 255, 255, 0.2);\ --moz-box-shadow: 0 1px 1px rgba(255, 255, 255, 0.7);\ --webkit-box-shadow: 0 1px 1px rgba(255, 255, 255, 0.7);\ -box-shadow: 0 1px 1px rgba(255, 255, 255, 0.7);\ -}\ -.ace_fold-widget:active {\ -border: 1px solid rgba(0, 0, 0, 0.4);\ -background-color: rgba(0, 0, 0, 0.05);\ --moz-box-shadow: 0 1px 1px rgba(255, 255, 255, 0.8);\ --webkit-box-shadow: 0 1px 1px rgba(255, 255, 255, 0.8);\ -box-shadow: 0 1px 1px rgba(255, 255, 255, 0.8);\ -}\ -/**\ -* Dark version for fold widgets\ -*/\ -.ace_dark .ace_fold-widget {\ -background-image: url(\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAUAAAAFCAYAAACNbyblAAAAHklEQVQIW2P4//8/AzoGEQ7oGCaLLAhWiSwB146BAQCSTPYocqT0AAAAAElFTkSuQmCC\");\ -}\ -.ace_dark .ace_fold-widget.ace_end {\ -background-image: url(\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAUAAAAFCAYAAACNbyblAAAAH0lEQVQIW2P4//8/AxQ7wNjIAjDMgC4AxjCVKBirIAAF0kz2rlhxpAAAAABJRU5ErkJggg==\");\ -}\ -.ace_dark .ace_fold-widget.ace_closed {\ -background-image: url(\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAMAAAAFCAYAAACAcVaiAAAAHElEQVQIW2P4//+/AxAzgDADlOOAznHAKgPWAwARji8UIDTfQQAAAABJRU5ErkJggg==\");\ -}\ -.ace_dark .ace_fold-widget:hover {\ -box-shadow: 0 1px 1px rgba(255, 255, 255, 0.2);\ -background-color: rgba(255, 255, 255, 0.1);\ -}\ -.ace_dark .ace_fold-widget:active {\ --moz-box-shadow: 0 1px 1px rgba(255, 255, 255, 0.2);\ --webkit-box-shadow: 0 1px 1px rgba(255, 255, 255, 0.2);\ -box-shadow: 0 1px 1px rgba(255, 255, 255, 0.2);\ -}\ -.ace_fold-widget.ace_invalid {\ -background-color: #FFB4B4;\ -border-color: #DE5555;\ -}\ -.ace_fade-fold-widgets .ace_fold-widget {\ --moz-transition: opacity 0.4s ease 0.05s;\ --webkit-transition: opacity 0.4s ease 0.05s;\ --o-transition: opacity 0.4s ease 0.05s;\ --ms-transition: opacity 0.4s ease 0.05s;\ -transition: opacity 0.4s ease 0.05s;\ -opacity: 0;\ -}\ -.ace_fade-fold-widgets:hover .ace_fold-widget {\ --moz-transition: opacity 0.05s ease 0.05s;\ --webkit-transition: opacity 0.05s ease 0.05s;\ --o-transition: opacity 0.05s ease 0.05s;\ --ms-transition: opacity 0.05s ease 0.05s;\ -transition: opacity 0.05s ease 0.05s;\ -opacity:1;\ -}\ -.ace_underline {\ -text-decoration: underline;\ -}\ -.ace_bold {\ -font-weight: bold;\ -}\ -.ace_nobold .ace_bold {\ -font-weight: normal;\ -}\ -.ace_italic {\ -font-style: italic;\ -}\ -.ace_error-marker {\ -background-color: rgba(255, 0, 0,0.2);\ -position: absolute;\ -z-index: 9;\ -}\ -.ace_highlight-marker {\ -background-color: rgba(255, 255, 0,0.2);\ -position: absolute;\ -z-index: 8;\ -}\ -"; - -dom.importCssString(editorCss, "ace_editor"); - -var VirtualRenderer = function(container, theme) { - var _self = this; - - this.container = container || dom.createElement("div"); - this.$keepTextAreaAtCursor = true; - - dom.addCssClass(this.container, "ace_editor"); - - this.setTheme(theme); - - this.$gutter = dom.createElement("div"); - this.$gutter.className = "ace_gutter"; - this.container.appendChild(this.$gutter); - - this.scroller = dom.createElement("div"); - this.scroller.className = "ace_scroller"; - this.container.appendChild(this.scroller); - - this.content = dom.createElement("div"); - this.content.className = "ace_content"; - this.scroller.appendChild(this.content); - - this.$gutterLayer = new GutterLayer(this.$gutter); - this.$gutterLayer.on("changeGutterWidth", this.onGutterResize.bind(this)); - - this.$markerBack = new MarkerLayer(this.content); - - var textLayer = this.$textLayer = new TextLayer(this.content); - this.canvas = textLayer.element; - - this.$markerFront = new MarkerLayer(this.content); - - this.$cursorLayer = new CursorLayer(this.content); - this.$horizScroll = false; - this.$vScroll = false; - - this.scrollBar = - this.scrollBarV = new VScrollBar(this.container, this); - this.scrollBarH = new HScrollBar(this.container, this); - this.scrollBarV.addEventListener("scroll", function(e) { - if (!_self.$scrollAnimation) - _self.session.setScrollTop(e.data - _self.scrollMargin.top); - }); - this.scrollBarH.addEventListener("scroll", function(e) { - if (!_self.$scrollAnimation) - _self.session.setScrollLeft(e.data - _self.scrollMargin.left); - }); - - this.scrollTop = 0; - this.scrollLeft = 0; - - this.cursorPos = { - row : 0, - column : 0 - }; - - this.$textLayer.addEventListener("changeCharacterSize", function() { - _self.updateCharacterSize(); - _self.onResize(true, _self.gutterWidth, _self.$size.width, _self.$size.height); - _self._signal("changeCharacterSize"); - }); - - this.$size = { - width: 0, - height: 0, - scrollerHeight: 0, - scrollerWidth: 0, - $dirty: true - }; - - this.layerConfig = { - width : 1, - padding : 0, - firstRow : 0, - firstRowScreen: 0, - lastRow : 0, - lineHeight : 0, - characterWidth : 0, - minHeight : 1, - maxHeight : 1, - offset : 0, - height : 1 - }; - - this.scrollMargin = { - left: 0, - right: 0, - top: 0, - bottom: 0, - v: 0, - h: 0 - }; - - this.$loop = new RenderLoop( - this.$renderChanges.bind(this), - this.container.ownerDocument.defaultView - ); - this.$loop.schedule(this.CHANGE_FULL); - - this.updateCharacterSize(); - this.setPadding(4); - config.resetOptions(this); - config._emit("renderer", this); -}; - -(function() { - - this.CHANGE_CURSOR = 1; - this.CHANGE_MARKER = 2; - this.CHANGE_GUTTER = 4; - this.CHANGE_SCROLL = 8; - this.CHANGE_LINES = 16; - this.CHANGE_TEXT = 32; - this.CHANGE_SIZE = 64; - this.CHANGE_MARKER_BACK = 128; - this.CHANGE_MARKER_FRONT = 256; - this.CHANGE_FULL = 512; - this.CHANGE_H_SCROLL = 1024; - - oop.implement(this, EventEmitter); - - this.updateCharacterSize = function() { - if (this.$textLayer.allowBoldFonts != this.$allowBoldFonts) { - this.$allowBoldFonts = this.$textLayer.allowBoldFonts; - this.setStyle("ace_nobold", !this.$allowBoldFonts); - } - - this.layerConfig.characterWidth = - this.characterWidth = this.$textLayer.getCharacterWidth(); - this.layerConfig.lineHeight = - this.lineHeight = this.$textLayer.getLineHeight(); - this.$updatePrintMargin(); - }; - this.setSession = function(session) { - this.session = session; - - if (this.scrollMargin.top && session.getScrollTop() <= 0) - session.setScrollTop(-this.scrollMargin.top); - - this.$cursorLayer.setSession(session); - this.$markerBack.setSession(session); - this.$markerFront.setSession(session); - this.$gutterLayer.setSession(session); - this.$textLayer.setSession(session); - this.$loop.schedule(this.CHANGE_FULL); - }; - this.updateLines = function(firstRow, lastRow) { - if (lastRow === undefined) - lastRow = Infinity; - - if (!this.$changedLines) { - this.$changedLines = { - firstRow: firstRow, - lastRow: lastRow - }; - } - else { - if (this.$changedLines.firstRow > firstRow) - this.$changedLines.firstRow = firstRow; - - if (this.$changedLines.lastRow < lastRow) - this.$changedLines.lastRow = lastRow; - } - - if (this.$changedLines.firstRow > this.layerConfig.lastRow || - this.$changedLines.lastRow < this.layerConfig.firstRow) - return; - this.$loop.schedule(this.CHANGE_LINES); - }; - - this.onChangeTabSize = function() { - this.$loop.schedule(this.CHANGE_TEXT | this.CHANGE_MARKER); - this.$textLayer.onChangeTabSize(); - }; - this.updateText = function() { - this.$loop.schedule(this.CHANGE_TEXT); - }; - this.updateFull = function(force) { - if (force) - this.$renderChanges(this.CHANGE_FULL, true); - else - this.$loop.schedule(this.CHANGE_FULL); - }; - this.updateFontSize = function() { - this.$textLayer.checkForSizeChanges(); - }; - - this.$changes = 0; - this.$updateSizeAsync = function() { - if (this.$loop.pending) - this.$size.$dirty = true; - else - this.onResize(); - }; - this.onResize = function(force, gutterWidth, width, height) { - if (this.resizing > 2) - return; - else if (this.resizing > 0) - this.resizing++; - else - this.resizing = force ? 1 : 0; - var el = this.container; - if (!height) - height = el.clientHeight || el.scrollHeight; - if (!width) - width = el.clientWidth || el.scrollWidth; - var changes = this.$updateCachedSize(force, gutterWidth, width, height); - - if (!this.$size.scrollerHeight || (!width && !height)) - return this.resizing = 0; - - if (force) - this.$gutterLayer.$padding = null; - - if (force) - this.$renderChanges(changes | this.$changes, true); - else - this.$loop.schedule(changes | this.$changes); - - if (this.resizing) - this.resizing = 0; - }; - - this.$updateCachedSize = function(force, gutterWidth, width, height) { - height -= (this.$extraHeight || 0); - var changes = 0; - var size = this.$size; - var oldSize = { - width: size.width, - height: size.height, - scrollerHeight: size.scrollerHeight, - scrollerWidth: size.scrollerWidth - }; - if (height && (force || size.height != height)) { - size.height = height; - changes = this.CHANGE_SIZE; - - size.scrollerHeight = size.height; - if (this.$horizScroll) - size.scrollerHeight -= this.scrollBarH.getHeight(); - this.scrollBarV.element.style.bottom = this.scrollBarH.getHeight() + "px"; - - if (this.session) { - changes = changes | this.CHANGE_SCROLL; - } - } - - if (width && (force || size.width != width)) { - changes = this.CHANGE_SIZE; - size.width = width; - - if (gutterWidth == null) - gutterWidth = this.$showGutter ? this.$gutter.offsetWidth : 0; - - this.gutterWidth = gutterWidth; - - this.scrollBarH.element.style.left = - this.scroller.style.left = gutterWidth + "px"; - size.scrollerWidth = Math.max(0, width - gutterWidth - this.scrollBarV.getWidth()); - - this.scrollBarH.element.style.right = - this.scroller.style.right = this.scrollBarV.getWidth() + "px"; - this.scroller.style.bottom = this.scrollBarH.getHeight() + "px"; - - if (this.session && this.session.getUseWrapMode() && this.adjustWrapLimit() || force) - changes = changes | this.CHANGE_FULL; - } - - size.$dirty = !width || !height; - - if (changes) - this._signal("resize", oldSize); - - return changes; - }; - - this.onGutterResize = function() { - var gutterWidth = this.$showGutter ? this.$gutter.offsetWidth : 0; - if (gutterWidth != this.gutterWidth) - this.$changes |= this.$updateCachedSize(true, gutterWidth, this.$size.width, this.$size.height); - - if (this.session.getUseWrapMode() && this.adjustWrapLimit()) { - this.$loop.schedule(this.CHANGE_FULL); - } else if (this.$size.$dirty) { - this.$loop.schedule(this.CHANGE_FULL); - } else { - this.$computeLayerConfig(); - this.$loop.schedule(this.CHANGE_MARKER); - } - }; - this.adjustWrapLimit = function() { - var availableWidth = this.$size.scrollerWidth - this.$padding * 2; - var limit = Math.floor(availableWidth / this.characterWidth); - return this.session.adjustWrapLimit(limit, this.$showPrintMargin && this.$printMarginColumn); - }; - this.setAnimatedScroll = function(shouldAnimate){ - this.setOption("animatedScroll", shouldAnimate); - }; - this.getAnimatedScroll = function() { - return this.$animatedScroll; - }; - this.setShowInvisibles = function(showInvisibles) { - this.setOption("showInvisibles", showInvisibles); - }; - this.getShowInvisibles = function() { - return this.getOption("showInvisibles"); - }; - this.getDisplayIndentGuides = function() { - return this.getOption("displayIndentGuides"); - }; - - this.setDisplayIndentGuides = function(display) { - this.setOption("displayIndentGuides", display); - }; - this.setShowPrintMargin = function(showPrintMargin) { - this.setOption("showPrintMargin", showPrintMargin); - }; - this.getShowPrintMargin = function() { - return this.getOption("showPrintMargin"); - }; - this.setPrintMarginColumn = function(showPrintMargin) { - this.setOption("printMarginColumn", showPrintMargin); - }; - this.getPrintMarginColumn = function() { - return this.getOption("printMarginColumn"); - }; - this.getShowGutter = function(){ - return this.getOption("showGutter"); - }; - this.setShowGutter = function(show){ - return this.setOption("showGutter", show); - }; - - this.getFadeFoldWidgets = function(){ - return this.getOption("fadeFoldWidgets") - }; - - this.setFadeFoldWidgets = function(show) { - this.setOption("fadeFoldWidgets", show); - }; - - this.setHighlightGutterLine = function(shouldHighlight) { - this.setOption("highlightGutterLine", shouldHighlight); - }; - - this.getHighlightGutterLine = function() { - return this.getOption("highlightGutterLine"); - }; - - this.$updateGutterLineHighlight = function() { - var pos = this.$cursorLayer.$pixelPos; - var height = this.layerConfig.lineHeight; - if (this.session.getUseWrapMode()) { - var cursor = this.session.selection.getCursor(); - cursor.column = 0; - pos = this.$cursorLayer.getPixelPosition(cursor, true); - height *= this.session.getRowLength(cursor.row); - } - this.$gutterLineHighlight.style.top = pos.top - this.layerConfig.offset + "px"; - this.$gutterLineHighlight.style.height = height + "px"; - }; - - this.$updatePrintMargin = function() { - if (!this.$showPrintMargin && !this.$printMarginEl) - return; - - if (!this.$printMarginEl) { - var containerEl = dom.createElement("div"); - containerEl.className = "ace_layer ace_print-margin-layer"; - this.$printMarginEl = dom.createElement("div"); - this.$printMarginEl.className = "ace_print-margin"; - containerEl.appendChild(this.$printMarginEl); - this.content.insertBefore(containerEl, this.content.firstChild); - } - - var style = this.$printMarginEl.style; - style.left = ((this.characterWidth * this.$printMarginColumn) + this.$padding) + "px"; - style.visibility = this.$showPrintMargin ? "visible" : "hidden"; - - if (this.session && this.session.$wrap == -1) - this.adjustWrapLimit(); - }; - this.getContainerElement = function() { - return this.container; - }; - this.getMouseEventTarget = function() { - return this.content; - }; - this.getTextAreaContainer = function() { - return this.container; - }; - this.$moveTextAreaToCursor = function() { - if (!this.$keepTextAreaAtCursor) - return; - var config = this.layerConfig; - var posTop = this.$cursorLayer.$pixelPos.top; - var posLeft = this.$cursorLayer.$pixelPos.left; - posTop -= config.offset; - - var h = this.lineHeight; - if (posTop < 0 || posTop > config.height - h) - return; - - var w = this.characterWidth; - if (this.$composition) { - var val = this.textarea.value.replace(/^\x01+/, ""); - w *= (this.session.$getStringScreenWidth(val)[0]+2); - h += 2; - posTop -= 1; - } - posLeft -= this.scrollLeft; - if (posLeft > this.$size.scrollerWidth - w) - posLeft = this.$size.scrollerWidth - w; - - posLeft -= this.scrollBar.width; - - this.textarea.style.height = h + "px"; - this.textarea.style.width = w + "px"; - this.textarea.style.right = Math.max(0, this.$size.scrollerWidth - posLeft - w) + "px"; - this.textarea.style.bottom = Math.max(0, this.$size.height - posTop - h) + "px"; - }; - this.getFirstVisibleRow = function() { - return this.layerConfig.firstRow; - }; - this.getFirstFullyVisibleRow = function() { - return this.layerConfig.firstRow + (this.layerConfig.offset === 0 ? 0 : 1); - }; - this.getLastFullyVisibleRow = function() { - var flint = Math.floor((this.layerConfig.height + this.layerConfig.offset) / this.layerConfig.lineHeight); - return this.layerConfig.firstRow - 1 + flint; - }; - this.getLastVisibleRow = function() { - return this.layerConfig.lastRow; - }; - - this.$padding = null; - this.setPadding = function(padding) { - this.$padding = padding; - this.$textLayer.setPadding(padding); - this.$cursorLayer.setPadding(padding); - this.$markerFront.setPadding(padding); - this.$markerBack.setPadding(padding); - this.$loop.schedule(this.CHANGE_FULL); - this.$updatePrintMargin(); - }; - - this.setScrollMargin = function(top, bottom, left, right) { - var sm = this.scrollMargin; - sm.top = top|0; - sm.bottom = bottom|0; - sm.right = right|0; - sm.left = left|0; - sm.v = sm.top + sm.bottom; - sm.h = sm.left + sm.right; - if (sm.top && this.scrollTop <= 0 && this.session) - this.session.setScrollTop(sm.top); - this.updateFull(); - }; - this.getHScrollBarAlwaysVisible = function() { - return this.$hScrollBarAlwaysVisible; - }; - this.setHScrollBarAlwaysVisible = function(alwaysVisible) { - this.setOption("hScrollBarAlwaysVisible", alwaysVisible); - }; - this.getVScrollBarAlwaysVisible = function() { - return this.$hScrollBarAlwaysVisible; - }; - this.setVScrollBarAlwaysVisible = function(alwaysVisible) { - this.setOption("vScrollBarAlwaysVisible", alwaysVisible); - }; - - this.$updateScrollBarV = function() { - this.scrollBarV.setScrollHeight(this.layerConfig.maxHeight + this.scrollMargin.v); - this.scrollBarV.setScrollTop(this.scrollTop + this.scrollMargin.top); - }; - this.$updateScrollBarH = function() { - this.scrollBarH.setScrollWidth(this.layerConfig.width + 2 * this.$padding + this.scrollMargin.h); - this.scrollBarH.setScrollLeft(this.scrollLeft + this.scrollMargin.left); - }; - - this.$frozen = false; - this.freeze = function() { - this.$frozen = true; - }; - - this.unfreeze = function() { - this.$frozen = false; - }; - - this.$renderChanges = function(changes, force) { - if (this.$changes) { - changes |= this.$changes; - this.$changes = 0; - } - if ((!this.session || !this.container.offsetWidth || this.$frozen) || (!changes && !force)) { - this.$changes |= changes; - return; - } - if (this.$size.$dirty) { - this.$changes |= changes; - return this.onResize(true); - } - if (!this.lineHeight) { - this.$textLayer.checkForSizeChanges(); - } - - this._signal("beforeRender"); - var config = this.layerConfig; - if (changes & this.CHANGE_FULL || - changes & this.CHANGE_SIZE || - changes & this.CHANGE_TEXT || - changes & this.CHANGE_LINES || - changes & this.CHANGE_SCROLL || - changes & this.CHANGE_H_SCROLL - ) { - changes |= this.$computeLayerConfig(); - config = this.layerConfig; - this.$updateScrollBarV(); - if (changes & this.CHANGE_H_SCROLL) - this.$updateScrollBarH(); - this.$gutterLayer.element.style.marginTop = (-config.offset) + "px"; - this.content.style.marginTop = (-config.offset) + "px"; - this.content.style.width = config.width + 2 * this.$padding + "px"; - this.content.style.height = config.minHeight + "px"; - } - if (changes & this.CHANGE_H_SCROLL) { - this.content.style.marginLeft = -this.scrollLeft + "px"; - this.scroller.className = this.scrollLeft <= 0 ? "ace_scroller" : "ace_scroller ace_scroll-left"; - } - if (changes & this.CHANGE_FULL) { - this.$textLayer.update(config); - if (this.$showGutter) - this.$gutterLayer.update(config); - this.$markerBack.update(config); - this.$markerFront.update(config); - this.$cursorLayer.update(config); - this.$moveTextAreaToCursor(); - this.$highlightGutterLine && this.$updateGutterLineHighlight(); - this._signal("afterRender"); - return; - } - if (changes & this.CHANGE_SCROLL) { - if (changes & this.CHANGE_TEXT || changes & this.CHANGE_LINES) - this.$textLayer.update(config); - else - this.$textLayer.scrollLines(config); - - if (this.$showGutter) - this.$gutterLayer.update(config); - this.$markerBack.update(config); - this.$markerFront.update(config); - this.$cursorLayer.update(config); - this.$highlightGutterLine && this.$updateGutterLineHighlight(); - this.$moveTextAreaToCursor(); - this._signal("afterRender"); - return; - } - - if (changes & this.CHANGE_TEXT) { - this.$textLayer.update(config); - if (this.$showGutter) - this.$gutterLayer.update(config); - } - else if (changes & this.CHANGE_LINES) { - if (this.$updateLines() || (changes & this.CHANGE_GUTTER) && this.$showGutter) - this.$gutterLayer.update(config); - } - else if (changes & this.CHANGE_TEXT || changes & this.CHANGE_GUTTER) { - if (this.$showGutter) - this.$gutterLayer.update(config); - } - - if (changes & this.CHANGE_CURSOR) { - this.$cursorLayer.update(config); - this.$moveTextAreaToCursor(); - this.$highlightGutterLine && this.$updateGutterLineHighlight(); - } - - if (changes & (this.CHANGE_MARKER | this.CHANGE_MARKER_FRONT)) { - this.$markerFront.update(config); - } - - if (changes & (this.CHANGE_MARKER | this.CHANGE_MARKER_BACK)) { - this.$markerBack.update(config); - } - - this._signal("afterRender"); - }; - - - this.$autosize = function() { - var height = this.session.getScreenLength() * this.lineHeight; - var maxHeight = this.$maxLines * this.lineHeight; - var desiredHeight = Math.max( - (this.$minLines||1) * this.lineHeight, - Math.min(maxHeight, height) - ) + this.scrollMargin.v + (this.$extraHeight || 0); - var vScroll = height > maxHeight; - - if (desiredHeight != this.desiredHeight || - this.$size.height != this.desiredHeight || vScroll != this.$vScroll) { - if (vScroll != this.$vScroll) { - this.$vScroll = vScroll; - this.scrollBarV.setVisible(vScroll); - } - - var w = this.container.clientWidth; - this.container.style.height = desiredHeight + "px"; - this.$updateCachedSize(true, this.$gutterWidth, w, desiredHeight); - this.desiredHeight = desiredHeight; - } - }; - - this.$computeLayerConfig = function() { - if (this.$maxLines && this.lineHeight > 1) - this.$autosize(); - - var session = this.session; - - var hideScrollbars = this.$size.height <= 2 * this.lineHeight; - var screenLines = this.session.getScreenLength(); - var maxHeight = screenLines * this.lineHeight; - - var offset = this.scrollTop % this.lineHeight; - var minHeight = this.$size.scrollerHeight + this.lineHeight; - - var longestLine = this.$getLongestLine(); - - var horizScroll = !hideScrollbars && (this.$hScrollBarAlwaysVisible || - this.$size.scrollerWidth - longestLine - 2 * this.$padding < 0); - - var hScrollChanged = this.$horizScroll !== horizScroll; - if (hScrollChanged) { - this.$horizScroll = horizScroll; - this.scrollBarH.setVisible(horizScroll); - } - - if (!this.$maxLines && this.$scrollPastEnd) { - if (this.scrollTop > maxHeight - this.$size.scrollerHeight) - maxHeight += Math.min( - (this.$size.scrollerHeight - this.lineHeight) * this.$scrollPastEnd, - this.scrollTop - maxHeight + this.$size.scrollerHeight - ); - } - - var vScroll = !hideScrollbars && (this.$vScrollBarAlwaysVisible || - this.$size.scrollerHeight - maxHeight < 0); - var vScrollChanged = this.$vScroll !== vScroll; - if (vScrollChanged) { - this.$vScroll = vScroll; - this.scrollBarV.setVisible(vScroll); - } - - this.session.setScrollTop(Math.max(-this.scrollMargin.top, - Math.min(this.scrollTop, maxHeight - this.$size.scrollerHeight + this.scrollMargin.v))); - - this.session.setScrollLeft(Math.max(-this.scrollMargin.left, Math.min(this.scrollLeft, - longestLine + 2 * this.$padding - this.$size.scrollerWidth + this.scrollMargin.h))); - - var lineCount = Math.ceil(minHeight / this.lineHeight) - 1; - var firstRow = Math.max(0, Math.round((this.scrollTop - offset) / this.lineHeight)); - var lastRow = firstRow + lineCount; - var firstRowScreen, firstRowHeight; - var lineHeight = this.lineHeight; - firstRow = session.screenToDocumentRow(firstRow, 0); - var foldLine = session.getFoldLine(firstRow); - if (foldLine) { - firstRow = foldLine.start.row; - } - - firstRowScreen = session.documentToScreenRow(firstRow, 0); - firstRowHeight = session.getRowLength(firstRow) * lineHeight; - - lastRow = Math.min(session.screenToDocumentRow(lastRow, 0), session.getLength() - 1); - minHeight = this.$size.scrollerHeight + session.getRowLength(lastRow) * lineHeight + - firstRowHeight; - - offset = this.scrollTop - firstRowScreen * lineHeight; - - var changes = 0; - if (hScrollChanged || vScrollChanged) { - changes = this.$updateCachedSize(true, this.gutterWidth, this.$size.width, this.$size.height); - this._signal("scrollbarVisibilityChanged"); - if (vScrollChanged) - longestLine = this.$getLongestLine(); - } - - this.layerConfig = { - width : longestLine, - padding : this.$padding, - firstRow : firstRow, - firstRowScreen: firstRowScreen, - lastRow : lastRow, - lineHeight : lineHeight, - characterWidth : this.characterWidth, - minHeight : minHeight, - maxHeight : maxHeight, - offset : offset, - height : this.$size.scrollerHeight - }; - - return changes; - }; - - this.$updateLines = function() { - var firstRow = this.$changedLines.firstRow; - var lastRow = this.$changedLines.lastRow; - this.$changedLines = null; - - var layerConfig = this.layerConfig; - - if (firstRow > layerConfig.lastRow + 1) { return; } - if (lastRow < layerConfig.firstRow) { return; } - if (lastRow === Infinity) { - if (this.$showGutter) - this.$gutterLayer.update(layerConfig); - this.$textLayer.update(layerConfig); - return; - } - this.$textLayer.updateLines(layerConfig, firstRow, lastRow); - return true; - }; - - this.$getLongestLine = function() { - var charCount = this.session.getScreenWidth(); - if (this.showInvisibles && !this.session.$useWrapMode) - charCount += 1; - - return Math.max(this.$size.scrollerWidth - 2 * this.$padding, Math.round(charCount * this.characterWidth)); - }; - this.updateFrontMarkers = function() { - this.$markerFront.setMarkers(this.session.getMarkers(true)); - this.$loop.schedule(this.CHANGE_MARKER_FRONT); - }; - this.updateBackMarkers = function() { - this.$markerBack.setMarkers(this.session.getMarkers()); - this.$loop.schedule(this.CHANGE_MARKER_BACK); - }; - this.addGutterDecoration = function(row, className){ - this.$gutterLayer.addGutterDecoration(row, className); - }; - this.removeGutterDecoration = function(row, className){ - this.$gutterLayer.removeGutterDecoration(row, className); - }; - this.updateBreakpoints = function(rows) { - this.$loop.schedule(this.CHANGE_GUTTER); - }; - this.setAnnotations = function(annotations) { - this.$gutterLayer.setAnnotations(annotations); - this.$loop.schedule(this.CHANGE_GUTTER); - }; - this.updateCursor = function() { - this.$loop.schedule(this.CHANGE_CURSOR); - }; - this.hideCursor = function() { - this.$cursorLayer.hideCursor(); - }; - this.showCursor = function() { - this.$cursorLayer.showCursor(); - }; - - this.scrollSelectionIntoView = function(anchor, lead, offset) { - this.scrollCursorIntoView(anchor, offset); - this.scrollCursorIntoView(lead, offset); - }; - this.scrollCursorIntoView = function(cursor, offset) { - if (this.$size.scrollerHeight === 0) - return; - - var pos = this.$cursorLayer.getPixelPosition(cursor); - - var left = pos.left; - var top = pos.top; - - var scrollTop = this.$scrollAnimation ? this.session.getScrollTop() : this.scrollTop; - - if (scrollTop > top) { - if (offset) - top -= offset * this.$size.scrollerHeight; - if (top == 0) - top = - this.scrollMargin.top; - else if (top == 0) - top = + this.scrollMargin.bottom; - this.session.setScrollTop(top); - } else if (scrollTop + this.$size.scrollerHeight < top + this.lineHeight) { - if (offset) - top += offset * this.$size.scrollerHeight; - this.session.setScrollTop(top + this.lineHeight - this.$size.scrollerHeight); - } - - var scrollLeft = this.scrollLeft; - - if (scrollLeft > left) { - if (left < this.$padding + 2 * this.layerConfig.characterWidth) - left = -this.scrollMargin.left; - this.session.setScrollLeft(left); - } else if (scrollLeft + this.$size.scrollerWidth < left + this.characterWidth) { - this.session.setScrollLeft(Math.round(left + this.characterWidth - this.$size.scrollerWidth)); - } else if (scrollLeft <= this.$padding && left - scrollLeft < this.characterWidth) { - this.session.setScrollLeft(0); - } - }; - this.getScrollTop = function() { - return this.session.getScrollTop(); - }; - this.getScrollLeft = function() { - return this.session.getScrollLeft(); - }; - this.getScrollTopRow = function() { - return this.scrollTop / this.lineHeight; - }; - this.getScrollBottomRow = function() { - return Math.max(0, Math.floor((this.scrollTop + this.$size.scrollerHeight) / this.lineHeight) - 1); - }; - this.scrollToRow = function(row) { - this.session.setScrollTop(row * this.lineHeight); - }; - - this.alignCursor = function(cursor, alignment) { - if (typeof cursor == "number") - cursor = {row: cursor, column: 0}; - - var pos = this.$cursorLayer.getPixelPosition(cursor); - var h = this.$size.scrollerHeight - this.lineHeight; - var offset = pos.top - h * (alignment || 0); - - this.session.setScrollTop(offset); - return offset; - }; - - this.STEPS = 8; - this.$calcSteps = function(fromValue, toValue){ - var i = 0; - var l = this.STEPS; - var steps = []; - - var func = function(t, x_min, dx) { - return dx * (Math.pow(t - 1, 3) + 1) + x_min; - }; - - for (i = 0; i < l; ++i) - steps.push(func(i / this.STEPS, fromValue, toValue - fromValue)); - - return steps; - }; - this.scrollToLine = function(line, center, animate, callback) { - var pos = this.$cursorLayer.getPixelPosition({row: line, column: 0}); - var offset = pos.top; - if (center) - offset -= this.$size.scrollerHeight / 2; - - var initialScroll = this.scrollTop; - this.session.setScrollTop(offset); - if (animate !== false) - this.animateScrolling(initialScroll, callback); - }; - - this.animateScrolling = function(fromValue, callback) { - var toValue = this.scrollTop; - if (!this.$animatedScroll) - return; - var _self = this; - - if (fromValue == toValue) - return; - - if (this.$scrollAnimation) { - var oldSteps = this.$scrollAnimation.steps; - if (oldSteps.length) { - fromValue = oldSteps[0]; - if (fromValue == toValue) - return; - } - } - - var steps = _self.$calcSteps(fromValue, toValue); - this.$scrollAnimation = {from: fromValue, to: toValue, steps: steps}; - - clearInterval(this.$timer); - - _self.session.setScrollTop(steps.shift()); - _self.session.$scrollTop = toValue; - this.$timer = setInterval(function() { - if (steps.length) { - _self.session.setScrollTop(steps.shift()); - _self.session.$scrollTop = toValue; - } else if (toValue != null) { - _self.session.$scrollTop = -1; - _self.session.setScrollTop(toValue); - toValue = null; - } else { - _self.$timer = clearInterval(_self.$timer); - _self.$scrollAnimation = null; - callback && callback(); - } - }, 10); - }; - this.scrollToY = function(scrollTop) { - if (this.scrollTop !== scrollTop) { - this.$loop.schedule(this.CHANGE_SCROLL); - this.scrollTop = scrollTop; - } - }; - this.scrollToX = function(scrollLeft) { - if (this.scrollLeft !== scrollLeft) - this.scrollLeft = scrollLeft; - this.$loop.schedule(this.CHANGE_H_SCROLL); - }; - this.scrollTo = function(x, y) { - this.session.setScrollTop(y); - this.session.setScrollLeft(y); - }; - this.scrollBy = function(deltaX, deltaY) { - deltaY && this.session.setScrollTop(this.session.getScrollTop() + deltaY); - deltaX && this.session.setScrollLeft(this.session.getScrollLeft() + deltaX); - }; - this.isScrollableBy = function(deltaX, deltaY) { - if (deltaY < 0 && this.session.getScrollTop() >= 1 - this.scrollMargin.top) - return true; - if (deltaY > 0 && this.session.getScrollTop() + this.$size.scrollerHeight - - this.layerConfig.maxHeight - (this.$size.scrollerHeight - this.lineHeight) * this.$scrollPastEnd - < -1 + this.scrollMargin.bottom) - return true; - if (deltaX < 0 && this.session.getScrollLeft() >= 1 - this.scrollMargin.left) - return true; - if (deltaX > 0 && this.session.getScrollLeft() + this.$size.scrollerWidth - - this.layerConfig.width < -1 + this.scrollMargin.right) - return true; - }; - - this.pixelToScreenCoordinates = function(x, y) { - var canvasPos = this.scroller.getBoundingClientRect(); - - var offset = (x + this.scrollLeft - canvasPos.left - this.$padding) / this.characterWidth; - var row = Math.floor((y + this.scrollTop - canvasPos.top) / this.lineHeight); - var col = Math.round(offset); - - return {row: row, column: col, side: offset - col > 0 ? 1 : -1}; - }; - - this.screenToTextCoordinates = function(x, y) { - var canvasPos = this.scroller.getBoundingClientRect(); - - var col = Math.round( - (x + this.scrollLeft - canvasPos.left - this.$padding) / this.characterWidth - ); - - var row = (y + this.scrollTop - canvasPos.top) / this.lineHeight; - - return this.session.screenToDocumentPosition(row, Math.max(col, 0)); - }; - this.textToScreenCoordinates = function(row, column) { - var canvasPos = this.scroller.getBoundingClientRect(); - var pos = this.session.documentToScreenPosition(row, column); - - var x = this.$padding + Math.round(pos.column * this.characterWidth); - var y = pos.row * this.lineHeight; - - return { - pageX: canvasPos.left + x - this.scrollLeft, - pageY: canvasPos.top + y - this.scrollTop - }; - }; - this.visualizeFocus = function() { - dom.addCssClass(this.container, "ace_focus"); - }; - this.visualizeBlur = function() { - dom.removeCssClass(this.container, "ace_focus"); - }; - this.showComposition = function(position) { - if (!this.$composition) - this.$composition = { - keepTextAreaAtCursor: this.$keepTextAreaAtCursor, - cssText: this.textarea.style.cssText - }; - - this.$keepTextAreaAtCursor = true; - dom.addCssClass(this.textarea, "ace_composition"); - this.textarea.style.cssText = ""; - this.$moveTextAreaToCursor(); - }; - this.setCompositionText = function(text) { - this.$moveTextAreaToCursor(); - }; - this.hideComposition = function() { - if (!this.$composition) - return; - - dom.removeCssClass(this.textarea, "ace_composition"); - this.$keepTextAreaAtCursor = this.$composition.keepTextAreaAtCursor; - this.textarea.style.cssText = this.$composition.cssText; - this.$composition = null; - }; - this.setTheme = function(theme, cb) { - var _self = this; - this.$themeId = theme; - _self._dispatchEvent('themeChange',{theme:theme}); - - if (!theme || typeof theme == "string") { - var moduleName = theme || this.$options.theme.initialValue; - config.loadModule(["theme", moduleName], afterLoad); - } else { - afterLoad(theme); - } - - function afterLoad(module) { - if (_self.$themeId != theme) - return cb && cb(); - if (!module.cssClass) - return; - dom.importCssString( - module.cssText, - module.cssClass, - _self.container.ownerDocument - ); - - if (_self.theme) - dom.removeCssClass(_self.container, _self.theme.cssClass); - - var padding = "padding" in module ? module.padding - : "padding" in (_self.theme || {}) ? 4 : _self.$padding; - if (_self.$padding && padding != _self.$padding) - _self.setPadding(padding); - _self.$theme = module.cssClass; - - _self.theme = module; - dom.addCssClass(_self.container, module.cssClass); - dom.setCssClass(_self.container, "ace_dark", module.isDark); - if (_self.$size) { - _self.$size.width = 0; - _self.$updateSizeAsync(); - } - - _self._dispatchEvent('themeLoaded', {theme:module}); - cb && cb(); - } - }; - this.getTheme = function() { - return this.$themeId; - }; - this.setStyle = function(style, include) { - dom.setCssClass(this.container, style, include !== false); - }; - this.unsetStyle = function(style) { - dom.removeCssClass(this.container, style); - }; - - this.setCursorStyle = function(style) { - if (this.content.style.cursor != style) - this.content.style.cursor = style; - }; - this.setMouseCursor = function(cursorStyle) { - this.content.style.cursor = cursorStyle; - }; - this.destroy = function() { - this.$textLayer.destroy(); - this.$cursorLayer.destroy(); - }; - -}).call(VirtualRenderer.prototype); - - -config.defineOptions(VirtualRenderer.prototype, "renderer", { - animatedScroll: {initialValue: false}, - showInvisibles: { - set: function(value) { - if (this.$textLayer.setShowInvisibles(value)) - this.$loop.schedule(this.CHANGE_TEXT); - }, - initialValue: false - }, - showPrintMargin: { - set: function() { this.$updatePrintMargin(); }, - initialValue: true - }, - printMarginColumn: { - set: function() { this.$updatePrintMargin(); }, - initialValue: 80 - }, - printMargin: { - set: function(val) { - if (typeof val == "number") - this.$printMarginColumn = val; - this.$showPrintMargin = !!val; - this.$updatePrintMargin(); - }, - get: function() { - return this.$showPrintMargin && this.$printMarginColumn; - } - }, - showGutter: { - set: function(show){ - this.$gutter.style.display = show ? "block" : "none"; - this.onGutterResize(); - }, - initialValue: true - }, - fadeFoldWidgets: { - set: function(show) { - dom.setCssClass(this.$gutter, "ace_fade-fold-widgets", show); - }, - initialValue: false - }, - showFoldWidgets: { - set: function(show) {this.$gutterLayer.setShowFoldWidgets(show)}, - initialValue: true - }, - displayIndentGuides: { - set: function(show) { - if (this.$textLayer.setDisplayIndentGuides(show)) - this.$loop.schedule(this.CHANGE_TEXT); - }, - initialValue: true - }, - highlightGutterLine: { - set: function(shouldHighlight) { - if (!this.$gutterLineHighlight) { - this.$gutterLineHighlight = dom.createElement("div"); - this.$gutterLineHighlight.className = "ace_gutter-active-line"; - this.$gutter.appendChild(this.$gutterLineHighlight); - return; - } - - this.$gutterLineHighlight.style.display = shouldHighlight ? "" : "none"; - if (this.$cursorLayer.$pixelPos) - this.$updateGutterLineHighlight(); - }, - initialValue: false, - value: true - }, - hScrollBarAlwaysVisible: { - set: function(val) { - if (!this.$hScrollBarAlwaysVisible || !this.$horizScroll) - this.$loop.schedule(this.CHANGE_SCROLL); - }, - initialValue: false - }, - vScrollBarAlwaysVisible: { - set: function(val) { - if (!this.$vScrollBarAlwaysVisible || !this.$vScroll) - this.$loop.schedule(this.CHANGE_SCROLL); - }, - initialValue: false - }, - fontSize: { - set: function(size) { - if (typeof size == "number") - size = size + "px"; - this.container.style.fontSize = size; - this.updateFontSize(); - }, - initialValue: 12 - }, - fontFamily: { - set: function(name) { - this.container.style.fontFamily = name; - this.updateFontSize(); - } - }, - maxLines: { - set: function(val) { - this.updateFull(); - } - }, - minLines: { - set: function(val) { - this.updateFull(); - } - }, - scrollPastEnd: { - set: function(val) { - val = +val || 0; - if (this.$scrollPastEnd == val) - return; - this.$scrollPastEnd = val; - this.$loop.schedule(this.CHANGE_SCROLL); - }, - initialValue: 0, - handlesSet: true - }, - fixedWidthGutter: { - set: function(val) { - this.$gutterLayer.$fixedWidth = !!val; - this.$loop.schedule(this.CHANGE_GUTTER); - } - }, - theme: { - set: function(val) { this.setTheme(val) }, - get: function() { return this.$themeId || this.theme; }, - initialValue: "./theme/textmate", - handlesSet: true - } -}); - -exports.VirtualRenderer = VirtualRenderer; -}); - -ace.define('ace/layer/gutter', ['require', 'exports', 'module' , 'ace/lib/dom', 'ace/lib/oop', 'ace/lib/lang', 'ace/lib/event_emitter'], function(require, exports, module) { - - -var dom = require("../lib/dom"); -var oop = require("../lib/oop"); -var lang = require("../lib/lang"); -var EventEmitter = require("../lib/event_emitter").EventEmitter; - -var Gutter = function(parentEl) { - this.element = dom.createElement("div"); - this.element.className = "ace_layer ace_gutter-layer"; - parentEl.appendChild(this.element); - this.setShowFoldWidgets(this.$showFoldWidgets); - - this.gutterWidth = 0; - - this.$annotations = []; - this.$updateAnnotations = this.$updateAnnotations.bind(this); - - this.$cells = []; -}; - -(function() { - - oop.implement(this, EventEmitter); - - this.setSession = function(session) { - if (this.session) - this.session.removeEventListener("change", this.$updateAnnotations); - this.session = session; - session.on("change", this.$updateAnnotations); - }; - - this.addGutterDecoration = function(row, className){ - if (window.console) - console.warn && console.warn("deprecated use session.addGutterDecoration"); - this.session.addGutterDecoration(row, className); - }; - - this.removeGutterDecoration = function(row, className){ - if (window.console) - console.warn && console.warn("deprecated use session.removeGutterDecoration"); - this.session.removeGutterDecoration(row, className); - }; - - this.setAnnotations = function(annotations) { - this.$annotations = []; - for (var i = 0; i < annotations.length; i++) { - var annotation = annotations[i]; - var row = annotation.row; - var rowInfo = this.$annotations[row]; - if (!rowInfo) - rowInfo = this.$annotations[row] = {text: []}; - - var annoText = annotation.text; - annoText = annoText ? lang.escapeHTML(annoText) : annotation.html || ""; - - if (rowInfo.text.indexOf(annoText) === -1) - rowInfo.text.push(annoText); - - var type = annotation.type; - if (type == "error") - rowInfo.className = " ace_error"; - else if (type == "warning" && rowInfo.className != " ace_error") - rowInfo.className = " ace_warning"; - else if (type == "info" && (!rowInfo.className)) - rowInfo.className = " ace_info"; - } - }; - - this.$updateAnnotations = function (e) { - if (!this.$annotations.length) - return; - var delta = e.data; - var range = delta.range; - var firstRow = range.start.row; - var len = range.end.row - firstRow; - if (len === 0) { - } else if (delta.action == "removeText" || delta.action == "removeLines") { - this.$annotations.splice(firstRow, len + 1, null); - } else { - var args = new Array(len + 1); - args.unshift(firstRow, 1); - this.$annotations.splice.apply(this.$annotations, args); - } - }; - - this.update = function(config) { - var firstRow = config.firstRow; - var lastRow = config.lastRow; - var session = this.session; - var fold = session.getNextFoldLine(firstRow); - var foldStart = fold ? fold.start.row : Infinity; - var foldWidgets = this.$showFoldWidgets && session.foldWidgets; - var breakpoints = session.$breakpoints; - var decorations = session.$decorations; - var firstLineNumber = session.$firstLineNumber; - var lastLineNumber = 0; - - var gutterRenderer = session.gutterRenderer; - - var cell = null; - var index = -1; - var row = firstRow; - while (true) { - if (row > foldStart) { - row = fold.end.row + 1; - fold = session.getNextFoldLine(row, fold); - foldStart = fold ? fold.start.row : Infinity; - } - if (row > lastRow) { - while (this.$cells.length > index + 1) { - cell = this.$cells.pop(); - this.element.removeChild(cell.element); - } - break; - } - - cell = this.$cells[++index]; - if (!cell) { - cell = {element: null, textNode: null, foldWidget: null}; - cell.element = dom.createElement("div"); - cell.textNode = document.createTextNode(''); - cell.element.appendChild(cell.textNode); - this.element.appendChild(cell.element); - this.$cells[index] = cell; - } - - var className = "ace_gutter-cell "; - if (breakpoints[row]) - className += breakpoints[row]; - if (decorations[row]) - className += decorations[row]; - if (this.$annotations[row]) - className += this.$annotations[row].className; - if (cell.element.className != className) - cell.element.className = className; - - var height = session.getRowLength(row) * config.lineHeight + "px"; - if (height != cell.element.style.height) - cell.element.style.height = height; - - if (foldWidgets) { - var c = foldWidgets[row]; - if (c == null) - c = foldWidgets[row] = session.getFoldWidget(row); - } - - if (c) { - if (!cell.foldWidget) { - cell.foldWidget = dom.createElement("span"); - cell.element.appendChild(cell.foldWidget); - } - var className = "ace_fold-widget ace_" + c; - if (c == "start" && row == foldStart && row < fold.end.row) - className += " ace_closed"; - else - className += " ace_open"; - if (cell.foldWidget.className != className) - cell.foldWidget.className = className; - - var height = config.lineHeight + "px"; - if (cell.foldWidget.style.height != height) - cell.foldWidget.style.height = height; - } else { - if (cell.foldWidget) { - cell.element.removeChild(cell.foldWidget); - cell.foldWidget = null; - } - } - - var text = lastLineNumber = gutterRenderer - ? gutterRenderer.getText(session, row) - : row + firstLineNumber; - if (text != cell.textNode.data) - cell.textNode.data = text; - - row++; - } - - this.element.style.height = config.minHeight + "px"; - - if (this.$fixedWidth || session.$useWrapMode) - lastLineNumber = session.getLength() + firstLineNumber; - - var gutterWidth = gutterRenderer - ? gutterRenderer.getWidth(session, lastLineNumber, config) - : lastLineNumber.toString().length * config.characterWidth; - - var padding = this.$padding || this.$computePadding(); - gutterWidth += padding.left + padding.right; - if (gutterWidth !== this.gutterWidth && !isNaN(gutterWidth)) { - this.gutterWidth = gutterWidth; - this.element.style.width = Math.ceil(this.gutterWidth) + "px"; - this._emit("changeGutterWidth", gutterWidth); - } - }; - - this.$fixedWidth = false; - - this.$showFoldWidgets = true; - this.setShowFoldWidgets = function(show) { - if (show) - dom.addCssClass(this.element, "ace_folding-enabled"); - else - dom.removeCssClass(this.element, "ace_folding-enabled"); - - this.$showFoldWidgets = show; - this.$padding = null; - }; - - this.getShowFoldWidgets = function() { - return this.$showFoldWidgets; - }; - - this.$computePadding = function() { - if (!this.element.firstChild) - return {left: 0, right: 0}; - var style = dom.computedStyle(this.element.firstChild); - this.$padding = {}; - this.$padding.left = parseInt(style.paddingLeft) + 1 || 0; - this.$padding.right = parseInt(style.paddingRight) || 0; - return this.$padding; - }; - - this.getRegion = function(point) { - var padding = this.$padding || this.$computePadding(); - var rect = this.element.getBoundingClientRect(); - if (point.x < padding.left + rect.left) - return "markers"; - if (this.$showFoldWidgets && point.x > rect.right - padding.right) - return "foldWidgets"; - }; - -}).call(Gutter.prototype); - -exports.Gutter = Gutter; - -}); - -ace.define('ace/layer/marker', ['require', 'exports', 'module' , 'ace/range', 'ace/lib/dom'], function(require, exports, module) { - - -var Range = require("../range").Range; -var dom = require("../lib/dom"); - -var Marker = function(parentEl) { - this.element = dom.createElement("div"); - this.element.className = "ace_layer ace_marker-layer"; - parentEl.appendChild(this.element); -}; - -(function() { - - this.$padding = 0; - - this.setPadding = function(padding) { - this.$padding = padding; - }; - this.setSession = function(session) { - this.session = session; - }; - - this.setMarkers = function(markers) { - this.markers = markers; - }; - - this.update = function(config) { - var config = config || this.config; - if (!config) - return; - - this.config = config; - - - var html = []; - for (var key in this.markers) { - var marker = this.markers[key]; - - if (!marker.range) { - marker.update(html, this, this.session, config); - continue; - } - - var range = marker.range.clipRows(config.firstRow, config.lastRow); - if (range.isEmpty()) continue; - - range = range.toScreenRange(this.session); - if (marker.renderer) { - var top = this.$getTop(range.start.row, config); - var left = this.$padding + range.start.column * config.characterWidth; - marker.renderer(html, range, left, top, config); - } else if (marker.type == "fullLine") { - this.drawFullLineMarker(html, range, marker.clazz, config); - } else if (marker.type == "screenLine") { - this.drawScreenLineMarker(html, range, marker.clazz, config); - } else if (range.isMultiLine()) { - if (marker.type == "text") - this.drawTextMarker(html, range, marker.clazz, config); - else - this.drawMultiLineMarker(html, range, marker.clazz, config); - } else { - this.drawSingleLineMarker(html, range, marker.clazz + " ace_start", config); - } - } - this.element = dom.setInnerHtml(this.element, html.join("")); - }; - - this.$getTop = function(row, layerConfig) { - return (row - layerConfig.firstRowScreen) * layerConfig.lineHeight; - }; - this.drawTextMarker = function(stringBuilder, range, clazz, layerConfig, extraStyle) { - var row = range.start.row; - - var lineRange = new Range( - row, range.start.column, - row, this.session.getScreenLastRowColumn(row) - ); - this.drawSingleLineMarker(stringBuilder, lineRange, clazz + " ace_start", layerConfig, 1, extraStyle); - row = range.end.row; - lineRange = new Range(row, 0, row, range.end.column); - this.drawSingleLineMarker(stringBuilder, lineRange, clazz, layerConfig, 0, extraStyle); - - for (row = range.start.row + 1; row < range.end.row; row++) { - lineRange.start.row = row; - lineRange.end.row = row; - lineRange.end.column = this.session.getScreenLastRowColumn(row); - this.drawSingleLineMarker(stringBuilder, lineRange, clazz, layerConfig, 1, extraStyle); - } - }; - this.drawMultiLineMarker = function(stringBuilder, range, clazz, config, extraStyle) { - var padding = this.$padding; - var height = config.lineHeight; - var top = this.$getTop(range.start.row, config); - var left = padding + range.start.column * config.characterWidth; - extraStyle = extraStyle || ""; - - stringBuilder.push( - "
" - ); - top = this.$getTop(range.end.row, config); - var width = range.end.column * config.characterWidth; - - stringBuilder.push( - "
" - ); - height = (range.end.row - range.start.row - 1) * config.lineHeight; - if (height < 0) - return; - top = this.$getTop(range.start.row + 1, config); - - stringBuilder.push( - "
" - ); - }; - this.drawSingleLineMarker = function(stringBuilder, range, clazz, config, extraLength, extraStyle) { - var height = config.lineHeight; - var width = (range.end.column + (extraLength || 0) - range.start.column) * config.characterWidth; - - var top = this.$getTop(range.start.row, config); - var left = this.$padding + range.start.column * config.characterWidth; - - stringBuilder.push( - "
" - ); - }; - - this.drawFullLineMarker = function(stringBuilder, range, clazz, config, extraStyle) { - var top = this.$getTop(range.start.row, config); - var height = config.lineHeight; - if (range.start.row != range.end.row) - height += this.$getTop(range.end.row, config) - top; - - stringBuilder.push( - "
" - ); - }; - - this.drawScreenLineMarker = function(stringBuilder, range, clazz, config, extraStyle) { - var top = this.$getTop(range.start.row, config); - var height = config.lineHeight; - - stringBuilder.push( - "
" - ); - }; - -}).call(Marker.prototype); - -exports.Marker = Marker; - -}); - -ace.define('ace/layer/text', ['require', 'exports', 'module' , 'ace/lib/oop', 'ace/lib/dom', 'ace/lib/lang', 'ace/lib/useragent', 'ace/lib/event_emitter'], function(require, exports, module) { - - -var oop = require("../lib/oop"); -var dom = require("../lib/dom"); -var lang = require("../lib/lang"); -var useragent = require("../lib/useragent"); -var EventEmitter = require("../lib/event_emitter").EventEmitter; - -var Text = function(parentEl) { - this.element = dom.createElement("div"); - this.element.className = "ace_layer ace_text-layer"; - parentEl.appendChild(this.element); - - this.$characterSize = {width: 0, height: 0}; - this.checkForSizeChanges(); - this.$pollSizeChanges(); -}; - -(function() { - - oop.implement(this, EventEmitter); - - this.EOF_CHAR = "\xB6"; //"¶"; - this.EOL_CHAR = "\xAC"; //"¬"; - this.TAB_CHAR = "\u2192"; //"→" "\u21E5"; - this.SPACE_CHAR = "\xB7"; //"·"; - this.$padding = 0; - - this.setPadding = function(padding) { - this.$padding = padding; - this.element.style.padding = "0 " + padding + "px"; - }; - - this.getLineHeight = function() { - return this.$characterSize.height || 0; - }; - - this.getCharacterWidth = function() { - return this.$characterSize.width || 0; - }; - - this.checkForSizeChanges = function() { - var size = this.$measureSizes(); - if (size && (this.$characterSize.width !== size.width || this.$characterSize.height !== size.height)) { - this.$measureNode.style.fontWeight = "bold"; - var boldSize = this.$measureSizes(); - this.$measureNode.style.fontWeight = ""; - this.$characterSize = size; - this.allowBoldFonts = boldSize && boldSize.width === size.width && boldSize.height === size.height; - this._emit("changeCharacterSize", {data: size}); - } - }; - - this.$pollSizeChanges = function() { - var self = this; - this.$pollSizeChangesTimer = setInterval(function() { - self.checkForSizeChanges(); - }, 500); - }; - - this.$fontStyles = { - fontFamily : 1, - fontSize : 1, - fontWeight : 1, - fontStyle : 1, - lineHeight : 1 - }; - - this.$measureSizes = useragent.isIE || useragent.isOldGecko ? function() { - var n = 1000; - if (!this.$measureNode) { - var measureNode = this.$measureNode = dom.createElement("div"); - var style = measureNode.style; - - style.width = style.height = "auto"; - style.left = style.top = (-n * 40) + "px"; - - style.visibility = "hidden"; - style.position = "fixed"; - style.overflow = "visible"; - style.whiteSpace = "nowrap"; - measureNode.innerHTML = lang.stringRepeat("Xy", n); - - if (this.element.ownerDocument.body) { - this.element.ownerDocument.body.appendChild(measureNode); - } else { - var container = this.element.parentNode; - while (!dom.hasCssClass(container, "ace_editor")) - container = container.parentNode; - container.appendChild(measureNode); - } - } - if (!this.element.offsetWidth) - return null; - - var style = this.$measureNode.style; - var computedStyle = dom.computedStyle(this.element); - for (var prop in this.$fontStyles) - style[prop] = computedStyle[prop]; - - var size = { - height: this.$measureNode.offsetHeight, - width: this.$measureNode.offsetWidth / (n * 2) - }; - if (size.width == 0 || size.height == 0) - return null; - - return size; - } - : function() { - if (!this.$measureNode) { - var measureNode = this.$measureNode = dom.createElement("div"); - var style = measureNode.style; - - style.width = style.height = "auto"; - style.left = style.top = -100 + "px"; - - style.visibility = "hidden"; - style.position = "fixed"; - style.overflow = "visible"; - style.whiteSpace = "nowrap"; - measureNode.innerHTML = lang.stringRepeat("X", 100); - - var container = this.element.parentNode; - while (container && !dom.hasCssClass(container, "ace_editor")) - container = container.parentNode; - - if (!container) - return this.$measureNode = null; - - container.appendChild(measureNode); - } - - var rect = this.$measureNode.getBoundingClientRect(); - - var size = { - height: rect.height, - width: rect.width / 100 - }; - if (size.width == 0 || size.height == 0) - return null; - - return size; - }; - - this.setSession = function(session) { - this.session = session; - this.$computeTabString(); - }; - - this.showInvisibles = false; - this.setShowInvisibles = function(showInvisibles) { - if (this.showInvisibles == showInvisibles) - return false; - - this.showInvisibles = showInvisibles; - this.$computeTabString(); - return true; - }; - - this.displayIndentGuides = true; - this.setDisplayIndentGuides = function(display) { - if (this.displayIndentGuides == display) - return false; - - this.displayIndentGuides = display; - this.$computeTabString(); - return true; - }; - - this.$tabStrings = []; - this.onChangeTabSize = - this.$computeTabString = function() { - var tabSize = this.session.getTabSize(); - this.tabSize = tabSize; - var tabStr = this.$tabStrings = [0]; - for (var i = 1; i < tabSize + 1; i++) { - if (this.showInvisibles) { - tabStr.push("" - + this.TAB_CHAR - + lang.stringRepeat("\xa0", i - 1) - + ""); - } else { - tabStr.push(lang.stringRepeat("\xa0", i)); - } - } - if (this.displayIndentGuides) { - this.$indentGuideRe = /\s\S| \t|\t |\s$/; - var className = "ace_indent-guide"; - if (this.showInvisibles) { - className += " ace_invisible"; - var spaceContent = lang.stringRepeat(this.SPACE_CHAR, this.tabSize); - var tabContent = this.TAB_CHAR + lang.stringRepeat("\xa0", this.tabSize - 1); - } else{ - var spaceContent = lang.stringRepeat("\xa0", this.tabSize); - var tabContent = spaceContent; - } - - this.$tabStrings[" "] = "" + spaceContent + ""; - this.$tabStrings["\t"] = "" + tabContent + ""; - } - }; - - this.updateLines = function(config, firstRow, lastRow) { - if (this.config.lastRow != config.lastRow || - this.config.firstRow != config.firstRow) { - this.scrollLines(config); - } - this.config = config; - - var first = Math.max(firstRow, config.firstRow); - var last = Math.min(lastRow, config.lastRow); - - var lineElements = this.element.childNodes; - var lineElementsIdx = 0; - - for (var row = config.firstRow; row < first; row++) { - var foldLine = this.session.getFoldLine(row); - if (foldLine) { - if (foldLine.containsRow(first)) { - first = foldLine.start.row; - break; - } else { - row = foldLine.end.row; - } - } - lineElementsIdx ++; - } - - var row = first; - var foldLine = this.session.getNextFoldLine(row); - var foldStart = foldLine ? foldLine.start.row : Infinity; - - while (true) { - if (row > foldStart) { - row = foldLine.end.row+1; - foldLine = this.session.getNextFoldLine(row, foldLine); - foldStart = foldLine ? foldLine.start.row :Infinity; - } - if (row > last) - break; - - var lineElement = lineElements[lineElementsIdx++]; - if (lineElement) { - var html = []; - this.$renderLine( - html, row, !this.$useLineGroups(), row == foldStart ? foldLine : false - ); - lineElement.style.height = config.lineHeight * this.session.getRowLength(row) + "px"; - dom.setInnerHtml(lineElement, html.join("")); - } - row++; - } - }; - - this.scrollLines = function(config) { - var oldConfig = this.config; - this.config = config; - - if (!oldConfig || oldConfig.lastRow < config.firstRow) - return this.update(config); - - if (config.lastRow < oldConfig.firstRow) - return this.update(config); - - var el = this.element; - if (oldConfig.firstRow < config.firstRow) - for (var row=this.session.getFoldedRowCount(oldConfig.firstRow, config.firstRow - 1); row>0; row--) - el.removeChild(el.firstChild); - - if (oldConfig.lastRow > config.lastRow) - for (var row=this.session.getFoldedRowCount(config.lastRow + 1, oldConfig.lastRow); row>0; row--) - el.removeChild(el.lastChild); - - if (config.firstRow < oldConfig.firstRow) { - var fragment = this.$renderLinesFragment(config, config.firstRow, oldConfig.firstRow - 1); - if (el.firstChild) - el.insertBefore(fragment, el.firstChild); - else - el.appendChild(fragment); - } - - if (config.lastRow > oldConfig.lastRow) { - var fragment = this.$renderLinesFragment(config, oldConfig.lastRow + 1, config.lastRow); - el.appendChild(fragment); - } - }; - - this.$renderLinesFragment = function(config, firstRow, lastRow) { - var fragment = this.element.ownerDocument.createDocumentFragment(); - var row = firstRow; - var foldLine = this.session.getNextFoldLine(row); - var foldStart = foldLine ? foldLine.start.row : Infinity; - - while (true) { - if (row > foldStart) { - row = foldLine.end.row+1; - foldLine = this.session.getNextFoldLine(row, foldLine); - foldStart = foldLine ? foldLine.start.row : Infinity; - } - if (row > lastRow) - break; - - var container = dom.createElement("div"); - - var html = []; - this.$renderLine(html, row, false, row == foldStart ? foldLine : false); - container.innerHTML = html.join(""); - if (this.$useLineGroups()) { - container.className = 'ace_line_group'; - fragment.appendChild(container); - container.style.height = config.lineHeight * this.session.getRowLength(row) + "px"; - - } else { - var lines = container.childNodes - while(lines.length) - fragment.appendChild(lines[0]); - } - - row++; - } - return fragment; - }; - - this.update = function(config) { - this.config = config; - - var html = []; - var firstRow = config.firstRow, lastRow = config.lastRow; - - var row = firstRow; - var foldLine = this.session.getNextFoldLine(row); - var foldStart = foldLine ? foldLine.start.row : Infinity; - - while (true) { - if (row > foldStart) { - row = foldLine.end.row+1; - foldLine = this.session.getNextFoldLine(row, foldLine); - foldStart = foldLine ? foldLine.start.row :Infinity; - } - if (row > lastRow) - break; - - if (this.$useLineGroups()) - html.push("
") - - this.$renderLine(html, row, false, row == foldStart ? foldLine : false); - - if (this.$useLineGroups()) - html.push("
"); // end the line group - - row++; - } - this.element = dom.setInnerHtml(this.element, html.join("")); - }; - - this.$textToken = { - "text": true, - "rparen": true, - "lparen": true - }; - - this.$renderToken = function(stringBuilder, screenColumn, token, value) { - var self = this; - var replaceReg = /\t|&|<|( +)|([\x00-\x1f\x80-\xa0\u1680\u180E\u2000-\u200f\u2028\u2029\u202F\u205F\u3000\uFEFF])|[\u1100-\u115F\u11A3-\u11A7\u11FA-\u11FF\u2329-\u232A\u2E80-\u2E99\u2E9B-\u2EF3\u2F00-\u2FD5\u2FF0-\u2FFB\u3000-\u303E\u3041-\u3096\u3099-\u30FF\u3105-\u312D\u3131-\u318E\u3190-\u31BA\u31C0-\u31E3\u31F0-\u321E\u3220-\u3247\u3250-\u32FE\u3300-\u4DBF\u4E00-\uA48C\uA490-\uA4C6\uA960-\uA97C\uAC00-\uD7A3\uD7B0-\uD7C6\uD7CB-\uD7FB\uF900-\uFAFF\uFE10-\uFE19\uFE30-\uFE52\uFE54-\uFE66\uFE68-\uFE6B\uFF01-\uFF60\uFFE0-\uFFE6]/g; - var replaceFunc = function(c, a, b, tabIdx, idx4) { - if (a) { - return self.showInvisibles ? - "" + lang.stringRepeat(self.SPACE_CHAR, c.length) + "" : - lang.stringRepeat("\xa0", c.length); - } else if (c == "&") { - return "&"; - } else if (c == "<") { - return "<"; - } else if (c == "\t") { - var tabSize = self.session.getScreenTabSize(screenColumn + tabIdx); - screenColumn += tabSize - 1; - return self.$tabStrings[tabSize]; - } else if (c == "\u3000") { - var classToUse = self.showInvisibles ? "ace_cjk ace_invisible" : "ace_cjk"; - var space = self.showInvisibles ? self.SPACE_CHAR : ""; - screenColumn += 1; - return "" + space + ""; - } else if (b) { - return "" + self.SPACE_CHAR + ""; - } else { - screenColumn += 1; - return "" + c + ""; - } - }; - - var output = value.replace(replaceReg, replaceFunc); - - if (!this.$textToken[token.type]) { - var classes = "ace_" + token.type.replace(/\./g, " ace_"); - var style = ""; - if (token.type == "fold") - style = " style='width:" + (token.value.length * this.config.characterWidth) + "px;' "; - stringBuilder.push("", output, ""); - } - else { - stringBuilder.push(output); - } - return screenColumn + value.length; - }; - - this.renderIndentGuide = function(stringBuilder, value, max) { - var cols = value.search(this.$indentGuideRe); - if (cols <= 0 || cols >= max) - return value; - if (value[0] == " ") { - cols -= cols % this.tabSize; - stringBuilder.push(lang.stringRepeat(this.$tabStrings[" "], cols/this.tabSize)); - return value.substr(cols); - } else if (value[0] == "\t") { - stringBuilder.push(lang.stringRepeat(this.$tabStrings["\t"], cols)); - return value.substr(cols); - } - return value; - }; - - this.$renderWrappedLine = function(stringBuilder, tokens, splits, onlyContents) { - var chars = 0; - var split = 0; - var splitChars = splits[0]; - var screenColumn = 0; - - for (var i = 0; i < tokens.length; i++) { - var token = tokens[i]; - var value = token.value; - if (i == 0 && this.displayIndentGuides) { - chars = value.length; - value = this.renderIndentGuide(stringBuilder, value, splitChars); - if (!value) - continue; - chars -= value.length; - } - - if (chars + value.length < splitChars) { - screenColumn = this.$renderToken(stringBuilder, screenColumn, token, value); - chars += value.length; - } else { - while (chars + value.length >= splitChars) { - screenColumn = this.$renderToken( - stringBuilder, screenColumn, - token, value.substring(0, splitChars - chars) - ); - value = value.substring(splitChars - chars); - chars = splitChars; - - if (!onlyContents) { - stringBuilder.push("", - "
" - ); - } - - split ++; - screenColumn = 0; - splitChars = splits[split] || Number.MAX_VALUE; - } - if (value.length != 0) { - chars += value.length; - screenColumn = this.$renderToken( - stringBuilder, screenColumn, token, value - ); - } - } - } - }; - - this.$renderSimpleLine = function(stringBuilder, tokens) { - var screenColumn = 0; - var token = tokens[0]; - var value = token.value; - if (this.displayIndentGuides) - value = this.renderIndentGuide(stringBuilder, value); - if (value) - screenColumn = this.$renderToken(stringBuilder, screenColumn, token, value); - for (var i = 1; i < tokens.length; i++) { - token = tokens[i]; - value = token.value; - screenColumn = this.$renderToken(stringBuilder, screenColumn, token, value); - } - }; - this.$renderLine = function(stringBuilder, row, onlyContents, foldLine) { - if (!foldLine && foldLine != false) - foldLine = this.session.getFoldLine(row); - - if (foldLine) - var tokens = this.$getFoldLineTokens(row, foldLine); - else - var tokens = this.session.getTokens(row); - - - if (!onlyContents) { - stringBuilder.push( - "
" - ); - } - - if (tokens.length) { - var splits = this.session.getRowSplitData(row); - if (splits && splits.length) - this.$renderWrappedLine(stringBuilder, tokens, splits, onlyContents); - else - this.$renderSimpleLine(stringBuilder, tokens); - } - - if (this.showInvisibles) { - if (foldLine) - row = foldLine.end.row - - stringBuilder.push( - "", - row == this.session.getLength() - 1 ? this.EOF_CHAR : this.EOL_CHAR, - "" - ); - } - if (!onlyContents) - stringBuilder.push("
"); - }; - - this.$getFoldLineTokens = function(row, foldLine) { - var session = this.session; - var renderTokens = []; - - function addTokens(tokens, from, to) { - var idx = 0, col = 0; - while ((col + tokens[idx].value.length) < from) { - col += tokens[idx].value.length; - idx++; - - if (idx == tokens.length) - return; - } - if (col != from) { - var value = tokens[idx].value.substring(from - col); - if (value.length > (to - from)) - value = value.substring(0, to - from); - - renderTokens.push({ - type: tokens[idx].type, - value: value - }); - - col = from + value.length; - idx += 1; - } - - while (col < to && idx < tokens.length) { - var value = tokens[idx].value; - if (value.length + col > to) { - renderTokens.push({ - type: tokens[idx].type, - value: value.substring(0, to - col) - }); - } else - renderTokens.push(tokens[idx]); - col += value.length; - idx += 1; - } - } - - var tokens = session.getTokens(row); - foldLine.walk(function(placeholder, row, column, lastColumn, isNewRow) { - if (placeholder != null) { - renderTokens.push({ - type: "fold", - value: placeholder - }); - } else { - if (isNewRow) - tokens = session.getTokens(row); - - if (tokens.length) - addTokens(tokens, lastColumn, column); - } - }, foldLine.end.row, this.session.getLine(foldLine.end.row).length); - - return renderTokens; - }; - - this.$useLineGroups = function() { - return this.session.getUseWrapMode(); - }; - - this.destroy = function() { - clearInterval(this.$pollSizeChangesTimer); - if (this.$measureNode) - this.$measureNode.parentNode.removeChild(this.$measureNode); - delete this.$measureNode; - }; - -}).call(Text.prototype); - -exports.Text = Text; - -}); - -ace.define('ace/layer/cursor', ['require', 'exports', 'module' , 'ace/lib/dom'], function(require, exports, module) { - - -var dom = require("../lib/dom"); - -var Cursor = function(parentEl) { - this.element = dom.createElement("div"); - this.element.className = "ace_layer ace_cursor-layer"; - parentEl.appendChild(this.element); - - this.isVisible = false; - this.isBlinking = true; - this.blinkInterval = 1000; - this.smoothBlinking = false; - - this.cursors = []; - this.cursor = this.addCursor(); - dom.addCssClass(this.element, "ace_hidden-cursors"); -}; - -(function() { - - this.$padding = 0; - this.setPadding = function(padding) { - this.$padding = padding; - }; - - this.setSession = function(session) { - this.session = session; - }; - - this.setBlinking = function(blinking) { - if (blinking != this.isBlinking){ - this.isBlinking = blinking; - this.restartTimer(); - } - }; - - this.setBlinkInterval = function(blinkInterval) { - if (blinkInterval != this.blinkInterval){ - this.blinkInterval = blinkInterval; - this.restartTimer(); - } - }; - - this.setSmoothBlinking = function(smoothBlinking) { - if (smoothBlinking != this.smoothBlinking) { - this.smoothBlinking = smoothBlinking; - if (smoothBlinking) - dom.addCssClass(this.element, "ace_smooth-blinking"); - else - dom.removeCssClass(this.element, "ace_smooth-blinking"); - this.restartTimer(); - } - }; - - this.addCursor = function() { - var el = dom.createElement("div"); - el.className = "ace_cursor"; - this.element.appendChild(el); - this.cursors.push(el); - return el; - }; - - this.removeCursor = function() { - if (this.cursors.length > 1) { - var el = this.cursors.pop(); - el.parentNode.removeChild(el); - return el; - } - }; - - this.hideCursor = function() { - this.isVisible = false; - dom.addCssClass(this.element, "ace_hidden-cursors"); - this.restartTimer(); - }; - - this.showCursor = function() { - this.isVisible = true; - dom.removeCssClass(this.element, "ace_hidden-cursors"); - this.restartTimer(); - }; - - this.restartTimer = function() { - clearInterval(this.intervalId); - clearTimeout(this.timeoutId); - if (this.smoothBlinking) - dom.removeCssClass(this.element, "ace_smooth-blinking"); - for (var i = this.cursors.length; i--; ) - this.cursors[i].style.opacity = ""; - - if (!this.isBlinking || !this.blinkInterval || !this.isVisible) - return; - - if (this.smoothBlinking) - setTimeout(function(){ - dom.addCssClass(this.element, "ace_smooth-blinking"); - }.bind(this)); - - var blink = function(){ - this.timeoutId = setTimeout(function() { - for (var i = this.cursors.length; i--; ) { - this.cursors[i].style.opacity = 0; - } - }.bind(this), 0.6 * this.blinkInterval); - }.bind(this); - - this.intervalId = setInterval(function() { - for (var i = this.cursors.length; i--; ) { - this.cursors[i].style.opacity = ""; - } - blink(); - }.bind(this), this.blinkInterval); - - blink(); - }; - - this.getPixelPosition = function(position, onScreen) { - if (!this.config || !this.session) - return {left : 0, top : 0}; - - if (!position) - position = this.session.selection.getCursor(); - var pos = this.session.documentToScreenPosition(position); - var cursorLeft = this.$padding + pos.column * this.config.characterWidth; - var cursorTop = (pos.row - (onScreen ? this.config.firstRowScreen : 0)) * - this.config.lineHeight; - - return {left : cursorLeft, top : cursorTop}; - }; - - this.update = function(config) { - this.config = config; - - var selections = this.session.$selectionMarkers; - var i = 0, cursorIndex = 0; - - if (selections === undefined || selections.length === 0){ - selections = [{cursor: null}]; - } - - for (var i = 0, n = selections.length; i < n; i++) { - var pixelPos = this.getPixelPosition(selections[i].cursor, true); - if ((pixelPos.top > config.height + config.offset || - pixelPos.top < -config.offset) && i > 1) { - continue; - } - - var style = (this.cursors[cursorIndex++] || this.addCursor()).style; - - style.left = pixelPos.left + "px"; - style.top = pixelPos.top + "px"; - style.width = config.characterWidth + "px"; - style.height = config.lineHeight + "px"; - } - while (this.cursors.length > cursorIndex) - this.removeCursor(); - - var overwrite = this.session.getOverwrite(); - this.$setOverwrite(overwrite); - this.$pixelPos = pixelPos; - this.restartTimer(); - }; - - this.$setOverwrite = function(overwrite) { - if (overwrite != this.overwrite) { - this.overwrite = overwrite; - if (overwrite) - dom.addCssClass(this.element, "ace_overwrite-cursors"); - else - dom.removeCssClass(this.element, "ace_overwrite-cursors"); - } - }; - - this.destroy = function() { - clearInterval(this.intervalId); - clearTimeout(this.timeoutId); - }; - -}).call(Cursor.prototype); - -exports.Cursor = Cursor; - -}); - -ace.define('ace/scrollbar', ['require', 'exports', 'module' , 'ace/lib/oop', 'ace/lib/dom', 'ace/lib/event', 'ace/lib/event_emitter'], function(require, exports, module) { - - -var oop = require("./lib/oop"); -var dom = require("./lib/dom"); -var event = require("./lib/event"); -var EventEmitter = require("./lib/event_emitter").EventEmitter; -var ScrollBar = function(parent) { - this.element = dom.createElement("div"); - this.element.className = "ace_scrollbar ace_scrollbar" + this.classSuffix; - - this.inner = dom.createElement("div"); - this.inner.className = "ace_scrollbar-inner"; - this.element.appendChild(this.inner); - - parent.appendChild(this.element); - - this.setVisible(false); - this.skipEvent = false; - - event.addListener(this.element, "scroll", this.onScroll.bind(this)); - event.addListener(this.element, "mousedown", event.preventDefault); -}; - -(function() { - oop.implement(this, EventEmitter); - - this.setVisible = function(isVisible) { - this.element.style.display = isVisible ? "" : "none"; - this.isVisible = isVisible; - }; -}).call(ScrollBar.prototype); -var VScrollBar = function(parent, renderer) { - ScrollBar.call(this, parent); - this.scrollTop = 0; - renderer.$scrollbarWidth = - this.width = dom.scrollbarWidth(parent.ownerDocument); - this.inner.style.width = - this.element.style.width = (this.width || 15) + 5 + "px"; -}; - -oop.inherits(VScrollBar, ScrollBar); - -(function() { - - this.classSuffix = '-v'; - this.onScroll = function() { - if (!this.skipEvent) { - this.scrollTop = this.element.scrollTop; - this._emit("scroll", {data: this.scrollTop}); - } - this.skipEvent = false; - }; - this.getWidth = function() { - return this.isVisible ? this.width : 0; - }; - this.setHeight = function(height) { - this.element.style.height = height + "px"; - }; - this.setInnerHeight = function(height) { - this.inner.style.height = height + "px"; - }; - this.setScrollHeight = function(height) { - this.inner.style.height = height + "px"; - }; - this.setScrollTop = function(scrollTop) { - if (this.scrollTop != scrollTop) { - this.skipEvent = true; - this.scrollTop = this.element.scrollTop = scrollTop; - } - }; - -}).call(VScrollBar.prototype); -var HScrollBar = function(parent, renderer) { - ScrollBar.call(this, parent); - this.scrollLeft = 0; - this.height = renderer.$scrollbarWidth; - this.inner.style.height = - this.element.style.height = (this.height || 15) + 5 + "px"; -}; - -oop.inherits(HScrollBar, ScrollBar); - -(function() { - - this.classSuffix = '-h'; - this.onScroll = function() { - if (!this.skipEvent) { - this.scrollLeft = this.element.scrollLeft; - this._emit("scroll", {data: this.scrollLeft}); - } - this.skipEvent = false; - }; - this.getHeight = function() { - return this.isVisible ? this.height : 0; - }; - this.setWidth = function(width) { - this.element.style.width = width + "px"; - }; - this.setInnerWidth = function(width) { - this.inner.style.width = width + "px"; - }; - this.setScrollWidth = function(width) { - this.inner.style.width = width + "px"; - }; - this.setScrollLeft = function(scrollLeft) { - if (this.scrollLeft != scrollLeft) { - this.skipEvent = true; - this.scrollLeft = this.element.scrollLeft = scrollLeft; - } - }; - -}).call(HScrollBar.prototype); - - -exports.ScrollBar = VScrollBar; // backward compatibility -exports.ScrollBarV = VScrollBar; // backward compatibility -exports.ScrollBarH = HScrollBar; // backward compatibility - -exports.VScrollBar = VScrollBar; -exports.HScrollBar = HScrollBar; -}); - -ace.define('ace/renderloop', ['require', 'exports', 'module' , 'ace/lib/event'], function(require, exports, module) { - - -var event = require("./lib/event"); - - -var RenderLoop = function(onRender, win) { - this.onRender = onRender; - this.pending = false; - this.changes = 0; - this.window = win || window; -}; - -(function() { - - - this.schedule = function(change) { - this.changes = this.changes | change; - if (!this.pending && this.changes) { - this.pending = true; - var _self = this; - event.nextFrame(function() { - _self.pending = false; - var changes; - while (changes = _self.changes) { - _self.changes = 0; - _self.onRender(changes); - } - }, this.window); - } - }; - -}).call(RenderLoop.prototype); - -exports.RenderLoop = RenderLoop; -}); - -ace.define('ace/multi_select', ['require', 'exports', 'module' , 'ace/range_list', 'ace/range', 'ace/selection', 'ace/mouse/multi_select_handler', 'ace/lib/event', 'ace/lib/lang', 'ace/commands/multi_select_commands', 'ace/search', 'ace/edit_session', 'ace/editor', 'ace/config'], function(require, exports, module) { - -var RangeList = require("./range_list").RangeList; -var Range = require("./range").Range; -var Selection = require("./selection").Selection; -var onMouseDown = require("./mouse/multi_select_handler").onMouseDown; -var event = require("./lib/event"); -var lang = require("./lib/lang"); -var commands = require("./commands/multi_select_commands"); -exports.commands = commands.defaultCommands.concat(commands.multiSelectCommands); -var Search = require("./search").Search; -var search = new Search(); - -function find(session, needle, dir) { - search.$options.wrap = true; - search.$options.needle = needle; - search.$options.backwards = dir == -1; - return search.find(session); -} -var EditSession = require("./edit_session").EditSession; -(function() { - this.getSelectionMarkers = function() { - return this.$selectionMarkers; - }; -}).call(EditSession.prototype); -(function() { - this.ranges = null; - this.rangeList = null; - this.addRange = function(range, $blockChangeEvents) { - if (!range) - return; - - if (!this.inMultiSelectMode && this.rangeCount == 0) { - var oldRange = this.toOrientedRange(); - this.rangeList.add(oldRange); - this.rangeList.add(range); - if (this.rangeList.ranges.length != 2) { - this.rangeList.removeAll(); - return $blockChangeEvents || this.fromOrientedRange(range); - } - this.rangeList.removeAll(); - this.rangeList.add(oldRange); - this.$onAddRange(oldRange); - } - - if (!range.cursor) - range.cursor = range.end; - - var removed = this.rangeList.add(range); - - this.$onAddRange(range); - - if (removed.length) - this.$onRemoveRange(removed); - - if (this.rangeCount > 1 && !this.inMultiSelectMode) { - this._emit("multiSelect"); - this.inMultiSelectMode = true; - this.session.$undoSelect = false; - this.rangeList.attach(this.session); - } - - return $blockChangeEvents || this.fromOrientedRange(range); - }; - - this.toSingleRange = function(range) { - range = range || this.ranges[0]; - var removed = this.rangeList.removeAll(); - if (removed.length) - this.$onRemoveRange(removed); - - range && this.fromOrientedRange(range); - }; - this.substractPoint = function(pos) { - var removed = this.rangeList.substractPoint(pos); - if (removed) { - this.$onRemoveRange(removed); - return removed[0]; - } - }; - this.mergeOverlappingRanges = function() { - var removed = this.rangeList.merge(); - if (removed.length) - this.$onRemoveRange(removed); - else if(this.ranges[0]) - this.fromOrientedRange(this.ranges[0]); - }; - - this.$onAddRange = function(range) { - this.rangeCount = this.rangeList.ranges.length; - this.ranges.unshift(range); - this._emit("addRange", {range: range}); - }; - - this.$onRemoveRange = function(removed) { - this.rangeCount = this.rangeList.ranges.length; - if (this.rangeCount == 1 && this.inMultiSelectMode) { - var lastRange = this.rangeList.ranges.pop(); - removed.push(lastRange); - this.rangeCount = 0; - } - - for (var i = removed.length; i--; ) { - var index = this.ranges.indexOf(removed[i]); - this.ranges.splice(index, 1); - } - - this._emit("removeRange", {ranges: removed}); - - if (this.rangeCount == 0 && this.inMultiSelectMode) { - this.inMultiSelectMode = false; - this._emit("singleSelect"); - this.session.$undoSelect = true; - this.rangeList.detach(this.session); - } - - lastRange = lastRange || this.ranges[0]; - if (lastRange && !lastRange.isEqual(this.getRange())) - this.fromOrientedRange(lastRange); - }; - this.$initRangeList = function() { - if (this.rangeList) - return; - - this.rangeList = new RangeList(); - this.ranges = []; - this.rangeCount = 0; - }; - this.getAllRanges = function() { - return this.rangeCount ? this.rangeList.ranges.concat() : [this.getRange()]; - }; - - this.splitIntoLines = function () { - if (this.rangeCount > 1) { - var ranges = this.rangeList.ranges; - var lastRange = ranges[ranges.length - 1]; - var range = Range.fromPoints(ranges[0].start, lastRange.end); - - this.toSingleRange(); - this.setSelectionRange(range, lastRange.cursor == lastRange.start); - } else { - var range = this.getRange(); - var isBackwards = this.isBackwards(); - var startRow = range.start.row; - var endRow = range.end.row; - if (startRow == endRow) { - if (isBackwards) - var start = range.end, end = range.start; - else - var start = range.start, end = range.end; - - this.addRange(Range.fromPoints(end, end)); - this.addRange(Range.fromPoints(start, start)); - return; - } - - var rectSel = []; - var r = this.getLineRange(startRow, true); - r.start.column = range.start.column; - rectSel.push(r); - - for (var i = startRow + 1; i < endRow; i++) - rectSel.push(this.getLineRange(i, true)); - - r = this.getLineRange(endRow, true); - r.end.column = range.end.column; - rectSel.push(r); - - rectSel.forEach(this.addRange, this); - } - }; - this.toggleBlockSelection = function () { - if (this.rangeCount > 1) { - var ranges = this.rangeList.ranges; - var lastRange = ranges[ranges.length - 1]; - var range = Range.fromPoints(ranges[0].start, lastRange.end); - - this.toSingleRange(); - this.setSelectionRange(range, lastRange.cursor == lastRange.start); - } else { - var cursor = this.session.documentToScreenPosition(this.selectionLead); - var anchor = this.session.documentToScreenPosition(this.selectionAnchor); - - var rectSel = this.rectangularRangeBlock(cursor, anchor); - rectSel.forEach(this.addRange, this); - } - }; - this.rectangularRangeBlock = function(screenCursor, screenAnchor, includeEmptyLines) { - var rectSel = []; - - var xBackwards = screenCursor.column < screenAnchor.column; - if (xBackwards) { - var startColumn = screenCursor.column; - var endColumn = screenAnchor.column; - } else { - var startColumn = screenAnchor.column; - var endColumn = screenCursor.column; - } - - var yBackwards = screenCursor.row < screenAnchor.row; - if (yBackwards) { - var startRow = screenCursor.row; - var endRow = screenAnchor.row; - } else { - var startRow = screenAnchor.row; - var endRow = screenCursor.row; - } - - if (startColumn < 0) - startColumn = 0; - if (startRow < 0) - startRow = 0; - - if (startRow == endRow) - includeEmptyLines = true; - - for (var row = startRow; row <= endRow; row++) { - var range = Range.fromPoints( - this.session.screenToDocumentPosition(row, startColumn), - this.session.screenToDocumentPosition(row, endColumn) - ); - if (range.isEmpty()) { - if (docEnd && isSamePoint(range.end, docEnd)) - break; - var docEnd = range.end; - } - range.cursor = xBackwards ? range.start : range.end; - rectSel.push(range); - } - - if (yBackwards) - rectSel.reverse(); - - if (!includeEmptyLines) { - var end = rectSel.length - 1; - while (rectSel[end].isEmpty() && end > 0) - end--; - if (end > 0) { - var start = 0; - while (rectSel[start].isEmpty()) - start++; - } - for (var i = end; i >= start; i--) { - if (rectSel[i].isEmpty()) - rectSel.splice(i, 1); - } - } - - return rectSel; - }; -}).call(Selection.prototype); -var Editor = require("./editor").Editor; -(function() { - this.updateSelectionMarkers = function() { - this.renderer.updateCursor(); - this.renderer.updateBackMarkers(); - }; - this.addSelectionMarker = function(orientedRange) { - if (!orientedRange.cursor) - orientedRange.cursor = orientedRange.end; - - var style = this.getSelectionStyle(); - orientedRange.marker = this.session.addMarker(orientedRange, "ace_selection", style); - - this.session.$selectionMarkers.push(orientedRange); - this.session.selectionMarkerCount = this.session.$selectionMarkers.length; - return orientedRange; - }; - this.removeSelectionMarker = function(range) { - if (!range.marker) - return; - this.session.removeMarker(range.marker); - var index = this.session.$selectionMarkers.indexOf(range); - if (index != -1) - this.session.$selectionMarkers.splice(index, 1); - this.session.selectionMarkerCount = this.session.$selectionMarkers.length; - }; - - this.removeSelectionMarkers = function(ranges) { - var markerList = this.session.$selectionMarkers; - for (var i = ranges.length; i--; ) { - var range = ranges[i]; - if (!range.marker) - continue; - this.session.removeMarker(range.marker); - var index = markerList.indexOf(range); - if (index != -1) - markerList.splice(index, 1); - } - this.session.selectionMarkerCount = markerList.length; - }; - - this.$onAddRange = function(e) { - this.addSelectionMarker(e.range); - this.renderer.updateCursor(); - this.renderer.updateBackMarkers(); - }; - - this.$onRemoveRange = function(e) { - this.removeSelectionMarkers(e.ranges); - this.renderer.updateCursor(); - this.renderer.updateBackMarkers(); - }; - - this.$onMultiSelect = function(e) { - if (this.inMultiSelectMode) - return; - this.inMultiSelectMode = true; - - this.setStyle("ace_multiselect"); - this.keyBinding.addKeyboardHandler(commands.keyboardHandler); - this.commands.setDefaultHandler("exec", this.$onMultiSelectExec); - - this.renderer.updateCursor(); - this.renderer.updateBackMarkers(); - }; - - this.$onSingleSelect = function(e) { - if (this.session.multiSelect.inVirtualMode) - return; - this.inMultiSelectMode = false; - - this.unsetStyle("ace_multiselect"); - this.keyBinding.removeKeyboardHandler(commands.keyboardHandler); - - this.commands.removeDefaultHandler("exec", this.$onMultiSelectExec); - this.renderer.updateCursor(); - this.renderer.updateBackMarkers(); - }; - - this.$onMultiSelectExec = function(e) { - var command = e.command; - var editor = e.editor; - if (!editor.multiSelect) - return; - if (!command.multiSelectAction) { - var result = command.exec(editor, e.args || {}); - editor.multiSelect.addRange(editor.multiSelect.toOrientedRange()); - editor.multiSelect.mergeOverlappingRanges(); - } else if (command.multiSelectAction == "forEach") { - result = editor.forEachSelection(command, e.args); - } else if (command.multiSelectAction == "forEachLine") { - result = editor.forEachSelection(command, e.args, true); - } else if (command.multiSelectAction == "single") { - editor.exitMultiSelectMode(); - result = command.exec(editor, e.args || {}); - } else { - result = command.multiSelectAction(editor, e.args || {}); - } - return result; - }; - this.forEachSelection = function(cmd, args, $byLines) { - if (this.inVirtualSelectionMode) - return; - - var session = this.session; - var selection = this.selection; - var rangeList = selection.rangeList; - var result; - - var reg = selection._eventRegistry; - selection._eventRegistry = {}; - - var tmpSel = new Selection(session); - this.inVirtualSelectionMode = true; - for (var i = rangeList.ranges.length; i--;) { - if ($byLines) { - while (i > 0 && rangeList.ranges[i].start.row == rangeList.ranges[i - 1].end.row) - i--; - } - tmpSel.fromOrientedRange(rangeList.ranges[i]); - this.selection = session.selection = tmpSel; - var cmdResult = cmd.exec(this, args || {}); - if (!result == undefined) - result = cmdResult; - tmpSel.toOrientedRange(rangeList.ranges[i]); - } - tmpSel.detach(); - - this.selection = session.selection = selection; - this.inVirtualSelectionMode = false; - selection._eventRegistry = reg; - selection.mergeOverlappingRanges(); - - var anim = this.renderer.$scrollAnimation; - this.onCursorChange(); - this.onSelectionChange(); - if (anim && anim.from == anim.to) - this.renderer.animateScrolling(anim.from); - - return result; - }; - this.exitMultiSelectMode = function() { - if (!this.inMultiSelectMode || this.inVirtualSelectionMode) - return; - this.multiSelect.toSingleRange(); - }; - - this.getSelectedText = function() { - var text = ""; - if (this.inMultiSelectMode && !this.inVirtualSelectionMode) { - var ranges = this.multiSelect.rangeList.ranges; - var buf = []; - for (var i = 0; i < ranges.length; i++) { - buf.push(this.session.getTextRange(ranges[i])); - } - var nl = this.session.getDocument().getNewLineCharacter(); - text = buf.join(nl); - if (text.length == (buf.length - 1) * nl.length) - text = ""; - } else if (!this.selection.isEmpty()) { - text = this.session.getTextRange(this.getSelectionRange()); - } - return text; - }; - this.onPaste = function(text) { - if (this.$readOnly) - return; - - this._signal("paste", text); - if (!this.inMultiSelectMode || this.inVirtualSelectionMode) - return this.insert(text); - - var lines = text.split(/\r\n|\r|\n/); - var ranges = this.selection.rangeList.ranges; - - if (lines.length > ranges.length || lines.length < 2 || !lines[1]) - return this.commands.exec("insertstring", this, text); - - for (var i = ranges.length; i--;) { - var range = ranges[i]; - if (!range.isEmpty()) - this.session.remove(range); - - this.session.insert(range.start, lines[i]); - } - }; - this.findAll = function(needle, options, additive) { - options = options || {}; - options.needle = needle || options.needle; - this.$search.set(options); - - var ranges = this.$search.findAll(this.session); - if (!ranges.length) - return 0; - - this.$blockScrolling += 1; - var selection = this.multiSelect; - - if (!additive) - selection.toSingleRange(ranges[0]); - - for (var i = ranges.length; i--; ) - selection.addRange(ranges[i], true); - - this.$blockScrolling -= 1; - - return ranges.length; - }; - this.selectMoreLines = function(dir, skip) { - var range = this.selection.toOrientedRange(); - var isBackwards = range.cursor == range.end; - - var screenLead = this.session.documentToScreenPosition(range.cursor); - if (this.selection.$desiredColumn) - screenLead.column = this.selection.$desiredColumn; - - var lead = this.session.screenToDocumentPosition(screenLead.row + dir, screenLead.column); - - if (!range.isEmpty()) { - var screenAnchor = this.session.documentToScreenPosition(isBackwards ? range.end : range.start); - var anchor = this.session.screenToDocumentPosition(screenAnchor.row + dir, screenAnchor.column); - } else { - var anchor = lead; - } - - if (isBackwards) { - var newRange = Range.fromPoints(lead, anchor); - newRange.cursor = newRange.start; - } else { - var newRange = Range.fromPoints(anchor, lead); - newRange.cursor = newRange.end; - } - - newRange.desiredColumn = screenLead.column; - if (!this.selection.inMultiSelectMode) { - this.selection.addRange(range); - } else { - if (skip) - var toRemove = range.cursor; - } - - this.selection.addRange(newRange); - if (toRemove) - this.selection.substractPoint(toRemove); - }; - this.transposeSelections = function(dir) { - var session = this.session; - var sel = session.multiSelect; - var all = sel.ranges; - - for (var i = all.length; i--; ) { - var range = all[i]; - if (range.isEmpty()) { - var tmp = session.getWordRange(range.start.row, range.start.column); - range.start.row = tmp.start.row; - range.start.column = tmp.start.column; - range.end.row = tmp.end.row; - range.end.column = tmp.end.column; - } - } - sel.mergeOverlappingRanges(); - - var words = []; - for (var i = all.length; i--; ) { - var range = all[i]; - words.unshift(session.getTextRange(range)); - } - - if (dir < 0) - words.unshift(words.pop()); - else - words.push(words.shift()); - - for (var i = all.length; i--; ) { - var range = all[i]; - var tmp = range.clone(); - session.replace(range, words[i]); - range.start.row = tmp.start.row; - range.start.column = tmp.start.column; - } - }; - this.selectMore = function(dir, skip) { - var session = this.session; - var sel = session.multiSelect; - - var range = sel.toOrientedRange(); - if (range.isEmpty()) { - range = session.getWordRange(range.start.row, range.start.column); - range.cursor = dir == -1 ? range.start : range.end; - this.multiSelect.addRange(range); - } - var needle = session.getTextRange(range); - - var newRange = find(session, needle, dir); - if (newRange) { - newRange.cursor = dir == -1 ? newRange.start : newRange.end; - this.$blockScrolling += 1; - this.session.unfold(newRange); - this.multiSelect.addRange(newRange); - this.$blockScrolling -= 1; - this.renderer.scrollCursorIntoView(null, 0.5); - } - if (skip) - this.multiSelect.substractPoint(range.cursor); - }; - this.alignCursors = function() { - var session = this.session; - var sel = session.multiSelect; - var ranges = sel.ranges; - - if (!ranges.length) { - var range = this.selection.getRange(); - var fr = range.start.row, lr = range.end.row; - var guessRange = fr == lr; - if (guessRange) { - var max = this.session.getLength(); - var line; - do { - line = this.session.getLine(lr); - } while (/[=:]/.test(line) && ++lr < max); - do { - line = this.session.getLine(fr); - } while (/[=:]/.test(line) && --fr > 0); - - if (fr < 0) fr = 0; - if (lr >= max) lr = max - 1; - } - var lines = this.session.doc.removeLines(fr, lr); - lines = this.$reAlignText(lines, guessRange); - this.session.doc.insert({row: fr, column: 0}, lines.join("\n") + "\n"); - if (!guessRange) { - range.start.column = 0; - range.end.column = lines[lines.length - 1].length; - } - this.selection.setRange(range); - } else { - var row = -1; - var sameRowRanges = ranges.filter(function(r) { - if (r.cursor.row == row) - return true; - row = r.cursor.row; - }); - sel.$onRemoveRange(sameRowRanges); - - var maxCol = 0; - var minSpace = Infinity; - var spaceOffsets = ranges.map(function(r) { - var p = r.cursor; - var line = session.getLine(p.row); - var spaceOffset = line.substr(p.column).search(/\S/g); - if (spaceOffset == -1) - spaceOffset = 0; - - if (p.column > maxCol) - maxCol = p.column; - if (spaceOffset < minSpace) - minSpace = spaceOffset; - return spaceOffset; - }); - ranges.forEach(function(r, i) { - var p = r.cursor; - var l = maxCol - p.column; - var d = spaceOffsets[i] - minSpace; - if (l > d) - session.insert(p, lang.stringRepeat(" ", l - d)); - else - session.remove(new Range(p.row, p.column, p.row, p.column - l + d)); - - r.start.column = r.end.column = maxCol; - r.start.row = r.end.row = p.row; - r.cursor = r.end; - }); - sel.fromOrientedRange(ranges[0]); - this.renderer.updateCursor(); - this.renderer.updateBackMarkers(); - } - }; - - this.$reAlignText = function(lines, forceLeft) { - var isLeftAligned = true, isRightAligned = true; - var startW, textW, endW; - - return lines.map(function(line) { - var m = line.match(/(\s*)(.*?)(\s*)([=:].*)/); - if (!m) - return [line]; - - if (startW == null) { - startW = m[1].length; - textW = m[2].length; - endW = m[3].length; - return m; - } - - if (startW + textW + endW != m[1].length + m[2].length + m[3].length) - isRightAligned = false; - if (startW != m[1].length) - isLeftAligned = false; - - if (startW > m[1].length) - startW = m[1].length; - if (textW < m[2].length) - textW = m[2].length; - if (endW > m[3].length) - endW = m[3].length; - - return m; - }).map(forceLeft ? alignLeft : - isLeftAligned ? isRightAligned ? alignRight : alignLeft : unAlign); - - function spaces(n) { - return lang.stringRepeat(" ", n); - } - - function alignLeft(m) { - return !m[2] ? m[0] : spaces(startW) + m[2] - + spaces(textW - m[2].length + endW) - + m[4].replace(/^([=:])\s+/, "$1 ") - } - function alignRight(m) { - return !m[2] ? m[0] : spaces(startW + textW - m[2].length) + m[2] - + spaces(endW, " ") - + m[4].replace(/^([=:])\s+/, "$1 ") - } - function unAlign(m) { - return !m[2] ? m[0] : spaces(startW) + m[2] - + spaces(endW) - + m[4].replace(/^([=:])\s+/, "$1 ") - } - } -}).call(Editor.prototype); - - -function isSamePoint(p1, p2) { - return p1.row == p2.row && p1.column == p2.column; -} -exports.onSessionChange = function(e) { - var session = e.session; - if (!session.multiSelect) { - session.$selectionMarkers = []; - session.selection.$initRangeList(); - session.multiSelect = session.selection; - } - this.multiSelect = session.multiSelect; - - var oldSession = e.oldSession; - if (oldSession) { - oldSession.multiSelect.removeEventListener("addRange", this.$onAddRange); - oldSession.multiSelect.removeEventListener("removeRange", this.$onRemoveRange); - oldSession.multiSelect.removeEventListener("multiSelect", this.$onMultiSelect); - oldSession.multiSelect.removeEventListener("singleSelect", this.$onSingleSelect); - } - - session.multiSelect.on("addRange", this.$onAddRange); - session.multiSelect.on("removeRange", this.$onRemoveRange); - session.multiSelect.on("multiSelect", this.$onMultiSelect); - session.multiSelect.on("singleSelect", this.$onSingleSelect); - - if (this.inMultiSelectMode != session.selection.inMultiSelectMode) { - if (session.selection.inMultiSelectMode) - this.$onMultiSelect(); - else - this.$onSingleSelect(); - } -}; -function MultiSelect(editor) { - if (editor.$multiselectOnSessionChange) - return; - editor.$onAddRange = editor.$onAddRange.bind(editor); - editor.$onRemoveRange = editor.$onRemoveRange.bind(editor); - editor.$onMultiSelect = editor.$onMultiSelect.bind(editor); - editor.$onSingleSelect = editor.$onSingleSelect.bind(editor); - editor.$multiselectOnSessionChange = exports.onSessionChange.bind(editor); - - editor.$multiselectOnSessionChange(editor); - editor.on("changeSession", editor.$multiselectOnSessionChange); - - editor.on("mousedown", onMouseDown); - editor.commands.addCommands(commands.defaultCommands); - - addAltCursorListeners(editor); -} - -function addAltCursorListeners(editor){ - var el = editor.textInput.getElement(); - var altCursor = false; - event.addListener(el, "keydown", function(e) { - if (e.keyCode == 18 && !(e.ctrlKey || e.shiftKey || e.metaKey)) { - if (!altCursor) { - editor.renderer.setMouseCursor("crosshair"); - altCursor = true; - } - } else if (altCursor) { - reset(); - } - }); - - event.addListener(el, "keyup", reset); - event.addListener(el, "blur", reset); - function reset(e) { - if (altCursor) { - editor.renderer.setMouseCursor(""); - altCursor = false; - } - } -} - -exports.MultiSelect = MultiSelect; - - -require("./config").defineOptions(Editor.prototype, "editor", { - enableMultiselect: { - set: function(val) { - MultiSelect(this); - if (val) { - this.on("changeSession", this.$multiselectOnSessionChange); - this.on("mousedown", onMouseDown); - } else { - this.off("changeSession", this.$multiselectOnSessionChange); - this.off("mousedown", onMouseDown); - } - }, - value: true - } -}) - - - -}); - -ace.define('ace/mouse/multi_select_handler', ['require', 'exports', 'module' , 'ace/lib/event'], function(require, exports, module) { - -var event = require("../lib/event"); -function isSamePoint(p1, p2) { - return p1.row == p2.row && p1.column == p2.column; -} - -function onMouseDown(e) { - var ev = e.domEvent; - var alt = ev.altKey; - var shift = ev.shiftKey; - var ctrl = e.getAccelKey(); - var button = e.getButton(); - - if (e.editor.inMultiSelectMode && button == 2) { - e.editor.textInput.onContextMenu(e.domEvent); - return; - } - - if (!ctrl && !alt) { - if (button == 0 && e.editor.inMultiSelectMode) - e.editor.exitMultiSelectMode(); - return; - } - - var editor = e.editor; - var selection = editor.selection; - var isMultiSelect = editor.inMultiSelectMode; - var pos = e.getDocumentPosition(); - var cursor = selection.getCursor(); - var inSelection = e.inSelection() || (selection.isEmpty() && isSamePoint(pos, cursor)); - - - var mouseX = e.x, mouseY = e.y; - var onMouseSelection = function(e) { - mouseX = e.clientX; - mouseY = e.clientY; - }; - - var blockSelect = function() { - var newCursor = editor.renderer.pixelToScreenCoordinates(mouseX, mouseY); - var cursor = session.screenToDocumentPosition(newCursor.row, newCursor.column); - - if (isSamePoint(screenCursor, newCursor) - && isSamePoint(cursor, selection.selectionLead)) - return; - screenCursor = newCursor; - - editor.selection.moveCursorToPosition(cursor); - editor.selection.clearSelection(); - editor.renderer.scrollCursorIntoView(); - - editor.removeSelectionMarkers(rectSel); - rectSel = selection.rectangularRangeBlock(screenCursor, screenAnchor); - rectSel.forEach(editor.addSelectionMarker, editor); - editor.updateSelectionMarkers(); - }; - - var session = editor.session; - var screenAnchor = editor.renderer.pixelToScreenCoordinates(mouseX, mouseY); - var screenCursor = screenAnchor; - - - - if (ctrl && !shift && !alt && button == 0) { - if (!isMultiSelect && inSelection) - return; // dragging - - if (!isMultiSelect) { - var range = selection.toOrientedRange(); - editor.addSelectionMarker(range); - } - - var oldRange = selection.rangeList.rangeAtPoint(pos); - - editor.$blockScrolling++; - editor.once("mouseup", function() { - var tmpSel = selection.toOrientedRange(); - - if (oldRange && tmpSel.isEmpty() && isSamePoint(oldRange.cursor, tmpSel.cursor)) - selection.substractPoint(tmpSel.cursor); - else { - if (range) { - editor.removeSelectionMarker(range); - selection.addRange(range); - } - selection.addRange(tmpSel); - } - editor.$blockScrolling--; - }); - - } else if (alt && button == 0) { - e.stop(); - - if (isMultiSelect && !ctrl) - selection.toSingleRange(); - else if (!isMultiSelect && ctrl) - selection.addRange(); - - var rectSel = []; - if (shift) { - screenAnchor = session.documentToScreenPosition(selection.lead); - blockSelect(); - } else { - selection.moveCursorToPosition(pos); - selection.clearSelection(); - } - - - var onMouseSelectionEnd = function(e) { - clearInterval(timerId); - editor.removeSelectionMarkers(rectSel); - for (var i = 0; i < rectSel.length; i++) - selection.addRange(rectSel[i]); - }; - - var onSelectionInterval = blockSelect; - - event.capture(editor.container, onMouseSelection, onMouseSelectionEnd); - var timerId = setInterval(function() {onSelectionInterval();}, 20); - - return e.preventDefault(); - } -} - - -exports.onMouseDown = onMouseDown; - -}); - -ace.define('ace/commands/multi_select_commands', ['require', 'exports', 'module' , 'ace/keyboard/hash_handler'], function(require, exports, module) { -exports.defaultCommands = [{ - name: "addCursorAbove", - exec: function(editor) { editor.selectMoreLines(-1); }, - bindKey: {win: "Ctrl-Alt-Up", mac: "Ctrl-Alt-Up"}, - readonly: true -}, { - name: "addCursorBelow", - exec: function(editor) { editor.selectMoreLines(1); }, - bindKey: {win: "Ctrl-Alt-Down", mac: "Ctrl-Alt-Down"}, - readonly: true -}, { - name: "addCursorAboveSkipCurrent", - exec: function(editor) { editor.selectMoreLines(-1, true); }, - bindKey: {win: "Ctrl-Alt-Shift-Up", mac: "Ctrl-Alt-Shift-Up"}, - readonly: true -}, { - name: "addCursorBelowSkipCurrent", - exec: function(editor) { editor.selectMoreLines(1, true); }, - bindKey: {win: "Ctrl-Alt-Shift-Down", mac: "Ctrl-Alt-Shift-Down"}, - readonly: true -}, { - name: "selectMoreBefore", - exec: function(editor) { editor.selectMore(-1); }, - bindKey: {win: "Ctrl-Alt-Left", mac: "Ctrl-Alt-Left"}, - readonly: true -}, { - name: "selectMoreAfter", - exec: function(editor) { editor.selectMore(1); }, - bindKey: {win: "Ctrl-Alt-Right", mac: "Ctrl-Alt-Right"}, - readonly: true -}, { - name: "selectNextBefore", - exec: function(editor) { editor.selectMore(-1, true); }, - bindKey: {win: "Ctrl-Alt-Shift-Left", mac: "Ctrl-Alt-Shift-Left"}, - readonly: true -}, { - name: "selectNextAfter", - exec: function(editor) { editor.selectMore(1, true); }, - bindKey: {win: "Ctrl-Alt-Shift-Right", mac: "Ctrl-Alt-Shift-Right"}, - readonly: true -}, { - name: "splitIntoLines", - exec: function(editor) { editor.multiSelect.splitIntoLines(); }, - bindKey: {win: "Ctrl-Alt-L", mac: "Ctrl-Alt-L"}, - readonly: true -}, { - name: "alignCursors", - exec: function(editor) { editor.alignCursors(); }, - bindKey: {win: "Ctrl-Alt-A", mac: "Ctrl-Alt-A"} -}]; -exports.multiSelectCommands = [{ - name: "singleSelection", - bindKey: "esc", - exec: function(editor) { editor.exitMultiSelectMode(); }, - readonly: true, - isAvailable: function(editor) {return editor && editor.inMultiSelectMode} -}]; - -var HashHandler = require("../keyboard/hash_handler").HashHandler; -exports.keyboardHandler = new HashHandler(exports.multiSelectCommands); - -}); - -ace.define('ace/worker/worker_client', ['require', 'exports', 'module' , 'ace/lib/oop', 'ace/lib/event_emitter', 'ace/config'], function(require, exports, module) { - - -var oop = require("../lib/oop"); -var EventEmitter = require("../lib/event_emitter").EventEmitter; -var config = require("../config"); - -var WorkerClient = function(topLevelNamespaces, mod, classname) { - this.$sendDeltaQueue = this.$sendDeltaQueue.bind(this); - this.changeListener = this.changeListener.bind(this); - this.onMessage = this.onMessage.bind(this); - if (require.nameToUrl && !require.toUrl) - require.toUrl = require.nameToUrl; - - var workerUrl; - if (config.get("packaged") || !require.toUrl) { - workerUrl = config.moduleUrl(mod, "worker"); - } else { - var normalizePath = this.$normalizePath; - workerUrl = normalizePath(require.toUrl("ace/worker/worker.js", null, "_")); - - var tlns = {}; - topLevelNamespaces.forEach(function(ns) { - tlns[ns] = normalizePath(require.toUrl(ns, null, "_").replace(/(\.js)?(\?.*)?$/, "")); - }); - } - - this.$worker = new Worker(workerUrl); - this.$worker.postMessage({ - init : true, - tlns: tlns, - module: mod, - classname: classname - }); - - this.callbackId = 1; - this.callbacks = {}; - - this.$worker.onmessage = this.onMessage; -}; - -(function(){ - - oop.implement(this, EventEmitter); - - this.onMessage = function(e) { - var msg = e.data; - switch(msg.type) { - case "log": - window.console && console.log && console.log.apply(console, msg.data); - break; - - case "event": - this._emit(msg.name, {data: msg.data}); - break; - - case "call": - var callback = this.callbacks[msg.id]; - if (callback) { - callback(msg.data); - delete this.callbacks[msg.id]; - } - break; - } - }; - - this.$normalizePath = function(path) { - if (!location.host) // needed for file:// protocol - return path; - path = path.replace(/^[a-z]+:\/\/[^\/]+/, ""); // Remove domain name and rebuild it - path = location.protocol + "//" + location.host - + (path.charAt(0) == "/" ? "" : location.pathname.replace(/\/[^\/]*$/, "")) - + "/" + path.replace(/^[\/]+/, ""); - return path; - }; - - this.terminate = function() { - this._emit("terminate", {}); - this.deltaQueue = null; - this.$worker.terminate(); - this.$worker = null; - this.$doc.removeEventListener("change", this.changeListener); - this.$doc = null; - }; - - this.send = function(cmd, args) { - this.$worker.postMessage({command: cmd, args: args}); - }; - - this.call = function(cmd, args, callback) { - if (callback) { - var id = this.callbackId++; - this.callbacks[id] = callback; - args.push(id); - } - this.send(cmd, args); - }; - - this.emit = function(event, data) { - try { - this.$worker.postMessage({event: event, data: {data: data.data}}); - } - catch(ex) {} - }; - - this.attachToDocument = function(doc) { - if(this.$doc) - this.terminate(); - - this.$doc = doc; - this.call("setValue", [doc.getValue()]); - doc.on("change", this.changeListener); - }; - - this.changeListener = function(e) { - if (!this.deltaQueue) { - this.deltaQueue = [e.data]; - setTimeout(this.$sendDeltaQueue, 0); - } else - this.deltaQueue.push(e.data); - }; - - this.$sendDeltaQueue = function() { - var q = this.deltaQueue; - if (!q) return; - this.deltaQueue = null; - if (q.length > 20 && q.length > this.$doc.getLength() >> 1) { - this.call("setValue", [this.$doc.getValue()]); - } else - this.emit("change", {data: q}); - } - -}).call(WorkerClient.prototype); - - -var UIWorkerClient = function(topLevelNamespaces, mod, classname) { - this.$sendDeltaQueue = this.$sendDeltaQueue.bind(this); - this.changeListener = this.changeListener.bind(this); - this.callbackId = 1; - this.callbacks = {}; - this.messageBuffer = []; - - var main = null; - var sender = Object.create(EventEmitter); - var _self = this; - - this.$worker = {}; - this.$worker.terminate = function() {}; - this.$worker.postMessage = function(e) { - _self.messageBuffer.push(e); - main && setTimeout(processNext); - }; - - var processNext = function() { - var msg = _self.messageBuffer.shift(); - if (msg.command) - main[msg.command].apply(main, msg.args); - else if (msg.event) - sender._emit(msg.event, msg.data); - }; - - sender.postMessage = function(msg) { - _self.onMessage({data: msg}); - }; - sender.callback = function(data, callbackId) { - this.postMessage({type: "call", id: callbackId, data: data}); - }; - sender.emit = function(name, data) { - this.postMessage({type: "event", name: name, data: data}); - }; - - config.loadModule(["worker", mod], function(Main) { - main = new Main[classname](sender); - while (_self.messageBuffer.length) - processNext(); - }); -}; - -UIWorkerClient.prototype = WorkerClient.prototype; - -exports.UIWorkerClient = UIWorkerClient; -exports.WorkerClient = WorkerClient; - -}); -ace.define('ace/placeholder', ['require', 'exports', 'module' , 'ace/range', 'ace/lib/event_emitter', 'ace/lib/oop'], function(require, exports, module) { - - -var Range = require("./range").Range; -var EventEmitter = require("./lib/event_emitter").EventEmitter; -var oop = require("./lib/oop"); - -var PlaceHolder = function(session, length, pos, others, mainClass, othersClass) { - var _self = this; - this.length = length; - this.session = session; - this.doc = session.getDocument(); - this.mainClass = mainClass; - this.othersClass = othersClass; - this.$onUpdate = this.onUpdate.bind(this); - this.doc.on("change", this.$onUpdate); - this.$others = others; - - this.$onCursorChange = function() { - setTimeout(function() { - _self.onCursorChange(); - }); - }; - - this.$pos = pos; - var undoStack = session.getUndoManager().$undoStack || session.getUndoManager().$undostack || {length: -1}; - this.$undoStackDepth = undoStack.length; - this.setup(); - - session.selection.on("changeCursor", this.$onCursorChange); -}; - -(function() { - - oop.implement(this, EventEmitter); - this.setup = function() { - var _self = this; - var doc = this.doc; - var session = this.session; - var pos = this.$pos; - - this.pos = doc.createAnchor(pos.row, pos.column); - this.markerId = session.addMarker(new Range(pos.row, pos.column, pos.row, pos.column + this.length), this.mainClass, null, false); - this.pos.on("change", function(event) { - session.removeMarker(_self.markerId); - _self.markerId = session.addMarker(new Range(event.value.row, event.value.column, event.value.row, event.value.column+_self.length), _self.mainClass, null, false); - }); - this.others = []; - this.$others.forEach(function(other) { - var anchor = doc.createAnchor(other.row, other.column); - _self.others.push(anchor); - }); - session.setUndoSelect(false); - }; - this.showOtherMarkers = function() { - if(this.othersActive) return; - var session = this.session; - var _self = this; - this.othersActive = true; - this.others.forEach(function(anchor) { - anchor.markerId = session.addMarker(new Range(anchor.row, anchor.column, anchor.row, anchor.column+_self.length), _self.othersClass, null, false); - anchor.on("change", function(event) { - session.removeMarker(anchor.markerId); - anchor.markerId = session.addMarker(new Range(event.value.row, event.value.column, event.value.row, event.value.column+_self.length), _self.othersClass, null, false); - }); - }); - }; - this.hideOtherMarkers = function() { - if(!this.othersActive) return; - this.othersActive = false; - for (var i = 0; i < this.others.length; i++) { - this.session.removeMarker(this.others[i].markerId); - } - }; - this.onUpdate = function(event) { - var delta = event.data; - var range = delta.range; - if(range.start.row !== range.end.row) return; - if(range.start.row !== this.pos.row) return; - if (this.$updating) return; - this.$updating = true; - var lengthDiff = delta.action === "insertText" ? range.end.column - range.start.column : range.start.column - range.end.column; - - if(range.start.column >= this.pos.column && range.start.column <= this.pos.column + this.length + 1) { - var distanceFromStart = range.start.column - this.pos.column; - this.length += lengthDiff; - if(!this.session.$fromUndo) { - if(delta.action === "insertText") { - for (var i = this.others.length - 1; i >= 0; i--) { - var otherPos = this.others[i]; - var newPos = {row: otherPos.row, column: otherPos.column + distanceFromStart}; - if(otherPos.row === range.start.row && range.start.column < otherPos.column) - newPos.column += lengthDiff; - this.doc.insert(newPos, delta.text); - } - } else if(delta.action === "removeText") { - for (var i = this.others.length - 1; i >= 0; i--) { - var otherPos = this.others[i]; - var newPos = {row: otherPos.row, column: otherPos.column + distanceFromStart}; - if(otherPos.row === range.start.row && range.start.column < otherPos.column) - newPos.column += lengthDiff; - this.doc.remove(new Range(newPos.row, newPos.column, newPos.row, newPos.column - lengthDiff)); - } - } - if(range.start.column === this.pos.column && delta.action === "insertText") { - setTimeout(function() { - this.pos.setPosition(this.pos.row, this.pos.column - lengthDiff); - for (var i = 0; i < this.others.length; i++) { - var other = this.others[i]; - var newPos = {row: other.row, column: other.column - lengthDiff}; - if(other.row === range.start.row && range.start.column < other.column) - newPos.column += lengthDiff; - other.setPosition(newPos.row, newPos.column); - } - }.bind(this), 0); - } - else if(range.start.column === this.pos.column && delta.action === "removeText") { - setTimeout(function() { - for (var i = 0; i < this.others.length; i++) { - var other = this.others[i]; - if(other.row === range.start.row && range.start.column < other.column) { - other.setPosition(other.row, other.column - lengthDiff); - } - } - }.bind(this), 0); - } - } - this.pos._emit("change", {value: this.pos}); - for (var i = 0; i < this.others.length; i++) { - this.others[i]._emit("change", {value: this.others[i]}); - } - } - this.$updating = false; - }; - - this.onCursorChange = function(event) { - if (this.$updating) return; - var pos = this.session.selection.getCursor(); - if(pos.row === this.pos.row && pos.column >= this.pos.column && pos.column <= this.pos.column + this.length) { - this.showOtherMarkers(); - this._emit("cursorEnter", event); - } else { - this.hideOtherMarkers(); - this._emit("cursorLeave", event); - } - }; - this.detach = function() { - this.session.removeMarker(this.markerId); - this.hideOtherMarkers(); - this.doc.removeEventListener("change", this.$onUpdate); - this.session.selection.removeEventListener("changeCursor", this.$onCursorChange); - this.pos.detach(); - for (var i = 0; i < this.others.length; i++) { - this.others[i].detach(); - } - this.session.setUndoSelect(true); - }; - this.cancel = function() { - if(this.$undoStackDepth === -1) - throw Error("Canceling placeholders only supported with undo manager attached to session."); - var undoManager = this.session.getUndoManager(); - var undosRequired = (undoManager.$undoStack || undoManager.$undostack).length - this.$undoStackDepth; - for (var i = 0; i < undosRequired; i++) { - undoManager.undo(true); - } - }; -}).call(PlaceHolder.prototype); - - -exports.PlaceHolder = PlaceHolder; -}); - -ace.define('ace/mode/folding/fold_mode', ['require', 'exports', 'module' , 'ace/range'], function(require, exports, module) { - - -var Range = require("../../range").Range; - -var FoldMode = exports.FoldMode = function() {}; - -(function() { - - this.foldingStartMarker = null; - this.foldingStopMarker = null; - this.getFoldWidget = function(session, foldStyle, row) { - var line = session.getLine(row); - if (this.foldingStartMarker.test(line)) - return "start"; - if (foldStyle == "markbeginend" - && this.foldingStopMarker - && this.foldingStopMarker.test(line)) - return "end"; - return ""; - }; - - this.getFoldWidgetRange = function(session, foldStyle, row) { - return null; - }; - - this.indentationBlock = function(session, row, column) { - var re = /\S/; - var line = session.getLine(row); - var startLevel = line.search(re); - if (startLevel == -1) - return; - - var startColumn = column || line.length; - var maxRow = session.getLength(); - var startRow = row; - var endRow = row; - - while (++row < maxRow) { - var level = session.getLine(row).search(re); - - if (level == -1) - continue; - - if (level <= startLevel) - break; - - endRow = row; - } - - if (endRow > startRow) { - var endColumn = session.getLine(endRow).length; - return new Range(startRow, startColumn, endRow, endColumn); - } - }; - - this.openingBracketBlock = function(session, bracket, row, column, typeRe) { - var start = {row: row, column: column + 1}; - var end = session.$findClosingBracket(bracket, start, typeRe); - if (!end) - return; - - var fw = session.foldWidgets[end.row]; - if (fw == null) - fw = session.getFoldWidget(end.row); - - if (fw == "start" && end.row > start.row) { - end.row --; - end.column = session.getLine(end.row).length; - } - return Range.fromPoints(start, end); - }; - - this.closingBracketBlock = function(session, bracket, row, column, typeRe) { - var end = {row: row, column: column}; - var start = session.$findOpeningBracket(bracket, end); - - if (!start) - return; - - start.column++; - end.column--; - - return Range.fromPoints(start, end); - }; -}).call(FoldMode.prototype); - -}); - -ace.define('ace/theme/textmate', ['require', 'exports', 'module' , 'ace/lib/dom'], function(require, exports, module) { - - -exports.isDark = false; -exports.cssClass = "ace-tm"; -exports.cssText = ".ace-tm .ace_gutter {\ -background: #f0f0f0;\ -color: #333;\ -}\ -.ace-tm .ace_print-margin {\ -width: 1px;\ -background: #e8e8e8;\ -}\ -.ace-tm .ace_fold {\ -background-color: #6B72E6;\ -}\ -.ace-tm {\ -background-color: #FFFFFF;\ -}\ -.ace-tm .ace_cursor {\ -color: black;\ -}\ -.ace-tm .ace_invisible {\ -color: rgb(191, 191, 191);\ -}\ -.ace-tm .ace_storage,\ -.ace-tm .ace_keyword {\ -color: blue;\ -}\ -.ace-tm .ace_constant {\ -color: rgb(197, 6, 11);\ -}\ -.ace-tm .ace_constant.ace_buildin {\ -color: rgb(88, 72, 246);\ -}\ -.ace-tm .ace_constant.ace_language {\ -color: rgb(88, 92, 246);\ -}\ -.ace-tm .ace_constant.ace_library {\ -color: rgb(6, 150, 14);\ -}\ -.ace-tm .ace_invalid {\ -background-color: rgba(255, 0, 0, 0.1);\ -color: red;\ -}\ -.ace-tm .ace_support.ace_function {\ -color: rgb(60, 76, 114);\ -}\ -.ace-tm .ace_support.ace_constant {\ -color: rgb(6, 150, 14);\ -}\ -.ace-tm .ace_support.ace_type,\ -.ace-tm .ace_support.ace_class {\ -color: rgb(109, 121, 222);\ -}\ -.ace-tm .ace_keyword.ace_operator {\ -color: rgb(104, 118, 135);\ -}\ -.ace-tm .ace_string {\ -color: rgb(3, 106, 7);\ -}\ -.ace-tm .ace_comment {\ -color: rgb(76, 136, 107);\ -}\ -.ace-tm .ace_comment.ace_doc {\ -color: rgb(0, 102, 255);\ -}\ -.ace-tm .ace_comment.ace_doc.ace_tag {\ -color: rgb(128, 159, 191);\ -}\ -.ace-tm .ace_constant.ace_numeric {\ -color: rgb(0, 0, 205);\ -}\ -.ace-tm .ace_variable {\ -color: rgb(49, 132, 149);\ -}\ -.ace-tm .ace_xml-pe {\ -color: rgb(104, 104, 91);\ -}\ -.ace-tm .ace_entity.ace_name.ace_function {\ -color: #0000A2;\ -}\ -.ace-tm .ace_heading {\ -color: rgb(12, 7, 255);\ -}\ -.ace-tm .ace_list {\ -color:rgb(185, 6, 144);\ -}\ -.ace-tm .ace_meta.ace_tag {\ -color:rgb(0, 22, 142);\ -}\ -.ace-tm .ace_string.ace_regex {\ -color: rgb(255, 0, 0)\ -}\ -.ace-tm .ace_marker-layer .ace_selection {\ -background: rgb(181, 213, 255);\ -}\ -.ace-tm.ace_multiselect .ace_selection.ace_start {\ -box-shadow: 0 0 3px 0px white;\ -border-radius: 2px;\ -}\ -.ace-tm .ace_marker-layer .ace_step {\ -background: rgb(252, 255, 0);\ -}\ -.ace-tm .ace_marker-layer .ace_stack {\ -background: rgb(164, 229, 101);\ -}\ -.ace-tm .ace_marker-layer .ace_bracket {\ -margin: -1px 0 0 -1px;\ -border: 1px solid rgb(192, 192, 192);\ -}\ -.ace-tm .ace_marker-layer .ace_active-line {\ -background: rgba(0, 0, 0, 0.07);\ -}\ -.ace-tm .ace_gutter-active-line {\ -background-color : #dcdcdc;\ -}\ -.ace-tm .ace_marker-layer .ace_selected-word {\ -background: rgb(250, 250, 255);\ -border: 1px solid rgb(200, 200, 250);\ -}\ -.ace-tm .ace_indent-guide {\ -background: url(\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAACCAYAAACZgbYnAAAAE0lEQVQImWP4////f4bLly//BwAmVgd1/w11/gAAAABJRU5ErkJggg==\") right repeat-y;\ -}\ -"; - -var dom = require("../lib/dom"); -dom.importCssString(exports.cssText, exports.cssClass); -}); - -ace.define('ace/ext/error_marker', ['require', 'exports', 'module' , 'ace/line_widgets', 'ace/lib/dom', 'ace/range'], function(require, exports, module) { - -var LineWidgets = require("ace/line_widgets").LineWidgets; -var dom = require("ace/lib/dom"); -var Range = require("ace/range").Range; - -function binarySearch(array, needle, comparator) { - var first = 0; - var last = array.length - 1; - - while (first <= last) { - var mid = (first + last) >> 1; - var c = comparator(needle, array[mid]); - if (c > 0) - first = mid + 1; - else if (c < 0) - last = mid - 1; - else - return mid; - } - return -(first + 1); -} - -function findAnnotations(session, row, dir) { - var annotations = session.getAnnotations().sort(Range.comparePoints); - if (!annotations.length) - return; - - var i = binarySearch(annotations, {row: row, column: -1}, Range.comparePoints); - if (i < 0) - i = -i - 1; - - if (i >= annotations.length - 1) - i = dir > 0 ? 0 : annotations.length - 1; - else if (i === 0 && dir < 0) - i = annotations.length - 1; - - var annotation = annotations[i]; - if (!annotation || !dir) - return; - - if (annotation.row === row) { - do { - annotation = annotations[i += dir]; - } while (annotation && annotation.row === row); - if (!annotation) - return annotations.slice(); - } - - - var matched = []; - row = annotation.row; - do { - matched[dir < 0 ? "unshift" : "push"](annotation); - annotation = annotations[i += dir]; - } while (annotation && annotation.row == row); - return matched.length && matched; -} - -exports.showErrorMarker = function(editor, dir) { - var session = editor.session; - if (!session.widgetManager) { - session.widgetManager = new LineWidgets(session); - session.widgetManager.attach(editor); - } - - var pos = editor.getCursorPosition(); - var row = pos.row; - var oldWidget = session.lineWidgets && session.lineWidgets[row]; - if (oldWidget) { - oldWidget.destroy(); - } else { - row -= dir; - } - var annotations = findAnnotations(session, row, dir); - var gutterAnno; - if (annotations) { - var annotation = annotations[0]; - if (annotation.pos && annotation.column == null) - pos.column = annotation.pos.sc; - pos.row = annotation.row; - gutterAnno = editor.renderer.$gutterLayer.$annotations[pos.row]; - } else if (oldWidget) { - return; - } else { - gutterAnno = { - text: ["Looks good!"], - className: "ace_ok" - }; - } - editor.session.unfold(pos.row); - editor.selection.moveCursorToPosition(pos); - editor.selection.clearSelection(); - - var w = { - row: pos.row, - fixedWidth: true, - coverGutter: true, - el: dom.createElement("div") - }; - var el = w.el.appendChild(dom.createElement("div")); - var arrow = w.el.appendChild(dom.createElement("div")); - arrow.className = "error_widget_arrow " + gutterAnno.className; - - var left = editor.renderer.$cursorLayer - .getPixelPosition(pos).left; - arrow.style.left = left + editor.renderer.gutterWidth - 5 + "px"; - - w.el.className = "error_widget_wrapper"; - el.className = "error_widget " + gutterAnno.className; - el.innerHTML = gutterAnno.text.join("
"); - - var kb = { - handleKeyboard:function(_,hashId, keyString) { - if (hashId === 0 && keyString === "esc") { - w.destroy(); - return true; - } - } - }; - - w.destroy = function() { - if (editor.$mouseHandler.isMousePressed) - return; - editor.keyBinding.removeKeyboardHandler(kb); - session.widgetManager.removeLineWidget(w); - editor.off("changeSelection", w.destroy); - editor.off("changeSession", w.destroy); - editor.off("mouseup", w.destroy); - editor.off("change", w.destroy); - }; - - editor.keyBinding.addKeyboardHandler(kb); - editor.on("changeSelection", w.destroy); - editor.on("changeSession", w.destroy); - editor.on("mouseup", w.destroy); - editor.on("change", w.destroy); - - editor.session.widgetManager.addLineWidget(w); - - w.el.onmousedown = editor.focus.bind(editor); -}; - - -dom.importCssString("\ - .error_widget_wrapper {\ - background: inherit;\ - color: inherit;\ - border:none\ - }\ - .error_widget {\ - border-top: solid 2px;\ - border-bottom: solid 2px;\ - margin: 5px 0;\ - padding: 10px 40px;\ - white-space: pre-wrap;\ - }\ - .error_widget.ace_error, .error_widget_arrow.ace_error{\ - border-color: #ff5a5a\ - }\ - .error_widget.ace_warning, .error_widget_arrow.ace_warning{\ - border-color: #F1D817\ - }\ - .error_widget.ace_info, .error_widget_arrow.ace_info{\ - border-color: #5a5a5a\ - }\ - .error_widget.ace_ok, .error_widget_arrow.ace_ok{\ - border-color: #5aaa5a\ - }\ - .error_widget_arrow {\ - position: absolute;\ - border: solid 5px;\ - border-top-color: transparent!important;\ - border-right-color: transparent!important;\ - border-left-color: transparent!important;\ - top: -5px;\ - }\ -", ""); - -}); - -ace.define('ace/line_widgets', ['require', 'exports', 'module' , 'ace/lib/oop', 'ace/lib/dom', 'ace/range'], function(require, exports, module) { - - -var oop = require("./lib/oop"); -var dom = require("./lib/dom"); -var Range = require("./range").Range; - - -function LineWidgets(session) { - this.session = session; - this.session.widgetManager = this; - this.session.getRowLength = this.getRowLength; - this.session.$getWidgetScreenLength = this.$getWidgetScreenLength; - this.updateOnChange = this.updateOnChange.bind(this); - this.renderWidgets = this.renderWidgets.bind(this); - this.measureWidgets = this.measureWidgets.bind(this); - this.session._changedWidgets = []; - this.detach = this.detach.bind(this); - - this.session.on("change", this.updateOnChange); -} - -(function() { - this.getRowLength = function(row) { - var h; - if (this.lineWidgets) - h = this.lineWidgets[row] && this.lineWidgets[row].rowCount || 0; - else - h = 0; - if (!this.$useWrapMode || !this.$wrapData[row]) { - return 1 + h; - } else { - return this.$wrapData[row].length + 1 + h; - } - }; - - this.$getWidgetScreenLength = function() { - var screenRows = 0; - this.lineWidgets.forEach(function(w){ - if (w && w.rowCount) - screenRows +=w.rowCount; - }); - return screenRows; - }; - - this.attach = function(editor) { - if (editor.widgetManager && editor.widgetManager != this) - editor.widgetManager.detach(); - - if (this.editor == editor) - return; - - this.detach(); - this.editor = editor; - - this.editor.on("changeSession", this.detach); - - editor.widgetManager = this; - - editor.setOption("enableLineWidgets", true); - editor.renderer.on("beforeRender", this.measureWidgets); - editor.renderer.on("afterRender", this.renderWidgets); - }; - this.detach = function(e) { - if (e && e.session == this.session) - return; // sometimes attach can be called before setSession - var editor = this.editor; - if (!editor) - return; - - editor.off("changeSession", this.detach); - - this.editor = null; - editor.widgetManager = null; - - editor.renderer.off("beforeRender", this.measureWidgets); - editor.renderer.off("afterRender", this.renderWidgets); - var lineWidgets = this.session.lineWidgets; - lineWidgets && lineWidgets.forEach(function(w) { - if (w && w.el && w.el.parentNode) { - w._inDocument = false; - w.el.parentNode.removeChild(w.el); - } - }); - }; - - this.updateOnChange = function(e) { - var lineWidgets = this.session.lineWidgets; - if (!lineWidgets) return; - - var delta = e.data; - var range = delta.range; - var startRow = range.start.row; - var len = range.end.row - startRow; - - if (len === 0) { - } else if (delta.action == "removeText" || delta.action == "removeLines") { - var removed = lineWidgets.splice(startRow + 1, len); - removed.forEach(function(w) { - w && this.removeLineWidget(w); - }, this); - this.$updateRows(); - } else { - var args = new Array(len); - args.unshift(startRow, 0); - lineWidgets.splice.apply(lineWidgets, args); - this.$updateRows(); - } - }; - - this.$updateRows = function() { - var lineWidgets = this.session.lineWidgets; - if (!lineWidgets) return; - var noWidgets = true; - lineWidgets.forEach(function(w, i) { - if (w) { - noWidgets = false; - w.row = i; - } - }); - if (noWidgets) - this.session.lineWidgets = null; - }; - - this.addLineWidget = function(w) { - if (!this.session.lineWidgets) - this.session.lineWidgets = new Array(this.session.getLength()); - - this.session.lineWidgets[w.row] = w; - - var renderer = this.editor.renderer; - if (w.html && !w.el) { - w.el = dom.createElement("div"); - w.el.innerHTML = w.html; - } - if (w.el) { - dom.addCssClass(w.el, "ace_lineWidgetContainer"); - w.el.style.position = "absolute"; - w.el.style.zIndex = 5; - renderer.container.appendChild(w.el); - w._inDocument = true; - } - - if (!w.coverGutter) { - w.el.style.zIndex = 3; - } - if (!w.pixelHeight) { - w.pixelHeight = w.el.offsetHeight; - } - if (w.rowCount == null) - w.rowCount = w.pixelHeight / renderer.layerConfig.lineHeight; - - this.session._emit("changeFold", {data:{start:{row: w.row}}}); - - this.$updateRows(); - this.renderWidgets(null, renderer); - return w; - }; - - this.removeLineWidget = function(w) { - w._inDocument = false; - if (w.el && w.el.parentNode) - w.el.parentNode.removeChild(w.el); - if (w.editor && w.editor.destroy) try { - w.editor.destroy(); - } catch(e){} - if (this.session.lineWidgets) - this.session.lineWidgets[w.row] = undefined; - this.session._emit("changeFold", {data:{start:{row: w.row}}}); - this.$updateRows(); - }; - - this.onWidgetChanged = function(w) { - this.session._changedWidgets.push(w); - this.editor && this.editor.renderer.updateFull(); - }; - - this.measureWidgets = function(e, renderer) { - var changedWidgets = this.session._changedWidgets; - var config = renderer.layerConfig; - - if (!changedWidgets || !changedWidgets.length) return; - var min = Infinity; - for (var i = 0; i < changedWidgets.length; i++) { - var w = changedWidgets[i]; - if (!w._inDocument) { - w._inDocument = true; - renderer.container.appendChild(w.el); - } - - w.h = w.el.offsetHeight; - - if (!w.fixedWidth) { - w.w = w.el.offsetWidth; - w.screenWidth = Math.ceil(w.w / config.characterWidth); - } - - var rowCount = w.h / config.lineHeight; - if (w.coverLine) { - rowCount -= this.session.getRowLineCount(w.row); - if (rowCount < 0) - rowCount = 0; - } - if (w.rowCount != rowCount) { - w.rowCount = rowCount; - if (w.row < min) - min = w.row; - } - } - if (min != Infinity) { - this.session._emit("changeFold", {data:{start:{row: min}}}); - this.session.lineWidgetWidth = null; - } - this.session._changedWidgets = []; - }; - - this.renderWidgets = function(e, renderer) { - var config = renderer.layerConfig; - var lineWidgets = this.session.lineWidgets; - if (!lineWidgets) - return; - var first = Math.min(this.firstRow, config.firstRow); - var last = Math.max(this.lastRow, config.lastRow, lineWidgets.length); - - while (first > 0 && !lineWidgets[first]) - first--; - - this.firstRow = config.firstRow; - this.lastRow = config.lastRow; - - renderer.$cursorLayer.config = config; - for (var i = first; i <= last; i++) { - var w = lineWidgets[i]; - if (!w || !w.el) continue; - - if (!w._inDocument) { - w._inDocument = true; - renderer.container.appendChild(w.el); - } - var top = renderer.$cursorLayer.getPixelPosition({row: i, column:0}, true).top; - if (!w.coverLine) - top += config.lineHeight * this.session.getRowLineCount(w.row); - w.el.style.top = top - config.offset + "px"; - - var left = w.coverGutter ? 0 : renderer.gutterWidth; - if (!w.fixedWidth) - left -= renderer.scrollLeft; - w.el.style.left = left + "px"; - - if (w.fixedWidth) { - w.el.style.right = renderer.scrollBar.getWidth() + "px"; - } else { - w.el.style.right = ""; - } - } - }; - -}).call(LineWidgets.prototype); - - -exports.LineWidgets = LineWidgets; - -}); - - - - -; - (function() { - ace.require(["ace/ace"], function(a) { - a && a.config.init(); - if (!window.ace) - window.ace = {}; - for (var key in a) if (a.hasOwnProperty(key)) - ace[key] = a[key]; - }); - })(); - \ No newline at end of file diff --git a/IDE/jsrealb-ide/ace-src-noconflict/ext-chromevox.js b/IDE/jsrealb-ide/ace-src-noconflict/ext-chromevox.js deleted file mode 100644 index 667b51ee..00000000 --- a/IDE/jsrealb-ide/ace-src-noconflict/ext-chromevox.js +++ /dev/null @@ -1,537 +0,0 @@ -ace.define('ace/ext/chromevox', ['require', 'exports', 'module' , 'ace/editor', 'ace/config'], function(require, exports, module) { -var cvoxAce = {}; -cvoxAce.SpeechProperty; -cvoxAce.Cursor; -cvoxAce.Token; -cvoxAce.Annotation; -var CONSTANT_PROP = { - 'rate': 0.8, - 'pitch': 0.4, - 'volume': 0.9 -}; -var DEFAULT_PROP = { - 'rate': 1, - 'pitch': 0.5, - 'volume': 0.9 -}; -var ENTITY_PROP = { - 'rate': 0.8, - 'pitch': 0.8, - 'volume': 0.9 -}; -var KEYWORD_PROP = { - 'rate': 0.8, - 'pitch': 0.3, - 'volume': 0.9 -}; -var STORAGE_PROP = { - 'rate': 0.8, - 'pitch': 0.7, - 'volume': 0.9 -}; -var VARIABLE_PROP = { - 'rate': 0.8, - 'pitch': 0.8, - 'volume': 0.9 -}; -var DELETED_PROP = { - 'punctuationEcho': 'none', - 'relativePitch': -0.6 -}; -var ERROR_EARCON = 'ALERT_NONMODAL'; -var MODE_SWITCH_EARCON = 'ALERT_MODAL'; -var NO_MATCH_EARCON = 'INVALID_KEYPRESS'; -var INSERT_MODE_STATE = 'insertMode'; -var COMMAND_MODE_STATE = 'start'; - -var REPLACE_LIST = [ - { - substr: ';', - newSubstr: ' semicolon ' - }, - { - substr: ':', - newSubstr: ' colon ' - } -]; -var Command = { - SPEAK_ANNOT: 'annots', - SPEAK_ALL_ANNOTS: 'all_annots', - TOGGLE_LOCATION: 'toggle_location', - SPEAK_MODE: 'mode', - SPEAK_ROW_COL: 'row_col', - TOGGLE_DISPLACEMENT: 'toggle_displacement', - FOCUS_TEXT: 'focus_text' -}; -var KEY_PREFIX = 'CONTROL + SHIFT '; -cvoxAce.editor = null; -var lastCursor = null; -var annotTable = {}; -var shouldSpeakRowLocation = false; -var shouldSpeakDisplacement = false; -var changed = false; -var vimState = null; -var keyCodeToShortcutMap = {}; -var cmdToShortcutMap = {}; -var getKeyShortcutString = function(keyCode) { - return KEY_PREFIX + String.fromCharCode(keyCode); -}; -var isVimMode = function() { - var keyboardHandler = cvoxAce.editor.keyBinding.getKeyboardHandler(); - return keyboardHandler.$id === 'ace/keyboard/vim'; -}; -var getCurrentToken = function(cursor) { - return cvoxAce.editor.getSession().getTokenAt(cursor.row, cursor.column + 1); -}; -var getCurrentLine = function(cursor) { - return cvoxAce.editor.getSession().getLine(cursor.row); -}; -var onRowChange = function(currCursor) { - if (annotTable[currCursor.row]) { - cvox.Api.playEarcon(ERROR_EARCON); - } - if (shouldSpeakRowLocation) { - cvox.Api.stop(); - speakChar(currCursor); - speakTokenQueue(getCurrentToken(currCursor)); - speakLine(currCursor.row, 1); - } else { - speakLine(currCursor.row, 0); - } -}; -var isWord = function(cursor) { - var line = getCurrentLine(cursor); - var lineSuffix = line.substr(cursor.column - 1); - if (cursor.column === 0) { - lineSuffix = ' ' + line; - } - var firstWordRegExp = /^\W(\w+)/; - var words = firstWordRegExp.exec(lineSuffix); - return words !== null; -}; -var rules = { - 'constant': { - prop: CONSTANT_PROP - }, - 'entity': { - prop: ENTITY_PROP - }, - 'keyword': { - prop: KEYWORD_PROP - }, - 'storage': { - prop: STORAGE_PROP - }, - 'variable': { - prop: VARIABLE_PROP - }, - 'meta': { - prop: DEFAULT_PROP, - replace: [ - { - substr: '', - newSubstr: ' close tag ' - }, - { - substr: '<', - newSubstr: ' tag start ' - }, - { - substr: '>', - newSubstr: ' tag end ' - } - ] - } -}; -var DEFAULT_RULE = { - prop: DEFAULT_RULE -}; -var expand = function(value, replaceRules) { - var newValue = value; - for (var i = 0; i < replaceRules.length; i++) { - var replaceRule = replaceRules[i]; - var regexp = new RegExp(replaceRule.substr, 'g'); - newValue = newValue.replace(regexp, replaceRule.newSubstr); - } - return newValue; -}; -var mergeTokens = function(tokens, start, end) { - var newToken = {}; - newToken.value = ''; - newToken.type = tokens[start].type; - for (var j = start; j < end; j++) { - newToken.value += tokens[j].value; - } - return newToken; -}; -var mergeLikeTokens = function(tokens) { - if (tokens.length <= 1) { - return tokens; - } - var newTokens = []; - var lastLikeIndex = 0; - for (var i = 1; i < tokens.length; i++) { - var lastLikeToken = tokens[lastLikeIndex]; - var currToken = tokens[i]; - if (getTokenRule(lastLikeToken) !== getTokenRule(currToken)) { - newTokens.push(mergeTokens(tokens, lastLikeIndex, i)); - lastLikeIndex = i; - } - } - newTokens.push(mergeTokens(tokens, lastLikeIndex, tokens.length)); - return newTokens; -}; -var isRowWhiteSpace = function(row) { - var line = cvoxAce.editor.getSession().getLine(row); - var whiteSpaceRegexp = /^\s*$/; - return whiteSpaceRegexp.exec(line) !== null; -}; -var speakLine = function(row, queue) { - var tokens = cvoxAce.editor.getSession().getTokens(row); - if (tokens.length === 0 || isRowWhiteSpace(row)) { - cvox.Api.playEarcon('EDITABLE_TEXT'); - return; - } - tokens = mergeLikeTokens(tokens); - var firstToken = tokens[0]; - tokens = tokens.filter(function(token) { - return token !== firstToken; - }); - speakToken_(firstToken, queue); - tokens.forEach(speakTokenQueue); -}; -var speakTokenFlush = function(token) { - speakToken_(token, 0); -}; -var speakTokenQueue = function(token) { - speakToken_(token, 1); -}; -var getTokenRule = function(token) { - if (!token || !token.type) { - return; - } - var split = token.type.split('.'); - if (split.length === 0) { - return; - } - var type = split[0]; - var rule = rules[type]; - if (!rule) { - return DEFAULT_RULE; - } - return rule; -}; -var speakToken_ = function(token, queue) { - var rule = getTokenRule(token); - var value = expand(token.value, REPLACE_LIST); - if (rule.replace) { - value = expand(value, rule.replace); - } - cvox.Api.speak(value, queue, rule.prop); -}; -var speakChar = function(cursor) { - var line = getCurrentLine(cursor); - cvox.Api.speak(line[cursor.column], 1); -}; -var speakDisplacement = function(lastCursor, currCursor) { - var line = getCurrentLine(currCursor); - var displace = line.substring(lastCursor.column, currCursor.column); - displace = displace.replace(/ /g, ' space '); - cvox.Api.speak(displace); -}; -var speakCharOrWordOrLine = function(lastCursor, currCursor) { - if (Math.abs(lastCursor.column - currCursor.column) !== 1) { - var currLineLength = getCurrentLine(currCursor).length; - if (currCursor.column === 0 || currCursor.column === currLineLength) { - speakLine(currCursor.row, 0); - return; - } - if (isWord(currCursor)) { - cvox.Api.stop(); - speakTokenQueue(getCurrentToken(currCursor)); - return; - } - } - speakChar(currCursor); -}; -var onColumnChange = function(lastCursor, currCursor) { - if (!cvoxAce.editor.selection.isEmpty()) { - speakDisplacement(lastCursor, currCursor); - cvox.Api.speak('selected', 1); - } - else if (shouldSpeakDisplacement) { - speakDisplacement(lastCursor, currCursor); - } else { - speakCharOrWordOrLine(lastCursor, currCursor); - } -}; -var onCursorChange = function(evt) { - if (changed) { - changed = false; - return; - } - var currCursor = cvoxAce.editor.selection.getCursor(); - if (currCursor.row !== lastCursor.row) { - onRowChange(currCursor); - } else { - onColumnChange(lastCursor, currCursor); - } - lastCursor = currCursor; -}; -var onSelectionChange = function(evt) { - if (cvoxAce.editor.selection.isEmpty()) { - cvox.Api.speak('unselected'); - } -}; -var onChange = function(evt) { - var data = evt.data; - switch (data.action) { - case 'removeText': - cvox.Api.speak(data.text, 0, DELETED_PROP); - changed = true; - break; - case 'insertText': - cvox.Api.speak(data.text, 0); - changed = true; - break; - } -}; -var isNewAnnotation = function(annot) { - var row = annot.row; - var col = annot.column; - return !annotTable[row] || !annotTable[row][col]; -}; -var populateAnnotations = function(annotations) { - annotTable = {}; - for (var i = 0; i < annotations.length; i++) { - var annotation = annotations[i]; - var row = annotation.row; - var col = annotation.column; - if (!annotTable[row]) { - annotTable[row] = {}; - } - annotTable[row][col] = annotation; - } -}; -var onAnnotationChange = function(evt) { - var annotations = cvoxAce.editor.getSession().getAnnotations(); - var newAnnotations = annotations.filter(isNewAnnotation); - if (newAnnotations.length > 0) { - cvox.Api.playEarcon(ERROR_EARCON); - } - populateAnnotations(annotations); -}; -var speakAnnot = function(annot) { - var annotText = annot.type + ' ' + annot.text + ' on ' + - rowColToString(annot.row, annot.column); - annotText = annotText.replace(';', 'semicolon'); - cvox.Api.speak(annotText, 1); -}; -var speakAnnotsByRow = function(row) { - var annots = annotTable[row]; - for (var col in annots) { - speakAnnot(annots[col]); - } -}; -var rowColToString = function(row, col) { - return 'row ' + (row + 1) + ' column ' + (col + 1); -}; -var speakCurrRowAndCol = function() { - cvox.Api.speak(rowColToString(lastCursor.row, lastCursor.column)); -}; -var speakAllAnnots = function() { - for (var row in annotTable) { - speakAnnotsByRow(row); - } -}; -var speakMode = function() { - if (!isVimMode()) { - return; - } - switch (cvoxAce.editor.keyBinding.$data.state) { - case INSERT_MODE_STATE: - cvox.Api.speak('Insert mode'); - break; - case COMMAND_MODE_STATE: - cvox.Api.speak('Command mode'); - break; - } -}; -var toggleSpeakRowLocation = function() { - shouldSpeakRowLocation = !shouldSpeakRowLocation; - if (shouldSpeakRowLocation) { - cvox.Api.speak('Speak location on row change enabled.'); - } else { - cvox.Api.speak('Speak location on row change disabled.'); - } -}; -var toggleSpeakDisplacement = function() { - shouldSpeakDisplacement = !shouldSpeakDisplacement; - if (shouldSpeakDisplacement) { - cvox.Api.speak('Speak displacement on column changes.'); - } else { - cvox.Api.speak('Speak current character or word on column changes.'); - } -}; -var onKeyDown = function(evt) { - if (evt.ctrlKey && evt.shiftKey) { - var shortcut = keyCodeToShortcutMap[evt.keyCode]; - if (shortcut) { - shortcut.func(); - } - } -}; -var onChangeStatus = function(evt, editor) { - if (!isVimMode()) { - return; - } - var state = editor.keyBinding.$data.state; - if (state === vimState) { - return; - } - switch (state) { - case INSERT_MODE_STATE: - cvox.Api.playEarcon(MODE_SWITCH_EARCON); - cvox.Api.setKeyEcho(true); - break; - case COMMAND_MODE_STATE: - cvox.Api.playEarcon(MODE_SWITCH_EARCON); - cvox.Api.setKeyEcho(false); - break; - } - vimState = state; -}; -var contextMenuHandler = function(evt) { - var cmd = evt.detail['customCommand']; - var shortcut = cmdToShortcutMap[cmd]; - if (shortcut) { - shortcut.func(); - cvoxAce.editor.focus(); - } -}; -var initContextMenu = function() { - var ACTIONS = SHORTCUTS.map(function(shortcut) { - return { - desc: shortcut.desc + getKeyShortcutString(shortcut.keyCode), - cmd: shortcut.cmd - }; - }); - var body = document.querySelector('body'); - body.setAttribute('contextMenuActions', JSON.stringify(ACTIONS)); - body.addEventListener('ATCustomEvent', contextMenuHandler, true); -}; -var onFindSearchbox = function(evt) { - if (evt.match) { - speakLine(lastCursor.row, 0); - } else { - cvox.Api.playEarcon(NO_MATCH_EARCON); - } -}; -var focus = function() { - cvoxAce.editor.focus(); -}; -var SHORTCUTS = [ - { - keyCode: 49, - func: function() { - speakAnnotsByRow(lastCursor.row); - }, - cmd: Command.SPEAK_ANNOT, - desc: 'Speak annotations on line' - }, - { - keyCode: 50, - func: speakAllAnnots, - cmd: Command.SPEAK_ALL_ANNOTS, - desc: 'Speak all annotations' - }, - { - keyCode: 51, - func: speakMode, - cmd: Command.SPEAK_MODE, - desc: 'Speak Vim mode' - }, - { - keyCode: 52, - func: toggleSpeakRowLocation, - cmd: Command.TOGGLE_LOCATION, - desc: 'Toggle speak row location' - }, - { - keyCode: 53, - func: speakCurrRowAndCol, - cmd: Command.SPEAK_ROW_COL, - desc: 'Speak row and column' - }, - { - keyCode: 54, - func: toggleSpeakDisplacement, - cmd: Command.TOGGLE_DISPLACEMENT, - desc: 'Toggle speak displacement' - }, - { - keyCode: 55, - func: focus, - cmd: Command.FOCUS_TEXT, - desc: 'Focus text' - } -]; -var onFocus = function() { - cvoxAce.editor = editor; - editor.getSession().selection.on('changeCursor', onCursorChange); - editor.getSession().selection.on('changeSelection', onSelectionChange); - editor.getSession().on('change', onChange); - editor.getSession().on('changeAnnotation', onAnnotationChange); - editor.on('changeStatus', onChangeStatus); - editor.on('findSearchBox', onFindSearchbox); - editor.container.addEventListener('keydown', onKeyDown); - - lastCursor = editor.selection.getCursor(); -}; -var init = function(editor) { - onFocus(); - SHORTCUTS.forEach(function(shortcut) { - keyCodeToShortcutMap[shortcut.keyCode] = shortcut; - cmdToShortcutMap[shortcut.cmd] = shortcut; - }); - - editor.on('focus', onFocus); - if (isVimMode()) { - cvox.Api.setKeyEcho(false); - } - initContextMenu(); -}; -function cvoxApiExists() { - return (typeof(cvox) !== 'undefined') && cvox && cvox.Api; -} -var tries = 0; -var MAX_TRIES = 15; -function watchForCvoxLoad(editor) { - if (cvoxApiExists()) { - init(editor); - } else { - tries++; - if (tries >= MAX_TRIES) { - return; - } - window.setTimeout(watchForCvoxLoad, 500, editor); - } -} - -var Editor = require('../editor').Editor; -require('../config').defineOptions(Editor.prototype, 'editor', { - enableChromevoxEnhancements: { - set: function(val) { - if (val) { - watchForCvoxLoad(this); - } - }, - value: true // turn it on by default or check for window.cvox - } -}); - -}); diff --git a/IDE/jsrealb-ide/ace-src-noconflict/ext-elastic_tabstops_lite.js b/IDE/jsrealb-ide/ace-src-noconflict/ext-elastic_tabstops_lite.js deleted file mode 100644 index bbdb2d3c..00000000 --- a/IDE/jsrealb-ide/ace-src-noconflict/ext-elastic_tabstops_lite.js +++ /dev/null @@ -1,301 +0,0 @@ -/* ***** BEGIN LICENSE BLOCK ***** - * Distributed under the BSD license: - * - * Copyright (c) 2012, Ajax.org B.V. - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are met: - * * Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * * Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * * Neither the name of Ajax.org B.V. nor the - * names of its contributors may be used to endorse or promote products - * derived from this software without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND - * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED - * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE - * DISCLAIMED. IN NO EVENT SHALL AJAX.ORG B.V. BE LIABLE FOR ANY - * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES - * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; - * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND - * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - * - * ***** END LICENSE BLOCK ***** */ - -ace.define('ace/ext/elastic_tabstops_lite', ['require', 'exports', 'module' , 'ace/editor', 'ace/config'], function(require, exports, module) { - - -var ElasticTabstopsLite = function(editor) { - this.$editor = editor; - var self = this; - var changedRows = []; - var recordChanges = false; - this.onAfterExec = function() { - recordChanges = false; - self.processRows(changedRows); - changedRows = []; - }; - this.onExec = function() { - recordChanges = true; - }; - this.onChange = function(e) { - var range = e.data.range - if (recordChanges) { - if (changedRows.indexOf(range.start.row) == -1) - changedRows.push(range.start.row); - if (range.end.row != range.start.row) - changedRows.push(range.end.row); - } - }; -}; - -(function() { - this.processRows = function(rows) { - this.$inChange = true; - var checkedRows = []; - - for (var r = 0, rowCount = rows.length; r < rowCount; r++) { - var row = rows[r]; - - if (checkedRows.indexOf(row) > -1) - continue; - - var cellWidthObj = this.$findCellWidthsForBlock(row); - var cellWidths = this.$setBlockCellWidthsToMax(cellWidthObj.cellWidths); - var rowIndex = cellWidthObj.firstRow; - - for (var w = 0, l = cellWidths.length; w < l; w++) { - var widths = cellWidths[w]; - checkedRows.push(rowIndex); - this.$adjustRow(rowIndex, widths); - rowIndex++; - } - } - this.$inChange = false; - }; - - this.$findCellWidthsForBlock = function(row) { - var cellWidths = [], widths; - var rowIter = row; - while (rowIter >= 0) { - widths = this.$cellWidthsForRow(rowIter); - if (widths.length == 0) - break; - - cellWidths.unshift(widths); - rowIter--; - } - var firstRow = rowIter + 1; - rowIter = row; - var numRows = this.$editor.session.getLength(); - - while (rowIter < numRows - 1) { - rowIter++; - - widths = this.$cellWidthsForRow(rowIter); - if (widths.length == 0) - break; - - cellWidths.push(widths); - } - - return { cellWidths: cellWidths, firstRow: firstRow }; - }; - - this.$cellWidthsForRow = function(row) { - var selectionColumns = this.$selectionColumnsForRow(row); - - var tabs = [-1].concat(this.$tabsForRow(row)); - var widths = tabs.map(function(el) { return 0; } ).slice(1); - var line = this.$editor.session.getLine(row); - - for (var i = 0, len = tabs.length - 1; i < len; i++) { - var leftEdge = tabs[i]+1; - var rightEdge = tabs[i+1]; - - var rightmostSelection = this.$rightmostSelectionInCell(selectionColumns, rightEdge); - var cell = line.substring(leftEdge, rightEdge); - widths[i] = Math.max(cell.replace(/\s+$/g,'').length, rightmostSelection - leftEdge); - } - - return widths; - }; - - this.$selectionColumnsForRow = function(row) { - var selections = [], cursor = this.$editor.getCursorPosition(); - if (this.$editor.session.getSelection().isEmpty()) { - if (row == cursor.row) - selections.push(cursor.column); - } - - return selections; - }; - - this.$setBlockCellWidthsToMax = function(cellWidths) { - var startingNewBlock = true, blockStartRow, blockEndRow, maxWidth; - var columnInfo = this.$izip_longest(cellWidths); - - for (var c = 0, l = columnInfo.length; c < l; c++) { - var column = columnInfo[c]; - if (!column.push) { - console.error(column); - continue; - } - column.push(NaN); - - for (var r = 0, s = column.length; r < s; r++) { - var width = column[r]; - if (startingNewBlock) { - blockStartRow = r; - maxWidth = 0; - startingNewBlock = false; - } - if (isNaN(width)) { - blockEndRow = r; - - for (var j = blockStartRow; j < blockEndRow; j++) { - cellWidths[j][c] = maxWidth; - } - startingNewBlock = true; - } - - maxWidth = Math.max(maxWidth, width); - } - } - - return cellWidths; - }; - - this.$rightmostSelectionInCell = function(selectionColumns, cellRightEdge) { - var rightmost = 0; - - if (selectionColumns.length) { - var lengths = []; - for (var s = 0, length = selectionColumns.length; s < length; s++) { - if (selectionColumns[s] <= cellRightEdge) - lengths.push(s); - else - lengths.push(0); - } - rightmost = Math.max.apply(Math, lengths); - } - - return rightmost; - }; - - this.$tabsForRow = function(row) { - var rowTabs = [], line = this.$editor.session.getLine(row), - re = /\t/g, match; - - while ((match = re.exec(line)) != null) { - rowTabs.push(match.index); - } - - return rowTabs; - }; - - this.$adjustRow = function(row, widths) { - var rowTabs = this.$tabsForRow(row); - - if (rowTabs.length == 0) - return; - - var bias = 0, location = -1; - var expandedSet = this.$izip(widths, rowTabs); - - for (var i = 0, l = expandedSet.length; i < l; i++) { - var w = expandedSet[i][0], it = expandedSet[i][1]; - location += 1 + w; - it += bias; - var difference = location - it; - - if (difference == 0) - continue; - - var partialLine = this.$editor.session.getLine(row).substr(0, it ); - var strippedPartialLine = partialLine.replace(/\s*$/g, ""); - var ispaces = partialLine.length - strippedPartialLine.length; - - if (difference > 0) { - this.$editor.session.getDocument().insertInLine({row: row, column: it + 1}, Array(difference + 1).join(" ") + "\t"); - this.$editor.session.getDocument().removeInLine(row, it, it + 1); - - bias += difference; - } - - if (difference < 0 && ispaces >= -difference) { - this.$editor.session.getDocument().removeInLine(row, it + difference, it); - bias += difference; - } - } - }; - this.$izip_longest = function(iterables) { - if (!iterables[0]) - return []; - var longest = iterables[0].length; - var iterablesLength = iterables.length; - - for (var i = 1; i < iterablesLength; i++) { - var iLength = iterables[i].length; - if (iLength > longest) - longest = iLength; - } - - var expandedSet = []; - - for (var l = 0; l < longest; l++) { - var set = []; - for (var i = 0; i < iterablesLength; i++) { - if (iterables[i][l] === "") - set.push(NaN); - else - set.push(iterables[i][l]); - } - - expandedSet.push(set); - } - - - return expandedSet; - }; - this.$izip = function(widths, tabs) { - var size = widths.length >= tabs.length ? tabs.length : widths.length; - - var expandedSet = []; - for (var i = 0; i < size; i++) { - var set = [ widths[i], tabs[i] ]; - expandedSet.push(set); - } - return expandedSet; - }; - -}).call(ElasticTabstopsLite.prototype); - -exports.ElasticTabstopsLite = ElasticTabstopsLite; - -var Editor = require("../editor").Editor; -require("../config").defineOptions(Editor.prototype, "editor", { - useElasticTabstops: { - set: function(val) { - if (val) { - if (!this.elasticTabstops) - this.elasticTabstops = new ElasticTabstopsLite(this); - this.commands.on("afterExec", this.elasticTabstops.onAfterExec); - this.commands.on("exec", this.elasticTabstops.onExec); - this.on("change", this.elasticTabstops.onChange); - } else if (this.elasticTabstops) { - this.commands.removeListener("afterExec", this.elasticTabstops.onAfterExec); - this.commands.removeListener("exec", this.elasticTabstops.onExec); - this.removeListener("change", this.elasticTabstops.onChange); - } - } - } -}); - -}); \ No newline at end of file diff --git a/IDE/jsrealb-ide/ace-src-noconflict/ext-emmet.js b/IDE/jsrealb-ide/ace-src-noconflict/ext-emmet.js deleted file mode 100644 index 15c18216..00000000 --- a/IDE/jsrealb-ide/ace-src-noconflict/ext-emmet.js +++ /dev/null @@ -1,1109 +0,0 @@ -/* ***** BEGIN LICENSE BLOCK ***** - * Distributed under the BSD license: - * - * Copyright (c) 2010, Ajax.org B.V. - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are met: - * * Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * * Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * * Neither the name of Ajax.org B.V. nor the - * names of its contributors may be used to endorse or promote products - * derived from this software without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND - * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED - * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE - * DISCLAIMED. IN NO EVENT SHALL AJAX.ORG B.V. BE LIABLE FOR ANY - * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES - * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; - * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND - * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - * - * ***** END LICENSE BLOCK ***** */ - -ace.define('ace/ext/emmet', ['require', 'exports', 'module' , 'ace/keyboard/hash_handler', 'ace/editor', 'ace/snippets', 'ace/range', 'ace/config'], function(require, exports, module) { - -var HashHandler = require("ace/keyboard/hash_handler").HashHandler; -var Editor = require("ace/editor").Editor; -var snippetManager = require("ace/snippets").snippetManager; -var Range = require("ace/range").Range; -var emmet; - -Editor.prototype.indexToPosition = function(index) { - return this.session.doc.indexToPosition(index); -}; - -Editor.prototype.positionToIndex = function(pos) { - return this.session.doc.positionToIndex(pos); -}; -function AceEmmetEditor() {} - -AceEmmetEditor.prototype = { - setupContext: function(editor) { - this.ace = editor; - this.indentation = editor.session.getTabString(); - if (!emmet) - emmet = window.emmet; - emmet.require("resources").setVariable("indentation", this.indentation); - this.$syntax = null; - this.$syntax = this.getSyntax(); - }, - getSelectionRange: function() { - var range = this.ace.getSelectionRange(); - return { - start: this.ace.positionToIndex(range.start), - end: this.ace.positionToIndex(range.end) - }; - }, - createSelection: function(start, end) { - this.ace.selection.setRange({ - start: this.ace.indexToPosition(start), - end: this.ace.indexToPosition(end) - }); - }, - getCurrentLineRange: function() { - var row = this.ace.getCursorPosition().row; - var lineLength = this.ace.session.getLine(row).length; - var index = this.ace.positionToIndex({row: row, column: 0}); - return { - start: index, - end: index + lineLength - }; - }, - getCaretPos: function(){ - var pos = this.ace.getCursorPosition(); - return this.ace.positionToIndex(pos); - }, - setCaretPos: function(index){ - var pos = this.ace.indexToPosition(index); - this.ace.clearSelection(); - this.ace.selection.moveCursorToPosition(pos); - }, - getCurrentLine: function() { - var row = this.ace.getCursorPosition().row; - return this.ace.session.getLine(row); - }, - replaceContent: function(value, start, end, noIndent) { - if (end == null) - end = start == null ? this.getContent().length : start; - if (start == null) - start = 0; - - var editor = this.ace; - var range = Range.fromPoints(editor.indexToPosition(start), editor.indexToPosition(end)); - editor.session.remove(range); - - range.end = range.start; - - value = this.$updateTabstops(value); - snippetManager.insertSnippet(editor, value) - }, - getContent: function(){ - return this.ace.getValue(); - }, - getSyntax: function() { - if (this.$syntax) - return this.$syntax; - var syntax = this.ace.session.$modeId.split("/").pop(); - if (syntax == "html" || syntax == "php") { - var cursor = this.ace.getCursorPosition(); - var state = this.ace.session.getState(cursor.row); - if (typeof state != "string") - state = state[0]; - if (state) { - state = state.split("-"); - if (state.length > 1) - syntax = state[0]; - else if (syntax == "php") - syntax = "html"; - } - } - return syntax; - }, - getProfileName: function() { - switch(this.getSyntax()) { - case "css": return "css"; - case "xml": - case "xsl": - return "xml"; - case "html": - var profile = emmet.require("resources").getVariable("profile"); - if (!profile) - profile = this.ace.session.getLines(0,2).join("").search(/]+XHTML/i) != -1 ? "xhtml": "html"; - return profile; - } - return "xhtml"; - }, - prompt: function(title) { - return prompt(title); - }, - getSelection: function() { - return this.ace.session.getTextRange(); - }, - getFilePath: function() { - return ""; - }, - $updateTabstops: function(value) { - var base = 1000; - var zeroBase = 0; - var lastZero = null; - var range = emmet.require('range'); - var ts = emmet.require('tabStops'); - var settings = emmet.require('resources').getVocabulary("user"); - var tabstopOptions = { - tabstop: function(data) { - var group = parseInt(data.group, 10); - var isZero = group === 0; - if (isZero) - group = ++zeroBase; - else - group += base; - - var placeholder = data.placeholder; - if (placeholder) { - placeholder = ts.processText(placeholder, tabstopOptions); - } - - var result = '${' + group + (placeholder ? ':' + placeholder : '') + '}'; - - if (isZero) { - lastZero = range.create(data.start, result); - } - - return result - }, - escape: function(ch) { - if (ch == '$') return '\\$'; - if (ch == '\\') return '\\\\'; - return ch; - } - }; - - value = ts.processText(value, tabstopOptions); - - if (settings.variables['insert_final_tabstop'] && !/\$\{0\}$/.test(value)) { - value += '${0}'; - } else if (lastZero) { - value = emmet.require('utils').replaceSubstring(value, '${0}', lastZero); - } - - return value; - } -}; - - -var keymap = { - expand_abbreviation: {"mac": "ctrl+alt+e", "win": "alt+e"}, - match_pair_outward: {"mac": "ctrl+d", "win": "ctrl+,"}, - match_pair_inward: {"mac": "ctrl+j", "win": "ctrl+shift+0"}, - matching_pair: {"mac": "ctrl+alt+j", "win": "alt+j"}, - next_edit_point: "alt+right", - prev_edit_point: "alt+left", - toggle_comment: {"mac": "command+/", "win": "ctrl+/"}, - split_join_tag: {"mac": "shift+command+'", "win": "shift+ctrl+`"}, - remove_tag: {"mac": "command+'", "win": "shift+ctrl+;"}, - evaluate_math_expression: {"mac": "shift+command+y", "win": "shift+ctrl+y"}, - increment_number_by_1: "ctrl+up", - decrement_number_by_1: "ctrl+down", - increment_number_by_01: "alt+up", - decrement_number_by_01: "alt+down", - increment_number_by_10: {"mac": "alt+command+up", "win": "shift+alt+up"}, - decrement_number_by_10: {"mac": "alt+command+down", "win": "shift+alt+down"}, - select_next_item: {"mac": "shift+command+.", "win": "shift+ctrl+."}, - select_previous_item: {"mac": "shift+command+,", "win": "shift+ctrl+,"}, - reflect_css_value: {"mac": "shift+command+r", "win": "shift+ctrl+r"}, - - encode_decode_data_url: {"mac": "shift+ctrl+d", "win": "ctrl+'"}, - expand_abbreviation_with_tab: "Tab", - wrap_with_abbreviation: {"mac": "shift+ctrl+a", "win": "shift+ctrl+a"} -}; - -var editorProxy = new AceEmmetEditor(); -exports.commands = new HashHandler(); -exports.runEmmetCommand = function(editor) { - editorProxy.setupContext(editor); - if (editorProxy.getSyntax() == "php") - return false; - var actions = emmet.require("actions"); - - if (this.action == "expand_abbreviation_with_tab") { - if (!editor.selection.isEmpty()) - return false; - } - - if (this.action == "wrap_with_abbreviation") { - return setTimeout(function() { - actions.run("wrap_with_abbreviation", editorProxy); - }, 0); - } - - try { - var result = actions.run(this.action, editorProxy); - } catch(e) { - editor._signal("changeStatus", typeof e == "string" ? e : e.message); - console.log(e); - } - return result; -}; - -for (var command in keymap) { - exports.commands.addCommand({ - name: "emmet:" + command, - action: command, - bindKey: keymap[command], - exec: exports.runEmmetCommand, - multiSelectAction: "forEach" - }); -} - -var onChangeMode = function(e, target) { - var editor = target; - if (!editor) - return; - var modeId = editor.session.$modeId; - var enabled = modeId && /css|less|scss|sass|stylus|html|php/.test(modeId); - if (e.enableEmmet === false) - enabled = false; - if (enabled) - editor.keyBinding.addKeyboardHandler(exports.commands); - else - editor.keyBinding.removeKeyboardHandler(exports.commands); -}; - - -exports.AceEmmetEditor = AceEmmetEditor; -require("ace/config").defineOptions(Editor.prototype, "editor", { - enableEmmet: { - set: function(val) { - this[val ? "on" : "removeListener"]("changeMode", onChangeMode); - onChangeMode({enableEmmet: !!val}, this); - }, - value: true - } -}); - - -exports.setCore = function(e) {emmet = e;}; -}); - -ace.define('ace/snippets', ['require', 'exports', 'module' , 'ace/lib/lang', 'ace/range', 'ace/keyboard/hash_handler', 'ace/tokenizer', 'ace/lib/dom'], function(require, exports, module) { - -var lang = require("./lib/lang") -var Range = require("./range").Range -var HashHandler = require("./keyboard/hash_handler").HashHandler; -var Tokenizer = require("./tokenizer").Tokenizer; -var comparePoints = Range.comparePoints; - -var SnippetManager = function() { - this.snippetMap = {}; - this.snippetNameMap = {}; -}; - -(function() { - this.getTokenizer = function() { - function TabstopToken(str, _, stack) { - str = str.substr(1); - if (/^\d+$/.test(str) && !stack.inFormatString) - return [{tabstopId: parseInt(str, 10)}]; - return [{text: str}] - } - function escape(ch) { - return "(?:[^\\\\" + ch + "]|\\\\.)"; - } - SnippetManager.$tokenizer = new Tokenizer({ - start: [ - {regex: /:/, onMatch: function(val, state, stack) { - if (stack.length && stack[0].expectIf) { - stack[0].expectIf = false; - stack[0].elseBranch = stack[0]; - return [stack[0]]; - } - return ":"; - }}, - {regex: /\\./, onMatch: function(val, state, stack) { - var ch = val[1]; - if (ch == "}" && stack.length) { - val = ch; - }else if ("`$\\".indexOf(ch) != -1) { - val = ch; - } else if (stack.inFormatString) { - if (ch == "n") - val = "\n"; - else if (ch == "t") - val = "\n"; - else if ("ulULE".indexOf(ch) != -1) { - val = {changeCase: ch, local: ch > "a"}; - } - } - - return [val]; - }}, - {regex: /}/, onMatch: function(val, state, stack) { - return [stack.length ? stack.shift() : val]; - }}, - {regex: /\$(?:\d+|\w+)/, onMatch: TabstopToken}, - {regex: /\$\{[\dA-Z_a-z]+/, onMatch: function(str, state, stack) { - var t = TabstopToken(str.substr(1), state, stack); - stack.unshift(t[0]); - return t; - }, next: "snippetVar"}, - {regex: /\n/, token: "newline", merge: false} - ], - snippetVar: [ - {regex: "\\|" + escape("\\|") + "*\\|", onMatch: function(val, state, stack) { - stack[0].choices = val.slice(1, -1).split(","); - }, next: "start"}, - {regex: "/(" + escape("/") + "+)/(?:(" + escape("/") + "*)/)(\\w*):?", - onMatch: function(val, state, stack) { - var ts = stack[0]; - ts.fmtString = val; - - val = this.splitRegex.exec(val); - ts.guard = val[1]; - ts.fmt = val[2]; - ts.flag = val[3]; - return ""; - }, next: "start"}, - {regex: "`" + escape("`") + "*`", onMatch: function(val, state, stack) { - stack[0].code = val.splice(1, -1); - return ""; - }, next: "start"}, - {regex: "\\?", onMatch: function(val, state, stack) { - if (stack[0]) - stack[0].expectIf = true; - }, next: "start"}, - {regex: "([^:}\\\\]|\\\\.)*:?", token: "", next: "start"} - ], - formatString: [ - {regex: "/(" + escape("/") + "+)/", token: "regex"}, - {regex: "", onMatch: function(val, state, stack) { - stack.inFormatString = true; - }, next: "start"} - ] - }); - SnippetManager.prototype.getTokenizer = function() { - return SnippetManager.$tokenizer; - } - return SnippetManager.$tokenizer; - }; - - this.tokenizeTmSnippet = function(str, startState) { - return this.getTokenizer().getLineTokens(str, startState).tokens.map(function(x) { - return x.value || x; - }); - }; - - this.$getDefaultValue = function(editor, name) { - if (/^[A-Z]\d+$/.test(name)) { - var i = name.substr(1); - return (this.variables[name[0] + "__"] || {})[i]; - } - if (/^\d+$/.test(name)) { - return (this.variables.__ || {})[name]; - } - name = name.replace(/^TM_/, ""); - - if (!editor) - return; - var s = editor.session; - switch(name) { - case "CURRENT_WORD": - var r = s.getWordRange(); - case "SELECTION": - case "SELECTED_TEXT": - return s.getTextRange(r); - case "CURRENT_LINE": - return s.getLine(editor.getCursorPosition().row); - case "PREV_LINE": // not possible in textmate - return s.getLine(editor.getCursorPosition().row - 1); - case "LINE_INDEX": - return editor.getCursorPosition().column; - case "LINE_NUMBER": - return editor.getCursorPosition().row + 1; - case "SOFT_TABS": - return s.getUseSoftTabs() ? "YES" : "NO"; - case "TAB_SIZE": - return s.getTabSize(); - case "FILENAME": - case "FILEPATH": - return "ace.ajax.org"; - case "FULLNAME": - return "Ace"; - } - }; - this.variables = {}; - this.getVariableValue = function(editor, varName) { - if (this.variables.hasOwnProperty(varName)) - return this.variables[varName](editor, varName) || ""; - return this.$getDefaultValue(editor, varName) || ""; - }; - this.tmStrFormat = function(str, ch, editor) { - var flag = ch.flag || ""; - var re = ch.guard; - re = new RegExp(re, flag.replace(/[^gi]/, "")); - var fmtTokens = this.tokenizeTmSnippet(ch.fmt, "formatString"); - var _self = this; - var formatted = str.replace(re, function() { - _self.variables.__ = arguments; - var fmtParts = _self.resolveVariables(fmtTokens, editor); - var gChangeCase = "E"; - for (var i = 0; i < fmtParts.length; i++) { - var ch = fmtParts[i]; - if (typeof ch == "object") { - fmtParts[i] = ""; - if (ch.changeCase && ch.local) { - var next = fmtParts[i + 1]; - if (next && typeof next == "string") { - if (ch.changeCase == "u") - fmtParts[i] = next[0].toUpperCase(); - else - fmtParts[i] = next[0].toLowerCase(); - fmtParts[i + 1] = next.substr(1); - } - } else if (ch.changeCase) { - gChangeCase = ch.changeCase; - } - } else if (gChangeCase == "U") { - fmtParts[i] = ch.toUpperCase(); - } else if (gChangeCase == "L") { - fmtParts[i] = ch.toLowerCase(); - } - } - return fmtParts.join(""); - }); - this.variables.__ = null; - return formatted; - }; - - this.resolveVariables = function(snippet, editor) { - var result = []; - for (var i = 0; i < snippet.length; i++) { - var ch = snippet[i]; - if (typeof ch == "string") { - result.push(ch); - } else if (typeof ch != "object") { - continue; - } else if (ch.skip) { - gotoNext(ch); - } else if (ch.processed < i) { - continue; - } else if (ch.text) { - var value = this.getVariableValue(editor, ch.text); - if (value && ch.fmtString) - value = this.tmStrFormat(value, ch); - ch.processed = i; - if (ch.expectIf == null) { - if (value) { - result.push(value); - gotoNext(ch); - } - } else { - if (value) { - ch.skip = ch.elseBranch; - } else - gotoNext(ch); - } - } else if (ch.tabstopId != null) { - result.push(ch); - } else if (ch.changeCase != null) { - result.push(ch); - } - } - function gotoNext(ch) { - var i1 = snippet.indexOf(ch, i + 1); - if (i1 != -1) - i = i1; - } - return result; - }; - - this.insertSnippet = function(editor, snippetText) { - var cursor = editor.getCursorPosition(); - var line = editor.session.getLine(cursor.row); - var indentString = line.match(/^\s*/)[0]; - var tabString = editor.session.getTabString(); - - var tokens = this.tokenizeTmSnippet(snippetText); - tokens = this.resolveVariables(tokens, editor); - tokens = tokens.map(function(x) { - if (x == "\n") - return x + indentString; - if (typeof x == "string") - return x.replace(/\t/g, tabString); - return x; - }); - var tabstops = []; - tokens.forEach(function(p, i) { - if (typeof p != "object") - return; - var id = p.tabstopId; - var ts = tabstops[id]; - if (!ts) { - ts = tabstops[id] = []; - ts.index = id; - ts.value = ""; - } - if (ts.indexOf(p) !== -1) - return; - ts.push(p); - var i1 = tokens.indexOf(p, i + 1); - if (i1 === -1) - return; - - var value = tokens.slice(i + 1, i1); - var isNested = value.some(function(t) {return typeof t === "object"}); - if (isNested && !ts.value) { - ts.value = value; - } else if (value.length && (!ts.value || typeof ts.value !== "string")) { - ts.value = value.join(""); - } - }); - tabstops.forEach(function(ts) {ts.length = 0}); - var expanding = {}; - function copyValue(val) { - var copy = [] - for (var i = 0; i < val.length; i++) { - var p = val[i]; - if (typeof p == "object") { - if (expanding[p.tabstopId]) - continue; - var j = val.lastIndexOf(p, i - 1); - p = copy[j] || {tabstopId: p.tabstopId}; - } - copy[i] = p; - } - return copy; - } - for (var i = 0; i < tokens.length; i++) { - var p = tokens[i]; - if (typeof p != "object") - continue; - var id = p.tabstopId; - var i1 = tokens.indexOf(p, i + 1); - if (expanding[id] == p) { - expanding[id] = null; - continue; - } - - var ts = tabstops[id]; - var arg = typeof ts.value == "string" ? [ts.value] : copyValue(ts.value); - arg.unshift(i + 1, Math.max(0, i1 - i)); - arg.push(p); - expanding[id] = p; - tokens.splice.apply(tokens, arg); - - if (ts.indexOf(p) === -1) - ts.push(p); - }; - var row = 0, column = 0; - var text = ""; - tokens.forEach(function(t) { - if (typeof t === "string") { - if (t[0] === "\n"){ - column = t.length - 1; - row ++; - } else - column += t.length; - text += t; - } else { - if (!t.start) - t.start = {row: row, column: column}; - else - t.end = {row: row, column: column}; - } - }); - var range = editor.getSelectionRange(); - var end = editor.session.replace(range, text); - - var tabstopManager = new TabstopManager(editor); - tabstopManager.addTabstops(tabstops, range.start, end); - tabstopManager.tabNext(); - }; - - this.$getScope = function(editor) { - var scope = editor.session.$mode.$id || ""; - scope = scope.split("/").pop(); - if (scope === "html" || scope === "php") { - if (scope === "php") - scope = "html"; - var c = editor.getCursorPosition() - var state = editor.session.getState(c.row); - if (typeof state === "object") { - state = state[0]; - } - if (state.substring) { - if (state.substring(0, 3) == "js-") - scope = "javascript"; - else if (state.substring(0, 4) == "css-") - scope = "css"; - else if (state.substring(0, 4) == "php-") - scope = "php"; - } - } - - return scope; - }; - - this.getActiveScopes = function(editor) { - var scope = this.$getScope(editor); - var scopes = [scope]; - var snippetMap = this.snippetMap; - if (snippetMap[scope] && snippetMap[scope].includeScopes) { - scopes.push.apply(scopes, snippetMap[scope].includeScopes); - } - scopes.push("_"); - return scopes; - }; - - this.expandWithTab = function(editor) { - var cursor = editor.getCursorPosition(); - var line = editor.session.getLine(cursor.row); - var before = line.substring(0, cursor.column); - var after = line.substr(cursor.column); - - var snippetMap = this.snippetMap; - var snippet; - this.getActiveScopes(editor).some(function(scope) { - var snippets = snippetMap[scope]; - if (snippets) - snippet = this.findMatchingSnippet(snippets, before, after); - return !!snippet; - }, this); - if (!snippet) - return false; - - editor.session.doc.removeInLine(cursor.row, - cursor.column - snippet.replaceBefore.length, - cursor.column + snippet.replaceAfter.length - ); - - this.variables.M__ = snippet.matchBefore; - this.variables.T__ = snippet.matchAfter; - this.insertSnippet(editor, snippet.content); - - this.variables.M__ = this.variables.T__ = null; - return true; - }; - - this.findMatchingSnippet = function(snippetList, before, after) { - for (var i = snippetList.length; i--;) { - var s = snippetList[i]; - if (s.startRe && !s.startRe.test(before)) - continue; - if (s.endRe && !s.endRe.test(after)) - continue; - if (!s.startRe && !s.endRe) - continue; - - s.matchBefore = s.startRe ? s.startRe.exec(before) : [""]; - s.matchAfter = s.endRe ? s.endRe.exec(after) : [""]; - s.replaceBefore = s.triggerRe ? s.triggerRe.exec(before)[0] : ""; - s.replaceAfter = s.endTriggerRe ? s.endTriggerRe.exec(after)[0] : ""; - return s; - } - }; - - this.snippetMap = {}; - this.snippetNameMap = {}; - this.register = function(snippets, scope) { - var snippetMap = this.snippetMap; - var snippetNameMap = this.snippetNameMap; - var self = this; - function wrapRegexp(src) { - if (src && !/^\^?\(.*\)\$?$|^\\b$/.test(src)) - src = "(?:" + src + ")" - - return src || ""; - } - function guardedRegexp(re, guard, opening) { - re = wrapRegexp(re); - guard = wrapRegexp(guard); - if (opening) { - re = guard + re; - if (re && re[re.length - 1] != "$") - re = re + "$"; - } else { - re = re + guard; - if (re && re[0] != "^") - re = "^" + re; - } - return new RegExp(re); - } - - function addSnippet(s) { - if (!s.scope) - s.scope = scope || "_"; - scope = s.scope - if (!snippetMap[scope]) { - snippetMap[scope] = []; - snippetNameMap[scope] = {}; - } - - var map = snippetNameMap[scope]; - if (s.name) { - var old = map[s.name]; - if (old) - self.unregister(old); - map[s.name] = s; - } - snippetMap[scope].push(s); - - if (s.tabTrigger && !s.trigger) { - if (!s.guard && /^\w/.test(s.tabTrigger)) - s.guard = "\\b"; - s.trigger = lang.escapeRegExp(s.tabTrigger); - } - - s.startRe = guardedRegexp(s.trigger, s.guard, true); - s.triggerRe = new RegExp(s.trigger, "", true); - - s.endRe = guardedRegexp(s.endTrigger, s.endGuard, true); - s.endTriggerRe = new RegExp(s.endTrigger, "", true); - }; - - if (snippets.content) - addSnippet(snippets); - else if (Array.isArray(snippets)) - snippets.forEach(addSnippet); - }; - this.unregister = function(snippets, scope) { - var snippetMap = this.snippetMap; - var snippetNameMap = this.snippetNameMap; - - function removeSnippet(s) { - var nameMap = snippetNameMap[s.scope||scope]; - if (nameMap && nameMap[s.name]) { - delete nameMap[s.name]; - var map = snippetMap[s.scope||scope]; - var i = map && map.indexOf(s); - if (i >= 0) - map.splice(i, 1); - } - } - if (snippets.content) - removeSnippet(snippets); - else if (Array.isArray(snippets)) - snippets.forEach(removeSnippet); - }; - this.parseSnippetFile = function(str) { - str = str.replace(/\r/g, ""); - var list = [], snippet = {}; - var re = /^#.*|^({[\s\S]*})\s*$|^(\S+) (.*)$|^((?:\n*\t.*)+)/gm; - var m; - while (m = re.exec(str)) { - if (m[1]) { - try { - snippet = JSON.parse(m[1]) - list.push(snippet); - } catch (e) {} - } if (m[4]) { - snippet.content = m[4].replace(/^\t/gm, ""); - list.push(snippet); - snippet = {}; - } else { - var key = m[2], val = m[3]; - if (key == "regex") { - var guardRe = /\/((?:[^\/\\]|\\.)*)|$/g; - snippet.guard = guardRe.exec(val)[1]; - snippet.trigger = guardRe.exec(val)[1]; - snippet.endTrigger = guardRe.exec(val)[1]; - snippet.endGuard = guardRe.exec(val)[1]; - } else if (key == "snippet") { - snippet.tabTrigger = val.match(/^\S*/)[0]; - if (!snippet.name) - snippet.name = val; - } else { - snippet[key] = val; - } - } - } - return list; - }; - this.getSnippetByName = function(name, editor) { - var snippetMap = this.snippetNameMap; - var snippet; - this.getActiveScopes(editor).some(function(scope) { - var snippets = snippetMap[scope]; - if (snippets) - snippet = snippets[name]; - return !!snippet; - }, this); - return snippet; - }; - -}).call(SnippetManager.prototype); - - -var TabstopManager = function(editor) { - if (editor.tabstopManager) - return editor.tabstopManager; - editor.tabstopManager = this; - this.$onChange = this.onChange.bind(this); - this.$onChangeSelection = lang.delayedCall(this.onChangeSelection.bind(this)).schedule; - this.$onChangeSession = this.onChangeSession.bind(this); - this.$onAfterExec = this.onAfterExec.bind(this); - this.attach(editor); -}; -(function() { - this.attach = function(editor) { - this.index = -1; - this.ranges = []; - this.tabstops = []; - this.selectedTabstop = null; - - this.editor = editor; - this.editor.on("change", this.$onChange); - this.editor.on("changeSelection", this.$onChangeSelection); - this.editor.on("changeSession", this.$onChangeSession); - this.editor.commands.on("afterExec", this.$onAfterExec); - this.editor.keyBinding.addKeyboardHandler(this.keyboardHandler); - }; - this.detach = function() { - this.tabstops.forEach(this.removeTabstopMarkers, this); - this.ranges = null; - this.tabstops = null; - this.selectedTabstop = null; - this.editor.removeListener("change", this.$onChange); - this.editor.removeListener("changeSelection", this.$onChangeSelection); - this.editor.removeListener("changeSession", this.$onChangeSession); - this.editor.commands.removeListener("afterExec", this.$onAfterExec); - this.editor.keyBinding.removeKeyboardHandler(this.keyboardHandler); - this.editor.tabstopManager = null; - this.editor = null; - }; - - this.onChange = function(e) { - var changeRange = e.data.range; - var isRemove = e.data.action[0] == "r"; - var start = changeRange.start; - var end = changeRange.end; - var startRow = start.row; - var endRow = end.row; - var lineDif = endRow - startRow; - var colDiff = end.column - start.column; - - if (isRemove) { - lineDif = -lineDif; - colDiff = -colDiff; - } - if (!this.$inChange && isRemove) { - var ts = this.selectedTabstop; - var changedOutside = !ts.some(function(r) { - return comparePoints(r.start, start) <= 0 && comparePoints(r.end, end) >= 0; - }); - if (changedOutside) - return this.detach(); - } - var ranges = this.ranges; - for (var i = 0; i < ranges.length; i++) { - var r = ranges[i]; - if (r.end.row < start.row) - continue; - - if (comparePoints(start, r.start) < 0 && comparePoints(end, r.end) > 0) { - this.removeRange(r); - i--; - continue; - } - - if (r.start.row == startRow && r.start.column > start.column) - r.start.column += colDiff; - if (r.end.row == startRow && r.end.column >= start.column) - r.end.column += colDiff; - if (r.start.row >= startRow) - r.start.row += lineDif; - if (r.end.row >= startRow) - r.end.row += lineDif; - - if (comparePoints(r.start, r.end) > 0) - this.removeRange(r); - } - if (!ranges.length) - this.detach(); - }; - this.updateLinkedFields = function() { - var ts = this.selectedTabstop; - if (!ts.hasLinkedRanges) - return; - this.$inChange = true; - var session = this.editor.session; - var text = session.getTextRange(ts.firstNonLinked); - for (var i = ts.length; i--;) { - var range = ts[i]; - if (!range.linked) - continue; - var fmt = exports.snippetManager.tmStrFormat(text, range.original) - session.replace(range, fmt); - } - this.$inChange = false; - }; - this.onAfterExec = function(e) { - if (e.command && !e.command.readOnly) - this.updateLinkedFields(); - }; - this.onChangeSelection = function() { - if (!this.editor) - return - var lead = this.editor.selection.lead; - var anchor = this.editor.selection.anchor; - var isEmpty = this.editor.selection.isEmpty(); - for (var i = this.ranges.length; i--;) { - if (this.ranges[i].linked) - continue; - var containsLead = this.ranges[i].contains(lead.row, lead.column); - var containsAnchor = isEmpty || this.ranges[i].contains(anchor.row, anchor.column); - if (containsLead && containsAnchor) - return; - } - this.detach(); - }; - this.onChangeSession = function() { - this.detach(); - }; - this.tabNext = function(dir) { - var max = this.tabstops.length - 1; - var index = this.index + (dir || 1); - index = Math.min(Math.max(index, 0), max); - this.selectTabstop(index); - if (index == max) - this.detach(); - }; - this.selectTabstop = function(index) { - var ts = this.tabstops[this.index]; - if (ts) - this.addTabstopMarkers(ts); - this.index = index; - ts = this.tabstops[this.index]; - if (!ts || !ts.length) - return; - - this.selectedTabstop = ts; - if (!this.editor.inVirtualSelectionMode) { - var sel = this.editor.multiSelect; - sel.toSingleRange(ts.firstNonLinked.clone()); - for (var i = ts.length; i--;) { - if (ts.hasLinkedRanges && ts[i].linked) - continue; - sel.addRange(ts[i].clone(), true); - } - } else { - this.editor.selection.setRange(ts.firstNonLinked); - } - - this.editor.keyBinding.addKeyboardHandler(this.keyboardHandler); - }; - this.addTabstops = function(tabstops, start, end) { - if (!tabstops[0]) { - var p = Range.fromPoints(end, end); - moveRelative(p.start, start); - moveRelative(p.end, start); - tabstops[0] = [p]; - tabstops[0].index = 0; - } - - var i = this.index; - var arg = [i, 0]; - var ranges = this.ranges; - var editor = this.editor; - tabstops.forEach(function(ts) { - for (var i = ts.length; i--;) { - var p = ts[i]; - var range = Range.fromPoints(p.start, p.end || p.start); - movePoint(range.start, start); - movePoint(range.end, start); - range.original = p; - range.tabstop = ts; - ranges.push(range); - ts[i] = range; - if (p.fmtString) { - range.linked = true; - ts.hasLinkedRanges = true; - } else if (!ts.firstNonLinked) - ts.firstNonLinked = range; - } - if (!ts.firstNonLinked) - ts.hasLinkedRanges = false; - arg.push(ts); - this.addTabstopMarkers(ts); - }, this); - arg.push(arg.splice(2, 1)[0]); - this.tabstops.splice.apply(this.tabstops, arg); - }; - - this.addTabstopMarkers = function(ts) { - var session = this.editor.session; - ts.forEach(function(range) { - if (!range.markerId) - range.markerId = session.addMarker(range, "ace_snippet-marker", "text"); - }); - }; - this.removeTabstopMarkers = function(ts) { - var session = this.editor.session; - ts.forEach(function(range) { - session.removeMarker(range.markerId); - range.markerId = null; - }); - }; - this.removeRange = function(range) { - var i = range.tabstop.indexOf(range); - range.tabstop.splice(i, 1); - i = this.ranges.indexOf(range); - this.ranges.splice(i, 1); - this.editor.session.removeMarker(range.markerId); - }; - - this.keyboardHandler = new HashHandler(); - this.keyboardHandler.bindKeys({ - "Tab": function(ed) { - if (exports.snippetManager && exports.snippetManager.expandWithTab(ed)) { - return; - } - - ed.tabstopManager.tabNext(1); - }, - "Shift-Tab": function(ed) { - ed.tabstopManager.tabNext(-1); - }, - "Esc": function(ed) { - ed.tabstopManager.detach(); - }, - "Return": function(ed) { - return false; - } - }); -}).call(TabstopManager.prototype); - - -var movePoint = function(point, diff) { - if (point.row == 0) - point.column += diff.column; - point.row += diff.row; -}; - -var moveRelative = function(point, start) { - if (point.row == start.row) - point.column -= start.column; - point.row -= start.row; -}; - - -require("./lib/dom").importCssString("\ -.ace_snippet-marker {\ - -moz-box-sizing: border-box;\ - box-sizing: border-box;\ - background: rgba(194, 193, 208, 0.09);\ - border: 1px dotted rgba(211, 208, 235, 0.62);\ - position: absolute;\ -}"); - -exports.snippetManager = new SnippetManager(); - - -}); diff --git a/IDE/jsrealb-ide/ace-src-noconflict/ext-error_marker.js b/IDE/jsrealb-ide/ace-src-noconflict/ext-error_marker.js deleted file mode 100644 index e69de29b..00000000 diff --git a/IDE/jsrealb-ide/ace-src-noconflict/ext-keybinding_menu.js b/IDE/jsrealb-ide/ace-src-noconflict/ext-keybinding_menu.js deleted file mode 100644 index 2ae13706..00000000 --- a/IDE/jsrealb-ide/ace-src-noconflict/ext-keybinding_menu.js +++ /dev/null @@ -1,207 +0,0 @@ -/* ***** BEGIN LICENSE BLOCK ***** - * Distributed under the BSD license: - * - * Copyright (c) 2013 Matthew Christopher Kastor-Inare III, Atropa Inc. Intl - * All rights reserved. - * - * Contributed to Ajax.org under the BSD license. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are met: - * * Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * * Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * * Neither the name of Ajax.org B.V. nor the - * names of its contributors may be used to endorse or promote products - * derived from this software without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND - * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED - * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE - * DISCLAIMED. IN NO EVENT SHALL AJAX.ORG B.V. BE LIABLE FOR ANY - * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES - * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; - * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND - * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - * - * ***** END LICENSE BLOCK ***** */ - -ace.define('ace/ext/keybinding_menu', ['require', 'exports', 'module' , 'ace/editor', 'ace/ext/menu_tools/overlay_page', 'ace/ext/menu_tools/get_editor_keyboard_shortcuts'], function(require, exports, module) { - - var Editor = require("ace/editor").Editor; - function showKeyboardShortcuts (editor) { - if(!document.getElementById('kbshortcutmenu')) { - var overlayPage = require('./menu_tools/overlay_page').overlayPage; - var getEditorKeybordShortcuts = require('./menu_tools/get_editor_keyboard_shortcuts').getEditorKeybordShortcuts; - var kb = getEditorKeybordShortcuts(editor); - var el = document.createElement('div'); - var commands = kb.reduce(function(previous, current) { - return previous + '
' - + current.command + ' : ' - + '' + current.key + '
'; - }, ''); - - el.id = 'kbshortcutmenu'; - el.innerHTML = '

Keyboard Shortcuts

' + commands + '
'; - overlayPage(editor, el, '0', '0', '0', null); - } - }; - module.exports.init = function(editor) { - Editor.prototype.showKeyboardShortcuts = function() { - showKeyboardShortcuts(this); - }; - editor.commands.addCommands([{ - name: "showKeyboardShortcuts", - bindKey: {win: "Ctrl-Alt-h", mac: "Command-Alt-h"}, - exec: function(editor, line) { - editor.showKeyboardShortcuts(); - } - }]); - }; - -}); - -ace.define('ace/ext/menu_tools/overlay_page', ['require', 'exports', 'module' , 'ace/lib/dom'], function(require, exports, module) { - -var dom = require("../../lib/dom"); -var cssText = "#ace_settingsmenu, #kbshortcutmenu {\ -background-color: #F7F7F7;\ -color: black;\ -box-shadow: -5px 4px 5px rgba(126, 126, 126, 0.55);\ -padding: 1em 0.5em 2em 1em;\ -overflow: auto;\ -position: absolute;\ -margin: 0;\ -bottom: 0;\ -right: 0;\ -top: 0;\ -z-index: 9991;\ -cursor: default;\ -}\ -.ace_dark #ace_settingsmenu, .ace_dark #kbshortcutmenu {\ -box-shadow: -20px 10px 25px rgba(126, 126, 126, 0.25);\ -background-color: rgba(255, 255, 255, 0.6);\ -color: black;\ -}\ -.ace_optionsMenuEntry:hover {\ -background-color: rgba(100, 100, 100, 0.1);\ --webkit-transition: all 0.5s;\ -transition: all 0.3s\ -}\ -.ace_closeButton {\ -background: rgba(245, 146, 146, 0.5);\ -border: 1px solid #F48A8A;\ -border-radius: 50%;\ -padding: 7px;\ -position: absolute;\ -right: -8px;\ -top: -8px;\ -z-index: 1000;\ -}\ -.ace_closeButton{\ -background: rgba(245, 146, 146, 0.9);\ -}\ -.ace_optionsMenuKey {\ -color: darkslateblue;\ -font-weight: bold;\ -}\ -.ace_optionsMenuCommand {\ -color: darkcyan;\ -font-weight: normal;\ -}"; -dom.importCssString(cssText); -module.exports.overlayPage = function overlayPage(editor, contentElement, top, right, bottom, left) { - top = top ? 'top: ' + top + ';' : ''; - bottom = bottom ? 'bottom: ' + bottom + ';' : ''; - right = right ? 'right: ' + right + ';' : ''; - left = left ? 'left: ' + left + ';' : ''; - - var closer = document.createElement('div'); - var contentContainer = document.createElement('div'); - - function documentEscListener(e) { - if (e.keyCode === 27) { - closer.click(); - } - } - - closer.style.cssText = 'margin: 0; padding: 0; ' + - 'position: fixed; top:0; bottom:0; left:0; right:0;' + - 'z-index: 9990; ' + - 'background-color: rgba(0, 0, 0, 0.3);'; - closer.addEventListener('click', function() { - document.removeEventListener('keydown', documentEscListener); - closer.parentNode.removeChild(closer); - editor.focus(); - closer = null; - }); - document.addEventListener('keydown', documentEscListener); - - contentContainer.style.cssText = top + right + bottom + left; - contentContainer.addEventListener('click', function(e) { - e.stopPropagation(); - }); - - var wrapper = dom.createElement("div"); - wrapper.style.position = "relative"; - - var closeButton = dom.createElement("div"); - closeButton.className = "ace_closeButton"; - closeButton.addEventListener('click', function() { - closer.click(); - }); - - wrapper.appendChild(closeButton); - contentContainer.appendChild(wrapper); - - contentContainer.appendChild(contentElement); - closer.appendChild(contentContainer); - document.body.appendChild(closer); - editor.blur(); -}; - -}); - -ace.define('ace/ext/menu_tools/get_editor_keyboard_shortcuts', ['require', 'exports', 'module' , 'ace/lib/keys'], function(require, exports, module) { - -var keys = require("../../lib/keys"); -module.exports.getEditorKeybordShortcuts = function(editor) { - var KEY_MODS = keys.KEY_MODS; - var keybindings = []; - var commandMap = {}; - editor.keyBinding.$handlers.forEach(function(handler) { - var ckb = handler.commandKeyBinding; - for (var i in ckb) { - var modifier = parseInt(i); - if (modifier == -1) { - modifier = ""; - } else if(isNaN(modifier)) { - modifier = i; - } else { - modifier = "" + - (modifier & KEY_MODS.command ? "Cmd-" : "") + - (modifier & KEY_MODS.ctrl ? "Ctrl-" : "") + - (modifier & KEY_MODS.alt ? "Alt-" : "") + - (modifier & KEY_MODS.shift ? "Shift-" : ""); - } - for (var key in ckb[i]) { - var command = ckb[i][key] - if (typeof command != "string") - command = command.name - if (commandMap[command]) { - commandMap[command].key += "|" + modifier + key; - } else { - commandMap[command] = {key: modifier+key, command: command}; - keybindings.push(commandMap[command]); - } - } - } - }); - return keybindings; -}; - -}); \ No newline at end of file diff --git a/IDE/jsrealb-ide/ace-src-noconflict/ext-language_tools.js b/IDE/jsrealb-ide/ace-src-noconflict/ext-language_tools.js deleted file mode 100644 index c4566334..00000000 --- a/IDE/jsrealb-ide/ace-src-noconflict/ext-language_tools.js +++ /dev/null @@ -1,1665 +0,0 @@ -/* ***** BEGIN LICENSE BLOCK ***** - * Distributed under the BSD license: - * - * Copyright (c) 2012, Ajax.org B.V. - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are met: - * * Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * * Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * * Neither the name of Ajax.org B.V. nor the - * names of its contributors may be used to endorse or promote products - * derived from this software without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND - * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED - * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE - * DISCLAIMED. IN NO EVENT SHALL AJAX.ORG B.V. BE LIABLE FOR ANY - * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES - * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; - * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND - * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - * - * ***** END LICENSE BLOCK ***** */ - -ace.define('ace/ext/language_tools', ['require', 'exports', 'module' , 'ace/snippets', 'ace/autocomplete', 'ace/config', 'ace/autocomplete/text_completer', 'ace/editor'], function(require, exports, module) { - - -var snippetManager = require("../snippets").snippetManager; -var Autocomplete = require("../autocomplete").Autocomplete; -var config = require("../config"); - -var textCompleter = require("../autocomplete/text_completer"); -var keyWordCompleter = { - getCompletions: function(editor, session, pos, prefix, callback) { - var state = editor.session.getState(pos.row); - var completions = session.$mode.getCompletions(state, session, pos, prefix); - callback(null, completions); - } -}; - -var snippetCompleter = { - getCompletions: function(editor, session, pos, prefix, callback) { - var snippetMap = snippetManager.snippetMap; - var completions = []; - snippetManager.getActiveScopes(editor).forEach(function(scope) { - var snippets = snippetMap[scope] || []; - for (var i = snippets.length; i--;) { - var s = snippets[i]; - var caption = s.name || s.tabTrigger; - if (!caption) - continue; - completions.push({ - caption: caption, - snippet: s.content, - meta: s.tabTrigger && !s.name ? s.tabTrigger + "\u21E5 " : "snippet" - }); - } - }, this); - callback(null, completions); - } -}; - -var completers = [snippetCompleter, textCompleter, keyWordCompleter]; -exports.addCompleter = function(completer) { - completers.push(completer); -}; - -var expandSnippet = { - name: "expandSnippet", - exec: function(editor) { - var success = snippetManager.expandWithTab(editor); - if (!success) - editor.execCommand("indent"); - }, - bindKey: "tab" -}; - -var onChangeMode = function(e, editor) { - loadSnippetsForMode(editor.session.$mode); -}; - -var loadSnippetsForMode = function(mode) { - var id = mode.$id; - if (!snippetManager.files) - snippetManager.files = {}; - loadSnippetFile(id); - if (mode.modes) - mode.modes.forEach(loadSnippetsForMode); -}; - -var loadSnippetFile = function(id) { - if (!id || snippetManager.files[id]) - return; - var snippetFilePath = id.replace("mode", "snippets"); - snippetManager.files[id] = {}; - config.loadModule(snippetFilePath, function(m) { - if (m) { - snippetManager.files[id] = m; - m.snippets = snippetManager.parseSnippetFile(m.snippetText); - snippetManager.register(m.snippets, m.scope); - if (m.includeScopes) { - snippetManager.snippetMap[m.scope].includeScopes = m.includeScopes; - m.includeScopes.forEach(function(x) { - loadSnippetFile("ace/mode/" + x); - }); - } - } - }); -}; - -var Editor = require("../editor").Editor; -require("../config").defineOptions(Editor.prototype, "editor", { - enableBasicAutocompletion: { - set: function(val) { - if (val) { - this.completers = completers; - this.commands.addCommand(Autocomplete.startCommand); - } else { - this.commands.removeCommand(Autocomplete.startCommand); - } - }, - value: false - }, - enableSnippets: { - set: function(val) { - if (val) { - this.commands.addCommand(expandSnippet); - this.on("changeMode", onChangeMode); - onChangeMode(null, this); - } else { - this.commands.removeCommand(expandSnippet); - this.off("changeMode", onChangeMode); - } - }, - value: false - } -}); - -}); - -ace.define('ace/snippets', ['require', 'exports', 'module' , 'ace/lib/lang', 'ace/range', 'ace/keyboard/hash_handler', 'ace/tokenizer', 'ace/lib/dom'], function(require, exports, module) { - -var lang = require("./lib/lang") -var Range = require("./range").Range -var HashHandler = require("./keyboard/hash_handler").HashHandler; -var Tokenizer = require("./tokenizer").Tokenizer; -var comparePoints = Range.comparePoints; - -var SnippetManager = function() { - this.snippetMap = {}; - this.snippetNameMap = {}; -}; - -(function() { - this.getTokenizer = function() { - function TabstopToken(str, _, stack) { - str = str.substr(1); - if (/^\d+$/.test(str) && !stack.inFormatString) - return [{tabstopId: parseInt(str, 10)}]; - return [{text: str}] - } - function escape(ch) { - return "(?:[^\\\\" + ch + "]|\\\\.)"; - } - SnippetManager.$tokenizer = new Tokenizer({ - start: [ - {regex: /:/, onMatch: function(val, state, stack) { - if (stack.length && stack[0].expectIf) { - stack[0].expectIf = false; - stack[0].elseBranch = stack[0]; - return [stack[0]]; - } - return ":"; - }}, - {regex: /\\./, onMatch: function(val, state, stack) { - var ch = val[1]; - if (ch == "}" && stack.length) { - val = ch; - }else if ("`$\\".indexOf(ch) != -1) { - val = ch; - } else if (stack.inFormatString) { - if (ch == "n") - val = "\n"; - else if (ch == "t") - val = "\n"; - else if ("ulULE".indexOf(ch) != -1) { - val = {changeCase: ch, local: ch > "a"}; - } - } - - return [val]; - }}, - {regex: /}/, onMatch: function(val, state, stack) { - return [stack.length ? stack.shift() : val]; - }}, - {regex: /\$(?:\d+|\w+)/, onMatch: TabstopToken}, - {regex: /\$\{[\dA-Z_a-z]+/, onMatch: function(str, state, stack) { - var t = TabstopToken(str.substr(1), state, stack); - stack.unshift(t[0]); - return t; - }, next: "snippetVar"}, - {regex: /\n/, token: "newline", merge: false} - ], - snippetVar: [ - {regex: "\\|" + escape("\\|") + "*\\|", onMatch: function(val, state, stack) { - stack[0].choices = val.slice(1, -1).split(","); - }, next: "start"}, - {regex: "/(" + escape("/") + "+)/(?:(" + escape("/") + "*)/)(\\w*):?", - onMatch: function(val, state, stack) { - var ts = stack[0]; - ts.fmtString = val; - - val = this.splitRegex.exec(val); - ts.guard = val[1]; - ts.fmt = val[2]; - ts.flag = val[3]; - return ""; - }, next: "start"}, - {regex: "`" + escape("`") + "*`", onMatch: function(val, state, stack) { - stack[0].code = val.splice(1, -1); - return ""; - }, next: "start"}, - {regex: "\\?", onMatch: function(val, state, stack) { - if (stack[0]) - stack[0].expectIf = true; - }, next: "start"}, - {regex: "([^:}\\\\]|\\\\.)*:?", token: "", next: "start"} - ], - formatString: [ - {regex: "/(" + escape("/") + "+)/", token: "regex"}, - {regex: "", onMatch: function(val, state, stack) { - stack.inFormatString = true; - }, next: "start"} - ] - }); - SnippetManager.prototype.getTokenizer = function() { - return SnippetManager.$tokenizer; - } - return SnippetManager.$tokenizer; - }; - - this.tokenizeTmSnippet = function(str, startState) { - return this.getTokenizer().getLineTokens(str, startState).tokens.map(function(x) { - return x.value || x; - }); - }; - - this.$getDefaultValue = function(editor, name) { - if (/^[A-Z]\d+$/.test(name)) { - var i = name.substr(1); - return (this.variables[name[0] + "__"] || {})[i]; - } - if (/^\d+$/.test(name)) { - return (this.variables.__ || {})[name]; - } - name = name.replace(/^TM_/, ""); - - if (!editor) - return; - var s = editor.session; - switch(name) { - case "CURRENT_WORD": - var r = s.getWordRange(); - case "SELECTION": - case "SELECTED_TEXT": - return s.getTextRange(r); - case "CURRENT_LINE": - return s.getLine(editor.getCursorPosition().row); - case "PREV_LINE": // not possible in textmate - return s.getLine(editor.getCursorPosition().row - 1); - case "LINE_INDEX": - return editor.getCursorPosition().column; - case "LINE_NUMBER": - return editor.getCursorPosition().row + 1; - case "SOFT_TABS": - return s.getUseSoftTabs() ? "YES" : "NO"; - case "TAB_SIZE": - return s.getTabSize(); - case "FILENAME": - case "FILEPATH": - return "ace.ajax.org"; - case "FULLNAME": - return "Ace"; - } - }; - this.variables = {}; - this.getVariableValue = function(editor, varName) { - if (this.variables.hasOwnProperty(varName)) - return this.variables[varName](editor, varName) || ""; - return this.$getDefaultValue(editor, varName) || ""; - }; - this.tmStrFormat = function(str, ch, editor) { - var flag = ch.flag || ""; - var re = ch.guard; - re = new RegExp(re, flag.replace(/[^gi]/, "")); - var fmtTokens = this.tokenizeTmSnippet(ch.fmt, "formatString"); - var _self = this; - var formatted = str.replace(re, function() { - _self.variables.__ = arguments; - var fmtParts = _self.resolveVariables(fmtTokens, editor); - var gChangeCase = "E"; - for (var i = 0; i < fmtParts.length; i++) { - var ch = fmtParts[i]; - if (typeof ch == "object") { - fmtParts[i] = ""; - if (ch.changeCase && ch.local) { - var next = fmtParts[i + 1]; - if (next && typeof next == "string") { - if (ch.changeCase == "u") - fmtParts[i] = next[0].toUpperCase(); - else - fmtParts[i] = next[0].toLowerCase(); - fmtParts[i + 1] = next.substr(1); - } - } else if (ch.changeCase) { - gChangeCase = ch.changeCase; - } - } else if (gChangeCase == "U") { - fmtParts[i] = ch.toUpperCase(); - } else if (gChangeCase == "L") { - fmtParts[i] = ch.toLowerCase(); - } - } - return fmtParts.join(""); - }); - this.variables.__ = null; - return formatted; - }; - - this.resolveVariables = function(snippet, editor) { - var result = []; - for (var i = 0; i < snippet.length; i++) { - var ch = snippet[i]; - if (typeof ch == "string") { - result.push(ch); - } else if (typeof ch != "object") { - continue; - } else if (ch.skip) { - gotoNext(ch); - } else if (ch.processed < i) { - continue; - } else if (ch.text) { - var value = this.getVariableValue(editor, ch.text); - if (value && ch.fmtString) - value = this.tmStrFormat(value, ch); - ch.processed = i; - if (ch.expectIf == null) { - if (value) { - result.push(value); - gotoNext(ch); - } - } else { - if (value) { - ch.skip = ch.elseBranch; - } else - gotoNext(ch); - } - } else if (ch.tabstopId != null) { - result.push(ch); - } else if (ch.changeCase != null) { - result.push(ch); - } - } - function gotoNext(ch) { - var i1 = snippet.indexOf(ch, i + 1); - if (i1 != -1) - i = i1; - } - return result; - }; - - this.insertSnippet = function(editor, snippetText) { - var cursor = editor.getCursorPosition(); - var line = editor.session.getLine(cursor.row); - var indentString = line.match(/^\s*/)[0]; - var tabString = editor.session.getTabString(); - - var tokens = this.tokenizeTmSnippet(snippetText); - tokens = this.resolveVariables(tokens, editor); - tokens = tokens.map(function(x) { - if (x == "\n") - return x + indentString; - if (typeof x == "string") - return x.replace(/\t/g, tabString); - return x; - }); - var tabstops = []; - tokens.forEach(function(p, i) { - if (typeof p != "object") - return; - var id = p.tabstopId; - var ts = tabstops[id]; - if (!ts) { - ts = tabstops[id] = []; - ts.index = id; - ts.value = ""; - } - if (ts.indexOf(p) !== -1) - return; - ts.push(p); - var i1 = tokens.indexOf(p, i + 1); - if (i1 === -1) - return; - - var value = tokens.slice(i + 1, i1); - var isNested = value.some(function(t) {return typeof t === "object"}); - if (isNested && !ts.value) { - ts.value = value; - } else if (value.length && (!ts.value || typeof ts.value !== "string")) { - ts.value = value.join(""); - } - }); - tabstops.forEach(function(ts) {ts.length = 0}); - var expanding = {}; - function copyValue(val) { - var copy = [] - for (var i = 0; i < val.length; i++) { - var p = val[i]; - if (typeof p == "object") { - if (expanding[p.tabstopId]) - continue; - var j = val.lastIndexOf(p, i - 1); - p = copy[j] || {tabstopId: p.tabstopId}; - } - copy[i] = p; - } - return copy; - } - for (var i = 0; i < tokens.length; i++) { - var p = tokens[i]; - if (typeof p != "object") - continue; - var id = p.tabstopId; - var i1 = tokens.indexOf(p, i + 1); - if (expanding[id] == p) { - expanding[id] = null; - continue; - } - - var ts = tabstops[id]; - var arg = typeof ts.value == "string" ? [ts.value] : copyValue(ts.value); - arg.unshift(i + 1, Math.max(0, i1 - i)); - arg.push(p); - expanding[id] = p; - tokens.splice.apply(tokens, arg); - - if (ts.indexOf(p) === -1) - ts.push(p); - }; - var row = 0, column = 0; - var text = ""; - tokens.forEach(function(t) { - if (typeof t === "string") { - if (t[0] === "\n"){ - column = t.length - 1; - row ++; - } else - column += t.length; - text += t; - } else { - if (!t.start) - t.start = {row: row, column: column}; - else - t.end = {row: row, column: column}; - } - }); - var range = editor.getSelectionRange(); - var end = editor.session.replace(range, text); - - var tabstopManager = new TabstopManager(editor); - tabstopManager.addTabstops(tabstops, range.start, end); - tabstopManager.tabNext(); - }; - - this.$getScope = function(editor) { - var scope = editor.session.$mode.$id || ""; - scope = scope.split("/").pop(); - if (scope === "html" || scope === "php") { - if (scope === "php") - scope = "html"; - var c = editor.getCursorPosition() - var state = editor.session.getState(c.row); - if (typeof state === "object") { - state = state[0]; - } - if (state.substring) { - if (state.substring(0, 3) == "js-") - scope = "javascript"; - else if (state.substring(0, 4) == "css-") - scope = "css"; - else if (state.substring(0, 4) == "php-") - scope = "php"; - } - } - - return scope; - }; - - this.getActiveScopes = function(editor) { - var scope = this.$getScope(editor); - var scopes = [scope]; - var snippetMap = this.snippetMap; - if (snippetMap[scope] && snippetMap[scope].includeScopes) { - scopes.push.apply(scopes, snippetMap[scope].includeScopes); - } - scopes.push("_"); - return scopes; - }; - - this.expandWithTab = function(editor) { - var cursor = editor.getCursorPosition(); - var line = editor.session.getLine(cursor.row); - var before = line.substring(0, cursor.column); - var after = line.substr(cursor.column); - - var snippetMap = this.snippetMap; - var snippet; - this.getActiveScopes(editor).some(function(scope) { - var snippets = snippetMap[scope]; - if (snippets) - snippet = this.findMatchingSnippet(snippets, before, after); - return !!snippet; - }, this); - if (!snippet) - return false; - - editor.session.doc.removeInLine(cursor.row, - cursor.column - snippet.replaceBefore.length, - cursor.column + snippet.replaceAfter.length - ); - - this.variables.M__ = snippet.matchBefore; - this.variables.T__ = snippet.matchAfter; - this.insertSnippet(editor, snippet.content); - - this.variables.M__ = this.variables.T__ = null; - return true; - }; - - this.findMatchingSnippet = function(snippetList, before, after) { - for (var i = snippetList.length; i--;) { - var s = snippetList[i]; - if (s.startRe && !s.startRe.test(before)) - continue; - if (s.endRe && !s.endRe.test(after)) - continue; - if (!s.startRe && !s.endRe) - continue; - - s.matchBefore = s.startRe ? s.startRe.exec(before) : [""]; - s.matchAfter = s.endRe ? s.endRe.exec(after) : [""]; - s.replaceBefore = s.triggerRe ? s.triggerRe.exec(before)[0] : ""; - s.replaceAfter = s.endTriggerRe ? s.endTriggerRe.exec(after)[0] : ""; - return s; - } - }; - - this.snippetMap = {}; - this.snippetNameMap = {}; - this.register = function(snippets, scope) { - var snippetMap = this.snippetMap; - var snippetNameMap = this.snippetNameMap; - var self = this; - function wrapRegexp(src) { - if (src && !/^\^?\(.*\)\$?$|^\\b$/.test(src)) - src = "(?:" + src + ")" - - return src || ""; - } - function guardedRegexp(re, guard, opening) { - re = wrapRegexp(re); - guard = wrapRegexp(guard); - if (opening) { - re = guard + re; - if (re && re[re.length - 1] != "$") - re = re + "$"; - } else { - re = re + guard; - if (re && re[0] != "^") - re = "^" + re; - } - return new RegExp(re); - } - - function addSnippet(s) { - if (!s.scope) - s.scope = scope || "_"; - scope = s.scope - if (!snippetMap[scope]) { - snippetMap[scope] = []; - snippetNameMap[scope] = {}; - } - - var map = snippetNameMap[scope]; - if (s.name) { - var old = map[s.name]; - if (old) - self.unregister(old); - map[s.name] = s; - } - snippetMap[scope].push(s); - - if (s.tabTrigger && !s.trigger) { - if (!s.guard && /^\w/.test(s.tabTrigger)) - s.guard = "\\b"; - s.trigger = lang.escapeRegExp(s.tabTrigger); - } - - s.startRe = guardedRegexp(s.trigger, s.guard, true); - s.triggerRe = new RegExp(s.trigger, "", true); - - s.endRe = guardedRegexp(s.endTrigger, s.endGuard, true); - s.endTriggerRe = new RegExp(s.endTrigger, "", true); - }; - - if (snippets.content) - addSnippet(snippets); - else if (Array.isArray(snippets)) - snippets.forEach(addSnippet); - }; - this.unregister = function(snippets, scope) { - var snippetMap = this.snippetMap; - var snippetNameMap = this.snippetNameMap; - - function removeSnippet(s) { - var nameMap = snippetNameMap[s.scope||scope]; - if (nameMap && nameMap[s.name]) { - delete nameMap[s.name]; - var map = snippetMap[s.scope||scope]; - var i = map && map.indexOf(s); - if (i >= 0) - map.splice(i, 1); - } - } - if (snippets.content) - removeSnippet(snippets); - else if (Array.isArray(snippets)) - snippets.forEach(removeSnippet); - }; - this.parseSnippetFile = function(str) { - str = str.replace(/\r/g, ""); - var list = [], snippet = {}; - var re = /^#.*|^({[\s\S]*})\s*$|^(\S+) (.*)$|^((?:\n*\t.*)+)/gm; - var m; - while (m = re.exec(str)) { - if (m[1]) { - try { - snippet = JSON.parse(m[1]) - list.push(snippet); - } catch (e) {} - } if (m[4]) { - snippet.content = m[4].replace(/^\t/gm, ""); - list.push(snippet); - snippet = {}; - } else { - var key = m[2], val = m[3]; - if (key == "regex") { - var guardRe = /\/((?:[^\/\\]|\\.)*)|$/g; - snippet.guard = guardRe.exec(val)[1]; - snippet.trigger = guardRe.exec(val)[1]; - snippet.endTrigger = guardRe.exec(val)[1]; - snippet.endGuard = guardRe.exec(val)[1]; - } else if (key == "snippet") { - snippet.tabTrigger = val.match(/^\S*/)[0]; - if (!snippet.name) - snippet.name = val; - } else { - snippet[key] = val; - } - } - } - return list; - }; - this.getSnippetByName = function(name, editor) { - var snippetMap = this.snippetNameMap; - var snippet; - this.getActiveScopes(editor).some(function(scope) { - var snippets = snippetMap[scope]; - if (snippets) - snippet = snippets[name]; - return !!snippet; - }, this); - return snippet; - }; - -}).call(SnippetManager.prototype); - - -var TabstopManager = function(editor) { - if (editor.tabstopManager) - return editor.tabstopManager; - editor.tabstopManager = this; - this.$onChange = this.onChange.bind(this); - this.$onChangeSelection = lang.delayedCall(this.onChangeSelection.bind(this)).schedule; - this.$onChangeSession = this.onChangeSession.bind(this); - this.$onAfterExec = this.onAfterExec.bind(this); - this.attach(editor); -}; -(function() { - this.attach = function(editor) { - this.index = -1; - this.ranges = []; - this.tabstops = []; - this.selectedTabstop = null; - - this.editor = editor; - this.editor.on("change", this.$onChange); - this.editor.on("changeSelection", this.$onChangeSelection); - this.editor.on("changeSession", this.$onChangeSession); - this.editor.commands.on("afterExec", this.$onAfterExec); - this.editor.keyBinding.addKeyboardHandler(this.keyboardHandler); - }; - this.detach = function() { - this.tabstops.forEach(this.removeTabstopMarkers, this); - this.ranges = null; - this.tabstops = null; - this.selectedTabstop = null; - this.editor.removeListener("change", this.$onChange); - this.editor.removeListener("changeSelection", this.$onChangeSelection); - this.editor.removeListener("changeSession", this.$onChangeSession); - this.editor.commands.removeListener("afterExec", this.$onAfterExec); - this.editor.keyBinding.removeKeyboardHandler(this.keyboardHandler); - this.editor.tabstopManager = null; - this.editor = null; - }; - - this.onChange = function(e) { - var changeRange = e.data.range; - var isRemove = e.data.action[0] == "r"; - var start = changeRange.start; - var end = changeRange.end; - var startRow = start.row; - var endRow = end.row; - var lineDif = endRow - startRow; - var colDiff = end.column - start.column; - - if (isRemove) { - lineDif = -lineDif; - colDiff = -colDiff; - } - if (!this.$inChange && isRemove) { - var ts = this.selectedTabstop; - var changedOutside = !ts.some(function(r) { - return comparePoints(r.start, start) <= 0 && comparePoints(r.end, end) >= 0; - }); - if (changedOutside) - return this.detach(); - } - var ranges = this.ranges; - for (var i = 0; i < ranges.length; i++) { - var r = ranges[i]; - if (r.end.row < start.row) - continue; - - if (comparePoints(start, r.start) < 0 && comparePoints(end, r.end) > 0) { - this.removeRange(r); - i--; - continue; - } - - if (r.start.row == startRow && r.start.column > start.column) - r.start.column += colDiff; - if (r.end.row == startRow && r.end.column >= start.column) - r.end.column += colDiff; - if (r.start.row >= startRow) - r.start.row += lineDif; - if (r.end.row >= startRow) - r.end.row += lineDif; - - if (comparePoints(r.start, r.end) > 0) - this.removeRange(r); - } - if (!ranges.length) - this.detach(); - }; - this.updateLinkedFields = function() { - var ts = this.selectedTabstop; - if (!ts.hasLinkedRanges) - return; - this.$inChange = true; - var session = this.editor.session; - var text = session.getTextRange(ts.firstNonLinked); - for (var i = ts.length; i--;) { - var range = ts[i]; - if (!range.linked) - continue; - var fmt = exports.snippetManager.tmStrFormat(text, range.original) - session.replace(range, fmt); - } - this.$inChange = false; - }; - this.onAfterExec = function(e) { - if (e.command && !e.command.readOnly) - this.updateLinkedFields(); - }; - this.onChangeSelection = function() { - if (!this.editor) - return - var lead = this.editor.selection.lead; - var anchor = this.editor.selection.anchor; - var isEmpty = this.editor.selection.isEmpty(); - for (var i = this.ranges.length; i--;) { - if (this.ranges[i].linked) - continue; - var containsLead = this.ranges[i].contains(lead.row, lead.column); - var containsAnchor = isEmpty || this.ranges[i].contains(anchor.row, anchor.column); - if (containsLead && containsAnchor) - return; - } - this.detach(); - }; - this.onChangeSession = function() { - this.detach(); - }; - this.tabNext = function(dir) { - var max = this.tabstops.length - 1; - var index = this.index + (dir || 1); - index = Math.min(Math.max(index, 0), max); - this.selectTabstop(index); - if (index == max) - this.detach(); - }; - this.selectTabstop = function(index) { - var ts = this.tabstops[this.index]; - if (ts) - this.addTabstopMarkers(ts); - this.index = index; - ts = this.tabstops[this.index]; - if (!ts || !ts.length) - return; - - this.selectedTabstop = ts; - if (!this.editor.inVirtualSelectionMode) { - var sel = this.editor.multiSelect; - sel.toSingleRange(ts.firstNonLinked.clone()); - for (var i = ts.length; i--;) { - if (ts.hasLinkedRanges && ts[i].linked) - continue; - sel.addRange(ts[i].clone(), true); - } - } else { - this.editor.selection.setRange(ts.firstNonLinked); - } - - this.editor.keyBinding.addKeyboardHandler(this.keyboardHandler); - }; - this.addTabstops = function(tabstops, start, end) { - if (!tabstops[0]) { - var p = Range.fromPoints(end, end); - moveRelative(p.start, start); - moveRelative(p.end, start); - tabstops[0] = [p]; - tabstops[0].index = 0; - } - - var i = this.index; - var arg = [i, 0]; - var ranges = this.ranges; - var editor = this.editor; - tabstops.forEach(function(ts) { - for (var i = ts.length; i--;) { - var p = ts[i]; - var range = Range.fromPoints(p.start, p.end || p.start); - movePoint(range.start, start); - movePoint(range.end, start); - range.original = p; - range.tabstop = ts; - ranges.push(range); - ts[i] = range; - if (p.fmtString) { - range.linked = true; - ts.hasLinkedRanges = true; - } else if (!ts.firstNonLinked) - ts.firstNonLinked = range; - } - if (!ts.firstNonLinked) - ts.hasLinkedRanges = false; - arg.push(ts); - this.addTabstopMarkers(ts); - }, this); - arg.push(arg.splice(2, 1)[0]); - this.tabstops.splice.apply(this.tabstops, arg); - }; - - this.addTabstopMarkers = function(ts) { - var session = this.editor.session; - ts.forEach(function(range) { - if (!range.markerId) - range.markerId = session.addMarker(range, "ace_snippet-marker", "text"); - }); - }; - this.removeTabstopMarkers = function(ts) { - var session = this.editor.session; - ts.forEach(function(range) { - session.removeMarker(range.markerId); - range.markerId = null; - }); - }; - this.removeRange = function(range) { - var i = range.tabstop.indexOf(range); - range.tabstop.splice(i, 1); - i = this.ranges.indexOf(range); - this.ranges.splice(i, 1); - this.editor.session.removeMarker(range.markerId); - }; - - this.keyboardHandler = new HashHandler(); - this.keyboardHandler.bindKeys({ - "Tab": function(ed) { - if (exports.snippetManager && exports.snippetManager.expandWithTab(ed)) { - return; - } - - ed.tabstopManager.tabNext(1); - }, - "Shift-Tab": function(ed) { - ed.tabstopManager.tabNext(-1); - }, - "Esc": function(ed) { - ed.tabstopManager.detach(); - }, - "Return": function(ed) { - return false; - } - }); -}).call(TabstopManager.prototype); - - -var movePoint = function(point, diff) { - if (point.row == 0) - point.column += diff.column; - point.row += diff.row; -}; - -var moveRelative = function(point, start) { - if (point.row == start.row) - point.column -= start.column; - point.row -= start.row; -}; - - -require("./lib/dom").importCssString("\ -.ace_snippet-marker {\ - -moz-box-sizing: border-box;\ - box-sizing: border-box;\ - background: rgba(194, 193, 208, 0.09);\ - border: 1px dotted rgba(211, 208, 235, 0.62);\ - position: absolute;\ -}"); - -exports.snippetManager = new SnippetManager(); - - -}); - -ace.define('ace/autocomplete', ['require', 'exports', 'module' , 'ace/keyboard/hash_handler', 'ace/autocomplete/popup', 'ace/autocomplete/util', 'ace/lib/event', 'ace/lib/lang', 'ace/snippets'], function(require, exports, module) { - - -var HashHandler = require("./keyboard/hash_handler").HashHandler; -var AcePopup = require("./autocomplete/popup").AcePopup; -var util = require("./autocomplete/util"); -var event = require("./lib/event"); -var lang = require("./lib/lang"); -var snippetManager = require("./snippets").snippetManager; - -var Autocomplete = function() { - this.autoInsert = true; - this.keyboardHandler = new HashHandler(); - this.keyboardHandler.bindKeys(this.commands); - - this.blurListener = this.blurListener.bind(this); - this.changeListener = this.changeListener.bind(this); - this.mousedownListener = this.mousedownListener.bind(this); - this.mousewheelListener = this.mousewheelListener.bind(this); - - this.changeTimer = lang.delayedCall(function() { - this.updateCompletions(true); - }.bind(this)) -}; - -(function() { - this.$init = function() { - this.popup = new AcePopup(document.body || document.documentElement); - this.popup.on("click", function(e) { - this.insertMatch(); - e.stop(); - }.bind(this)); - }; - - this.openPopup = function(editor, prefix, keepPopupPosition) { - if (!this.popup) - this.$init(); - - this.popup.setData(this.completions.filtered); - - var renderer = editor.renderer; - if (!keepPopupPosition) { - this.popup.setRow(0); - this.popup.setFontSize(editor.getFontSize()); - - var lineHeight = renderer.layerConfig.lineHeight; - - var pos = renderer.$cursorLayer.getPixelPosition(this.base, true); - pos.left -= this.popup.getTextLeftOffset(); - - var rect = editor.container.getBoundingClientRect(); - pos.top += rect.top - renderer.layerConfig.offset; - pos.left += rect.left - editor.renderer.scrollLeft; - pos.left += renderer.$gutterLayer.gutterWidth; - - this.popup.show(pos, lineHeight); - } - }; - - this.detach = function() { - this.editor.keyBinding.removeKeyboardHandler(this.keyboardHandler); - this.editor.off("changeSelection", this.changeListener); - this.editor.off("blur", this.changeListener); - this.editor.off("mousedown", this.mousedownListener); - this.editor.off("mousewheel", this.mousewheelListener); - this.changeTimer.cancel(); - - if (this.popup) - this.popup.hide(); - - this.activated = false; - this.completions = this.base = null; - }; - - this.changeListener = function(e) { - var cursor = this.editor.selection.lead; - if (cursor.row != this.base.row || cursor.column < this.base.column) { - this.detach(); - } - if (this.activated) - this.changeTimer.schedule(); - else - this.detach(); - }; - - this.blurListener = function() { - if (document.activeElement != this.editor.textInput.getElement()) - this.detach(); - }; - - this.mousedownListener = function(e) { - this.detach(); - }; - - this.mousewheelListener = function(e) { - this.detach(); - }; - - this.goTo = function(where) { - var row = this.popup.getRow(); - var max = this.popup.session.getLength() - 1; - - switch(where) { - case "up": row = row < 0 ? max : row - 1; break; - case "down": row = row >= max ? -1 : row + 1; break; - case "start": row = 0; break; - case "end": row = max; break; - } - - this.popup.setRow(row); - }; - - this.insertMatch = function(data) { - if (!data) - data = this.popup.getData(this.popup.getRow()); - if (!data) - return false; - if (data.completer && data.completer.insertMatch) { - data.completer.insertMatch(this.editor); - } else { - if (this.completions.filterText) { - var ranges = this.editor.selection.getAllRanges(); - for (var i = 0, range; range = ranges[i]; i++) { - range.start.column -= this.completions.filterText.length; - this.editor.session.remove(range); - } - } - if (data.snippet) - snippetManager.insertSnippet(this.editor, data.snippet); - else - this.editor.execCommand("insertstring", data.value || data); - } - this.detach(); - }; - - this.commands = { - "Up": function(editor) { editor.completer.goTo("up"); }, - "Down": function(editor) { editor.completer.goTo("down"); }, - "Ctrl-Up|Ctrl-Home": function(editor) { editor.completer.goTo("start"); }, - "Ctrl-Down|Ctrl-End": function(editor) { editor.completer.goTo("end"); }, - - "Esc": function(editor) { editor.completer.detach(); }, - "Space": function(editor) { editor.completer.detach(); editor.insert(" ");}, - "Return": function(editor) { editor.completer.insertMatch(); }, - "Shift-Return": function(editor) { editor.completer.insertMatch(true); }, - "Tab": function(editor) { editor.completer.insertMatch(); }, - - "PageUp": function(editor) { editor.completer.popup.gotoPageUp(); }, - "PageDown": function(editor) { editor.completer.popup.gotoPageDown(); } - }; - - this.gatherCompletions = function(editor, callback) { - var session = editor.getSession(); - var pos = editor.getCursorPosition(); - - var line = session.getLine(pos.row); - var prefix = util.retrievePrecedingIdentifier(line, pos.column); - - this.base = editor.getCursorPosition(); - this.base.column -= prefix.length; - - var matches = []; - util.parForEach(editor.completers, function(completer, next) { - completer.getCompletions(editor, session, pos, prefix, function(err, results) { - if (!err) - matches = matches.concat(results); - next(); - }); - }, function() { - callback(null, { - prefix: prefix, - matches: matches - }); - }); - return true; - }; - - this.showPopup = function(editor) { - if (this.editor) - this.detach(); - - this.activated = true; - - this.editor = editor; - if (editor.completer != this) { - if (editor.completer) - editor.completer.detach(); - editor.completer = this; - } - - editor.keyBinding.addKeyboardHandler(this.keyboardHandler); - editor.on("changeSelection", this.changeListener); - editor.on("blur", this.blurListener); - editor.on("mousedown", this.mousedownListener); - editor.on("mousewheel", this.mousewheelListener); - - this.updateCompletions(); - }; - - this.updateCompletions = function(keepPopupPosition) { - if (keepPopupPosition && this.base && this.completions) { - var pos = this.editor.getCursorPosition(); - var prefix = this.editor.session.getTextRange({start: this.base, end: pos}); - if (prefix == this.completions.filterText) - return; - this.completions.setFilter(prefix); - if (!this.completions.filtered.length) - return this.detach(); - this.openPopup(this.editor, prefix, keepPopupPosition); - return; - } - this.gatherCompletions(this.editor, function(err, results) { - var matches = results && results.matches; - if (!matches || !matches.length) - return this.detach(); - - this.completions = new FilteredList(matches); - this.completions.setFilter(results.prefix); - var filtered = this.completions.filtered; - if (!filtered.length) - return this.detach(); - if (this.autoInsert && filtered.length == 1) - return this.insertMatch(filtered[0]); - this.openPopup(this.editor, results.prefix, keepPopupPosition); - }.bind(this)); - }; - - this.cancelContextMenu = function() { - var stop = function(e) { - this.editor.off("nativecontextmenu", stop); - if (e && e.domEvent) - event.stopEvent(e.domEvent); - }.bind(this); - setTimeout(stop, 10); - this.editor.on("nativecontextmenu", stop); - }; - -}).call(Autocomplete.prototype); - -Autocomplete.startCommand = { - name: "startAutocomplete", - exec: function(editor) { - if (!editor.completer) - editor.completer = new Autocomplete(); - editor.completer.showPopup(editor); - editor.completer.cancelContextMenu(); - }, - bindKey: "Ctrl-Space|Ctrl-Shift-Space|Alt-Space" -}; - -var FilteredList = function(array, filterText, mutateData) { - this.all = array; - this.filtered = array; - this.filterText = filterText || ""; -}; -(function(){ - this.setFilter = function(str) { - if (str.length > this.filterText && str.lastIndexOf(this.filterText, 0) === 0) - var matches = this.filtered; - else - var matches = this.all; - - this.filterText = str; - matches = this.filterCompletions(matches, this.filterText); - matches = matches.sort(function(a, b) { - return b.exactMatch - a.exactMatch || b.score - a.score; - }); - var prev = null; - matches = matches.filter(function(item){ - var caption = item.value || item.caption || item.snippet; - if (caption === prev) return false; - prev = caption; - return true; - }); - - this.filtered = matches; - }; - this.filterCompletions = function(items, needle) { - var results = []; - var upper = needle.toUpperCase(); - var lower = needle.toLowerCase(); - loop: for (var i = 0, item; item = items[i]; i++) { - var caption = item.value || item.caption || item.snippet; - if (!caption) continue; - var lastIndex = -1; - var matchMask = 0; - var penalty = 0; - var index, distance; - for (var j = 0; j < needle.length; j++) { - var i1 = caption.indexOf(lower[j], lastIndex + 1); - var i2 = caption.indexOf(upper[j], lastIndex + 1); - index = (i1 >= 0) ? ((i2 < 0 || i1 < i2) ? i1 : i2) : i2; - if (index < 0) - continue loop; - distance = index - lastIndex - 1; - if (distance > 0) { - if (lastIndex === -1) - penalty += 10; - penalty += distance; - } - matchMask = matchMask | (1 << index); - lastIndex = index; - } - item.matchMask = matchMask; - item.exactMatch = penalty ? 0 : 1; - item.score = (item.score || 0) - penalty; - results.push(item); - } - return results; - }; -}).call(FilteredList.prototype); - -exports.Autocomplete = Autocomplete; -exports.FilteredList = FilteredList; - -}); - -ace.define('ace/autocomplete/popup', ['require', 'exports', 'module' , 'ace/edit_session', 'ace/virtual_renderer', 'ace/editor', 'ace/range', 'ace/lib/event', 'ace/lib/lang', 'ace/lib/dom'], function(require, exports, module) { - - -var EditSession = require("../edit_session").EditSession; -var Renderer = require("../virtual_renderer").VirtualRenderer; -var Editor = require("../editor").Editor; -var Range = require("../range").Range; -var event = require("../lib/event"); -var lang = require("../lib/lang"); -var dom = require("../lib/dom"); - -var $singleLineEditor = function(el) { - var renderer = new Renderer(el); - - renderer.$maxLines = 4; - - var editor = new Editor(renderer); - - editor.setHighlightActiveLine(false); - editor.setShowPrintMargin(false); - editor.renderer.setShowGutter(false); - editor.renderer.setHighlightGutterLine(false); - - editor.$mouseHandler.$focusWaitTimout = 0; - - return editor; -}; - -var AcePopup = function(parentNode) { - var el = dom.createElement("div"); - var popup = new $singleLineEditor(el); - - if (parentNode) - parentNode.appendChild(el); - el.style.display = "none"; - popup.renderer.content.style.cursor = "default"; - popup.renderer.setStyle("ace_autocomplete"); - - popup.setOption("displayIndentGuides", false); - - var noop = function(){}; - - popup.focus = noop; - popup.$isFocused = true; - - popup.renderer.$cursorLayer.restartTimer = noop; - popup.renderer.$cursorLayer.element.style.opacity = 0; - - popup.renderer.$maxLines = 8; - popup.renderer.$keepTextAreaAtCursor = false; - - popup.setHighlightActiveLine(false); - popup.session.highlight(""); - popup.session.$searchHighlight.clazz = "ace_highlight-marker"; - - popup.on("mousedown", function(e) { - var pos = e.getDocumentPosition(); - popup.moveCursorToPosition(pos); - popup.selection.clearSelection(); - selectionMarker.start.row = selectionMarker.end.row = pos.row; - e.stop(); - }); - - var lastMouseEvent; - var hoverMarker = new Range(-1,0,-1,Infinity); - var selectionMarker = new Range(-1,0,-1,Infinity); - selectionMarker.id = popup.session.addMarker(selectionMarker, "ace_active-line", "fullLine"); - popup.setSelectOnHover = function(val) { - if (!val) { - hoverMarker.id = popup.session.addMarker(hoverMarker, "ace_line-hover", "fullLine"); - } else if (hoverMarker.id) { - popup.session.removeMarker(hoverMarker.id); - hoverMarker.id = null; - } - } - popup.setSelectOnHover(false); - popup.on("mousemove", function(e) { - if (!lastMouseEvent) { - lastMouseEvent = e; - return; - } - if (lastMouseEvent.x == e.x && lastMouseEvent.y == e.y) { - return; - } - lastMouseEvent = e; - lastMouseEvent.scrollTop = popup.renderer.scrollTop; - var row = lastMouseEvent.getDocumentPosition().row; - if (hoverMarker.start.row != row) { - if (!hoverMarker.id) - popup.setRow(row); - setHoverMarker(row); - } - }); - popup.renderer.on("beforeRender", function() { - if (lastMouseEvent && hoverMarker.start.row != -1) { - lastMouseEvent.$pos = null; - var row = lastMouseEvent.getDocumentPosition().row; - if (!hoverMarker.id) - popup.setRow(row); - setHoverMarker(row, true); - } - }); - popup.renderer.on("afterRender", function() { - var row = popup.getRow(); - var t = popup.renderer.$textLayer; - var selected = t.element.childNodes[row - t.config.firstRow]; - if (selected == t.selectedNode) - return; - if (t.selectedNode) - dom.removeCssClass(t.selectedNode, "ace_selected"); - t.selectedNode = selected; - if (selected) - dom.addCssClass(selected, "ace_selected"); - }); - var hideHoverMarker = function() { setHoverMarker(-1) }; - var setHoverMarker = function(row, suppressRedraw) { - if (row !== hoverMarker.start.row) { - hoverMarker.start.row = hoverMarker.end.row = row; - if (!suppressRedraw) - popup.session._emit("changeBackMarker"); - popup._emit("changeHoverMarker"); - } - }; - popup.getHoveredRow = function() { - return hoverMarker.start.row; - }; - - event.addListener(popup.container, "mouseout", hideHoverMarker); - popup.on("hide", hideHoverMarker); - popup.on("changeSelection", hideHoverMarker); - - popup.session.doc.getLength = function() { - return popup.data.length; - }; - popup.session.doc.getLine = function(i) { - var data = popup.data[i]; - if (typeof data == "string") - return data; - return (data && data.value) || ""; - }; - - var bgTokenizer = popup.session.bgTokenizer; - bgTokenizer.$tokenizeRow = function(i) { - var data = popup.data[i]; - var tokens = []; - if (!data) - return tokens; - if (typeof data == "string") - data = {value: data}; - if (!data.caption) - data.caption = data.value; - - var last = -1; - var flag, c; - for (var i = 0; i < data.caption.length; i++) { - c = data.caption[i]; - flag = data.matchMask & (1 << i) ? 1 : 0; - if (last !== flag) { - tokens.push({type: data.className || "" + ( flag ? "completion-highlight" : ""), value: c}); - last = flag; - } else { - tokens[tokens.length - 1].value += c; - } - } - - if (data.meta) { - var maxW = popup.renderer.$size.scrollerWidth / popup.renderer.layerConfig.characterWidth; - if (data.meta.length + data.caption.length < maxW - 2) - tokens.push({type: "rightAlignedText", value: data.meta}); - } - return tokens; - }; - bgTokenizer.$updateOnChange = noop; - bgTokenizer.start = noop; - - popup.session.$computeWidth = function() { - return this.screenWidth = 0; - } - popup.isOpen = false; - popup.isTopdown = false; - - popup.data = []; - popup.setData = function(list) { - popup.data = list || []; - popup.setValue(lang.stringRepeat("\n", list.length), -1); - popup.setRow(0); - }; - popup.getData = function(row) { - return popup.data[row]; - }; - - popup.getRow = function() { - return selectionMarker.start.row; - }; - popup.setRow = function(line) { - line = Math.max(-1, Math.min(this.data.length, line)); - if (selectionMarker.start.row != line) { - popup.selection.clearSelection(); - selectionMarker.start.row = selectionMarker.end.row = line || 0; - popup.session._emit("changeBackMarker"); - popup.moveCursorTo(line || 0, 0); - if (popup.isOpen) - popup._signal("select"); - } - }; - - popup.on("changeSelection", function() { - if (popup.isOpen) - popup.setRow(popup.selection.lead.row); - }); - - popup.hide = function() { - this.container.style.display = "none"; - this._signal("hide"); - popup.isOpen = false; - }; - popup.show = function(pos, lineHeight, topdownOnly) { - var el = this.container; - var screenHeight = window.innerHeight; - var screenWidth = window.innerWidth; - var renderer = this.renderer; - var maxH = renderer.$maxLines * lineHeight * 1.4; - var top = pos.top + this.$borderSize; - if (top + maxH > screenHeight - lineHeight && !topdownOnly) { - el.style.top = ""; - el.style.bottom = screenHeight - top + "px"; - popup.isTopdown = false; - } else { - top += lineHeight; - el.style.top = top + "px"; - el.style.bottom = ""; - popup.isTopdown = true; - } - - el.style.display = ""; - this.renderer.$textLayer.checkForSizeChanges(); - - var left = pos.left; - if (left + el.offsetWidth > screenWidth) - left = screenWidth - el.offsetWidth; - - el.style.left = left + "px"; - - this._signal("show"); - lastMouseEvent = null; - popup.isOpen = true; - }; - - popup.getTextLeftOffset = function() { - return this.$borderSize + this.renderer.$padding + this.$imageSize; - }; - - popup.$imageSize = 0; - popup.$borderSize = 1; - - return popup; -}; - -dom.importCssString("\ -.ace_autocomplete.ace-tm .ace_marker-layer .ace_active-line {\ - background-color: #CAD6FA;\ - z-index: 1;\ -}\ -.ace_autocomplete.ace-tm .ace_line-hover {\ - border: 1px solid #abbffe;\ - margin-top: -1px;\ - background: rgba(233,233,253,0.4);\ -}\ -.ace_autocomplete .ace_line-hover {\ - position: absolute;\ - z-index: 2;\ -}\ -.ace_rightAlignedText {\ - color: gray;\ - display: inline-block;\ - position: absolute;\ - right: 4px;\ - text-align: right;\ - z-index: -1;\ -}\ -.ace_autocomplete .ace_completion-highlight{\ - color: #000;\ - text-shadow: 0 0 0.01em;\ -}\ -.ace_autocomplete {\ - width: 280px;\ - z-index: 200000;\ - background: #fbfbfb;\ - color: #444;\ - border: 1px lightgray solid;\ - position: fixed;\ - box-shadow: 2px 3px 5px rgba(0,0,0,.2);\ - line-height: 1.4;\ -}"); - -exports.AcePopup = AcePopup; - -}); - -ace.define('ace/autocomplete/util', ['require', 'exports', 'module' ], function(require, exports, module) { - - -exports.parForEach = function(array, fn, callback) { - var completed = 0; - var arLength = array.length; - if (arLength === 0) - callback(); - for (var i = 0; i < arLength; i++) { - fn(array[i], function(result, err) { - completed++; - if (completed === arLength) - callback(result, err); - }); - } -} - -var ID_REGEX = /[a-zA-Z_0-9\$-]/; - -exports.retrievePrecedingIdentifier = function(text, pos, regex) { - regex = regex || ID_REGEX; - var buf = []; - for (var i = pos-1; i >= 0; i--) { - if (regex.test(text[i])) - buf.push(text[i]); - else - break; - } - return buf.reverse().join(""); -} - -exports.retrieveFollowingIdentifier = function(text, pos, regex) { - regex = regex || ID_REGEX; - var buf = []; - for (var i = pos; i < text.length; i++) { - if (regex.test(text[i])) - buf.push(text[i]); - else - break; - } - return buf; -} - -}); - -ace.define('ace/autocomplete/text_completer', ['require', 'exports', 'module' , 'ace/range'], function(require, exports, module) { - var Range = require("ace/range").Range; - - var splitRegex = /[^a-zA-Z_0-9\$\-]+/; - - function getWordIndex(doc, pos) { - var textBefore = doc.getTextRange(Range.fromPoints({row: 0, column:0}, pos)); - return textBefore.split(splitRegex).length - 1; - } - function wordDistance(doc, pos) { - var prefixPos = getWordIndex(doc, pos); - var words = doc.getValue().split(splitRegex); - var wordScores = Object.create(null); - - var currentWord = words[prefixPos]; - - words.forEach(function(word, idx) { - if (!word || word === currentWord) return; - - var distance = Math.abs(prefixPos - idx); - var score = words.length - distance; - if (wordScores[word]) { - wordScores[word] = Math.max(score, wordScores[word]); - } else { - wordScores[word] = score; - } - }); - return wordScores; - } - - exports.getCompletions = function(editor, session, pos, prefix, callback) { - var wordScore = wordDistance(session, pos, prefix); - var wordList = Object.keys(wordScore); - callback(null, wordList.map(function(word) { - return { - name: word, - value: word, - score: wordScore[word], - meta: "local" - }; - })); - }; -}); \ No newline at end of file diff --git a/IDE/jsrealb-ide/ace-src-noconflict/ext-modelist.js b/IDE/jsrealb-ide/ace-src-noconflict/ext-modelist.js deleted file mode 100644 index b92fcb48..00000000 --- a/IDE/jsrealb-ide/ace-src-noconflict/ext-modelist.js +++ /dev/null @@ -1,168 +0,0 @@ -ace.define('ace/ext/modelist', ['require', 'exports', 'module' ], function(require, exports, module) { - - -var modes = []; -function getModeForPath(path) { - var mode = modesByName.text; - var fileName = path.split(/[\/\\]/).pop(); - for (var i = 0; i < modes.length; i++) { - if (modes[i].supportsFile(fileName)) { - mode = modes[i]; - break; - } - } - return mode; -} - -var Mode = function(name, caption, extensions) { - this.name = name; - this.caption = caption; - this.mode = "ace/mode/" + name; - this.extensions = extensions; - if (/\^/.test(extensions)) { - var re = extensions.replace(/\|(\^)?/g, function(a, b){ - return "$|" + (b ? "^" : "^.*\\."); - }) + "$"; - } else { - var re = "^.*\\.(" + extensions + ")$"; - } - - this.extRe = new RegExp(re, "gi"); -}; - -Mode.prototype.supportsFile = function(filename) { - return filename.match(this.extRe); -}; -var supportedModes = { - ABAP: ["abap"], - ActionScript:["as"], - ADA: ["ada|adb"], - Apache_Conf: ["^htaccess|^htgroups|^htpasswd|^conf|htaccess|htgroups|htpasswd"], - AsciiDoc: ["asciidoc"], - Assembly_x86:["asm"], - AutoHotKey: ["ahk"], - BatchFile: ["bat|cmd"], - C9Search: ["c9search_results"], - C_Cpp: ["cpp|c|cc|cxx|h|hh|hpp"], - Clojure: ["clj"], - Cobol: ["CBL|COB"], - coffee: ["coffee|cf|cson|^Cakefile"], - ColdFusion: ["cfm"], - CSharp: ["cs"], - CSS: ["css"], - Curly: ["curly"], - D: ["d|di"], - Dart: ["dart"], - Diff: ["diff|patch"], - Dot: ["dot"], - Erlang: ["erl|hrl"], - EJS: ["ejs"], - Forth: ["frt|fs|ldr"], - FTL: ["ftl"], - Glsl: ["glsl|frag|vert"], - golang: ["go"], - Groovy: ["groovy"], - HAML: ["haml"], - Handlebars: ["hbs|handlebars|tpl|mustache"], - Haskell: ["hs"], - haXe: ["hx"], - HTML: ["html|htm|xhtml"], - HTML_Ruby: ["erb|rhtml|html.erb"], - INI: ["ini|conf|cfg|prefs"], - Jack: ["jack"], - Jade: ["jade"], - Java: ["java"], - JavaScript: ["js|jsm"], - JSON: ["json"], - JSONiq: ["jq"], - JSP: ["jsp"], - JSX: ["jsx"], - Julia: ["jl"], - LaTeX: ["tex|latex|ltx|bib"], - LESS: ["less"], - Liquid: ["liquid"], - Lisp: ["lisp"], - LiveScript: ["ls"], - LogiQL: ["logic|lql"], - LSL: ["lsl"], - Lua: ["lua"], - LuaPage: ["lp"], - Lucene: ["lucene"], - Makefile: ["^Makefile|^GNUmakefile|^makefile|^OCamlMakefile|make"], - MATLAB: ["matlab"], - Markdown: ["md|markdown"], - MEL: ["mel"], - MySQL: ["mysql"], - MUSHCode: ["mc|mush"], - Nix: ["nix"], - ObjectiveC: ["m|mm"], - OCaml: ["ml|mli"], - Pascal: ["pas|p"], - Perl: ["pl|pm"], - pgSQL: ["pgsql"], - PHP: ["php|phtml"], - Powershell: ["ps1"], - Prolog: ["plg|prolog"], - Properties: ["properties"], - Protobuf: ["proto"], - Python: ["py"], - R: ["r"], - RDoc: ["Rd"], - RHTML: ["Rhtml"], - Ruby: ["rb|ru|gemspec|rake|^Guardfile|^Rakefile|^Gemfile"], - Rust: ["rs"], - SASS: ["sass"], - SCAD: ["scad"], - Scala: ["scala"], - Scheme: ["scm|rkt"], - SCSS: ["scss"], - SH: ["sh|bash|^.bashrc"], - SJS: ["sjs"], - Space: ["space"], - snippets: ["snippets"], - Soy_Template:["soy"], - SQL: ["sql"], - Stylus: ["styl|stylus"], - SVG: ["svg"], - Tcl: ["tcl"], - Tex: ["tex"], - Text: ["txt"], - Textile: ["textile"], - Toml: ["toml"], - Twig: ["twig"], - Typescript: ["ts|typescript|str"], - VBScript: ["vbs"], - Velocity: ["vm"], - Verilog: ["v|vh|sv|svh"], - XML: ["xml|rdf|rss|wsdl|xslt|atom|mathml|mml|xul|xbl"], - XQuery: ["xq"], - YAML: ["yaml|yml"] -}; - -var nameOverrides = { - ObjectiveC: "Objective-C", - CSharp: "C#", - golang: "Go", - C_Cpp: "C/C++", - coffee: "CoffeeScript", - HTML_Ruby: "HTML (Ruby)", - FTL: "FreeMarker" -}; -var modesByName = {}; -for (var name in supportedModes) { - var data = supportedModes[name]; - var displayName = (nameOverrides[name] || name).replace(/_/g, " "); - var filename = name.toLowerCase(); - var mode = new Mode(filename, displayName, data[0]); - modesByName[filename] = mode; - modes.push(mode); -} - -module.exports = { - getModeForPath: getModeForPath, - modes: modes, - modesByName: modesByName -}; - -}); - diff --git a/IDE/jsrealb-ide/ace-src-noconflict/ext-old_ie.js b/IDE/jsrealb-ide/ace-src-noconflict/ext-old_ie.js deleted file mode 100644 index 45d4924e..00000000 --- a/IDE/jsrealb-ide/ace-src-noconflict/ext-old_ie.js +++ /dev/null @@ -1,500 +0,0 @@ -/* ***** BEGIN LICENSE BLOCK ***** - * Distributed under the BSD license: - * - * Copyright (c) 2010, Ajax.org B.V. - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are met: - * * Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * * Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * * Neither the name of Ajax.org B.V. nor the - * names of its contributors may be used to endorse or promote products - * derived from this software without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND - * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED - * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE - * DISCLAIMED. IN NO EVENT SHALL AJAX.ORG B.V. BE LIABLE FOR ANY - * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES - * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; - * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND - * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - * - * ***** END LICENSE BLOCK ***** */ - -ace.define('ace/ext/old_ie', ['require', 'exports', 'module' , 'ace/lib/useragent', 'ace/tokenizer', 'ace/ext/searchbox'], function(require, exports, module) { - -var MAX_TOKEN_COUNT = 1000; -var useragent = require("../lib/useragent"); -var TokenizerModule = require("../tokenizer"); - -function patch(obj, name, regexp, replacement) { - eval("obj['" + name + "']=" + obj[name].toString().replace( - regexp, replacement - )); -} - -if (useragent.isIE && useragent.isIE < 10 && window.top.document.compatMode === "BackCompat") - useragent.isOldIE = true; - -if (typeof document != "undefined" && !document.documentElement.querySelector) { - useragent.isOldIE = true; - var qs = function(el, selector) { - if (selector.charAt(0) == ".") { - var classNeme = selector.slice(1); - } else { - var m = selector.match(/(\w+)=(\w+)/); - var attr = m && m[1]; - var attrVal = m && m[2]; - } - for (var i = 0; i < el.all.length; i++) { - var ch = el.all[i]; - if (classNeme) { - if (ch.className.indexOf(classNeme) != -1) - return ch; - } else if (attr) { - if (ch.getAttribute(attr) == attrVal) - return ch; - } - } - }; - var sb = require("./searchbox").SearchBox.prototype; - patch( - sb, "$initElements", - /([^\s=]*).querySelector\((".*?")\)/g, - "qs($1, $2)" - ); -} - -var compliantExecNpcg = /()??/.exec("")[1] === undefined; -if (compliantExecNpcg) - return; -var proto = TokenizerModule.Tokenizer.prototype; -TokenizerModule.Tokenizer_orig = TokenizerModule.Tokenizer; -proto.getLineTokens_orig = proto.getLineTokens; - -patch( - TokenizerModule, "Tokenizer", - "ruleRegExps.push(adjustedregex);\n", - function(m) { - return m + '\ - if (state[i].next && RegExp(adjustedregex).test(""))\n\ - rule._qre = RegExp(adjustedregex, "g");\n\ - '; - } -); -TokenizerModule.Tokenizer.prototype = proto; -patch( - proto, "getLineTokens", - /if \(match\[i \+ 1\] === undefined\)\s*continue;/, - "if (!match[i + 1]) {\n\ - if (value)continue;\n\ - var qre = state[mapping[i]]._qre;\n\ - if (!qre) continue;\n\ - qre.lastIndex = lastIndex;\n\ - if (!qre.exec(line) || qre.lastIndex != lastIndex)\n\ - continue;\n\ - }" -); - -useragent.isOldIE = true; - -}); - -ace.define('ace/ext/searchbox', ['require', 'exports', 'module' , 'ace/lib/dom', 'ace/lib/lang', 'ace/lib/event', 'ace/keyboard/hash_handler', 'ace/lib/keys'], function(require, exports, module) { - - -var dom = require("../lib/dom"); -var lang = require("../lib/lang"); -var event = require("../lib/event"); -var searchboxCss = "\ -/* ------------------------------------------------------------------------------------------\ -* Editor Search Form\ -* --------------------------------------------------------------------------------------- */\ -.ace_search {\ -background-color: #ddd;\ -border: 1px solid #cbcbcb;\ -border-top: 0 none;\ -max-width: 297px;\ -overflow: hidden;\ -margin: 0;\ -padding: 4px;\ -padding-right: 6px;\ -padding-bottom: 0;\ -position: absolute;\ -top: 0px;\ -z-index: 99;\ -white-space: normal;\ -}\ -.ace_search.left {\ -border-left: 0 none;\ -border-radius: 0px 0px 5px 0px;\ -left: 0;\ -}\ -.ace_search.right {\ -border-radius: 0px 0px 0px 5px;\ -border-right: 0 none;\ -right: 0;\ -}\ -.ace_search_form, .ace_replace_form {\ -border-radius: 3px;\ -border: 1px solid #cbcbcb;\ -float: left;\ -margin-bottom: 4px;\ -overflow: hidden;\ -}\ -.ace_search_form.ace_nomatch {\ -outline: 1px solid red;\ -}\ -.ace_search_field {\ -background-color: white;\ -border-right: 1px solid #cbcbcb;\ -border: 0 none;\ --webkit-box-sizing: border-box;\ --moz-box-sizing: border-box;\ -box-sizing: border-box;\ -display: block;\ -float: left;\ -height: 22px;\ -outline: 0;\ -padding: 0 7px;\ -width: 214px;\ -margin: 0;\ -}\ -.ace_searchbtn,\ -.ace_replacebtn {\ -background: #fff;\ -border: 0 none;\ -border-left: 1px solid #dcdcdc;\ -cursor: pointer;\ -display: block;\ -float: left;\ -height: 22px;\ -margin: 0;\ -padding: 0;\ -position: relative;\ -}\ -.ace_searchbtn:last-child,\ -.ace_replacebtn:last-child {\ -border-top-right-radius: 3px;\ -border-bottom-right-radius: 3px;\ -}\ -.ace_searchbtn:disabled {\ -background: none;\ -cursor: default;\ -}\ -.ace_searchbtn {\ -background-position: 50% 50%;\ -background-repeat: no-repeat;\ -width: 27px;\ -}\ -.ace_searchbtn.prev {\ -background-image: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAgAAAAFCAYAAAB4ka1VAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAADFJREFUeNpiSU1NZUAC/6E0I0yACYskCpsJiySKIiY0SUZk40FyTEgCjGgKwTRAgAEAQJUIPCE+qfkAAAAASUVORK5CYII=); \ -}\ -.ace_searchbtn.next {\ -background-image: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAgAAAAFCAYAAAB4ka1VAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAADRJREFUeNpiTE1NZQCC/0DMyIAKwGJMUAYDEo3M/s+EpvM/mkKwCQxYjIeLMaELoLMBAgwAU7UJObTKsvAAAAAASUVORK5CYII=); \ -}\ -.ace_searchbtn_close {\ -background: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAA4AAAAcCAYAAABRVo5BAAAAZ0lEQVR42u2SUQrAMAhDvazn8OjZBilCkYVVxiis8H4CT0VrAJb4WHT3C5xU2a2IQZXJjiQIRMdkEoJ5Q2yMqpfDIo+XY4k6h+YXOyKqTIj5REaxloNAd0xiKmAtsTHqW8sR2W5f7gCu5nWFUpVjZwAAAABJRU5ErkJggg==) no-repeat 50% 0;\ -border-radius: 50%;\ -border: 0 none;\ -color: #656565;\ -cursor: pointer;\ -display: block;\ -float: right;\ -font-family: Arial;\ -font-size: 16px;\ -height: 14px;\ -line-height: 16px;\ -margin: 5px 1px 9px 5px;\ -padding: 0;\ -text-align: center;\ -width: 14px;\ -}\ -.ace_searchbtn_close:hover {\ -background-color: #656565;\ -background-position: 50% 100%;\ -color: white;\ -}\ -.ace_replacebtn.prev {\ -width: 54px\ -}\ -.ace_replacebtn.next {\ -width: 27px\ -}\ -.ace_button {\ -margin-left: 2px;\ -cursor: pointer;\ --webkit-user-select: none;\ --moz-user-select: none;\ --o-user-select: none;\ --ms-user-select: none;\ -user-select: none;\ -overflow: hidden;\ -opacity: 0.7;\ -border: 1px solid rgba(100,100,100,0.23);\ -padding: 1px;\ --moz-box-sizing: border-box;\ -box-sizing: border-box;\ -color: black;\ -}\ -.ace_button:hover {\ -background-color: #eee;\ -opacity:1;\ -}\ -.ace_button:active {\ -background-color: #ddd;\ -}\ -.ace_button.checked {\ -border-color: #3399ff;\ -opacity:1;\ -}\ -.ace_search_options{\ -margin-bottom: 3px;\ -text-align: right;\ --webkit-user-select: none;\ --moz-user-select: none;\ --o-user-select: none;\ --ms-user-select: none;\ -user-select: none;\ -}"; -var HashHandler = require("../keyboard/hash_handler").HashHandler; -var keyUtil = require("../lib/keys"); - -dom.importCssString(searchboxCss, "ace_searchbox"); - -var html = ''.replace(/>\s+/g, ">"); - -var SearchBox = function(editor, range, showReplaceForm) { - var div = dom.createElement("div"); - div.innerHTML = html; - this.element = div.firstChild; - - this.$init(); - this.setEditor(editor); -}; - -(function() { - this.setEditor = function(editor) { - editor.searchBox = this; - editor.container.appendChild(this.element); - this.editor = editor; - }; - - this.$initElements = function(sb) { - this.searchBox = sb.querySelector(".ace_search_form"); - this.replaceBox = sb.querySelector(".ace_replace_form"); - this.searchOptions = sb.querySelector(".ace_search_options"); - this.regExpOption = sb.querySelector("[action=toggleRegexpMode]"); - this.caseSensitiveOption = sb.querySelector("[action=toggleCaseSensitive]"); - this.wholeWordOption = sb.querySelector("[action=toggleWholeWords]"); - this.searchInput = this.searchBox.querySelector(".ace_search_field"); - this.replaceInput = this.replaceBox.querySelector(".ace_search_field"); - }; - - this.$init = function() { - var sb = this.element; - - this.$initElements(sb); - - var _this = this; - event.addListener(sb, "mousedown", function(e) { - setTimeout(function(){ - _this.activeInput.focus(); - }, 0); - event.stopPropagation(e); - }); - event.addListener(sb, "click", function(e) { - var t = e.target || e.srcElement; - var action = t.getAttribute("action"); - if (action && _this[action]) - _this[action](); - else if (_this.$searchBarKb.commands[action]) - _this.$searchBarKb.commands[action].exec(_this); - event.stopPropagation(e); - }); - - event.addCommandKeyListener(sb, function(e, hashId, keyCode) { - var keyString = keyUtil.keyCodeToString(keyCode); - var command = _this.$searchBarKb.findKeyCommand(hashId, keyString); - if (command && command.exec) { - command.exec(_this); - event.stopEvent(e); - } - }); - - this.$onChange = lang.delayedCall(function() { - _this.find(false, false); - }); - - event.addListener(this.searchInput, "input", function() { - _this.$onChange.schedule(20); - }); - event.addListener(this.searchInput, "focus", function() { - _this.activeInput = _this.searchInput; - _this.searchInput.value && _this.highlight(); - }); - event.addListener(this.replaceInput, "focus", function() { - _this.activeInput = _this.replaceInput; - _this.searchInput.value && _this.highlight(); - }); - }; - this.$closeSearchBarKb = new HashHandler([{ - bindKey: "Esc", - name: "closeSearchBar", - exec: function(editor) { - editor.searchBox.hide(); - } - }]); - this.$searchBarKb = new HashHandler(); - this.$searchBarKb.bindKeys({ - "Ctrl-f|Command-f|Ctrl-H|Command-Option-F": function(sb) { - var isReplace = sb.isReplace = !sb.isReplace; - sb.replaceBox.style.display = isReplace ? "" : "none"; - sb[isReplace ? "replaceInput" : "searchInput"].focus(); - }, - "Ctrl-G|Command-G": function(sb) { - sb.findNext(); - }, - "Ctrl-Shift-G|Command-Shift-G": function(sb) { - sb.findPrev(); - }, - "esc": function(sb) { - setTimeout(function() { sb.hide();}); - }, - "Return": function(sb) { - if (sb.activeInput == sb.replaceInput) - sb.replace(); - sb.findNext(); - }, - "Shift-Return": function(sb) { - if (sb.activeInput == sb.replaceInput) - sb.replace(); - sb.findPrev(); - }, - "Tab": function(sb) { - (sb.activeInput == sb.replaceInput ? sb.searchInput : sb.replaceInput).focus(); - } - }); - - this.$searchBarKb.addCommands([{ - name: "toggleRegexpMode", - bindKey: {win: "Alt-R|Alt-/", mac: "Ctrl-Alt-R|Ctrl-Alt-/"}, - exec: function(sb) { - sb.regExpOption.checked = !sb.regExpOption.checked; - sb.$syncOptions(); - } - }, { - name: "toggleCaseSensitive", - bindKey: {win: "Alt-C|Alt-I", mac: "Ctrl-Alt-R|Ctrl-Alt-I"}, - exec: function(sb) { - sb.caseSensitiveOption.checked = !sb.caseSensitiveOption.checked; - sb.$syncOptions(); - } - }, { - name: "toggleWholeWords", - bindKey: {win: "Alt-B|Alt-W", mac: "Ctrl-Alt-B|Ctrl-Alt-W"}, - exec: function(sb) { - sb.wholeWordOption.checked = !sb.wholeWordOption.checked; - sb.$syncOptions(); - } - }]); - - this.$syncOptions = function() { - dom.setCssClass(this.regExpOption, "checked", this.regExpOption.checked); - dom.setCssClass(this.wholeWordOption, "checked", this.wholeWordOption.checked); - dom.setCssClass(this.caseSensitiveOption, "checked", this.caseSensitiveOption.checked); - this.find(false, false); - }; - - this.highlight = function(re) { - this.editor.session.highlight(re || this.editor.$search.$options.re); - this.editor.renderer.updateBackMarkers() - }; - this.find = function(skipCurrent, backwards) { - var range = this.editor.find(this.searchInput.value, { - skipCurrent: skipCurrent, - backwards: backwards, - wrap: true, - regExp: this.regExpOption.checked, - caseSensitive: this.caseSensitiveOption.checked, - wholeWord: this.wholeWordOption.checked - }); - var noMatch = !range && this.searchInput.value; - dom.setCssClass(this.searchBox, "ace_nomatch", noMatch); - this.editor._emit("findSearchBox", { match: !noMatch }); - this.highlight(); - }; - this.findNext = function() { - this.find(true, false); - }; - this.findPrev = function() { - this.find(true, true); - }; - this.replace = function() { - if (!this.editor.getReadOnly()) - this.editor.replace(this.replaceInput.value); - }; - this.replaceAndFindNext = function() { - if (!this.editor.getReadOnly()) { - this.editor.replace(this.replaceInput.value); - this.findNext() - } - }; - this.replaceAll = function() { - if (!this.editor.getReadOnly()) - this.editor.replaceAll(this.replaceInput.value); - }; - - this.hide = function() { - this.element.style.display = "none"; - this.editor.keyBinding.removeKeyboardHandler(this.$closeSearchBarKb); - this.editor.focus(); - }; - this.show = function(value, isReplace) { - this.element.style.display = ""; - this.replaceBox.style.display = isReplace ? "" : "none"; - - this.isReplace = isReplace; - - if (value) - this.searchInput.value = value; - this.searchInput.focus(); - this.searchInput.select(); - - this.editor.keyBinding.addKeyboardHandler(this.$closeSearchBarKb); - }; - -}).call(SearchBox.prototype); - -exports.SearchBox = SearchBox; - -exports.Search = function(editor, isReplace) { - var sb = editor.searchBox || new SearchBox(editor); - sb.show(editor.session.getTextRange(), isReplace); -}; - -}); diff --git a/IDE/jsrealb-ide/ace-src-noconflict/ext-searchbox.js b/IDE/jsrealb-ide/ace-src-noconflict/ext-searchbox.js deleted file mode 100644 index b75c1930..00000000 --- a/IDE/jsrealb-ide/ace-src-noconflict/ext-searchbox.js +++ /dev/null @@ -1,421 +0,0 @@ -/* ***** BEGIN LICENSE BLOCK ***** - * Distributed under the BSD license: - * - * Copyright (c) 2010, Ajax.org B.V. - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are met: - * * Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * * Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * * Neither the name of Ajax.org B.V. nor the - * names of its contributors may be used to endorse or promote products - * derived from this software without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND - * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED - * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE - * DISCLAIMED. IN NO EVENT SHALL AJAX.ORG B.V. BE LIABLE FOR ANY - * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES - * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; - * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND - * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - * - * ***** END LICENSE BLOCK ***** */ - -ace.define('ace/ext/searchbox', ['require', 'exports', 'module' , 'ace/lib/dom', 'ace/lib/lang', 'ace/lib/event', 'ace/keyboard/hash_handler', 'ace/lib/keys'], function(require, exports, module) { - - -var dom = require("../lib/dom"); -var lang = require("../lib/lang"); -var event = require("../lib/event"); -var searchboxCss = "\ -/* ------------------------------------------------------------------------------------------\ -* Editor Search Form\ -* --------------------------------------------------------------------------------------- */\ -.ace_search {\ -background-color: #ddd;\ -border: 1px solid #cbcbcb;\ -border-top: 0 none;\ -max-width: 297px;\ -overflow: hidden;\ -margin: 0;\ -padding: 4px;\ -padding-right: 6px;\ -padding-bottom: 0;\ -position: absolute;\ -top: 0px;\ -z-index: 99;\ -white-space: normal;\ -}\ -.ace_search.left {\ -border-left: 0 none;\ -border-radius: 0px 0px 5px 0px;\ -left: 0;\ -}\ -.ace_search.right {\ -border-radius: 0px 0px 0px 5px;\ -border-right: 0 none;\ -right: 0;\ -}\ -.ace_search_form, .ace_replace_form {\ -border-radius: 3px;\ -border: 1px solid #cbcbcb;\ -float: left;\ -margin-bottom: 4px;\ -overflow: hidden;\ -}\ -.ace_search_form.ace_nomatch {\ -outline: 1px solid red;\ -}\ -.ace_search_field {\ -background-color: white;\ -border-right: 1px solid #cbcbcb;\ -border: 0 none;\ --webkit-box-sizing: border-box;\ --moz-box-sizing: border-box;\ -box-sizing: border-box;\ -display: block;\ -float: left;\ -height: 22px;\ -outline: 0;\ -padding: 0 7px;\ -width: 214px;\ -margin: 0;\ -}\ -.ace_searchbtn,\ -.ace_replacebtn {\ -background: #fff;\ -border: 0 none;\ -border-left: 1px solid #dcdcdc;\ -cursor: pointer;\ -display: block;\ -float: left;\ -height: 22px;\ -margin: 0;\ -padding: 0;\ -position: relative;\ -}\ -.ace_searchbtn:last-child,\ -.ace_replacebtn:last-child {\ -border-top-right-radius: 3px;\ -border-bottom-right-radius: 3px;\ -}\ -.ace_searchbtn:disabled {\ -background: none;\ -cursor: default;\ -}\ -.ace_searchbtn {\ -background-position: 50% 50%;\ -background-repeat: no-repeat;\ -width: 27px;\ -}\ -.ace_searchbtn.prev {\ -background-image: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAgAAAAFCAYAAAB4ka1VAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAADFJREFUeNpiSU1NZUAC/6E0I0yACYskCpsJiySKIiY0SUZk40FyTEgCjGgKwTRAgAEAQJUIPCE+qfkAAAAASUVORK5CYII=); \ -}\ -.ace_searchbtn.next {\ -background-image: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAgAAAAFCAYAAAB4ka1VAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAADRJREFUeNpiTE1NZQCC/0DMyIAKwGJMUAYDEo3M/s+EpvM/mkKwCQxYjIeLMaELoLMBAgwAU7UJObTKsvAAAAAASUVORK5CYII=); \ -}\ -.ace_searchbtn_close {\ -background: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAA4AAAAcCAYAAABRVo5BAAAAZ0lEQVR42u2SUQrAMAhDvazn8OjZBilCkYVVxiis8H4CT0VrAJb4WHT3C5xU2a2IQZXJjiQIRMdkEoJ5Q2yMqpfDIo+XY4k6h+YXOyKqTIj5REaxloNAd0xiKmAtsTHqW8sR2W5f7gCu5nWFUpVjZwAAAABJRU5ErkJggg==) no-repeat 50% 0;\ -border-radius: 50%;\ -border: 0 none;\ -color: #656565;\ -cursor: pointer;\ -display: block;\ -float: right;\ -font-family: Arial;\ -font-size: 16px;\ -height: 14px;\ -line-height: 16px;\ -margin: 5px 1px 9px 5px;\ -padding: 0;\ -text-align: center;\ -width: 14px;\ -}\ -.ace_searchbtn_close:hover {\ -background-color: #656565;\ -background-position: 50% 100%;\ -color: white;\ -}\ -.ace_replacebtn.prev {\ -width: 54px\ -}\ -.ace_replacebtn.next {\ -width: 27px\ -}\ -.ace_button {\ -margin-left: 2px;\ -cursor: pointer;\ --webkit-user-select: none;\ --moz-user-select: none;\ --o-user-select: none;\ --ms-user-select: none;\ -user-select: none;\ -overflow: hidden;\ -opacity: 0.7;\ -border: 1px solid rgba(100,100,100,0.23);\ -padding: 1px;\ --moz-box-sizing: border-box;\ -box-sizing: border-box;\ -color: black;\ -}\ -.ace_button:hover {\ -background-color: #eee;\ -opacity:1;\ -}\ -.ace_button:active {\ -background-color: #ddd;\ -}\ -.ace_button.checked {\ -border-color: #3399ff;\ -opacity:1;\ -}\ -.ace_search_options{\ -margin-bottom: 3px;\ -text-align: right;\ --webkit-user-select: none;\ --moz-user-select: none;\ --o-user-select: none;\ --ms-user-select: none;\ -user-select: none;\ -}"; -var HashHandler = require("../keyboard/hash_handler").HashHandler; -var keyUtil = require("../lib/keys"); - -dom.importCssString(searchboxCss, "ace_searchbox"); - -var html = ''.replace(/>\s+/g, ">"); - -var SearchBox = function(editor, range, showReplaceForm) { - var div = dom.createElement("div"); - div.innerHTML = html; - this.element = div.firstChild; - - this.$init(); - this.setEditor(editor); -}; - -(function() { - this.setEditor = function(editor) { - editor.searchBox = this; - editor.container.appendChild(this.element); - this.editor = editor; - }; - - this.$initElements = function(sb) { - this.searchBox = sb.querySelector(".ace_search_form"); - this.replaceBox = sb.querySelector(".ace_replace_form"); - this.searchOptions = sb.querySelector(".ace_search_options"); - this.regExpOption = sb.querySelector("[action=toggleRegexpMode]"); - this.caseSensitiveOption = sb.querySelector("[action=toggleCaseSensitive]"); - this.wholeWordOption = sb.querySelector("[action=toggleWholeWords]"); - this.searchInput = this.searchBox.querySelector(".ace_search_field"); - this.replaceInput = this.replaceBox.querySelector(".ace_search_field"); - }; - - this.$init = function() { - var sb = this.element; - - this.$initElements(sb); - - var _this = this; - event.addListener(sb, "mousedown", function(e) { - setTimeout(function(){ - _this.activeInput.focus(); - }, 0); - event.stopPropagation(e); - }); - event.addListener(sb, "click", function(e) { - var t = e.target || e.srcElement; - var action = t.getAttribute("action"); - if (action && _this[action]) - _this[action](); - else if (_this.$searchBarKb.commands[action]) - _this.$searchBarKb.commands[action].exec(_this); - event.stopPropagation(e); - }); - - event.addCommandKeyListener(sb, function(e, hashId, keyCode) { - var keyString = keyUtil.keyCodeToString(keyCode); - var command = _this.$searchBarKb.findKeyCommand(hashId, keyString); - if (command && command.exec) { - command.exec(_this); - event.stopEvent(e); - } - }); - - this.$onChange = lang.delayedCall(function() { - _this.find(false, false); - }); - - event.addListener(this.searchInput, "input", function() { - _this.$onChange.schedule(20); - }); - event.addListener(this.searchInput, "focus", function() { - _this.activeInput = _this.searchInput; - _this.searchInput.value && _this.highlight(); - }); - event.addListener(this.replaceInput, "focus", function() { - _this.activeInput = _this.replaceInput; - _this.searchInput.value && _this.highlight(); - }); - }; - this.$closeSearchBarKb = new HashHandler([{ - bindKey: "Esc", - name: "closeSearchBar", - exec: function(editor) { - editor.searchBox.hide(); - } - }]); - this.$searchBarKb = new HashHandler(); - this.$searchBarKb.bindKeys({ - "Ctrl-f|Command-f|Ctrl-H|Command-Option-F": function(sb) { - var isReplace = sb.isReplace = !sb.isReplace; - sb.replaceBox.style.display = isReplace ? "" : "none"; - sb[isReplace ? "replaceInput" : "searchInput"].focus(); - }, - "Ctrl-G|Command-G": function(sb) { - sb.findNext(); - }, - "Ctrl-Shift-G|Command-Shift-G": function(sb) { - sb.findPrev(); - }, - "esc": function(sb) { - setTimeout(function() { sb.hide();}); - }, - "Return": function(sb) { - if (sb.activeInput == sb.replaceInput) - sb.replace(); - sb.findNext(); - }, - "Shift-Return": function(sb) { - if (sb.activeInput == sb.replaceInput) - sb.replace(); - sb.findPrev(); - }, - "Tab": function(sb) { - (sb.activeInput == sb.replaceInput ? sb.searchInput : sb.replaceInput).focus(); - } - }); - - this.$searchBarKb.addCommands([{ - name: "toggleRegexpMode", - bindKey: {win: "Alt-R|Alt-/", mac: "Ctrl-Alt-R|Ctrl-Alt-/"}, - exec: function(sb) { - sb.regExpOption.checked = !sb.regExpOption.checked; - sb.$syncOptions(); - } - }, { - name: "toggleCaseSensitive", - bindKey: {win: "Alt-C|Alt-I", mac: "Ctrl-Alt-R|Ctrl-Alt-I"}, - exec: function(sb) { - sb.caseSensitiveOption.checked = !sb.caseSensitiveOption.checked; - sb.$syncOptions(); - } - }, { - name: "toggleWholeWords", - bindKey: {win: "Alt-B|Alt-W", mac: "Ctrl-Alt-B|Ctrl-Alt-W"}, - exec: function(sb) { - sb.wholeWordOption.checked = !sb.wholeWordOption.checked; - sb.$syncOptions(); - } - }]); - - this.$syncOptions = function() { - dom.setCssClass(this.regExpOption, "checked", this.regExpOption.checked); - dom.setCssClass(this.wholeWordOption, "checked", this.wholeWordOption.checked); - dom.setCssClass(this.caseSensitiveOption, "checked", this.caseSensitiveOption.checked); - this.find(false, false); - }; - - this.highlight = function(re) { - this.editor.session.highlight(re || this.editor.$search.$options.re); - this.editor.renderer.updateBackMarkers() - }; - this.find = function(skipCurrent, backwards) { - var range = this.editor.find(this.searchInput.value, { - skipCurrent: skipCurrent, - backwards: backwards, - wrap: true, - regExp: this.regExpOption.checked, - caseSensitive: this.caseSensitiveOption.checked, - wholeWord: this.wholeWordOption.checked - }); - var noMatch = !range && this.searchInput.value; - dom.setCssClass(this.searchBox, "ace_nomatch", noMatch); - this.editor._emit("findSearchBox", { match: !noMatch }); - this.highlight(); - }; - this.findNext = function() { - this.find(true, false); - }; - this.findPrev = function() { - this.find(true, true); - }; - this.replace = function() { - if (!this.editor.getReadOnly()) - this.editor.replace(this.replaceInput.value); - }; - this.replaceAndFindNext = function() { - if (!this.editor.getReadOnly()) { - this.editor.replace(this.replaceInput.value); - this.findNext() - } - }; - this.replaceAll = function() { - if (!this.editor.getReadOnly()) - this.editor.replaceAll(this.replaceInput.value); - }; - - this.hide = function() { - this.element.style.display = "none"; - this.editor.keyBinding.removeKeyboardHandler(this.$closeSearchBarKb); - this.editor.focus(); - }; - this.show = function(value, isReplace) { - this.element.style.display = ""; - this.replaceBox.style.display = isReplace ? "" : "none"; - - this.isReplace = isReplace; - - if (value) - this.searchInput.value = value; - this.searchInput.focus(); - this.searchInput.select(); - - this.editor.keyBinding.addKeyboardHandler(this.$closeSearchBarKb); - }; - -}).call(SearchBox.prototype); - -exports.SearchBox = SearchBox; - -exports.Search = function(editor, isReplace) { - var sb = editor.searchBox || new SearchBox(editor); - sb.show(editor.session.getTextRange(), isReplace); -}; - -}); diff --git a/IDE/jsrealb-ide/ace-src-noconflict/ext-settings_menu.js b/IDE/jsrealb-ide/ace-src-noconflict/ext-settings_menu.js deleted file mode 100644 index e36b0d2d..00000000 --- a/IDE/jsrealb-ide/ace-src-noconflict/ext-settings_menu.js +++ /dev/null @@ -1,632 +0,0 @@ -/* ***** BEGIN LICENSE BLOCK ***** - * Distributed under the BSD license: - * - * Copyright (c) 2013 Matthew Christopher Kastor-Inare III, Atropa Inc. Intl - * All rights reserved. - * - * Contributed to Ajax.org under the BSD license. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are met: - * * Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * * Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * * Neither the name of Ajax.org B.V. nor the - * names of its contributors may be used to endorse or promote products - * derived from this software without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND - * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED - * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE - * DISCLAIMED. IN NO EVENT SHALL AJAX.ORG B.V. BE LIABLE FOR ANY - * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES - * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; - * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND - * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - * - * ***** END LICENSE BLOCK ***** */ - -ace.define('ace/ext/settings_menu', ['require', 'exports', 'module' , 'ace/ext/menu_tools/generate_settings_menu', 'ace/ext/menu_tools/overlay_page', 'ace/editor'], function(require, exports, module) { - -var generateSettingsMenu = require('./menu_tools/generate_settings_menu').generateSettingsMenu; -var overlayPage = require('./menu_tools/overlay_page').overlayPage; -function showSettingsMenu(editor) { - var sm = document.getElementById('ace_settingsmenu'); - if (!sm) - overlayPage(editor, generateSettingsMenu(editor), '0', '0', '0'); -} -module.exports.init = function(editor) { - var Editor = require("ace/editor").Editor; - Editor.prototype.showSettingsMenu = function() { - showSettingsMenu(this); - }; -}; -}); - -ace.define('ace/ext/menu_tools/generate_settings_menu', ['require', 'exports', 'module' , 'ace/ext/menu_tools/element_generator', 'ace/ext/menu_tools/add_editor_menu_options', 'ace/ext/menu_tools/get_set_functions'], function(require, exports, module) { - -var egen = require('./element_generator'); -var addEditorMenuOptions = require('./add_editor_menu_options').addEditorMenuOptions; -var getSetFunctions = require('./get_set_functions').getSetFunctions; -module.exports.generateSettingsMenu = function generateSettingsMenu (editor) { - var elements = []; - function cleanupElementsList() { - elements.sort(function(a, b) { - var x = a.getAttribute('contains'); - var y = b.getAttribute('contains'); - return x.localeCompare(y); - }); - } - function wrapElements() { - var topmenu = document.createElement('div'); - topmenu.setAttribute('id', 'ace_settingsmenu'); - elements.forEach(function(element) { - topmenu.appendChild(element); - }); - return topmenu; - } - function createNewEntry(obj, clss, item, val) { - var el; - var div = document.createElement('div'); - div.setAttribute('contains', item); - div.setAttribute('class', 'ace_optionsMenuEntry'); - div.setAttribute('style', 'clear: both;'); - - div.appendChild(egen.createLabel( - item.replace(/^set/, '').replace(/([A-Z])/g, ' $1').trim(), - item - )); - - if (Array.isArray(val)) { - el = egen.createSelection(item, val, clss); - el.addEventListener('change', function(e) { - try{ - editor.menuOptions[e.target.id].forEach(function(x) { - if(x.textContent !== e.target.textContent) { - delete x.selected; - } - }); - obj[e.target.id](e.target.value); - } catch (err) { - throw new Error(err); - } - }); - } else if(typeof val === 'boolean') { - el = egen.createCheckbox(item, val, clss); - el.addEventListener('change', function(e) { - try{ - obj[e.target.id](!!e.target.checked); - } catch (err) { - throw new Error(err); - } - }); - } else { - el = egen.createInput(item, val, clss); - el.addEventListener('change', function(e) { - try{ - if(e.target.value === 'true') { - obj[e.target.id](true); - } else if(e.target.value === 'false') { - obj[e.target.id](false); - } else { - obj[e.target.id](e.target.value); - } - } catch (err) { - throw new Error(err); - } - }); - } - el.style.cssText = 'float:right;'; - div.appendChild(el); - return div; - } - function makeDropdown(item, esr, clss, fn) { - var val = editor.menuOptions[item]; - var currentVal = esr[fn](); - if (typeof currentVal == 'object') - currentVal = currentVal.$id; - val.forEach(function(valuex) { - if (valuex.value === currentVal) - valuex.selected = 'selected'; - }); - return createNewEntry(esr, clss, item, val); - } - function handleSet(setObj) { - var item = setObj.functionName; - var esr = setObj.parentObj; - var clss = setObj.parentName; - var val; - var fn = item.replace(/^set/, 'get'); - if(editor.menuOptions[item] !== undefined) { - elements.push(makeDropdown(item, esr, clss, fn)); - } else if(typeof esr[fn] === 'function') { - try { - val = esr[fn](); - if(typeof val === 'object') { - val = val.$id; - } - elements.push( - createNewEntry(esr, clss, item, val) - ); - } catch (e) { - } - } - } - addEditorMenuOptions(editor); - getSetFunctions(editor).forEach(function(setObj) { - handleSet(setObj); - }); - cleanupElementsList(); - return wrapElements(); -}; - -}); - -ace.define('ace/ext/menu_tools/element_generator', ['require', 'exports', 'module' ], function(require, exports, module) { -module.exports.createOption = function createOption (obj) { - var attribute; - var el = document.createElement('option'); - for(attribute in obj) { - if(obj.hasOwnProperty(attribute)) { - if(attribute === 'selected') { - el.setAttribute(attribute, obj[attribute]); - } else { - el[attribute] = obj[attribute]; - } - } - } - return el; -}; -module.exports.createCheckbox = function createCheckbox (id, checked, clss) { - var el = document.createElement('input'); - el.setAttribute('type', 'checkbox'); - el.setAttribute('id', id); - el.setAttribute('name', id); - el.setAttribute('value', checked); - el.setAttribute('class', clss); - if(checked) { - el.setAttribute('checked', 'checked'); - } - return el; -}; -module.exports.createInput = function createInput (id, value, clss) { - var el = document.createElement('input'); - el.setAttribute('type', 'text'); - el.setAttribute('id', id); - el.setAttribute('name', id); - el.setAttribute('value', value); - el.setAttribute('class', clss); - return el; -}; -module.exports.createLabel = function createLabel (text, labelFor) { - var el = document.createElement('label'); - el.setAttribute('for', labelFor); - el.textContent = text; - return el; -}; -module.exports.createSelection = function createSelection (id, values, clss) { - var el = document.createElement('select'); - el.setAttribute('id', id); - el.setAttribute('name', id); - el.setAttribute('class', clss); - values.forEach(function(item) { - el.appendChild(module.exports.createOption(item)); - }); - return el; -}; - -}); - -ace.define('ace/ext/menu_tools/add_editor_menu_options', ['require', 'exports', 'module' , 'ace/ext/modelist', 'ace/ext/themelist'], function(require, exports, module) { -module.exports.addEditorMenuOptions = function addEditorMenuOptions (editor) { - var modelist = require('../modelist'); - var themelist = require('../themelist'); - editor.menuOptions = { - "setNewLineMode" : [{ - "textContent" : "unix", - "value" : "unix" - }, { - "textContent" : "windows", - "value" : "windows" - }, { - "textContent" : "auto", - "value" : "auto" - }], - "setTheme" : [], - "setMode" : [], - "setKeyboardHandler": [{ - "textContent" : "ace", - "value" : "" - }, { - "textContent" : "vim", - "value" : "ace/keyboard/vim" - }, { - "textContent" : "emacs", - "value" : "ace/keyboard/emacs" - }] - }; - - editor.menuOptions.setTheme = themelist.themes.map(function(theme) { - return { - 'textContent' : theme.caption, - 'value' : theme.theme - }; - }); - - editor.menuOptions.setMode = modelist.modes.map(function(mode) { - return { - 'textContent' : mode.name, - 'value' : mode.mode - }; - }); -}; - - -}); -ace.define('ace/ext/modelist', ['require', 'exports', 'module' ], function(require, exports, module) { - - -var modes = []; -function getModeForPath(path) { - var mode = modesByName.text; - var fileName = path.split(/[\/\\]/).pop(); - for (var i = 0; i < modes.length; i++) { - if (modes[i].supportsFile(fileName)) { - mode = modes[i]; - break; - } - } - return mode; -} - -var Mode = function(name, caption, extensions) { - this.name = name; - this.caption = caption; - this.mode = "ace/mode/" + name; - this.extensions = extensions; - if (/\^/.test(extensions)) { - var re = extensions.replace(/\|(\^)?/g, function(a, b){ - return "$|" + (b ? "^" : "^.*\\."); - }) + "$"; - } else { - var re = "^.*\\.(" + extensions + ")$"; - } - - this.extRe = new RegExp(re, "gi"); -}; - -Mode.prototype.supportsFile = function(filename) { - return filename.match(this.extRe); -}; -var supportedModes = { - ABAP: ["abap"], - ActionScript:["as"], - ADA: ["ada|adb"], - Apache_Conf: ["^htaccess|^htgroups|^htpasswd|^conf|htaccess|htgroups|htpasswd"], - AsciiDoc: ["asciidoc"], - Assembly_x86:["asm"], - AutoHotKey: ["ahk"], - BatchFile: ["bat|cmd"], - C9Search: ["c9search_results"], - C_Cpp: ["cpp|c|cc|cxx|h|hh|hpp"], - Clojure: ["clj"], - Cobol: ["CBL|COB"], - coffee: ["coffee|cf|cson|^Cakefile"], - ColdFusion: ["cfm"], - CSharp: ["cs"], - CSS: ["css"], - Curly: ["curly"], - D: ["d|di"], - Dart: ["dart"], - Diff: ["diff|patch"], - Dot: ["dot"], - Erlang: ["erl|hrl"], - EJS: ["ejs"], - Forth: ["frt|fs|ldr"], - FTL: ["ftl"], - Glsl: ["glsl|frag|vert"], - golang: ["go"], - Groovy: ["groovy"], - HAML: ["haml"], - Handlebars: ["hbs|handlebars|tpl|mustache"], - Haskell: ["hs"], - haXe: ["hx"], - HTML: ["html|htm|xhtml"], - HTML_Ruby: ["erb|rhtml|html.erb"], - INI: ["ini|conf|cfg|prefs"], - Jack: ["jack"], - Jade: ["jade"], - Java: ["java"], - JavaScript: ["js|jsm"], - JSON: ["json"], - JSONiq: ["jq"], - JSP: ["jsp"], - JSX: ["jsx"], - Julia: ["jl"], - LaTeX: ["tex|latex|ltx|bib"], - LESS: ["less"], - Liquid: ["liquid"], - Lisp: ["lisp"], - LiveScript: ["ls"], - LogiQL: ["logic|lql"], - LSL: ["lsl"], - Lua: ["lua"], - LuaPage: ["lp"], - Lucene: ["lucene"], - Makefile: ["^Makefile|^GNUmakefile|^makefile|^OCamlMakefile|make"], - MATLAB: ["matlab"], - Markdown: ["md|markdown"], - MEL: ["mel"], - MySQL: ["mysql"], - MUSHCode: ["mc|mush"], - Nix: ["nix"], - ObjectiveC: ["m|mm"], - OCaml: ["ml|mli"], - Pascal: ["pas|p"], - Perl: ["pl|pm"], - pgSQL: ["pgsql"], - PHP: ["php|phtml"], - Powershell: ["ps1"], - Prolog: ["plg|prolog"], - Properties: ["properties"], - Protobuf: ["proto"], - Python: ["py"], - R: ["r"], - RDoc: ["Rd"], - RHTML: ["Rhtml"], - Ruby: ["rb|ru|gemspec|rake|^Guardfile|^Rakefile|^Gemfile"], - Rust: ["rs"], - SASS: ["sass"], - SCAD: ["scad"], - Scala: ["scala"], - Scheme: ["scm|rkt"], - SCSS: ["scss"], - SH: ["sh|bash|^.bashrc"], - SJS: ["sjs"], - Space: ["space"], - snippets: ["snippets"], - Soy_Template:["soy"], - SQL: ["sql"], - Stylus: ["styl|stylus"], - SVG: ["svg"], - Tcl: ["tcl"], - Tex: ["tex"], - Text: ["txt"], - Textile: ["textile"], - Toml: ["toml"], - Twig: ["twig"], - Typescript: ["ts|typescript|str"], - VBScript: ["vbs"], - Velocity: ["vm"], - Verilog: ["v|vh|sv|svh"], - XML: ["xml|rdf|rss|wsdl|xslt|atom|mathml|mml|xul|xbl"], - XQuery: ["xq"], - YAML: ["yaml|yml"] -}; - -var nameOverrides = { - ObjectiveC: "Objective-C", - CSharp: "C#", - golang: "Go", - C_Cpp: "C/C++", - coffee: "CoffeeScript", - HTML_Ruby: "HTML (Ruby)", - FTL: "FreeMarker" -}; -var modesByName = {}; -for (var name in supportedModes) { - var data = supportedModes[name]; - var displayName = (nameOverrides[name] || name).replace(/_/g, " "); - var filename = name.toLowerCase(); - var mode = new Mode(filename, displayName, data[0]); - modesByName[filename] = mode; - modes.push(mode); -} - -module.exports = { - getModeForPath: getModeForPath, - modes: modes, - modesByName: modesByName -}; - -}); - -ace.define('ace/ext/themelist', ['require', 'exports', 'module' ], function(require, exports, module) { - - -var themeData = [ - ["Chrome" ], - ["Clouds" ], - ["Crimson Editor" ], - ["Dawn" ], - ["Dreamweaver" ], - ["Eclipse" ], - ["GitHub" ], - ["Solarized Light"], - ["TextMate" ], - ["Tomorrow" ], - ["XCode" ], - ["Kuroir"], - ["KatzenMilch"], - ["Ambiance" ,"ambiance" , "dark"], - ["Chaos" ,"chaos" , "dark"], - ["Clouds Midnight" ,"clouds_midnight" , "dark"], - ["Cobalt" ,"cobalt" , "dark"], - ["idle Fingers" ,"idle_fingers" , "dark"], - ["krTheme" ,"kr_theme" , "dark"], - ["Merbivore" ,"merbivore" , "dark"], - ["Merbivore Soft" ,"merbivore_soft" , "dark"], - ["Mono Industrial" ,"mono_industrial" , "dark"], - ["Monokai" ,"monokai" , "dark"], - ["Pastel on dark" ,"pastel_on_dark" , "dark"], - ["Solarized Dark" ,"solarized_dark" , "dark"], - ["Terminal" ,"terminal" , "dark"], - ["Tomorrow Night" ,"tomorrow_night" , "dark"], - ["Tomorrow Night Blue" ,"tomorrow_night_blue" , "dark"], - ["Tomorrow Night Bright","tomorrow_night_bright" , "dark"], - ["Tomorrow Night 80s" ,"tomorrow_night_eighties" , "dark"], - ["Twilight" ,"twilight" , "dark"], - ["Vibrant Ink" ,"vibrant_ink" , "dark"] -] - - -exports.themesByName = {}; -exports.themes = themeData.map(function(data) { - var name = data[1] || data[0].replace(/ /g, "_").toLowerCase(); - var theme = { - caption: data[0], - theme: "ace/theme/" + name, - isDark: data[2] == "dark", - name: name - }; - exports.themesByName[name] = theme; - return theme; -}); - -}); - -ace.define('ace/ext/menu_tools/get_set_functions', ['require', 'exports', 'module' ], function(require, exports, module) { -module.exports.getSetFunctions = function getSetFunctions (editor) { - var out = []; - var my = { - 'editor' : editor, - 'session' : editor.session, - 'renderer' : editor.renderer - }; - var opts = []; - var skip = [ - 'setOption', - 'setUndoManager', - 'setDocument', - 'setValue', - 'setBreakpoints', - 'setScrollTop', - 'setScrollLeft', - 'setSelectionStyle', - 'setWrapLimitRange' - ]; - ['renderer', 'session', 'editor'].forEach(function(esra) { - var esr = my[esra]; - var clss = esra; - for(var fn in esr) { - if(skip.indexOf(fn) === -1) { - if(/^set/.test(fn) && opts.indexOf(fn) === -1) { - opts.push(fn); - out.push({ - 'functionName' : fn, - 'parentObj' : esr, - 'parentName' : clss - }); - } - } - } - }); - return out; -}; - -}); - -ace.define('ace/ext/menu_tools/overlay_page', ['require', 'exports', 'module' , 'ace/lib/dom'], function(require, exports, module) { - -var dom = require("../../lib/dom"); -var cssText = "#ace_settingsmenu, #kbshortcutmenu {\ -background-color: #F7F7F7;\ -color: black;\ -box-shadow: -5px 4px 5px rgba(126, 126, 126, 0.55);\ -padding: 1em 0.5em 2em 1em;\ -overflow: auto;\ -position: absolute;\ -margin: 0;\ -bottom: 0;\ -right: 0;\ -top: 0;\ -z-index: 9991;\ -cursor: default;\ -}\ -.ace_dark #ace_settingsmenu, .ace_dark #kbshortcutmenu {\ -box-shadow: -20px 10px 25px rgba(126, 126, 126, 0.25);\ -background-color: rgba(255, 255, 255, 0.6);\ -color: black;\ -}\ -.ace_optionsMenuEntry:hover {\ -background-color: rgba(100, 100, 100, 0.1);\ --webkit-transition: all 0.5s;\ -transition: all 0.3s\ -}\ -.ace_closeButton {\ -background: rgba(245, 146, 146, 0.5);\ -border: 1px solid #F48A8A;\ -border-radius: 50%;\ -padding: 7px;\ -position: absolute;\ -right: -8px;\ -top: -8px;\ -z-index: 1000;\ -}\ -.ace_closeButton{\ -background: rgba(245, 146, 146, 0.9);\ -}\ -.ace_optionsMenuKey {\ -color: darkslateblue;\ -font-weight: bold;\ -}\ -.ace_optionsMenuCommand {\ -color: darkcyan;\ -font-weight: normal;\ -}"; -dom.importCssString(cssText); -module.exports.overlayPage = function overlayPage(editor, contentElement, top, right, bottom, left) { - top = top ? 'top: ' + top + ';' : ''; - bottom = bottom ? 'bottom: ' + bottom + ';' : ''; - right = right ? 'right: ' + right + ';' : ''; - left = left ? 'left: ' + left + ';' : ''; - - var closer = document.createElement('div'); - var contentContainer = document.createElement('div'); - - function documentEscListener(e) { - if (e.keyCode === 27) { - closer.click(); - } - } - - closer.style.cssText = 'margin: 0; padding: 0; ' + - 'position: fixed; top:0; bottom:0; left:0; right:0;' + - 'z-index: 9990; ' + - 'background-color: rgba(0, 0, 0, 0.3);'; - closer.addEventListener('click', function() { - document.removeEventListener('keydown', documentEscListener); - closer.parentNode.removeChild(closer); - editor.focus(); - closer = null; - }); - document.addEventListener('keydown', documentEscListener); - - contentContainer.style.cssText = top + right + bottom + left; - contentContainer.addEventListener('click', function(e) { - e.stopPropagation(); - }); - - var wrapper = dom.createElement("div"); - wrapper.style.position = "relative"; - - var closeButton = dom.createElement("div"); - closeButton.className = "ace_closeButton"; - closeButton.addEventListener('click', function() { - closer.click(); - }); - - wrapper.appendChild(closeButton); - contentContainer.appendChild(wrapper); - - contentContainer.appendChild(contentElement); - closer.appendChild(contentContainer); - document.body.appendChild(closer); - editor.blur(); -}; - -}); \ No newline at end of file diff --git a/IDE/jsrealb-ide/ace-src-noconflict/ext-spellcheck.js b/IDE/jsrealb-ide/ace-src-noconflict/ext-spellcheck.js deleted file mode 100644 index d61967f9..00000000 --- a/IDE/jsrealb-ide/ace-src-noconflict/ext-spellcheck.js +++ /dev/null @@ -1,68 +0,0 @@ -ace.define('ace/ext/spellcheck', ['require', 'exports', 'module' , 'ace/lib/event', 'ace/editor', 'ace/config'], function(require, exports, module) { - -var event = require("../lib/event"); - -exports.contextMenuHandler = function(e){ - var host = e.target; - var text = host.textInput.getElement(); - if (!host.selection.isEmpty()) - return; - var c = host.getCursorPosition(); - var r = host.session.getWordRange(c.row, c.column); - var w = host.session.getTextRange(r); - - host.session.tokenRe.lastIndex = 0; - if (!host.session.tokenRe.test(w)) - return; - var PLACEHOLDER = "\x01\x01"; - var value = w + " " + PLACEHOLDER; - text.value = value; - text.setSelectionRange(w.length, w.length + 1); - text.setSelectionRange(0, 0); - text.setSelectionRange(0, w.length); - - var afterKeydown = false; - event.addListener(text, "keydown", function onKeydown() { - event.removeListener(text, "keydown", onKeydown); - afterKeydown = true; - }); - - host.textInput.setInputHandler(function(newVal) { - console.log(newVal , value, text.selectionStart, text.selectionEnd) - if (newVal == value) - return ''; - if (newVal.lastIndexOf(value, 0) === 0) - return newVal.slice(value.length); - if (newVal.substr(text.selectionEnd) == value) - return newVal.slice(0, -value.length); - if (newVal.slice(-2) == PLACEHOLDER) { - var val = newVal.slice(0, -2); - if (val.slice(-1) == " ") { - if (afterKeydown) - return val.substring(0, text.selectionEnd); - val = val.slice(0, -1); - host.session.replace(r, val); - return ""; - } - } - - return newVal; - }); -}; -var Editor = require("../editor").Editor; -require("../config").defineOptions(Editor.prototype, "editor", { - spellcheck: { - set: function(val) { - var text = this.textInput.getElement(); - text.spellcheck = !!val; - if (!val) - this.removeListener("nativecontextmenu", exports.contextMenuHandler); - else - this.on("nativecontextmenu", exports.contextMenuHandler); - }, - value: true - } -}); - -}); - diff --git a/IDE/jsrealb-ide/ace-src-noconflict/ext-split.js b/IDE/jsrealb-ide/ace-src-noconflict/ext-split.js deleted file mode 100644 index d983f9b0..00000000 --- a/IDE/jsrealb-ide/ace-src-noconflict/ext-split.js +++ /dev/null @@ -1,271 +0,0 @@ -/* ***** BEGIN LICENSE BLOCK ***** - * Distributed under the BSD license: - * - * Copyright (c) 2010, Ajax.org B.V. - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are met: - * * Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * * Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * * Neither the name of Ajax.org B.V. nor the - * names of its contributors may be used to endorse or promote products - * derived from this software without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND - * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED - * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE - * DISCLAIMED. IN NO EVENT SHALL AJAX.ORG B.V. BE LIABLE FOR ANY - * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES - * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; - * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND - * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - * - * ***** END LICENSE BLOCK ***** */ - -ace.define('ace/ext/split', ['require', 'exports', 'module' , 'ace/split'], function(require, exports, module) { -module.exports = require("../split"); - -}); - -ace.define('ace/split', ['require', 'exports', 'module' , 'ace/lib/oop', 'ace/lib/lang', 'ace/lib/event_emitter', 'ace/editor', 'ace/virtual_renderer', 'ace/edit_session'], function(require, exports, module) { - - -var oop = require("./lib/oop"); -var lang = require("./lib/lang"); -var EventEmitter = require("./lib/event_emitter").EventEmitter; - -var Editor = require("./editor").Editor; -var Renderer = require("./virtual_renderer").VirtualRenderer; -var EditSession = require("./edit_session").EditSession; - - -var Split = function(container, theme, splits) { - this.BELOW = 1; - this.BESIDE = 0; - - this.$container = container; - this.$theme = theme; - this.$splits = 0; - this.$editorCSS = ""; - this.$editors = []; - this.$orientation = this.BESIDE; - - this.setSplits(splits || 1); - this.$cEditor = this.$editors[0]; - - - this.on("focus", function(editor) { - this.$cEditor = editor; - }.bind(this)); -}; - -(function(){ - - oop.implement(this, EventEmitter); - - this.$createEditor = function() { - var el = document.createElement("div"); - el.className = this.$editorCSS; - el.style.cssText = "position: absolute; top:0px; bottom:0px"; - this.$container.appendChild(el); - var editor = new Editor(new Renderer(el, this.$theme)); - - editor.on("focus", function() { - this._emit("focus", editor); - }.bind(this)); - - this.$editors.push(editor); - editor.setFontSize(this.$fontSize); - return editor; - }; - - this.setSplits = function(splits) { - var editor; - if (splits < 1) { - throw "The number of splits have to be > 0!"; - } - - if (splits == this.$splits) { - return; - } else if (splits > this.$splits) { - while (this.$splits < this.$editors.length && this.$splits < splits) { - editor = this.$editors[this.$splits]; - this.$container.appendChild(editor.container); - editor.setFontSize(this.$fontSize); - this.$splits ++; - } - while (this.$splits < splits) { - this.$createEditor(); - this.$splits ++; - } - } else { - while (this.$splits > splits) { - editor = this.$editors[this.$splits - 1]; - this.$container.removeChild(editor.container); - this.$splits --; - } - } - this.resize(); - }; - this.getSplits = function() { - return this.$splits; - }; - this.getEditor = function(idx) { - return this.$editors[idx]; - }; - this.getCurrentEditor = function() { - return this.$cEditor; - }; - this.focus = function() { - this.$cEditor.focus(); - }; - this.blur = function() { - this.$cEditor.blur(); - }; - this.setTheme = function(theme) { - this.$editors.forEach(function(editor) { - editor.setTheme(theme); - }); - }; - this.setKeyboardHandler = function(keybinding) { - this.$editors.forEach(function(editor) { - editor.setKeyboardHandler(keybinding); - }); - }; - this.forEach = function(callback, scope) { - this.$editors.forEach(callback, scope); - }; - - - this.$fontSize = ""; - this.setFontSize = function(size) { - this.$fontSize = size; - this.forEach(function(editor) { - editor.setFontSize(size); - }); - }; - - this.$cloneSession = function(session) { - var s = new EditSession(session.getDocument(), session.getMode()); - - var undoManager = session.getUndoManager(); - if (undoManager) { - var undoManagerProxy = new UndoManagerProxy(undoManager, s); - s.setUndoManager(undoManagerProxy); - } - s.$informUndoManager = lang.delayedCall(function() { s.$deltas = []; }); - s.setTabSize(session.getTabSize()); - s.setUseSoftTabs(session.getUseSoftTabs()); - s.setOverwrite(session.getOverwrite()); - s.setBreakpoints(session.getBreakpoints()); - s.setUseWrapMode(session.getUseWrapMode()); - s.setUseWorker(session.getUseWorker()); - s.setWrapLimitRange(session.$wrapLimitRange.min, - session.$wrapLimitRange.max); - s.$foldData = session.$cloneFoldData(); - - return s; - }; - this.setSession = function(session, idx) { - var editor; - if (idx == null) { - editor = this.$cEditor; - } else { - editor = this.$editors[idx]; - } - var isUsed = this.$editors.some(function(editor) { - return editor.session === session; - }); - - if (isUsed) { - session = this.$cloneSession(session); - } - editor.setSession(session); - return session; - }; - this.getOrientation = function() { - return this.$orientation; - }; - this.setOrientation = function(orientation) { - if (this.$orientation == orientation) { - return; - } - this.$orientation = orientation; - this.resize(); - }; - this.resize = function() { - var width = this.$container.clientWidth; - var height = this.$container.clientHeight; - var editor; - - if (this.$orientation == this.BESIDE) { - var editorWidth = width / this.$splits; - for (var i = 0; i < this.$splits; i++) { - editor = this.$editors[i]; - editor.container.style.width = editorWidth + "px"; - editor.container.style.top = "0px"; - editor.container.style.left = i * editorWidth + "px"; - editor.container.style.height = height + "px"; - editor.resize(); - } - } else { - var editorHeight = height / this.$splits; - for (var i = 0; i < this.$splits; i++) { - editor = this.$editors[i]; - editor.container.style.width = width + "px"; - editor.container.style.top = i * editorHeight + "px"; - editor.container.style.left = "0px"; - editor.container.style.height = editorHeight + "px"; - editor.resize(); - } - } - }; - -}).call(Split.prototype); - - -function UndoManagerProxy(undoManager, session) { - this.$u = undoManager; - this.$doc = session; -} - -(function() { - this.execute = function(options) { - this.$u.execute(options); - }; - - this.undo = function() { - var selectionRange = this.$u.undo(true); - if (selectionRange) { - this.$doc.selection.setSelectionRange(selectionRange); - } - }; - - this.redo = function() { - var selectionRange = this.$u.redo(true); - if (selectionRange) { - this.$doc.selection.setSelectionRange(selectionRange); - } - }; - - this.reset = function() { - this.$u.reset(); - }; - - this.hasUndo = function() { - return this.$u.hasUndo(); - }; - - this.hasRedo = function() { - return this.$u.hasRedo(); - }; -}).call(UndoManagerProxy.prototype); - -exports.Split = Split; -}); diff --git a/IDE/jsrealb-ide/ace-src-noconflict/ext-static_highlight.js b/IDE/jsrealb-ide/ace-src-noconflict/ext-static_highlight.js deleted file mode 100644 index fdeec01c..00000000 --- a/IDE/jsrealb-ide/ace-src-noconflict/ext-static_highlight.js +++ /dev/null @@ -1,178 +0,0 @@ -/* ***** BEGIN LICENSE BLOCK ***** - * Distributed under the BSD license: - * - * Copyright (c) 2010, Ajax.org B.V. - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are met: - * * Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * * Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * * Neither the name of Ajax.org B.V. nor the - * names of its contributors may be used to endorse or promote products - * derived from this software without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND - * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED - * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE - * DISCLAIMED. IN NO EVENT SHALL AJAX.ORG B.V. BE LIABLE FOR ANY - * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES - * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; - * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND - * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - * - * ***** END LICENSE BLOCK ***** */ - -ace.define('ace/ext/static_highlight', ['require', 'exports', 'module' , 'ace/edit_session', 'ace/layer/text', 'ace/config', 'ace/lib/dom'], function(require, exports, module) { - - -var EditSession = require("../edit_session").EditSession; -var TextLayer = require("../layer/text").Text; -var baseStyles = ".ace_static_highlight {\ -font-family: 'Monaco', 'Menlo', 'Ubuntu Mono', 'Consolas', 'source-code-pro', 'Droid Sans Mono', monospace;\ -font-size: 12px;\ -}\ -.ace_static_highlight .ace_gutter {\ -width: 25px !important;\ -display: block;\ -float: left;\ -text-align: right;\ -padding: 0 3px 0 0;\ -margin-right: 3px;\ -position: static !important;\ -}\ -.ace_static_highlight .ace_line { clear: both; }\ -.ace_static_highlight .ace_gutter-cell {\ --moz-user-select: -moz-none;\ --khtml-user-select: none;\ --webkit-user-select: none;\ -user-select: none;\ -}\ -.ace_static_highlight .ace_gutter-cell:before {\ -content: counter(ace_line, decimal);\ -counter-increment: ace_line;\ -}\ -.ace_static_highlight {\ -counter-reset: ace_line;\ -}\ -"; -var config = require("../config"); -var dom = require("../lib/dom"); - - -var highlight = function(el, opts, callback) { - var m = el.className.match(/lang-(\w+)/); - var mode = opts.mode || m && ("ace/mode/" + m[1]); - if (!mode) - return false; - var theme = opts.theme || "ace/theme/textmate"; - - var data = ""; - var nodes = []; - - if (el.firstElementChild) { - var textLen = 0; - for (var i = 0; i < el.childNodes.length; i++) { - var ch = el.childNodes[i]; - if (ch.nodeType == 3) { - textLen += ch.data.length; - data += ch.data; - } else { - nodes.push(textLen, ch); - } - } - } else { - data = dom.getInnerText(el); - if (opts.trim) - data = data.trim(); - } - - highlight.render(data, mode, theme, opts.firstLineNumber, !opts.showGutter, function (highlighted) { - dom.importCssString(highlighted.css, "ace_highlight"); - el.innerHTML = highlighted.html; - var container = el.firstChild.firstChild; - for (var i = 0; i < nodes.length; i += 2) { - var pos = highlighted.session.doc.indexToPosition(nodes[i]); - var node = nodes[i + 1]; - var lineEl = container.children[pos.row]; - lineEl && lineEl.appendChild(node); - } - callback && callback(); - }); -}; - -highlight.render = function(input, mode, theme, lineStart, disableGutter, callback) { - var waiting = 0; - var modeCache = EditSession.prototype.$modes; - if (typeof theme == "string") { - waiting++; - config.loadModule(['theme', theme], function(m) { - theme = m; - --waiting || done(); - }); - } - - if (typeof mode == "string") { - waiting++; - config.loadModule(['mode', mode], function(m) { - if (!modeCache[mode]) modeCache[mode] = new m.Mode(); - mode = modeCache[mode]; - --waiting || done(); - }); - } - function done() { - var result = highlight.renderSync(input, mode, theme, lineStart, disableGutter); - return callback ? callback(result) : result; - } - return waiting || done(); -}; - -highlight.renderSync = function(input, mode, theme, lineStart, disableGutter) { - lineStart = parseInt(lineStart || 1, 10); - - var session = new EditSession(""); - session.setUseWorker(false); - session.setMode(mode); - - var textLayer = new TextLayer(document.createElement("div")); - textLayer.setSession(session); - textLayer.config = { - characterWidth: 10, - lineHeight: 20 - }; - - session.setValue(input); - - var stringBuilder = []; - var length = session.getLength(); - - for(var ix = 0; ix < length; ix++) { - stringBuilder.push("
"); - if (!disableGutter) - stringBuilder.push("" + /*(ix + lineStart) + */ ""); - textLayer.$renderLine(stringBuilder, ix, true, false); - stringBuilder.push("\n
"); - } - var html = "
" + - "
" + - stringBuilder.join("") + - "
" + - "
"; - - textLayer.destroy(); - - return { - css: baseStyles + theme.cssText, - html: html, - session: session - }; -}; - -module.exports = highlight; -module.exports.highlight =highlight; -}); diff --git a/IDE/jsrealb-ide/ace-src-noconflict/ext-statusbar.js b/IDE/jsrealb-ide/ace-src-noconflict/ext-statusbar.js deleted file mode 100644 index 31cab37f..00000000 --- a/IDE/jsrealb-ide/ace-src-noconflict/ext-statusbar.js +++ /dev/null @@ -1,47 +0,0 @@ -ace.define('ace/ext/statusbar', ['require', 'exports', 'module' , 'ace/lib/dom', 'ace/lib/lang'], function(require, exports, module) { -var dom = require("ace/lib/dom"); -var lang = require("ace/lib/lang"); - -var StatusBar = function(editor, parentNode) { - this.element = dom.createElement("div"); - this.element.className = "ace_status-indicator"; - this.element.style.cssText = "display: inline-block;"; - parentNode.appendChild(this.element); - - var statusUpdate = lang.delayedCall(function(){ - this.updateStatus(editor) - }.bind(this)); - editor.on("changeStatus", function() { - statusUpdate.schedule(100); - }); - editor.on("changeSelection", function() { - statusUpdate.schedule(100); - }); -}; - -(function(){ - this.updateStatus = function(editor) { - var status = []; - function add(str, separator) { - str && status.push(str, separator || "|"); - } - - if (editor.$vimModeHandler) - add(editor.$vimModeHandler.getStatusText()); - else if (editor.commands.recording) - add("REC"); - - var c = editor.selection.lead; - add(c.row + ":" + c.column, " "); - if (!editor.selection.isEmpty()) { - var r = editor.getSelectionRange(); - add("(" + (r.end.row - r.start.row) + ":" +(r.end.column - r.start.column) + ")"); - } - status.pop(); - this.element.textContent = status.join(""); - }; -}).call(StatusBar.prototype); - -exports.StatusBar = StatusBar; - -}); \ No newline at end of file diff --git a/IDE/jsrealb-ide/ace-src-noconflict/ext-textarea.js b/IDE/jsrealb-ide/ace-src-noconflict/ext-textarea.js deleted file mode 100644 index ea823100..00000000 --- a/IDE/jsrealb-ide/ace-src-noconflict/ext-textarea.js +++ /dev/null @@ -1,478 +0,0 @@ -/* ***** BEGIN LICENSE BLOCK ***** - * Distributed under the BSD license: - * - * Copyright (c) 2010, Ajax.org B.V. - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are met: - * * Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * * Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * * Neither the name of Ajax.org B.V. nor the - * names of its contributors may be used to endorse or promote products - * derived from this software without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND - * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED - * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE - * DISCLAIMED. IN NO EVENT SHALL AJAX.ORG B.V. BE LIABLE FOR ANY - * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES - * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; - * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND - * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - * - * ***** END LICENSE BLOCK ***** */ - -ace.define('ace/ext/textarea', ['require', 'exports', 'module' , 'ace/lib/event', 'ace/lib/useragent', 'ace/lib/net', 'ace/ace', 'ace/theme/textmate', 'ace/mode/text'], function(require, exports, module) { - - -var event = require("../lib/event"); -var UA = require("../lib/useragent"); -var net = require("../lib/net"); -var ace = require("../ace"); - -require("../theme/textmate"); - -module.exports = exports = ace; -var getCSSProperty = function(element, container, property) { - var ret = element.style[property]; - - if (!ret) { - if (window.getComputedStyle) { - ret = window.getComputedStyle(element, '').getPropertyValue(property); - } else { - ret = element.currentStyle[property]; - } - } - - if (!ret || ret == 'auto' || ret == 'intrinsic') { - ret = container.style[property]; - } - return ret; -}; - -function applyStyles(elm, styles) { - for (var style in styles) { - elm.style[style] = styles[style]; - } -} - -function setupContainer(element, getValue) { - if (element.type != 'textarea') { - throw new Error("Textarea required!"); - } - - var parentNode = element.parentNode; - var container = document.createElement('div'); - var resizeEvent = function() { - var style = 'position:relative;'; - [ - 'margin-top', 'margin-left', 'margin-right', 'margin-bottom' - ].forEach(function(item) { - style += item + ':' + - getCSSProperty(element, container, item) + ';'; - }); - var width = getCSSProperty(element, container, 'width') || (element.clientWidth + "px"); - var height = getCSSProperty(element, container, 'height') || (element.clientHeight + "px"); - style += 'height:' + height + ';width:' + width + ';'; - style += 'display:inline-block;'; - container.setAttribute('style', style); - }; - event.addListener(window, 'resize', resizeEvent); - resizeEvent(); - parentNode.insertBefore(container, element.nextSibling); - while (parentNode !== document) { - if (parentNode.tagName.toUpperCase() === 'FORM') { - var oldSumit = parentNode.onsubmit; - parentNode.onsubmit = function(evt) { - element.value = getValue(); - if (oldSumit) { - oldSumit.call(this, evt); - } - }; - break; - } - parentNode = parentNode.parentNode; - } - return container; -} - -exports.transformTextarea = function(element, loader) { - var session; - var container = setupContainer(element, function() { - return session.getValue(); - }); - element.style.display = 'none'; - container.style.background = 'white'; - var editorDiv = document.createElement("div"); - applyStyles(editorDiv, { - top: "0px", - left: "0px", - right: "0px", - bottom: "0px", - border: "1px solid gray", - position: "absolute" - }); - container.appendChild(editorDiv); - - var settingOpener = document.createElement("div"); - applyStyles(settingOpener, { - position: "absolute", - right: "0px", - bottom: "0px", - background: "red", - cursor: "nw-resize", - borderStyle: "solid", - borderWidth: "9px 8px 10px 9px", - width: "2px", - borderColor: "lightblue gray gray lightblue", - zIndex: 101 - }); - - var settingDiv = document.createElement("div"); - var settingDivStyles = { - top: "0px", - left: "20%", - right: "0px", - bottom: "0px", - position: "absolute", - padding: "5px", - zIndex: 100, - color: "white", - display: "none", - overflow: "auto", - fontSize: "14px", - boxShadow: "-5px 2px 3px gray" - }; - if (!UA.isOldIE) { - settingDivStyles.backgroundColor = "rgba(0, 0, 0, 0.6)"; - } else { - settingDivStyles.backgroundColor = "#333"; - } - - applyStyles(settingDiv, settingDivStyles); - container.appendChild(settingDiv); - var options = {}; - - var editor = ace.edit(editorDiv); - session = editor.getSession(); - - session.setValue(element.value || element.innerHTML); - editor.focus(); - container.appendChild(settingOpener); - setupApi(editor, editorDiv, settingDiv, ace, options, loader); - setupSettingPanel(settingDiv, settingOpener, editor, options); - - var state = ""; - event.addListener(settingOpener, "mousemove", function(e) { - var rect = this.getBoundingClientRect(); - var x = e.clientX - rect.left, y = e.clientY - rect.top; - if (x + y < (rect.width + rect.height)/2) { - this.style.cursor = "pointer"; - state = "toggle"; - } else { - state = "resize"; - this.style.cursor = "nw-resize"; - } - }); - - event.addListener(settingOpener, "mousedown", function(e) { - if (state == "toggle") { - editor.setDisplaySettings(); - return; - } - container.style.zIndex = 100000; - var rect = container.getBoundingClientRect(); - var startX = rect.width + rect.left - e.clientX; - var startY = rect.height + rect.top - e.clientY; - event.capture(settingOpener, function(e) { - container.style.width = e.clientX - rect.left + startX + "px"; - container.style.height = e.clientY - rect.top + startY + "px"; - editor.resize(); - }, function() {}); - }); - - return editor; -}; - -function load(url, module, callback) { - net.loadScript(url, function() { - require([module], callback); - }); -} - -function setupApi(editor, editorDiv, settingDiv, ace, options, loader) { - var session = editor.getSession(); - var renderer = editor.renderer; - loader = loader || load; - - function toBool(value) { - return value === "true" || value == true; - } - - editor.setDisplaySettings = function(display) { - if (display == null) - display = settingDiv.style.display == "none"; - if (display) { - settingDiv.style.display = "block"; - settingDiv.hideButton.focus(); - editor.on("focus", function onFocus() { - editor.removeListener("focus", onFocus); - settingDiv.style.display = "none"; - }); - } else { - editor.focus(); - } - }; - - editor.$setOption = editor.setOption; - editor.setOption = function(key, value) { - if (options[key] == value) return; - - switch (key) { - case "mode": - if (value != "text") { - loader("mode-" + value + ".js", "ace/mode/" + value, function() { - var aceMode = require("../mode/" + value).Mode; - session.setMode(new aceMode()); - }); - } else { - session.setMode(new (require("../mode/text").Mode)); - } - break; - - case "theme": - if (value != "textmate") { - loader("theme-" + value + ".js", "ace/theme/" + value, function() { - editor.setTheme("ace/theme/" + value); - }); - } else { - editor.setTheme("ace/theme/textmate"); - } - break; - - case "fontSize": - editorDiv.style.fontSize = value; - break; - - case "keybindings": - switch (value) { - case "vim": - editor.setKeyboardHandler("ace/keyboard/vim"); - break; - case "emacs": - editor.setKeyboardHandler("ace/keyboard/emacs"); - break; - default: - editor.setKeyboardHandler(null); - } - break; - - case "softWrap": - switch (value) { - case "off": - session.setUseWrapMode(false); - renderer.setPrintMarginColumn(80); - break; - case "40": - session.setUseWrapMode(true); - session.setWrapLimitRange(40, 40); - renderer.setPrintMarginColumn(40); - break; - case "80": - session.setUseWrapMode(true); - session.setWrapLimitRange(80, 80); - renderer.setPrintMarginColumn(80); - break; - case "free": - session.setUseWrapMode(true); - session.setWrapLimitRange(null, null); - renderer.setPrintMarginColumn(80); - break; - } - break; - - default: - editor.$setOption(key, toBool(value)); - } - - options[key] = value; - }; - - editor.getOption = function(key) { - return options[key]; - }; - - editor.getOptions = function() { - return options; - }; - - editor.setOptions(exports.options); - - return editor; -} - -function setupSettingPanel(settingDiv, settingOpener, editor, options) { - var BOOL = null; - - var desc = { - mode: "Mode:", - gutter: "Display Gutter:", - theme: "Theme:", - fontSize: "Font Size:", - softWrap: "Soft Wrap:", - keybindings: "Keyboard", - showPrintMargin: "Show Print Margin:", - useSoftTabs: "Use Soft Tabs:", - showInvisibles: "Show Invisibles" - }; - - var optionValues = { - mode: { - text: "Plain", - javascript: "JavaScript", - xml: "XML", - html: "HTML", - css: "CSS", - scss: "SCSS", - python: "Python", - php: "PHP", - java: "Java", - ruby: "Ruby", - c_cpp: "C/C++", - coffee: "CoffeeScript", - json: "json", - perl: "Perl", - clojure: "Clojure", - ocaml: "OCaml", - csharp: "C#", - haxe: "haXe", - svg: "SVG", - textile: "Textile", - groovy: "Groovy", - liquid: "Liquid", - Scala: "Scala" - }, - theme: { - clouds: "Clouds", - clouds_midnight: "Clouds Midnight", - cobalt: "Cobalt", - crimson_editor: "Crimson Editor", - dawn: "Dawn", - eclipse: "Eclipse", - idle_fingers: "Idle Fingers", - kr_theme: "Kr Theme", - merbivore: "Merbivore", - merbivore_soft: "Merbivore Soft", - mono_industrial: "Mono Industrial", - monokai: "Monokai", - pastel_on_dark: "Pastel On Dark", - solarized_dark: "Solarized Dark", - solarized_light: "Solarized Light", - textmate: "Textmate", - twilight: "Twilight", - vibrant_ink: "Vibrant Ink" - }, - gutter: BOOL, - fontSize: { - "10px": "10px", - "11px": "11px", - "12px": "12px", - "14px": "14px", - "16px": "16px" - }, - softWrap: { - off: "Off", - 40: "40", - 80: "80", - free: "Free" - }, - keybindings: { - ace: "ace", - vim: "vim", - emacs: "emacs" - }, - showPrintMargin: BOOL, - useSoftTabs: BOOL, - showInvisibles: BOOL - }; - - var table = []; - table.push("
"); - - function renderOption(builder, option, obj, cValue) { - if (!obj) { - builder.push( - "" - ); - return; - } - builder.push(""); - } - - for (var option in options) { - table.push(""); - table.push(""); - } - table.push("
SettingValue
", desc[option], ""); - renderOption(table, option, optionValues[option], options[option]); - table.push("
"); - settingDiv.innerHTML = table.join(""); - - var onChange = function(e) { - var select = e.currentTarget; - editor.setOption(select.title, select.value); - }; - var onClick = function(e) { - var cb = e.currentTarget; - editor.setOption(cb.title, cb.checked); - }; - var selects = settingDiv.getElementsByTagName("select"); - for (var i = 0; i < selects.length; i++) - selects[i].onchange = onChange; - var cbs = settingDiv.getElementsByTagName("input"); - for (var i = 0; i < cbs.length; i++) - cbs[i].onclick = onClick; - - - var button = document.createElement("input"); - button.type = "button"; - button.value = "Hide"; - event.addListener(button, "click", function() { - editor.setDisplaySettings(false); - }); - settingDiv.appendChild(button); - settingDiv.hideButton = button; -} -exports.options = { - mode: "text", - theme: "textmate", - gutter: "false", - fontSize: "12px", - softWrap: "off", - keybindings: "ace", - showPrintMargin: "false", - useSoftTabs: "true", - showInvisibles: "false" -}; - -}); diff --git a/IDE/jsrealb-ide/ace-src-noconflict/ext-themelist.js b/IDE/jsrealb-ide/ace-src-noconflict/ext-themelist.js deleted file mode 100644 index 54e1fb94..00000000 --- a/IDE/jsrealb-ide/ace-src-noconflict/ext-themelist.js +++ /dev/null @@ -1,86 +0,0 @@ -/* ***** BEGIN LICENSE BLOCK ***** - * Distributed under the BSD license: - * - * Copyright (c) 2013 Matthew Christopher Kastor-Inare III, Atropa Inc. Intl - * All rights reserved. - * - * Contributed to Ajax.org under the BSD license. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are met: - * * Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * * Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * * Neither the name of Ajax.org B.V. nor the - * names of its contributors may be used to endorse or promote products - * derived from this software without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND - * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED - * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE - * DISCLAIMED. IN NO EVENT SHALL AJAX.ORG B.V. BE LIABLE FOR ANY - * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES - * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; - * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND - * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - * - * ***** END LICENSE BLOCK ***** */ - -ace.define('ace/ext/themelist', ['require', 'exports', 'module' ], function(require, exports, module) { - - -var themeData = [ - ["Chrome" ], - ["Clouds" ], - ["Crimson Editor" ], - ["Dawn" ], - ["Dreamweaver" ], - ["Eclipse" ], - ["GitHub" ], - ["Solarized Light"], - ["TextMate" ], - ["Tomorrow" ], - ["XCode" ], - ["Kuroir"], - ["KatzenMilch"], - ["Ambiance" ,"ambiance" , "dark"], - ["Chaos" ,"chaos" , "dark"], - ["Clouds Midnight" ,"clouds_midnight" , "dark"], - ["Cobalt" ,"cobalt" , "dark"], - ["idle Fingers" ,"idle_fingers" , "dark"], - ["krTheme" ,"kr_theme" , "dark"], - ["Merbivore" ,"merbivore" , "dark"], - ["Merbivore Soft" ,"merbivore_soft" , "dark"], - ["Mono Industrial" ,"mono_industrial" , "dark"], - ["Monokai" ,"monokai" , "dark"], - ["Pastel on dark" ,"pastel_on_dark" , "dark"], - ["Solarized Dark" ,"solarized_dark" , "dark"], - ["Terminal" ,"terminal" , "dark"], - ["Tomorrow Night" ,"tomorrow_night" , "dark"], - ["Tomorrow Night Blue" ,"tomorrow_night_blue" , "dark"], - ["Tomorrow Night Bright","tomorrow_night_bright" , "dark"], - ["Tomorrow Night 80s" ,"tomorrow_night_eighties" , "dark"], - ["Twilight" ,"twilight" , "dark"], - ["Vibrant Ink" ,"vibrant_ink" , "dark"] -] - - -exports.themesByName = {}; -exports.themes = themeData.map(function(data) { - var name = data[1] || data[0].replace(/ /g, "_").toLowerCase(); - var theme = { - caption: data[0], - theme: "ace/theme/" + name, - isDark: data[2] == "dark", - name: name - }; - exports.themesByName[name] = theme; - return theme; -}); - -}); - diff --git a/IDE/jsrealb-ide/ace-src-noconflict/ext-whitespace.js b/IDE/jsrealb-ide/ace-src-noconflict/ext-whitespace.js deleted file mode 100644 index 12aa4e37..00000000 --- a/IDE/jsrealb-ide/ace-src-noconflict/ext-whitespace.js +++ /dev/null @@ -1,206 +0,0 @@ -/* ***** BEGIN LICENSE BLOCK ***** - * Distributed under the BSD license: - * - * Copyright (c) 2010, Ajax.org B.V. - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are met: - * * Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * * Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * * Neither the name of Ajax.org B.V. nor the - * names of its contributors may be used to endorse or promote products - * derived from this software without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND - * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED - * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE - * DISCLAIMED. IN NO EVENT SHALL AJAX.ORG B.V. BE LIABLE FOR ANY - * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES - * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; - * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND - * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - * - * ***** END LICENSE BLOCK ***** */ - -ace.define('ace/ext/whitespace', ['require', 'exports', 'module' , 'ace/lib/lang'], function(require, exports, module) { - - -var lang = require("../lib/lang"); -exports.$detectIndentation = function(lines, fallback) { - var stats = []; - var changes = []; - var tabIndents = 0; - var prevSpaces = 0; - var max = Math.min(lines.length, 1000); - for (var i = 0; i < max; i++) { - var line = lines[i]; - if (!/^\s*[^*+\-\s]/.test(line)) - continue; - - var tabs = line.match(/^\t*/)[0].length; - if (line[0] == "\t") - tabIndents++; - - var spaces = line.match(/^ */)[0].length; - if (spaces && line[spaces] != "\t") { - var diff = spaces - prevSpaces; - if (diff > 0 && !(prevSpaces%diff) && !(spaces%diff)) - changes[diff] = (changes[diff] || 0) + 1; - - stats[spaces] = (stats[spaces] || 0) + 1; - } - prevSpaces = spaces; - while (line[line.length - 1] == "\\") - line = lines[i++]; - } - - function getScore(indent) { - var score = 0; - for (var i = indent; i < stats.length; i += indent) - score += stats[i] || 0; - return score; - } - - var changesTotal = changes.reduce(function(a,b){return a+b}, 0); - - var first = {score: 0, length: 0}; - var spaceIndents = 0; - for (var i = 1; i < 12; i++) { - if (i == 1) { - spaceIndents = getScore(i); - var score = 1; - } else - var score = getScore(i) / spaceIndents; - - if (changes[i]) { - score += changes[i] / changesTotal; - } - - if (score > first.score) - first = {score: score, length: i}; - } - - if (first.score && first.score > 1.4) - var tabLength = first.length; - - if (tabIndents > spaceIndents + 1) - return {ch: "\t", length: tabLength}; - - if (spaceIndents + 1 > tabIndents) - return {ch: " ", length: tabLength}; -}; - -exports.detectIndentation = function(session) { - var lines = session.getLines(0, 1000); - var indent = exports.$detectIndentation(lines) || {}; - - if (indent.ch) - session.setUseSoftTabs(indent.ch == " "); - - if (indent.length) - session.setTabSize(indent.length); - return indent; -}; - -exports.trimTrailingSpace = function(session, trimEmpty) { - var doc = session.getDocument(); - var lines = doc.getAllLines(); - - var min = trimEmpty ? -1 : 0; - - for (var i = 0, l=lines.length; i < l; i++) { - var line = lines[i]; - var index = line.search(/\s+$/); - - if (index > min) - doc.removeInLine(i, index, line.length); - } -}; - -exports.convertIndentation = function(session, ch, len) { - var oldCh = session.getTabString()[0]; - var oldLen = session.getTabSize(); - if (!len) len = oldLen; - if (!ch) ch = oldCh; - - var tab = ch == "\t" ? ch: lang.stringRepeat(ch, len); - - var doc = session.doc; - var lines = doc.getAllLines(); - - var cache = {}; - var spaceCache = {}; - for (var i = 0, l=lines.length; i < l; i++) { - var line = lines[i]; - var match = line.match(/^\s*/)[0]; - if (match) { - var w = session.$getStringScreenWidth(match)[0]; - var tabCount = Math.floor(w/oldLen); - var reminder = w%oldLen; - var toInsert = cache[tabCount] || (cache[tabCount] = lang.stringRepeat(tab, tabCount)); - toInsert += spaceCache[reminder] || (spaceCache[reminder] = lang.stringRepeat(" ", reminder)); - - if (toInsert != match) { - doc.removeInLine(i, 0, match.length); - doc.insertInLine({row: i, column: 0}, toInsert); - } - } - } - session.setTabSize(len); - session.setUseSoftTabs(ch == " "); -}; - -exports.$parseStringArg = function(text) { - var indent = {}; - if (/t/.test(text)) - indent.ch = "\t"; - else if (/s/.test(text)) - indent.ch = " "; - var m = text.match(/\d+/); - if (m) - indent.length = parseInt(m[0], 10); - return indent; -}; - -exports.$parseArg = function(arg) { - if (!arg) - return {}; - if (typeof arg == "string") - return exports.$parseStringArg(arg); - if (typeof arg.text == "string") - return exports.$parseStringArg(arg.text); - return arg; -}; - -exports.commands = [{ - name: "detectIndentation", - exec: function(editor) { - exports.detectIndentation(editor.session); - } -}, { - name: "trimTrailingSpace", - exec: function(editor) { - exports.trimTrailingSpace(editor.session); - } -}, { - name: "convertIndentation", - exec: function(editor, arg) { - var indent = exports.$parseArg(arg); - exports.convertIndentation(editor.session, indent.ch, indent.length); - } -}, { - name: "setIndentation", - exec: function(editor, arg) { - var indent = exports.$parseArg(arg); - indent.length && editor.session.setTabSize(indent.length); - indent.ch && editor.session.setUseSoftTabs(indent.ch == " "); - } -}]; - -}); diff --git a/IDE/jsrealb-ide/ace-src-noconflict/keybinding-emacs.js b/IDE/jsrealb-ide/ace-src-noconflict/keybinding-emacs.js deleted file mode 100644 index 4950ef6f..00000000 --- a/IDE/jsrealb-ide/ace-src-noconflict/keybinding-emacs.js +++ /dev/null @@ -1,1058 +0,0 @@ -/* ***** BEGIN LICENSE BLOCK ***** - * Distributed under the BSD license: - * - * Copyright (c) 2010, Ajax.org B.V. - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are met: - * * Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * * Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * * Neither the name of Ajax.org B.V. nor the - * names of its contributors may be used to endorse or promote products - * derived from this software without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND - * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED - * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE - * DISCLAIMED. IN NO EVENT SHALL AJAX.ORG B.V. BE LIABLE FOR ANY - * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES - * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; - * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND - * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - * - * ***** END LICENSE BLOCK ***** */ - -ace.define('ace/keyboard/emacs', ['require', 'exports', 'module' , 'ace/lib/dom', 'ace/incremental_search', 'ace/commands/incremental_search_commands', 'ace/keyboard/hash_handler', 'ace/lib/keys'], function(require, exports, module) { - - -var dom = require("../lib/dom"); -require("../incremental_search"); -var iSearchCommandModule = require("../commands/incremental_search_commands"); - - -var screenToTextBlockCoordinates = function(x, y) { - var canvasPos = this.scroller.getBoundingClientRect(); - - var col = Math.floor( - (x + this.scrollLeft - canvasPos.left - this.$padding) / this.characterWidth - ); - var row = Math.floor( - (y + this.scrollTop - canvasPos.top) / this.lineHeight - ); - - return this.session.screenToDocumentPosition(row, col); -}; - -var HashHandler = require("./hash_handler").HashHandler; -exports.handler = new HashHandler(); - -exports.handler.isEmacs = true; -exports.handler.$id = "ace/keyboard/emacs"; - -var initialized = false; -var $formerLongWords; -var $formerLineStart; - -exports.handler.attach = function(editor) { - if (!initialized) { - initialized = true; - dom.importCssString('\ - .emacs-mode .ace_cursor{\ - border: 2px rgba(50,250,50,0.8) solid!important;\ - -moz-box-sizing: border-box!important;\ - -webkit-box-sizing: border-box!important;\ - box-sizing: border-box!important;\ - background-color: rgba(0,250,0,0.9);\ - opacity: 0.5;\ - }\ - .emacs-mode .ace_hidden-cursors .ace_cursor{\ - opacity: 1;\ - background-color: transparent;\ - }\ - .emacs-mode .ace_overwrite-cursors .ace_cursor {\ - opacity: 1;\ - background-color: transparent;\ - border-width: 0 0 2px 2px !important;\ - }\ - .emacs-mode .ace_text-layer {\ - z-index: 4\ - }\ - .emacs-mode .ace_cursor-layer {\ - z-index: 2\ - }', 'emacsMode' - ); - } - $formerLongWords = editor.session.$selectLongWords; - editor.session.$selectLongWords = true; - $formerLineStart = editor.session.$useEmacsStyleLineStart; - editor.session.$useEmacsStyleLineStart = true; - - editor.session.$emacsMark = null; // the active mark - editor.session.$emacsMarkRing = editor.session.$emacsMarkRing || []; - - editor.emacsMark = function() { - return this.session.$emacsMark; - } - - editor.setEmacsMark = function(p) { - this.session.$emacsMark = p; - } - - editor.pushEmacsMark = function(p, activate) { - var prevMark = this.session.$emacsMark; - if (prevMark) - this.session.$emacsMarkRing.push(prevMark); - if (!p || activate) this.setEmacsMark(p) - else this.session.$emacsMarkRing.push(p); - } - - editor.popEmacsMark = function() { - var mark = this.emacsMark(); - if (mark) { this.setEmacsMark(null); return mark; } - return this.session.$emacsMarkRing.pop(); - } - - editor.getLastEmacsMark = function(p) { - return this.session.$emacsMark || this.session.$emacsMarkRing.slice(-1)[0]; - } - - editor.on("click", $resetMarkMode); - editor.on("changeSession", $kbSessionChange); - editor.renderer.screenToTextCoordinates = screenToTextBlockCoordinates; - editor.setStyle("emacs-mode"); - editor.commands.addCommands(commands); - exports.handler.platform = editor.commands.platform; - editor.$emacsModeHandler = this; - editor.addEventListener('copy', this.onCopy); - editor.addEventListener('paste', this.onPaste); -}; - -exports.handler.detach = function(editor) { - delete editor.renderer.screenToTextCoordinates; - editor.session.$selectLongWords = $formerLongWords; - editor.session.$useEmacsStyleLineStart = $formerLineStart; - editor.removeEventListener("click", $resetMarkMode); - editor.removeEventListener("changeSession", $kbSessionChange); - editor.unsetStyle("emacs-mode"); - editor.commands.removeCommands(commands); - editor.removeEventListener('copy', this.onCopy); - editor.removeEventListener('paste', this.onPaste); -}; - -var $kbSessionChange = function(e) { - if (e.oldSession) { - e.oldSession.$selectLongWords = $formerLongWords; - e.oldSession.$useEmacsStyleLineStart = $formerLineStart; - } - - $formerLongWords = e.session.$selectLongWords; - e.session.$selectLongWords = true; - $formerLineStart = e.session.$useEmacsStyleLineStart; - e.session.$useEmacsStyleLineStart = true; - - if (!e.session.hasOwnProperty('$emacsMark')) - e.session.$emacsMark = null; - if (!e.session.hasOwnProperty('$emacsMarkRing')) - e.session.$emacsMarkRing = []; -} - -var $resetMarkMode = function(e) { - e.editor.session.$emacsMark = null; -} - -var keys = require("../lib/keys").KEY_MODS, - eMods = {C: "ctrl", S: "shift", M: "alt", CMD: "command"}, - combinations = ["C-S-M-CMD", - "S-M-CMD", "C-M-CMD", "C-S-CMD", "C-S-M", - "M-CMD", "S-CMD", "S-M", "C-CMD", "C-M", "C-S", - "CMD", "M", "S", "C"]; -combinations.forEach(function(c) { - var hashId = 0; - c.split("-").forEach(function(c) { - hashId = hashId | keys[eMods[c]]; - }); - eMods[hashId] = c.toLowerCase() + "-"; -}); - -exports.handler.onCopy = function(e, editor) { - if (editor.$handlesEmacsOnCopy) return; - editor.$handlesEmacsOnCopy = true; - exports.handler.commands.killRingSave.exec(editor); - delete editor.$handlesEmacsOnCopy; -} - -exports.handler.onPaste = function(e, editor) { - editor.pushEmacsMark(editor.getCursorPosition()); -} - -exports.handler.bindKey = function(key, command) { - if (!key) - return; - - var ckb = this.commandKeyBinding; - key.split("|").forEach(function(keyPart) { - keyPart = keyPart.toLowerCase(); - ckb[keyPart] = command; - var keyParts = keyPart.split(" ").slice(0,-1); - keyParts.reduce(function(keyMapKeys, keyPart, i) { - var prefix = keyMapKeys[i-1] ? keyMapKeys[i-1] + ' ' : ''; - return keyMapKeys.concat([prefix + keyPart]); - }, []).forEach(function(keyPart) { - if (!ckb[keyPart]) ckb[keyPart] = "null"; - }); - }, this); -} - -exports.handler.handleKeyboard = function(data, hashId, key, keyCode) { - var editor = data.editor; - if (hashId == -1) { - editor.pushEmacsMark(); - if (data.count) { - var str = Array(data.count + 1).join(key); - data.count = null; - return {command: "insertstring", args: str}; - } - } - - if (key == "\x00") return undefined; - - var modifier = eMods[hashId]; - if (modifier == "c-" || data.universalArgument) { - var prevCount = String(data.count || 0); - var count = parseInt(key[key.length - 1]); - if (typeof count === 'number' && !isNaN(count)) { - data.count = parseInt(prevCount + count); - return {command: "null"}; - } else if (data.universalArgument) { - data.count = 4; - } - } - data.universalArgument = false; - if (modifier) key = modifier + key; - if (data.keyChain) key = data.keyChain += " " + key; - var command = this.commandKeyBinding[key]; - data.keyChain = command == "null" ? key : ""; - if (!command) return undefined; - if (command === "null") return {command: "null"}; - - if (command === "universalArgument") { - data.universalArgument = true; - return {command: "null"}; - } - var args; - if (typeof command !== "string") { - args = command.args; - if (command.command) command = command.command; - if (command === "goorselect") { - command = editor.emacsMark() ? args[1] : args[0]; - args = null; - } - } - - if (typeof command === "string") { - if (command === "insertstring" || - command === "splitline" || - command === "togglecomment") { - editor.pushEmacsMark(); - } - command = this.commands[command] || editor.commands.commands[command]; - if (!command) return undefined; - } - - if (!command.readonly && !command.isYank) - data.lastCommand = null; - - if (data.count) { - var count = data.count; - data.count = 0; - if (!command || !command.handlesCount) { - return { - args: args, - command: { - exec: function(editor, args) { - for (var i = 0; i < count; i++) - command.exec(editor, args); - } - } - }; - } else { - if (!args) args = {} - if (typeof args === 'object') args.count = count; - } - } - - return {command: command, args: args}; -}; - -exports.emacsKeys = { - "Up|C-p" : {command: "goorselect", args: ["golineup","selectup"]}, - "Down|C-n" : {command: "goorselect", args: ["golinedown","selectdown"]}, - "Left|C-b" : {command: "goorselect", args: ["gotoleft","selectleft"]}, - "Right|C-f" : {command: "goorselect", args: ["gotoright","selectright"]}, - "C-Left|M-b" : {command: "goorselect", args: ["gotowordleft","selectwordleft"]}, - "C-Right|M-f" : {command: "goorselect", args: ["gotowordright","selectwordright"]}, - "Home|C-a" : {command: "goorselect", args: ["gotolinestart","selecttolinestart"]}, - "End|C-e" : {command: "goorselect", args: ["gotolineend","selecttolineend"]}, - "C-Home|S-M-,": {command: "goorselect", args: ["gotostart","selecttostart"]}, - "C-End|S-M-." : {command: "goorselect", args: ["gotoend","selecttoend"]}, - "S-Up|S-C-p" : "selectup", - "S-Down|S-C-n" : "selectdown", - "S-Left|S-C-b" : "selectleft", - "S-Right|S-C-f" : "selectright", - "S-C-Left|S-M-b" : "selectwordleft", - "S-C-Right|S-M-f" : "selectwordright", - "S-Home|S-C-a" : "selecttolinestart", - "S-End|S-C-e" : "selecttolineend", - "S-C-Home" : "selecttostart", - "S-C-End" : "selecttoend", - - "C-l" : "recenterTopBottom", - "M-s" : "centerselection", - "M-g": "gotoline", - "C-x C-p": "selectall", - "C-Down": {command: "goorselect", args: ["gotopagedown","selectpagedown"]}, - "C-Up": {command: "goorselect", args: ["gotopageup","selectpageup"]}, - "PageDown|C-v": {command: "goorselect", args: ["gotopagedown","selectpagedown"]}, - "PageUp|M-v": {command: "goorselect", args: ["gotopageup","selectpageup"]}, - "S-C-Down": "selectpagedown", - "S-C-Up": "selectpageup", - - "C-s": "iSearch", - "C-r": "iSearchBackwards", - - "M-C-s": "findnext", - "M-C-r": "findprevious", - "S-M-5": "replace", - "Backspace": "backspace", - "Delete|C-d": "del", - "Return|C-m": {command: "insertstring", args: "\n"}, // "newline" - "C-o": "splitline", - - "M-d|C-Delete": {command: "killWord", args: "right"}, - "C-Backspace|M-Backspace|M-Delete": {command: "killWord", args: "left"}, - "C-k": "killLine", - - "C-y|S-Delete": "yank", - "M-y": "yankRotate", - "C-g": "keyboardQuit", - - "C-w": "killRegion", - "M-w": "killRingSave", - "C-Space": "setMark", - "C-x C-x": "exchangePointAndMark", - - "C-t": "transposeletters", - "M-u": "touppercase", // Doesn't work - "M-l": "tolowercase", - "M-/": "autocomplete", // Doesn't work - "C-u": "universalArgument", - - "M-;": "togglecomment", - - "C-/|C-x u|S-C--|C-z": "undo", - "S-C-/|S-C-x u|C--|S-C-z": "redo", //infinite undo? - "C-x r": "selectRectangularRegion", - "M-x": {command: "focusCommandLine", args: "M-x "} -}; - - -exports.handler.bindKeys(exports.emacsKeys); - -exports.handler.addCommands({ - recenterTopBottom: function(editor) { - var renderer = editor.renderer; - var pos = renderer.$cursorLayer.getPixelPosition(); - var h = renderer.$size.scrollerHeight - renderer.lineHeight; - var scrollTop = renderer.scrollTop; - if (Math.abs(pos.top - scrollTop) < 2) { - scrollTop = pos.top - h; - } else if (Math.abs(pos.top - scrollTop - h * 0.5) < 2) { - scrollTop = pos.top; - } else { - scrollTop = pos.top - h * 0.5; - } - editor.session.setScrollTop(scrollTop); - }, - selectRectangularRegion: function(editor) { - editor.multiSelect.toggleBlockSelection(); - }, - setMark: { - exec: function(editor, args) { - if (args && args.count) { - var mark = editor.popEmacsMark(); - mark && editor.selection.moveCursorToPosition(mark); - return; - } - - var mark = editor.emacsMark(), - transientMarkModeActive = true; - if (transientMarkModeActive && (mark || !editor.selection.isEmpty())) { - editor.pushEmacsMark(); - editor.clearSelection(); - return; - } - - if (mark) { - var cp = editor.getCursorPosition(); - if (editor.selection.isEmpty() && - mark.row == cp.row && mark.column == cp.column) { - editor.pushEmacsMark(); - return; - } - } - mark = editor.getCursorPosition(); - editor.setEmacsMark(mark); - editor.selection.setSelectionAnchor(mark.row, mark.column); - }, - readonly: true, - handlesCount: true, - multiSelectAction: "forEach" - }, - exchangePointAndMark: { - exec: function(editor, args) { - var sel = editor.selection; - if (args.count) { - var pos = editor.getCursorPosition(); - sel.clearSelection(); - sel.moveCursorToPosition(editor.popEmacsMark()); - editor.pushEmacsMark(pos); - return; - } - var lastMark = editor.getLastEmacsMark(); - var range = sel.getRange(); - if (range.isEmpty()) { - sel.selectToPosition(lastMark); - return; - } - sel.setSelectionRange(range, !sel.isBackwards()); - }, - readonly: true, - handlesCount: true, - multiSelectAction: "forEach" - }, - killWord: { - exec: function(editor, dir) { - editor.clearSelection(); - if (dir == "left") - editor.selection.selectWordLeft(); - else - editor.selection.selectWordRight(); - - var range = editor.getSelectionRange(); - var text = editor.session.getTextRange(range); - exports.killRing.add(text); - - editor.session.remove(range); - editor.clearSelection(); - }, - multiSelectAction: "forEach" - }, - killLine: function(editor) { - editor.pushEmacsMark(null); - var pos = editor.getCursorPosition(); - if (pos.column == 0 && - editor.session.doc.getLine(pos.row).length == 0) { - editor.selection.selectLine(); - } else { - editor.clearSelection(); - editor.selection.selectLineEnd(); - } - var range = editor.getSelectionRange(); - var text = editor.session.getTextRange(range); - exports.killRing.add(text); - - editor.session.remove(range); - editor.clearSelection(); - }, - yank: function(editor) { - editor.onPaste(exports.killRing.get() || ''); - editor.keyBinding.$data.lastCommand = "yank"; - }, - yankRotate: function(editor) { - if (editor.keyBinding.$data.lastCommand != "yank") - return; - editor.undo(); - editor.onPaste(exports.killRing.rotate()); - editor.keyBinding.$data.lastCommand = "yank"; - }, - killRegion: { - exec: function(editor) { - exports.killRing.add(editor.getCopyText()); - editor.commands.byName.cut.exec(editor); - }, - readonly: true, - multiSelectAction: "forEach" - }, - killRingSave: { - exec: function(editor) { - exports.killRing.add(editor.getCopyText()); - setTimeout(function() { - var sel = editor.selection, - range = sel.getRange(); - editor.pushEmacsMark(sel.isBackwards() ? range.end : range.start); - sel.clearSelection(); - }, 0); - }, - readonly: true - }, - keyboardQuit: function(editor) { - editor.selection.clearSelection(); - editor.setEmacsMark(null); - }, - focusCommandLine: function(editor, arg) { - if (editor.showCommandLine) - editor.showCommandLine(arg); - } -}); - -exports.handler.addCommands(iSearchCommandModule.iSearchStartCommands); - -var commands = exports.handler.commands; -commands.yank.isYank = true; -commands.yankRotate.isYank = true; - -exports.killRing = { - $data: [], - add: function(str) { - str && this.$data.push(str); - if (this.$data.length > 30) - this.$data.shift(); - }, - get: function(n) { - n = n || 1; - return this.$data.slice(this.$data.length-n, this.$data.length).reverse().join('\n'); - }, - pop: function() { - if (this.$data.length > 1) - this.$data.pop(); - return this.get(); - }, - rotate: function() { - this.$data.unshift(this.$data.pop()); - return this.get(); - } -}; - -}); - -ace.define('ace/incremental_search', ['require', 'exports', 'module' , 'ace/lib/oop', 'ace/range', 'ace/search', 'ace/search_highlight', 'ace/commands/incremental_search_commands', 'ace/lib/dom', 'ace/commands/command_manager', 'ace/editor', 'ace/config'], function(require, exports, module) { - - -var oop = require("./lib/oop"); -var Range = require("./range").Range; -var Search = require("./search").Search; -var SearchHighlight = require("./search_highlight").SearchHighlight; -var iSearchCommandModule = require("./commands/incremental_search_commands"); -var ISearchKbd = iSearchCommandModule.IncrementalSearchKeyboardHandler; -function IncrementalSearch() { - this.$options = {wrap: false, skipCurrent: false}; - this.$keyboardHandler = new ISearchKbd(this); -} - -oop.inherits(IncrementalSearch, Search); - -;(function() { - - this.activate = function(ed, backwards) { - this.$editor = ed; - this.$startPos = this.$currentPos = ed.getCursorPosition(); - this.$options.needle = ''; - this.$options.backwards = backwards; - ed.keyBinding.addKeyboardHandler(this.$keyboardHandler); - this.$mousedownHandler = ed.addEventListener('mousedown', this.onMouseDown.bind(this)); - this.selectionFix(ed); - this.statusMessage(true); - } - - this.deactivate = function(reset) { - this.cancelSearch(reset); - this.$editor.keyBinding.removeKeyboardHandler(this.$keyboardHandler); - if (this.$mousedownHandler) { - this.$editor.removeEventListener('mousedown', this.$mousedownHandler); - delete this.$mousedownHandler; - } - this.message(''); - } - - this.selectionFix = function(editor) { - if (editor.selection.isEmpty() && !editor.session.$emacsMark) { - editor.clearSelection(); - } - } - - this.highlight = function(regexp) { - var sess = this.$editor.session, - hl = sess.$isearchHighlight = sess.$isearchHighlight || sess.addDynamicMarker( - new SearchHighlight(null, "ace_isearch-result", "text")); - hl.setRegexp(regexp); - sess._emit("changeBackMarker"); // force highlight layer redraw - } - - this.cancelSearch = function(reset) { - var e = this.$editor; - this.$prevNeedle = this.$options.needle; - this.$options.needle = ''; - if (reset) { - e.moveCursorToPosition(this.$startPos); - this.$currentPos = this.$startPos; - } else { - e.pushEmacsMark && e.pushEmacsMark(this.$startPos, false); - } - this.highlight(null); - return Range.fromPoints(this.$currentPos, this.$currentPos); - } - - this.highlightAndFindWithNeedle = function(moveToNext, needleUpdateFunc) { - if (!this.$editor) return null; - var options = this.$options; - if (needleUpdateFunc) { - options.needle = needleUpdateFunc.call(this, options.needle || '') || ''; - } - if (options.needle.length === 0) { - this.statusMessage(true); - return this.cancelSearch(true); - }; - options.start = this.$currentPos; - var session = this.$editor.session, - found = this.find(session); - if (found) { - if (options.backwards) found = Range.fromPoints(found.end, found.start); - this.$editor.moveCursorToPosition(found.end); - if (moveToNext) this.$currentPos = found.end; - this.highlight(options.re) - } - - this.statusMessage(found); - - return found; - } - - this.addChar = function(c) { - return this.highlightAndFindWithNeedle(false, function(needle) { - return needle + c; - }); - } - - this.removeChar = function(c) { - return this.highlightAndFindWithNeedle(false, function(needle) { - return needle.length > 0 ? needle.substring(0, needle.length-1) : needle; - }); - } - - this.next = function(options) { - options = options || {}; - this.$options.backwards = !!options.backwards; - this.$currentPos = this.$editor.getCursorPosition(); - return this.highlightAndFindWithNeedle(true, function(needle) { - return options.useCurrentOrPrevSearch && needle.length === 0 ? - this.$prevNeedle || '' : needle; - }); - } - - this.onMouseDown = function(evt) { - this.deactivate(); - return true; - } - - this.statusMessage = function(found) { - var options = this.$options, msg = ''; - msg += options.backwards ? 'reverse-' : ''; - msg += 'isearch: ' + options.needle; - msg += found ? '' : ' (not found)'; - this.message(msg); - } - - this.message = function(msg) { - if (this.$editor.showCommandLine) { - this.$editor.showCommandLine(msg); - this.$editor.focus(); - } else { - console.log(msg); - } - } - -}).call(IncrementalSearch.prototype); - - -exports.IncrementalSearch = IncrementalSearch; - -var dom = require('./lib/dom'); -dom.importCssString && dom.importCssString("\ -.ace_marker-layer .ace_isearch-result {\ - position: absolute;\ - z-index: 6;\ - -moz-box-sizing: border-box;\ - -webkit-box-sizing: border-box;\ - box-sizing: border-box;\ -}\ -div.ace_isearch-result {\ - border-radius: 4px;\ - background-color: rgba(255, 200, 0, 0.5);\ - box-shadow: 0 0 4px rgb(255, 200, 0);\ -}\ -.ace_dark div.ace_isearch-result {\ - background-color: rgb(100, 110, 160);\ - box-shadow: 0 0 4px rgb(80, 90, 140);\ -}", "incremental-search-highlighting"); -var commands = require("./commands/command_manager"); -(function() { - this.setupIncrementalSearch = function(editor, val) { - if (this.usesIncrementalSearch == val) return; - this.usesIncrementalSearch = val; - var iSearchCommands = iSearchCommandModule.iSearchStartCommands; - var method = val ? 'addCommands' : 'removeCommands'; - this[method](iSearchCommands); - }; -}).call(commands.CommandManager.prototype); -var Editor = require("./editor").Editor; -require("./config").defineOptions(Editor.prototype, "editor", { - useIncrementalSearch: { - set: function(val) { - this.keyBinding.$handlers.forEach(function(handler) { - if (handler.setupIncrementalSearch) { - handler.setupIncrementalSearch(this, val); - } - }); - this._emit('incrementalSearchSettingChanged', {isEnabled: val}); - } - } -}); - -}); - -ace.define('ace/commands/incremental_search_commands', ['require', 'exports', 'module' , 'ace/config', 'ace/lib/oop', 'ace/keyboard/hash_handler', 'ace/commands/occur_commands'], function(require, exports, module) { - -var config = require("../config"); -var oop = require("../lib/oop"); -var HashHandler = require("../keyboard/hash_handler").HashHandler; -var occurStartCommand = require("./occur_commands").occurStartCommand; -exports.iSearchStartCommands = [{ - name: "iSearch", - bindKey: {win: "Ctrl-F", mac: "Command-F"}, - exec: function(editor, options) { - config.loadModule(["core", "ace/incremental_search"], function(e) { - var iSearch = e.iSearch = e.iSearch || new e.IncrementalSearch(); - iSearch.activate(editor, options.backwards); - if (options.jumpToFirstMatch) iSearch.next(options); - }); - }, - readOnly: true -}, { - name: "iSearchBackwards", - exec: function(editor, jumpToNext) { editor.execCommand('iSearch', {backwards: true}); }, - readOnly: true -}, { - name: "iSearchAndGo", - bindKey: {win: "Ctrl-K", mac: "Command-G"}, - exec: function(editor, jumpToNext) { editor.execCommand('iSearch', {jumpToFirstMatch: true, useCurrentOrPrevSearch: true}); }, - readOnly: true -}, { - name: "iSearchBackwardsAndGo", - bindKey: {win: "Ctrl-Shift-K", mac: "Command-Shift-G"}, - exec: function(editor) { editor.execCommand('iSearch', {jumpToFirstMatch: true, backwards: true, useCurrentOrPrevSearch: true}); }, - readOnly: true -}]; -exports.iSearchCommands = [{ - name: "restartSearch", - bindKey: {win: "Ctrl-F", mac: "Command-F"}, - exec: function(iSearch) { - iSearch.cancelSearch(true); - }, - readOnly: true, - isIncrementalSearchCommand: true -}, { - name: "searchForward", - bindKey: {win: "Ctrl-S|Ctrl-K", mac: "Ctrl-S|Command-G"}, - exec: function(iSearch, options) { - options.useCurrentOrPrevSearch = true; - iSearch.next(options); - }, - readOnly: true, - isIncrementalSearchCommand: true -}, { - name: "searchBackward", - bindKey: {win: "Ctrl-R|Ctrl-Shift-K", mac: "Ctrl-R|Command-Shift-G"}, - exec: function(iSearch, options) { - options.useCurrentOrPrevSearch = true; - options.backwards = true; - iSearch.next(options); - }, - readOnly: true, - isIncrementalSearchCommand: true -}, { - name: "extendSearchTerm", - exec: function(iSearch, string) { - iSearch.addChar(string); - }, - readOnly: true, - isIncrementalSearchCommand: true -}, { - name: "extendSearchTermSpace", - bindKey: "space", - exec: function(iSearch) { iSearch.addChar(' '); }, - readOnly: true, - isIncrementalSearchCommand: true -}, { - name: "shrinkSearchTerm", - bindKey: "backspace", - exec: function(iSearch) { - iSearch.removeChar(); - }, - readOnly: true, - isIncrementalSearchCommand: true -}, { - name: 'confirmSearch', - bindKey: 'return', - exec: function(iSearch) { iSearch.deactivate(); }, - readOnly: true, - isIncrementalSearchCommand: true -}, { - name: 'cancelSearch', - bindKey: 'esc|Ctrl-G', - exec: function(iSearch) { iSearch.deactivate(true); }, - readOnly: true, - isIncrementalSearchCommand: true -}, { - name: 'occurisearch', - bindKey: 'Ctrl-O', - exec: function(iSearch) { - var options = oop.mixin({}, iSearch.$options); - iSearch.deactivate(); - occurStartCommand.exec(iSearch.$editor, options); - }, - readOnly: true, - isIncrementalSearchCommand: true -}]; - -function IncrementalSearchKeyboardHandler(iSearch) { - this.$iSearch = iSearch; -} - -oop.inherits(IncrementalSearchKeyboardHandler, HashHandler); - -;(function() { - - this.attach = function(editor) { - var iSearch = this.$iSearch; - HashHandler.call(this, exports.iSearchCommands, editor.commands.platform); - this.$commandExecHandler = editor.commands.addEventListener('exec', function(e) { - if (!e.command.isIncrementalSearchCommand) return undefined; - e.stopPropagation(); - e.preventDefault(); - return e.command.exec(iSearch, e.args || {}); - }); - } - - this.detach = function(editor) { - if (!this.$commandExecHandler) return; - editor.commands.removeEventListener('exec', this.$commandExecHandler); - delete this.$commandExecHandler; - } - - var handleKeyboard$super = this.handleKeyboard; - this.handleKeyboard = function(data, hashId, key, keyCode) { - var cmd = handleKeyboard$super.call(this, data, hashId, key, keyCode); - if (cmd.command) { return cmd; } - if (hashId == -1) { - var extendCmd = this.commands.extendSearchTerm; - if (extendCmd) { return {command: extendCmd, args: key}; } - } - return {command: "null", passEvent: hashId == 0 || hashId == 4}; - } - -}).call(IncrementalSearchKeyboardHandler.prototype); - - -exports.IncrementalSearchKeyboardHandler = IncrementalSearchKeyboardHandler; - -}); - -ace.define('ace/commands/occur_commands', ['require', 'exports', 'module' , 'ace/config', 'ace/occur', 'ace/keyboard/hash_handler', 'ace/lib/oop'], function(require, exports, module) { - -var config = require("../config"), - Occur = require("../occur").Occur; -var occurStartCommand = { - name: "occur", - exec: function(editor, options) { - var alreadyInOccur = !!editor.session.$occur; - var occurSessionActive = new Occur().enter(editor, options); - if (occurSessionActive && !alreadyInOccur) - OccurKeyboardHandler.installIn(editor); - }, - readOnly: true -}; - -var occurCommands = [{ - name: "occurexit", - bindKey: 'esc|Ctrl-G', - exec: function(editor) { - var occur = editor.session.$occur; - if (!occur) return; - occur.exit(editor, {}); - if (!editor.session.$occur) OccurKeyboardHandler.uninstallFrom(editor); - }, - readOnly: true -}, { - name: "occuraccept", - bindKey: 'enter', - exec: function(editor) { - var occur = editor.session.$occur; - if (!occur) return; - occur.exit(editor, {translatePosition: true}); - if (!editor.session.$occur) OccurKeyboardHandler.uninstallFrom(editor); - }, - readOnly: true -}]; - -var HashHandler = require("../keyboard/hash_handler").HashHandler; -var oop = require("../lib/oop"); - - -function OccurKeyboardHandler() {} - -oop.inherits(OccurKeyboardHandler, HashHandler); - -;(function() { - - this.isOccurHandler = true; - - this.attach = function(editor) { - HashHandler.call(this, occurCommands, editor.commands.platform); - this.$editor = editor; - } - - var handleKeyboard$super = this.handleKeyboard; - this.handleKeyboard = function(data, hashId, key, keyCode) { - var cmd = handleKeyboard$super.call(this, data, hashId, key, keyCode); - return (cmd && cmd.command) ? cmd : undefined; - } - -}).call(OccurKeyboardHandler.prototype); - -OccurKeyboardHandler.installIn = function(editor) { - var handler = new this(); - editor.keyBinding.addKeyboardHandler(handler); - editor.commands.addCommands(occurCommands); -} - -OccurKeyboardHandler.uninstallFrom = function(editor) { - editor.commands.removeCommands(occurCommands); - var handler = editor.getKeyboardHandler(); - if (handler.isOccurHandler) - editor.keyBinding.removeKeyboardHandler(handler); -} - -exports.occurStartCommand = occurStartCommand; - -}); - -ace.define('ace/occur', ['require', 'exports', 'module' , 'ace/lib/oop', 'ace/range', 'ace/search', 'ace/edit_session', 'ace/search_highlight', 'ace/lib/dom'], function(require, exports, module) { - - -var oop = require("./lib/oop"); -var Range = require("./range").Range; -var Search = require("./search").Search; -var EditSession = require("./edit_session").EditSession; -var SearchHighlight = require("./search_highlight").SearchHighlight; -function Occur() {} - -oop.inherits(Occur, Search); - -(function() { - this.enter = function(editor, options) { - if (!options.needle) return false; - var pos = editor.getCursorPosition(); - this.displayOccurContent(editor, options); - var translatedPos = this.originalToOccurPosition(editor.session, pos); - editor.moveCursorToPosition(translatedPos); - return true; - } - this.exit = function(editor, options) { - var pos = options.translatePosition && editor.getCursorPosition(); - var translatedPos = pos && this.occurToOriginalPosition(editor.session, pos); - this.displayOriginalContent(editor); - if (translatedPos) - editor.moveCursorToPosition(translatedPos); - return true; - } - - this.highlight = function(sess, regexp) { - var hl = sess.$occurHighlight = sess.$occurHighlight || sess.addDynamicMarker( - new SearchHighlight(null, "ace_occur-highlight", "text")); - hl.setRegexp(regexp); - sess._emit("changeBackMarker"); // force highlight layer redraw - } - - this.displayOccurContent = function(editor, options) { - this.$originalSession = editor.session; - var found = this.matchingLines(editor.session, options); - var lines = found.map(function(foundLine) { return foundLine.content; }); - var occurSession = new EditSession(lines.join('\n')); - occurSession.$occur = this; - occurSession.$occurMatchingLines = found; - editor.setSession(occurSession); - this.highlight(occurSession, options.re); - occurSession._emit('changeBackMarker'); - } - - this.displayOriginalContent = function(editor) { - editor.setSession(this.$originalSession); - } - this.originalToOccurPosition = function(session, pos) { - var lines = session.$occurMatchingLines; - var nullPos = {row: 0, column: 0}; - if (!lines) return nullPos; - for (var i = 0; i < lines.length; i++) { - if (lines[i].row === pos.row) - return {row: i, column: pos.column}; - } - return nullPos; - } - this.occurToOriginalPosition = function(session, pos) { - var lines = session.$occurMatchingLines; - if (!lines || !lines[pos.row]) - return pos; - return {row: lines[pos.row].row, column: pos.column}; - } - - this.matchingLines = function(session, options) { - options = oop.mixin({}, options); - if (!session || !options.needle) return []; - var search = new Search(); - search.set(options); - return search.findAll(session).reduce(function(lines, range) { - var row = range.start.row; - var last = lines[lines.length-1]; - return last && last.row === row ? - lines : - lines.concat({row: row, content: session.getLine(row)}); - }, []); - } - -}).call(Occur.prototype); - -var dom = require('./lib/dom'); -dom.importCssString(".ace_occur-highlight {\n\ - border-radius: 4px;\n\ - background-color: rgba(87, 255, 8, 0.25);\n\ - position: absolute;\n\ - z-index: 4;\n\ - -moz-box-sizing: border-box;\n\ - -webkit-box-sizing: border-box;\n\ - box-sizing: border-box;\n\ - box-shadow: 0 0 4px rgb(91, 255, 50);\n\ -}\n\ -.ace_dark .ace_occur-highlight {\n\ - background-color: rgb(80, 140, 85);\n\ - box-shadow: 0 0 4px rgb(60, 120, 70);\n\ -}\n", "incremental-occur-highlighting"); - -exports.Occur = Occur; - -}); diff --git a/IDE/jsrealb-ide/ace-src-noconflict/keybinding-vim.js b/IDE/jsrealb-ide/ace-src-noconflict/keybinding-vim.js deleted file mode 100644 index 9c665af7..00000000 --- a/IDE/jsrealb-ide/ace-src-noconflict/keybinding-vim.js +++ /dev/null @@ -1,1759 +0,0 @@ -/* ***** BEGIN LICENSE BLOCK ***** - * Distributed under the BSD license: - * - * Copyright (c) 2010, Ajax.org B.V. - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are met: - * * Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * * Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * * Neither the name of Ajax.org B.V. nor the - * names of its contributors may be used to endorse or promote products - * derived from this software without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND - * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED - * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE - * DISCLAIMED. IN NO EVENT SHALL AJAX.ORG B.V. BE LIABLE FOR ANY - * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES - * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; - * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND - * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - * - * ***** END LICENSE BLOCK ***** */ - -ace.define('ace/keyboard/vim', ['require', 'exports', 'module' , 'ace/keyboard/vim/commands', 'ace/keyboard/vim/maps/util', 'ace/lib/useragent'], function(require, exports, module) { - - -var cmds = require("./vim/commands"); -var coreCommands = cmds.coreCommands; -var util = require("./vim/maps/util"); -var useragent = require("../lib/useragent"); - -var startCommands = { - "i": { - command: coreCommands.start - }, - "I": { - command: coreCommands.startBeginning - }, - "a": { - command: coreCommands.append - }, - "A": { - command: coreCommands.appendEnd - }, - "ctrl-f": { - command: "gotopagedown" - }, - "ctrl-b": { - command: "gotopageup" - } -}; - -exports.handler = { - $id: "ace/keyboard/vim", - handleMacRepeat: function(data, hashId, key) { - if (hashId == -1) { - data.inputChar = key; - data.lastEvent = "input"; - } else if (data.inputChar && data.$lastHash == hashId && data.$lastKey == key) { - if (data.lastEvent == "input") { - data.lastEvent = "input1"; - } else if (data.lastEvent == "input1") { - return true; - } - } else { - data.$lastHash = hashId; - data.$lastKey = key; - data.lastEvent = "keypress"; - } - }, - updateMacCompositionHandlers: function(editor, enable) { - var onCompositionUpdateOverride = function(text) { - if (util.currentMode !== "insert") { - var el = this.textInput.getElement(); - el.blur(); - el.focus(); - el.value = text; - } else { - this.onCompositionUpdateOrig(text); - } - }; - var onCompositionStartOverride = function(text) { - if (util.currentMode === "insert") { - this.onCompositionStartOrig(text); - } - } - if (enable) { - if (!editor.onCompositionUpdateOrig) { - editor.onCompositionUpdateOrig = editor.onCompositionUpdate; - editor.onCompositionUpdate = onCompositionUpdateOverride; - editor.onCompositionStartOrig = editor.onCompositionStart; - editor.onCompositionStart = onCompositionStartOverride; - } - } else { - if (editor.onCompositionUpdateOrig) { - editor.onCompositionUpdate = editor.onCompositionUpdateOrig; - editor.onCompositionUpdateOrig = null; - editor.onCompositionStart = editor.onCompositionStartOrig; - editor.onCompositionStartOrig = null; - } - } - }, - - handleKeyboard: function(data, hashId, key, keyCode, e) { - if (hashId != 0 && (key == "" || key == "\x00")) - return null; - - var editor = data.editor; - - if (hashId == 1) - key = "ctrl-" + key; - if (key == "ctrl-c") { - if (!useragent.isMac && editor.getCopyText()) { - editor.once("copy", function() { - if (data.state == "start") - coreCommands.stop.exec(editor); - else - editor.selection.clearSelection(); - }); - return {command: "null", passEvent: true}; - } - return {command: coreCommands.stop}; - } else if ((key == "esc" && hashId == 0) || key == "ctrl-[") { - return {command: coreCommands.stop}; - } else if (data.state == "start") { - if (useragent.isMac && this.handleMacRepeat(data, hashId, key)) { - hashId = -1; - key = data.inputChar; - } - - if (hashId == -1 || hashId == 1 || hashId == 0 && key.length > 1) { - if (cmds.inputBuffer.idle && startCommands[key]) - return startCommands[key]; - cmds.inputBuffer.push(editor, key); - return {command: "null", passEvent: false}; - } // if no modifier || shift: wait for input. - else if (key.length == 1 && (hashId == 0 || hashId == 4)) { - return {command: "null", passEvent: true}; - } else if (key == "esc" && hashId == 0) { - return {command: coreCommands.stop}; - } - } else { - if (key == "ctrl-w") { - return {command: "removewordleft"}; - } - } - }, - - attach: function(editor) { - editor.on("click", exports.onCursorMove); - if (util.currentMode !== "insert") - cmds.coreCommands.stop.exec(editor); - editor.$vimModeHandler = this; - - this.updateMacCompositionHandlers(editor, true); - }, - - detach: function(editor) { - editor.removeListener("click", exports.onCursorMove); - util.noMode(editor); - util.currentMode = "normal"; - this.updateMacCompositionHandlers(editor, false); - }, - - actions: cmds.actions, - getStatusText: function() { - if (util.currentMode == "insert") - return "INSERT"; - if (util.onVisualMode) - return (util.onVisualLineMode ? "VISUAL LINE " : "VISUAL ") + cmds.inputBuffer.status; - return cmds.inputBuffer.status; - } -}; - - -exports.onCursorMove = function(e) { - cmds.onCursorMove(e.editor, e); - exports.onCursorMove.scheduled = false; -}; - -}); - -ace.define('ace/keyboard/vim/commands', ['require', 'exports', 'module' , 'ace/lib/lang', 'ace/keyboard/vim/maps/util', 'ace/keyboard/vim/maps/motions', 'ace/keyboard/vim/maps/operators', 'ace/keyboard/vim/maps/aliases', 'ace/keyboard/vim/registers'], function(require, exports, module) { - -"never use strict"; - -var lang = require("../../lib/lang"); -var util = require("./maps/util"); -var motions = require("./maps/motions"); -var operators = require("./maps/operators"); -var alias = require("./maps/aliases"); -var registers = require("./registers"); - -var NUMBER = 1; -var OPERATOR = 2; -var MOTION = 3; -var ACTION = 4; -var HMARGIN = 8; // Minimum amount of line separation between margins; - -var repeat = function repeat(fn, count, args) { - while (0 < count--) - fn.apply(this, args); -}; - -var ensureScrollMargin = function(editor) { - var renderer = editor.renderer; - var pos = renderer.$cursorLayer.getPixelPosition(); - - var top = pos.top; - - var margin = HMARGIN * renderer.layerConfig.lineHeight; - if (2 * margin > renderer.$size.scrollerHeight) - margin = renderer.$size.scrollerHeight / 2; - - if (renderer.scrollTop > top - margin) { - renderer.session.setScrollTop(top - margin); - } - - if (renderer.scrollTop + renderer.$size.scrollerHeight < top + margin + renderer.lineHeight) { - renderer.session.setScrollTop(top + margin + renderer.lineHeight - renderer.$size.scrollerHeight); - } -}; - -var actions = exports.actions = { - "z": { - param: true, - fn: function(editor, range, count, param) { - switch (param) { - case "z": - editor.renderer.alignCursor(null, 0.5); - break; - case "t": - editor.renderer.alignCursor(null, 0); - break; - case "b": - editor.renderer.alignCursor(null, 1); - break; - case "c": - editor.session.onFoldWidgetClick(range.start.row, {domEvent:{target :{}}}); - break; - case "o": - editor.session.onFoldWidgetClick(range.start.row, {domEvent:{target :{}}}); - break; - case "C": - editor.session.foldAll(); - break; - case "O": - editor.session.unfold(); - break; - } - } - }, - "r": { - param: true, - fn: function(editor, range, count, param) { - if (param && param.length) { - if (param.length > 1) - param = param == "return" ? "\n" : param == "tab" ? "\t" : param; - repeat(function() { editor.insert(param); }, count || 1); - editor.navigateLeft(); - } - } - }, - "R": { - fn: function(editor, range, count, param) { - util.insertMode(editor); - editor.setOverwrite(true); - } - }, - "~": { - fn: function(editor, range, count) { - repeat(function() { - var range = editor.selection.getRange(); - if (range.isEmpty()) - range.end.column++; - var text = editor.session.getTextRange(range); - var toggled = text.toUpperCase(); - if (toggled == text) - editor.navigateRight(); - else - editor.session.replace(range, toggled); - }, count || 1); - } - }, - "*": { - fn: function(editor, range, count, param) { - editor.selection.selectWord(); - editor.findNext(); - ensureScrollMargin(editor); - var r = editor.selection.getRange(); - editor.selection.setSelectionRange(r, true); - } - }, - "#": { - fn: function(editor, range, count, param) { - editor.selection.selectWord(); - editor.findPrevious(); - ensureScrollMargin(editor); - var r = editor.selection.getRange(); - editor.selection.setSelectionRange(r, true); - } - }, - "m": { - param: true, - fn: function(editor, range, count, param) { - var s = editor.session; - var markers = s.vimMarkers || (s.vimMarkers = {}); - var c = editor.getCursorPosition(); - if (!markers[param]) { - markers[param] = editor.session.doc.createAnchor(c); - } - markers[param].setPosition(c.row, c.column, true); - } - }, - "n": { - fn: function(editor, range, count, param) { - var options = editor.getLastSearchOptions(); - options.backwards = false; - - editor.selection.moveCursorRight(); - editor.selection.clearSelection(); - editor.findNext(options); - - ensureScrollMargin(editor); - var r = editor.selection.getRange(); - r.end.row = r.start.row; - r.end.column = r.start.column; - editor.selection.setSelectionRange(r, true); - } - }, - "N": { - fn: function(editor, range, count, param) { - var options = editor.getLastSearchOptions(); - options.backwards = true; - - editor.findPrevious(options); - ensureScrollMargin(editor); - var r = editor.selection.getRange(); - r.end.row = r.start.row; - r.end.column = r.start.column; - editor.selection.setSelectionRange(r, true); - } - }, - "v": { - fn: function(editor, range, count, param) { - editor.selection.selectRight(); - util.visualMode(editor, false); - }, - acceptsMotion: true - }, - "V": { - fn: function(editor, range, count, param) { - var row = editor.getCursorPosition().row; - editor.selection.clearSelection(); - editor.selection.moveCursorTo(row, 0); - editor.selection.selectLineEnd(); - editor.selection.visualLineStart = row; - - util.visualMode(editor, true); - }, - acceptsMotion: true - }, - "Y": { - fn: function(editor, range, count, param) { - util.copyLine(editor); - } - }, - "p": { - fn: function(editor, range, count, param) { - var defaultReg = registers._default; - - editor.setOverwrite(false); - if (defaultReg.isLine) { - var pos = editor.getCursorPosition(); - pos.column = editor.session.getLine(pos.row).length; - var text = lang.stringRepeat("\n" + defaultReg.text, count || 1); - editor.session.insert(pos, text); - editor.moveCursorTo(pos.row + 1, 0); - } - else { - editor.navigateRight(); - editor.insert(lang.stringRepeat(defaultReg.text, count || 1)); - editor.navigateLeft(); - } - editor.setOverwrite(true); - editor.selection.clearSelection(); - } - }, - "P": { - fn: function(editor, range, count, param) { - var defaultReg = registers._default; - editor.setOverwrite(false); - - if (defaultReg.isLine) { - var pos = editor.getCursorPosition(); - pos.column = 0; - var text = lang.stringRepeat(defaultReg.text + "\n", count || 1); - editor.session.insert(pos, text); - editor.moveCursorToPosition(pos); - } - else { - editor.insert(lang.stringRepeat(defaultReg.text, count || 1)); - } - editor.setOverwrite(true); - editor.selection.clearSelection(); - } - }, - "J": { - fn: function(editor, range, count, param) { - var session = editor.session; - range = editor.getSelectionRange(); - var pos = {row: range.start.row, column: range.start.column}; - count = count || range.end.row - range.start.row; - var maxRow = Math.min(pos.row + (count || 1), session.getLength() - 1); - - range.start.column = session.getLine(pos.row).length; - range.end.column = session.getLine(maxRow).length; - range.end.row = maxRow; - - var text = ""; - for (var i = pos.row; i < maxRow; i++) { - var nextLine = session.getLine(i + 1); - text += " " + /^\s*(.*)$/.exec(nextLine)[1] || ""; - } - - session.replace(range, text); - editor.moveCursorTo(pos.row, pos.column); - } - }, - "u": { - fn: function(editor, range, count, param) { - count = parseInt(count || 1, 10); - for (var i = 0; i < count; i++) { - editor.undo(); - } - editor.selection.clearSelection(); - } - }, - "ctrl-r": { - fn: function(editor, range, count, param) { - count = parseInt(count || 1, 10); - for (var i = 0; i < count; i++) { - editor.redo(); - } - editor.selection.clearSelection(); - } - }, - ":": { - fn: function(editor, range, count, param) { - var val = ":"; - if (count > 1) - val = ".,.+" + count + val; - if (editor.showCommandLine) - editor.showCommandLine(val); - } - }, - "/": { - fn: function(editor, range, count, param) { - if (editor.showCommandLine) - editor.showCommandLine("/"); - } - }, - "?": { - fn: function(editor, range, count, param) { - if (editor.showCommandLine) - editor.showCommandLine("?"); - } - }, - ".": { - fn: function(editor, range, count, param) { - util.onInsertReplaySequence = inputBuffer.lastInsertCommands; - var previous = inputBuffer.previous; - if (previous) // If there is a previous action - inputBuffer.exec(editor, previous.action, previous.param); - } - }, - "ctrl-x": { - fn: function(editor, range, count, param) { - editor.modifyNumber(-(count || 1)); - } - }, - "ctrl-a": { - fn: function(editor, range, count, param) { - editor.modifyNumber(count || 1); - } - } -}; - -var inputBuffer = exports.inputBuffer = { - accepting: [NUMBER, OPERATOR, MOTION, ACTION], - currentCmd: null, - currentCount: "", - status: "", - operator: null, - motion: null, - - lastInsertCommands: [], - - push: function(editor, ch, keyId) { - var status = this.status; - var isKeyHandled = true; - this.idle = false; - var wObj = this.waitingForParam; - if (/^numpad\d+$/i.test(ch)) - ch = ch.substr(6); - - if (wObj) { - this.exec(editor, wObj, ch); - } - else if (!(ch === "0" && !this.currentCount.length) && - (/^\d+$/.test(ch) && this.isAccepting(NUMBER))) { - this.currentCount += ch; - this.currentCmd = NUMBER; - this.accepting = [NUMBER, OPERATOR, MOTION, ACTION]; - } - else if (!this.operator && this.isAccepting(OPERATOR) && operators[ch]) { - this.operator = { - ch: ch, - count: this.getCount() - }; - this.currentCmd = OPERATOR; - this.accepting = [NUMBER, MOTION, ACTION]; - this.exec(editor, { operator: this.operator }); - } - else if (motions[ch] && this.isAccepting(MOTION)) { - this.currentCmd = MOTION; - - var ctx = { - operator: this.operator, - motion: { - ch: ch, - count: this.getCount() - } - }; - - if (motions[ch].param) - this.waitForParam(ctx); - else - this.exec(editor, ctx); - } - else if (alias[ch] && this.isAccepting(MOTION)) { - alias[ch].operator.count = this.getCount(); - this.exec(editor, alias[ch]); - } - else if (actions[ch] && this.isAccepting(ACTION)) { - var actionObj = { - action: { - fn: actions[ch].fn, - count: this.getCount() - } - }; - - if (actions[ch].param) { - this.waitForParam(actionObj); - } - else { - this.exec(editor, actionObj); - } - - if (actions[ch].acceptsMotion) - this.idle = false; - } - else if (this.operator) { - this.operator.count = this.getCount(); - this.exec(editor, { operator: this.operator }, ch); - } - else { - isKeyHandled = ch.length == 1; - this.reset(); - } - - if (this.waitingForParam || this.motion || this.operator) { - this.status += ch; - } else if (this.currentCount) { - this.status = this.currentCount; - } else if (this.status) { - this.status = ""; - } - if (this.status != status) - editor._emit("changeStatus"); - return isKeyHandled; - }, - - waitForParam: function(cmd) { - this.waitingForParam = cmd; - }, - - getCount: function() { - var count = this.currentCount; - this.currentCount = ""; - return count && parseInt(count, 10); - }, - - exec: function(editor, action, param) { - var m = action.motion; - var o = action.operator; - var a = action.action; - - if (!param) - param = action.param; - - if (o) { - this.previous = { - action: action, - param: param - }; - } - - if (o && !editor.selection.isEmpty()) { - if (operators[o.ch].selFn) { - operators[o.ch].selFn(editor, editor.getSelectionRange(), o.count, param); - this.reset(); - } - return; - } - else if (!m && !a && o && param) { - operators[o.ch].fn(editor, null, o.count, param); - this.reset(); - } - else if (m) { - var run = function(fn) { - if (fn && typeof fn === "function") { // There should always be a motion - if (m.count && !motionObj.handlesCount) - repeat(fn, m.count, [editor, null, m.count, param]); - else - fn(editor, null, m.count, param); - } - }; - - var motionObj = motions[m.ch]; - var selectable = motionObj.sel; - - if (!o) { - if ((util.onVisualMode || util.onVisualLineMode) && selectable) - run(motionObj.sel); - else - run(motionObj.nav); - } - else if (selectable) { - repeat(function() { - run(motionObj.sel); - operators[o.ch].fn(editor, editor.getSelectionRange(), o.count, param); - }, o.count || 1); - } - this.reset(); - } - else if (a) { - a.fn(editor, editor.getSelectionRange(), a.count, param); - this.reset(); - } - handleCursorMove(editor); - }, - - isAccepting: function(type) { - return this.accepting.indexOf(type) !== -1; - }, - - reset: function() { - this.operator = null; - this.motion = null; - this.currentCount = ""; - this.status = ""; - this.accepting = [NUMBER, OPERATOR, MOTION, ACTION]; - this.idle = true; - this.waitingForParam = null; - } -}; - -function setPreviousCommand(fn) { - inputBuffer.previous = { action: { action: { fn: fn } } }; -} - -exports.coreCommands = { - start: { - exec: function start(editor) { - util.insertMode(editor); - setPreviousCommand(start); - } - }, - startBeginning: { - exec: function startBeginning(editor) { - editor.navigateLineStart(); - util.insertMode(editor); - setPreviousCommand(startBeginning); - } - }, - stop: { - exec: function stop(editor) { - inputBuffer.reset(); - util.onVisualMode = false; - util.onVisualLineMode = false; - inputBuffer.lastInsertCommands = util.normalMode(editor); - } - }, - append: { - exec: function append(editor) { - var pos = editor.getCursorPosition(); - var lineLen = editor.session.getLine(pos.row).length; - if (lineLen) - editor.navigateRight(); - util.insertMode(editor); - setPreviousCommand(append); - } - }, - appendEnd: { - exec: function appendEnd(editor) { - editor.navigateLineEnd(); - util.insertMode(editor); - setPreviousCommand(appendEnd); - } - } -}; - -var handleCursorMove = exports.onCursorMove = function(editor, e) { - if (util.currentMode === 'insert' || handleCursorMove.running) - return; - else if(!editor.selection.isEmpty()) { - handleCursorMove.running = true; - if (util.onVisualLineMode) { - var originRow = editor.selection.visualLineStart; - var cursorRow = editor.getCursorPosition().row; - if(originRow <= cursorRow) { - var endLine = editor.session.getLine(cursorRow); - editor.selection.clearSelection(); - editor.selection.moveCursorTo(originRow, 0); - editor.selection.selectTo(cursorRow, endLine.length); - } else { - var endLine = editor.session.getLine(originRow); - editor.selection.clearSelection(); - editor.selection.moveCursorTo(originRow, endLine.length); - editor.selection.selectTo(cursorRow, 0); - } - } - handleCursorMove.running = false; - return; - } - else { - if (e && (util.onVisualLineMode || util.onVisualMode)) { - editor.selection.clearSelection(); - util.normalMode(editor); - } - - handleCursorMove.running = true; - var pos = editor.getCursorPosition(); - var lineLen = editor.session.getLine(pos.row).length; - - if (lineLen && pos.column === lineLen) - editor.navigateLeft(); - handleCursorMove.running = false; - } -}; -}); -ace.define('ace/keyboard/vim/maps/util', ['require', 'exports', 'module' , 'ace/keyboard/vim/registers', 'ace/lib/dom'], function(require, exports, module) { -var registers = require("../registers"); - -var dom = require("../../../lib/dom"); -dom.importCssString('.insert-mode .ace_cursor{\ - border-left: 2px solid #333333;\ -}\ -.ace_dark.insert-mode .ace_cursor{\ - border-left: 2px solid #eeeeee;\ -}\ -.normal-mode .ace_cursor{\ - border: 0!important;\ - background-color: red;\ - opacity: 0.5;\ -}', 'vimMode'); - -module.exports = { - onVisualMode: false, - onVisualLineMode: false, - currentMode: 'normal', - noMode: function(editor) { - editor.unsetStyle('insert-mode'); - editor.unsetStyle('normal-mode'); - if (editor.commands.recording) - editor.commands.toggleRecording(editor); - editor.setOverwrite(false); - }, - insertMode: function(editor) { - this.currentMode = 'insert'; - editor.setStyle('insert-mode'); - editor.unsetStyle('normal-mode'); - - editor.setOverwrite(false); - editor.keyBinding.$data.buffer = ""; - editor.keyBinding.$data.state = "insertMode"; - this.onVisualMode = false; - this.onVisualLineMode = false; - if(this.onInsertReplaySequence) { - editor.commands.macro = this.onInsertReplaySequence; - editor.commands.replay(editor); - this.onInsertReplaySequence = null; - this.normalMode(editor); - } else { - editor._emit("changeStatus"); - if(!editor.commands.recording) - editor.commands.toggleRecording(editor); - } - }, - normalMode: function(editor) { - this.currentMode = 'normal'; - - editor.unsetStyle('insert-mode'); - editor.setStyle('normal-mode'); - editor.clearSelection(); - - var pos; - if (!editor.getOverwrite()) { - pos = editor.getCursorPosition(); - if (pos.column > 0) - editor.navigateLeft(); - } - - editor.setOverwrite(true); - editor.keyBinding.$data.buffer = ""; - editor.keyBinding.$data.state = "start"; - this.onVisualMode = false; - this.onVisualLineMode = false; - editor._emit("changeStatus"); - if (editor.commands.recording) { - editor.commands.toggleRecording(editor); - return editor.commands.macro; - } - else { - return []; - } - }, - visualMode: function(editor, lineMode) { - if ( - (this.onVisualLineMode && lineMode) - || (this.onVisualMode && !lineMode) - ) { - this.normalMode(editor); - return; - } - - editor.setStyle('insert-mode'); - editor.unsetStyle('normal-mode'); - - editor._emit("changeStatus"); - if (lineMode) { - this.onVisualLineMode = true; - } else { - this.onVisualMode = true; - this.onVisualLineMode = false; - } - }, - getRightNthChar: function(editor, cursor, ch, n) { - var line = editor.getSession().getLine(cursor.row); - var matches = line.substr(cursor.column + 1).split(ch); - - return n < matches.length ? matches.slice(0, n).join(ch).length : null; - }, - getLeftNthChar: function(editor, cursor, ch, n) { - var line = editor.getSession().getLine(cursor.row); - var matches = line.substr(0, cursor.column).split(ch); - - return n < matches.length ? matches.slice(-1 * n).join(ch).length : null; - }, - toRealChar: function(ch) { - if (ch.length === 1) - return ch; - - if (/^shift-./.test(ch)) - return ch[ch.length - 1].toUpperCase(); - else - return ""; - }, - copyLine: function(editor) { - var pos = editor.getCursorPosition(); - editor.selection.clearSelection(); - editor.moveCursorTo(pos.row, pos.column); - editor.selection.selectLine(); - registers._default.isLine = true; - registers._default.text = editor.getCopyText().replace(/\n$/, ""); - editor.selection.clearSelection(); - editor.moveCursorTo(pos.row, pos.column); - } -}; -}); - -ace.define('ace/keyboard/vim/registers', ['require', 'exports', 'module' ], function(require, exports, module) { - -"never use strict"; - -module.exports = { - _default: { - text: "", - isLine: false - } -}; - -}); - - -ace.define('ace/keyboard/vim/maps/motions', ['require', 'exports', 'module' , 'ace/keyboard/vim/maps/util', 'ace/search', 'ace/range'], function(require, exports, module) { - - -var util = require("./util"); - -var keepScrollPosition = function(editor, fn) { - var scrollTopRow = editor.renderer.getScrollTopRow(); - var initialRow = editor.getCursorPosition().row; - var diff = initialRow - scrollTopRow; - fn && fn.call(editor); - editor.renderer.scrollToRow(editor.getCursorPosition().row - diff); -}; - -function Motion(m) { - if (typeof m == "function") { - var getPos = m; - m = this; - } else { - var getPos = m.getPos; - } - m.nav = function(editor, range, count, param) { - var a = getPos(editor, range, count, param, false); - if (!a) - return; - editor.clearSelection(); - editor.moveCursorTo(a.row, a.column); - }; - m.sel = function(editor, range, count, param) { - var a = getPos(editor, range, count, param, true); - if (!a) - return; - editor.selection.selectTo(a.row, a.column); - }; - return m; -} - -var nonWordRe = /[\s.\/\\()\"'-:,.;<>~!@#$%^&*|+=\[\]{}`~?]/; -var wordSeparatorRe = /[.\/\\()\"'-:,.;<>~!@#$%^&*|+=\[\]{}`~?]/; -var whiteRe = /\s/; -var StringStream = function(editor, cursor) { - var sel = editor.selection; - this.range = sel.getRange(); - cursor = cursor || sel.selectionLead; - this.row = cursor.row; - this.col = cursor.column; - var line = editor.session.getLine(this.row); - var maxRow = editor.session.getLength(); - this.ch = line[this.col] || '\n'; - this.skippedLines = 0; - - this.next = function() { - this.ch = line[++this.col] || this.handleNewLine(1); - return this.ch; - }; - this.prev = function() { - this.ch = line[--this.col] || this.handleNewLine(-1); - return this.ch; - }; - this.peek = function(dir) { - var ch = line[this.col + dir]; - if (ch) - return ch; - if (dir == -1) - return '\n'; - if (this.col == line.length - 1) - return '\n'; - return editor.session.getLine(this.row + 1)[0] || '\n'; - }; - - this.handleNewLine = function(dir) { - if (dir == 1){ - if (this.col == line.length) - return '\n'; - if (this.row == maxRow - 1) - return ''; - this.col = 0; - this.row ++; - line = editor.session.getLine(this.row); - this.skippedLines++; - return line[0] || '\n'; - } - if (dir == -1) { - if (this.row === 0) - return ''; - this.row --; - line = editor.session.getLine(this.row); - this.col = line.length; - this.skippedLines--; - return '\n'; - } - }; - this.debug = function() { - console.log(line.substring(0, this.col)+'|'+this.ch+'\''+this.col+'\''+line.substr(this.col+1)); - }; -}; - -var Search = require("../../../search").Search; -var search = new Search(); - -function find(editor, needle, dir) { - search.$options.needle = needle; - search.$options.backwards = dir == -1; - return search.find(editor.session); -} - -var Range = require("../../../range").Range; - -var LAST_SEARCH_MOTION = {}; - -module.exports = { - "w": new Motion(function(editor) { - var str = new StringStream(editor); - - if (str.ch && wordSeparatorRe.test(str.ch)) { - while (str.ch && wordSeparatorRe.test(str.ch)) - str.next(); - } else { - while (str.ch && !nonWordRe.test(str.ch)) - str.next(); - } - while (str.ch && whiteRe.test(str.ch) && str.skippedLines < 2) - str.next(); - - str.skippedLines == 2 && str.prev(); - return {column: str.col, row: str.row}; - }), - "W": new Motion(function(editor) { - var str = new StringStream(editor); - while(str.ch && !(whiteRe.test(str.ch) && !whiteRe.test(str.peek(1))) && str.skippedLines < 2) - str.next(); - if (str.skippedLines == 2) - str.prev(); - else - str.next(); - - return {column: str.col, row: str.row}; - }), - "b": new Motion(function(editor) { - var str = new StringStream(editor); - - str.prev(); - while (str.ch && whiteRe.test(str.ch) && str.skippedLines > -2) - str.prev(); - - if (str.ch && wordSeparatorRe.test(str.ch)) { - while (str.ch && wordSeparatorRe.test(str.ch)) - str.prev(); - } else { - while (str.ch && !nonWordRe.test(str.ch)) - str.prev(); - } - str.ch && str.next(); - return {column: str.col, row: str.row}; - }), - "B": new Motion(function(editor) { - var str = new StringStream(editor); - str.prev(); - while(str.ch && !(!whiteRe.test(str.ch) && whiteRe.test(str.peek(-1))) && str.skippedLines > -2) - str.prev(); - - if (str.skippedLines == -2) - str.next(); - - return {column: str.col, row: str.row}; - }), - "e": new Motion(function(editor) { - var str = new StringStream(editor); - - str.next(); - while (str.ch && whiteRe.test(str.ch)) - str.next(); - - if (str.ch && wordSeparatorRe.test(str.ch)) { - while (str.ch && wordSeparatorRe.test(str.ch)) - str.next(); - } else { - while (str.ch && !nonWordRe.test(str.ch)) - str.next(); - } - str.ch && str.prev(); - return {column: str.col, row: str.row}; - }), - "E": new Motion(function(editor) { - var str = new StringStream(editor); - str.next(); - while(str.ch && !(!whiteRe.test(str.ch) && whiteRe.test(str.peek(1)))) - str.next(); - - return {column: str.col, row: str.row}; - }), - - "l": { - nav: function(editor) { - var pos = editor.getCursorPosition(); - var col = pos.column; - var lineLen = editor.session.getLine(pos.row).length; - if (lineLen && col !== lineLen) - editor.navigateRight(); - }, - sel: function(editor) { - var pos = editor.getCursorPosition(); - var col = pos.column; - var lineLen = editor.session.getLine(pos.row).length; - if (lineLen && col !== lineLen) //In selection mode you can select the newline - editor.selection.selectRight(); - } - }, - "h": { - nav: function(editor) { - var pos = editor.getCursorPosition(); - if (pos.column > 0) - editor.navigateLeft(); - }, - sel: function(editor) { - var pos = editor.getCursorPosition(); - if (pos.column > 0) - editor.selection.selectLeft(); - } - }, - "H": { - nav: function(editor) { - var row = editor.renderer.getScrollTopRow(); - editor.moveCursorTo(row); - }, - sel: function(editor) { - var row = editor.renderer.getScrollTopRow(); - editor.selection.selectTo(row); - } - }, - "M": { - nav: function(editor) { - var topRow = editor.renderer.getScrollTopRow(); - var bottomRow = editor.renderer.getScrollBottomRow(); - var row = topRow + ((bottomRow - topRow) / 2); - editor.moveCursorTo(row); - }, - sel: function(editor) { - var topRow = editor.renderer.getScrollTopRow(); - var bottomRow = editor.renderer.getScrollBottomRow(); - var row = topRow + ((bottomRow - topRow) / 2); - editor.selection.selectTo(row); - } - }, - "L": { - nav: function(editor) { - var row = editor.renderer.getScrollBottomRow(); - editor.moveCursorTo(row); - }, - sel: function(editor) { - var row = editor.renderer.getScrollBottomRow(); - editor.selection.selectTo(row); - } - }, - "k": { - nav: function(editor) { - editor.navigateUp(); - }, - sel: function(editor) { - editor.selection.selectUp(); - } - }, - "j": { - nav: function(editor) { - editor.navigateDown(); - }, - sel: function(editor) { - editor.selection.selectDown(); - } - }, - - "i": { - param: true, - sel: function(editor, range, count, param) { - switch (param) { - case "w": - editor.selection.selectWord(); - break; - case "W": - editor.selection.selectAWord(); - break; - case "(": - case "{": - case "[": - var cursor = editor.getCursorPosition(); - var end = editor.session.$findClosingBracket(param, cursor, /paren/); - if (!end) - return; - var start = editor.session.$findOpeningBracket(editor.session.$brackets[param], cursor, /paren/); - if (!start) - return; - start.column ++; - editor.selection.setSelectionRange(Range.fromPoints(start, end)); - break; - case "'": - case '"': - case "/": - var end = find(editor, param, 1); - if (!end) - return; - var start = find(editor, param, -1); - if (!start) - return; - editor.selection.setSelectionRange(Range.fromPoints(start.end, end.start)); - break; - } - } - }, - "a": { - param: true, - sel: function(editor, range, count, param) { - switch (param) { - case "w": - editor.selection.selectAWord(); - break; - case "W": - editor.selection.selectAWord(); - break; - case "(": - case "{": - case "[": - var cursor = editor.getCursorPosition(); - var end = editor.session.$findClosingBracket(param, cursor, /paren/); - if (!end) - return; - var start = editor.session.$findOpeningBracket(editor.session.$brackets[param], cursor, /paren/); - if (!start) - return; - end.column ++; - editor.selection.setSelectionRange(Range.fromPoints(start, end)); - break; - case "'": - case "\"": - case "/": - var end = find(editor, param, 1); - if (!end) - return; - var start = find(editor, param, -1); - if (!start) - return; - end.column ++; - editor.selection.setSelectionRange(Range.fromPoints(start.start, end.end)); - break; - } - } - }, - - "f": new Motion({ - param: true, - handlesCount: true, - getPos: function(editor, range, count, param, isSel, isRepeat) { - if (!isRepeat) - LAST_SEARCH_MOTION = {ch: "f", param: param}; - var cursor = editor.getCursorPosition(); - var column = util.getRightNthChar(editor, cursor, param, count || 1); - - if (typeof column === "number") { - cursor.column += column + (isSel ? 2 : 1); - return cursor; - } - } - }), - "F": new Motion({ - param: true, - handlesCount: true, - getPos: function(editor, range, count, param, isSel, isRepeat) { - if (!isRepeat) - LAST_SEARCH_MOTION = {ch: "F", param: param}; - var cursor = editor.getCursorPosition(); - var column = util.getLeftNthChar(editor, cursor, param, count || 1); - - if (typeof column === "number") { - cursor.column -= column + 1; - return cursor; - } - } - }), - "t": new Motion({ - param: true, - handlesCount: true, - getPos: function(editor, range, count, param, isSel, isRepeat) { - if (!isRepeat) - LAST_SEARCH_MOTION = {ch: "t", param: param}; - var cursor = editor.getCursorPosition(); - var column = util.getRightNthChar(editor, cursor, param, count || 1); - - if (isRepeat && column == 0 && !(count > 1)) - var column = util.getRightNthChar(editor, cursor, param, 2); - - if (typeof column === "number") { - cursor.column += column + (isSel ? 1 : 0); - return cursor; - } - } - }), - "T": new Motion({ - param: true, - handlesCount: true, - getPos: function(editor, range, count, param, isSel, isRepeat) { - if (!isRepeat) - LAST_SEARCH_MOTION = {ch: "T", param: param}; - var cursor = editor.getCursorPosition(); - var column = util.getLeftNthChar(editor, cursor, param, count || 1); - - if (isRepeat && column == 0 && !(count > 1)) - var column = util.getLeftNthChar(editor, cursor, param, 2); - - if (typeof column === "number") { - cursor.column -= column; - return cursor; - } - } - }), - ";": new Motion({ - handlesCount: true, - getPos: function(editor, range, count, param, isSel) { - var ch = LAST_SEARCH_MOTION.ch; - if (!ch) - return; - return module.exports[ch].getPos( - editor, range, count, LAST_SEARCH_MOTION.param, isSel, true - ); - } - }), - ",": new Motion({ - handlesCount: true, - getPos: function(editor, range, count, param, isSel) { - var ch = LAST_SEARCH_MOTION.ch; - if (!ch) - return; - var up = ch.toUpperCase(); - ch = ch === up ? ch.toLowerCase() : up; - - return module.exports[ch].getPos( - editor, range, count, LAST_SEARCH_MOTION.param, isSel, true - ); - } - }), - - "^": { - nav: function(editor) { - editor.navigateLineStart(); - }, - sel: function(editor) { - editor.selection.selectLineStart(); - } - }, - "$": { - nav: function(editor) { - editor.navigateLineEnd(); - }, - sel: function(editor) { - editor.selection.selectLineEnd(); - } - }, - "0": new Motion(function(ed) { - return {row: ed.selection.lead.row, column: 0}; - }), - "G": { - nav: function(editor, range, count, param) { - if (!count && count !== 0) { // Stupid JS - count = editor.session.getLength(); - } - editor.gotoLine(count); - }, - sel: function(editor, range, count, param) { - if (!count && count !== 0) { // Stupid JS - count = editor.session.getLength(); - } - editor.selection.selectTo(count, 0); - } - }, - "g": { - param: true, - nav: function(editor, range, count, param) { - switch(param) { - case "m": - console.log("Middle line"); - break; - case "e": - console.log("End of prev word"); - break; - case "g": - editor.gotoLine(count || 0); - case "u": - editor.gotoLine(count || 0); - case "U": - editor.gotoLine(count || 0); - } - }, - sel: function(editor, range, count, param) { - switch(param) { - case "m": - console.log("Middle line"); - break; - case "e": - console.log("End of prev word"); - break; - case "g": - editor.selection.selectTo(count || 0, 0); - } - } - }, - "o": { - nav: function(editor, range, count, param) { - count = count || 1; - var content = ""; - while (0 < count--) - content += "\n"; - - if (content.length) { - editor.navigateLineEnd() - editor.insert(content); - util.insertMode(editor); - } - } - }, - "O": { - nav: function(editor, range, count, param) { - var row = editor.getCursorPosition().row; - count = count || 1; - var content = ""; - while (0 < count--) - content += "\n"; - - if (content.length) { - if(row > 0) { - editor.navigateUp(); - editor.navigateLineEnd() - editor.insert(content); - } else { - editor.session.insert({row: 0, column: 0}, content); - editor.navigateUp(); - } - util.insertMode(editor); - } - } - }, - "%": new Motion(function(editor){ - var brRe = /[\[\]{}()]/g; - var cursor = editor.getCursorPosition(); - var ch = editor.session.getLine(cursor.row)[cursor.column]; - if (!brRe.test(ch)) { - var range = find(editor, brRe); - if (!range) - return; - cursor = range.start; - } - var match = editor.session.findMatchingBracket({ - row: cursor.row, - column: cursor.column + 1 - }); - - return match; - }), - "{": new Motion(function(ed) { - var session = ed.session; - var row = session.selection.lead.row; - while(row > 0 && !/\S/.test(session.getLine(row))) - row--; - while(/\S/.test(session.getLine(row))) - row--; - return {column: 0, row: row}; - }), - "}": new Motion(function(ed) { - var session = ed.session; - var l = session.getLength(); - var row = session.selection.lead.row; - while(row < l && !/\S/.test(session.getLine(row))) - row++; - while(/\S/.test(session.getLine(row))) - row++; - return {column: 0, row: row}; - }), - "ctrl-d": { - nav: function(editor, range, count, param) { - editor.selection.clearSelection(); - keepScrollPosition(editor, editor.gotoPageDown); - }, - sel: function(editor, range, count, param) { - keepScrollPosition(editor, editor.selectPageDown); - } - }, - "ctrl-u": { - nav: function(editor, range, count, param) { - editor.selection.clearSelection(); - keepScrollPosition(editor, editor.gotoPageUp); - }, - sel: function(editor, range, count, param) { - keepScrollPosition(editor, editor.selectPageUp); - } - }, - "`": new Motion({ - param: true, - handlesCount: true, - getPos: function(editor, range, count, param, isSel) { - var s = editor.session; - var marker = s.vimMarkers && s.vimMarkers[param]; - if (marker) { - return marker.getPosition(); - } - } - }), - "'": new Motion({ - param: true, - handlesCount: true, - getPos: function(editor, range, count, param, isSel) { - var s = editor.session; - var marker = s.vimMarkers && s.vimMarkers[param]; - if (marker) { - var pos = marker.getPosition(); - var line = editor.session.getLine(pos.row); - pos.column = line.search(/\S/); - if (pos.column == -1) - pos.column = line.length; - return pos; - } - } - }) -}; - -module.exports.backspace = module.exports.left = module.exports.h; -module.exports.space = module.exports['return'] = module.exports.right = module.exports.l; -module.exports.up = module.exports.k; -module.exports.down = module.exports.j; -module.exports.pagedown = module.exports["ctrl-d"]; -module.exports.pageup = module.exports["ctrl-u"]; - -}); - -ace.define('ace/keyboard/vim/maps/operators', ['require', 'exports', 'module' , 'ace/keyboard/vim/maps/util', 'ace/keyboard/vim/registers'], function(require, exports, module) { - - - -var util = require("./util"); -var registers = require("../registers"); - -module.exports = { - "d": { - selFn: function(editor, range, count, param) { - registers._default.text = editor.getCopyText(); - registers._default.isLine = util.onVisualLineMode; - if(util.onVisualLineMode) - editor.removeLines(); - else - editor.session.remove(range); - util.normalMode(editor); - }, - fn: function(editor, range, count, param) { - count = count || 1; - switch (param) { - case "d": - registers._default.text = ""; - registers._default.isLine = true; - for (var i = 0; i < count; i++) { - editor.selection.selectLine(); - registers._default.text += editor.getCopyText(); - var selRange = editor.getSelectionRange(); - if (!selRange.isMultiLine()) { - var row = selRange.start.row - 1; - var col = editor.session.getLine(row).length - selRange.setStart(row, col); - editor.session.remove(selRange); - editor.selection.clearSelection(); - break; - } - editor.session.remove(selRange); - editor.selection.clearSelection(); - } - registers._default.text = registers._default.text.replace(/\n$/, ""); - break; - default: - if (range) { - editor.selection.setSelectionRange(range); - registers._default.text = editor.getCopyText(); - registers._default.isLine = false; - editor.session.remove(range); - editor.selection.clearSelection(); - } - } - } - }, - "c": { - selFn: function(editor, range, count, param) { - editor.session.remove(range); - util.insertMode(editor); - }, - fn: function(editor, range, count, param) { - count = count || 1; - switch (param) { - case "c": - for (var i = 0; i < count; i++) { - editor.removeLines(); - util.insertMode(editor); - } - - break; - default: - if (range) { - editor.session.remove(range); - util.insertMode(editor); - } - } - } - }, - "y": { - selFn: function(editor, range, count, param) { - registers._default.text = editor.getCopyText(); - registers._default.isLine = util.onVisualLineMode; - editor.selection.clearSelection(); - util.normalMode(editor); - }, - fn: function(editor, range, count, param) { - count = count || 1; - switch (param) { - case "y": - var pos = editor.getCursorPosition(); - editor.selection.selectLine(); - for (var i = 0; i < count - 1; i++) { - editor.selection.moveCursorDown(); - } - registers._default.text = editor.getCopyText().replace(/\n$/, ""); - editor.selection.clearSelection(); - registers._default.isLine = true; - editor.moveCursorToPosition(pos); - break; - default: - if (range) { - var pos = editor.getCursorPosition(); - editor.selection.setSelectionRange(range); - registers._default.text = editor.getCopyText(); - registers._default.isLine = false; - editor.selection.clearSelection(); - editor.moveCursorTo(pos.row, pos.column); - } - } - } - }, - ">": { - selFn: function(editor, range, count, param) { - count = count || 1; - for (var i = 0; i < count; i++) { - editor.indent(); - } - util.normalMode(editor); - }, - fn: function(editor, range, count, param) { - count = parseInt(count || 1, 10); - switch (param) { - case ">": - var pos = editor.getCursorPosition(); - editor.selection.selectLine(); - for (var i = 0; i < count - 1; i++) { - editor.selection.moveCursorDown(); - } - editor.indent(); - editor.selection.clearSelection(); - editor.moveCursorToPosition(pos); - editor.navigateLineEnd(); - editor.navigateLineStart(); - break; - } - } - }, - "<": { - selFn: function(editor, range, count, param) { - count = count || 1; - for (var i = 0; i < count; i++) { - editor.blockOutdent(); - } - util.normalMode(editor); - }, - fn: function(editor, range, count, param) { - count = count || 1; - switch (param) { - case "<": - var pos = editor.getCursorPosition(); - editor.selection.selectLine(); - for (var i = 0; i < count - 1; i++) { - editor.selection.moveCursorDown(); - } - editor.blockOutdent(); - editor.selection.clearSelection(); - editor.moveCursorToPosition(pos); - editor.navigateLineEnd(); - editor.navigateLineStart(); - break; - } - } - } -}; -}); - -"use strict" - -ace.define('ace/keyboard/vim/maps/aliases', ['require', 'exports', 'module' ], function(require, exports, module) { -module.exports = { - "x": { - operator: { - ch: "d", - count: 1 - }, - motion: { - ch: "l", - count: 1 - } - }, - "X": { - operator: { - ch: "d", - count: 1 - }, - motion: { - ch: "h", - count: 1 - } - }, - "D": { - operator: { - ch: "d", - count: 1 - }, - motion: { - ch: "$", - count: 1 - } - }, - "C": { - operator: { - ch: "c", - count: 1 - }, - motion: { - ch: "$", - count: 1 - } - }, - "s": { - operator: { - ch: "c", - count: 1 - }, - motion: { - ch: "l", - count: 1 - } - }, - "S": { - operator: { - ch: "c", - count: 1 - }, - param: "c" - } -}; -}); - diff --git a/IDE/jsrealb-ide/ace-src-noconflict/mode-abap.js b/IDE/jsrealb-ide/ace-src-noconflict/mode-abap.js deleted file mode 100644 index 3c52cd58..00000000 --- a/IDE/jsrealb-ide/ace-src-noconflict/mode-abap.js +++ /dev/null @@ -1,261 +0,0 @@ -/* ***** BEGIN LICENSE BLOCK ***** - * Distributed under the BSD license: - * - * Copyright (c) 2010, Ajax.org B.V. - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are met: - * * Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * * Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * * Neither the name of Ajax.org B.V. nor the - * names of its contributors may be used to endorse or promote products - * derived from this software without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND - * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED - * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE - * DISCLAIMED. IN NO EVENT SHALL AJAX.ORG B.V. BE LIABLE FOR ANY - * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES - * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; - * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND - * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - * - * ***** END LICENSE BLOCK ***** */ - -ace.define('ace/mode/abap', ['require', 'exports', 'module' , 'ace/tokenizer', 'ace/mode/abap_highlight_rules', 'ace/mode/folding/coffee', 'ace/range', 'ace/mode/text', 'ace/lib/oop'], function(require, exports, module) { - - -var Tokenizer = require("../tokenizer").Tokenizer; -var Rules = require("./abap_highlight_rules").AbapHighlightRules; -var FoldMode = require("./folding/coffee").FoldMode; -var Range = require("../range").Range; -var TextMode = require("./text").Mode; -var oop = require("../lib/oop"); - -function Mode() { - this.HighlightRules = Rules; - this.foldingRules = new FoldMode(); -} - -oop.inherits(Mode, TextMode); - -(function() { - - this.getNextLineIndent = function(state, line, tab) { - var indent = this.$getIndent(line); - return indent; - }; - - this.toggleCommentLines = function(state, doc, startRow, endRow){ - var range = new Range(0, 0, 0, 0); - for (var i = startRow; i <= endRow; ++i) { - var line = doc.getLine(i); - if (hereComment.test(line)) - continue; - - if (commentLine.test(line)) - line = line.replace(commentLine, '$1'); - else - line = line.replace(indentation, '$&#'); - - range.end.row = range.start.row = i; - range.end.column = line.length + 1; - doc.replace(range, line); - } - }; - - this.$id = "ace/mode/abap"; -}).call(Mode.prototype); - -exports.Mode = Mode; - -}); - -ace.define('ace/mode/abap_highlight_rules', ['require', 'exports', 'module' , 'ace/lib/oop', 'ace/mode/text_highlight_rules'], function(require, exports, module) { - - -var oop = require("../lib/oop"); -var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; - -var AbapHighlightRules = function() { - - var keywordMapper = this.createKeywordMapper({ - "variable.language": "this", - "keyword": - "ADD ALIAS ALIASES ASSERT ASSIGN ASSIGNING AT BACK" + - " CALL CASE CATCH CHECK CLASS CLEAR CLOSE CNT COLLECT COMMIT COMMUNICATION COMPUTE CONCATENATE CONDENSE CONSTANTS CONTINUE CONTROLS CONVERT CREATE CURRENCY" + - " DATA DEFINE DEFINITION DEFERRED DELETE DESCRIBE DETAIL DIVIDE DO" + - " ELSE ELSEIF ENDAT ENDCASE ENDCLASS ENDDO ENDEXEC ENDFORM ENDFUNCTION ENDIF ENDIFEND ENDINTERFACE ENDLOOP ENDMETHOD ENDMODULE ENDON ENDPROVIDE ENDSELECT ENDTRY ENDWHILE EVENT EVENTS EXEC EXIT EXPORT EXPORTING EXTRACT" + - " FETCH FIELDS FORM FORMAT FREE FROM FUNCTION" + - " GENERATE GET" + - " HIDE" + - " IF IMPORT IMPORTING INDEX INFOTYPES INITIALIZATION INTERFACE INTERFACES INPUT INSERT IMPLEMENTATION" + - " LEAVE LIKE LINE LOAD LOCAL LOOP" + - " MESSAGE METHOD METHODS MODIFY MODULE MOVE MULTIPLY" + - " ON OVERLAY OPTIONAL OTHERS" + - " PACK PARAMETERS PERFORM POSITION PROGRAM PROVIDE PUT" + - " RAISE RANGES READ RECEIVE RECEIVING REDEFINITION REFERENCE REFRESH REJECT REPLACE REPORT RESERVE RESTORE RETURNING ROLLBACK" + - " SCAN SCROLL SEARCH SELECT SET SHIFT SKIP SORT SORTED SPLIT STANDARD STATICS STEP STOP SUBMIT SUBTRACT SUM SUMMARY SUPPRESS" + - " TABLES TIMES TRANSFER TRANSLATE TRY TYPE TYPES" + - " UNASSIGN ULINE UNPACK UPDATE" + - " WHEN WHILE WINDOW WRITE" + - " OCCURS STRUCTURE OBJECT PROPERTY" + - " CASTING APPEND RAISING VALUE COLOR" + - " CHANGING EXCEPTION EXCEPTIONS DEFAULT CHECKBOX COMMENT" + - " ID NUMBER FOR TITLE OUTPUT" + - " WITH EXIT USING" + - " INTO WHERE GROUP BY HAVING ORDER BY SINGLE" + - " APPENDING CORRESPONDING FIELDS OF TABLE" + - " LEFT RIGHT OUTER INNER JOIN AS CLIENT SPECIFIED BYPASSING BUFFER UP TO ROWS CONNECTING" + - " EQ NE LT LE GT GE NOT AND OR XOR IN LIKE BETWEEN", - "constant.language": - "TRUE FALSE NULL SPACE", - "support.type": - "c n i p f d t x string xstring decfloat16 decfloat34", - "keyword.operator": - "abs sign ceil floor trunc frac acos asin atan cos sin tan" + - " abapOperator cosh sinh tanh exp log log10 sqrt" + - " strlen xstrlen charlen numofchar dbmaxlen lines" - }, "text", true, " "); - - var compoundKeywords = "WITH\\W+(?:HEADER\\W+LINE|FRAME|KEY)|NO\\W+STANDARD\\W+PAGE\\W+HEADING|"+ - "EXIT\\W+FROM\\W+STEP\\W+LOOP|BEGIN\\W+OF\\W+(?:BLOCK|LINE)|BEGIN\\W+OF|"+ - "END\\W+OF\\W+(?:BLOCK|LINE)|END\\W+OF|NO\\W+INTERVALS|"+ - "RESPECTING\\W+BLANKS|SEPARATED\\W+BY|USING\\W+(?:EDIT\\W+MASK)|"+ - "WHERE\\W+(?:LINE)|RADIOBUTTON\\W+GROUP|REF\\W+TO|"+ - "(?:PUBLIC|PRIVATE|PROTECTED)(?:\\W+SECTION)?|DELETING\\W+(?:TRAILING|LEADING)"+ - "(?:ALL\\W+OCCURRENCES)|(?:FIRST|LAST)\\W+OCCURRENCE|INHERITING\\W+FROM|"+ - "LINE-COUNT|ADD-CORRESPONDING|AUTHORITY-CHECK|BREAK-POINT|CLASS-DATA|CLASS-METHODS|"+ - "CLASS-METHOD|DIVIDE-CORRESPONDING|EDITOR-CALL|END-OF-DEFINITION|END-OF-PAGE|END-OF-SELECTION|"+ - "FIELD-GROUPS|FIELD-SYMBOLS|FUNCTION-POOL|MOVE-CORRESPONDING|MULTIPLY-CORRESPONDING|NEW-LINE|"+ - "NEW-PAGE|NEW-SECTION|PRINT-CONTROL|RP-PROVIDE-FROM-LAST|SELECT-OPTIONS|SELECTION-SCREEN|"+ - "START-OF-SELECTION|SUBTRACT-CORRESPONDING|SYNTAX-CHECK|SYNTAX-TRACE|TOP-OF-PAGE|TYPE-POOL|"+ - "TYPE-POOLS|LINE-SIZE|LINE-COUNT|MESSAGE-ID|DISPLAY-MODE|READ(?:-ONLY)?|"+ - "IS\\W+(?:NOT\\W+)?(?:ASSIGNED|BOUND|INITIAL|SUPPLIED)"; - - this.$rules = { - "start" : [ - {token : "string", regex : "`", next : "string"}, - {token : "string", regex : "'", next : "qstring"}, - {token : "doc.comment", regex : /^\*.+/}, - {token : "comment", regex : /".+$/}, - {token : "invalid", regex: "\\.{2,}"}, - {token : "keyword.operator", regex: /\W[\-+\%=<>*]\W|\*\*|[~:,\.&$]|->*?|=>/}, - {token : "paren.lparen", regex : "[\\[({]"}, - {token : "paren.rparen", regex : "[\\])}]"}, - {token : "constant.numeric", regex: "[+-]?\\d+\\b"}, - {token : "variable.parameter", regex : /sy|pa?\d\d\d\d\|t\d\d\d\.|innnn/}, - {token : "keyword", regex : compoundKeywords}, - {token : "variable.parameter", regex : /\w+-\w+(?:-\w+)*/}, - {token : keywordMapper, regex : "\\b\\w+\\b"}, - {caseInsensitive: true} - ], - "qstring" : [ - {token : "constant.language.escape", regex : "''"}, - {token : "string", regex : "'", next : "start"}, - {defaultToken : "string"} - ], - "string" : [ - {token : "constant.language.escape", regex : "``"}, - {token : "string", regex : "`", next : "start"}, - {defaultToken : "string"} - ] - } -}; -oop.inherits(AbapHighlightRules, TextHighlightRules); - -exports.AbapHighlightRules = AbapHighlightRules; -}); - -ace.define('ace/mode/folding/coffee', ['require', 'exports', 'module' , 'ace/lib/oop', 'ace/mode/folding/fold_mode', 'ace/range'], function(require, exports, module) { - - -var oop = require("../../lib/oop"); -var BaseFoldMode = require("./fold_mode").FoldMode; -var Range = require("../../range").Range; - -var FoldMode = exports.FoldMode = function() {}; -oop.inherits(FoldMode, BaseFoldMode); - -(function() { - - this.getFoldWidgetRange = function(session, foldStyle, row) { - var range = this.indentationBlock(session, row); - if (range) - return range; - - var re = /\S/; - var line = session.getLine(row); - var startLevel = line.search(re); - if (startLevel == -1 || line[startLevel] != "#") - return; - - var startColumn = line.length; - var maxRow = session.getLength(); - var startRow = row; - var endRow = row; - - while (++row < maxRow) { - line = session.getLine(row); - var level = line.search(re); - - if (level == -1) - continue; - - if (line[level] != "#") - break; - - endRow = row; - } - - if (endRow > startRow) { - var endColumn = session.getLine(endRow).length; - return new Range(startRow, startColumn, endRow, endColumn); - } - }; - this.getFoldWidget = function(session, foldStyle, row) { - var line = session.getLine(row); - var indent = line.search(/\S/); - var next = session.getLine(row + 1); - var prev = session.getLine(row - 1); - var prevIndent = prev.search(/\S/); - var nextIndent = next.search(/\S/); - - if (indent == -1) { - session.foldWidgets[row - 1] = prevIndent!= -1 && prevIndent < nextIndent ? "start" : ""; - return ""; - } - if (prevIndent == -1) { - if (indent == nextIndent && line[indent] == "#" && next[indent] == "#") { - session.foldWidgets[row - 1] = ""; - session.foldWidgets[row + 1] = ""; - return "start"; - } - } else if (prevIndent == indent && line[indent] == "#" && prev[indent] == "#") { - if (session.getLine(row - 2).search(/\S/) == -1) { - session.foldWidgets[row - 1] = "start"; - session.foldWidgets[row + 1] = ""; - return ""; - } - } - - if (prevIndent!= -1 && prevIndent < indent) - session.foldWidgets[row - 1] = "start"; - else - session.foldWidgets[row - 1] = ""; - - if (indent < nextIndent) - return "start"; - else - return ""; - }; - -}).call(FoldMode.prototype); - -}); diff --git a/IDE/jsrealb-ide/ace-src-noconflict/mode-actionscript.js b/IDE/jsrealb-ide/ace-src-noconflict/mode-actionscript.js deleted file mode 100644 index 17c0f12b..00000000 --- a/IDE/jsrealb-ide/ace-src-noconflict/mode-actionscript.js +++ /dev/null @@ -1,257 +0,0 @@ -/* ***** BEGIN LICENSE BLOCK ***** - * Distributed under the BSD license: - * - * Copyright (c) 2012, Ajax.org B.V. - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are met: - * * Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * * Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * * Neither the name of Ajax.org B.V. nor the - * names of its contributors may be used to endorse or promote products - * derived from this software without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND - * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED - * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE - * DISCLAIMED. IN NO EVENT SHALL AJAX.ORG B.V. BE LIABLE FOR ANY - * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES - * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; - * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND - * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - * - * - * Contributor(s): - * - * - * - * ***** END LICENSE BLOCK ***** */ - -ace.define('ace/mode/actionscript', ['require', 'exports', 'module' , 'ace/lib/oop', 'ace/mode/text', 'ace/tokenizer', 'ace/mode/actionscript_highlight_rules', 'ace/mode/folding/cstyle'], function(require, exports, module) { - - -var oop = require("../lib/oop"); -var TextMode = require("./text").Mode; -var Tokenizer = require("../tokenizer").Tokenizer; -var ActionScriptHighlightRules = require("./actionscript_highlight_rules").ActionScriptHighlightRules; -var FoldMode = require("./folding/cstyle").FoldMode; - -var Mode = function() { - this.HighlightRules = ActionScriptHighlightRules; - this.foldingRules = new FoldMode(); -}; -oop.inherits(Mode, TextMode); - -(function() { - this.lineCommentStart = "//"; - this.blockComment = {start: "/*", end: "*/"}; - this.$id = "ace/mode/actionscript"; -}).call(Mode.prototype); - -exports.Mode = Mode; -}); - -ace.define('ace/mode/actionscript_highlight_rules', ['require', 'exports', 'module' , 'ace/lib/oop', 'ace/mode/text_highlight_rules'], function(require, exports, module) { - - -var oop = require("../lib/oop"); -var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; - -var ActionScriptHighlightRules = function() { - - this.$rules = { start: - [ { token: 'support.class.actionscript.2', - regex: '\\b(?:R(?:ecordset|DBMSResolver|adioButton(?:Group)?)|X(?:ML(?:Socket|Node|Connector)?|UpdateResolverDataHolder)|M(?:M(?:Save|Execute)|icrophoneMicrophone|o(?:use|vieClip(?:Loader)?)|e(?:nu(?:Bar)?|dia(?:Controller|Display|Playback))|ath)|B(?:yName|inding|utton)|S(?:haredObject|ystem|crollPane|t(?:yleSheet|age|ream)|ound|e(?:ndEvent|rviceObject)|OAPCall|lide)|N(?:umericStepper|et(?:stream|S(?:tream|ervices)|Connection|Debug(?:Config)?))|C(?:heckBox|o(?:ntextMenu(?:Item)?|okie|lor|m(?:ponentMixins|boBox))|ustomActions|lient|amera)|T(?:ypedValue|ext(?:Snapshot|Input|F(?:ield|ormat)|Area)|ree|AB)|Object|D(?:ownload|elta(?:Item|Packet)?|at(?:e(?:Chooser|Field)?|a(?:G(?:lue|rid)|Set|Type)))|U(?:RL|TC|IScrollBar)|P(?:opUpManager|endingCall|r(?:intJob|o(?:duct|gressBar)))|E(?:ndPoint|rror)|Video|Key|F(?:RadioButton|GridColumn|MessageBox|BarChart|S(?:croll(?:Bar|Pane)|tyleFormat|plitView)|orm|C(?:heckbox|omboBox|alendar)|unction|T(?:icker|ooltip(?:Lite)?|ree(?:Node)?)|IconButton|D(?:ataGrid|raggablePane)|P(?:ieChart|ushButton|ro(?:gressBar|mptBox))|L(?:i(?:stBox|neChart)|oadingBox)|AdvancedMessageBox)|W(?:indow|SDLURL|ebService(?:Connector)?)|L(?:ist|o(?:calConnection|ad(?:er|Vars)|g)|a(?:unch|bel))|A(?:sBroadcaster|cc(?:ordion|essibility)|S(?:Set(?:Native|PropFlags)|N(?:ew|ative)|C(?:onstructor|lamp(?:2)?)|InstanceOf)|pplication|lert|rray))\\b' }, - { token: 'support.function.actionscript.2', - regex: '\\b(?:s(?:h(?:ift|ow(?:GridLines|Menu|Border|Settings|Headers|ColumnHeaders|Today|Preferences)?|ad(?:ow|ePane))|c(?:hema|ale(?:X|Mode|Y|Content)|r(?:oll(?:Track|Drag)?|een(?:Resolution|Color|DPI)))|t(?:yleSheet|op(?:Drag|A(?:nimation|llSounds|gent))?|epSize|a(?:tus|rt(?:Drag|A(?:nimation|gent))?))|i(?:n|ze|lence(?:TimeOut|Level))|o(?:ngname|urce|rt(?:Items(?:By)?|On(?:HeaderRelease)?|able(?:Columns)?)?)|u(?:ppressInvalidCalls|bstr(?:ing)?)|p(?:li(?:ce|t)|aceCol(?:umnsEqually|lumnsEqually))|e(?:nd(?:DefaultPushButtonEvent|AndLoad)?|curity|t(?:R(?:GB|o(?:otNode|w(?:Height|Count))|esizable(?:Columns)?|a(?:nge|te))|G(?:ain|roupName)|X(?:AxisTitle)?|M(?:i(?:n(?:imum|utes)|lliseconds)|o(?:nth(?:Names)?|tionLevel|de)|ultilineMode|e(?:ssage|nu(?:ItemEnabled(?:At)?|EnabledAt)|dia)|a(?:sk|ximum))|B(?:u(?:tton(?:s|Width)|fferTime)|a(?:seTabIndex|ndwidthLimit|ckground))|S(?:howAsDisabled|croll(?:ing|Speed|Content|Target|P(?:osition|roperties)|barState|Location)|t(?:yle(?:Property)?|opOnFocus|at(?:us|e))|i(?:ze|lenceLevel)|ort(?:able(?:Columns)?|Function)|p(?:litterBarPosition|acing)|e(?:conds|lect(?:Multiple|ion(?:Required|Type)?|Style|Color|ed(?:Node(?:s)?|Cell|I(?:nd(?:ices|ex)|tem(?:s)?))?|able))|kin|m(?:oothness|allScroll))|H(?:ighlight(?:s|Color)|Scroll|o(?:urs|rizontal)|eader(?:Symbol|Height|Text|Property|Format|Width|Location)?|as(?:Shader|CloseBox))|Y(?:ear|AxisTitle)?|N(?:ode(?:Properties|ExpansionHandler)|ewTextFormat)|C(?:h(?:ildNodes|a(?:ngeHandler|rt(?:Title|EventHandler)))|o(?:ntent(?:Size)?|okie|lumns)|ell(?:Symbol|Data)|l(?:i(?:ckHandler|pboard)|oseHandler)|redentials)|T(?:ype(?:dVaule)?|i(?:tle(?:barHeight)?|p(?:Target|Offset)?|me(?:out(?:Handler)?)?)|oggle|extFormat|ransform)|I(?:s(?:Branch|Open)|n(?:terval|putProperty)|con(?:SymbolName)?|te(?:rator|m(?:ByKey|Symbol)))|Orientation|D(?:i(?:splay(?:Range|Graphics|Mode|Clip|Text|edMonth)|rection)|uration|e(?:pth(?:Below|To|Above)|fault(?:GatewayURL|Mappings|NodeIconSymbolName)|l(?:iveryMode|ay)|bug(?:ID)?)|a(?:yOfWeekNames|t(?:e(?:Filter)?|a(?:Mapping(?:s)?|Item(?:Text|Property|Format)|Provider|All(?:Height|Property|Format|Width))?))|ra(?:wConnectors|gContent))|U(?:se(?:Shadow|HandCursor|EchoSuppression|rInput|Fade)|TC(?:M(?:i(?:nutes|lliseconds)|onth)|Seconds|Hours|Date|FullYear))|P(?:osition|ercentComplete|an(?:e(?:M(?:inimumSize|aximumSize)|Size|Title))?|ro(?:pert(?:y(?:Data)?|iesAt)|gress))|E(?:nabled|dit(?:Handler|able)|xpand(?:NodeTrigger|erSymbolName))|V(?:Scroll|olume|alue(?:Source)?)|KeyFrameInterval|Quality|F(?:i(?:eld|rst(?:DayOfWeek|VisibleNode))|ocus|ullYear|ps|ade(?:InLength|OutLength)|rame(?:Color|Width))|Width|L(?:ine(?:Color|Weight)|o(?:opback|adTarget)|a(?:rgeScroll|bel(?:Source|Placement)?))|A(?:s(?:Boolean|String|Number)|n(?:yTypedValue|imation)|ctiv(?:e(?:State(?:Handler)?|Handler)|ateHandler)|utoH(?:ideScrollBar|eight)))?|paratorBefore|ek|lect(?:ion(?:Disabled|Unfocused)?|ed(?:Node(?:s)?|Child|I(?:nd(?:ices|ex)|tem(?:s)?)|Dat(?:e|a))?|able(?:Ranges)?)|rver(?:String)?)|kip|qrt|wapDepths|lice|aveToSharedObj|moothing)|h(?:scroll(?:Policy)?|tml(?:Text)?|i(?:t(?:Test(?:TextNearPos)?|Area)|de(?:BuiltInItems|Child)?|ghlight(?:2D|3D)?)|orizontal|e(?:ight|ader(?:Re(?:nderer|lease)|Height|Text))|P(?:osition|ageScrollSize)|a(?:s(?:childNodes|MP3|S(?:creen(?:Broadcast|Playback)|treaming(?:Video|Audio)|ort)|Next|OwnProperty|Pr(?:inting|evious)|EmbeddedVideo|VideoEncoder|A(?:ccesibility|udio(?:Encoder)?))|ndlerName)|LineScrollSize)|ye(?:sLabel|ar)|n(?:o(?:t|de(?:Name|Close|Type|Open|Value)|Label)|u(?:llValue|mChild(?:S(?:creens|lides)|ren|Forms))|e(?:w(?:Item|line|Value|LocationDialog)|xt(?:S(?:cene|ibling|lide)|TabIndex|Value|Frame)?)?|ame(?:s)?)|c(?:h(?:ildNodes|eck|a(?:nge(?:sPending)?|r(?:CodeAt|At))|r)|o(?:s|n(?:st(?:ant|ructor)|nect|c(?:urrency|at)|t(?:ent(?:Type|Path)?|ains|rol(?:Placement|lerPolicy))|denseWhite|version)|py|l(?:or|umn(?:Stretch|Name(?:s)?|Count))|m(?:p(?:onent|lete)|ment))|u(?:stomItems|ePoint(?:s)?|r(?:veTo|Value|rent(?:Slide|ChildSlide|Item|F(?:ocused(?:S(?:creen|lide)|Form)|ps))))|e(?:il|ll(?:Renderer|Press|Edit|Focus(?:In|Out)))|l(?:i(?:ck|ents)|o(?:se(?:Button|Pane)?|ne(?:Node)?)|ear(?:S(?:haredObjects|treams)|Timeout|Interval)?)|a(?:ncelLabel|tch|p(?:tion|abilities)|l(?:cFields|l(?:e(?:e|r))?))|reate(?:GatewayConnection|Menu|Se(?:rver|gment)|C(?:hild(?:AtDepth)?|l(?:ient|ass(?:ChildAtDepth|Object(?:AtDepth)?))|all)|Text(?:Node|Field)|Item|Object(?:AtDepth)?|PopUp|E(?:lement|mptyMovieClip)))|t(?:h(?:is|row)|ype(?:of|Name)?|i(?:tle(?:StyleDeclaration)?|me(?:out)?)|o(?:talTime|String|olTipText|p|UpperCase|ggle(?:HighQuality)?|Lo(?:caleString|werCase))|e(?:st|llTarget|xt(?:RightMargin|Bold|S(?:ize|elected)|Height|Color|I(?:ndent|talic)|Disabled|Underline|F(?:ield|ont)|Width|LeftMargin|Align)?)|a(?:n|rget(?:Path)?|b(?:Stops|Children|Index|Enabled|leName))|r(?:y|igger|ac(?:e|k(?:AsMenu)?)))|i(?:s(?:Running|Branch|NaN|Con(?:soleOpen|nected)|Toggled|Installed|Open|D(?:own|ebugger)|P(?:urchased|ro(?:totypeOf|pertyEnumerable))|Empty|F(?:inite|ullyPopulated)|Local|Active)|n(?:s(?:tall|ertBefore)|cludeDeltaPacketInfo|t|it(?:ialize|Component|Pod|A(?:pplication|gent))?|de(?:nt|terminate|x(?:InParent(?:Slide|Form)?|Of)?)|put|validate|finity|LocalInternetCache)?|con(?:F(?:ield|unction))?|t(?:e(?:ratorScrolled|m(?:s|RollO(?:ut|ver)|ClassName))|alic)|d3|p|fFrameLoaded|gnore(?:Case|White))|o(?:s|n(?:R(?:ollO(?:ut|ver)|e(?:s(?:ize|ult)|l(?:ease(?:Outside)?|aseOutside)))|XML|Mouse(?:Move|Down|Up|Wheel)|S(?:ync|croller|tatus|oundComplete|e(?:tFocus|lect(?:edItem)?))|N(?:oticeEvent|etworkChange)|C(?:hanged|onnect|l(?:ipEvent|ose))|ID3|D(?:isconnect|eactivate|ata|ragO(?:ut|ver))|Un(?:install|load)|P(?:aymentResult|ress)|EnterFrame|K(?:illFocus|ey(?:Down|Up))|Fault|Lo(?:ad|g)|A(?:ctiv(?:ity|ate)|ppSt(?:op|art)))?|pe(?:n|ration)|verLayChildren|kLabel|ldValue|r(?:d)?)|d(?:i(?:s(?:connect|play(?:Normal|ed(?:Month|Year)|Full)|able(?:Shader|d(?:Ranges|Days)|CloseBox|Events))|rection)|o(?:cTypeDecl|tall|Decoding|main|LazyDecoding)|u(?:plicateMovieClip|ration)|e(?:stroy(?:ChildAt|Object)|code|fault(?:PushButton(?:Enabled)?|KeydownHandler)?|l(?:ta(?:Packet(?:Changed)?)?|ete(?:PopUp|All)?)|blocking)|a(?:shBoardSave|yNames|ta(?:Provider)?|rkshadow)|r(?:opdown(?:Width)?|a(?:w|gO(?:ut|ver))))|u(?:se(?:Sort|HandCursor|Codepage|EchoSuppression)|n(?:shift|install|derline|escape|format|watch|lo(?:ck|ad(?:Movie(?:Num)?)?))|pdate(?:Results|Mode|I(?:nputProperties|tem(?:ByIndex)?)|P(?:acket|roperties)|View|AfterEvent)|rl)|join|p(?:ixelAspectRatio|o(?:sition|p|w)|u(?:sh|rge|blish)|ercen(?:tComplete|Loaded)|lay(?:head(?:Change|Time)|ing|Hidden|erType)?|a(?:ssword|use|r(?:se(?:XML|CSS|Int|Float)|ent(?:Node|Is(?:S(?:creen|lide)|Form))|ams))|r(?:int(?:Num|AsBitmap(?:Num)?)?|o(?:to(?:type)?|pert(?:y|ies)|gress)|e(?:ss|v(?:ious(?:S(?:ibling|lide)|Value)?|Scene|Frame)|ferred(?:Height|Width))))|e(?:scape|n(?:code(?:r)?|ter(?:Frame)?|dFill|able(?:Shader|d|CloseBox|Events))|dit(?:able|Field|LocationDialog)|v(?:ent|al(?:uate)?)|q|x(?:tended|p|ec(?:ute)?|actSettings)|m(?:phasized(?:StyleDeclaration)?|bedFonts))|v(?:i(?:sible|ewPod)|ScrollPolicy|o(?:id|lume)|ersion|P(?:osition|ageScrollSize)|a(?:l(?:idat(?:ionError|e(?:Property|ActivationKey)?)|ue(?:Of)?)|riable)|LineScrollSize)|k(?:ind|ey(?:Down|Up|Press|FrameInterval))|q(?:sort|uality)|f(?:scommand|i(?:n(?:d(?:Text|First|Last)?|ally)|eldInfo|lter(?:ed|Func)?|rst(?:Slide|Child|DayOfWeek|VisibleNode)?)|o(?:nt|cus(?:In|edCell|Out|Enabled)|r(?:egroundDisabled|mat(?:ter)?))|unctionName|ps|l(?:oor|ush)|ace|romCharCode)|w(?:i(?:th|dth)|ordWrap|atch|riteAccess)|l(?:t|i(?:st(?:Owner)?|ne(?:Style|To))|o(?:c(?:k|a(?:t(?:ion|eByld)|l(?:ToGlobal|FileReadDisable)))|opback|ad(?:Movie(?:Num)?|S(?:crollContent|ound)|ed|Variables(?:Num)?|Application)?|g(?:Changes)?)|e(?:ngth|ft(?:Margin)?|ading)?|a(?:st(?:Slide|Child|Index(?:Of)?)?|nguage|b(?:el(?:Placement|F(?:ield|unction))?|leField)))|a(?:s(?:scociate(?:Controller|Display)|in|pectRatio|function)|nd|c(?:ceptConnection|tiv(?:ityLevel|ePlayControl)|os)|t(?:t(?:ach(?:Movie|Sound|Video|Audio)|ributes)|an(?:2)?)|dd(?:header|RequestHeader|Menu(?:Item(?:At)?|At)?|Sort|Header|No(?:tice|de(?:At)?)|C(?:olumn(?:At)?|uePoint)|T(?:oLocalInternetCache|reeNode(?:At)?)|I(?:con|tem(?:s(?:At)?|At)?)|DeltaItem|P(?:od|age|roperty)|EventListener|View|FieldInfo|Listener|Animation)?|uto(?:Size|Play|KeyNav|Load)|pp(?:endChild|ly(?:Changes|Updates)?)|vHardwareDisable|fterLoaded|l(?:ternateRowColors|ign|l(?:ow(?:InsecureDomain|Domain)|Transitions(?:InDone|OutDone))|bum)|r(?:tist|row|g(?:uments|List))|gent|bs)|r(?:ight(?:Margin)?|o(?:ot(?:S(?:creen|lide)|Form)|und|w(?:Height|Count)|llO(?:ut|ver))|e(?:s(?:yncDepth|t(?:orePane|artAnimation|rict)|iz(?:e|able(?:Columns)?)|olveDelta|ult(?:s)?|ponse)|c(?:o(?:ncile(?:Results|Updates)|rd)|eive(?:Video|Audio))|draw|jectConnection|place(?:Sel|ItemAt|AllItems)?|ve(?:al(?:Child)?|rse)|quest(?:SizeChange|Payment)?|f(?:errer|resh(?:ScrollContent|Destinations|Pane|FromSources)?)|lease(?:Outside)?|ad(?:Only|Access)|gister(?:SkinElement|C(?:olor(?:Style|Name)|lass)|InheritingStyle|Proxy)|move(?:Range|M(?:ovieClip|enu(?:Item(?:At)?|At))|Background|Sort|No(?:tice|de(?:sAt|At)?)|C(?:olum(?:nAt|At)|uePoints)|T(?:extField|reeNode(?:At)?)|Item(?:At)?|Pod|EventListener|FromLocalInternetCache|Listener|All(?:C(?:olumns|uePoints)|Items)?))|a(?:ndom|te|dioDot))|g(?:t|oto(?:Slide|NextSlide|PreviousSlide|FirstSlide|LastSlide|And(?:Stop|Play))|e(?:nre|t(?:R(?:GB|o(?:otNode|wCount)|e(?:sizable|mote))|X(?:AxisTitle)?|M(?:i(?:n(?:imum(?:Size)?|utes)|lliseconds)|onth(?:Names)?|ultilineMode|e(?:ssage|nu(?:ItemAt|EnabledAt|At))|aximum(?:Size)?)|B(?:ytes(?:Total|Loaded)|ounds|utton(?:s|Width)|eginIndex|a(?:ndwidthLimit|ckground))|S(?:howAsDisabled|croll(?:ing|Speed|Content|Position|barState|Location)|t(?:yle(?:Names)?|opOnFocus|ate)|ize|o(?:urce|rtState)|p(?:litterBarPosition|acing)|e(?:conds|lect(?:Multiple|ion(?:Required|Type)|Style|ed(?:Node(?:s)?|Cell|Text|I(?:nd(?:ices|ex)|tem(?:s)?))?)|rvice)|moothness|WFVersion)|H(?:ighlight(?:s|Color)|ours|e(?:ight|ader(?:Height|Text|Property|Format|Width|Location)?)|as(?:Shader|CloseBox))|Y(?:ear|AxisTitle)?|N(?:o(?:tices|de(?:DisplayedAt|At))|um(?:Children|berAvailable)|e(?:wTextFormat|xtHighestDepth))|C(?:h(?:ild(?:S(?:creen|lide)|Nodes|Form|At)|artTitle)|o(?:n(?:tent|figInfo)|okie|de|unt|lumn(?:Names|Count|Index|At))|uePoint|ellIndex|loseHandler|a(?:ll|retIndex))|T(?:ypedValue|i(?:tle(?:barHeight)?|p(?:Target|Offset)?|me(?:stamp|zoneOffset|out(?:State|Handler)|r)?)|oggle|ext(?:Extent|Format)?|r(?:ee(?:NodeAt|Length)|ans(?:form|actionId)))|I(?:s(?:Branch|Open)|n(?:stanceAtDepth|d(?:icesByKey|exByKey))|con(?:SymbolName)?|te(?:rator|m(?:sByKey|By(?:Name|Key)|id|ID|At))|d)|O(?:utput(?:Parameter(?:s|ByName)?|Value(?:s)?)|peration|ri(?:entation|ginalCellData))|D(?:i(?:s(?:play(?:Range|Mode|Clip|Index|edMonth)|kUsage)|rection)|uration|e(?:pth|faultNodeIconSymbolName|l(?:taPacket|ay)|bug(?:Config|ID)?)|a(?:y(?:OfWeekNames)?|t(?:e|a(?:Mapping(?:s)?|Item(?:Text|Property|Format)|Label|All(?:Height|Property|Format|Width))?))|rawConnectors)|U(?:se(?:Shadow|HandCursor|rInput|Fade)|RL|TC(?:M(?:i(?:nutes|lliseconds)|onth)|Seconds|Hours|Da(?:y|te)|FullYear))|P(?:o(?:sition|ds)|ercentComplete|a(?:n(?:e(?:M(?:inimums|aximums)|Height|Title|Width))?|rentNode)|r(?:operty(?:Name|Data)?|efer(?:ences|red(?:Height|Width))))|E(?:n(?:dIndex|abled)|ditingData|x(?:panderSymbolName|andNodeTrigger))|V(?:iewed(?:Pods|Applications)|olume|ersion|alue(?:Source)?)|F(?:i(?:eld|rst(?:DayOfWeek|VisibleNode))|o(?:ntList|cus)|ullYear|ade(?:InLength|OutLength)|rame(?:Color|Width))|Width|L(?:ine(?:Color|Weight)|o(?:cal|adTarget)|ength|a(?:stTabIndex|bel(?:Source)?))|A(?:s(?:cii|Boolean|String|Number)|n(?:yTypedValue|imation)|ctiv(?:eState(?:Handler)?|ateHandler)|utoH(?:ideScrollBar|eight)|llItems|gent))?)?|lobal(?:StyleFormat|ToLocal)?|ain|roupName)|x(?:updatePackety|mlDecl)?|m(?:y(?:MethodName|Call)|in(?:imum)?|o(?:nthNames|tion(?:TimeOut|Level)|de(?:lChanged)?|use(?:Move|O(?:ut|ver)|Down(?:Somewhere|Outside)?|Up(?:Somewhere)?|WheelEnabled)|ve(?:To)?)|u(?:ted|lti(?:pleS(?:imultaneousAllowed|elections)|line))|e(?:ssage|nu(?:Show|Hide)?|th(?:od)?|diaType)|a(?:nufacturer|tch|x(?:scroll|hscroll|imum|HPosition|Chars|VPosition)?)|b(?:substring|chr|ord|length))|b(?:ytes(?:Total|Loaded)|indFormat(?:Strings|Function)|o(?:ttom(?:Scroll)?|ld|rder(?:Color)?)|u(?:tton(?:Height|Width)|iltInItems|ffer(?:Time|Length)|llet)|e(?:foreApplyUpdates|gin(?:GradientFill|Fill))|lockIndent|a(?:ndwidth|ckground(?:Style|Color|Disabled)?)|roadcastMessage)|onHTTPStatus)\\b' }, - { token: 'support.constant.actionscript.2', - regex: '\\b(?:__proto__|__resolve|_accProps|_alpha|_changed|_currentframe|_droptarget|_flash|_focusrect|_framesloaded|_global|_height|_highquality|_level|_listeners|_lockroot|_name|_parent|_quality|_root|_rotation|_soundbuftime|_target|_totalframes|_url|_visible|_width|_x|_xmouse|_xscale|_y|_ymouse|_yscale)\\b' }, - { token: 'keyword.control.actionscript.2', - regex: '\\b(?:dynamic|extends|import|implements|interface|public|private|new|static|super|var|for|in|break|continue|while|do|return|if|else|case|switch)\\b' }, - { token: 'storage.type.actionscript.2', - regex: '\\b(?:Boolean|Number|String|Void)\\b' }, - { token: 'constant.language.actionscript.2', - regex: '\\b(?:null|undefined|true|false)\\b' }, - { token: 'constant.numeric.actionscript.2', - regex: '\\b(?:0(?:x|X)[0-9a-fA-F]*|(?:[0-9]+\\.?[0-9]*|\\.[0-9]+)(?:(?:e|E)(?:\\+|-)?[0-9]+)?)(?:L|l|UL|ul|u|U|F|f)?\\b' }, - { token: 'punctuation.definition.string.begin.actionscript.2', - regex: '"', - push: - [ { token: 'punctuation.definition.string.end.actionscript.2', - regex: '"', - next: 'pop' }, - { token: 'constant.character.escape.actionscript.2', - regex: '\\\\.' }, - { defaultToken: 'string.quoted.double.actionscript.2' } ] }, - { token: 'punctuation.definition.string.begin.actionscript.2', - regex: '\'', - push: - [ { token: 'punctuation.definition.string.end.actionscript.2', - regex: '\'', - next: 'pop' }, - { token: 'constant.character.escape.actionscript.2', - regex: '\\\\.' }, - { defaultToken: 'string.quoted.single.actionscript.2' } ] }, - { token: 'support.constant.actionscript.2', - regex: '\\b(?:BACKSPACE|CAPSLOCK|CONTROL|DELETEKEY|DOWN|END|ENTER|HOME|INSERT|LEFT|LN10|LN2|LOG10E|LOG2E|MAX_VALUE|MIN_VALUE|NEGATIVE_INFINITY|NaN|PGDN|PGUP|PI|POSITIVE_INFINITY|RIGHT|SPACE|SQRT1_2|SQRT2|UP)\\b' }, - { token: 'punctuation.definition.comment.actionscript.2', - regex: '/\\*', - push: - [ { token: 'punctuation.definition.comment.actionscript.2', - regex: '\\*/', - next: 'pop' }, - { defaultToken: 'comment.block.actionscript.2' } ] }, - { token: 'punctuation.definition.comment.actionscript.2', - regex: '//.*$', - push_: - [ { token: 'comment.line.double-slash.actionscript.2', - regex: '$', - next: 'pop' }, - { defaultToken: 'comment.line.double-slash.actionscript.2' } ] }, - { token: 'keyword.operator.actionscript.2', - regex: '\\binstanceof\\b' }, - { token: 'keyword.operator.symbolic.actionscript.2', - regex: '[-!%&*+=/?:]' }, - { token: - [ 'meta.preprocessor.actionscript.2', - 'punctuation.definition.preprocessor.actionscript.2', - 'meta.preprocessor.actionscript.2' ], - regex: '^([ \\t]*)(#)([a-zA-Z]+)' }, - { token: - [ 'storage.type.function.actionscript.2', - 'meta.function.actionscript.2', - 'entity.name.function.actionscript.2', - 'meta.function.actionscript.2', - 'punctuation.definition.parameters.begin.actionscript.2' ], - regex: '\\b(function)(\\s+)([a-zA-Z_]\\w*)(\\s*)(\\()', - push: - [ { token: 'punctuation.definition.parameters.end.actionscript.2', - regex: '\\)', - next: 'pop' }, - { token: 'variable.parameter.function.actionscript.2', - regex: '[^,)$]+' }, - { defaultToken: 'meta.function.actionscript.2' } ] }, - { token: - [ 'storage.type.class.actionscript.2', - 'meta.class.actionscript.2', - 'entity.name.type.class.actionscript.2', - 'meta.class.actionscript.2', - 'storage.modifier.extends.actionscript.2', - 'meta.class.actionscript.2', - 'entity.other.inherited-class.actionscript.2' ], - regex: '\\b(class)(\\s+)([a-zA-Z_](?:\\w|\\.)*)(?:(\\s+)(extends)(\\s+)([a-zA-Z_](?:\\w|\\.)*))?' } ] } - - this.normalizeRules(); -}; - -ActionScriptHighlightRules.metaData = { fileTypes: [ 'as' ], - keyEquivalent: '^~A', - name: 'ActionScript', - scopeName: 'source.actionscript.2' } - - -oop.inherits(ActionScriptHighlightRules, TextHighlightRules); - -exports.ActionScriptHighlightRules = ActionScriptHighlightRules; -}); - -ace.define('ace/mode/folding/cstyle', ['require', 'exports', 'module' , 'ace/lib/oop', 'ace/range', 'ace/mode/folding/fold_mode'], function(require, exports, module) { - - -var oop = require("../../lib/oop"); -var Range = require("../../range").Range; -var BaseFoldMode = require("./fold_mode").FoldMode; - -var FoldMode = exports.FoldMode = function(commentRegex) { - if (commentRegex) { - this.foldingStartMarker = new RegExp( - this.foldingStartMarker.source.replace(/\|[^|]*?$/, "|" + commentRegex.start) - ); - this.foldingStopMarker = new RegExp( - this.foldingStopMarker.source.replace(/\|[^|]*?$/, "|" + commentRegex.end) - ); - } -}; -oop.inherits(FoldMode, BaseFoldMode); - -(function() { - - this.foldingStartMarker = /(\{|\[)[^\}\]]*$|^\s*(\/\*)/; - this.foldingStopMarker = /^[^\[\{]*(\}|\])|^[\s\*]*(\*\/)/; - - this.getFoldWidgetRange = function(session, foldStyle, row, forceMultiline) { - var line = session.getLine(row); - var match = line.match(this.foldingStartMarker); - if (match) { - var i = match.index; - - if (match[1]) - return this.openingBracketBlock(session, match[1], row, i); - - var range = session.getCommentFoldRange(row, i + match[0].length, 1); - - if (range && !range.isMultiLine()) { - if (forceMultiline) { - range = this.getSectionRange(session, row); - } else if (foldStyle != "all") - range = null; - } - - return range; - } - - if (foldStyle === "markbegin") - return; - - var match = line.match(this.foldingStopMarker); - if (match) { - var i = match.index + match[0].length; - - if (match[1]) - return this.closingBracketBlock(session, match[1], row, i); - - return session.getCommentFoldRange(row, i, -1); - } - }; - - this.getSectionRange = function(session, row) { - var line = session.getLine(row); - var startIndent = line.search(/\S/); - var startRow = row; - var startColumn = line.length; - row = row + 1; - var endRow = row; - var maxRow = session.getLength(); - while (++row < maxRow) { - line = session.getLine(row); - var indent = line.search(/\S/); - if (indent === -1) - continue; - if (startIndent > indent) - break; - var subRange = this.getFoldWidgetRange(session, "all", row); - - if (subRange) { - if (subRange.start.row <= startRow) { - break; - } else if (subRange.isMultiLine()) { - row = subRange.end.row; - } else if (startIndent == indent) { - break; - } - } - endRow = row; - } - - return new Range(startRow, startColumn, endRow, session.getLine(endRow).length); - }; - -}).call(FoldMode.prototype); - -}); diff --git a/IDE/jsrealb-ide/ace-src-noconflict/mode-ada.js b/IDE/jsrealb-ide/ace-src-noconflict/mode-ada.js deleted file mode 100644 index 7b50f0b9..00000000 --- a/IDE/jsrealb-ide/ace-src-noconflict/mode-ada.js +++ /dev/null @@ -1,118 +0,0 @@ -/* ***** BEGIN LICENSE BLOCK ***** - * Distributed under the BSD license: - * - * Copyright (c) 2010, Ajax.org B.V. - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are met: - * * Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * * Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * * Neither the name of Ajax.org B.V. nor the - * names of its contributors may be used to endorse or promote products - * derived from this software without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND - * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED - * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE - * DISCLAIMED. IN NO EVENT SHALL AJAX.ORG B.V. BE LIABLE FOR ANY - * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES - * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; - * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND - * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - * - * ***** END LICENSE BLOCK ***** */ - -ace.define('ace/mode/ada', ['require', 'exports', 'module' , 'ace/lib/oop', 'ace/mode/text', 'ace/tokenizer', 'ace/mode/ada_highlight_rules', 'ace/range'], function(require, exports, module) { - - -var oop = require("../lib/oop"); -var TextMode = require("./text").Mode; -var Tokenizer = require("../tokenizer").Tokenizer; -var AdaHighlightRules = require("./ada_highlight_rules").AdaHighlightRules; -var Range = require("../range").Range; - -var Mode = function() { - this.HighlightRules = AdaHighlightRules; -}; -oop.inherits(Mode, TextMode); - -(function() { - - this.lineCommentStart = "--"; - - this.$id = "ace/mode/ada"; -}).call(Mode.prototype); - -exports.Mode = Mode; - -}); - -ace.define('ace/mode/ada_highlight_rules', ['require', 'exports', 'module' , 'ace/lib/oop', 'ace/mode/text_highlight_rules'], function(require, exports, module) { - - -var oop = require("../lib/oop"); -var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; - -var AdaHighlightRules = function() { -var keywords = "abort|else|new|return|abs|elsif|not|reverse|abstract|end|null|accept|entry|select|" + -"access|exception|of|separate|aliased|exit|or|some|all|others|subtype|and|for|out|synchronized|" + -"array|function|overriding|at|tagged|generic|package|task|begin|goto|pragma|terminate|" + -"body|private|then|if|procedure|type|case|in|protected|constant|interface|until|" + -"|is|raise|use|declare|range|delay|limited|record|when|delta|loop|rem|while|digits|renames|with|do|mod|requeue|xor"; - - var builtinConstants = ( - "true|false|null" - ); - - var builtinFunctions = ( - "count|min|max|avg|sum|rank|now|coalesce|main" - ); - - var keywordMapper = this.createKeywordMapper({ - "support.function": builtinFunctions, - "keyword": keywords, - "constant.language": builtinConstants - }, "identifier", true); - - this.$rules = { - "start" : [ { - token : "comment", - regex : "--.*$" - }, { - token : "string", // " string - regex : '".*?"' - }, { - token : "string", // ' string - regex : "'.*?'" - }, { - token : "constant.numeric", // float - regex : "[+-]?\\d+(?:(?:\\.\\d*)?(?:[eE][+-]?\\d+)?)?\\b" - }, { - token : keywordMapper, - regex : "[a-zA-Z_$][a-zA-Z0-9_$]*\\b" - }, { - token : "keyword.operator", - regex : "\\+|\\-|\\/|\\/\\/|%|<@>|@>|<@|&|\\^|~|<|>|<=|=>|==|!=|<>|=" - }, { - token : "paren.lparen", - regex : "[\\(]" - }, { - token : "paren.rparen", - regex : "[\\)]" - }, { - token : "text", - regex : "\\s+" - } ] - }; -}; - -oop.inherits(AdaHighlightRules, TextHighlightRules); - -exports.AdaHighlightRules = AdaHighlightRules; -}); \ No newline at end of file diff --git a/IDE/jsrealb-ide/ace-src-noconflict/mode-apache_conf.js b/IDE/jsrealb-ide/ace-src-noconflict/mode-apache_conf.js deleted file mode 100644 index 628b7362..00000000 --- a/IDE/jsrealb-ide/ace-src-noconflict/mode-apache_conf.js +++ /dev/null @@ -1,345 +0,0 @@ -/* ***** BEGIN LICENSE BLOCK ***** - * Distributed under the BSD license: - * - * Copyright (c) 2012, Ajax.org B.V. - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are met: - * * Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * * Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * * Neither the name of Ajax.org B.V. nor the - * names of its contributors may be used to endorse or promote products - * derived from this software without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND - * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED - * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE - * DISCLAIMED. IN NO EVENT SHALL AJAX.ORG B.V. BE LIABLE FOR ANY - * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES - * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; - * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND - * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - * - * - * Contributor(s): - * - * - * - * ***** END LICENSE BLOCK ***** */ - -ace.define('ace/mode/apache_conf', ['require', 'exports', 'module' , 'ace/lib/oop', 'ace/mode/text', 'ace/tokenizer', 'ace/mode/apache_conf_highlight_rules', 'ace/mode/folding/cstyle'], function(require, exports, module) { - - -var oop = require("../lib/oop"); -var TextMode = require("./text").Mode; -var Tokenizer = require("../tokenizer").Tokenizer; -var ApacheConfHighlightRules = require("./apache_conf_highlight_rules").ApacheConfHighlightRules; -var FoldMode = require("./folding/cstyle").FoldMode; - -var Mode = function() { - this.HighlightRules = ApacheConfHighlightRules; - this.foldingRules = new FoldMode(); -}; -oop.inherits(Mode, TextMode); - -(function() { - this.lineCommentStart = "#"; -}).call(Mode.prototype); - -exports.Mode = Mode; -}); - -ace.define('ace/mode/apache_conf_highlight_rules', ['require', 'exports', 'module' , 'ace/lib/oop', 'ace/mode/text_highlight_rules'], function(require, exports, module) { - - -var oop = require("../lib/oop"); -var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; - -var ApacheConfHighlightRules = function() { - - this.$rules = { start: - [ { token: - [ 'punctuation.definition.comment.apacheconf', - 'comment.line.hash.ini', - 'comment.line.hash.ini' ], - regex: '^((?:\\s)*)(#)(.*$)' }, - { token: - [ 'punctuation.definition.tag.apacheconf', - 'entity.tag.apacheconf', - 'text', - 'string.value.apacheconf', - 'punctuation.definition.tag.apacheconf' ], - regex: '(<)(Proxy|ProxyMatch|IfVersion|Directory|DirectoryMatch|Files|FilesMatch|IfDefine|IfModule|Limit|LimitExcept|Location|LocationMatch|VirtualHost)(?:(\\s)(.+?))?(>)' }, - { token: - [ 'punctuation.definition.tag.apacheconf', - 'entity.tag.apacheconf', - 'punctuation.definition.tag.apacheconf' ], - regex: '()' }, - { token: - [ 'keyword.alias.apacheconf', 'text', - 'string.regexp.apacheconf', 'text', - 'string.replacement.apacheconf', 'text' ], - regex: '(Rewrite(?:Rule|Cond))(\\s+)(.+?)(\\s+)(.+?)($|\\s)' }, - { token: - [ 'keyword.alias.apacheconf', 'text', - 'entity.status.apacheconf', 'text', - 'string.regexp.apacheconf', 'text', - 'string.path.apacheconf', 'text' ], - regex: '(RedirectMatch)(?:(\\s+)(\\d\\d\\d|permanent|temp|seeother|gone))?(\\s+)(.+?)(\\s+)(?:(.+?)($|\\s))?' }, - { token: - [ 'keyword.alias.apacheconf', 'text', - 'entity.status.apacheconf', 'text', - 'string.path.apacheconf', 'text', - 'string.path.apacheconf', 'text' ], - regex: '(Redirect)(?:(\\s+)(\\d\\d\\d|permanent|temp|seeother|gone))?(\\s+)(.+?)(\\s+)(?:(.+?)($|\\s))?' }, - { token: - [ 'keyword.alias.apacheconf', 'text', - 'string.regexp.apacheconf', 'text', - 'string.path.apacheconf', 'text' ], - regex: '(ScriptAliasMatch|AliasMatch)(\\s+)(.+?)(\\s+)(?:(.+?)(\\s))?' }, - { token: - [ 'keyword.alias.apacheconf', 'text', - 'string.path.apacheconf', 'text', - 'string.path.apacheconf', 'text' ], - regex: '(RedirectPermanent|RedirectTemp|ScriptAlias|Alias)(\\s+)(.+?)(\\s+)(?:(.+?)($|\\s))?' }, - { token: 'keyword.core.apacheconf', - regex: '\\b(?:AcceptPathInfo|AccessFileName|AddDefaultCharset|AddOutputFilterByType|AllowEncodedSlashes|AllowOverride|AuthName|AuthType|CGIMapExtension|ContentDigest|DefaultType|DocumentRoot|EnableMMAP|EnableSendfile|ErrorDocument|ErrorLog|FileETag|ForceType|HostnameLookups|IdentityCheck|Include|KeepAlive|KeepAliveTimeout|LimitInternalRecursion|LimitRequestBody|LimitRequestFields|LimitRequestFieldSize|LimitRequestLine|LimitXMLRequestBody|LogLevel|MaxKeepAliveRequests|NameVirtualHost|Options|Require|RLimitCPU|RLimitMEM|RLimitNPROC|Satisfy|ScriptInterpreterSource|ServerAdmin|ServerAlias|ServerName|ServerPath|ServerRoot|ServerSignature|ServerTokens|SetHandler|SetInputFilter|SetOutputFilter|TimeOut|TraceEnable|UseCanonicalName)\\b' }, - { token: 'keyword.mpm.apacheconf', - regex: '\\b(?:AcceptMutex|AssignUserID|BS2000Account|ChildPerUserID|CoreDumpDirectory|EnableExceptionHook|Group|Listen|ListenBacklog|LockFile|MaxClients|MaxMemFree|MaxRequestsPerChild|MaxRequestsPerThread|MaxSpareServers|MaxSpareThreads|MaxThreads|MaxThreadsPerChild|MinSpareServers|MinSpareThreads|NumServers|PidFile|ReceiveBufferSize|ScoreBoardFile|SendBufferSize|ServerLimit|StartServers|StartThreads|ThreadLimit|ThreadsPerChild|ThreadStackSize|User|Win32DisableAcceptEx)\\b' }, - { token: 'keyword.access.apacheconf', - regex: '\\b(?:Allow|Deny|Order)\\b' }, - { token: 'keyword.actions.apacheconf', - regex: '\\b(?:Action|Script)\\b' }, - { token: 'keyword.alias.apacheconf', - regex: '\\b(?:Alias|AliasMatch|Redirect|RedirectMatch|RedirectPermanent|RedirectTemp|ScriptAlias|ScriptAliasMatch)\\b' }, - { token: 'keyword.auth.apacheconf', - regex: '\\b(?:AuthAuthoritative|AuthGroupFile|AuthUserFile)\\b' }, - { token: 'keyword.auth_anon.apacheconf', - regex: '\\b(?:Anonymous|Anonymous_Authoritative|Anonymous_LogEmail|Anonymous_MustGiveEmail|Anonymous_NoUserID|Anonymous_VerifyEmail)\\b' }, - { token: 'keyword.auth_dbm.apacheconf', - regex: '\\b(?:AuthDBMAuthoritative|AuthDBMGroupFile|AuthDBMType|AuthDBMUserFile)\\b' }, - { token: 'keyword.auth_digest.apacheconf', - regex: '\\b(?:AuthDigestAlgorithm|AuthDigestDomain|AuthDigestFile|AuthDigestGroupFile|AuthDigestNcCheck|AuthDigestNonceFormat|AuthDigestNonceLifetime|AuthDigestQop|AuthDigestShmemSize)\\b' }, - { token: 'keyword.auth_ldap.apacheconf', - regex: '\\b(?:AuthLDAPAuthoritative|AuthLDAPBindDN|AuthLDAPBindPassword|AuthLDAPCharsetConfig|AuthLDAPCompareDNOnServer|AuthLDAPDereferenceAliases|AuthLDAPEnabled|AuthLDAPFrontPageHack|AuthLDAPGroupAttribute|AuthLDAPGroupAttributeIsDN|AuthLDAPRemoteUserIsDN|AuthLDAPUrl)\\b' }, - { token: 'keyword.autoindex.apacheconf', - regex: '\\b(?:AddAlt|AddAltByEncoding|AddAltByType|AddDescription|AddIcon|AddIconByEncoding|AddIconByType|DefaultIcon|HeaderName|IndexIgnore|IndexOptions|IndexOrderDefault|ReadmeName)\\b' }, - { token: 'keyword.cache.apacheconf', - regex: '\\b(?:CacheDefaultExpire|CacheDisable|CacheEnable|CacheForceCompletion|CacheIgnoreCacheControl|CacheIgnoreHeaders|CacheIgnoreNoLastMod|CacheLastModifiedFactor|CacheMaxExpire)\\b' }, - { token: 'keyword.cern_meta.apacheconf', - regex: '\\b(?:MetaDir|MetaFiles|MetaSuffix)\\b' }, - { token: 'keyword.cgi.apacheconf', - regex: '\\b(?:ScriptLog|ScriptLogBuffer|ScriptLogLength)\\b' }, - { token: 'keyword.cgid.apacheconf', - regex: '\\b(?:ScriptLog|ScriptLogBuffer|ScriptLogLength|ScriptSock)\\b' }, - { token: 'keyword.charset_lite.apacheconf', - regex: '\\b(?:CharsetDefault|CharsetOptions|CharsetSourceEnc)\\b' }, - { token: 'keyword.dav.apacheconf', - regex: '\\b(?:Dav|DavDepthInfinity|DavMinTimeout|DavLockDB)\\b' }, - { token: 'keyword.deflate.apacheconf', - regex: '\\b(?:DeflateBufferSize|DeflateCompressionLevel|DeflateFilterNote|DeflateMemLevel|DeflateWindowSize)\\b' }, - { token: 'keyword.dir.apacheconf', - regex: '\\b(?:DirectoryIndex|DirectorySlash)\\b' }, - { token: 'keyword.disk_cache.apacheconf', - regex: '\\b(?:CacheDirLength|CacheDirLevels|CacheExpiryCheck|CacheGcClean|CacheGcDaily|CacheGcInterval|CacheGcMemUsage|CacheGcUnused|CacheMaxFileSize|CacheMinFileSize|CacheRoot|CacheSize|CacheTimeMargin)\\b' }, - { token: 'keyword.dumpio.apacheconf', - regex: '\\b(?:DumpIOInput|DumpIOOutput)\\b' }, - { token: 'keyword.env.apacheconf', - regex: '\\b(?:PassEnv|SetEnv|UnsetEnv)\\b' }, - { token: 'keyword.expires.apacheconf', - regex: '\\b(?:ExpiresActive|ExpiresByType|ExpiresDefault)\\b' }, - { token: 'keyword.ext_filter.apacheconf', - regex: '\\b(?:ExtFilterDefine|ExtFilterOptions)\\b' }, - { token: 'keyword.file_cache.apacheconf', - regex: '\\b(?:CacheFile|MMapFile)\\b' }, - { token: 'keyword.headers.apacheconf', - regex: '\\b(?:Header|RequestHeader)\\b' }, - { token: 'keyword.imap.apacheconf', - regex: '\\b(?:ImapBase|ImapDefault|ImapMenu)\\b' }, - { token: 'keyword.include.apacheconf', - regex: '\\b(?:SSIEndTag|SSIErrorMsg|SSIStartTag|SSITimeFormat|SSIUndefinedEcho|XBitHack)\\b' }, - { token: 'keyword.isapi.apacheconf', - regex: '\\b(?:ISAPIAppendLogToErrors|ISAPIAppendLogToQuery|ISAPICacheFile|ISAPIFakeAsync|ISAPILogNotSupported|ISAPIReadAheadBuffer)\\b' }, - { token: 'keyword.ldap.apacheconf', - regex: '\\b(?:LDAPCacheEntries|LDAPCacheTTL|LDAPConnectionTimeout|LDAPOpCacheEntries|LDAPOpCacheTTL|LDAPSharedCacheFile|LDAPSharedCacheSize|LDAPTrustedCA|LDAPTrustedCAType)\\b' }, - { token: 'keyword.log.apacheconf', - regex: '\\b(?:BufferedLogs|CookieLog|CustomLog|LogFormat|TransferLog|ForensicLog)\\b' }, - { token: 'keyword.mem_cache.apacheconf', - regex: '\\b(?:MCacheMaxObjectCount|MCacheMaxObjectSize|MCacheMaxStreamingBuffer|MCacheMinObjectSize|MCacheRemovalAlgorithm|MCacheSize)\\b' }, - { token: 'keyword.mime.apacheconf', - regex: '\\b(?:AddCharset|AddEncoding|AddHandler|AddInputFilter|AddLanguage|AddOutputFilter|AddType|DefaultLanguage|ModMimeUsePathInfo|MultiviewsMatch|RemoveCharset|RemoveEncoding|RemoveHandler|RemoveInputFilter|RemoveLanguage|RemoveOutputFilter|RemoveType|TypesConfig)\\b' }, - { token: 'keyword.misc.apacheconf', - regex: '\\b(?:ProtocolEcho|Example|AddModuleInfo|MimeMagicFile|CheckSpelling|ExtendedStatus|SuexecUserGroup|UserDir)\\b' }, - { token: 'keyword.negotiation.apacheconf', - regex: '\\b(?:CacheNegotiatedDocs|ForceLanguagePriority|LanguagePriority)\\b' }, - { token: 'keyword.nw_ssl.apacheconf', - regex: '\\b(?:NWSSLTrustedCerts|NWSSLUpgradeable|SecureListen)\\b' }, - { token: 'keyword.proxy.apacheconf', - regex: '\\b(?:AllowCONNECT|NoProxy|ProxyBadHeader|ProxyBlock|ProxyDomain|ProxyErrorOverride|ProxyFtpDirCharset|ProxyIOBufferSize|ProxyMaxForwards|ProxyPass|ProxyPassReverse|ProxyPreserveHost|ProxyReceiveBufferSize|ProxyRemote|ProxyRemoteMatch|ProxyRequests|ProxyTimeout|ProxyVia)\\b' }, - { token: 'keyword.rewrite.apacheconf', - regex: '\\b(?:RewriteBase|RewriteCond|RewriteEngine|RewriteLock|RewriteLog|RewriteLogLevel|RewriteMap|RewriteOptions|RewriteRule)\\b' }, - { token: 'keyword.setenvif.apacheconf', - regex: '\\b(?:BrowserMatch|BrowserMatchNoCase|SetEnvIf|SetEnvIfNoCase)\\b' }, - { token: 'keyword.so.apacheconf', - regex: '\\b(?:LoadFile|LoadModule)\\b' }, - { token: 'keyword.ssl.apacheconf', - regex: '\\b(?:SSLCACertificateFile|SSLCACertificatePath|SSLCARevocationFile|SSLCARevocationPath|SSLCertificateChainFile|SSLCertificateFile|SSLCertificateKeyFile|SSLCipherSuite|SSLEngine|SSLMutex|SSLOptions|SSLPassPhraseDialog|SSLProtocol|SSLProxyCACertificateFile|SSLProxyCACertificatePath|SSLProxyCARevocationFile|SSLProxyCARevocationPath|SSLProxyCipherSuite|SSLProxyEngine|SSLProxyMachineCertificateFile|SSLProxyMachineCertificatePath|SSLProxyProtocol|SSLProxyVerify|SSLProxyVerifyDepth|SSLRandomSeed|SSLRequire|SSLRequireSSL|SSLSessionCache|SSLSessionCacheTimeout|SSLUserName|SSLVerifyClient|SSLVerifyDepth)\\b' }, - { token: 'keyword.usertrack.apacheconf', - regex: '\\b(?:CookieDomain|CookieExpires|CookieName|CookieStyle|CookieTracking)\\b' }, - { token: 'keyword.vhost_alias.apacheconf', - regex: '\\b(?:VirtualDocumentRoot|VirtualDocumentRootIP|VirtualScriptAlias|VirtualScriptAliasIP)\\b' }, - { token: - [ 'keyword.php.apacheconf', - 'text', - 'entity.property.apacheconf', - 'text', - 'string.value.apacheconf', - 'text' ], - regex: '\\b(php_value|php_flag)\\b(?:(\\s+)(.+?)(?:(\\s+)(.+?))?)?(\\s)' }, - { token: - [ 'punctuation.variable.apacheconf', - 'variable.env.apacheconf', - 'variable.misc.apacheconf', - 'punctuation.variable.apacheconf' ], - regex: '(%\\{)(?:(HTTP_USER_AGENT|HTTP_REFERER|HTTP_COOKIE|HTTP_FORWARDED|HTTP_HOST|HTTP_PROXY_CONNECTION|HTTP_ACCEPT|REMOTE_ADDR|REMOTE_HOST|REMOTE_PORT|REMOTE_USER|REMOTE_IDENT|REQUEST_METHOD|SCRIPT_FILENAME|PATH_INFO|QUERY_STRING|AUTH_TYPE|DOCUMENT_ROOT|SERVER_ADMIN|SERVER_NAME|SERVER_ADDR|SERVER_PORT|SERVER_PROTOCOL|SERVER_SOFTWARE|TIME_YEAR|TIME_MON|TIME_DAY|TIME_HOUR|TIME_MIN|TIME_SEC|TIME_WDAY|TIME|API_VERSION|THE_REQUEST|REQUEST_URI|REQUEST_FILENAME|IS_SUBREQ|HTTPS)|(.*?))(\\})' }, - { token: [ 'entity.mime-type.apacheconf', 'text' ], - regex: '\\b((?:text|image|application|video|audio)/.+?)(\\s)' }, - { token: 'entity.helper.apacheconf', - regex: '\\b(?:from|unset|set|on|off)\\b', - caseInsensitive: true }, - { token: 'constant.integer.apacheconf', regex: '\\b\\d+\\b' }, - { token: - [ 'text', - 'punctuation.definition.flag.apacheconf', - 'string.flag.apacheconf', - 'punctuation.definition.flag.apacheconf', - 'text' ], - regex: '(\\s)(\\[)(.*?)(\\])(\\s)' } ] } - - this.normalizeRules(); -}; - -ApacheConfHighlightRules.metaData = { fileTypes: - [ 'conf', - 'CONF', - 'htaccess', - 'HTACCESS', - 'htgroups', - 'HTGROUPS', - 'htpasswd', - 'HTPASSWD', - '.htaccess', - '.HTACCESS', - '.htgroups', - '.HTGROUPS', - '.htpasswd', - '.HTPASSWD' ], - name: 'Apache Conf', - scopeName: 'source.apacheconf' } - - -oop.inherits(ApacheConfHighlightRules, TextHighlightRules); - -exports.ApacheConfHighlightRules = ApacheConfHighlightRules; -}); - -ace.define('ace/mode/folding/cstyle', ['require', 'exports', 'module' , 'ace/lib/oop', 'ace/range', 'ace/mode/folding/fold_mode'], function(require, exports, module) { - - -var oop = require("../../lib/oop"); -var Range = require("../../range").Range; -var BaseFoldMode = require("./fold_mode").FoldMode; - -var FoldMode = exports.FoldMode = function(commentRegex) { - if (commentRegex) { - this.foldingStartMarker = new RegExp( - this.foldingStartMarker.source.replace(/\|[^|]*?$/, "|" + commentRegex.start) - ); - this.foldingStopMarker = new RegExp( - this.foldingStopMarker.source.replace(/\|[^|]*?$/, "|" + commentRegex.end) - ); - } -}; -oop.inherits(FoldMode, BaseFoldMode); - -(function() { - - this.foldingStartMarker = /(\{|\[)[^\}\]]*$|^\s*(\/\*)/; - this.foldingStopMarker = /^[^\[\{]*(\}|\])|^[\s\*]*(\*\/)/; - - this.getFoldWidgetRange = function(session, foldStyle, row, forceMultiline) { - var line = session.getLine(row); - var match = line.match(this.foldingStartMarker); - if (match) { - var i = match.index; - - if (match[1]) - return this.openingBracketBlock(session, match[1], row, i); - - var range = session.getCommentFoldRange(row, i + match[0].length, 1); - - if (range && !range.isMultiLine()) { - if (forceMultiline) { - range = this.getSectionRange(session, row); - } else if (foldStyle != "all") - range = null; - } - - return range; - } - - if (foldStyle === "markbegin") - return; - - var match = line.match(this.foldingStopMarker); - if (match) { - var i = match.index + match[0].length; - - if (match[1]) - return this.closingBracketBlock(session, match[1], row, i); - - return session.getCommentFoldRange(row, i, -1); - } - }; - - this.getSectionRange = function(session, row) { - var line = session.getLine(row); - var startIndent = line.search(/\S/); - var startRow = row; - var startColumn = line.length; - row = row + 1; - var endRow = row; - var maxRow = session.getLength(); - while (++row < maxRow) { - line = session.getLine(row); - var indent = line.search(/\S/); - if (indent === -1) - continue; - if (startIndent > indent) - break; - var subRange = this.getFoldWidgetRange(session, "all", row); - - if (subRange) { - if (subRange.start.row <= startRow) { - break; - } else if (subRange.isMultiLine()) { - row = subRange.end.row; - } else if (startIndent == indent) { - break; - } - } - endRow = row; - } - - return new Range(startRow, startColumn, endRow, session.getLine(endRow).length); - }; - -}).call(FoldMode.prototype); - -}); diff --git a/IDE/jsrealb-ide/ace-src-noconflict/mode-asciidoc.js b/IDE/jsrealb-ide/ace-src-noconflict/mode-asciidoc.js deleted file mode 100644 index 7a2ce4ee..00000000 --- a/IDE/jsrealb-ide/ace-src-noconflict/mode-asciidoc.js +++ /dev/null @@ -1,373 +0,0 @@ -/* ***** BEGIN LICENSE BLOCK ***** - * Distributed under the BSD license: - * - * Copyright (c) 2010, Ajax.org B.V. - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are met: - * * Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * * Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * * Neither the name of Ajax.org B.V. nor the - * names of its contributors may be used to endorse or promote products - * derived from this software without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND - * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED - * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE - * DISCLAIMED. IN NO EVENT SHALL AJAX.ORG B.V. BE LIABLE FOR ANY - * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES - * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; - * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND - * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - * - * ***** END LICENSE BLOCK ***** */ - -ace.define('ace/mode/asciidoc', ['require', 'exports', 'module' , 'ace/lib/oop', 'ace/mode/text', 'ace/tokenizer', 'ace/mode/asciidoc_highlight_rules', 'ace/mode/folding/asciidoc'], function(require, exports, module) { - - -var oop = require("../lib/oop"); -var TextMode = require("./text").Mode; -var Tokenizer = require("../tokenizer").Tokenizer; -var AsciidocHighlightRules = require("./asciidoc_highlight_rules").AsciidocHighlightRules; -var AsciidocFoldMode = require("./folding/asciidoc").FoldMode; - -var Mode = function() { - this.HighlightRules = AsciidocHighlightRules; - - this.foldingRules = new AsciidocFoldMode(); -}; -oop.inherits(Mode, TextMode); - -(function() { - this.type = "text"; - this.getNextLineIndent = function(state, line, tab) { - if (state == "listblock") { - var match = /^((?:.+)?)([-+*][ ]+)/.exec(line); - if (match) { - return new Array(match[1].length + 1).join(" ") + match[2]; - } else { - return ""; - } - } else { - return this.$getIndent(line); - } - }; - this.$id = "ace/mode/asciidoc"; -}).call(Mode.prototype); - -exports.Mode = Mode; -}); - -ace.define('ace/mode/asciidoc_highlight_rules', ['require', 'exports', 'module' , 'ace/lib/oop', 'ace/mode/text_highlight_rules'], function(require, exports, module) { - - -var oop = require("../lib/oop"); -var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; - -var AsciidocHighlightRules = function() { - var identifierRe = "[a-zA-Z\u00a1-\uffff]+\\b"; - - this.$rules = { - "start": [ - {token: "empty", regex: /$/}, - {token: "literal", regex: /^\.{4,}\s*$/, next: "listingBlock"}, - {token: "literal", regex: /^-{4,}\s*$/, next: "literalBlock"}, - {token: "string", regex: /^\+{4,}\s*$/, next: "passthroughBlock"}, - {token: "keyword", regex: /^={4,}\s*$/}, - {token: "text", regex: /^\s*$/}, - {token: "empty", regex: "", next: "dissallowDelimitedBlock"} - ], - - "dissallowDelimitedBlock": [ - {include: "paragraphEnd"}, - {token: "comment", regex: '^//.+$'}, - {token: "keyword", regex: "^(?:NOTE|TIP|IMPORTANT|WARNING|CAUTION):"}, - - {include: "listStart"}, - {token: "literal", regex: /^\s+.+$/, next: "indentedBlock"}, - {token: "empty", regex: "", next: "text"} - ], - - "paragraphEnd": [ - {token: "doc.comment", regex: /^\/{4,}\s*$/, next: "commentBlock"}, - {token: "tableBlock", regex: /^\s*[|!]=+\s*$/, next: "tableBlock"}, - {token: "keyword", regex: /^(?:--|''')\s*$/, next: "start"}, - {token: "option", regex: /^\[.*\]\s*$/, next: "start"}, - {token: "pageBreak", regex: /^>{3,}$/, next: "start"}, - {token: "literal", regex: /^\.{4,}\s*$/, next: "listingBlock"}, - {token: "titleUnderline", regex: /^(?:={2,}|-{2,}|~{2,}|\^{2,}|\+{2,})\s*$/, next: "start"}, - {token: "singleLineTitle", regex: /^={1,5}\s+\S.*$/, next: "start"}, - - {token: "otherBlock", regex: /^(?:\*{2,}|_{2,})\s*$/, next: "start"}, - {token: "optionalTitle", regex: /^\.[^.\s].+$/, next: "start"} - ], - - "listStart": [ - {token: "keyword", regex: /^\s*(?:\d+\.|[a-zA-Z]\.|[ixvmIXVM]+\)|\*{1,5}|-|\.{1,5})\s/, next: "listText"}, - {token: "meta.tag", regex: /^.+(?::{2,4}|;;)(?: |$)/, next: "listText"}, - {token: "support.function.list.callout", regex: /^(?:<\d+>|\d+>|>) /, next: "text"}, - {token: "keyword", regex: /^\+\s*$/, next: "start"} - ], - - "text": [ - {token: ["link", "variable.language"], regex: /((?:https?:\/\/|ftp:\/\/|file:\/\/|mailto:|callto:)[^\s\[]+)(\[.*?\])/}, - {token: "link", regex: /(?:https?:\/\/|ftp:\/\/|file:\/\/|mailto:|callto:)[^\s\[]+/}, - {token: "link", regex: /\b[\w\.\/\-]+@[\w\.\/\-]+\b/}, - {include: "macros"}, - {include: "paragraphEnd"}, - {token: "literal", regex:/\+{3,}/, next:"smallPassthrough"}, - {token: "escape", regex: /\((?:C|TM|R)\)|\.{3}|->|<-|=>|<=|&#(?:\d+|x[a-fA-F\d]+);|(?: |^)--(?=\s+\S)/}, - {token: "escape", regex: /\\[_*'`+#]|\\{2}[_*'`+#]{2}/}, - {token: "keyword", regex: /\s\+$/}, - {token: "text", regex: identifierRe}, - {token: ["keyword", "string", "keyword"], - regex: /(<<[\w\d\-$]+,)(.*?)(>>|$)/}, - {token: "keyword", regex: /<<[\w\d\-$]+,?|>>/}, - {token: "constant.character", regex: /\({2,3}.*?\){2,3}/}, - {token: "keyword", regex: /\[\[.+?\]\]/}, - {token: "support", regex: /^\[{3}[\w\d =\-]+\]{3}/}, - - {include: "quotes"}, - {token: "empty", regex: /^\s*$/, next: "start"} - ], - - "listText": [ - {include: "listStart"}, - {include: "text"} - ], - - "indentedBlock": [ - {token: "literal", regex: /^[\s\w].+$/, next: "indentedBlock"}, - {token: "literal", regex: "", next: "start"} - ], - - "listingBlock": [ - {token: "literal", regex: /^\.{4,}\s*$/, next: "dissallowDelimitedBlock"}, - {token: "constant.numeric", regex: '<\\d+>'}, - {token: "literal", regex: '[^<]+'}, - {token: "literal", regex: '<'} - ], - "literalBlock": [ - {token: "literal", regex: /^-{4,}\s*$/, next: "dissallowDelimitedBlock"}, - {token: "constant.numeric", regex: '<\\d+>'}, - {token: "literal", regex: '[^<]+'}, - {token: "literal", regex: '<'} - ], - "passthroughBlock": [ - {token: "literal", regex: /^\+{4,}\s*$/, next: "dissallowDelimitedBlock"}, - {token: "literal", regex: identifierRe + "|\\d+"}, - {include: "macros"}, - {token: "literal", regex: "."} - ], - - "smallPassthrough": [ - {token: "literal", regex: /[+]{3,}/, next: "dissallowDelimitedBlock"}, - {token: "literal", regex: /^\s*$/, next: "dissallowDelimitedBlock"}, - {token: "literal", regex: identifierRe + "|\\d+"}, - {include: "macros"} - ], - - "commentBlock": [ - {token: "doc.comment", regex: /^\/{4,}\s*$/, next: "dissallowDelimitedBlock"}, - {token: "doc.comment", regex: '^.*$'} - ], - "tableBlock": [ - {token: "tableBlock", regex: /^\s*\|={3,}\s*$/, next: "dissallowDelimitedBlock"}, - {token: "tableBlock", regex: /^\s*!={3,}\s*$/, next: "innerTableBlock"}, - {token: "tableBlock", regex: /\|/}, - {include: "text", noEscape: true} - ], - "innerTableBlock": [ - {token: "tableBlock", regex: /^\s*!={3,}\s*$/, next: "tableBlock"}, - {token: "tableBlock", regex: /^\s*|={3,}\s*$/, next: "dissallowDelimitedBlock"}, - {token: "tableBlock", regex: /\!/} - ], - "macros": [ - {token: "macro", regex: /{[\w\-$]+}/}, - {token: ["text", "string", "text", "constant.character", "text"], regex: /({)([\w\-$]+)(:)?(.+)?(})/}, - {token: ["text", "markup.list.macro", "keyword", "string"], regex: /(\w+)(footnote(?:ref)?::?)([^\s\[]+)?(\[.*?\])?/}, - {token: ["markup.list.macro", "keyword", "string"], regex: /([a-zA-Z\-][\w\.\/\-]*::?)([^\s\[]+)(\[.*?\])?/}, - {token: ["markup.list.macro", "keyword"], regex: /([a-zA-Z\-][\w\.\/\-]+::?)(\[.*?\])/}, - {token: "keyword", regex: /^:.+?:(?= |$)/} - ], - - "quotes": [ - {token: "string.italic", regex: /__[^_\s].*?__/}, - {token: "string.italic", regex: quoteRule("_")}, - - {token: "keyword.bold", regex: /\*\*[^*\s].*?\*\*/}, - {token: "keyword.bold", regex: quoteRule("\\*")}, - - {token: "literal", regex: quoteRule("\\+")}, - {token: "literal", regex: /\+\+[^+\s].*?\+\+/}, - {token: "literal", regex: /\$\$.+?\$\$/}, - {token: "literal", regex: quoteRule("`")}, - - {token: "keyword", regex: quoteRule("^")}, - {token: "keyword", regex: quoteRule("~")}, - {token: "keyword", regex: /##?/}, - {token: "keyword", regex: /(?:\B|^)``|\b''/} - ] - - }; - - function quoteRule(ch) { - var prefix = /\w/.test(ch) ? "\\b" : "(?:\\B|^)"; - return prefix + ch + "[^" + ch + "].*?" + ch + "(?![\\w*])"; - } - - var tokenMap = { - macro: "constant.character", - tableBlock: "doc.comment", - titleUnderline: "markup.heading", - singleLineTitle: "markup.heading", - pageBreak: "string", - option: "string.regexp", - otherBlock: "markup.list", - literal: "support.function", - optionalTitle: "constant.numeric", - escape: "constant.language.escape", - link: "markup.underline.list" - }; - - for (var state in this.$rules) { - var stateRules = this.$rules[state]; - for (var i = stateRules.length; i--; ) { - var rule = stateRules[i]; - if (rule.include || typeof rule == "string") { - var args = [i, 1].concat(this.$rules[rule.include || rule]); - if (rule.noEscape) { - args = args.filter(function(x) { - return !x.next; - }); - } - stateRules.splice.apply(stateRules, args); - } else if (rule.token in tokenMap) { - rule.token = tokenMap[rule.token]; - } - } - } -}; -oop.inherits(AsciidocHighlightRules, TextHighlightRules); - -exports.AsciidocHighlightRules = AsciidocHighlightRules; -}); - -ace.define('ace/mode/folding/asciidoc', ['require', 'exports', 'module' , 'ace/lib/oop', 'ace/mode/folding/fold_mode', 'ace/range'], function(require, exports, module) { - - -var oop = require("../../lib/oop"); -var BaseFoldMode = require("./fold_mode").FoldMode; -var Range = require("../../range").Range; - -var FoldMode = exports.FoldMode = function() {}; -oop.inherits(FoldMode, BaseFoldMode); - -(function() { - this.foldingStartMarker = /^(?:\|={10,}|[\.\/=\-~^+]{4,}\s*$|={1,5} )/; - this.singleLineHeadingRe = /^={1,5}(?=\s+\S)/; - - this.getFoldWidget = function(session, foldStyle, row) { - var line = session.getLine(row); - if (!this.foldingStartMarker.test(line)) - return "" - - if (line[0] == "=") { - if (this.singleLineHeadingRe.test(line)) - return "start"; - if (session.getLine(row - 1).length != session.getLine(row).length) - return ""; - return "start"; - } - if (session.bgTokenizer.getState(row) == "dissallowDelimitedBlock") - return "end"; - return "start"; - }; - - this.getFoldWidgetRange = function(session, foldStyle, row) { - var line = session.getLine(row); - var startColumn = line.length; - var maxRow = session.getLength(); - var startRow = row; - var endRow = row; - if (!line.match(this.foldingStartMarker)) - return; - - var token; - function getTokenType(row) { - token = session.getTokens(row)[0]; - return token && token.type; - } - - var levels = ["=","-","~","^","+"]; - var heading = "markup.heading"; - var singleLineHeadingRe = this.singleLineHeadingRe; - function getLevel() { - var match = token.value.match(singleLineHeadingRe); - if (match) - return match[0].length; - var level = levels.indexOf(token.value[0]) + 1; - if (level == 1) { - if (session.getLine(row - 1).length != session.getLine(row).length) - return Infinity; - } - return level; - } - - if (getTokenType(row) == heading) { - var startHeadingLevel = getLevel(); - while (++row < maxRow) { - if (getTokenType(row) != heading) - continue; - var level = getLevel(); - if (level <= startHeadingLevel) - break; - } - - var isSingleLineHeading = token && token.value.match(this.singleLineHeadingRe); - endRow = isSingleLineHeading ? row - 1 : row - 2; - - if (endRow > startRow) { - while (endRow > startRow && (!getTokenType(endRow) || token.value[0] == "[")) - endRow--; - } - - if (endRow > startRow) { - var endColumn = session.getLine(endRow).length; - return new Range(startRow, startColumn, endRow, endColumn); - } - } else { - var state = session.bgTokenizer.getState(row); - if (state == "dissallowDelimitedBlock") { - while (row -- > 0) { - if (session.bgTokenizer.getState(row).lastIndexOf("Block") == -1) - break; - } - endRow = row + 1; - if (endRow < startRow) { - var endColumn = session.getLine(row).length; - return new Range(endRow, 5, startRow, startColumn - 5); - } - } else { - while (++row < maxRow) { - if (session.bgTokenizer.getState(row) == "dissallowDelimitedBlock") - break; - } - endRow = row; - if (endRow > startRow) { - var endColumn = session.getLine(row).length; - return new Range(startRow, 5, endRow, endColumn - 5); - } - } - } - }; - -}).call(FoldMode.prototype); - -}); diff --git a/IDE/jsrealb-ide/ace-src-noconflict/mode-assembly_x86.js b/IDE/jsrealb-ide/ace-src-noconflict/mode-assembly_x86.js deleted file mode 100644 index de54c13a..00000000 --- a/IDE/jsrealb-ide/ace-src-noconflict/mode-assembly_x86.js +++ /dev/null @@ -1,217 +0,0 @@ -/* ***** BEGIN LICENSE BLOCK ***** - * Distributed under the BSD license: - * - * Copyright (c) 2012, Ajax.org B.V. - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are met: - * * Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * * Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * * Neither the name of Ajax.org B.V. nor the - * names of its contributors may be used to endorse or promote products - * derived from this software without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND - * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED - * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE - * DISCLAIMED. IN NO EVENT SHALL AJAX.ORG B.V. BE LIABLE FOR ANY - * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES - * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; - * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND - * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - * - * - * ***** END LICENSE BLOCK ***** */ - -ace.define('ace/mode/assembly_x86', ['require', 'exports', 'module' , 'ace/lib/oop', 'ace/mode/text', 'ace/tokenizer', 'ace/mode/assembly_x86_highlight_rules', 'ace/mode/folding/coffee'], function(require, exports, module) { - - -var oop = require("../lib/oop"); -var TextMode = require("./text").Mode; -var Tokenizer = require("../tokenizer").Tokenizer; -var AssemblyX86HighlightRules = require("./assembly_x86_highlight_rules").AssemblyX86HighlightRules; -var FoldMode = require("./folding/coffee").FoldMode; - -var Mode = function() { - this.HighlightRules = AssemblyX86HighlightRules; - this.foldingRules = new FoldMode(); -}; -oop.inherits(Mode, TextMode); - -(function() { - this.lineCommentStart = ";"; - this.$id = "ace/mode/assembly_x86"; -}).call(Mode.prototype); - -exports.Mode = Mode; -}); - -ace.define('ace/mode/assembly_x86_highlight_rules', ['require', 'exports', 'module' , 'ace/lib/oop', 'ace/mode/text_highlight_rules'], function(require, exports, module) { - - -var oop = require("../lib/oop"); -var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; - -var AssemblyX86HighlightRules = function() { - - this.$rules = { start: - [ { token: 'keyword.control.assembly', - regex: '\\b(?:aaa|aad|aam|aas|adc|add|addpd|addps|addsd|addss|addsubpd|addsubps|aesdec|aesdeclast|aesenc|aesenclast|aesimc|aeskeygenassist|and|andpd|andps|andnpd|andnps|arpl|blendpd|blendps|blendvpd|blendvps|bound|bsf|bsr|bswap|bt|btc|btr|bts|cbw|cwde|cdqe|clc|cld|cflush|clts|cmc|cmov(?:n?e|ge?|ae?|le?|be?|n?o|n?z)|cmp|cmppd|cmpps|cmps|cnpsb|cmpsw|cmpsd|cmpsq|cmpss|cmpxchg|cmpxchg8b|cmpxchg16b|comisd|comiss|cpuid|crc32|cvtdq2pd|cvtdq2ps|cvtpd2dq|cvtpd2pi|cvtpd2ps|cvtpi2pd|cvtpi2ps|cvtps2dq|cvtps2pd|cvtps2pi|cvtsd2si|cvtsd2ss|cvts2sd|cvtsi2ss|cvtss2sd|cvtss2si|cvttpd2dq|cvtpd2pi|cvttps2dq|cvttps2pi|cvttps2dq|cvttps2pi|cvttsd2si|cvttss2si|cwd|cdq|cqo|daa|das|dec|div|divpd|divps|divsd|divss|dppd|dpps|emms|enter|extractps|f2xm1|fabs|fadd|faddp|fiadd|fbld|fbstp|fchs|fclex|fnclex|fcmov(?:n?e|ge?|ae?|le?|be?|n?o|n?z)|fcom|fcmop|fcompp|fcomi|fcomip|fucomi|fucomip|fcos|fdecstp|fdiv|fdivp|fidiv|fdivr|fdivrp|fidivr|ffree|ficom|ficomp|fild|fincstp|finit|fnint|fist|fistp|fisttp|fld|fld1|fldl2t|fldl2e|fldpi|fldlg2|fldln2|fldz|fldcw|fldenv|fmul|fmulp|fimul|fnop|fpatan|fprem|fprem1|fptan|frndint|frstor|fsave|fnsave|fscale|fsin|fsincos|fsqrt|fst|fstp|fstcw|fnstcw|fstenv|fnstenv|fsts|fnstsw|fsub|fsubp|fisub|fsubr|fsubrp|fisubr|ftst|fucom|fucomp|fucompp|fxam|fxch|fxrstor|fxsave|fxtract|fyl2x|fyl2xp1|haddpd|haddps|husbpd|hsubps|idiv|imul|in|inc|ins|insb|insw|insd|insertps|int|into|invd|invplg|invpcid|iret|iretd|iretq|lahf|lar|lddqu|ldmxcsr|lds|les|lfs|lgs|lss|lea|leave|lfence|lgdt|lidt|llgdt|lmsw|lock|lods|lodsb|lodsw|lodsd|lodsq|lsl|ltr|maskmovdqu|maskmovq|maxpd|maxps|maxsd|maxss|mfence|minpd|minps|minsd|minss|monitor|mov|movapd|movaps|movbe|movd|movq|movddup|movdqa|movdqu|movq2q|movhlps|movhpd|movhps|movlhps|movlpd|movlps|movmskpd|movmskps|movntdqa|movntdq|movnti|movntpd|movntps|movntq|movq|movq2dq|movs|movsb|movsw|movsd|movsq|movsd|movshdup|movsldup|movss|movsx|movsxd|movupd|movups|movzx|mpsadbw|mul|mulpd|mulps|mulsd|mulss|mwait|neg|not|or|orpd|orps|out|outs|outsb|outsw|outsd|pabsb|pabsw|pabsd|packsswb|packssdw|packusdw|packuswbpaddb|paddw|paddd|paddq|paddsb|paddsw|paddusb|paddusw|palignr|pand|pandn|pause|pavgb|pavgw|pblendvb|pblendw|pclmulqdq|pcmpeqb|pcmpeqw|pcmpeqd|pcmpeqq|pcmpestri|pcmpestrm|pcmptb|pcmptgw|pcmpgtd|pcmpgtq|pcmpistri|pcmpisrm|pextrb|pextrd|pextrq|pextrw|phaddw|phaddd|phaddsw|phinposuw|phsubw|phsubd|phsubsw|pinsrb|pinsrd|pinsrq|pinsrw|pmaddubsw|pmadddwd|pmaxsb|pmaxsd|pmaxsw|pmaxsw|pmaxub|pmaxud|pmaxuw|pminsb|pminsd|pminsw|pminub|pminud|pminuw|pmovmskb|pmovsx|pmovzx|pmuldq|pmulhrsw|pmulhuw|pmulhw|pmulld|pmullw|pmuludw|pop|popa|popad|popcnt|popf|popfd|popfq|por|prefetch|psadbw|pshufb|pshufd|pshufhw|pshuflw|pshufw|psignb|psignw|psignd|pslldq|psllw|pslld|psllq|psraw|psrad|psrldq|psrlw|psrld|psrlq|psubb|psubw|psubd|psubq|psubsb|psubsw|psubusb|psubusw|test|ptest|punpckhbw|punpckhwd|punpckhdq|punpckhddq|punpcklbw|punpcklwd|punpckldq|punpckldqd|push|pusha|pushad|pushf|pushfd|pxor|prcl|rcr|rol|ror|rcpps|rcpss|rdfsbase|rdgsbase|rdmsr|rdpmc|rdrand|rdtsc|rdtscp|rep|repe|repz|repne|repnz|roundpd|roundps|roundsd|roundss|rsm|rsqrps|rsqrtss|sahf|sal|sar|shl|shr|sbb|scas|scasb|scasw|scasd|set(?:n?e|ge?|ae?|le?|be?|n?o|n?z)|sfence|sgdt|shld|shrd|shufpd|shufps|sidt|sldt|smsw|sqrtpd|sqrtps|sqrtsd|sqrtss|stc|std|stmxcsr|stos|stosb|stosw|stosd|stosq|str|sub|subpd|subps|subsd|subss|swapgs|syscall|sysenter|sysexit|sysret|teset|ucomisd|ucomiss|ud2|unpckhpd|unpckhps|unpcklpd|unpcklps|vbroadcast|vcvtph2ps|vcvtp2sph|verr|verw|vextractf128|vinsertf128|vmaskmov|vpermilpd|vpermilps|vperm2f128|vtestpd|vtestps|vzeroall|vzeroupper|wait|fwait|wbinvd|wrfsbase|wrgsbase|wrmsr|xadd|xchg|xgetbv|xlat|xlatb|xor|xorpd|xorps|xrstor|xsave|xsaveopt|xsetbv|lzcnt|extrq|insertq|movntsd|movntss|vfmaddpd|vfmaddps|vfmaddsd|vfmaddss|vfmaddsubbpd|vfmaddsubps|vfmsubaddpd|vfmsubaddps|vfmsubpd|vfmsubps|vfmsubsd|vfnmaddpd|vfnmaddps|vfnmaddsd|vfnmaddss|vfnmsubpd|vfnmusbps|vfnmusbsd|vfnmusbss|cvt|xor|cli|sti|hlt|nop|lock|wait|enter|leave|ret|loop(?:n?e|n?z)?|call|j(?:mp|n?e|ge?|ae?|le?|be?|n?o|n?z))\\b', - caseInsensitive: true }, - { token: 'variable.parameter.register.assembly', - regex: '\\b(?:CS|DS|ES|FS|GS|SS|RAX|EAX|RBX|EBX|RCX|ECX|RDX|EDX|RCX|RIP|EIP|IP|RSP|ESP|SP|RSI|ESI|SI|RDI|EDI|DI|RFLAGS|EFLAGS|FLAGS|R8-15|(?:Y|X)MM(?:[0-9]|10|11|12|13|14|15)|(?:A|B|C|D)(?:X|H|L)|CR(?:[0-4]|DR(?:[0-7]|TR6|TR7|EFER)))\\b', - caseInsensitive: true }, - { token: 'constant.character.decimal.assembly', - regex: '\\b[0-9]+\\b' }, - { token: 'constant.character.hexadecimal.assembly', - regex: '\\b0x[A-F0-9]+\\b', - caseInsensitive: true }, - { token: 'constant.character.hexadecimal.assembly', - regex: '\\b[A-F0-9]+h\\b', - caseInsensitive: true }, - { token: 'string.assembly', regex: /'([^\\']|\\.)*'/ }, - { token: 'string.assembly', regex: /"([^\\"]|\\.)*"/ }, - { token: 'support.function.directive.assembly', - regex: '^\\[', - push: - [ { token: 'support.function.directive.assembly', - regex: '\\]$', - next: 'pop' }, - { defaultToken: 'support.function.directive.assembly' } ] }, - { token: - [ 'support.function.directive.assembly', - 'support.function.directive.assembly', - 'entity.name.function.assembly' ], - regex: '(^struc)( )([_a-zA-Z][_a-zA-Z0-9]*)' }, - { token: 'support.function.directive.assembly', - regex: '^endstruc\\b' }, - { token: - [ 'support.function.directive.assembly', - 'entity.name.function.assembly', - 'support.function.directive.assembly', - 'constant.character.assembly' ], - regex: '^(%macro )([_a-zA-Z][_a-zA-Z0-9]*)( )([0-9]+)' }, - { token: 'support.function.directive.assembly', - regex: '^%endmacro' }, - { token: - [ 'text', - 'support.function.directive.assembly', - 'text', - 'entity.name.function.assembly' ], - regex: '(\\s*)(%define|%xdefine|%idefine|%undef|%assign|%defstr|%strcat|%strlen|%substr|%00|%0|%rotate|%rep|%endrep|%include|\\$\\$|\\$|%unmacro|%if|%elif|%else|%endif|%(?:el)?ifdef|%(?:el)?ifmacro|%(?:el)?ifctx|%(?:el)?ifidn|%(?:el)?ifidni|%(?:el)?ifid|%(?:el)?ifnum|%(?:el)?ifstr|%(?:el)?iftoken|%(?:el)?ifempty|%(?:el)?ifenv|%pathsearch|%depend|%use|%push|%pop|%repl|%arg|%stacksize|%local|%error|%warning|%fatal|%line|%!|%comment|%endcomment|__NASM_VERSION_ID__|__NASM_VER__|__FILE__|__LINE__|__BITS__|__OUTPUT_FORMAT__|__DATE__|__TIME__|__DATE_NUM__|_TIME__NUM__|__UTC_DATE__|__UTC_TIME__|__UTC_DATE_NUM__|__UTC_TIME_NUM__|__POSIX_TIME__|__PASS__|ISTRUC|AT|IEND|BITS 16|BITS 32|BITS 64|USE16|USE32|__SECT__|ABSOLUTE|EXTERN|GLOBAL|COMMON|CPU|FLOAT)\\b( ?)((?:[_a-zA-Z][_a-zA-Z0-9]*)?)', - caseInsensitive: true }, - { token: 'support.function.directive.assembly', - regex: '\\b(?:d[bwdqtoy]|res[bwdqto]|equ|times|align|alignb|sectalign|section|ptr|byte|word|dword|qword|incbin)\\b', - caseInsensitive: true }, - { token: 'entity.name.function.assembly', regex: '^\\s*%%[\\w.]+?:$' }, - { token: 'entity.name.function.assembly', regex: '^\\s*%\\$[\\w.]+?:$' }, - { token: 'entity.name.function.assembly', regex: '^[\\w.]+?:' }, - { token: 'entity.name.function.assembly', regex: '^[\\w.]+?\\b' }, - { token: 'comment.assembly', regex: ';.*$' } ] - } - - this.normalizeRules(); -}; - -AssemblyX86HighlightRules.metaData = { fileTypes: [ 'asm' ], - name: 'Assembly x86', - scopeName: 'source.assembly' } - - -oop.inherits(AssemblyX86HighlightRules, TextHighlightRules); - -exports.AssemblyX86HighlightRules = AssemblyX86HighlightRules; -}); - -ace.define('ace/mode/folding/coffee', ['require', 'exports', 'module' , 'ace/lib/oop', 'ace/mode/folding/fold_mode', 'ace/range'], function(require, exports, module) { - - -var oop = require("../../lib/oop"); -var BaseFoldMode = require("./fold_mode").FoldMode; -var Range = require("../../range").Range; - -var FoldMode = exports.FoldMode = function() {}; -oop.inherits(FoldMode, BaseFoldMode); - -(function() { - - this.getFoldWidgetRange = function(session, foldStyle, row) { - var range = this.indentationBlock(session, row); - if (range) - return range; - - var re = /\S/; - var line = session.getLine(row); - var startLevel = line.search(re); - if (startLevel == -1 || line[startLevel] != "#") - return; - - var startColumn = line.length; - var maxRow = session.getLength(); - var startRow = row; - var endRow = row; - - while (++row < maxRow) { - line = session.getLine(row); - var level = line.search(re); - - if (level == -1) - continue; - - if (line[level] != "#") - break; - - endRow = row; - } - - if (endRow > startRow) { - var endColumn = session.getLine(endRow).length; - return new Range(startRow, startColumn, endRow, endColumn); - } - }; - this.getFoldWidget = function(session, foldStyle, row) { - var line = session.getLine(row); - var indent = line.search(/\S/); - var next = session.getLine(row + 1); - var prev = session.getLine(row - 1); - var prevIndent = prev.search(/\S/); - var nextIndent = next.search(/\S/); - - if (indent == -1) { - session.foldWidgets[row - 1] = prevIndent!= -1 && prevIndent < nextIndent ? "start" : ""; - return ""; - } - if (prevIndent == -1) { - if (indent == nextIndent && line[indent] == "#" && next[indent] == "#") { - session.foldWidgets[row - 1] = ""; - session.foldWidgets[row + 1] = ""; - return "start"; - } - } else if (prevIndent == indent && line[indent] == "#" && prev[indent] == "#") { - if (session.getLine(row - 2).search(/\S/) == -1) { - session.foldWidgets[row - 1] = "start"; - session.foldWidgets[row + 1] = ""; - return ""; - } - } - - if (prevIndent!= -1 && prevIndent < indent) - session.foldWidgets[row - 1] = "start"; - else - session.foldWidgets[row - 1] = ""; - - if (indent < nextIndent) - return "start"; - else - return ""; - }; - -}).call(FoldMode.prototype); - -}); diff --git a/IDE/jsrealb-ide/ace-src-noconflict/mode-autohotkey.js b/IDE/jsrealb-ide/ace-src-noconflict/mode-autohotkey.js deleted file mode 100644 index 56334b21..00000000 --- a/IDE/jsrealb-ide/ace-src-noconflict/mode-autohotkey.js +++ /dev/null @@ -1,225 +0,0 @@ -/* ***** BEGIN LICENSE BLOCK ***** - * Distributed under the BSD license: - * - * Copyright (c) 2012, Ajax.org B.V. - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are met: - * * Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * * Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * * Neither the name of Ajax.org B.V. nor the - * names of its contributors may be used to endorse or promote products - * derived from this software without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND - * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED - * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE - * DISCLAIMED. IN NO EVENT SHALL AJAX.ORG B.V. BE LIABLE FOR ANY - * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES - * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; - * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND - * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - * - * - * Contributor(s): - * - * - * - * ***** END LICENSE BLOCK ***** */ - -ace.define('ace/mode/autohotkey', ['require', 'exports', 'module' , 'ace/lib/oop', 'ace/mode/text', 'ace/tokenizer', 'ace/mode/autohotkey_highlight_rules', 'ace/mode/folding/cstyle'], function(require, exports, module) { - - -var oop = require("../lib/oop"); -var TextMode = require("./text").Mode; -var Tokenizer = require("../tokenizer").Tokenizer; -var AutoHotKeyHighlightRules = require("./autohotkey_highlight_rules").AutoHotKeyHighlightRules; -var FoldMode = require("./folding/cstyle").FoldMode; - -var Mode = function() { - this.HighlightRules = AutoHotKeyHighlightRules; - this.foldingRules = new FoldMode(); -}; -oop.inherits(Mode, TextMode); - -(function() { - this.lineCommentStart = "/\\*"; - this.blockComment = {start: "/*", end: "*/"}; - this.$id = "ace/mode/autohotkey"; -}).call(Mode.prototype); - -exports.Mode = Mode; -}); - -ace.define('ace/mode/autohotkey_highlight_rules', ['require', 'exports', 'module' , 'ace/lib/oop', 'ace/mode/text_highlight_rules'], function(require, exports, module) { - - -var oop = require("../lib/oop"); -var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; - -var AutoHotKeyHighlightRules = function() { - var autoItKeywords = 'And|ByRef|Case|Const|ContinueCase|ContinueLoop|Default|Dim|Do|Else|ElseIf|EndFunc|EndIf|EndSelect|EndSwitch|EndWith|Enum|Exit|ExitLoop|False|For|Func|Global|If|In|Local|Next|Not|Or|ReDim|Return|Select|Step|Switch|Then|To|True|Until|WEnd|While|With|' + - 'Abs|ACos|AdlibDisable|AdlibEnable|Asc|AscW|ASin|Assign|ATan|AutoItSetOption|AutoItWinGetTitle|AutoItWinSetTitle|Beep|Binary|BinaryLen|BinaryMid|BinaryToString|BitAND|BitNOT|BitOR|BitRotate|BitShift|BitXOR|BlockInput|Break|Call|CDTray|Ceiling|Chr|ChrW|ClipGet|ClipPut|ConsoleRead|ConsoleWrite|ConsoleWriteError|ControlClick|ControlCommand|ControlDisable|ControlEnable|ControlFocus|ControlGetFocus|ControlGetHandle|ControlGetPos|ControlGetText|ControlHide|ControlListView|ControlMove|ControlSend|ControlSetText|ControlShow|ControlTreeView|Cos|Dec|DirCopy|DirCreate|DirGetSize|DirMove|DirRemove|DllCall|DllCallbackFree|DllCallbackGetPtr|DllCallbackRegister|DllClose|DllOpen|DllStructCreate|DllStructGetData|DllStructGetPtr|DllStructGetSize|DllStructSetData|DriveGetDrive|DriveGetFileSystem|DriveGetLabel|DriveGetSerial|DriveGetType|DriveMapAdd|DriveMapDel|DriveMapGet|DriveSetLabel|DriveSpaceFree|DriveSpaceTotal|DriveStatus|EnvGet|EnvSet|EnvUpdate|Eval|Execute|Exp|FileChangeDir|FileClose|FileCopy|FileCreateNTFSLink|FileCreateShortcut|FileDelete|FileExists|FileFindFirstFile|FileFindNextFile|FileGetAttrib|FileGetLongName|FileGetShortcut|FileGetShortName|FileGetSize|FileGetTime|FileGetVersion|FileInstall|FileMove|FileOpen|FileOpenDialog|FileRead|FileReadLine|FileRecycle|FileRecycleEmpty|FileSaveDialog|FileSelectFolder|FileSetAttrib|FileSetTime|FileWrite|FileWriteLine|Floor|FtpSetProxy|GUICreate|GUICtrlCreateAvi|GUICtrlCreateButton|GUICtrlCreateCheckbox|GUICtrlCreateCombo|GUICtrlCreateContextMenu|GUICtrlCreateDate|GUICtrlCreateDummy|GUICtrlCreateEdit|GUICtrlCreateGraphic|GUICtrlCreateGroup|GUICtrlCreateIcon|GUICtrlCreateInput|GUICtrlCreateLabel|GUICtrlCreateList|GUICtrlCreateListView|GUICtrlCreateListViewItem|GUICtrlCreateMenu|GUICtrlCreateMenuItem|GUICtrlCreateMonthCal|GUICtrlCreateObj|GUICtrlCreatePic|GUICtrlCreateProgress|GUICtrlCreateRadio|GUICtrlCreateSlider|GUICtrlCreateTab|GUICtrlCreateTabItem|GUICtrlCreateTreeView|GUICtrlCreateTreeViewItem|GUICtrlCreateUpdown|GUICtrlDelete|GUICtrlGetHandle|GUICtrlGetState|GUICtrlRead|GUICtrlRecvMsg|GUICtrlRegisterListViewSort|GUICtrlSendMsg|GUICtrlSendToDummy|GUICtrlSetBkColor|GUICtrlSetColor|GUICtrlSetCursor|GUICtrlSetData|GUICtrlSetFont|GUICtrlSetDefColor|GUICtrlSetDefBkColor|GUICtrlSetGraphic|GUICtrlSetImage|GUICtrlSetLimit|GUICtrlSetOnEvent|GUICtrlSetPos|GUICtrlSetResizing|GUICtrlSetState|GUICtrlSetStyle|GUICtrlSetTip|GUIDelete|GUIGetCursorInfo|GUIGetMsg|GUIGetStyle|GUIRegisterMsg|GUISetAccelerators()|GUISetBkColor|GUISetCoord|GUISetCursor|GUISetFont|GUISetHelp|GUISetIcon|GUISetOnEvent|GUISetState|GUISetStyle|GUIStartGroup|GUISwitch|Hex|HotKeySet|HttpSetProxy|HWnd|InetGet|InetGetSize|IniDelete|IniRead|IniReadSection|IniReadSectionNames|IniRenameSection|IniWrite|IniWriteSection|InputBox|Int|IsAdmin|IsArray|IsBinary|IsBool|IsDeclared|IsDllStruct|IsFloat|IsHWnd|IsInt|IsKeyword|IsNumber|IsObj|IsPtr|IsString|Log|MemGetStats|Mod|MouseClick|MouseClickDrag|MouseDown|MouseGetCursor|MouseGetPos|MouseMove|MouseUp|MouseWheel|MsgBox|Number|ObjCreate|ObjEvent|ObjGet|ObjName|Opt|Ping|PixelChecksum|PixelGetColor|PixelSearch|PluginClose|PluginOpen|ProcessClose|ProcessExists|ProcessGetStats|ProcessList|ProcessSetPriority|ProcessWait|ProcessWaitClose|ProgressOff|ProgressOn|ProgressSet|Ptr|Random|RegDelete|RegEnumKey|RegEnumVal|RegRead|RegWrite|Round|Run|RunAs|RunAsWait|RunWait|Send|SendKeepActive|SetError|SetExtended|ShellExecute|ShellExecuteWait|Shutdown|Sin|Sleep|SoundPlay|SoundSetWaveVolume|SplashImageOn|SplashOff|SplashTextOn|Sqrt|SRandom|StatusbarGetText|StderrRead|StdinWrite|StdioClose|StdoutRead|String|StringAddCR|StringCompare|StringFormat|StringInStr|StringIsAlNum|StringIsAlpha|StringIsASCII|StringIsDigit|StringIsFloat|StringIsInt|StringIsLower|StringIsSpace|StringIsUpper|StringIsXDigit|StringLeft|StringLen|StringLower|StringMid|StringRegExp|StringRegExpReplace|StringReplace|StringRight|StringSplit|StringStripCR|StringStripWS|StringToBinary|StringTrimLeft|StringTrimRight|StringUpper|Tan|TCPAccept|TCPCloseSocket|TCPConnect|TCPListen|TCPNameToIP|TCPRecv|TCPSend|TCPShutdown|TCPStartup|TimerDiff|TimerInit|ToolTip|TrayCreateItem|TrayCreateMenu|TrayGetMsg|TrayItemDelete|TrayItemGetHandle|TrayItemGetState|TrayItemGetText|TrayItemSetOnEvent|TrayItemSetState|TrayItemSetText|TraySetClick|TraySetIcon|TraySetOnEvent|TraySetPauseIcon|TraySetState|TraySetToolTip|TrayTip|UBound|UDPBind|UDPCloseSocket|UDPOpen|UDPRecv|UDPSend|UDPShutdown|UDPStartup|VarGetType|WinActivate|WinActive|WinClose|WinExists|WinFlash|WinGetCaretPos|WinGetClassList|WinGetClientSize|WinGetHandle|WinGetPos|WinGetProcess|WinGetState|WinGetText|WinGetTitle|WinKill|WinList|WinMenuSelectItem|WinMinimizeAll|WinMinimizeAllUndo|WinMove|WinSetOnTop|WinSetState|WinSetTitle|WinSetTrans|WinWait|WinWaitActive|WinWaitClose|WinWaitNotActive|' + - 'ArrayAdd|ArrayBinarySearch|ArrayConcatenate|ArrayDelete|ArrayDisplay|ArrayFindAll|ArrayInsert|ArrayMax|ArrayMaxIndex|ArrayMin|ArrayMinIndex|ArrayPop|ArrayPush|ArrayReverse|ArraySearch|ArraySort|ArraySwap|ArrayToClip|ArrayToString|ArrayTrim|ChooseColor|ChooseFont|ClipBoard_ChangeChain|ClipBoard_Close|ClipBoard_CountFormats|ClipBoard_Empty|ClipBoard_EnumFormats|ClipBoard_FormatStr|ClipBoard_GetData|ClipBoard_GetDataEx|ClipBoard_GetFormatName|ClipBoard_GetOpenWindow|ClipBoard_GetOwner|ClipBoard_GetPriorityFormat|ClipBoard_GetSequenceNumber|ClipBoard_GetViewer|ClipBoard_IsFormatAvailable|ClipBoard_Open|ClipBoard_RegisterFormat|ClipBoard_SetData|ClipBoard_SetDataEx|ClipBoard_SetViewer|ClipPutFile|ColorConvertHSLtoRGB|ColorConvertRGBtoHSL|ColorGetBlue|ColorGetGreen|ColorGetRed|Date_Time_CompareFileTime|Date_Time_DOSDateTimeToArray|Date_Time_DOSDateTimeToFileTime|Date_Time_DOSDateTimeToStr|Date_Time_DOSDateToArray|Date_Time_DOSDateToStr|Date_Time_DOSTimeToArray|Date_Time_DOSTimeToStr|Date_Time_EncodeFileTime|Date_Time_EncodeSystemTime|Date_Time_FileTimeToArray|Date_Time_FileTimeToDOSDateTime|Date_Time_FileTimeToLocalFileTime|Date_Time_FileTimeToStr|Date_Time_FileTimeToSystemTime|Date_Time_GetFileTime|Date_Time_GetLocalTime|Date_Time_GetSystemTime|Date_Time_GetSystemTimeAdjustment|Date_Time_GetSystemTimeAsFileTime|Date_Time_GetSystemTimes|Date_Time_GetTickCount|Date_Time_GetTimeZoneInformation|Date_Time_LocalFileTimeToFileTime|Date_Time_SetFileTime|Date_Time_SetLocalTime|Date_Time_SetSystemTime|Date_Time_SetSystemTimeAdjustment|Date_Time_SetTimeZoneInformation|Date_Time_SystemTimeToArray|Date_Time_SystemTimeToDateStr|Date_Time_SystemTimeToDateTimeStr|Date_Time_SystemTimeToFileTime|Date_Time_SystemTimeToTimeStr|Date_Time_SystemTimeToTzSpecificLocalTime|Date_Time_TzSpecificLocalTimeToSystemTime|DateAdd|DateDayOfWeek|DateDaysInMonth|DateDiff|DateIsLeapYear|DateIsValid|DateTimeFormat|DateTimeSplit|DateToDayOfWeek|DateToDayOfWeekISO|DateToDayValue|DateToMonth|DayValueToDate|DebugBugReportEnv|DebugOut|DebugSetup|Degree|EventLog__Backup|EventLog__Clear|EventLog__Close|EventLog__Count|EventLog__DeregisterSource|EventLog__Full|EventLog__Notify|EventLog__Oldest|EventLog__Open|EventLog__OpenBackup|EventLog__Read|EventLog__RegisterSource|EventLog__Report|FileCountLines|FileCreate|FileListToArray|FilePrint|FileReadToArray|FileWriteFromArray|FileWriteLog|FileWriteToLine|GDIPlus_ArrowCapCreate|GDIPlus_ArrowCapDispose|GDIPlus_ArrowCapGetFillState|GDIPlus_ArrowCapGetHeight|GDIPlus_ArrowCapGetMiddleInset|GDIPlus_ArrowCapGetWidth|GDIPlus_ArrowCapSetFillState|GDIPlus_ArrowCapSetHeight|GDIPlus_ArrowCapSetMiddleInset|GDIPlus_ArrowCapSetWidth|GDIPlus_BitmapCloneArea|GDIPlus_BitmapCreateFromFile|GDIPlus_BitmapCreateFromGraphics|GDIPlus_BitmapCreateFromHBITMAP|GDIPlus_BitmapCreateHBITMAPFromBitmap|GDIPlus_BitmapDispose|GDIPlus_BitmapLockBits|GDIPlus_BitmapUnlockBits|GDIPlus_BrushClone|GDIPlus_BrushCreateSolid|GDIPlus_BrushDispose|GDIPlus_BrushGetType|GDIPlus_CustomLineCapDispose|GDIPlus_Decoders|GDIPlus_DecodersGetCount|GDIPlus_DecodersGetSize|GDIPlus_Encoders|GDIPlus_EncodersGetCLSID|GDIPlus_EncodersGetCount|GDIPlus_EncodersGetParamList|GDIPlus_EncodersGetParamListSize|GDIPlus_EncodersGetSize|GDIPlus_FontCreate|GDIPlus_FontDispose|GDIPlus_FontFamilyCreate|GDIPlus_FontFamilyDispose|GDIPlus_GraphicsClear|GDIPlus_GraphicsCreateFromHDC|GDIPlus_GraphicsCreateFromHWND|GDIPlus_GraphicsDispose|GDIPlus_GraphicsDrawArc|GDIPlus_GraphicsDrawBezier|GDIPlus_GraphicsDrawClosedCurve|GDIPlus_GraphicsDrawCurve|GDIPlus_GraphicsDrawEllipse|GDIPlus_GraphicsDrawImage|GDIPlus_GraphicsDrawImageRect|GDIPlus_GraphicsDrawImageRectRect|GDIPlus_GraphicsDrawLine|GDIPlus_GraphicsDrawPie|GDIPlus_GraphicsDrawPolygon|GDIPlus_GraphicsDrawRect|GDIPlus_GraphicsDrawString|GDIPlus_GraphicsDrawStringEx|GDIPlus_GraphicsFillClosedCurve|GDIPlus_GraphicsFillEllipse|GDIPlus_GraphicsFillPie|GDIPlus_GraphicsFillRect|GDIPlus_GraphicsGetDC|GDIPlus_GraphicsGetSmoothingMode|GDIPlus_GraphicsMeasureString|GDIPlus_GraphicsReleaseDC|GDIPlus_GraphicsSetSmoothingMode|GDIPlus_GraphicsSetTransform|GDIPlus_ImageDispose|GDIPlus_ImageGetGraphicsContext|GDIPlus_ImageGetHeight|GDIPlus_ImageGetWidth|GDIPlus_ImageLoadFromFile|GDIPlus_ImageSaveToFile|GDIPlus_ImageSaveToFileEx|GDIPlus_MatrixCreate|GDIPlus_MatrixDispose|GDIPlus_MatrixRotate|GDIPlus_ParamAdd|GDIPlus_ParamInit|GDIPlus_PenCreate|GDIPlus_PenDispose|GDIPlus_PenGetAlignment|GDIPlus_PenGetColor|GDIPlus_PenGetCustomEndCap|GDIPlus_PenGetDashCap|GDIPlus_PenGetDashStyle|GDIPlus_PenGetEndCap|GDIPlus_PenGetWidth|GDIPlus_PenSetAlignment|GDIPlus_PenSetColor|GDIPlus_PenSetCustomEndCap|GDIPlus_PenSetDashCap|GDIPlus_PenSetDashStyle|GDIPlus_PenSetEndCap|GDIPlus_PenSetWidth|GDIPlus_RectFCreate|GDIPlus_Shutdown|GDIPlus_Startup|GDIPlus_StringFormatCreate|GDIPlus_StringFormatDispose|GetIP|GUICtrlAVI_Close|GUICtrlAVI_Create|GUICtrlAVI_Destroy|GUICtrlAVI_Open|GUICtrlAVI_OpenEx|GUICtrlAVI_Play|GUICtrlAVI_Seek|GUICtrlAVI_Show|GUICtrlAVI_Stop|GUICtrlButton_Click|GUICtrlButton_Create|GUICtrlButton_Destroy|GUICtrlButton_Enable|GUICtrlButton_GetCheck|GUICtrlButton_GetFocus|GUICtrlButton_GetIdealSize|GUICtrlButton_GetImage|GUICtrlButton_GetImageList|GUICtrlButton_GetState|GUICtrlButton_GetText|GUICtrlButton_GetTextMargin|GUICtrlButton_SetCheck|GUICtrlButton_SetFocus|GUICtrlButton_SetImage|GUICtrlButton_SetImageList|GUICtrlButton_SetSize|GUICtrlButton_SetState|GUICtrlButton_SetStyle|GUICtrlButton_SetText|GUICtrlButton_SetTextMargin|GUICtrlButton_Show|GUICtrlComboBox_AddDir|GUICtrlComboBox_AddString|GUICtrlComboBox_AutoComplete|GUICtrlComboBox_BeginUpdate|GUICtrlComboBox_Create|GUICtrlComboBox_DeleteString|GUICtrlComboBox_Destroy|GUICtrlComboBox_EndUpdate|GUICtrlComboBox_FindString|GUICtrlComboBox_FindStringExact|GUICtrlComboBox_GetComboBoxInfo|GUICtrlComboBox_GetCount|GUICtrlComboBox_GetCurSel|GUICtrlComboBox_GetDroppedControlRect|GUICtrlComboBox_GetDroppedControlRectEx|GUICtrlComboBox_GetDroppedState|GUICtrlComboBox_GetDroppedWidth|GUICtrlComboBox_GetEditSel|GUICtrlComboBox_GetEditText|GUICtrlComboBox_GetExtendedUI|GUICtrlComboBox_GetHorizontalExtent|GUICtrlComboBox_GetItemHeight|GUICtrlComboBox_GetLBText|GUICtrlComboBox_GetLBTextLen|GUICtrlComboBox_GetList|GUICtrlComboBox_GetListArray|GUICtrlComboBox_GetLocale|GUICtrlComboBox_GetLocaleCountry|GUICtrlComboBox_GetLocaleLang|GUICtrlComboBox_GetLocalePrimLang|GUICtrlComboBox_GetLocaleSubLang|GUICtrlComboBox_GetMinVisible|GUICtrlComboBox_GetTopIndex|GUICtrlComboBox_InitStorage|GUICtrlComboBox_InsertString|GUICtrlComboBox_LimitText|GUICtrlComboBox_ReplaceEditSel|GUICtrlComboBox_ResetContent|GUICtrlComboBox_SelectString|GUICtrlComboBox_SetCurSel|GUICtrlComboBox_SetDroppedWidth|GUICtrlComboBox_SetEditSel|GUICtrlComboBox_SetEditText|GUICtrlComboBox_SetExtendedUI|GUICtrlComboBox_SetHorizontalExtent|GUICtrlComboBox_SetItemHeight|GUICtrlComboBox_SetMinVisible|GUICtrlComboBox_SetTopIndex|GUICtrlComboBox_ShowDropDown|GUICtrlComboBoxEx_AddDir|GUICtrlComboBoxEx_AddString|GUICtrlComboBoxEx_BeginUpdate|GUICtrlComboBoxEx_Create|GUICtrlComboBoxEx_CreateSolidBitMap|GUICtrlComboBoxEx_DeleteString|GUICtrlComboBoxEx_Destroy|GUICtrlComboBoxEx_EndUpdate|GUICtrlComboBoxEx_FindStringExact|GUICtrlComboBoxEx_GetComboBoxInfo|GUICtrlComboBoxEx_GetComboControl|GUICtrlComboBoxEx_GetCount|GUICtrlComboBoxEx_GetCurSel|GUICtrlComboBoxEx_GetDroppedControlRect|GUICtrlComboBoxEx_GetDroppedControlRectEx|GUICtrlComboBoxEx_GetDroppedState|GUICtrlComboBoxEx_GetDroppedWidth|GUICtrlComboBoxEx_GetEditControl|GUICtrlComboBoxEx_GetEditSel|GUICtrlComboBoxEx_GetEditText|GUICtrlComboBoxEx_GetExtendedStyle|GUICtrlComboBoxEx_GetExtendedUI|GUICtrlComboBoxEx_GetImageList|GUICtrlComboBoxEx_GetItem|GUICtrlComboBoxEx_GetItemEx|GUICtrlComboBoxEx_GetItemHeight|GUICtrlComboBoxEx_GetItemImage|GUICtrlComboBoxEx_GetItemIndent|GUICtrlComboBoxEx_GetItemOverlayImage|GUICtrlComboBoxEx_GetItemParam|GUICtrlComboBoxEx_GetItemSelectedImage|GUICtrlComboBoxEx_GetItemText|GUICtrlComboBoxEx_GetItemTextLen|GUICtrlComboBoxEx_GetList|GUICtrlComboBoxEx_GetListArray|GUICtrlComboBoxEx_GetLocale|GUICtrlComboBoxEx_GetLocaleCountry|GUICtrlComboBoxEx_GetLocaleLang|GUICtrlComboBoxEx_GetLocalePrimLang|GUICtrlComboBoxEx_GetLocaleSubLang|GUICtrlComboBoxEx_GetMinVisible|GUICtrlComboBoxEx_GetTopIndex|GUICtrlComboBoxEx_InitStorage|GUICtrlComboBoxEx_InsertString|GUICtrlComboBoxEx_LimitText|GUICtrlComboBoxEx_ReplaceEditSel|GUICtrlComboBoxEx_ResetContent|GUICtrlComboBoxEx_SetCurSel|GUICtrlComboBoxEx_SetDroppedWidth|GUICtrlComboBoxEx_SetEditSel|GUICtrlComboBoxEx_SetEditText|GUICtrlComboBoxEx_SetExtendedStyle|GUICtrlComboBoxEx_SetExtendedUI|GUICtrlComboBoxEx_SetImageList|GUICtrlComboBoxEx_SetItem|GUICtrlComboBoxEx_SetItemEx|GUICtrlComboBoxEx_SetItemHeight|GUICtrlComboBoxEx_SetItemImage|GUICtrlComboBoxEx_SetItemIndent|GUICtrlComboBoxEx_SetItemOverlayImage|GUICtrlComboBoxEx_SetItemParam|GUICtrlComboBoxEx_SetItemSelectedImage|GUICtrlComboBoxEx_SetMinVisible|GUICtrlComboBoxEx_SetTopIndex|GUICtrlComboBoxEx_ShowDropDown|GUICtrlDTP_Create|GUICtrlDTP_Destroy|GUICtrlDTP_GetMCColor|GUICtrlDTP_GetMCFont|GUICtrlDTP_GetMonthCal|GUICtrlDTP_GetRange|GUICtrlDTP_GetRangeEx|GUICtrlDTP_GetSystemTime|GUICtrlDTP_GetSystemTimeEx|GUICtrlDTP_SetFormat|GUICtrlDTP_SetMCColor|GUICtrlDTP_SetMCFont|GUICtrlDTP_SetRange|GUICtrlDTP_SetRangeEx|GUICtrlDTP_SetSystemTime|GUICtrlDTP_SetSystemTimeEx|GUICtrlEdit_AppendText|GUICtrlEdit_BeginUpdate|GUICtrlEdit_CanUndo|GUICtrlEdit_CharFromPos|GUICtrlEdit_Create|GUICtrlEdit_Destroy|GUICtrlEdit_EmptyUndoBuffer|GUICtrlEdit_EndUpdate|GUICtrlEdit_Find|GUICtrlEdit_FmtLines|GUICtrlEdit_GetFirstVisibleLine|GUICtrlEdit_GetLimitText|GUICtrlEdit_GetLine|GUICtrlEdit_GetLineCount|GUICtrlEdit_GetMargins|GUICtrlEdit_GetModify|GUICtrlEdit_GetPasswordChar|GUICtrlEdit_GetRECT|GUICtrlEdit_GetRECTEx|GUICtrlEdit_GetSel|GUICtrlEdit_GetText|GUICtrlEdit_GetTextLen|GUICtrlEdit_HideBalloonTip|GUICtrlEdit_InsertText|GUICtrlEdit_LineFromChar|GUICtrlEdit_LineIndex|GUICtrlEdit_LineLength|GUICtrlEdit_LineScroll|GUICtrlEdit_PosFromChar|GUICtrlEdit_ReplaceSel|GUICtrlEdit_Scroll|GUICtrlEdit_SetLimitText|GUICtrlEdit_SetMargins|GUICtrlEdit_SetModify|GUICtrlEdit_SetPasswordChar|GUICtrlEdit_SetReadOnly|GUICtrlEdit_SetRECT|GUICtrlEdit_SetRECTEx|GUICtrlEdit_SetRECTNP|GUICtrlEdit_SetRectNPEx|GUICtrlEdit_SetSel|GUICtrlEdit_SetTabStops|GUICtrlEdit_SetText|GUICtrlEdit_ShowBalloonTip|GUICtrlEdit_Undo|GUICtrlHeader_AddItem|GUICtrlHeader_ClearFilter|GUICtrlHeader_ClearFilterAll|GUICtrlHeader_Create|GUICtrlHeader_CreateDragImage|GUICtrlHeader_DeleteItem|GUICtrlHeader_Destroy|GUICtrlHeader_EditFilter|GUICtrlHeader_GetBitmapMargin|GUICtrlHeader_GetImageList|GUICtrlHeader_GetItem|GUICtrlHeader_GetItemAlign|GUICtrlHeader_GetItemBitmap|GUICtrlHeader_GetItemCount|GUICtrlHeader_GetItemDisplay|GUICtrlHeader_GetItemFlags|GUICtrlHeader_GetItemFormat|GUICtrlHeader_GetItemImage|GUICtrlHeader_GetItemOrder|GUICtrlHeader_GetItemParam|GUICtrlHeader_GetItemRect|GUICtrlHeader_GetItemRectEx|GUICtrlHeader_GetItemText|GUICtrlHeader_GetItemWidth|GUICtrlHeader_GetOrderArray|GUICtrlHeader_GetUnicodeFormat|GUICtrlHeader_HitTest|GUICtrlHeader_InsertItem|GUICtrlHeader_Layout|GUICtrlHeader_OrderToIndex|GUICtrlHeader_SetBitmapMargin|GUICtrlHeader_SetFilterChangeTimeout|GUICtrlHeader_SetHotDivider|GUICtrlHeader_SetImageList|GUICtrlHeader_SetItem|GUICtrlHeader_SetItemAlign|GUICtrlHeader_SetItemBitmap|GUICtrlHeader_SetItemDisplay|GUICtrlHeader_SetItemFlags|GUICtrlHeader_SetItemFormat|GUICtrlHeader_SetItemImage|GUICtrlHeader_SetItemOrder|GUICtrlHeader_SetItemParam|GUICtrlHeader_SetItemText|GUICtrlHeader_SetItemWidth|GUICtrlHeader_SetOrderArray|GUICtrlHeader_SetUnicodeFormat|GUICtrlIpAddress_ClearAddress|GUICtrlIpAddress_Create|GUICtrlIpAddress_Destroy|GUICtrlIpAddress_Get|GUICtrlIpAddress_GetArray|GUICtrlIpAddress_GetEx|GUICtrlIpAddress_IsBlank|GUICtrlIpAddress_Set|GUICtrlIpAddress_SetArray|GUICtrlIpAddress_SetEx|GUICtrlIpAddress_SetFocus|GUICtrlIpAddress_SetFont|GUICtrlIpAddress_SetRange|GUICtrlIpAddress_ShowHide|GUICtrlListBox_AddFile|GUICtrlListBox_AddString|GUICtrlListBox_BeginUpdate|GUICtrlListBox_Create|GUICtrlListBox_DeleteString|GUICtrlListBox_Destroy|GUICtrlListBox_Dir|GUICtrlListBox_EndUpdate|GUICtrlListBox_FindInText|GUICtrlListBox_FindString|GUICtrlListBox_GetAnchorIndex|GUICtrlListBox_GetCaretIndex|GUICtrlListBox_GetCount|GUICtrlListBox_GetCurSel|GUICtrlListBox_GetHorizontalExtent|GUICtrlListBox_GetItemData|GUICtrlListBox_GetItemHeight|GUICtrlListBox_GetItemRect|GUICtrlListBox_GetItemRectEx|GUICtrlListBox_GetListBoxInfo|GUICtrlListBox_GetLocale|GUICtrlListBox_GetLocaleCountry|GUICtrlListBox_GetLocaleLang|GUICtrlListBox_GetLocalePrimLang|GUICtrlListBox_GetLocaleSubLang|GUICtrlListBox_GetSel|GUICtrlListBox_GetSelCount|GUICtrlListBox_GetSelItems|GUICtrlListBox_GetSelItemsText|GUICtrlListBox_GetText|GUICtrlListBox_GetTextLen|GUICtrlListBox_GetTopIndex|GUICtrlListBox_InitStorage|GUICtrlListBox_InsertString|GUICtrlListBox_ItemFromPoint|GUICtrlListBox_ReplaceString|GUICtrlListBox_ResetContent|GUICtrlListBox_SelectString|GUICtrlListBox_SelItemRange|GUICtrlListBox_SelItemRangeEx|GUICtrlListBox_SetAnchorIndex|GUICtrlListBox_SetCaretIndex|GUICtrlListBox_SetColumnWidth|GUICtrlListBox_SetCurSel|GUICtrlListBox_SetHorizontalExtent|GUICtrlListBox_SetItemData|GUICtrlListBox_SetItemHeight|GUICtrlListBox_SetLocale|GUICtrlListBox_SetSel|GUICtrlListBox_SetTabStops|GUICtrlListBox_SetTopIndex|GUICtrlListBox_Sort|GUICtrlListBox_SwapString|GUICtrlListBox_UpdateHScroll|GUICtrlListView_AddArray|GUICtrlListView_AddColumn|GUICtrlListView_AddItem|GUICtrlListView_AddSubItem|GUICtrlListView_ApproximateViewHeight|GUICtrlListView_ApproximateViewRect|GUICtrlListView_ApproximateViewWidth|GUICtrlListView_Arrange|GUICtrlListView_BeginUpdate|GUICtrlListView_CancelEditLabel|GUICtrlListView_ClickItem|GUICtrlListView_CopyItems|GUICtrlListView_Create|GUICtrlListView_CreateDragImage|GUICtrlListView_CreateSolidBitMap|GUICtrlListView_DeleteAllItems|GUICtrlListView_DeleteColumn|GUICtrlListView_DeleteItem|GUICtrlListView_DeleteItemsSelected|GUICtrlListView_Destroy|GUICtrlListView_DrawDragImage|GUICtrlListView_EditLabel|GUICtrlListView_EnableGroupView|GUICtrlListView_EndUpdate|GUICtrlListView_EnsureVisible|GUICtrlListView_FindInText|GUICtrlListView_FindItem|GUICtrlListView_FindNearest|GUICtrlListView_FindParam|GUICtrlListView_FindText|GUICtrlListView_GetBkColor|GUICtrlListView_GetBkImage|GUICtrlListView_GetCallbackMask|GUICtrlListView_GetColumn|GUICtrlListView_GetColumnCount|GUICtrlListView_GetColumnOrder|GUICtrlListView_GetColumnOrderArray|GUICtrlListView_GetColumnWidth|GUICtrlListView_GetCounterPage|GUICtrlListView_GetEditControl|GUICtrlListView_GetExtendedListViewStyle|GUICtrlListView_GetGroupInfo|GUICtrlListView_GetGroupViewEnabled|GUICtrlListView_GetHeader|GUICtrlListView_GetHotCursor|GUICtrlListView_GetHotItem|GUICtrlListView_GetHoverTime|GUICtrlListView_GetImageList|GUICtrlListView_GetISearchString|GUICtrlListView_GetItem|GUICtrlListView_GetItemChecked|GUICtrlListView_GetItemCount|GUICtrlListView_GetItemCut|GUICtrlListView_GetItemDropHilited|GUICtrlListView_GetItemEx|GUICtrlListView_GetItemFocused|GUICtrlListView_GetItemGroupID|GUICtrlListView_GetItemImage|GUICtrlListView_GetItemIndent|GUICtrlListView_GetItemParam|GUICtrlListView_GetItemPosition|GUICtrlListView_GetItemPositionX|GUICtrlListView_GetItemPositionY|GUICtrlListView_GetItemRect|GUICtrlListView_GetItemRectEx|GUICtrlListView_GetItemSelected|GUICtrlListView_GetItemSpacing|GUICtrlListView_GetItemSpacingX|GUICtrlListView_GetItemSpacingY|GUICtrlListView_GetItemState|GUICtrlListView_GetItemStateImage|GUICtrlListView_GetItemText|GUICtrlListView_GetItemTextArray|GUICtrlListView_GetItemTextString|GUICtrlListView_GetNextItem|GUICtrlListView_GetNumberOfWorkAreas|GUICtrlListView_GetOrigin|GUICtrlListView_GetOriginX|GUICtrlListView_GetOriginY|GUICtrlListView_GetOutlineColor|GUICtrlListView_GetSelectedColumn|GUICtrlListView_GetSelectedCount|GUICtrlListView_GetSelectedIndices|GUICtrlListView_GetSelectionMark|GUICtrlListView_GetStringWidth|GUICtrlListView_GetSubItemRect|GUICtrlListView_GetTextBkColor|GUICtrlListView_GetTextColor|GUICtrlListView_GetToolTips|GUICtrlListView_GetTopIndex|GUICtrlListView_GetUnicodeFormat|GUICtrlListView_GetView|GUICtrlListView_GetViewDetails|GUICtrlListView_GetViewLarge|GUICtrlListView_GetViewList|GUICtrlListView_GetViewRect|GUICtrlListView_GetViewSmall|GUICtrlListView_GetViewTile|GUICtrlListView_HideColumn|GUICtrlListView_HitTest|GUICtrlListView_InsertColumn|GUICtrlListView_InsertGroup|GUICtrlListView_InsertItem|GUICtrlListView_JustifyColumn|GUICtrlListView_MapIDToIndex|GUICtrlListView_MapIndexToID|GUICtrlListView_RedrawItems|GUICtrlListView_RegisterSortCallBack|GUICtrlListView_RemoveAllGroups|GUICtrlListView_RemoveGroup|GUICtrlListView_Scroll|GUICtrlListView_SetBkColor|GUICtrlListView_SetBkImage|GUICtrlListView_SetCallBackMask|GUICtrlListView_SetColumn|GUICtrlListView_SetColumnOrder|GUICtrlListView_SetColumnOrderArray|GUICtrlListView_SetColumnWidth|GUICtrlListView_SetExtendedListViewStyle|GUICtrlListView_SetGroupInfo|GUICtrlListView_SetHotItem|GUICtrlListView_SetHoverTime|GUICtrlListView_SetIconSpacing|GUICtrlListView_SetImageList|GUICtrlListView_SetItem|GUICtrlListView_SetItemChecked|GUICtrlListView_SetItemCount|GUICtrlListView_SetItemCut|GUICtrlListView_SetItemDropHilited|GUICtrlListView_SetItemEx|GUICtrlListView_SetItemFocused|GUICtrlListView_SetItemGroupID|GUICtrlListView_SetItemImage|GUICtrlListView_SetItemIndent|GUICtrlListView_SetItemParam|GUICtrlListView_SetItemPosition|GUICtrlListView_SetItemPosition32|GUICtrlListView_SetItemSelected|GUICtrlListView_SetItemState|GUICtrlListView_SetItemStateImage|GUICtrlListView_SetItemText|GUICtrlListView_SetOutlineColor|GUICtrlListView_SetSelectedColumn|GUICtrlListView_SetSelectionMark|GUICtrlListView_SetTextBkColor|GUICtrlListView_SetTextColor|GUICtrlListView_SetToolTips|GUICtrlListView_SetUnicodeFormat|GUICtrlListView_SetView|GUICtrlListView_SetWorkAreas|GUICtrlListView_SimpleSort|GUICtrlListView_SortItems|GUICtrlListView_SubItemHitTest|GUICtrlListView_UnRegisterSortCallBack|GUICtrlMenu_AddMenuItem|GUICtrlMenu_AppendMenu|GUICtrlMenu_CheckMenuItem|GUICtrlMenu_CheckRadioItem|GUICtrlMenu_CreateMenu|GUICtrlMenu_CreatePopup|GUICtrlMenu_DeleteMenu|GUICtrlMenu_DestroyMenu|GUICtrlMenu_DrawMenuBar|GUICtrlMenu_EnableMenuItem|GUICtrlMenu_FindItem|GUICtrlMenu_FindParent|GUICtrlMenu_GetItemBmp|GUICtrlMenu_GetItemBmpChecked|GUICtrlMenu_GetItemBmpUnchecked|GUICtrlMenu_GetItemChecked|GUICtrlMenu_GetItemCount|GUICtrlMenu_GetItemData|GUICtrlMenu_GetItemDefault|GUICtrlMenu_GetItemDisabled|GUICtrlMenu_GetItemEnabled|GUICtrlMenu_GetItemGrayed|GUICtrlMenu_GetItemHighlighted|GUICtrlMenu_GetItemID|GUICtrlMenu_GetItemInfo|GUICtrlMenu_GetItemRect|GUICtrlMenu_GetItemRectEx|GUICtrlMenu_GetItemState|GUICtrlMenu_GetItemStateEx|GUICtrlMenu_GetItemSubMenu|GUICtrlMenu_GetItemText|GUICtrlMenu_GetItemType|GUICtrlMenu_GetMenu|GUICtrlMenu_GetMenuBackground|GUICtrlMenu_GetMenuBarInfo|GUICtrlMenu_GetMenuContextHelpID|GUICtrlMenu_GetMenuData|GUICtrlMenu_GetMenuDefaultItem|GUICtrlMenu_GetMenuHeight|GUICtrlMenu_GetMenuInfo|GUICtrlMenu_GetMenuStyle|GUICtrlMenu_GetSystemMenu|GUICtrlMenu_InsertMenuItem|GUICtrlMenu_InsertMenuItemEx|GUICtrlMenu_IsMenu|GUICtrlMenu_LoadMenu|GUICtrlMenu_MapAccelerator|GUICtrlMenu_MenuItemFromPoint|GUICtrlMenu_RemoveMenu|GUICtrlMenu_SetItemBitmaps|GUICtrlMenu_SetItemBmp|GUICtrlMenu_SetItemBmpChecked|GUICtrlMenu_SetItemBmpUnchecked|GUICtrlMenu_SetItemChecked|GUICtrlMenu_SetItemData|GUICtrlMenu_SetItemDefault|GUICtrlMenu_SetItemDisabled|GUICtrlMenu_SetItemEnabled|GUICtrlMenu_SetItemGrayed|GUICtrlMenu_SetItemHighlighted|GUICtrlMenu_SetItemID|GUICtrlMenu_SetItemInfo|GUICtrlMenu_SetItemState|GUICtrlMenu_SetItemSubMenu|GUICtrlMenu_SetItemText|GUICtrlMenu_SetItemType|GUICtrlMenu_SetMenu|GUICtrlMenu_SetMenuBackground|GUICtrlMenu_SetMenuContextHelpID|GUICtrlMenu_SetMenuData|GUICtrlMenu_SetMenuDefaultItem|GUICtrlMenu_SetMenuHeight|GUICtrlMenu_SetMenuInfo|GUICtrlMenu_SetMenuStyle|GUICtrlMenu_TrackPopupMenu|GUICtrlMonthCal_Create|GUICtrlMonthCal_Destroy|GUICtrlMonthCal_GetColor|GUICtrlMonthCal_GetColorArray|GUICtrlMonthCal_GetCurSel|GUICtrlMonthCal_GetCurSelStr|GUICtrlMonthCal_GetFirstDOW|GUICtrlMonthCal_GetFirstDOWStr|GUICtrlMonthCal_GetMaxSelCount|GUICtrlMonthCal_GetMaxTodayWidth|GUICtrlMonthCal_GetMinReqHeight|GUICtrlMonthCal_GetMinReqRect|GUICtrlMonthCal_GetMinReqRectArray|GUICtrlMonthCal_GetMinReqWidth|GUICtrlMonthCal_GetMonthDelta|GUICtrlMonthCal_GetMonthRange|GUICtrlMonthCal_GetMonthRangeMax|GUICtrlMonthCal_GetMonthRangeMaxStr|GUICtrlMonthCal_GetMonthRangeMin|GUICtrlMonthCal_GetMonthRangeMinStr|GUICtrlMonthCal_GetMonthRangeSpan|GUICtrlMonthCal_GetRange|GUICtrlMonthCal_GetRangeMax|GUICtrlMonthCal_GetRangeMaxStr|GUICtrlMonthCal_GetRangeMin|GUICtrlMonthCal_GetRangeMinStr|GUICtrlMonthCal_GetSelRange|GUICtrlMonthCal_GetSelRangeMax|GUICtrlMonthCal_GetSelRangeMaxStr|GUICtrlMonthCal_GetSelRangeMin|GUICtrlMonthCal_GetSelRangeMinStr|GUICtrlMonthCal_GetToday|GUICtrlMonthCal_GetTodayStr|GUICtrlMonthCal_GetUnicodeFormat|GUICtrlMonthCal_HitTest|GUICtrlMonthCal_SetColor|GUICtrlMonthCal_SetCurSel|GUICtrlMonthCal_SetDayState|GUICtrlMonthCal_SetFirstDOW|GUICtrlMonthCal_SetMaxSelCount|GUICtrlMonthCal_SetMonthDelta|GUICtrlMonthCal_SetRange|GUICtrlMonthCal_SetSelRange|GUICtrlMonthCal_SetToday|GUICtrlMonthCal_SetUnicodeFormat|GUICtrlRebar_AddBand|GUICtrlRebar_AddToolBarBand|GUICtrlRebar_BeginDrag|GUICtrlRebar_Create|GUICtrlRebar_DeleteBand|GUICtrlRebar_Destroy|GUICtrlRebar_DragMove|GUICtrlRebar_EndDrag|GUICtrlRebar_GetBandBackColor|GUICtrlRebar_GetBandBorders|GUICtrlRebar_GetBandBordersEx|GUICtrlRebar_GetBandChildHandle|GUICtrlRebar_GetBandChildSize|GUICtrlRebar_GetBandCount|GUICtrlRebar_GetBandForeColor|GUICtrlRebar_GetBandHeaderSize|GUICtrlRebar_GetBandID|GUICtrlRebar_GetBandIdealSize|GUICtrlRebar_GetBandLength|GUICtrlRebar_GetBandLParam|GUICtrlRebar_GetBandMargins|GUICtrlRebar_GetBandMarginsEx|GUICtrlRebar_GetBandRect|GUICtrlRebar_GetBandRectEx|GUICtrlRebar_GetBandStyle|GUICtrlRebar_GetBandStyleBreak|GUICtrlRebar_GetBandStyleChildEdge|GUICtrlRebar_GetBandStyleFixedBMP|GUICtrlRebar_GetBandStyleFixedSize|GUICtrlRebar_GetBandStyleGripperAlways|GUICtrlRebar_GetBandStyleHidden|GUICtrlRebar_GetBandStyleHideTitle|GUICtrlRebar_GetBandStyleNoGripper|GUICtrlRebar_GetBandStyleTopAlign|GUICtrlRebar_GetBandStyleUseChevron|GUICtrlRebar_GetBandStyleVariableHeight|GUICtrlRebar_GetBandText|GUICtrlRebar_GetBarHeight|GUICtrlRebar_GetBKColor|GUICtrlRebar_GetColorScheme|GUICtrlRebar_GetRowCount|GUICtrlRebar_GetRowHeight|GUICtrlRebar_GetTextColor|GUICtrlRebar_GetToolTips|GUICtrlRebar_GetUnicodeFormat|GUICtrlRebar_HitTest|GUICtrlRebar_IDToIndex|GUICtrlRebar_MaximizeBand|GUICtrlRebar_MinimizeBand|GUICtrlRebar_MoveBand|GUICtrlRebar_SetBandBackColor|GUICtrlRebar_SetBandForeColor|GUICtrlRebar_SetBandHeaderSize|GUICtrlRebar_SetBandID|GUICtrlRebar_SetBandIdealSize|GUICtrlRebar_SetBandLength|GUICtrlRebar_SetBandLParam|GUICtrlRebar_SetBandStyle|GUICtrlRebar_SetBandStyleBreak|GUICtrlRebar_SetBandStyleChildEdge|GUICtrlRebar_SetBandStyleFixedBMP|GUICtrlRebar_SetBandStyleFixedSize|GUICtrlRebar_SetBandStyleGripperAlways|GUICtrlRebar_SetBandStyleHidden|GUICtrlRebar_SetBandStyleHideTitle|GUICtrlRebar_SetBandStyleNoGripper|GUICtrlRebar_SetBandStyleTopAlign|GUICtrlRebar_SetBandStyleUseChevron|GUICtrlRebar_SetBandStyleVariableHeight|GUICtrlRebar_SetBandText|GUICtrlRebar_SetBKColor|GUICtrlRebar_SetColorScheme|GUICtrlRebar_SetTextColor|GUICtrlRebar_SetToolTips|GUICtrlRebar_SetUnicodeFormat|GUICtrlRebar_ShowBand|GUICtrlSlider_ClearSel|GUICtrlSlider_ClearTics|GUICtrlSlider_Create|GUICtrlSlider_Destroy|GUICtrlSlider_GetBuddy|GUICtrlSlider_GetChannelRect|GUICtrlSlider_GetLineSize|GUICtrlSlider_GetNumTics|GUICtrlSlider_GetPageSize|GUICtrlSlider_GetPos|GUICtrlSlider_GetPTics|GUICtrlSlider_GetRange|GUICtrlSlider_GetRangeMax|GUICtrlSlider_GetRangeMin|GUICtrlSlider_GetSel|GUICtrlSlider_GetSelEnd|GUICtrlSlider_GetSelStart|GUICtrlSlider_GetThumbLength|GUICtrlSlider_GetThumbRect|GUICtrlSlider_GetThumbRectEx|GUICtrlSlider_GetTic|GUICtrlSlider_GetTicPos|GUICtrlSlider_GetToolTips|GUICtrlSlider_GetUnicodeFormat|GUICtrlSlider_SetBuddy|GUICtrlSlider_SetLineSize|GUICtrlSlider_SetPageSize|GUICtrlSlider_SetPos|GUICtrlSlider_SetRange|GUICtrlSlider_SetRangeMax|GUICtrlSlider_SetRangeMin|GUICtrlSlider_SetSel|GUICtrlSlider_SetSelEnd|GUICtrlSlider_SetSelStart|GUICtrlSlider_SetThumbLength|GUICtrlSlider_SetTic|GUICtrlSlider_SetTicFreq|GUICtrlSlider_SetTipSide|GUICtrlSlider_SetToolTips|GUICtrlSlider_SetUnicodeFormat|GUICtrlStatusBar_Create|GUICtrlStatusBar_Destroy|GUICtrlStatusBar_EmbedControl|GUICtrlStatusBar_GetBorders|GUICtrlStatusBar_GetBordersHorz|GUICtrlStatusBar_GetBordersRect|GUICtrlStatusBar_GetBordersVert|GUICtrlStatusBar_GetCount|GUICtrlStatusBar_GetHeight|GUICtrlStatusBar_GetIcon|GUICtrlStatusBar_GetParts|GUICtrlStatusBar_GetRect|GUICtrlStatusBar_GetRectEx|GUICtrlStatusBar_GetText|GUICtrlStatusBar_GetTextFlags|GUICtrlStatusBar_GetTextLength|GUICtrlStatusBar_GetTextLengthEx|GUICtrlStatusBar_GetTipText|GUICtrlStatusBar_GetUnicodeFormat|GUICtrlStatusBar_GetWidth|GUICtrlStatusBar_IsSimple|GUICtrlStatusBar_Resize|GUICtrlStatusBar_SetBkColor|GUICtrlStatusBar_SetIcon|GUICtrlStatusBar_SetMinHeight|GUICtrlStatusBar_SetParts|GUICtrlStatusBar_SetSimple|GUICtrlStatusBar_SetText|GUICtrlStatusBar_SetTipText|GUICtrlStatusBar_SetUnicodeFormat|GUICtrlStatusBar_ShowHide|GUICtrlTab_Create|GUICtrlTab_DeleteAllItems|GUICtrlTab_DeleteItem|GUICtrlTab_DeselectAll|GUICtrlTab_Destroy|GUICtrlTab_FindTab|GUICtrlTab_GetCurFocus|GUICtrlTab_GetCurSel|GUICtrlTab_GetDisplayRect|GUICtrlTab_GetDisplayRectEx|GUICtrlTab_GetExtendedStyle|GUICtrlTab_GetImageList|GUICtrlTab_GetItem|GUICtrlTab_GetItemCount|GUICtrlTab_GetItemImage|GUICtrlTab_GetItemParam|GUICtrlTab_GetItemRect|GUICtrlTab_GetItemRectEx|GUICtrlTab_GetItemState|GUICtrlTab_GetItemText|GUICtrlTab_GetRowCount|GUICtrlTab_GetToolTips|GUICtrlTab_GetUnicodeFormat|GUICtrlTab_HighlightItem|GUICtrlTab_HitTest|GUICtrlTab_InsertItem|GUICtrlTab_RemoveImage|GUICtrlTab_SetCurFocus|GUICtrlTab_SetCurSel|GUICtrlTab_SetExtendedStyle|GUICtrlTab_SetImageList|GUICtrlTab_SetItem|GUICtrlTab_SetItemImage|GUICtrlTab_SetItemParam|GUICtrlTab_SetItemSize|GUICtrlTab_SetItemState|GUICtrlTab_SetItemText|GUICtrlTab_SetMinTabWidth|GUICtrlTab_SetPadding|GUICtrlTab_SetToolTips|GUICtrlTab_SetUnicodeFormat|GUICtrlToolbar_AddBitmap|GUICtrlToolbar_AddButton|GUICtrlToolbar_AddButtonSep|GUICtrlToolbar_AddString|GUICtrlToolbar_ButtonCount|GUICtrlToolbar_CheckButton|GUICtrlToolbar_ClickAccel|GUICtrlToolbar_ClickButton|GUICtrlToolbar_ClickIndex|GUICtrlToolbar_CommandToIndex|GUICtrlToolbar_Create|GUICtrlToolbar_Customize|GUICtrlToolbar_DeleteButton|GUICtrlToolbar_Destroy|GUICtrlToolbar_EnableButton|GUICtrlToolbar_FindToolbar|GUICtrlToolbar_GetAnchorHighlight|GUICtrlToolbar_GetBitmapFlags|GUICtrlToolbar_GetButtonBitmap|GUICtrlToolbar_GetButtonInfo|GUICtrlToolbar_GetButtonInfoEx|GUICtrlToolbar_GetButtonParam|GUICtrlToolbar_GetButtonRect|GUICtrlToolbar_GetButtonRectEx|GUICtrlToolbar_GetButtonSize|GUICtrlToolbar_GetButtonState|GUICtrlToolbar_GetButtonStyle|GUICtrlToolbar_GetButtonText|GUICtrlToolbar_GetColorScheme|GUICtrlToolbar_GetDisabledImageList|GUICtrlToolbar_GetExtendedStyle|GUICtrlToolbar_GetHotImageList|GUICtrlToolbar_GetHotItem|GUICtrlToolbar_GetImageList|GUICtrlToolbar_GetInsertMark|GUICtrlToolbar_GetInsertMarkColor|GUICtrlToolbar_GetMaxSize|GUICtrlToolbar_GetMetrics|GUICtrlToolbar_GetPadding|GUICtrlToolbar_GetRows|GUICtrlToolbar_GetString|GUICtrlToolbar_GetStyle|GUICtrlToolbar_GetStyleAltDrag|GUICtrlToolbar_GetStyleCustomErase|GUICtrlToolbar_GetStyleFlat|GUICtrlToolbar_GetStyleList|GUICtrlToolbar_GetStyleRegisterDrop|GUICtrlToolbar_GetStyleToolTips|GUICtrlToolbar_GetStyleTransparent|GUICtrlToolbar_GetStyleWrapable|GUICtrlToolbar_GetTextRows|GUICtrlToolbar_GetToolTips|GUICtrlToolbar_GetUnicodeFormat|GUICtrlToolbar_HideButton|GUICtrlToolbar_HighlightButton|GUICtrlToolbar_HitTest|GUICtrlToolbar_IndexToCommand|GUICtrlToolbar_InsertButton|GUICtrlToolbar_InsertMarkHitTest|GUICtrlToolbar_IsButtonChecked|GUICtrlToolbar_IsButtonEnabled|GUICtrlToolbar_IsButtonHidden|GUICtrlToolbar_IsButtonHighlighted|GUICtrlToolbar_IsButtonIndeterminate|GUICtrlToolbar_IsButtonPressed|GUICtrlToolbar_LoadBitmap|GUICtrlToolbar_LoadImages|GUICtrlToolbar_MapAccelerator|GUICtrlToolbar_MoveButton|GUICtrlToolbar_PressButton|GUICtrlToolbar_SetAnchorHighlight|GUICtrlToolbar_SetBitmapSize|GUICtrlToolbar_SetButtonBitMap|GUICtrlToolbar_SetButtonInfo|GUICtrlToolbar_SetButtonInfoEx|GUICtrlToolbar_SetButtonParam|GUICtrlToolbar_SetButtonSize|GUICtrlToolbar_SetButtonState|GUICtrlToolbar_SetButtonStyle|GUICtrlToolbar_SetButtonText|GUICtrlToolbar_SetButtonWidth|GUICtrlToolbar_SetCmdID|GUICtrlToolbar_SetColorScheme|GUICtrlToolbar_SetDisabledImageList|GUICtrlToolbar_SetDrawTextFlags|GUICtrlToolbar_SetExtendedStyle|GUICtrlToolbar_SetHotImageList|GUICtrlToolbar_SetHotItem|GUICtrlToolbar_SetImageList|GUICtrlToolbar_SetIndent|GUICtrlToolbar_SetIndeterminate|GUICtrlToolbar_SetInsertMark|GUICtrlToolbar_SetInsertMarkColor|GUICtrlToolbar_SetMaxTextRows|GUICtrlToolbar_SetMetrics|GUICtrlToolbar_SetPadding|GUICtrlToolbar_SetParent|GUICtrlToolbar_SetRows|GUICtrlToolbar_SetStyle|GUICtrlToolbar_SetStyleAltDrag|GUICtrlToolbar_SetStyleCustomErase|GUICtrlToolbar_SetStyleFlat|GUICtrlToolbar_SetStyleList|GUICtrlToolbar_SetStyleRegisterDrop|GUICtrlToolbar_SetStyleToolTips|GUICtrlToolbar_SetStyleTransparent|GUICtrlToolbar_SetStyleWrapable|GUICtrlToolbar_SetToolTips|GUICtrlToolbar_SetUnicodeFormat|GUICtrlToolbar_SetWindowTheme|GUICtrlTreeView_Add|GUICtrlTreeView_AddChild|GUICtrlTreeView_AddChildFirst|GUICtrlTreeView_AddFirst|GUICtrlTreeView_BeginUpdate|GUICtrlTreeView_ClickItem|GUICtrlTreeView_Create|GUICtrlTreeView_CreateDragImage|GUICtrlTreeView_CreateSolidBitMap|GUICtrlTreeView_Delete|GUICtrlTreeView_DeleteAll|GUICtrlTreeView_DeleteChildren|GUICtrlTreeView_Destroy|GUICtrlTreeView_DisplayRect|GUICtrlTreeView_DisplayRectEx|GUICtrlTreeView_EditText|GUICtrlTreeView_EndEdit|GUICtrlTreeView_EndUpdate|GUICtrlTreeView_EnsureVisible|GUICtrlTreeView_Expand|GUICtrlTreeView_ExpandedOnce|GUICtrlTreeView_FindItem|GUICtrlTreeView_FindItemEx|GUICtrlTreeView_GetBkColor|GUICtrlTreeView_GetBold|GUICtrlTreeView_GetChecked|GUICtrlTreeView_GetChildCount|GUICtrlTreeView_GetChildren|GUICtrlTreeView_GetCount|GUICtrlTreeView_GetCut|GUICtrlTreeView_GetDropTarget|GUICtrlTreeView_GetEditControl|GUICtrlTreeView_GetExpanded|GUICtrlTreeView_GetFirstChild|GUICtrlTreeView_GetFirstItem|GUICtrlTreeView_GetFirstVisible|GUICtrlTreeView_GetFocused|GUICtrlTreeView_GetHeight|GUICtrlTreeView_GetImageIndex|GUICtrlTreeView_GetImageListIconHandle|GUICtrlTreeView_GetIndent|GUICtrlTreeView_GetInsertMarkColor|GUICtrlTreeView_GetISearchString|GUICtrlTreeView_GetItemByIndex|GUICtrlTreeView_GetItemHandle|GUICtrlTreeView_GetItemParam|GUICtrlTreeView_GetLastChild|GUICtrlTreeView_GetLineColor|GUICtrlTreeView_GetNext|GUICtrlTreeView_GetNextChild|GUICtrlTreeView_GetNextSibling|GUICtrlTreeView_GetNextVisible|GUICtrlTreeView_GetNormalImageList|GUICtrlTreeView_GetParentHandle|GUICtrlTreeView_GetParentParam|GUICtrlTreeView_GetPrev|GUICtrlTreeView_GetPrevChild|GUICtrlTreeView_GetPrevSibling|GUICtrlTreeView_GetPrevVisible|GUICtrlTreeView_GetScrollTime|GUICtrlTreeView_GetSelected|GUICtrlTreeView_GetSelectedImageIndex|GUICtrlTreeView_GetSelection|GUICtrlTreeView_GetSiblingCount|GUICtrlTreeView_GetState|GUICtrlTreeView_GetStateImageIndex|GUICtrlTreeView_GetStateImageList|GUICtrlTreeView_GetText|GUICtrlTreeView_GetTextColor|GUICtrlTreeView_GetToolTips|GUICtrlTreeView_GetTree|GUICtrlTreeView_GetUnicodeFormat|GUICtrlTreeView_GetVisible|GUICtrlTreeView_GetVisibleCount|GUICtrlTreeView_HitTest|GUICtrlTreeView_HitTestEx|GUICtrlTreeView_HitTestItem|GUICtrlTreeView_Index|GUICtrlTreeView_InsertItem|GUICtrlTreeView_IsFirstItem|GUICtrlTreeView_IsParent|GUICtrlTreeView_Level|GUICtrlTreeView_SelectItem|GUICtrlTreeView_SelectItemByIndex|GUICtrlTreeView_SetBkColor|GUICtrlTreeView_SetBold|GUICtrlTreeView_SetChecked|GUICtrlTreeView_SetCheckedByIndex|GUICtrlTreeView_SetChildren|GUICtrlTreeView_SetCut|GUICtrlTreeView_SetDropTarget|GUICtrlTreeView_SetFocused|GUICtrlTreeView_SetHeight|GUICtrlTreeView_SetIcon|GUICtrlTreeView_SetImageIndex|GUICtrlTreeView_SetIndent|GUICtrlTreeView_SetInsertMark|GUICtrlTreeView_SetInsertMarkColor|GUICtrlTreeView_SetItemHeight|GUICtrlTreeView_SetItemParam|GUICtrlTreeView_SetLineColor|GUICtrlTreeView_SetNormalImageList|GUICtrlTreeView_SetScrollTime|GUICtrlTreeView_SetSelected|GUICtrlTreeView_SetSelectedImageIndex|GUICtrlTreeView_SetState|GUICtrlTreeView_SetStateImageIndex|GUICtrlTreeView_SetStateImageList|GUICtrlTreeView_SetText|GUICtrlTreeView_SetTextColor|GUICtrlTreeView_SetToolTips|GUICtrlTreeView_SetUnicodeFormat|GUICtrlTreeView_Sort|GUIImageList_Add|GUIImageList_AddBitmap|GUIImageList_AddIcon|GUIImageList_AddMasked|GUIImageList_BeginDrag|GUIImageList_Copy|GUIImageList_Create|GUIImageList_Destroy|GUIImageList_DestroyIcon|GUIImageList_DragEnter|GUIImageList_DragLeave|GUIImageList_DragMove|GUIImageList_Draw|GUIImageList_DrawEx|GUIImageList_Duplicate|GUIImageList_EndDrag|GUIImageList_GetBkColor|GUIImageList_GetIcon|GUIImageList_GetIconHeight|GUIImageList_GetIconSize|GUIImageList_GetIconSizeEx|GUIImageList_GetIconWidth|GUIImageList_GetImageCount|GUIImageList_GetImageInfoEx|GUIImageList_Remove|GUIImageList_ReplaceIcon|GUIImageList_SetBkColor|GUIImageList_SetIconSize|GUIImageList_SetImageCount|GUIImageList_Swap|GUIScrollBars_EnableScrollBar|GUIScrollBars_GetScrollBarInfoEx|GUIScrollBars_GetScrollBarRect|GUIScrollBars_GetScrollBarRGState|GUIScrollBars_GetScrollBarXYLineButton|GUIScrollBars_GetScrollBarXYThumbBottom|GUIScrollBars_GetScrollBarXYThumbTop|GUIScrollBars_GetScrollInfo|GUIScrollBars_GetScrollInfoEx|GUIScrollBars_GetScrollInfoMax|GUIScrollBars_GetScrollInfoMin|GUIScrollBars_GetScrollInfoPage|GUIScrollBars_GetScrollInfoPos|GUIScrollBars_GetScrollInfoTrackPos|GUIScrollBars_GetScrollPos|GUIScrollBars_GetScrollRange|GUIScrollBars_Init|GUIScrollBars_ScrollWindow|GUIScrollBars_SetScrollInfo|GUIScrollBars_SetScrollInfoMax|GUIScrollBars_SetScrollInfoMin|GUIScrollBars_SetScrollInfoPage|GUIScrollBars_SetScrollInfoPos|GUIScrollBars_SetScrollRange|GUIScrollBars_ShowScrollBar|GUIToolTip_Activate|GUIToolTip_AddTool|GUIToolTip_AdjustRect|GUIToolTip_BitsToTTF|GUIToolTip_Create|GUIToolTip_DelTool|GUIToolTip_Destroy|GUIToolTip_EnumTools|GUIToolTip_GetBubbleHeight|GUIToolTip_GetBubbleSize|GUIToolTip_GetBubbleWidth|GUIToolTip_GetCurrentTool|GUIToolTip_GetDelayTime|GUIToolTip_GetMargin|GUIToolTip_GetMarginEx|GUIToolTip_GetMaxTipWidth|GUIToolTip_GetText|GUIToolTip_GetTipBkColor|GUIToolTip_GetTipTextColor|GUIToolTip_GetTitleBitMap|GUIToolTip_GetTitleText|GUIToolTip_GetToolCount|GUIToolTip_GetToolInfo|GUIToolTip_HitTest|GUIToolTip_NewToolRect|GUIToolTip_Pop|GUIToolTip_PopUp|GUIToolTip_SetDelayTime|GUIToolTip_SetMargin|GUIToolTip_SetMaxTipWidth|GUIToolTip_SetTipBkColor|GUIToolTip_SetTipTextColor|GUIToolTip_SetTitle|GUIToolTip_SetToolInfo|GUIToolTip_SetWindowTheme|GUIToolTip_ToolExists|GUIToolTip_ToolToArray|GUIToolTip_TrackActivate|GUIToolTip_TrackPosition|GUIToolTip_TTFToBits|GUIToolTip_Update|GUIToolTip_UpdateTipText|HexToString|IE_Example|IE_Introduction|IE_VersionInfo|IEAction|IEAttach|IEBodyReadHTML|IEBodyReadText|IEBodyWriteHTML|IECreate|IECreateEmbedded|IEDocGetObj|IEDocInsertHTML|IEDocInsertText|IEDocReadHTML|IEDocWriteHTML|IEErrorHandlerDeRegister|IEErrorHandlerRegister|IEErrorNotify|IEFormElementCheckBoxSelect|IEFormElementGetCollection|IEFormElementGetObjByName|IEFormElementGetValue|IEFormElementOptionSelect|IEFormElementRadioSelect|IEFormElementSetValue|IEFormGetCollection|IEFormGetObjByName|IEFormImageClick|IEFormReset|IEFormSubmit|IEFrameGetCollection|IEFrameGetObjByName|IEGetObjById|IEGetObjByName|IEHeadInsertEventScript|IEImgClick|IEImgGetCollection|IEIsFrameSet|IELinkClickByIndex|IELinkClickByText|IELinkGetCollection|IELoadWait|IELoadWaitTimeout|IENavigate|IEPropertyGet|IEPropertySet|IEQuit|IETableGetCollection|IETableWriteToArray|IETagNameAllGetCollection|IETagNameGetCollection|Iif|INetExplorerCapable|INetGetSource|INetMail|INetSmtpMail|IsPressed|MathCheckDiv|Max|MemGlobalAlloc|MemGlobalFree|MemGlobalLock|MemGlobalSize|MemGlobalUnlock|MemMoveMemory|MemMsgBox|MemShowError|MemVirtualAlloc|MemVirtualAllocEx|MemVirtualFree|MemVirtualFreeEx|Min|MouseTrap|NamedPipes_CallNamedPipe|NamedPipes_ConnectNamedPipe|NamedPipes_CreateNamedPipe|NamedPipes_CreatePipe|NamedPipes_DisconnectNamedPipe|NamedPipes_GetNamedPipeHandleState|NamedPipes_GetNamedPipeInfo|NamedPipes_PeekNamedPipe|NamedPipes_SetNamedPipeHandleState|NamedPipes_TransactNamedPipe|NamedPipes_WaitNamedPipe|Net_Share_ConnectionEnum|Net_Share_FileClose|Net_Share_FileEnum|Net_Share_FileGetInfo|Net_Share_PermStr|Net_Share_ResourceStr|Net_Share_SessionDel|Net_Share_SessionEnum|Net_Share_SessionGetInfo|Net_Share_ShareAdd|Net_Share_ShareCheck|Net_Share_ShareDel|Net_Share_ShareEnum|Net_Share_ShareGetInfo|Net_Share_ShareSetInfo|Net_Share_StatisticsGetSvr|Net_Share_StatisticsGetWrk|Now|NowCalc|NowCalcDate|NowDate|NowTime|PathFull|PathMake|PathSplit|ProcessGetName|ProcessGetPriority|Radian|ReplaceStringInFile|RunDOS|ScreenCapture_Capture|ScreenCapture_CaptureWnd|ScreenCapture_SaveImage|ScreenCapture_SetBMPFormat|ScreenCapture_SetJPGQuality|ScreenCapture_SetTIFColorDepth|ScreenCapture_SetTIFCompression|Security__AdjustTokenPrivileges|Security__GetAccountSid|Security__GetLengthSid|Security__GetTokenInformation|Security__ImpersonateSelf|Security__IsValidSid|Security__LookupAccountName|Security__LookupAccountSid|Security__LookupPrivilegeValue|Security__OpenProcessToken|Security__OpenThreadToken|Security__OpenThreadTokenEx|Security__SetPrivilege|Security__SidToStringSid|Security__SidTypeStr|Security__StringSidToSid|SendMessage|SendMessageA|SetDate|SetTime|Singleton|SoundClose|SoundLength|SoundOpen|SoundPause|SoundPlay|SoundPos|SoundResume|SoundSeek|SoundStatus|SoundStop|SQLite_Changes|SQLite_Close|SQLite_Display2DResult|SQLite_Encode|SQLite_ErrCode|SQLite_ErrMsg|SQLite_Escape|SQLite_Exec|SQLite_FetchData|SQLite_FetchNames|SQLite_GetTable|SQLite_GetTable2d|SQLite_LastInsertRowID|SQLite_LibVersion|SQLite_Open|SQLite_Query|SQLite_QueryFinalize|SQLite_QueryReset|SQLite_QuerySingleRow|SQLite_SaveMode|SQLite_SetTimeout|SQLite_Shutdown|SQLite_SQLiteExe|SQLite_Startup|SQLite_TotalChanges|StringAddComma|StringBetween|StringEncrypt|StringInsert|StringProper|StringRepeat|StringReverse|StringSplit|StringToHex|TCPIpToName|TempFile|TicksToTime|Timer_Diff|Timer_GetTimerID|Timer_Init|Timer_KillAllTimers|Timer_KillTimer|Timer_SetTimer|TimeToTicks|VersionCompare|viClose|viExecCommand|viFindGpib|viGpibBusReset|viGTL|viOpen|viSetAttribute|viSetTimeout|WeekNumberISO|WinAPI_AttachConsole|WinAPI_AttachThreadInput|WinAPI_Beep|WinAPI_BitBlt|WinAPI_CallNextHookEx|WinAPI_Check|WinAPI_ClientToScreen|WinAPI_CloseHandle|WinAPI_CommDlgExtendedError|WinAPI_CopyIcon|WinAPI_CreateBitmap|WinAPI_CreateCompatibleBitmap|WinAPI_CreateCompatibleDC|WinAPI_CreateEvent|WinAPI_CreateFile|WinAPI_CreateFont|WinAPI_CreateFontIndirect|WinAPI_CreateProcess|WinAPI_CreateSolidBitmap|WinAPI_CreateSolidBrush|WinAPI_CreateWindowEx|WinAPI_DefWindowProc|WinAPI_DeleteDC|WinAPI_DeleteObject|WinAPI_DestroyIcon|WinAPI_DestroyWindow|WinAPI_DrawEdge|WinAPI_DrawFrameControl|WinAPI_DrawIcon|WinAPI_DrawIconEx|WinAPI_DrawText|WinAPI_EnableWindow|WinAPI_EnumDisplayDevices|WinAPI_EnumWindows|WinAPI_EnumWindowsPopup|WinAPI_EnumWindowsTop|WinAPI_ExpandEnvironmentStrings|WinAPI_ExtractIconEx|WinAPI_FatalAppExit|WinAPI_FillRect|WinAPI_FindExecutable|WinAPI_FindWindow|WinAPI_FlashWindow|WinAPI_FlashWindowEx|WinAPI_FloatToInt|WinAPI_FlushFileBuffers|WinAPI_FormatMessage|WinAPI_FrameRect|WinAPI_FreeLibrary|WinAPI_GetAncestor|WinAPI_GetAsyncKeyState|WinAPI_GetClassName|WinAPI_GetClientHeight|WinAPI_GetClientRect|WinAPI_GetClientWidth|WinAPI_GetCurrentProcess|WinAPI_GetCurrentProcessID|WinAPI_GetCurrentThread|WinAPI_GetCurrentThreadId|WinAPI_GetCursorInfo|WinAPI_GetDC|WinAPI_GetDesktopWindow|WinAPI_GetDeviceCaps|WinAPI_GetDIBits|WinAPI_GetDlgCtrlID|WinAPI_GetDlgItem|WinAPI_GetFileSizeEx|WinAPI_GetFocus|WinAPI_GetForegroundWindow|WinAPI_GetIconInfo|WinAPI_GetLastError|WinAPI_GetLastErrorMessage|WinAPI_GetModuleHandle|WinAPI_GetMousePos|WinAPI_GetMousePosX|WinAPI_GetMousePosY|WinAPI_GetObject|WinAPI_GetOpenFileName|WinAPI_GetOverlappedResult|WinAPI_GetParent|WinAPI_GetProcessAffinityMask|WinAPI_GetSaveFileName|WinAPI_GetStdHandle|WinAPI_GetStockObject|WinAPI_GetSysColor|WinAPI_GetSysColorBrush|WinAPI_GetSystemMetrics|WinAPI_GetTextExtentPoint32|WinAPI_GetWindow|WinAPI_GetWindowDC|WinAPI_GetWindowHeight|WinAPI_GetWindowLong|WinAPI_GetWindowRect|WinAPI_GetWindowText|WinAPI_GetWindowThreadProcessId|WinAPI_GetWindowWidth|WinAPI_GetXYFromPoint|WinAPI_GlobalMemStatus|WinAPI_GUIDFromString|WinAPI_GUIDFromStringEx|WinAPI_HiWord|WinAPI_InProcess|WinAPI_IntToFloat|WinAPI_InvalidateRect|WinAPI_IsClassName|WinAPI_IsWindow|WinAPI_IsWindowVisible|WinAPI_LoadBitmap|WinAPI_LoadImage|WinAPI_LoadLibrary|WinAPI_LoadLibraryEx|WinAPI_LoadShell32Icon|WinAPI_LoadString|WinAPI_LocalFree|WinAPI_LoWord|WinAPI_MakeDWord|WinAPI_MAKELANGID|WinAPI_MAKELCID|WinAPI_MakeLong|WinAPI_MessageBeep|WinAPI_Mouse_Event|WinAPI_MoveWindow|WinAPI_MsgBox|WinAPI_MulDiv|WinAPI_MultiByteToWideChar|WinAPI_MultiByteToWideCharEx|WinAPI_OpenProcess|WinAPI_PointFromRect|WinAPI_PostMessage|WinAPI_PrimaryLangId|WinAPI_PtInRect|WinAPI_ReadFile|WinAPI_ReadProcessMemory|WinAPI_RectIsEmpty|WinAPI_RedrawWindow|WinAPI_RegisterWindowMessage|WinAPI_ReleaseCapture|WinAPI_ReleaseDC|WinAPI_ScreenToClient|WinAPI_SelectObject|WinAPI_SetBkColor|WinAPI_SetCapture|WinAPI_SetCursor|WinAPI_SetDefaultPrinter|WinAPI_SetDIBits|WinAPI_SetEvent|WinAPI_SetFocus|WinAPI_SetFont|WinAPI_SetHandleInformation|WinAPI_SetLastError|WinAPI_SetParent|WinAPI_SetProcessAffinityMask|WinAPI_SetSysColors|WinAPI_SetTextColor|WinAPI_SetWindowLong|WinAPI_SetWindowPos|WinAPI_SetWindowsHookEx|WinAPI_SetWindowText|WinAPI_ShowCursor|WinAPI_ShowError|WinAPI_ShowMsg|WinAPI_ShowWindow|WinAPI_StringFromGUID|WinAPI_SubLangId|WinAPI_SystemParametersInfo|WinAPI_TwipsPerPixelX|WinAPI_TwipsPerPixelY|WinAPI_UnhookWindowsHookEx|WinAPI_UpdateLayeredWindow|WinAPI_UpdateWindow|WinAPI_ValidateClassName|WinAPI_WaitForInputIdle|WinAPI_WaitForMultipleObjects|WinAPI_WaitForSingleObject|WinAPI_WideCharToMultiByte|WinAPI_WindowFromPoint|WinAPI_WriteConsole|WinAPI_WriteFile|WinAPI_WriteProcessMemory|WinNet_AddConnection|WinNet_AddConnection2|WinNet_AddConnection3|WinNet_CancelConnection|WinNet_CancelConnection2|WinNet_CloseEnum|WinNet_ConnectionDialog|WinNet_ConnectionDialog1|WinNet_DisconnectDialog|WinNet_DisconnectDialog1|WinNet_EnumResource|WinNet_GetConnection|WinNet_GetConnectionPerformance|WinNet_GetLastError|WinNet_GetNetworkInformation|WinNet_GetProviderName|WinNet_GetResourceInformation|WinNet_GetResourceParent|WinNet_GetUniversalName|WinNet_GetUser|WinNet_OpenEnum|WinNet_RestoreConnection|WinNet_UseConnection|Word_VersionInfo|WordAttach|WordCreate|WordDocAdd|WordDocAddLink|WordDocAddPicture|WordDocClose|WordDocFindReplace|WordDocGetCollection|WordDocLinkGetCollection|WordDocOpen|WordDocPrint|WordDocPropertyGet|WordDocPropertySet|WordDocSave|WordDocSaveAs|WordErrorHandlerDeRegister|WordErrorHandlerRegister|WordErrorNotify|WordMacroRun|WordPropertyGet|WordPropertySet|WordQuit|' + - 'ce|comments-end|comments-start|cs|include|include-once|NoTrayIcon|RequireAdmin|' + - 'AutoIt3Wrapper_Au3Check_Parameters|AutoIt3Wrapper_Au3Check_Stop_OnWarning|AutoIt3Wrapper_Change2CUI|AutoIt3Wrapper_Compression|AutoIt3Wrapper_cvsWrapper_Parameters|AutoIt3Wrapper_Icon|AutoIt3Wrapper_Outfile|AutoIt3Wrapper_Outfile_Type|AutoIt3Wrapper_Plugin_Funcs|AutoIt3Wrapper_Res_Comment|AutoIt3Wrapper_Res_Description|AutoIt3Wrapper_Res_Field|AutoIt3Wrapper_Res_File_Add|AutoIt3Wrapper_Res_Fileversion|AutoIt3Wrapper_Res_FileVersion_AutoIncrement|AutoIt3Wrapper_Res_Icon_Add|AutoIt3Wrapper_Res_Language|AutoIt3Wrapper_Res_LegalCopyright|AutoIt3Wrapper_res_requestedExecutionLevel|AutoIt3Wrapper_Res_SaveSource|AutoIt3Wrapper_Run_After|AutoIt3Wrapper_Run_Au3check|AutoIt3Wrapper_Run_Before|AutoIt3Wrapper_Run_cvsWrapper|AutoIt3Wrapper_Run_Debug_Mode|AutoIt3Wrapper_Run_Obfuscator|AutoIt3Wrapper_Run_Tidy|AutoIt3Wrapper_Tidy_Stop_OnError|AutoIt3Wrapper_UseAnsi|AutoIt3Wrapper_UseUpx|AutoIt3Wrapper_UseX64|AutoIt3Wrapper_Version|EndRegion|forceref|Obfuscator_Ignore_Funcs|Obfuscator_Ignore_Variables|Obfuscator_Parameters|Region|Tidy_Parameters' - var atKeywords = 'AppDataCommonDir|AppDataDir|AutoItExe|AutoItPID|AutoItUnicode|AutoItVersion|AutoItX64|COM_EventObj|CommonFilesDir|Compiled|ComputerName|ComSpec|CR|CRLF|DesktopCommonDir|DesktopDepth|DesktopDir|DesktopHeight|DesktopRefresh|DesktopWidth|DocumentsCommonDir|error|exitCode|exitMethod|extended|FavoritesCommonDir|FavoritesDir|GUI_CtrlHandle|GUI_CtrlId|GUI_DragFile|GUI_DragId|GUI_DropId|GUI_WinHandle|HomeDrive|HomePath|HomeShare|HotKeyPressed|HOUR|InetGetActive|InetGetBytesRead|IPAddress1|IPAddress2|IPAddress3|IPAddress4|KBLayout|LF|LogonDNSDomain|LogonDomain|LogonServer|MDAY|MIN|MON|MyDocumentsDir|NumParams|OSBuild|OSLang|OSServicePack|OSTYPE|OSVersion|ProcessorArch|ProgramFilesDir|ProgramsCommonDir|ProgramsDir|ScriptDir|ScriptFullPath|ScriptLineNumber|ScriptName|SEC|StartMenuCommonDir|StartMenuDir|StartupCommonDir|StartupDir|SW_DISABLE|SW_ENABLE|SW_HIDE|SW_LOCK|SW_MAXIMIZE|SW_MINIMIZE|SW_RESTORE|SW_SHOW|SW_SHOWDEFAULT|SW_SHOWMAXIMIZED|SW_SHOWMINIMIZED|SW_SHOWMINNOACTIVE|SW_SHOWNA|SW_SHOWNOACTIVATE|SW_SHOWNORMAL|SW_UNLOCK|SystemDir|TAB|TempDir|TRAY_ID|TrayIconFlashing|TrayIconVisible|UserName|UserProfileDir|WDAY|WindowsDir|WorkingDir|YDAY|YEAR' - - this.$rules = { start: - [ { token: 'comment.line.ahk', regex: '(?:^| );.*$' }, - { token: 'comment.block.ahk', - regex: '/\\*', push: - [ { token: 'comment.block.ahk', regex: '\\*/', next: 'pop' }, - { defaultToken: 'comment.block.ahk' } ] }, - { token: 'doc.comment.ahk', - regex: '#cs', push: - [ { token: 'doc.comment.ahk', regex: '#ce', next: 'pop' }, - { defaultToken: 'doc.comment.ahk' } ] }, - { token: 'keyword.command.ahk', - regex: '(?:\\b|^)(?:allowsamelinecomments|clipboardtimeout|commentflag|errorstdout|escapechar|hotkeyinterval|hotkeymodifiertimeout|hotstring|include|includeagain|installkeybdhook|installmousehook|keyhistory|ltrim|maxhotkeysperinterval|maxmem|maxthreads|maxthreadsbuffer|maxthreadsperhotkey|noenv|notrayicon|persistent|singleinstance|usehook|winactivateforce|autotrim|blockinput|click|clipwait|continue|control|controlclick|controlfocus|controlget|controlgetfocus|controlgetpos|controlgettext|controlmove|controlsend|controlsendraw|controlsettext|coordmode|critical|detecthiddentext|detecthiddenwindows|drive|driveget|drivespacefree|edit|endrepeat|envadd|envdiv|envget|envmult|envset|envsub|envupdate|exit|exitapp|fileappend|filecopy|filecopydir|filecreatedir|filecreateshortcut|filedelete|filegetattrib|filegetshortcut|filegetsize|filegettime|filegetversion|fileinstall|filemove|filemovedir|fileread|filereadline|filerecycle|filerecycleempty|fileremovedir|fileselectfile|fileselectfolder|filesetattrib|filesettime|formattime|getkeystate|gosub|goto|groupactivate|groupadd|groupclose|groupdeactivate|gui|guicontrol|guicontrolget|hideautoitwin|hotkey|ifequal|ifexist|ifgreater|ifgreaterorequal|ifinstring|ifless|iflessorequal|ifmsgbox|ifnotequal|ifnotexist|ifnotinstring|ifwinactive|ifwinexist|ifwinnotactive|ifwinnotexist|imagesearch|inidelete|iniread|iniwrite|input|inputbox|keyhistory|keywait|listhotkeys|listlines|listvars|menu|mouseclick|mouseclickdrag|mousegetpos|mousemove|msgbox|onexit|outputdebug|pause|pixelgetcolor|pixelsearch|postmessage|process|progress|random|regdelete|regread|regwrite|reload|repeat|run|runas|runwait|send|sendevent|sendinput|sendmode|sendplay|sendmessage|sendraw|setbatchlines|setcapslockstate|setcontroldelay|setdefaultmousespeed|setenv|setformat|setkeydelay|setmousedelay|setnumlockstate|setscrolllockstate|setstorecapslockmode|settimer|settitlematchmode|setwindelay|setworkingdir|shutdown|sleep|sort|soundbeep|soundget|soundgetwavevolume|soundplay|soundset|soundsetwavevolume|splashimage|splashtextoff|splashtexton|splitpath|statusbargettext|statusbarwait|stringcasesense|stringgetpos|stringleft|stringlen|stringlower|stringmid|stringreplace|stringright|stringsplit|stringtrimleft|stringtrimright|stringupper|suspend|sysget|thread|tooltip|transform|traytip|urldownloadtofile|while|winactivate|winactivatebottom|winclose|winget|wingetactivestats|wingetactivetitle|wingetclass|wingetpos|wingettext|wingettitle|winhide|winkill|winmaximize|winmenuselectitem|winminimize|winminimizeall|winminimizeallundo|winmove|winrestore|winset|winsettitle|winshow|winwait|winwaitactive|winwaitclose|winwaitnotactive)\\b', - caseInsensitive: true }, - { token: 'keyword.control.ahk', - regex: '(?:\\b|^)(?:if|else|return|loop|break|for|while|global|local|byref)\\b', - caseInsensitive: true }, - { token: 'support.function.ahk', - regex: '(?:\\b|^)(?:abs|acos|asc|asin|atan|ceil|chr|cos|dllcall|exp|fileexist|floor|getkeystate|il_add|il_create|il_destroy|instr|substr|isfunc|islabel|ln|log|lv_add|lv_delete|lv_deletecol|lv_getcount|lv_getnext|lv_gettext|lv_insert|lv_insertcol|lv_modify|lv_modifycol|lv_setimagelist|mod|onmessage|numget|numput|registercallback|regexmatch|regexreplace|round|sin|tan|sqrt|strlen|sb_seticon|sb_setparts|sb_settext|tv_add|tv_delete|tv_getchild|tv_getcount|tv_getnext|tv_get|tv_getparent|tv_getprev|tv_getselection|tv_gettext|tv_modify|varsetcapacity|winactive|winexist)\\b', - caseInsensitive: true }, - { token: 'variable.predefined.ahk', - regex: '(?:\\b|^)(?:a_ahkpath|a_ahkversion|a_appdata|a_appdatacommon|a_autotrim|a_batchlines|a_caretx|a_carety|a_computername|a_controldelay|a_cursor|a_dd|a_ddd|a_dddd|a_defaultmousespeed|a_desktop|a_desktopcommon|a_detecthiddentext|a_detecthiddenwindows|a_endchar|a_eventinfo|a_exitreason|a_formatfloat|a_formatinteger|a_gui|a_guievent|a_guicontrol|a_guicontrolevent|a_guiheight|a_guiwidth|a_guix|a_guiy|a_hour|a_iconfile|a_iconhidden|a_iconnumber|a_icontip|a_index|a_ipaddress1|a_ipaddress2|a_ipaddress3|a_ipaddress4|a_isadmin|a_iscompiled|a_iscritical|a_ispaused|a_issuspended|a_keydelay|a_language|a_lasterror|a_linefile|a_linenumber|a_loopfield|a_loopfileattrib|a_loopfiledir|a_loopfileext|a_loopfilefullpath|a_loopfilelongpath|a_loopfilename|a_loopfileshortname|a_loopfileshortpath|a_loopfilesize|a_loopfilesizekb|a_loopfilesizemb|a_loopfiletimeaccessed|a_loopfiletimecreated|a_loopfiletimemodified|a_loopreadline|a_loopregkey|a_loopregname|a_loopregsubkey|a_loopregtimemodified|a_loopregtype|a_mday|a_min|a_mm|a_mmm|a_mmmm|a_mon|a_mousedelay|a_msec|a_mydocuments|a_now|a_nowutc|a_numbatchlines|a_ostype|a_osversion|a_priorhotkey|programfiles|a_programfiles|a_programs|a_programscommon|a_screenheight|a_screenwidth|a_scriptdir|a_scriptfullpath|a_scriptname|a_sec|a_space|a_startmenu|a_startmenucommon|a_startup|a_startupcommon|a_stringcasesense|a_tab|a_temp|a_thisfunc|a_thishotkey|a_thislabel|a_thismenu|a_thismenuitem|a_thismenuitempos|a_tickcount|a_timeidle|a_timeidlephysical|a_timesincepriorhotkey|a_timesincethishotkey|a_titlematchmode|a_titlematchmodespeed|a_username|a_wday|a_windelay|a_windir|a_workingdir|a_yday|a_year|a_yweek|a_yyyy|clipboard|clipboardall|comspec|errorlevel)\\b', - caseInsensitive: true }, - { token: 'support.constant.ahk', - regex: '(?:\\b|^)(?:shift|lshift|rshift|alt|lalt|ralt|control|lcontrol|rcontrol|ctrl|lctrl|rctrl|lwin|rwin|appskey|altdown|altup|shiftdown|shiftup|ctrldown|ctrlup|lwindown|lwinup|rwindown|rwinup|lbutton|rbutton|mbutton|wheelup|wheelleft|wheelright|wheeldown|xbutton1|xbutton2|joy1|joy2|joy3|joy4|joy5|joy6|joy7|joy8|joy9|joy10|joy11|joy12|joy13|joy14|joy15|joy16|joy17|joy18|joy19|joy20|joy21|joy22|joy23|joy24|joy25|joy26|joy27|joy28|joy29|joy30|joy31|joy32|joyx|joyy|joyz|joyr|joyu|joyv|joypov|joyname|joybuttons|joyaxes|joyinfo|space|tab|enter|escape|esc|backspace|bs|delete|del|insert|ins|pgup|pgdn|home|end|up|down|left|right|printscreen|ctrlbreak|pause|scrolllock|capslock|numlock|numpad0|numpad1|numpad2|numpad3|numpad4|numpad5|numpad6|numpad7|numpad8|numpad9|numpadmult|numpadadd|numpadsub|numpaddiv|numpaddot|numpaddel|numpadins|numpadclear|numpadup|numpaddown|numpadleft|numpadright|numpadhome|numpadend|numpadpgup|numpadpgdn|numpadenter|f1|f2|f3|f4|f5|f6|f7|f8|f9|f10|f11|f12|f13|f14|f15|f16|f17|f18|f19|f20|f21|f22|f23|f24|browser_back|browser_forward|browser_refresh|browser_stop|browser_search|browser_favorites|browser_home|volume_mute|volume_down|volume_up|media_next|media_prev|media_stop|media_play_pause|launch_mail|launch_media|launch_app1|launch_app2)\\b', - caseInsensitive: true }, - { token: 'variable.parameter', - regex: '(?:\\b|^)(?:pixel|mouse|screen|relative|rgb|ltrim|rtrim|join|low|belownormal|normal|abovenormal|high|realtime|ahk_id|ahk_pid|ahk_class|ahk_group|between|contains|in|is|integer|float|integerfast|floatfast|number|digit|xdigit|alpha|upper|lower|alnum|time|date|not|or|and|alwaysontop|topmost|top|bottom|transparent|transcolor|redraw|region|id|idlast|processname|minmax|controllist|count|list|capacity|statuscd|eject|lock|unlock|label|filesystem|label|setlabel|serial|type|status|static|seconds|minutes|hours|days|read|parse|logoff|close|error|single|tray|add|rename|check|uncheck|togglecheck|enable|disable|toggleenable|default|nodefault|standard|nostandard|color|delete|deleteall|icon|noicon|tip|click|show|mainwindow|nomainwindow|useerrorlevel|text|picture|pic|groupbox|button|checkbox|radio|dropdownlist|ddl|combobox|listbox|listview|datetime|monthcal|updown|slider|tab|tab2|statusbar|treeview|iconsmall|tile|report|sortdesc|nosort|nosorthdr|grid|hdr|autosize|range|xm|ym|ys|xs|xp|yp|font|resize|owner|submit|nohide|minimize|maximize|restore|noactivate|na|cancel|destroy|center|margin|maxsize|minsize|owndialogs|guiescape|guiclose|guisize|guicontextmenu|guidropfiles|tabstop|section|altsubmit|wrap|hscroll|vscroll|border|top|bottom|buttons|expand|first|imagelist|lines|wantctrla|wantf2|vis|visfirst|number|uppercase|lowercase|limit|password|multi|wantreturn|group|background|bold|italic|strike|underline|norm|backgroundtrans|theme|caption|delimiter|minimizebox|maximizebox|sysmenu|toolwindow|flash|style|exstyle|check3|checked|checkedgray|readonly|password|hidden|left|right|center|notab|section|move|focus|hide|choose|choosestring|text|pos|enabled|disabled|visible|lastfound|lastfoundexist|alttab|shiftalttab|alttabmenu|alttabandmenu|alttabmenudismiss|notimers|interrupt|priority|waitclose|blind|raw|unicode|deref|pow|bitnot|bitand|bitor|bitxor|bitshiftleft|bitshiftright|yes|no|ok|cancel|abort|retry|ignore|tryagain|on|off|all|hkey_local_machine|hkey_users|hkey_current_user|hkey_classes_root|hkey_current_config|hklm|hku|hkcu|hkcr|hkcc|reg_sz|reg_expand_sz|reg_multi_sz|reg_dword|reg_qword|reg_binary|reg_link|reg_resource_list|reg_full_resource_descriptor|reg_resource_requirements_list|reg_dword_big_endian)\\b', - caseInsensitive: true }, - { keywordMap: {"constant.language": autoItKeywords}, regex: '\\w+\\b'}, - { keywordMap: {"variable.function": atKeywords}, regex: '@\\w+\\b'}, - { token : "constant.numeric", regex : "[+-]?\\d+(?:(?:\\.\\d*)?(?:[eE][+-]?\\d+)?)?\\b"}, - { token: 'keyword.operator.ahk', - regex: '=|==|<>|:=|<|>|\\*|\\/|\\+|:|\\?|\\-' }, - { token: 'punctuation.ahk', - regex: '#|`|::|,|\\{|\\}|\\(|\\)|\\%' }, - { token: - [ 'punctuation.quote.double', - 'string.quoted.ahk', - 'punctuation.quote.double' ], - regex: '(")((?:[^"]|"")*)(")' }, - { token: [ 'label.ahk', 'punctuation.definition.label.ahk' ], - regex: '^([^: ]+)(:)(?!:)' } ] } - - this.normalizeRules(); -}; - -AutoHotKeyHighlightRules.metaData = { name: 'AutoHotKey', - scopeName: 'source.ahk', - fileTypes: [ 'ahk' ], - foldingStartMarker: '^\\s*/\\*|^(?![^{]*?;|[^{]*?/\\*(?!.*?\\*/.*?\\{)).*?\\{\\s*($|;|/\\*(?!.*?\\*/.*\\S))', - foldingStopMarker: '^\\s*\\*/|^\\s*\\}' } - - -oop.inherits(AutoHotKeyHighlightRules, TextHighlightRules); - -exports.AutoHotKeyHighlightRules = AutoHotKeyHighlightRules; -}); - -ace.define('ace/mode/folding/cstyle', ['require', 'exports', 'module' , 'ace/lib/oop', 'ace/range', 'ace/mode/folding/fold_mode'], function(require, exports, module) { - - -var oop = require("../../lib/oop"); -var Range = require("../../range").Range; -var BaseFoldMode = require("./fold_mode").FoldMode; - -var FoldMode = exports.FoldMode = function(commentRegex) { - if (commentRegex) { - this.foldingStartMarker = new RegExp( - this.foldingStartMarker.source.replace(/\|[^|]*?$/, "|" + commentRegex.start) - ); - this.foldingStopMarker = new RegExp( - this.foldingStopMarker.source.replace(/\|[^|]*?$/, "|" + commentRegex.end) - ); - } -}; -oop.inherits(FoldMode, BaseFoldMode); - -(function() { - - this.foldingStartMarker = /(\{|\[)[^\}\]]*$|^\s*(\/\*)/; - this.foldingStopMarker = /^[^\[\{]*(\}|\])|^[\s\*]*(\*\/)/; - - this.getFoldWidgetRange = function(session, foldStyle, row, forceMultiline) { - var line = session.getLine(row); - var match = line.match(this.foldingStartMarker); - if (match) { - var i = match.index; - - if (match[1]) - return this.openingBracketBlock(session, match[1], row, i); - - var range = session.getCommentFoldRange(row, i + match[0].length, 1); - - if (range && !range.isMultiLine()) { - if (forceMultiline) { - range = this.getSectionRange(session, row); - } else if (foldStyle != "all") - range = null; - } - - return range; - } - - if (foldStyle === "markbegin") - return; - - var match = line.match(this.foldingStopMarker); - if (match) { - var i = match.index + match[0].length; - - if (match[1]) - return this.closingBracketBlock(session, match[1], row, i); - - return session.getCommentFoldRange(row, i, -1); - } - }; - - this.getSectionRange = function(session, row) { - var line = session.getLine(row); - var startIndent = line.search(/\S/); - var startRow = row; - var startColumn = line.length; - row = row + 1; - var endRow = row; - var maxRow = session.getLength(); - while (++row < maxRow) { - line = session.getLine(row); - var indent = line.search(/\S/); - if (indent === -1) - continue; - if (startIndent > indent) - break; - var subRange = this.getFoldWidgetRange(session, "all", row); - - if (subRange) { - if (subRange.start.row <= startRow) { - break; - } else if (subRange.isMultiLine()) { - row = subRange.end.row; - } else if (startIndent == indent) { - break; - } - } - endRow = row; - } - - return new Range(startRow, startColumn, endRow, session.getLine(endRow).length); - }; - -}).call(FoldMode.prototype); - -}); diff --git a/IDE/jsrealb-ide/ace-src-noconflict/mode-batchfile.js b/IDE/jsrealb-ide/ace-src-noconflict/mode-batchfile.js deleted file mode 100644 index 7cc45296..00000000 --- a/IDE/jsrealb-ide/ace-src-noconflict/mode-batchfile.js +++ /dev/null @@ -1,213 +0,0 @@ -/* ***** BEGIN LICENSE BLOCK ***** - * Distributed under the BSD license: - * - * Copyright (c) 2012, Ajax.org B.V. - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are met: - * * Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * * Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * * Neither the name of Ajax.org B.V. nor the - * names of its contributors may be used to endorse or promote products - * derived from this software without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND - * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED - * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE - * DISCLAIMED. IN NO EVENT SHALL AJAX.ORG B.V. BE LIABLE FOR ANY - * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES - * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; - * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND - * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - * - * - * Contributor(s): - * - * - * - * ***** END LICENSE BLOCK ***** */ - -ace.define('ace/mode/batchfile', ['require', 'exports', 'module' , 'ace/lib/oop', 'ace/mode/text', 'ace/tokenizer', 'ace/mode/batchfile_highlight_rules', 'ace/mode/folding/cstyle'], function(require, exports, module) { - - -var oop = require("../lib/oop"); -var TextMode = require("./text").Mode; -var Tokenizer = require("../tokenizer").Tokenizer; -var BatchFileHighlightRules = require("./batchfile_highlight_rules").BatchFileHighlightRules; -var FoldMode = require("./folding/cstyle").FoldMode; - -var Mode = function() { - this.HighlightRules = BatchFileHighlightRules; - this.foldingRules = new FoldMode(); -}; -oop.inherits(Mode, TextMode); - -(function() { - this.lineCommentStart = "::"; - this.blockComment = ""; - this.$id = "ace/mode/batchfile"; -}).call(Mode.prototype); - -exports.Mode = Mode; -}); - -ace.define('ace/mode/batchfile_highlight_rules', ['require', 'exports', 'module' , 'ace/lib/oop', 'ace/mode/text_highlight_rules'], function(require, exports, module) { - - -var oop = require("../lib/oop"); -var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; - -var BatchFileHighlightRules = function() { - - this.$rules = { start: - [ { token: 'keyword.command.dosbatch', - regex: '\\b(?:append|assoc|at|attrib|break|cacls|cd|chcp|chdir|chkdsk|chkntfs|cls|cmd|color|comp|compact|convert|copy|date|del|dir|diskcomp|diskcopy|doskey|echo|endlocal|erase|fc|find|findstr|format|ftype|graftabl|help|keyb|label|md|mkdir|mode|more|move|path|pause|popd|print|prompt|pushd|rd|recover|ren|rename|replace|restore|rmdir|set|setlocal|shift|sort|start|subst|time|title|tree|type|ver|verify|vol|xcopy)\\b', - caseInsensitive: true }, - { token: 'keyword.control.statement.dosbatch', - regex: '\\b(?:goto|call|exit)\\b', - caseInsensitive: true }, - { token: 'keyword.control.conditional.if.dosbatch', - regex: '\\bif\\s+not\\s+(?:exist|defined|errorlevel|cmdextversion)\\b', - caseInsensitive: true }, - { token: 'keyword.control.conditional.dosbatch', - regex: '\\b(?:if|else)\\b', - caseInsensitive: true }, - { token: 'keyword.control.repeat.dosbatch', - regex: '\\bfor\\b', - caseInsensitive: true }, - { token: 'keyword.operator.dosbatch', - regex: '\\b(?:EQU|NEQ|LSS|LEQ|GTR|GEQ)\\b' }, - { token: ['doc.comment', 'comment'], - regex: '(?:^|\\b)(rem)($|\\s.*$)', - caseInsensitive: true }, - { token: 'comment.line.colons.dosbatch', - regex: '::.*$' }, - { include: 'variable' }, - { token: 'punctuation.definition.string.begin.shell', - regex: '"', - push: [ - { token: 'punctuation.definition.string.end.shell', regex: '"', next: 'pop' }, - { include: 'variable' }, - { defaultToken: 'string.quoted.double.dosbatch' } ] }, - { token: 'keyword.operator.pipe.dosbatch', regex: '[|]' }, - { token: 'keyword.operator.redirect.shell', - regex: '&>|\\d*>&\\d*|\\d*(?:>>|>|<)|\\d*<&|\\d*<>' } ], - variable: [ - { token: 'constant.numeric', regex: '%%\\w+|%[*\\d]|%\\w+%'}, - { token: 'constant.numeric', regex: '%~\\d+'}, - { token: ['markup.list', 'constant.other', 'markup.list'], - regex: '(%)(\\w+)(%?)' }]} - - this.normalizeRules(); -}; - -BatchFileHighlightRules.metaData = { name: 'Batch File', - scopeName: 'source.dosbatch', - fileTypes: [ 'bat' ] } - - -oop.inherits(BatchFileHighlightRules, TextHighlightRules); - -exports.BatchFileHighlightRules = BatchFileHighlightRules; -}); - -ace.define('ace/mode/folding/cstyle', ['require', 'exports', 'module' , 'ace/lib/oop', 'ace/range', 'ace/mode/folding/fold_mode'], function(require, exports, module) { - - -var oop = require("../../lib/oop"); -var Range = require("../../range").Range; -var BaseFoldMode = require("./fold_mode").FoldMode; - -var FoldMode = exports.FoldMode = function(commentRegex) { - if (commentRegex) { - this.foldingStartMarker = new RegExp( - this.foldingStartMarker.source.replace(/\|[^|]*?$/, "|" + commentRegex.start) - ); - this.foldingStopMarker = new RegExp( - this.foldingStopMarker.source.replace(/\|[^|]*?$/, "|" + commentRegex.end) - ); - } -}; -oop.inherits(FoldMode, BaseFoldMode); - -(function() { - - this.foldingStartMarker = /(\{|\[)[^\}\]]*$|^\s*(\/\*)/; - this.foldingStopMarker = /^[^\[\{]*(\}|\])|^[\s\*]*(\*\/)/; - - this.getFoldWidgetRange = function(session, foldStyle, row, forceMultiline) { - var line = session.getLine(row); - var match = line.match(this.foldingStartMarker); - if (match) { - var i = match.index; - - if (match[1]) - return this.openingBracketBlock(session, match[1], row, i); - - var range = session.getCommentFoldRange(row, i + match[0].length, 1); - - if (range && !range.isMultiLine()) { - if (forceMultiline) { - range = this.getSectionRange(session, row); - } else if (foldStyle != "all") - range = null; - } - - return range; - } - - if (foldStyle === "markbegin") - return; - - var match = line.match(this.foldingStopMarker); - if (match) { - var i = match.index + match[0].length; - - if (match[1]) - return this.closingBracketBlock(session, match[1], row, i); - - return session.getCommentFoldRange(row, i, -1); - } - }; - - this.getSectionRange = function(session, row) { - var line = session.getLine(row); - var startIndent = line.search(/\S/); - var startRow = row; - var startColumn = line.length; - row = row + 1; - var endRow = row; - var maxRow = session.getLength(); - while (++row < maxRow) { - line = session.getLine(row); - var indent = line.search(/\S/); - if (indent === -1) - continue; - if (startIndent > indent) - break; - var subRange = this.getFoldWidgetRange(session, "all", row); - - if (subRange) { - if (subRange.start.row <= startRow) { - break; - } else if (subRange.isMultiLine()) { - row = subRange.end.row; - } else if (startIndent == indent) { - break; - } - } - endRow = row; - } - - return new Range(startRow, startColumn, endRow, session.getLine(endRow).length); - }; - -}).call(FoldMode.prototype); - -}); diff --git a/IDE/jsrealb-ide/ace-src-noconflict/mode-c9search.js b/IDE/jsrealb-ide/ace-src-noconflict/mode-c9search.js deleted file mode 100644 index 694e4f6a..00000000 --- a/IDE/jsrealb-ide/ace-src-noconflict/mode-c9search.js +++ /dev/null @@ -1,295 +0,0 @@ -/* ***** BEGIN LICENSE BLOCK ***** - * Distributed under the BSD license: - * - * Copyright (c) 2010, Ajax.org B.V. - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are met: - * * Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * * Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * * Neither the name of Ajax.org B.V. nor the - * names of its contributors may be used to endorse or promote products - * derived from this software without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND - * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED - * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE - * DISCLAIMED. IN NO EVENT SHALL AJAX.ORG B.V. BE LIABLE FOR ANY - * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES - * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; - * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND - * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - * - * ***** END LICENSE BLOCK ***** */ - -ace.define('ace/mode/c9search', ['require', 'exports', 'module' , 'ace/lib/oop', 'ace/mode/text', 'ace/tokenizer', 'ace/mode/c9search_highlight_rules', 'ace/mode/matching_brace_outdent', 'ace/mode/folding/c9search'], function(require, exports, module) { - - -var oop = require("../lib/oop"); -var TextMode = require("./text").Mode; -var Tokenizer = require("../tokenizer").Tokenizer; -var C9SearchHighlightRules = require("./c9search_highlight_rules").C9SearchHighlightRules; -var MatchingBraceOutdent = require("./matching_brace_outdent").MatchingBraceOutdent; -var C9StyleFoldMode = require("./folding/c9search").FoldMode; - -var Mode = function() { - this.HighlightRules = C9SearchHighlightRules; - this.$outdent = new MatchingBraceOutdent(); - this.foldingRules = new C9StyleFoldMode(); -}; -oop.inherits(Mode, TextMode); - -(function() { - - this.getNextLineIndent = function(state, line, tab) { - var indent = this.$getIndent(line); - return indent; - }; - - this.checkOutdent = function(state, line, input) { - return this.$outdent.checkOutdent(line, input); - }; - - this.autoOutdent = function(state, doc, row) { - this.$outdent.autoOutdent(doc, row); - }; - - this.$id = "ace/mode/c9search"; -}).call(Mode.prototype); - -exports.Mode = Mode; - -}); - -ace.define('ace/mode/c9search_highlight_rules', ['require', 'exports', 'module' , 'ace/lib/oop', 'ace/lib/lang', 'ace/mode/text_highlight_rules'], function(require, exports, module) { - - -var oop = require("../lib/oop"); -var lang = require("../lib/lang"); -var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; - -function safeCreateRegexp(source, flag) { - try { - return new RegExp(source, flag); - } catch(e) {} -} - -var C9SearchHighlightRules = function() { - this.$rules = { - "start" : [ - { - tokenNames : ["c9searchresults.constant.numeric", "c9searchresults.text", "c9searchresults.text", "c9searchresults.keyword"], - regex : "(^\\s+[0-9]+)(:\\s)(.+)", - onMatch : function(val, state, stack) { - var values = this.splitRegex.exec(val); - var types = this.tokenNames; - var tokens = [{ - type: types[0], - value: values[1] - },{ - type: types[1], - value: values[2] - }]; - - var regex = stack[1]; - var str = values[3]; - - var m; - var last = 0; - if (regex) { - regex.lastIndex = 0; - while (m = regex.exec(str)) { - var skipped = str.substring(last, m.index); - last = regex.lastIndex; - if (skipped) - tokens.push({type: types[2], value: skipped}); - if (m[0]) - tokens.push({type: types[3], value: m[0]}); - else if (!skipped) - break; - } - } - if (last < str.length) - tokens.push({type: types[2], value: str.substr(last)}); - return tokens; - } - }, - { - token : ["string", "text"], // single line - regex : "(\\S.*)(:$)" - }, - { - regex : "Searching for .*$", - onMatch: function(val, state, stack) { - var parts = val.split("\x01"); - var search = parts[1]; - if (parts.length < 3) - return "text"; - var options = parts[2] == " in" ? parts[5] : parts[6]; - - if (!/regex/.test(options)) - search = lang.escapeRegExp(search); - if (/whole/.test(options)) - search = "\\b" + search + "\\b"; - var regex = search && safeCreateRegexp( - "(" + search + ")", - / sensitive/.test(options) ? "g" : "ig" - ); - if (regex) { - stack[0] = state; - stack[1] = regex; - } - - var i = 0; - var tokens = [ - { - value: parts[i++] + "'", - type: "text" - }, - { - value: parts[i++], - type: "text" // "c9searchresults.keyword" - }, - { - value: "'" + parts[i++], - type: "text" - } - ]; - if (parts[2] !== " in") { - tokens.push({ - value: "'" + parts[i++] + "'", - type: "text" - }, { - value: parts[i++], - type: "text" - }); - } - tokens.push({ - value: " " + parts[i++] + " ", - type: "text" - }); - if (parts[i+1]) { - tokens.push({ - value: "(" + parts[i+1] + ")", - type: "text" - }); - i += 1; - } else { - i -= 1; - } - while (i++ < parts.length) - parts[i] && tokens.push({ - value: parts[i], - type: "text" - }); - - return tokens; - } - }, - { - regex : "\\d+", - token: "constant.numeric" - } - ] - }; -}; - -oop.inherits(C9SearchHighlightRules, TextHighlightRules); - -exports.C9SearchHighlightRules = C9SearchHighlightRules; - -}); - -ace.define('ace/mode/matching_brace_outdent', ['require', 'exports', 'module' , 'ace/range'], function(require, exports, module) { - - -var Range = require("../range").Range; - -var MatchingBraceOutdent = function() {}; - -(function() { - - this.checkOutdent = function(line, input) { - if (! /^\s+$/.test(line)) - return false; - - return /^\s*\}/.test(input); - }; - - this.autoOutdent = function(doc, row) { - var line = doc.getLine(row); - var match = line.match(/^(\s*\})/); - - if (!match) return 0; - - var column = match[1].length; - var openBracePos = doc.findMatchingBracket({row: row, column: column}); - - if (!openBracePos || openBracePos.row == row) return 0; - - var indent = this.$getIndent(doc.getLine(openBracePos.row)); - doc.replace(new Range(row, 0, row, column-1), indent); - }; - - this.$getIndent = function(line) { - return line.match(/^\s*/)[0]; - }; - -}).call(MatchingBraceOutdent.prototype); - -exports.MatchingBraceOutdent = MatchingBraceOutdent; -}); - - -ace.define('ace/mode/folding/c9search', ['require', 'exports', 'module' , 'ace/lib/oop', 'ace/range', 'ace/mode/folding/fold_mode'], function(require, exports, module) { - - -var oop = require("../../lib/oop"); -var Range = require("../../range").Range; -var BaseFoldMode = require("./fold_mode").FoldMode; - -var FoldMode = exports.FoldMode = function() {}; -oop.inherits(FoldMode, BaseFoldMode); - -(function() { - - this.foldingStartMarker = /^(\S.*\:|Searching for.*)$/; - this.foldingStopMarker = /^(\s+|Found.*)$/; - - this.getFoldWidgetRange = function(session, foldStyle, row) { - var lines = session.doc.getAllLines(row); - var line = lines[row]; - var level1 = /^(Found.*|Searching for.*)$/; - var level2 = /^(\S.*\:|\s*)$/; - var re = level1.test(line) ? level1 : level2; - - if (this.foldingStartMarker.test(line)) { - for (var i = row + 1, l = session.getLength(); i < l; i++) { - if (re.test(lines[i])) - break; - } - - return new Range(row, line.length, i, 0); - } - - if (this.foldingStopMarker.test(line)) { - for (var i = row - 1; i >= 0; i--) { - line = lines[i]; - if (re.test(line)) - break; - } - - return new Range(i, line.length, row, 0); - } - }; - -}).call(FoldMode.prototype); - -}); - diff --git a/IDE/jsrealb-ide/ace-src-noconflict/mode-c_cpp.js b/IDE/jsrealb-ide/ace-src-noconflict/mode-c_cpp.js deleted file mode 100644 index e8360fdf..00000000 --- a/IDE/jsrealb-ide/ace-src-noconflict/mode-c_cpp.js +++ /dev/null @@ -1,786 +0,0 @@ -/* ***** BEGIN LICENSE BLOCK ***** - * Distributed under the BSD license: - * - * Copyright (c) 2010, Ajax.org B.V. - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are met: - * * Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * * Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * * Neither the name of Ajax.org B.V. nor the - * names of its contributors may be used to endorse or promote products - * derived from this software without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND - * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED - * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE - * DISCLAIMED. IN NO EVENT SHALL AJAX.ORG B.V. BE LIABLE FOR ANY - * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES - * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; - * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND - * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - * - * ***** END LICENSE BLOCK ***** */ - -ace.define('ace/mode/c_cpp', ['require', 'exports', 'module' , 'ace/lib/oop', 'ace/mode/text', 'ace/tokenizer', 'ace/mode/c_cpp_highlight_rules', 'ace/mode/matching_brace_outdent', 'ace/range', 'ace/mode/behaviour/cstyle', 'ace/mode/folding/cstyle'], function(require, exports, module) { - - -var oop = require("../lib/oop"); -var TextMode = require("./text").Mode; -var Tokenizer = require("../tokenizer").Tokenizer; -var c_cppHighlightRules = require("./c_cpp_highlight_rules").c_cppHighlightRules; -var MatchingBraceOutdent = require("./matching_brace_outdent").MatchingBraceOutdent; -var Range = require("../range").Range; -var CstyleBehaviour = require("./behaviour/cstyle").CstyleBehaviour; -var CStyleFoldMode = require("./folding/cstyle").FoldMode; - -var Mode = function() { - this.HighlightRules = c_cppHighlightRules; - - this.$outdent = new MatchingBraceOutdent(); - this.$behaviour = new CstyleBehaviour(); - - this.foldingRules = new CStyleFoldMode(); -}; -oop.inherits(Mode, TextMode); - -(function() { - - this.lineCommentStart = "//"; - this.blockComment = {start: "/*", end: "*/"}; - - this.getNextLineIndent = function(state, line, tab) { - var indent = this.$getIndent(line); - - var tokenizedLine = this.getTokenizer().getLineTokens(line, state); - var tokens = tokenizedLine.tokens; - var endState = tokenizedLine.state; - - if (tokens.length && tokens[tokens.length-1].type == "comment") { - return indent; - } - - if (state == "start") { - var match = line.match(/^.*[\{\(\[]\s*$/); - if (match) { - indent += tab; - } - } else if (state == "doc-start") { - if (endState == "start") { - return ""; - } - var match = line.match(/^\s*(\/?)\*/); - if (match) { - if (match[1]) { - indent += " "; - } - indent += "* "; - } - } - - return indent; - }; - - this.checkOutdent = function(state, line, input) { - return this.$outdent.checkOutdent(line, input); - }; - - this.autoOutdent = function(state, doc, row) { - this.$outdent.autoOutdent(doc, row); - }; - - this.$id = "ace/mode/c_cpp"; -}).call(Mode.prototype); - -exports.Mode = Mode; -}); -ace.define('ace/mode/c_cpp_highlight_rules', ['require', 'exports', 'module' , 'ace/lib/oop', 'ace/mode/doc_comment_highlight_rules', 'ace/mode/text_highlight_rules'], function(require, exports, module) { - - -var oop = require("../lib/oop"); -var DocCommentHighlightRules = require("./doc_comment_highlight_rules").DocCommentHighlightRules; -var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; -var cFunctions = exports.cFunctions = "\\s*\\bhypot(?:f|l)?|s(?:scanf|ystem|nprintf|ca(?:nf|lb(?:n(?:f|l)?|ln(?:f|l)?))|i(?:n(?:h(?:f|l)?|f|l)?|gn(?:al|bit))|tr(?:s(?:tr|pn)|nc(?:py|at|mp)|c(?:spn|hr|oll|py|at|mp)|to(?:imax|d|u(?:l(?:l)?|max)|k|f|l(?:d|l)?)|error|pbrk|ftime|len|rchr|xfrm)|printf|et(?:jmp|vbuf|locale|buf)|qrt(?:f|l)?|w(?:scanf|printf)|rand)|n(?:e(?:arbyint(?:f|l)?|xt(?:toward(?:f|l)?|after(?:f|l)?))|an(?:f|l)?)|c(?:s(?:in(?:h(?:f|l)?|f|l)?|qrt(?:f|l)?)|cos(?:h(?:f)?|f|l)?|imag(?:f|l)?|t(?:ime|an(?:h(?:f|l)?|f|l)?)|o(?:s(?:h(?:f|l)?|f|l)?|nj(?:f|l)?|pysign(?:f|l)?)|p(?:ow(?:f|l)?|roj(?:f|l)?)|e(?:il(?:f|l)?|xp(?:f|l)?)|l(?:o(?:ck|g(?:f|l)?)|earerr)|a(?:sin(?:h(?:f|l)?|f|l)?|cos(?:h(?:f|l)?|f|l)?|tan(?:h(?:f|l)?|f|l)?|lloc|rg(?:f|l)?|bs(?:f|l)?)|real(?:f|l)?|brt(?:f|l)?)|t(?:ime|o(?:upper|lower)|an(?:h(?:f|l)?|f|l)?|runc(?:f|l)?|gamma(?:f|l)?|mp(?:nam|file))|i(?:s(?:space|n(?:ormal|an)|cntrl|inf|digit|u(?:nordered|pper)|p(?:unct|rint)|finite|w(?:space|c(?:ntrl|type)|digit|upper|p(?:unct|rint)|lower|al(?:num|pha)|graph|xdigit|blank)|l(?:ower|ess(?:equal|greater)?)|al(?:num|pha)|gr(?:eater(?:equal)?|aph)|xdigit|blank)|logb(?:f|l)?|max(?:div|abs))|di(?:v|fftime)|_Exit|unget(?:c|wc)|p(?:ow(?:f|l)?|ut(?:s|c(?:har)?|wc(?:har)?)|error|rintf)|e(?:rf(?:c(?:f|l)?|f|l)?|x(?:it|p(?:2(?:f|l)?|f|l|m1(?:f|l)?)?))|v(?:s(?:scanf|nprintf|canf|printf|w(?:scanf|printf))|printf|f(?:scanf|printf|w(?:scanf|printf))|w(?:scanf|printf)|a_(?:start|copy|end|arg))|qsort|f(?:s(?:canf|e(?:tpos|ek))|close|tell|open|dim(?:f|l)?|p(?:classify|ut(?:s|c|w(?:s|c))|rintf)|e(?:holdexcept|set(?:e(?:nv|xceptflag)|round)|clearexcept|testexcept|of|updateenv|r(?:aiseexcept|ror)|get(?:e(?:nv|xceptflag)|round))|flush|w(?:scanf|ide|printf|rite)|loor(?:f|l)?|abs(?:f|l)?|get(?:s|c|pos|w(?:s|c))|re(?:open|e|ad|xp(?:f|l)?)|m(?:in(?:f|l)?|od(?:f|l)?|a(?:f|l|x(?:f|l)?)?))|l(?:d(?:iv|exp(?:f|l)?)|o(?:ngjmp|cal(?:time|econv)|g(?:1(?:p(?:f|l)?|0(?:f|l)?)|2(?:f|l)?|f|l|b(?:f|l)?)?)|abs|l(?:div|abs|r(?:int(?:f|l)?|ound(?:f|l)?))|r(?:int(?:f|l)?|ound(?:f|l)?)|gamma(?:f|l)?)|w(?:scanf|c(?:s(?:s(?:tr|pn)|nc(?:py|at|mp)|c(?:spn|hr|oll|py|at|mp)|to(?:imax|d|u(?:l(?:l)?|max)|k|f|l(?:d|l)?|mbs)|pbrk|ftime|len|r(?:chr|tombs)|xfrm)|to(?:b|mb)|rtomb)|printf|mem(?:set|c(?:hr|py|mp)|move))|a(?:s(?:sert|ctime|in(?:h(?:f|l)?|f|l)?)|cos(?:h(?:f|l)?|f|l)?|t(?:o(?:i|f|l(?:l)?)|exit|an(?:h(?:f|l)?|2(?:f|l)?|f|l)?)|b(?:s|ort))|g(?:et(?:s|c(?:har)?|env|wc(?:har)?)|mtime)|r(?:int(?:f|l)?|ound(?:f|l)?|e(?:name|alloc|wind|m(?:ove|quo(?:f|l)?|ainder(?:f|l)?))|a(?:nd|ise))|b(?:search|towc)|m(?:odf(?:f|l)?|em(?:set|c(?:hr|py|mp)|move)|ktime|alloc|b(?:s(?:init|towcs|rtowcs)|towc|len|r(?:towc|len)))\\b" - -var c_cppHighlightRules = function() { - - var keywordControls = ( - "break|case|continue|default|do|else|for|goto|if|_Pragma|" + - "return|switch|while|catch|operator|try|throw|using" - ); - - var storageType = ( - "asm|__asm__|auto|bool|_Bool|char|_Complex|double|enum|float|" + - "_Imaginary|int|long|short|signed|struct|typedef|union|unsigned|void|" + - "class|wchar_t|template" - ); - - var storageModifiers = ( - "const|extern|register|restrict|static|volatile|inline|private:|" + - "protected:|public:|friend|explicit|virtual|export|mutable|typename" - ); - - var keywordOperators = ( - "and|and_eq|bitand|bitor|compl|not|not_eq|or|or_eq|typeid|xor|xor_eq" + - "const_cast|dynamic_cast|reinterpret_cast|static_cast|sizeof|namespace" - ); - - var builtinConstants = ( - "NULL|true|false|TRUE|FALSE" - ); - - var keywordMapper = this.$keywords = this.createKeywordMapper({ - "keyword.control" : keywordControls, - "storage.type" : storageType, - "storage.modifier" : storageModifiers, - "keyword.operator" : keywordOperators, - "variable.language": "this", - "constant.language": builtinConstants - }, "identifier"); - - var identifierRe = "[a-zA-Z\\$_\u00a1-\uffff][a-zA-Z\d\\$_\u00a1-\uffff]*\\b"; - - this.$rules = { - "start" : [ - { - token : "comment", - regex : "\\/\\/.*$" - }, - DocCommentHighlightRules.getStartRule("doc-start"), - { - token : "comment", // multi line comment - regex : "\\/\\*", - next : "comment" - }, { - token : "string", // single line - regex : '["](?:(?:\\\\.)|(?:[^"\\\\]))*?["]' - }, { - token : "string", // multi line string start - regex : '["].*\\\\$', - next : "qqstring" - }, { - token : "string", // single line - regex : "['](?:(?:\\\\.)|(?:[^'\\\\]))*?[']" - }, { - token : "string", // multi line string start - regex : "['].*\\\\$", - next : "qstring" - }, { - token : "constant.numeric", // hex - regex : "0[xX][0-9a-fA-F]+(L|l|UL|ul|u|U|F|f|ll|LL|ull|ULL)?\\b" - }, { - token : "constant.numeric", // float - regex : "[+-]?\\d+(?:(?:\\.\\d*)?(?:[eE][+-]?\\d+)?)?(L|l|UL|ul|u|U|F|f|ll|LL|ull|ULL)?\\b" - }, { - token : "keyword", // pre-compiler directives - regex : "#\\s*(?:include|import|pragma|line|define|undef|if|ifdef|else|elif|ifndef)\\b", - next : "directive" - }, { - token : "keyword", // special case pre-compiler directive - regex : "(?:#\\s*endif)\\b" - }, { - token : "support.function.C99.c", - regex : cFunctions - }, { - token : keywordMapper, - regex : "[a-zA-Z_$][a-zA-Z0-9_$]*\\b" - }, { - token : "keyword.operator", - regex : "!|\\$|%|&|\\*|\\-\\-|\\-|\\+\\+|\\+|~|==|=|!=|<=|>=|<<=|>>=|>>>=|<>|<|>|!|&&|\\|\\||\\?\\:|\\*=|%=|\\+=|\\-=|&=|\\^=|\\b(?:in|new|delete|typeof|void)" - }, { - token : "punctuation.operator", - regex : "\\?|\\:|\\,|\\;|\\." - }, { - token : "paren.lparen", - regex : "[[({]" - }, { - token : "paren.rparen", - regex : "[\\])}]" - }, { - token : "text", - regex : "\\s+" - } - ], - "comment" : [ - { - token : "comment", // closing comment - regex : ".*?\\*\\/", - next : "start" - }, { - token : "comment", // comment spanning whole line - regex : ".+" - } - ], - "qqstring" : [ - { - token : "string", - regex : '(?:(?:\\\\.)|(?:[^"\\\\]))*?"', - next : "start" - }, { - token : "string", - regex : '.+' - } - ], - "qstring" : [ - { - token : "string", - regex : "(?:(?:\\\\.)|(?:[^'\\\\]))*?'", - next : "start" - }, { - token : "string", - regex : '.+' - } - ], - "directive" : [ - { - token : "constant.other.multiline", - regex : /\\/ - }, - { - token : "constant.other.multiline", - regex : /.*\\/ - }, - { - token : "constant.other", - regex : "\\s*<.+?>", - next : "start" - }, - { - token : "constant.other", // single line - regex : '\\s*["](?:(?:\\\\.)|(?:[^"\\\\]))*?["]', - next : "start" - }, - { - token : "constant.other", // single line - regex : "\\s*['](?:(?:\\\\.)|(?:[^'\\\\]))*?[']", - next : "start" - }, - { - token : "constant.other", - regex : /[^\\\/]+/, - next : "start" - } - ] - }; - - this.embedRules(DocCommentHighlightRules, "doc-", - [ DocCommentHighlightRules.getEndRule("start") ]); -}; - -oop.inherits(c_cppHighlightRules, TextHighlightRules); - -exports.c_cppHighlightRules = c_cppHighlightRules; -}); - -ace.define('ace/mode/doc_comment_highlight_rules', ['require', 'exports', 'module' , 'ace/lib/oop', 'ace/mode/text_highlight_rules'], function(require, exports, module) { - - -var oop = require("../lib/oop"); -var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; - -var DocCommentHighlightRules = function() { - - this.$rules = { - "start" : [ { - token : "comment.doc.tag", - regex : "@[\\w\\d_]+" // TODO: fix email addresses - }, { - token : "comment.doc.tag", - regex : "\\bTODO\\b" - }, { - defaultToken : "comment.doc" - }] - }; -}; - -oop.inherits(DocCommentHighlightRules, TextHighlightRules); - -DocCommentHighlightRules.getStartRule = function(start) { - return { - token : "comment.doc", // doc comment - regex : "\\/\\*(?=\\*)", - next : start - }; -}; - -DocCommentHighlightRules.getEndRule = function (start) { - return { - token : "comment.doc", // closing comment - regex : "\\*\\/", - next : start - }; -}; - - -exports.DocCommentHighlightRules = DocCommentHighlightRules; - -}); - -ace.define('ace/mode/matching_brace_outdent', ['require', 'exports', 'module' , 'ace/range'], function(require, exports, module) { - - -var Range = require("../range").Range; - -var MatchingBraceOutdent = function() {}; - -(function() { - - this.checkOutdent = function(line, input) { - if (! /^\s+$/.test(line)) - return false; - - return /^\s*\}/.test(input); - }; - - this.autoOutdent = function(doc, row) { - var line = doc.getLine(row); - var match = line.match(/^(\s*\})/); - - if (!match) return 0; - - var column = match[1].length; - var openBracePos = doc.findMatchingBracket({row: row, column: column}); - - if (!openBracePos || openBracePos.row == row) return 0; - - var indent = this.$getIndent(doc.getLine(openBracePos.row)); - doc.replace(new Range(row, 0, row, column-1), indent); - }; - - this.$getIndent = function(line) { - return line.match(/^\s*/)[0]; - }; - -}).call(MatchingBraceOutdent.prototype); - -exports.MatchingBraceOutdent = MatchingBraceOutdent; -}); - -ace.define('ace/mode/behaviour/cstyle', ['require', 'exports', 'module' , 'ace/lib/oop', 'ace/mode/behaviour', 'ace/token_iterator', 'ace/lib/lang'], function(require, exports, module) { - - -var oop = require("../../lib/oop"); -var Behaviour = require("../behaviour").Behaviour; -var TokenIterator = require("../../token_iterator").TokenIterator; -var lang = require("../../lib/lang"); - -var SAFE_INSERT_IN_TOKENS = - ["text", "paren.rparen", "punctuation.operator"]; -var SAFE_INSERT_BEFORE_TOKENS = - ["text", "paren.rparen", "punctuation.operator", "comment"]; - - -var autoInsertedBrackets = 0; -var autoInsertedRow = -1; -var autoInsertedLineEnd = ""; -var maybeInsertedBrackets = 0; -var maybeInsertedRow = -1; -var maybeInsertedLineStart = ""; -var maybeInsertedLineEnd = ""; - -var CstyleBehaviour = function () { - - CstyleBehaviour.isSaneInsertion = function(editor, session) { - var cursor = editor.getCursorPosition(); - var iterator = new TokenIterator(session, cursor.row, cursor.column); - if (!this.$matchTokenType(iterator.getCurrentToken() || "text", SAFE_INSERT_IN_TOKENS)) { - var iterator2 = new TokenIterator(session, cursor.row, cursor.column + 1); - if (!this.$matchTokenType(iterator2.getCurrentToken() || "text", SAFE_INSERT_IN_TOKENS)) - return false; - } - iterator.stepForward(); - return iterator.getCurrentTokenRow() !== cursor.row || - this.$matchTokenType(iterator.getCurrentToken() || "text", SAFE_INSERT_BEFORE_TOKENS); - }; - - CstyleBehaviour.$matchTokenType = function(token, types) { - return types.indexOf(token.type || token) > -1; - }; - - CstyleBehaviour.recordAutoInsert = function(editor, session, bracket) { - var cursor = editor.getCursorPosition(); - var line = session.doc.getLine(cursor.row); - if (!this.isAutoInsertedClosing(cursor, line, autoInsertedLineEnd[0])) - autoInsertedBrackets = 0; - autoInsertedRow = cursor.row; - autoInsertedLineEnd = bracket + line.substr(cursor.column); - autoInsertedBrackets++; - }; - - CstyleBehaviour.recordMaybeInsert = function(editor, session, bracket) { - var cursor = editor.getCursorPosition(); - var line = session.doc.getLine(cursor.row); - if (!this.isMaybeInsertedClosing(cursor, line)) - maybeInsertedBrackets = 0; - maybeInsertedRow = cursor.row; - maybeInsertedLineStart = line.substr(0, cursor.column) + bracket; - maybeInsertedLineEnd = line.substr(cursor.column); - maybeInsertedBrackets++; - }; - - CstyleBehaviour.isAutoInsertedClosing = function(cursor, line, bracket) { - return autoInsertedBrackets > 0 && - cursor.row === autoInsertedRow && - bracket === autoInsertedLineEnd[0] && - line.substr(cursor.column) === autoInsertedLineEnd; - }; - - CstyleBehaviour.isMaybeInsertedClosing = function(cursor, line) { - return maybeInsertedBrackets > 0 && - cursor.row === maybeInsertedRow && - line.substr(cursor.column) === maybeInsertedLineEnd && - line.substr(0, cursor.column) == maybeInsertedLineStart; - }; - - CstyleBehaviour.popAutoInsertedClosing = function() { - autoInsertedLineEnd = autoInsertedLineEnd.substr(1); - autoInsertedBrackets--; - }; - - CstyleBehaviour.clearMaybeInsertedClosing = function() { - maybeInsertedBrackets = 0; - maybeInsertedRow = -1; - }; - - this.add("braces", "insertion", function (state, action, editor, session, text) { - var cursor = editor.getCursorPosition(); - var line = session.doc.getLine(cursor.row); - if (text == '{') { - var selection = editor.getSelectionRange(); - var selected = session.doc.getTextRange(selection); - if (selected !== "" && selected !== "{" && editor.getWrapBehavioursEnabled()) { - return { - text: '{' + selected + '}', - selection: false - }; - } else if (CstyleBehaviour.isSaneInsertion(editor, session)) { - if (/[\]\}\)]/.test(line[cursor.column]) || editor.inMultiSelectMode) { - CstyleBehaviour.recordAutoInsert(editor, session, "}"); - return { - text: '{}', - selection: [1, 1] - }; - } else { - CstyleBehaviour.recordMaybeInsert(editor, session, "{"); - return { - text: '{', - selection: [1, 1] - }; - } - } - } else if (text == '}') { - var rightChar = line.substring(cursor.column, cursor.column + 1); - if (rightChar == '}') { - var matching = session.$findOpeningBracket('}', {column: cursor.column + 1, row: cursor.row}); - if (matching !== null && CstyleBehaviour.isAutoInsertedClosing(cursor, line, text)) { - CstyleBehaviour.popAutoInsertedClosing(); - return { - text: '', - selection: [1, 1] - }; - } - } - } else if (text == "\n" || text == "\r\n") { - var closing = ""; - if (CstyleBehaviour.isMaybeInsertedClosing(cursor, line)) { - closing = lang.stringRepeat("}", maybeInsertedBrackets); - CstyleBehaviour.clearMaybeInsertedClosing(); - } - var rightChar = line.substring(cursor.column, cursor.column + 1); - if (rightChar === '}') { - var openBracePos = session.findMatchingBracket({row: cursor.row, column: cursor.column+1}, '}'); - if (!openBracePos) - return null; - var next_indent = this.$getIndent(session.getLine(openBracePos.row)); - } else if (closing) { - var next_indent = this.$getIndent(line); - } else { - return; - } - var indent = next_indent + session.getTabString(); - - return { - text: '\n' + indent + '\n' + next_indent + closing, - selection: [1, indent.length, 1, indent.length] - }; - } else { - CstyleBehaviour.clearMaybeInsertedClosing(); - } - }); - - this.add("braces", "deletion", function (state, action, editor, session, range) { - var selected = session.doc.getTextRange(range); - if (!range.isMultiLine() && selected == '{') { - var line = session.doc.getLine(range.start.row); - var rightChar = line.substring(range.end.column, range.end.column + 1); - if (rightChar == '}') { - range.end.column++; - return range; - } else { - maybeInsertedBrackets--; - } - } - }); - - this.add("parens", "insertion", function (state, action, editor, session, text) { - if (text == '(') { - var selection = editor.getSelectionRange(); - var selected = session.doc.getTextRange(selection); - if (selected !== "" && editor.getWrapBehavioursEnabled()) { - return { - text: '(' + selected + ')', - selection: false - }; - } else if (CstyleBehaviour.isSaneInsertion(editor, session)) { - CstyleBehaviour.recordAutoInsert(editor, session, ")"); - return { - text: '()', - selection: [1, 1] - }; - } - } else if (text == ')') { - var cursor = editor.getCursorPosition(); - var line = session.doc.getLine(cursor.row); - var rightChar = line.substring(cursor.column, cursor.column + 1); - if (rightChar == ')') { - var matching = session.$findOpeningBracket(')', {column: cursor.column + 1, row: cursor.row}); - if (matching !== null && CstyleBehaviour.isAutoInsertedClosing(cursor, line, text)) { - CstyleBehaviour.popAutoInsertedClosing(); - return { - text: '', - selection: [1, 1] - }; - } - } - } - }); - - this.add("parens", "deletion", function (state, action, editor, session, range) { - var selected = session.doc.getTextRange(range); - if (!range.isMultiLine() && selected == '(') { - var line = session.doc.getLine(range.start.row); - var rightChar = line.substring(range.start.column + 1, range.start.column + 2); - if (rightChar == ')') { - range.end.column++; - return range; - } - } - }); - - this.add("brackets", "insertion", function (state, action, editor, session, text) { - if (text == '[') { - var selection = editor.getSelectionRange(); - var selected = session.doc.getTextRange(selection); - if (selected !== "" && editor.getWrapBehavioursEnabled()) { - return { - text: '[' + selected + ']', - selection: false - }; - } else if (CstyleBehaviour.isSaneInsertion(editor, session)) { - CstyleBehaviour.recordAutoInsert(editor, session, "]"); - return { - text: '[]', - selection: [1, 1] - }; - } - } else if (text == ']') { - var cursor = editor.getCursorPosition(); - var line = session.doc.getLine(cursor.row); - var rightChar = line.substring(cursor.column, cursor.column + 1); - if (rightChar == ']') { - var matching = session.$findOpeningBracket(']', {column: cursor.column + 1, row: cursor.row}); - if (matching !== null && CstyleBehaviour.isAutoInsertedClosing(cursor, line, text)) { - CstyleBehaviour.popAutoInsertedClosing(); - return { - text: '', - selection: [1, 1] - }; - } - } - } - }); - - this.add("brackets", "deletion", function (state, action, editor, session, range) { - var selected = session.doc.getTextRange(range); - if (!range.isMultiLine() && selected == '[') { - var line = session.doc.getLine(range.start.row); - var rightChar = line.substring(range.start.column + 1, range.start.column + 2); - if (rightChar == ']') { - range.end.column++; - return range; - } - } - }); - - this.add("string_dquotes", "insertion", function (state, action, editor, session, text) { - if (text == '"' || text == "'") { - var quote = text; - var selection = editor.getSelectionRange(); - var selected = session.doc.getTextRange(selection); - if (selected !== "" && selected !== "'" && selected != '"' && editor.getWrapBehavioursEnabled()) { - return { - text: quote + selected + quote, - selection: false - }; - } else { - var cursor = editor.getCursorPosition(); - var line = session.doc.getLine(cursor.row); - var leftChar = line.substring(cursor.column-1, cursor.column); - if (leftChar == '\\') { - return null; - } - var tokens = session.getTokens(selection.start.row); - var col = 0, token; - var quotepos = -1; // Track whether we're inside an open quote. - - for (var x = 0; x < tokens.length; x++) { - token = tokens[x]; - if (token.type == "string") { - quotepos = -1; - } else if (quotepos < 0) { - quotepos = token.value.indexOf(quote); - } - if ((token.value.length + col) > selection.start.column) { - break; - } - col += tokens[x].value.length; - } - if (!token || (quotepos < 0 && token.type !== "comment" && (token.type !== "string" || ((selection.start.column !== token.value.length+col-1) && token.value.lastIndexOf(quote) === token.value.length-1)))) { - if (!CstyleBehaviour.isSaneInsertion(editor, session)) - return; - return { - text: quote + quote, - selection: [1,1] - }; - } else if (token && token.type === "string") { - var rightChar = line.substring(cursor.column, cursor.column + 1); - if (rightChar == quote) { - return { - text: '', - selection: [1, 1] - }; - } - } - } - } - }); - - this.add("string_dquotes", "deletion", function (state, action, editor, session, range) { - var selected = session.doc.getTextRange(range); - if (!range.isMultiLine() && (selected == '"' || selected == "'")) { - var line = session.doc.getLine(range.start.row); - var rightChar = line.substring(range.start.column + 1, range.start.column + 2); - if (rightChar == selected) { - range.end.column++; - return range; - } - } - }); - -}; - -oop.inherits(CstyleBehaviour, Behaviour); - -exports.CstyleBehaviour = CstyleBehaviour; -}); - -ace.define('ace/mode/folding/cstyle', ['require', 'exports', 'module' , 'ace/lib/oop', 'ace/range', 'ace/mode/folding/fold_mode'], function(require, exports, module) { - - -var oop = require("../../lib/oop"); -var Range = require("../../range").Range; -var BaseFoldMode = require("./fold_mode").FoldMode; - -var FoldMode = exports.FoldMode = function(commentRegex) { - if (commentRegex) { - this.foldingStartMarker = new RegExp( - this.foldingStartMarker.source.replace(/\|[^|]*?$/, "|" + commentRegex.start) - ); - this.foldingStopMarker = new RegExp( - this.foldingStopMarker.source.replace(/\|[^|]*?$/, "|" + commentRegex.end) - ); - } -}; -oop.inherits(FoldMode, BaseFoldMode); - -(function() { - - this.foldingStartMarker = /(\{|\[)[^\}\]]*$|^\s*(\/\*)/; - this.foldingStopMarker = /^[^\[\{]*(\}|\])|^[\s\*]*(\*\/)/; - - this.getFoldWidgetRange = function(session, foldStyle, row, forceMultiline) { - var line = session.getLine(row); - var match = line.match(this.foldingStartMarker); - if (match) { - var i = match.index; - - if (match[1]) - return this.openingBracketBlock(session, match[1], row, i); - - var range = session.getCommentFoldRange(row, i + match[0].length, 1); - - if (range && !range.isMultiLine()) { - if (forceMultiline) { - range = this.getSectionRange(session, row); - } else if (foldStyle != "all") - range = null; - } - - return range; - } - - if (foldStyle === "markbegin") - return; - - var match = line.match(this.foldingStopMarker); - if (match) { - var i = match.index + match[0].length; - - if (match[1]) - return this.closingBracketBlock(session, match[1], row, i); - - return session.getCommentFoldRange(row, i, -1); - } - }; - - this.getSectionRange = function(session, row) { - var line = session.getLine(row); - var startIndent = line.search(/\S/); - var startRow = row; - var startColumn = line.length; - row = row + 1; - var endRow = row; - var maxRow = session.getLength(); - while (++row < maxRow) { - line = session.getLine(row); - var indent = line.search(/\S/); - if (indent === -1) - continue; - if (startIndent > indent) - break; - var subRange = this.getFoldWidgetRange(session, "all", row); - - if (subRange) { - if (subRange.start.row <= startRow) { - break; - } else if (subRange.isMultiLine()) { - row = subRange.end.row; - } else if (startIndent == indent) { - break; - } - } - endRow = row; - } - - return new Range(startRow, startColumn, endRow, session.getLine(endRow).length); - }; - -}).call(FoldMode.prototype); - -}); diff --git a/IDE/jsrealb-ide/ace-src-noconflict/mode-clojure.js b/IDE/jsrealb-ide/ace-src-noconflict/mode-clojure.js deleted file mode 100644 index 78cfc884..00000000 --- a/IDE/jsrealb-ide/ace-src-noconflict/mode-clojure.js +++ /dev/null @@ -1,300 +0,0 @@ -/* ***** BEGIN LICENSE BLOCK ***** - * Distributed under the BSD license: - * - * Copyright (c) 2010, Ajax.org B.V. - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are met: - * * Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * * Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * * Neither the name of Ajax.org B.V. nor the - * names of its contributors may be used to endorse or promote products - * derived from this software without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND - * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED - * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE - * DISCLAIMED. IN NO EVENT SHALL AJAX.ORG B.V. BE LIABLE FOR ANY - * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES - * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; - * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND - * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - * - * ***** END LICENSE BLOCK ***** */ - -ace.define('ace/mode/clojure', ['require', 'exports', 'module' , 'ace/lib/oop', 'ace/mode/text', 'ace/tokenizer', 'ace/mode/clojure_highlight_rules', 'ace/mode/matching_parens_outdent', 'ace/range'], function(require, exports, module) { - - -var oop = require("../lib/oop"); -var TextMode = require("./text").Mode; -var Tokenizer = require("../tokenizer").Tokenizer; -var ClojureHighlightRules = require("./clojure_highlight_rules").ClojureHighlightRules; -var MatchingParensOutdent = require("./matching_parens_outdent").MatchingParensOutdent; -var Range = require("../range").Range; - -var Mode = function() { - this.HighlightRules = ClojureHighlightRules; - this.$outdent = new MatchingParensOutdent(); -}; -oop.inherits(Mode, TextMode); - -(function() { - - this.lineCommentStart = ";"; - - this.getNextLineIndent = function(state, line, tab) { - var indent = this.$getIndent(line); - - var tokenizedLine = this.getTokenizer().getLineTokens(line, state); - var tokens = tokenizedLine.tokens; - - if (tokens.length && tokens[tokens.length-1].type == "comment") { - return indent; - } - - if (state == "start") { - var match = line.match(/[\(\[]/); - if (match) { - indent += " "; - } - match = line.match(/[\)]/); - if (match) { - indent = ""; - } - } - - return indent; - }; - - this.checkOutdent = function(state, line, input) { - return this.$outdent.checkOutdent(line, input); - }; - - this.autoOutdent = function(state, doc, row) { - this.$outdent.autoOutdent(doc, row); - }; - - this.$id = "ace/mode/clojure"; -}).call(Mode.prototype); - -exports.Mode = Mode; -}); - -ace.define('ace/mode/clojure_highlight_rules', ['require', 'exports', 'module' , 'ace/lib/oop', 'ace/mode/text_highlight_rules'], function(require, exports, module) { - - -var oop = require("../lib/oop"); -var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; - - - -var ClojureHighlightRules = function() { - - var builtinFunctions = ( - '* *1 *2 *3 *agent* *allow-unresolved-vars* *assert* *clojure-version* ' + - '*command-line-args* *compile-files* *compile-path* *e *err* *file* ' + - '*flush-on-newline* *in* *macro-meta* *math-context* *ns* *out* ' + - '*print-dup* *print-length* *print-level* *print-meta* *print-readably* ' + - '*read-eval* *source-path* *use-context-classloader* ' + - '*warn-on-reflection* + - -> ->> .. / < <= = ' + - '== > > >= >= accessor aclone ' + - 'add-classpath add-watch agent agent-errors aget alength alias all-ns ' + - 'alter alter-meta! alter-var-root amap ancestors and apply areduce ' + - 'array-map aset aset-boolean aset-byte aset-char aset-double aset-float ' + - 'aset-int aset-long aset-short assert assoc assoc! assoc-in associative? ' + - 'atom await await-for await1 bases bean bigdec bigint binding bit-and ' + - 'bit-and-not bit-clear bit-flip bit-not bit-or bit-set bit-shift-left ' + - 'bit-shift-right bit-test bit-xor boolean boolean-array booleans ' + - 'bound-fn bound-fn* butlast byte byte-array bytes cast char char-array ' + - 'char-escape-string char-name-string char? chars chunk chunk-append ' + - 'chunk-buffer chunk-cons chunk-first chunk-next chunk-rest chunked-seq? ' + - 'class class? clear-agent-errors clojure-version coll? comment commute ' + - 'comp comparator compare compare-and-set! compile complement concat cond ' + - 'condp conj conj! cons constantly construct-proxy contains? count ' + - 'counted? create-ns create-struct cycle dec decimal? declare definline ' + - 'defmacro defmethod defmulti defn defn- defonce defstruct delay delay? ' + - 'deliver deref derive descendants destructure disj disj! dissoc dissoc! ' + - 'distinct distinct? doall doc dorun doseq dosync dotimes doto double ' + - 'double-array doubles drop drop-last drop-while empty empty? ensure ' + - 'enumeration-seq eval even? every? false? ffirst file-seq filter find ' + - 'find-doc find-ns find-var first float float-array float? floats flush ' + - 'fn fn? fnext for force format future future-call future-cancel ' + - 'future-cancelled? future-done? future? gen-class gen-interface gensym ' + - 'get get-in get-method get-proxy-class get-thread-bindings get-validator ' + - 'hash hash-map hash-set identical? identity if-let if-not ifn? import ' + - 'in-ns inc init-proxy instance? int int-array integer? interleave intern ' + - 'interpose into into-array ints io! isa? iterate iterator-seq juxt key ' + - 'keys keyword keyword? last lazy-cat lazy-seq let letfn line-seq list ' + - 'list* list? load load-file load-reader load-string loaded-libs locking ' + - 'long long-array longs loop macroexpand macroexpand-1 make-array ' + - 'make-hierarchy map map? mapcat max max-key memfn memoize merge ' + - 'merge-with meta method-sig methods min min-key mod name namespace neg? ' + - 'newline next nfirst nil? nnext not not-any? not-empty not-every? not= ' + - 'ns ns-aliases ns-imports ns-interns ns-map ns-name ns-publics ' + - 'ns-refers ns-resolve ns-unalias ns-unmap nth nthnext num number? odd? ' + - 'or parents partial partition pcalls peek persistent! pmap pop pop! ' + - 'pop-thread-bindings pos? pr pr-str prefer-method prefers ' + - 'primitives-classnames print print-ctor print-doc print-dup print-method ' + - 'print-namespace-doc print-simple print-special-doc print-str printf ' + - 'println println-str prn prn-str promise proxy proxy-call-with-super ' + - 'proxy-mappings proxy-name proxy-super push-thread-bindings pvalues quot ' + - 'rand rand-int range ratio? rational? rationalize re-find re-groups ' + - 're-matcher re-matches re-pattern re-seq read read-line read-string ' + - 'reduce ref ref-history-count ref-max-history ref-min-history ref-set ' + - 'refer refer-clojure release-pending-sends rem remove remove-method ' + - 'remove-ns remove-watch repeat repeatedly replace replicate require ' + - 'reset! reset-meta! resolve rest resultset-seq reverse reversible? rseq ' + - 'rsubseq second select-keys send send-off seq seq? seque sequence ' + - 'sequential? set set-validator! set? short short-array shorts ' + - 'shutdown-agents slurp some sort sort-by sorted-map sorted-map-by ' + - 'sorted-set sorted-set-by sorted? special-form-anchor special-symbol? ' + - 'split-at split-with str stream? string? struct struct-map subs subseq ' + - 'subvec supers swap! symbol symbol? sync syntax-symbol-anchor take ' + - 'take-last take-nth take-while test the-ns time to-array to-array-2d ' + - 'trampoline transient tree-seq true? type unchecked-add unchecked-dec ' + - 'unchecked-divide unchecked-inc unchecked-multiply unchecked-negate ' + - 'unchecked-remainder unchecked-subtract underive unquote ' + - 'unquote-splicing update-in update-proxy use val vals var-get var-set ' + - 'var? vary-meta vec vector vector? when when-first when-let when-not ' + - 'while with-bindings with-bindings* with-in-str with-loading-context ' + - 'with-local-vars with-meta with-open with-out-str with-precision xml-seq ' + - 'zero? zipmap' - ); - - var keywords = ('throw try var ' + - 'def do fn if let loop monitor-enter monitor-exit new quote recur set!' - ); - - var buildinConstants = ("true false nil"); - - var keywordMapper = this.createKeywordMapper({ - "keyword": keywords, - "constant.language": buildinConstants, - "support.function": builtinFunctions - }, "identifier", false, " "); - - this.$rules = { - "start" : [ - { - token : "comment", - regex : ";.*$" - }, { - token : "keyword", //parens - regex : "[\\(|\\)]" - }, { - token : "keyword", //lists - regex : "[\\'\\(]" - }, { - token : "keyword", //vectors - regex : "[\\[|\\]]" - }, { - token : "keyword", //sets and maps - regex : "[\\{|\\}|\\#\\{|\\#\\}]" - }, { - token : "keyword", // ampersands - regex : '[\\&]' - }, { - token : "keyword", // metadata - regex : '[\\#\\^\\{]' - }, { - token : "keyword", // anonymous fn syntactic sugar - regex : '[\\%]' - }, { - token : "keyword", // deref reader macro - regex : '[@]' - }, { - token : "constant.numeric", // hex - regex : "0[xX][0-9a-fA-F]+\\b" - }, { - token : "constant.numeric", // float - regex : "[+-]?\\d+(?:(?:\\.\\d*)?(?:[eE][+-]?\\d+)?)?\\b" - }, { - token : "constant.language", - regex : '[!|\\$|%|&|\\*|\\-\\-|\\-|\\+\\+|\\+||=|!=|<=|>=|<>|<|>|!|&&]' - }, { - token : keywordMapper, - regex : "[a-zA-Z_$][a-zA-Z0-9_$\\-]*\\b" - }, { - token : "string", // single line - regex : '"', - next: "string" - }, { - token : "constant", // symbol - regex : /:[^()\[\]{}'"\^%`,;\s]+/ - }, { - token : "string.regexp", //Regular Expressions - regex : '/#"(?:\\.|(?:\\\")|[^\""\n])*"/g' - } - - ], - "string" : [ - { - token : "constant.language.escape", - regex : "\\\\.|\\\\$" - }, { - token : "string", - regex : '[^"\\\\]+' - }, { - token : "string", - regex : '"', - next : "start" - } - ] - }; -}; - -oop.inherits(ClojureHighlightRules, TextHighlightRules); - -exports.ClojureHighlightRules = ClojureHighlightRules; -}); - -ace.define('ace/mode/matching_parens_outdent', ['require', 'exports', 'module' , 'ace/range'], function(require, exports, module) { - - -var Range = require("../range").Range; - -var MatchingParensOutdent = function() {}; - -(function() { - - this.checkOutdent = function(line, input) { - if (! /^\s+$/.test(line)) - return false; - - return /^\s*\)/.test(input); - }; - - this.autoOutdent = function(doc, row) { - var line = doc.getLine(row); - var match = line.match(/^(\s*\))/); - - if (!match) return 0; - - var column = match[1].length; - var openBracePos = doc.findMatchingBracket({row: row, column: column}); - - if (!openBracePos || openBracePos.row == row) return 0; - - var indent = this.$getIndent(doc.getLine(openBracePos.row)); - doc.replace(new Range(row, 0, row, column-1), indent); - }; - - this.$getIndent = function(line) { - var match = line.match(/^(\s+)/); - if (match) { - return match[1]; - } - - return ""; - }; - -}).call(MatchingParensOutdent.prototype); - -exports.MatchingParensOutdent = MatchingParensOutdent; -}); diff --git a/IDE/jsrealb-ide/ace-src-noconflict/mode-cobol.js b/IDE/jsrealb-ide/ace-src-noconflict/mode-cobol.js deleted file mode 100644 index 621472cb..00000000 --- a/IDE/jsrealb-ide/ace-src-noconflict/mode-cobol.js +++ /dev/null @@ -1,125 +0,0 @@ -/* ***** BEGIN LICENSE BLOCK ***** - * Distributed under the BSD license: - * - * Copyright (c) 2010, Ajax.org B.V. - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are met: - * * Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * * Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * * Neither the name of Ajax.org B.V. nor the - * names of its contributors may be used to endorse or promote products - * derived from this software without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND - * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED - * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE - * DISCLAIMED. IN NO EVENT SHALL AJAX.ORG B.V. BE LIABLE FOR ANY - * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES - * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; - * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND - * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - * - * ***** END LICENSE BLOCK ***** */ - -ace.define('ace/mode/cobol', ['require', 'exports', 'module' , 'ace/lib/oop', 'ace/mode/text', 'ace/tokenizer', 'ace/mode/cobol_highlight_rules', 'ace/range'], function(require, exports, module) { - - -var oop = require("../lib/oop"); -var TextMode = require("./text").Mode; -var Tokenizer = require("../tokenizer").Tokenizer; -var CobolHighlightRules = require("./cobol_highlight_rules").CobolHighlightRules; -var Range = require("../range").Range; - -var Mode = function() { - this.HighlightRules = CobolHighlightRules; -}; -oop.inherits(Mode, TextMode); - -(function() { - - this.lineCommentStart = "*"; - - this.$id = "ace/mode/cobol"; -}).call(Mode.prototype); - -exports.Mode = Mode; - -}); - -ace.define('ace/mode/cobol_highlight_rules', ['require', 'exports', 'module' , 'ace/lib/oop', 'ace/mode/text_highlight_rules'], function(require, exports, module) { - - -var oop = require("../lib/oop"); -var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; - -var CobolHighlightRules = function() { -var keywords = "ACCEPT|MERGE|SUM|ADD||MESSAGE|TABLE|ADVANCING|MODE|TAPE|" + -"AFTER|MULTIPLY|TEST|ALL|NEGATIVE|TEXT|ALPHABET|NEXT|THAN|" + -"ALSO|NO|THEN|ALTERNATE|NOT|THROUGH|AND|NUMBER|THRU|ANY|OCCURS|" + -"TIME|ARE|OF|TO|AREA|OFF|TOP||ASCENDING|OMITTED|TRUE|ASSIGN|ON|TYPE|AT|OPEN|" + -"UNIT|AUTHOR|OR|UNTIL|BEFORE|OTHER|UP|BLANK|OUTPUT|USE|BLOCK|PAGE|USING|BOTTOM|" + -"PERFORM|VALUE|BY|PIC|VALUES|CALL|PICTURE|WHEN|CANCEL|PLUS|WITH|CD|POINTER|WRITE|" + -"CHARACTER|POSITION||ZERO|CLOSE|POSITIVE|ZEROS|COLUMN|PROCEDURE|ZEROES|COMMA|PROGRAM|" + -"COMMON|PROGRAM-ID|COMMUNICATION|QUOTE|COMP|RANDOM|COMPUTE|READ|CONTAINS|RECEIVE|CONFIGURATION|" + -"RECORD|CONTINUE|REDEFINES|CONTROL|REFERENCE|COPY|REMAINDER|COUNT|REPLACE|DATA|REPORT|DATE|RESERVE|" + -"DAY|RESET|DELETE|RETURN|DESTINATION|REWIND|DISABLE|REWRITE|DISPLAY|RIGHT|DIVIDE|RUN|DOWN|SAME|" + -"ELSE|SEARCH|ENABLE|SECTION|END|SELECT|ENVIRONMENT|SENTENCE|EQUAL|SET|ERROR|SIGN|EXIT|SEQUENTIAL|" + -"EXTERNAL|SIZE|FLASE|SORT|FILE|SOURCE|LENGTH|SPACE|LESS|STANDARD|LIMIT|START|LINE|STOP|LOCK|STRING|LOW-VALUE|SUBTRACT"; - - var builtinConstants = ( - "true|false|null" - ); - - var builtinFunctions = ( - "count|min|max|avg|sum|rank|now|coalesce|main" - ); - - var keywordMapper = this.createKeywordMapper({ - "support.function": builtinFunctions, - "keyword": keywords, - "constant.language": builtinConstants - }, "identifier", true); - - this.$rules = { - "start" : [ { - token : "comment", - regex : "\\*.*$" - }, { - token : "string", // " string - regex : '".*?"' - }, { - token : "string", // ' string - regex : "'.*?'" - }, { - token : "constant.numeric", // float - regex : "[+-]?\\d+(?:(?:\\.\\d*)?(?:[eE][+-]?\\d+)?)?\\b" - }, { - token : keywordMapper, - regex : "[a-zA-Z_$][a-zA-Z0-9_$]*\\b" - }, { - token : "keyword.operator", - regex : "\\+|\\-|\\/|\\/\\/|%|<@>|@>|<@|&|\\^|~|<|>|<=|=>|==|!=|<>|=" - }, { - token : "paren.lparen", - regex : "[\\(]" - }, { - token : "paren.rparen", - regex : "[\\)]" - }, { - token : "text", - regex : "\\s+" - } ] - }; -}; - -oop.inherits(CobolHighlightRules, TextHighlightRules); - -exports.CobolHighlightRules = CobolHighlightRules; -}); \ No newline at end of file diff --git a/IDE/jsrealb-ide/ace-src-noconflict/mode-coffee.js b/IDE/jsrealb-ide/ace-src-noconflict/mode-coffee.js deleted file mode 100644 index c30c1d3e..00000000 --- a/IDE/jsrealb-ide/ace-src-noconflict/mode-coffee.js +++ /dev/null @@ -1,444 +0,0 @@ -/* ***** BEGIN LICENSE BLOCK ***** - * Distributed under the BSD license: - * - * Copyright (c) 2010, Ajax.org B.V. - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are met: - * * Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * * Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * * Neither the name of Ajax.org B.V. nor the - * names of its contributors may be used to endorse or promote products - * derived from this software without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND - * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED - * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE - * DISCLAIMED. IN NO EVENT SHALL AJAX.ORG B.V. BE LIABLE FOR ANY - * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES - * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; - * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND - * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - * - * ***** END LICENSE BLOCK ***** */ - -ace.define('ace/mode/coffee', ['require', 'exports', 'module' , 'ace/tokenizer', 'ace/mode/coffee_highlight_rules', 'ace/mode/matching_brace_outdent', 'ace/mode/folding/coffee', 'ace/range', 'ace/mode/text', 'ace/worker/worker_client', 'ace/lib/oop'], function(require, exports, module) { - - -var Tokenizer = require("../tokenizer").Tokenizer; -var Rules = require("./coffee_highlight_rules").CoffeeHighlightRules; -var Outdent = require("./matching_brace_outdent").MatchingBraceOutdent; -var FoldMode = require("./folding/coffee").FoldMode; -var Range = require("../range").Range; -var TextMode = require("./text").Mode; -var WorkerClient = require("../worker/worker_client").WorkerClient; -var oop = require("../lib/oop"); - -function Mode() { - this.HighlightRules = Rules; - this.$outdent = new Outdent(); - this.foldingRules = new FoldMode(); -} - -oop.inherits(Mode, TextMode); - -(function() { - - var indenter = /(?:[({[=:]|[-=]>|\b(?:else|switch|try|catch(?:\s*[$A-Za-z_\x7f-\uffff][$\w\x7f-\uffff]*)?|finally))\s*$/; - var commentLine = /^(\s*)#/; - var hereComment = /^\s*###(?!#)/; - var indentation = /^\s*/; - - this.getNextLineIndent = function(state, line, tab) { - var indent = this.$getIndent(line); - var tokens = this.getTokenizer().getLineTokens(line, state).tokens; - - if (!(tokens.length && tokens[tokens.length - 1].type === 'comment') && - state === 'start' && indenter.test(line)) - indent += tab; - return indent; - }; - - this.toggleCommentLines = function(state, doc, startRow, endRow){ - console.log("toggle"); - var range = new Range(0, 0, 0, 0); - for (var i = startRow; i <= endRow; ++i) { - var line = doc.getLine(i); - if (hereComment.test(line)) - continue; - - if (commentLine.test(line)) - line = line.replace(commentLine, '$1'); - else - line = line.replace(indentation, '$&#'); - - range.end.row = range.start.row = i; - range.end.column = line.length + 1; - doc.replace(range, line); - } - }; - - this.checkOutdent = function(state, line, input) { - return this.$outdent.checkOutdent(line, input); - }; - - this.autoOutdent = function(state, doc, row) { - this.$outdent.autoOutdent(doc, row); - }; - - this.createWorker = function(session) { - var worker = new WorkerClient(["ace"], "ace/mode/coffee_worker", "Worker"); - worker.attachToDocument(session.getDocument()); - - worker.on("error", function(e) { - session.setAnnotations([e.data]); - }); - - worker.on("ok", function(e) { - session.clearAnnotations(); - }); - - return worker; - }; - - this.$id = "ace/mode/coffee"; -}).call(Mode.prototype); - -exports.Mode = Mode; - -}); - -ace.define('ace/mode/coffee_highlight_rules', ['require', 'exports', 'module' , 'ace/lib/oop', 'ace/mode/text_highlight_rules'], function(require, exports, module) { - - - var oop = require("../lib/oop"); - var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; - - oop.inherits(CoffeeHighlightRules, TextHighlightRules); - - function CoffeeHighlightRules() { - var identifier = "[$A-Za-z_\\x7f-\\uffff][$\\w\\x7f-\\uffff]*"; - - var keywords = ( - "this|throw|then|try|typeof|super|switch|return|break|by|continue|" + - "catch|class|in|instanceof|is|isnt|if|else|extends|for|own|" + - "finally|function|while|when|new|no|not|delete|debugger|do|loop|of|off|" + - "or|on|unless|until|and|yes" - ); - - var langConstant = ( - "true|false|null|undefined|NaN|Infinity" - ); - - var illegal = ( - "case|const|default|function|var|void|with|enum|export|implements|" + - "interface|let|package|private|protected|public|static|yield|" + - "__hasProp|slice|bind|indexOf" - ); - - var supportClass = ( - "Array|Boolean|Date|Function|Number|Object|RegExp|ReferenceError|String|" + - "Error|EvalError|InternalError|RangeError|ReferenceError|StopIteration|" + - "SyntaxError|TypeError|URIError|" + - "ArrayBuffer|Float32Array|Float64Array|Int16Array|Int32Array|Int8Array|" + - "Uint16Array|Uint32Array|Uint8Array|Uint8ClampedArray" - ); - - var supportFunction = ( - "Math|JSON|isNaN|isFinite|parseInt|parseFloat|encodeURI|" + - "encodeURIComponent|decodeURI|decodeURIComponent|String|" - ); - - var variableLanguage = ( - "window|arguments|prototype|document" - ); - - var keywordMapper = this.createKeywordMapper({ - "keyword": keywords, - "constant.language": langConstant, - "invalid.illegal": illegal, - "language.support.class": supportClass, - "language.support.function": supportFunction, - "variable.language": variableLanguage - }, "identifier"); - - var functionRule = { - token: ["paren.lparen", "variable.parameter", "paren.rparen", "text", "storage.type"], - regex: /(?:(\()((?:"[^")]*?"|'[^')]*?'|\/[^\/)]*?\/|[^()\"'\/])*?)(\))(\s*))?([\-=]>)/.source - }; - - var stringEscape = /\\(?:x[0-9a-fA-F]{2}|u[0-9a-fA-F]{4}|[0-2][0-7]{0,2}|3[0-6][0-7]?|37[0-7]?|[4-7][0-7]?|.)/; - - this.$rules = { - start : [ - { - token : "constant.numeric", - regex : "(?:0x[\\da-fA-F]+|(?:\\d+(?:\\.\\d+)?|\\.\\d+)(?:[eE][+-]?\\d+)?)" - }, { - stateName: "qdoc", - token : "string", regex : "'''", next : [ - {token : "string", regex : "'''", next : "start"}, - {token : "constant.language.escape", regex : stringEscape}, - {defaultToken: "string"} - ] - }, { - stateName: "qqdoc", - token : "string", - regex : '"""', - next : [ - {token : "string", regex : '"""', next : "start"}, - {token : "paren.string", regex : '#{', push : "start"}, - {token : "constant.language.escape", regex : stringEscape}, - {defaultToken: "string"} - ] - }, { - stateName: "qstring", - token : "string", regex : "'", next : [ - {token : "string", regex : "'", next : "start"}, - {token : "constant.language.escape", regex : stringEscape}, - {defaultToken: "string"} - ] - }, { - stateName: "qqstring", - token : "string.start", regex : '"', next : [ - {token : "string.end", regex : '"', next : "start"}, - {token : "paren.string", regex : '#{', push : "start"}, - {token : "constant.language.escape", regex : stringEscape}, - {defaultToken: "string"} - ] - }, { - stateName: "js", - token : "string", regex : "`", next : [ - {token : "string", regex : "`", next : "start"}, - {token : "constant.language.escape", regex : stringEscape}, - {defaultToken: "string"} - ] - }, { - regex: "[{}]", onMatch: function(val, state, stack) { - this.next = ""; - if (val == "{" && stack.length) { - stack.unshift("start", state); - return "paren"; - } - if (val == "}" && stack.length) { - stack.shift(); - this.next = stack.shift(); - if (this.next.indexOf("string") != -1) - return "paren.string"; - } - return "paren"; - } - }, { - token : "string.regex", - regex : "///", - next : "heregex" - }, { - token : "string.regex", - regex : /(?:\/(?![\s=])[^[\/\n\\]*(?:(?:\\[\s\S]|\[[^\]\n\\]*(?:\\[\s\S][^\]\n\\]*)*])[^[\/\n\\]*)*\/)(?:[imgy]{0,4})(?!\w)/ - }, { - token : "comment", - regex : "###(?!#)", - next : "comment" - }, { - token : "comment", - regex : "#.*" - }, { - token : ["punctuation.operator", "text", "identifier"], - regex : "(\\.)(\\s*)(" + illegal + ")" - }, { - token : "punctuation.operator", - regex : "\\." - }, { - token : ["keyword", "text", "language.support.class", - "text", "keyword", "text", "language.support.class"], - regex : "(class)(\\s+)(" + identifier + ")(?:(\\s+)(extends)(\\s+)(" + identifier + "))?" - }, { - token : ["entity.name.function", "text", "keyword.operator", "text"].concat(functionRule.token), - regex : "(" + identifier + ")(\\s*)([=:])(\\s*)" + functionRule.regex - }, - functionRule, - { - token : "variable", - regex : "@(?:" + identifier + ")?" - }, { - token: keywordMapper, - regex : identifier - }, { - token : "punctuation.operator", - regex : "\\,|\\." - }, { - token : "storage.type", - regex : "[\\-=]>" - }, { - token : "keyword.operator", - regex : "(?:[-+*/%<>&|^!?=]=|>>>=?|\\-\\-|\\+\\+|::|&&=|\\|\\|=|<<=|>>=|\\?\\.|\\.{2,3}|[!*+-=><])" - }, { - token : "paren.lparen", - regex : "[({[]" - }, { - token : "paren.rparen", - regex : "[\\]})]" - }, { - token : "text", - regex : "\\s+" - }], - - - heregex : [{ - token : "string.regex", - regex : '.*?///[imgy]{0,4}', - next : "start" - }, { - token : "comment.regex", - regex : "\\s+(?:#.*)?" - }, { - token : "string.regex", - regex : "\\S+" - }], - - comment : [{ - token : "comment", - regex : '###', - next : "start" - }, { - defaultToken : "comment" - }] - }; - this.normalizeRules(); - } - - exports.CoffeeHighlightRules = CoffeeHighlightRules; -}); - -ace.define('ace/mode/matching_brace_outdent', ['require', 'exports', 'module' , 'ace/range'], function(require, exports, module) { - - -var Range = require("../range").Range; - -var MatchingBraceOutdent = function() {}; - -(function() { - - this.checkOutdent = function(line, input) { - if (! /^\s+$/.test(line)) - return false; - - return /^\s*\}/.test(input); - }; - - this.autoOutdent = function(doc, row) { - var line = doc.getLine(row); - var match = line.match(/^(\s*\})/); - - if (!match) return 0; - - var column = match[1].length; - var openBracePos = doc.findMatchingBracket({row: row, column: column}); - - if (!openBracePos || openBracePos.row == row) return 0; - - var indent = this.$getIndent(doc.getLine(openBracePos.row)); - doc.replace(new Range(row, 0, row, column-1), indent); - }; - - this.$getIndent = function(line) { - return line.match(/^\s*/)[0]; - }; - -}).call(MatchingBraceOutdent.prototype); - -exports.MatchingBraceOutdent = MatchingBraceOutdent; -}); - -ace.define('ace/mode/folding/coffee', ['require', 'exports', 'module' , 'ace/lib/oop', 'ace/mode/folding/fold_mode', 'ace/range'], function(require, exports, module) { - - -var oop = require("../../lib/oop"); -var BaseFoldMode = require("./fold_mode").FoldMode; -var Range = require("../../range").Range; - -var FoldMode = exports.FoldMode = function() {}; -oop.inherits(FoldMode, BaseFoldMode); - -(function() { - - this.getFoldWidgetRange = function(session, foldStyle, row) { - var range = this.indentationBlock(session, row); - if (range) - return range; - - var re = /\S/; - var line = session.getLine(row); - var startLevel = line.search(re); - if (startLevel == -1 || line[startLevel] != "#") - return; - - var startColumn = line.length; - var maxRow = session.getLength(); - var startRow = row; - var endRow = row; - - while (++row < maxRow) { - line = session.getLine(row); - var level = line.search(re); - - if (level == -1) - continue; - - if (line[level] != "#") - break; - - endRow = row; - } - - if (endRow > startRow) { - var endColumn = session.getLine(endRow).length; - return new Range(startRow, startColumn, endRow, endColumn); - } - }; - this.getFoldWidget = function(session, foldStyle, row) { - var line = session.getLine(row); - var indent = line.search(/\S/); - var next = session.getLine(row + 1); - var prev = session.getLine(row - 1); - var prevIndent = prev.search(/\S/); - var nextIndent = next.search(/\S/); - - if (indent == -1) { - session.foldWidgets[row - 1] = prevIndent!= -1 && prevIndent < nextIndent ? "start" : ""; - return ""; - } - if (prevIndent == -1) { - if (indent == nextIndent && line[indent] == "#" && next[indent] == "#") { - session.foldWidgets[row - 1] = ""; - session.foldWidgets[row + 1] = ""; - return "start"; - } - } else if (prevIndent == indent && line[indent] == "#" && prev[indent] == "#") { - if (session.getLine(row - 2).search(/\S/) == -1) { - session.foldWidgets[row - 1] = "start"; - session.foldWidgets[row + 1] = ""; - return ""; - } - } - - if (prevIndent!= -1 && prevIndent < indent) - session.foldWidgets[row - 1] = "start"; - else - session.foldWidgets[row - 1] = ""; - - if (indent < nextIndent) - return "start"; - else - return ""; - }; - -}).call(FoldMode.prototype); - -}); diff --git a/IDE/jsrealb-ide/ace-src-noconflict/mode-coldfusion.js b/IDE/jsrealb-ide/ace-src-noconflict/mode-coldfusion.js deleted file mode 100644 index e60733e7..00000000 --- a/IDE/jsrealb-ide/ace-src-noconflict/mode-coldfusion.js +++ /dev/null @@ -1,1954 +0,0 @@ -/* ***** BEGIN LICENSE BLOCK ***** - * Distributed under the BSD license: - * - * Copyright (c) 2010, Ajax.org B.V. - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are met: - * * Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * * Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * * Neither the name of Ajax.org B.V. nor the - * names of its contributors may be used to endorse or promote products - * derived from this software without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND - * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED - * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE - * DISCLAIMED. IN NO EVENT SHALL AJAX.ORG B.V. BE LIABLE FOR ANY - * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES - * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; - * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND - * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - * - * ***** END LICENSE BLOCK ***** */ - -ace.define('ace/mode/coldfusion', ['require', 'exports', 'module' , 'ace/lib/oop', 'ace/mode/xml', 'ace/mode/javascript', 'ace/mode/css', 'ace/tokenizer', 'ace/mode/coldfusion_highlight_rules'], function(require, exports, module) { - - -var oop = require("../lib/oop"); -var XmlMode = require("./xml").Mode; -var JavaScriptMode = require("./javascript").Mode; -var CssMode = require("./css").Mode; -var Tokenizer = require("../tokenizer").Tokenizer; -var ColdfusionHighlightRules = require("./coldfusion_highlight_rules").ColdfusionHighlightRules; - -var Mode = function() { - XmlMode.call(this); - - this.HighlightRules = ColdfusionHighlightRules; - - this.createModeDelegates({ - "js-": JavaScriptMode, - "css-": CssMode - }); -}; -oop.inherits(Mode, XmlMode); - -(function() { - - this.getNextLineIndent = function(state, line, tab) { - return this.$getIndent(line); - }; - - this.$id = "ace/mode/coldfusion"; -}).call(Mode.prototype); - -exports.Mode = Mode; -}); - -ace.define('ace/mode/xml', ['require', 'exports', 'module' , 'ace/lib/oop', 'ace/mode/text', 'ace/tokenizer', 'ace/mode/xml_highlight_rules', 'ace/mode/behaviour/xml', 'ace/mode/folding/xml'], function(require, exports, module) { - - -var oop = require("../lib/oop"); -var TextMode = require("./text").Mode; -var Tokenizer = require("../tokenizer").Tokenizer; -var XmlHighlightRules = require("./xml_highlight_rules").XmlHighlightRules; -var XmlBehaviour = require("./behaviour/xml").XmlBehaviour; -var XmlFoldMode = require("./folding/xml").FoldMode; - -var Mode = function() { - this.HighlightRules = XmlHighlightRules; - this.$behaviour = new XmlBehaviour(); - this.foldingRules = new XmlFoldMode(); -}; - -oop.inherits(Mode, TextMode); - -(function() { - - this.blockComment = {start: ""}; - - this.$id = "ace/mode/xml"; -}).call(Mode.prototype); - -exports.Mode = Mode; -}); - -ace.define('ace/mode/xml_highlight_rules', ['require', 'exports', 'module' , 'ace/lib/oop', 'ace/mode/xml_util', 'ace/mode/text_highlight_rules'], function(require, exports, module) { - - -var oop = require("../lib/oop"); -var xmlUtil = require("./xml_util"); -var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; - -var XmlHighlightRules = function(normalize) { - this.$rules = { - start : [ - {token : "punctuation.string.begin", regex : "<\\!\\[CDATA\\[", next : "cdata"}, - { - token : ["punctuation.instruction.begin", "keyword.instruction"], - regex : "(<\\?)(xml)(?=[\\s])", next : "xml_declaration" - }, - { - token : ["punctuation.instruction.begin", "keyword.instruction"], - regex : "(<\\?)([-_a-zA-Z0-9]+)", next : "instruction" - }, - {token : "comment", regex : "<\\!--", next : "comment"}, - { - token : ["punctuation.doctype.begin", "meta.tag.doctype"], - regex : "(<\\!)(DOCTYPE)(?=[\\s])", next : "doctype" - }, - {include : "tag"}, - {include : "reference"} - ], - - xml_declaration : [ - {include : "attributes"}, - {include : "instruction"} - ], - - instruction : [ - {token : "punctuation.instruction.end", regex : "\\?>", next : "start"} - ], - - doctype : [ - {include : "space"}, - {include : "string"}, - {token : "punctuation.doctype.end", regex : ">", next : "start"}, - {token : "xml-pe", regex : "[-_a-zA-Z0-9:]+"}, - {token : "punctuation.begin", regex : "\\[", push : "declarations"} - ], - - declarations : [{ - token : "text", - regex : "\\s+" - }, { - token: "punctuation.end", - regex: "]", - next: "pop" - }, { - token : ["punctuation.begin", "keyword"], - regex : "(<\\!)([-_a-zA-Z0-9]+)", - push : [{ - token : "text", - regex : "\\s+" - }, - { - token : "punctuation.end", - regex : ">", - next : "pop" - }, - {include : "string"}] - }], - - cdata : [ - {token : "string.end", regex : "\\]\\]>", next : "start"}, - {token : "text", regex : "\\s+"}, - {token : "text", regex : "(?:[^\\]]|\\](?!\\]>))+"} - ], - - comment : [ - {token : "comment", regex : "-->", next : "start"}, - {defaultToken : "comment"} - ], - - tag : [{ - token : ["meta.tag.punctuation.begin", "meta.tag.name"], - regex : "(<)((?:[-_a-zA-Z0-9]+:)?[-_a-zA-Z0-9]+)", - next: [ - {include : "attributes"}, - {token : "meta.tag.punctuation.end", regex : "/?>", next : "start"} - ] - }, { - token : ["meta.tag.punctuation.begin", "meta.tag.name"], - regex : "(", next : "start"} - ] - }], - - space : [ - {token : "text", regex : "\\s+"} - ], - - reference : [{ - token : "constant.language.escape", - regex : "(?:&#[0-9]+;)|(?:&#x[0-9a-fA-F]+;)|(?:&[a-zA-Z0-9_:\\.-]+;)" - }, { - token : "text", regex : "&" - }], - - string: [{ - token : "string", - regex : "'", - push : "qstring_inner" - }, { - token : "string", - regex : '"', - push : "qqstring_inner" - }], - - qstring_inner: [ - {token : "string", regex: "'", next: "pop"}, - {include : "reference"}, - {defaultToken : "string"} - ], - - qqstring_inner: [ - {token : "string", regex: '"', next: "pop"}, - {include : "reference"}, - {defaultToken : "string"} - ], - - attributes: [{ - token : "entity.other.attribute-name", - regex : "(?:[-_a-zA-Z0-9]+:)?[-_a-zA-Z0-9]+" - }, { - token : "keyword.operator.separator", - regex : "=" - }, { - include : "space" - }, { - include : "string" - }] - }; - - if (this.constructor === XmlHighlightRules) - this.normalizeRules(); -}; - - -(function() { - - this.embedTagRules = function(HighlightRules, prefix, tag){ - this.$rules.tag.unshift({ - token : ["meta.tag.punctuation.begin", "meta.tag.name." + tag], - regex : "(<)(" + tag + ")", - next: [ - {include : "space"}, - {include : "attributes"}, - {token : "meta.tag.punctuation.end", regex : "/?>", next : prefix + "start"} - ] - }); - - this.$rules[tag + "-end"] = [ - {include : "space"}, - {token : "meta.tag.punctuation.end", regex : ">", next: "start", - onMatch : function(value, currentState, stack) { - stack.splice(0); - return this.token; - }} - ] - - this.embedRules(HighlightRules, prefix, [{ - token: ["meta.tag.punctuation.begin", "meta.tag.name." + tag], - regex : "(" - }]); - }; - -}).call(TextHighlightRules.prototype); - -oop.inherits(XmlHighlightRules, TextHighlightRules); - -exports.XmlHighlightRules = XmlHighlightRules; -}); - -ace.define('ace/mode/xml_util', ['require', 'exports', 'module' ], function(require, exports, module) { - - -function string(state) { - return [{ - token : "string", - regex : '"', - next : state + "_qqstring" - }, { - token : "string", - regex : "'", - next : state + "_qstring" - }]; -} - -function multiLineString(quote, state) { - return [ - {token : "string", regex : quote, next : state}, - { - token : "constant.language.escape", - regex : "(?:&#[0-9]+;)|(?:&#x[0-9a-fA-F]+;)|(?:&[a-zA-Z0-9_:\\.-]+;)" - }, - {defaultToken : "string"} - ]; -} - -exports.tag = function(states, name, nextState, tagMap) { - states[name] = [{ - token : "text", - regex : "\\s+" - }, { - - token : !tagMap ? "meta.tag.tag-name" : function(value) { - if (tagMap[value]) - return "meta.tag.tag-name." + tagMap[value]; - else - return "meta.tag.tag-name"; - }, - regex : "[-_a-zA-Z0-9:]+", - next : name + "_embed_attribute_list" - }, { - token: "empty", - regex: "", - next : name + "_embed_attribute_list" - }]; - - states[name + "_qstring"] = multiLineString("'", name + "_embed_attribute_list"); - states[name + "_qqstring"] = multiLineString("\"", name + "_embed_attribute_list"); - - states[name + "_embed_attribute_list"] = [{ - token : "meta.tag.r", - regex : "/?>", - next : nextState - }, { - token : "keyword.operator", - regex : "=" - }, { - token : "entity.other.attribute-name", - regex : "[-_a-zA-Z0-9:]+" - }, { - token : "constant.numeric", // float - regex : "[+-]?\\d+(?:(?:\\.\\d*)?(?:[eE][+-]?\\d+)?)?\\b" - }, { - token : "text", - regex : "\\s+" - }].concat(string(name)); -}; - -}); - -ace.define('ace/mode/behaviour/xml', ['require', 'exports', 'module' , 'ace/lib/oop', 'ace/mode/behaviour', 'ace/mode/behaviour/cstyle', 'ace/token_iterator'], function(require, exports, module) { - - -var oop = require("../../lib/oop"); -var Behaviour = require("../behaviour").Behaviour; -var CstyleBehaviour = require("./cstyle").CstyleBehaviour; -var TokenIterator = require("../../token_iterator").TokenIterator; - -function hasType(token, type) { - var tokenTypes = token.type.split('.'); - return type.split('.').every(function(type){ - return (tokenTypes.indexOf(type) !== -1); - }); - return hasType; -} - -var XmlBehaviour = function () { - - this.inherit(CstyleBehaviour, ["string_dquotes"]); // Get string behaviour - - this.add("autoclosing", "insertion", function (state, action, editor, session, text) { - if (text == '>') { - var position = editor.getCursorPosition(); - var iterator = new TokenIterator(session, position.row, position.column); - var token = iterator.getCurrentToken(); - - if (token && hasType(token, 'string') && iterator.getCurrentTokenColumn() + token.value.length > position.column) - return; - var atCursor = false; - if (!token || !hasType(token, 'meta.tag') && !(hasType(token, 'text') && token.value.match('/'))){ - do { - token = iterator.stepBackward(); - } while (token && (hasType(token, 'string') || hasType(token, 'keyword.operator') || hasType(token, 'entity.attribute-name') || hasType(token, 'text'))); - } else { - atCursor = true; - } - if (!token || !hasType(token, 'meta.tag.name') || iterator.stepBackward().value.match('/')) { - return; - } - var tag = token.value; - if (atCursor){ - var tag = tag.substring(0, position.column - token.start); - } - - return { - text: '>' + '', - selection: [1, 1] - } - } - }); - - this.add('autoindent', 'insertion', function (state, action, editor, session, text) { - if (text == "\n") { - var cursor = editor.getCursorPosition(); - var line = session.getLine(cursor.row); - var rightChars = line.substring(cursor.column, cursor.column + 2); - if (rightChars == ' -1; - }; - - CstyleBehaviour.recordAutoInsert = function(editor, session, bracket) { - var cursor = editor.getCursorPosition(); - var line = session.doc.getLine(cursor.row); - if (!this.isAutoInsertedClosing(cursor, line, autoInsertedLineEnd[0])) - autoInsertedBrackets = 0; - autoInsertedRow = cursor.row; - autoInsertedLineEnd = bracket + line.substr(cursor.column); - autoInsertedBrackets++; - }; - - CstyleBehaviour.recordMaybeInsert = function(editor, session, bracket) { - var cursor = editor.getCursorPosition(); - var line = session.doc.getLine(cursor.row); - if (!this.isMaybeInsertedClosing(cursor, line)) - maybeInsertedBrackets = 0; - maybeInsertedRow = cursor.row; - maybeInsertedLineStart = line.substr(0, cursor.column) + bracket; - maybeInsertedLineEnd = line.substr(cursor.column); - maybeInsertedBrackets++; - }; - - CstyleBehaviour.isAutoInsertedClosing = function(cursor, line, bracket) { - return autoInsertedBrackets > 0 && - cursor.row === autoInsertedRow && - bracket === autoInsertedLineEnd[0] && - line.substr(cursor.column) === autoInsertedLineEnd; - }; - - CstyleBehaviour.isMaybeInsertedClosing = function(cursor, line) { - return maybeInsertedBrackets > 0 && - cursor.row === maybeInsertedRow && - line.substr(cursor.column) === maybeInsertedLineEnd && - line.substr(0, cursor.column) == maybeInsertedLineStart; - }; - - CstyleBehaviour.popAutoInsertedClosing = function() { - autoInsertedLineEnd = autoInsertedLineEnd.substr(1); - autoInsertedBrackets--; - }; - - CstyleBehaviour.clearMaybeInsertedClosing = function() { - maybeInsertedBrackets = 0; - maybeInsertedRow = -1; - }; - - this.add("braces", "insertion", function (state, action, editor, session, text) { - var cursor = editor.getCursorPosition(); - var line = session.doc.getLine(cursor.row); - if (text == '{') { - var selection = editor.getSelectionRange(); - var selected = session.doc.getTextRange(selection); - if (selected !== "" && selected !== "{" && editor.getWrapBehavioursEnabled()) { - return { - text: '{' + selected + '}', - selection: false - }; - } else if (CstyleBehaviour.isSaneInsertion(editor, session)) { - if (/[\]\}\)]/.test(line[cursor.column]) || editor.inMultiSelectMode) { - CstyleBehaviour.recordAutoInsert(editor, session, "}"); - return { - text: '{}', - selection: [1, 1] - }; - } else { - CstyleBehaviour.recordMaybeInsert(editor, session, "{"); - return { - text: '{', - selection: [1, 1] - }; - } - } - } else if (text == '}') { - var rightChar = line.substring(cursor.column, cursor.column + 1); - if (rightChar == '}') { - var matching = session.$findOpeningBracket('}', {column: cursor.column + 1, row: cursor.row}); - if (matching !== null && CstyleBehaviour.isAutoInsertedClosing(cursor, line, text)) { - CstyleBehaviour.popAutoInsertedClosing(); - return { - text: '', - selection: [1, 1] - }; - } - } - } else if (text == "\n" || text == "\r\n") { - var closing = ""; - if (CstyleBehaviour.isMaybeInsertedClosing(cursor, line)) { - closing = lang.stringRepeat("}", maybeInsertedBrackets); - CstyleBehaviour.clearMaybeInsertedClosing(); - } - var rightChar = line.substring(cursor.column, cursor.column + 1); - if (rightChar === '}') { - var openBracePos = session.findMatchingBracket({row: cursor.row, column: cursor.column+1}, '}'); - if (!openBracePos) - return null; - var next_indent = this.$getIndent(session.getLine(openBracePos.row)); - } else if (closing) { - var next_indent = this.$getIndent(line); - } else { - return; - } - var indent = next_indent + session.getTabString(); - - return { - text: '\n' + indent + '\n' + next_indent + closing, - selection: [1, indent.length, 1, indent.length] - }; - } else { - CstyleBehaviour.clearMaybeInsertedClosing(); - } - }); - - this.add("braces", "deletion", function (state, action, editor, session, range) { - var selected = session.doc.getTextRange(range); - if (!range.isMultiLine() && selected == '{') { - var line = session.doc.getLine(range.start.row); - var rightChar = line.substring(range.end.column, range.end.column + 1); - if (rightChar == '}') { - range.end.column++; - return range; - } else { - maybeInsertedBrackets--; - } - } - }); - - this.add("parens", "insertion", function (state, action, editor, session, text) { - if (text == '(') { - var selection = editor.getSelectionRange(); - var selected = session.doc.getTextRange(selection); - if (selected !== "" && editor.getWrapBehavioursEnabled()) { - return { - text: '(' + selected + ')', - selection: false - }; - } else if (CstyleBehaviour.isSaneInsertion(editor, session)) { - CstyleBehaviour.recordAutoInsert(editor, session, ")"); - return { - text: '()', - selection: [1, 1] - }; - } - } else if (text == ')') { - var cursor = editor.getCursorPosition(); - var line = session.doc.getLine(cursor.row); - var rightChar = line.substring(cursor.column, cursor.column + 1); - if (rightChar == ')') { - var matching = session.$findOpeningBracket(')', {column: cursor.column + 1, row: cursor.row}); - if (matching !== null && CstyleBehaviour.isAutoInsertedClosing(cursor, line, text)) { - CstyleBehaviour.popAutoInsertedClosing(); - return { - text: '', - selection: [1, 1] - }; - } - } - } - }); - - this.add("parens", "deletion", function (state, action, editor, session, range) { - var selected = session.doc.getTextRange(range); - if (!range.isMultiLine() && selected == '(') { - var line = session.doc.getLine(range.start.row); - var rightChar = line.substring(range.start.column + 1, range.start.column + 2); - if (rightChar == ')') { - range.end.column++; - return range; - } - } - }); - - this.add("brackets", "insertion", function (state, action, editor, session, text) { - if (text == '[') { - var selection = editor.getSelectionRange(); - var selected = session.doc.getTextRange(selection); - if (selected !== "" && editor.getWrapBehavioursEnabled()) { - return { - text: '[' + selected + ']', - selection: false - }; - } else if (CstyleBehaviour.isSaneInsertion(editor, session)) { - CstyleBehaviour.recordAutoInsert(editor, session, "]"); - return { - text: '[]', - selection: [1, 1] - }; - } - } else if (text == ']') { - var cursor = editor.getCursorPosition(); - var line = session.doc.getLine(cursor.row); - var rightChar = line.substring(cursor.column, cursor.column + 1); - if (rightChar == ']') { - var matching = session.$findOpeningBracket(']', {column: cursor.column + 1, row: cursor.row}); - if (matching !== null && CstyleBehaviour.isAutoInsertedClosing(cursor, line, text)) { - CstyleBehaviour.popAutoInsertedClosing(); - return { - text: '', - selection: [1, 1] - }; - } - } - } - }); - - this.add("brackets", "deletion", function (state, action, editor, session, range) { - var selected = session.doc.getTextRange(range); - if (!range.isMultiLine() && selected == '[') { - var line = session.doc.getLine(range.start.row); - var rightChar = line.substring(range.start.column + 1, range.start.column + 2); - if (rightChar == ']') { - range.end.column++; - return range; - } - } - }); - - this.add("string_dquotes", "insertion", function (state, action, editor, session, text) { - if (text == '"' || text == "'") { - var quote = text; - var selection = editor.getSelectionRange(); - var selected = session.doc.getTextRange(selection); - if (selected !== "" && selected !== "'" && selected != '"' && editor.getWrapBehavioursEnabled()) { - return { - text: quote + selected + quote, - selection: false - }; - } else { - var cursor = editor.getCursorPosition(); - var line = session.doc.getLine(cursor.row); - var leftChar = line.substring(cursor.column-1, cursor.column); - if (leftChar == '\\') { - return null; - } - var tokens = session.getTokens(selection.start.row); - var col = 0, token; - var quotepos = -1; // Track whether we're inside an open quote. - - for (var x = 0; x < tokens.length; x++) { - token = tokens[x]; - if (token.type == "string") { - quotepos = -1; - } else if (quotepos < 0) { - quotepos = token.value.indexOf(quote); - } - if ((token.value.length + col) > selection.start.column) { - break; - } - col += tokens[x].value.length; - } - if (!token || (quotepos < 0 && token.type !== "comment" && (token.type !== "string" || ((selection.start.column !== token.value.length+col-1) && token.value.lastIndexOf(quote) === token.value.length-1)))) { - if (!CstyleBehaviour.isSaneInsertion(editor, session)) - return; - return { - text: quote + quote, - selection: [1,1] - }; - } else if (token && token.type === "string") { - var rightChar = line.substring(cursor.column, cursor.column + 1); - if (rightChar == quote) { - return { - text: '', - selection: [1, 1] - }; - } - } - } - } - }); - - this.add("string_dquotes", "deletion", function (state, action, editor, session, range) { - var selected = session.doc.getTextRange(range); - if (!range.isMultiLine() && (selected == '"' || selected == "'")) { - var line = session.doc.getLine(range.start.row); - var rightChar = line.substring(range.start.column + 1, range.start.column + 2); - if (rightChar == selected) { - range.end.column++; - return range; - } - } - }); - -}; - -oop.inherits(CstyleBehaviour, Behaviour); - -exports.CstyleBehaviour = CstyleBehaviour; -}); - -ace.define('ace/mode/folding/xml', ['require', 'exports', 'module' , 'ace/lib/oop', 'ace/lib/lang', 'ace/range', 'ace/mode/folding/fold_mode', 'ace/token_iterator'], function(require, exports, module) { - - -var oop = require("../../lib/oop"); -var lang = require("../../lib/lang"); -var Range = require("../../range").Range; -var BaseFoldMode = require("./fold_mode").FoldMode; -var TokenIterator = require("../../token_iterator").TokenIterator; - -var FoldMode = exports.FoldMode = function(voidElements) { - BaseFoldMode.call(this); - this.voidElements = voidElements || {}; -}; -oop.inherits(FoldMode, BaseFoldMode); - -(function() { - - this.getFoldWidget = function(session, foldStyle, row) { - var tag = this._getFirstTagInLine(session, row); - - if (tag.closing) - return foldStyle == "markbeginend" ? "end" : ""; - - if (!tag.tagName || this.voidElements[tag.tagName.toLowerCase()]) - return ""; - - if (tag.selfClosing) - return ""; - - if (tag.value.indexOf("/" + tag.tagName) !== -1) - return ""; - - return "start"; - }; - - this._getFirstTagInLine = function(session, row) { - var tokens = session.getTokens(row); - var value = ""; - for (var i = 0; i < tokens.length; i++) { - var token = tokens[i]; - if (token.type.lastIndexOf("meta.tag", 0) === 0) - value += token.value; - else - value += lang.stringRepeat(" ", token.value.length); - } - - return this._parseTag(value); - }; - - this.tagRe = /^(\s*)(?)/; - this._parseTag = function(tag) { - - var match = tag.match(this.tagRe); - var column = 0; - - return { - value: tag, - match: match ? match[2] : "", - closing: match ? !!match[3] : false, - selfClosing: match ? !!match[5] || match[2] == "/>" : false, - tagName: match ? match[4] : "", - column: match[1] ? column + match[1].length : column - }; - }; - this._readTagForward = function(iterator) { - var token = iterator.getCurrentToken(); - if (!token) - return null; - - var value = ""; - var start; - - do { - if (token.type.lastIndexOf("meta.tag", 0) === 0) { - if (!start) { - var start = { - row: iterator.getCurrentTokenRow(), - column: iterator.getCurrentTokenColumn() - }; - } - value += token.value; - if (value.indexOf(">") !== -1) { - var tag = this._parseTag(value); - tag.start = start; - tag.end = { - row: iterator.getCurrentTokenRow(), - column: iterator.getCurrentTokenColumn() + token.value.length - }; - iterator.stepForward(); - return tag; - } - } - } while(token = iterator.stepForward()); - - return null; - }; - - this._readTagBackward = function(iterator) { - var token = iterator.getCurrentToken(); - if (!token) - return null; - - var value = ""; - var end; - - do { - if (token.type.lastIndexOf("meta.tag", 0) === 0) { - if (!end) { - end = { - row: iterator.getCurrentTokenRow(), - column: iterator.getCurrentTokenColumn() + token.value.length - }; - } - value = token.value + value; - if (value.indexOf("<") !== -1) { - var tag = this._parseTag(value); - tag.end = end; - tag.start = { - row: iterator.getCurrentTokenRow(), - column: iterator.getCurrentTokenColumn() - }; - iterator.stepBackward(); - return tag; - } - } - } while(token = iterator.stepBackward()); - - return null; - }; - - this._pop = function(stack, tag) { - while (stack.length) { - - var top = stack[stack.length-1]; - if (!tag || top.tagName == tag.tagName) { - return stack.pop(); - } - else if (this.voidElements[tag.tagName]) { - return; - } - else if (this.voidElements[top.tagName]) { - stack.pop(); - continue; - } else { - return null; - } - } - }; - - this.getFoldWidgetRange = function(session, foldStyle, row) { - var firstTag = this._getFirstTagInLine(session, row); - - if (!firstTag.match) - return null; - - var isBackward = firstTag.closing || firstTag.selfClosing; - var stack = []; - var tag; - - if (!isBackward) { - var iterator = new TokenIterator(session, row, firstTag.column); - var start = { - row: row, - column: firstTag.column + firstTag.tagName.length + 2 - }; - while (tag = this._readTagForward(iterator)) { - if (tag.selfClosing) { - if (!stack.length) { - tag.start.column += tag.tagName.length + 2; - tag.end.column -= 2; - return Range.fromPoints(tag.start, tag.end); - } else - continue; - } - - if (tag.closing) { - this._pop(stack, tag); - if (stack.length == 0) - return Range.fromPoints(start, tag.start); - } - else { - stack.push(tag) - } - } - } - else { - var iterator = new TokenIterator(session, row, firstTag.column + firstTag.match.length); - var end = { - row: row, - column: firstTag.column - }; - - while (tag = this._readTagBackward(iterator)) { - if (tag.selfClosing) { - if (!stack.length) { - tag.start.column += tag.tagName.length + 2; - tag.end.column -= 2; - return Range.fromPoints(tag.start, tag.end); - } else - continue; - } - - if (!tag.closing) { - this._pop(stack, tag); - if (stack.length == 0) { - tag.start.column += tag.tagName.length + 2; - return Range.fromPoints(tag.start, end); - } - } - else { - stack.push(tag) - } - } - } - - }; - -}).call(FoldMode.prototype); - -}); - -ace.define('ace/mode/javascript', ['require', 'exports', 'module' , 'ace/lib/oop', 'ace/mode/text', 'ace/tokenizer', 'ace/mode/javascript_highlight_rules', 'ace/mode/matching_brace_outdent', 'ace/range', 'ace/worker/worker_client', 'ace/mode/behaviour/cstyle', 'ace/mode/folding/cstyle'], function(require, exports, module) { - - -var oop = require("../lib/oop"); -var TextMode = require("./text").Mode; -var Tokenizer = require("../tokenizer").Tokenizer; -var JavaScriptHighlightRules = require("./javascript_highlight_rules").JavaScriptHighlightRules; -var MatchingBraceOutdent = require("./matching_brace_outdent").MatchingBraceOutdent; -var Range = require("../range").Range; -var WorkerClient = require("../worker/worker_client").WorkerClient; -var CstyleBehaviour = require("./behaviour/cstyle").CstyleBehaviour; -var CStyleFoldMode = require("./folding/cstyle").FoldMode; - -var Mode = function() { - this.HighlightRules = JavaScriptHighlightRules; - - this.$outdent = new MatchingBraceOutdent(); - this.$behaviour = new CstyleBehaviour(); - this.foldingRules = new CStyleFoldMode(); -}; -oop.inherits(Mode, TextMode); - -(function() { - - this.lineCommentStart = "//"; - this.blockComment = {start: "/*", end: "*/"}; - - this.getNextLineIndent = function(state, line, tab) { - var indent = this.$getIndent(line); - - var tokenizedLine = this.getTokenizer().getLineTokens(line, state); - var tokens = tokenizedLine.tokens; - var endState = tokenizedLine.state; - - if (tokens.length && tokens[tokens.length-1].type == "comment") { - return indent; - } - - if (state == "start" || state == "no_regex") { - var match = line.match(/^.*(?:\bcase\b.*\:|[\{\(\[])\s*$/); - if (match) { - indent += tab; - } - } else if (state == "doc-start") { - if (endState == "start" || endState == "no_regex") { - return ""; - } - var match = line.match(/^\s*(\/?)\*/); - if (match) { - if (match[1]) { - indent += " "; - } - indent += "* "; - } - } - - return indent; - }; - - this.checkOutdent = function(state, line, input) { - return this.$outdent.checkOutdent(line, input); - }; - - this.autoOutdent = function(state, doc, row) { - this.$outdent.autoOutdent(doc, row); - }; - - this.createWorker = function(session) { - var worker = new WorkerClient(["ace"], "ace/mode/javascript_worker", "JavaScriptWorker"); - worker.attachToDocument(session.getDocument()); - - worker.on("jslint", function(results) { - session.setAnnotations(results.data); - }); - - worker.on("terminate", function() { - session.clearAnnotations(); - }); - - return worker; - }; - - this.$id = "ace/mode/javascript"; -}).call(Mode.prototype); - -exports.Mode = Mode; -}); - -ace.define('ace/mode/javascript_highlight_rules', ['require', 'exports', 'module' , 'ace/lib/oop', 'ace/mode/doc_comment_highlight_rules', 'ace/mode/text_highlight_rules'], function(require, exports, module) { - - -var oop = require("../lib/oop"); -var DocCommentHighlightRules = require("./doc_comment_highlight_rules").DocCommentHighlightRules; -var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; - -var JavaScriptHighlightRules = function() { - var keywordMapper = this.createKeywordMapper({ - "variable.language": - "Array|Boolean|Date|Function|Iterator|Number|Object|RegExp|String|Proxy|" + // Constructors - "Namespace|QName|XML|XMLList|" + // E4X - "ArrayBuffer|Float32Array|Float64Array|Int16Array|Int32Array|Int8Array|" + - "Uint16Array|Uint32Array|Uint8Array|Uint8ClampedArray|" + - "Error|EvalError|InternalError|RangeError|ReferenceError|StopIteration|" + // Errors - "SyntaxError|TypeError|URIError|" + - "decodeURI|decodeURIComponent|encodeURI|encodeURIComponent|eval|isFinite|" + // Non-constructor functions - "isNaN|parseFloat|parseInt|" + - "JSON|Math|" + // Other - "this|arguments|prototype|window|document" , // Pseudo - "keyword": - "const|yield|import|get|set|" + - "break|case|catch|continue|default|delete|do|else|finally|for|function|" + - "if|in|instanceof|new|return|switch|throw|try|typeof|let|var|while|with|debugger|" + - "__parent__|__count__|escape|unescape|with|__proto__|" + - "class|enum|extends|super|export|implements|private|public|interface|package|protected|static", - "storage.type": - "const|let|var|function", - "constant.language": - "null|Infinity|NaN|undefined", - "support.function": - "alert", - "constant.language.boolean": "true|false" - }, "identifier"); - var kwBeforeRe = "case|do|else|finally|in|instanceof|return|throw|try|typeof|yield|void"; - var identifierRe = "[a-zA-Z\\$_\u00a1-\uffff][a-zA-Z\\d\\$_\u00a1-\uffff]*\\b"; - - var escapedRe = "\\\\(?:x[0-9a-fA-F]{2}|" + // hex - "u[0-9a-fA-F]{4}|" + // unicode - "[0-2][0-7]{0,2}|" + // oct - "3[0-6][0-7]?|" + // oct - "37[0-7]?|" + // oct - "[4-7][0-7]?|" + //oct - ".)"; - - this.$rules = { - "no_regex" : [ - { - token : "comment", - regex : "\\/\\/", - next : "line_comment" - }, - DocCommentHighlightRules.getStartRule("doc-start"), - { - token : "comment", // multi line comment - regex : /\/\*/, - next : "comment" - }, { - token : "string", - regex : "'(?=.)", - next : "qstring" - }, { - token : "string", - regex : '"(?=.)', - next : "qqstring" - }, { - token : "constant.numeric", // hex - regex : /0[xX][0-9a-fA-F]+\b/ - }, { - token : "constant.numeric", // float - regex : /[+-]?\d+(?:(?:\.\d*)?(?:[eE][+-]?\d+)?)?\b/ - }, { - token : [ - "storage.type", "punctuation.operator", "support.function", - "punctuation.operator", "entity.name.function", "text","keyword.operator" - ], - regex : "(" + identifierRe + ")(\\.)(prototype)(\\.)(" + identifierRe +")(\\s*)(=)", - next: "function_arguments" - }, { - token : [ - "storage.type", "punctuation.operator", "entity.name.function", "text", - "keyword.operator", "text", "storage.type", "text", "paren.lparen" - ], - regex : "(" + identifierRe + ")(\\.)(" + identifierRe +")(\\s*)(=)(\\s*)(function)(\\s*)(\\()", - next: "function_arguments" - }, { - token : [ - "entity.name.function", "text", "keyword.operator", "text", "storage.type", - "text", "paren.lparen" - ], - regex : "(" + identifierRe +")(\\s*)(=)(\\s*)(function)(\\s*)(\\()", - next: "function_arguments" - }, { - token : [ - "storage.type", "punctuation.operator", "entity.name.function", "text", - "keyword.operator", "text", - "storage.type", "text", "entity.name.function", "text", "paren.lparen" - ], - regex : "(" + identifierRe + ")(\\.)(" + identifierRe +")(\\s*)(=)(\\s*)(function)(\\s+)(\\w+)(\\s*)(\\()", - next: "function_arguments" - }, { - token : [ - "storage.type", "text", "entity.name.function", "text", "paren.lparen" - ], - regex : "(function)(\\s+)(" + identifierRe + ")(\\s*)(\\()", - next: "function_arguments" - }, { - token : [ - "entity.name.function", "text", "punctuation.operator", - "text", "storage.type", "text", "paren.lparen" - ], - regex : "(" + identifierRe + ")(\\s*)(:)(\\s*)(function)(\\s*)(\\()", - next: "function_arguments" - }, { - token : [ - "text", "text", "storage.type", "text", "paren.lparen" - ], - regex : "(:)(\\s*)(function)(\\s*)(\\()", - next: "function_arguments" - }, { - token : "keyword", - regex : "(?:" + kwBeforeRe + ")\\b", - next : "start" - }, { - token : ["punctuation.operator", "support.function"], - regex : /(\.)(s(?:h(?:ift|ow(?:Mod(?:elessDialog|alDialog)|Help))|croll(?:X|By(?:Pages|Lines)?|Y|To)?|t(?:op|rike)|i(?:n|zeToContent|debar|gnText)|ort|u(?:p|b(?:str(?:ing)?)?)|pli(?:ce|t)|e(?:nd|t(?:Re(?:sizable|questHeader)|M(?:i(?:nutes|lliseconds)|onth)|Seconds|Ho(?:tKeys|urs)|Year|Cursor|Time(?:out)?|Interval|ZOptions|Date|UTC(?:M(?:i(?:nutes|lliseconds)|onth)|Seconds|Hours|Date|FullYear)|FullYear|Active)|arch)|qrt|lice|avePreferences|mall)|h(?:ome|andleEvent)|navigate|c(?:har(?:CodeAt|At)|o(?:s|n(?:cat|textual|firm)|mpile)|eil|lear(?:Timeout|Interval)?|a(?:ptureEvents|ll)|reate(?:StyleSheet|Popup|EventObject))|t(?:o(?:GMTString|S(?:tring|ource)|U(?:TCString|pperCase)|Lo(?:caleString|werCase))|est|a(?:n|int(?:Enabled)?))|i(?:s(?:NaN|Finite)|ndexOf|talics)|d(?:isableExternalCapture|ump|etachEvent)|u(?:n(?:shift|taint|escape|watch)|pdateCommands)|j(?:oin|avaEnabled)|p(?:o(?:p|w)|ush|lugins.refresh|a(?:ddings|rse(?:Int|Float)?)|r(?:int|ompt|eference))|e(?:scape|nableExternalCapture|val|lementFromPoint|x(?:p|ec(?:Script|Command)?))|valueOf|UTC|queryCommand(?:State|Indeterm|Enabled|Value)|f(?:i(?:nd|le(?:ModifiedDate|Size|CreatedDate|UpdatedDate)|xed)|o(?:nt(?:size|color)|rward)|loor|romCharCode)|watch|l(?:ink|o(?:ad|g)|astIndexOf)|a(?:sin|nchor|cos|t(?:tachEvent|ob|an(?:2)?)|pply|lert|b(?:s|ort))|r(?:ou(?:nd|teEvents)|e(?:size(?:By|To)|calc|turnValue|place|verse|l(?:oad|ease(?:Capture|Events)))|andom)|g(?:o|et(?:ResponseHeader|M(?:i(?:nutes|lliseconds)|onth)|Se(?:conds|lection)|Hours|Year|Time(?:zoneOffset)?|Da(?:y|te)|UTC(?:M(?:i(?:nutes|lliseconds)|onth)|Seconds|Hours|Da(?:y|te)|FullYear)|FullYear|A(?:ttention|llResponseHeaders)))|m(?:in|ove(?:B(?:y|elow)|To(?:Absolute)?|Above)|ergeAttributes|a(?:tch|rgins|x))|b(?:toa|ig|o(?:ld|rderWidths)|link|ack))\b(?=\()/ - }, { - token : ["punctuation.operator", "support.function.dom"], - regex : /(\.)(s(?:ub(?:stringData|mit)|plitText|e(?:t(?:NamedItem|Attribute(?:Node)?)|lect))|has(?:ChildNodes|Feature)|namedItem|c(?:l(?:ick|o(?:se|neNode))|reate(?:C(?:omment|DATASection|aption)|T(?:Head|extNode|Foot)|DocumentFragment|ProcessingInstruction|E(?:ntityReference|lement)|Attribute))|tabIndex|i(?:nsert(?:Row|Before|Cell|Data)|tem)|open|delete(?:Row|C(?:ell|aption)|T(?:Head|Foot)|Data)|focus|write(?:ln)?|a(?:dd|ppend(?:Child|Data))|re(?:set|place(?:Child|Data)|move(?:NamedItem|Child|Attribute(?:Node)?)?)|get(?:NamedItem|Element(?:sBy(?:Name|TagName)|ById)|Attribute(?:Node)?)|blur)\b(?=\()/ - }, { - token : ["punctuation.operator", "support.constant"], - regex : /(\.)(s(?:ystemLanguage|cr(?:ipts|ollbars|een(?:X|Y|Top|Left))|t(?:yle(?:Sheets)?|atus(?:Text|bar)?)|ibling(?:Below|Above)|ource|uffixes|e(?:curity(?:Policy)?|l(?:ection|f)))|h(?:istory|ost(?:name)?|as(?:h|Focus))|y|X(?:MLDocument|SLDocument)|n(?:ext|ame(?:space(?:s|URI)|Prop))|M(?:IN_VALUE|AX_VALUE)|c(?:haracterSet|o(?:n(?:structor|trollers)|okieEnabled|lorDepth|mp(?:onents|lete))|urrent|puClass|l(?:i(?:p(?:boardData)?|entInformation)|osed|asses)|alle(?:e|r)|rypto)|t(?:o(?:olbar|p)|ext(?:Transform|Indent|Decoration|Align)|ags)|SQRT(?:1_2|2)|i(?:n(?:ner(?:Height|Width)|put)|ds|gnoreCase)|zIndex|o(?:scpu|n(?:readystatechange|Line)|uter(?:Height|Width)|p(?:sProfile|ener)|ffscreenBuffering)|NEGATIVE_INFINITY|d(?:i(?:splay|alog(?:Height|Top|Width|Left|Arguments)|rectories)|e(?:scription|fault(?:Status|Ch(?:ecked|arset)|View)))|u(?:ser(?:Profile|Language|Agent)|n(?:iqueID|defined)|pdateInterval)|_content|p(?:ixelDepth|ort|ersonalbar|kcs11|l(?:ugins|atform)|a(?:thname|dding(?:Right|Bottom|Top|Left)|rent(?:Window|Layer)?|ge(?:X(?:Offset)?|Y(?:Offset)?))|r(?:o(?:to(?:col|type)|duct(?:Sub)?|mpter)|e(?:vious|fix)))|e(?:n(?:coding|abledPlugin)|x(?:ternal|pando)|mbeds)|v(?:isibility|endor(?:Sub)?|Linkcolor)|URLUnencoded|P(?:I|OSITIVE_INFINITY)|f(?:ilename|o(?:nt(?:Size|Family|Weight)|rmName)|rame(?:s|Element)|gColor)|E|whiteSpace|l(?:i(?:stStyleType|n(?:eHeight|kColor))|o(?:ca(?:tion(?:bar)?|lName)|wsrc)|e(?:ngth|ft(?:Context)?)|a(?:st(?:M(?:odified|atch)|Index|Paren)|yer(?:s|X)|nguage))|a(?:pp(?:MinorVersion|Name|Co(?:deName|re)|Version)|vail(?:Height|Top|Width|Left)|ll|r(?:ity|guments)|Linkcolor|bove)|r(?:ight(?:Context)?|e(?:sponse(?:XML|Text)|adyState))|global|x|m(?:imeTypes|ultiline|enubar|argin(?:Right|Bottom|Top|Left))|L(?:N(?:10|2)|OG(?:10E|2E))|b(?:o(?:ttom|rder(?:Width|RightWidth|BottomWidth|Style|Color|TopWidth|LeftWidth))|ufferDepth|elow|ackground(?:Color|Image)))\b/ - }, { - token : ["storage.type", "punctuation.operator", "support.function.firebug"], - regex : /(console)(\.)(warn|info|log|error|time|timeEnd|assert)\b/ - }, { - token : keywordMapper, - regex : identifierRe - }, { - token : "keyword.operator", - regex : /--|\+\+|[!$%&*+\-~]|===|==|=|!=|!==|<=|>=|<<=|>>=|>>>=|<>|<|>|!|&&|\|\||\?\:|\*=|%=|\+=|\-=|&=|\^=/, - next : "start" - }, { - token : "punctuation.operator", - regex : /\?|\:|\,|\;|\./, - next : "start" - }, { - token : "paren.lparen", - regex : /[\[({]/, - next : "start" - }, { - token : "paren.rparen", - regex : /[\])}]/ - }, { - token : "keyword.operator", - regex : /\/=?/, - next : "start" - }, { - token: "comment", - regex: /^#!.*$/ - } - ], - "start": [ - DocCommentHighlightRules.getStartRule("doc-start"), - { - token : "comment", // multi line comment - regex : "\\/\\*", - next : "comment_regex_allowed" - }, { - token : "comment", - regex : "\\/\\/", - next : "line_comment_regex_allowed" - }, { - token: "string.regexp", - regex: "\\/", - next: "regex" - }, { - token : "text", - regex : "\\s+|^$", - next : "start" - }, { - token: "empty", - regex: "", - next: "no_regex" - } - ], - "regex": [ - { - token: "regexp.keyword.operator", - regex: "\\\\(?:u[\\da-fA-F]{4}|x[\\da-fA-F]{2}|.)" - }, { - token: "string.regexp", - regex: "/[sxngimy]*", - next: "no_regex" - }, { - token : "invalid", - regex: /\{\d+\b,?\d*\}[+*]|[+*$^?][+*]|[$^][?]|\?{3,}/ - }, { - token : "constant.language.escape", - regex: /\(\?[:=!]|\)|\{\d+\b,?\d*\}|[+*]\?|[()$^+*?.]/ - }, { - token : "constant.language.delimiter", - regex: /\|/ - }, { - token: "constant.language.escape", - regex: /\[\^?/, - next: "regex_character_class" - }, { - token: "empty", - regex: "$", - next: "no_regex" - }, { - defaultToken: "string.regexp" - } - ], - "regex_character_class": [ - { - token: "regexp.keyword.operator", - regex: "\\\\(?:u[\\da-fA-F]{4}|x[\\da-fA-F]{2}|.)" - }, { - token: "constant.language.escape", - regex: "]", - next: "regex" - }, { - token: "constant.language.escape", - regex: "-" - }, { - token: "empty", - regex: "$", - next: "no_regex" - }, { - defaultToken: "string.regexp.charachterclass" - } - ], - "function_arguments": [ - { - token: "variable.parameter", - regex: identifierRe - }, { - token: "punctuation.operator", - regex: "[, ]+" - }, { - token: "punctuation.operator", - regex: "$" - }, { - token: "empty", - regex: "", - next: "no_regex" - } - ], - "comment_regex_allowed" : [ - {token : "comment", regex : "\\*\\/", next : "start"}, - {defaultToken : "comment"} - ], - "comment" : [ - {token : "comment", regex : "\\*\\/", next : "no_regex"}, - {defaultToken : "comment"} - ], - "line_comment_regex_allowed" : [ - {token : "comment", regex : "$|^", next : "start"}, - {defaultToken : "comment"} - ], - "line_comment" : [ - {token : "comment", regex : "$|^", next : "no_regex"}, - {defaultToken : "comment"} - ], - "qqstring" : [ - { - token : "constant.language.escape", - regex : escapedRe - }, { - token : "string", - regex : "\\\\$", - next : "qqstring" - }, { - token : "string", - regex : '"|$', - next : "no_regex" - }, { - defaultToken: "string" - } - ], - "qstring" : [ - { - token : "constant.language.escape", - regex : escapedRe - }, { - token : "string", - regex : "\\\\$", - next : "qstring" - }, { - token : "string", - regex : "'|$", - next : "no_regex" - }, { - defaultToken: "string" - } - ] - }; - - this.embedRules(DocCommentHighlightRules, "doc-", - [ DocCommentHighlightRules.getEndRule("no_regex") ]); -}; - -oop.inherits(JavaScriptHighlightRules, TextHighlightRules); - -exports.JavaScriptHighlightRules = JavaScriptHighlightRules; -}); - -ace.define('ace/mode/doc_comment_highlight_rules', ['require', 'exports', 'module' , 'ace/lib/oop', 'ace/mode/text_highlight_rules'], function(require, exports, module) { - - -var oop = require("../lib/oop"); -var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; - -var DocCommentHighlightRules = function() { - - this.$rules = { - "start" : [ { - token : "comment.doc.tag", - regex : "@[\\w\\d_]+" // TODO: fix email addresses - }, { - token : "comment.doc.tag", - regex : "\\bTODO\\b" - }, { - defaultToken : "comment.doc" - }] - }; -}; - -oop.inherits(DocCommentHighlightRules, TextHighlightRules); - -DocCommentHighlightRules.getStartRule = function(start) { - return { - token : "comment.doc", // doc comment - regex : "\\/\\*(?=\\*)", - next : start - }; -}; - -DocCommentHighlightRules.getEndRule = function (start) { - return { - token : "comment.doc", // closing comment - regex : "\\*\\/", - next : start - }; -}; - - -exports.DocCommentHighlightRules = DocCommentHighlightRules; - -}); - -ace.define('ace/mode/matching_brace_outdent', ['require', 'exports', 'module' , 'ace/range'], function(require, exports, module) { - - -var Range = require("../range").Range; - -var MatchingBraceOutdent = function() {}; - -(function() { - - this.checkOutdent = function(line, input) { - if (! /^\s+$/.test(line)) - return false; - - return /^\s*\}/.test(input); - }; - - this.autoOutdent = function(doc, row) { - var line = doc.getLine(row); - var match = line.match(/^(\s*\})/); - - if (!match) return 0; - - var column = match[1].length; - var openBracePos = doc.findMatchingBracket({row: row, column: column}); - - if (!openBracePos || openBracePos.row == row) return 0; - - var indent = this.$getIndent(doc.getLine(openBracePos.row)); - doc.replace(new Range(row, 0, row, column-1), indent); - }; - - this.$getIndent = function(line) { - return line.match(/^\s*/)[0]; - }; - -}).call(MatchingBraceOutdent.prototype); - -exports.MatchingBraceOutdent = MatchingBraceOutdent; -}); - -ace.define('ace/mode/folding/cstyle', ['require', 'exports', 'module' , 'ace/lib/oop', 'ace/range', 'ace/mode/folding/fold_mode'], function(require, exports, module) { - - -var oop = require("../../lib/oop"); -var Range = require("../../range").Range; -var BaseFoldMode = require("./fold_mode").FoldMode; - -var FoldMode = exports.FoldMode = function(commentRegex) { - if (commentRegex) { - this.foldingStartMarker = new RegExp( - this.foldingStartMarker.source.replace(/\|[^|]*?$/, "|" + commentRegex.start) - ); - this.foldingStopMarker = new RegExp( - this.foldingStopMarker.source.replace(/\|[^|]*?$/, "|" + commentRegex.end) - ); - } -}; -oop.inherits(FoldMode, BaseFoldMode); - -(function() { - - this.foldingStartMarker = /(\{|\[)[^\}\]]*$|^\s*(\/\*)/; - this.foldingStopMarker = /^[^\[\{]*(\}|\])|^[\s\*]*(\*\/)/; - - this.getFoldWidgetRange = function(session, foldStyle, row, forceMultiline) { - var line = session.getLine(row); - var match = line.match(this.foldingStartMarker); - if (match) { - var i = match.index; - - if (match[1]) - return this.openingBracketBlock(session, match[1], row, i); - - var range = session.getCommentFoldRange(row, i + match[0].length, 1); - - if (range && !range.isMultiLine()) { - if (forceMultiline) { - range = this.getSectionRange(session, row); - } else if (foldStyle != "all") - range = null; - } - - return range; - } - - if (foldStyle === "markbegin") - return; - - var match = line.match(this.foldingStopMarker); - if (match) { - var i = match.index + match[0].length; - - if (match[1]) - return this.closingBracketBlock(session, match[1], row, i); - - return session.getCommentFoldRange(row, i, -1); - } - }; - - this.getSectionRange = function(session, row) { - var line = session.getLine(row); - var startIndent = line.search(/\S/); - var startRow = row; - var startColumn = line.length; - row = row + 1; - var endRow = row; - var maxRow = session.getLength(); - while (++row < maxRow) { - line = session.getLine(row); - var indent = line.search(/\S/); - if (indent === -1) - continue; - if (startIndent > indent) - break; - var subRange = this.getFoldWidgetRange(session, "all", row); - - if (subRange) { - if (subRange.start.row <= startRow) { - break; - } else if (subRange.isMultiLine()) { - row = subRange.end.row; - } else if (startIndent == indent) { - break; - } - } - endRow = row; - } - - return new Range(startRow, startColumn, endRow, session.getLine(endRow).length); - }; - -}).call(FoldMode.prototype); - -}); - -ace.define('ace/mode/css', ['require', 'exports', 'module' , 'ace/lib/oop', 'ace/mode/text', 'ace/tokenizer', 'ace/mode/css_highlight_rules', 'ace/mode/matching_brace_outdent', 'ace/worker/worker_client', 'ace/mode/behaviour/css', 'ace/mode/folding/cstyle'], function(require, exports, module) { - - -var oop = require("../lib/oop"); -var TextMode = require("./text").Mode; -var Tokenizer = require("../tokenizer").Tokenizer; -var CssHighlightRules = require("./css_highlight_rules").CssHighlightRules; -var MatchingBraceOutdent = require("./matching_brace_outdent").MatchingBraceOutdent; -var WorkerClient = require("../worker/worker_client").WorkerClient; -var CssBehaviour = require("./behaviour/css").CssBehaviour; -var CStyleFoldMode = require("./folding/cstyle").FoldMode; - -var Mode = function() { - this.HighlightRules = CssHighlightRules; - this.$outdent = new MatchingBraceOutdent(); - this.$behaviour = new CssBehaviour(); - this.foldingRules = new CStyleFoldMode(); -}; -oop.inherits(Mode, TextMode); - -(function() { - - this.foldingRules = "cStyle"; - this.blockComment = {start: "/*", end: "*/"}; - - this.getNextLineIndent = function(state, line, tab) { - var indent = this.$getIndent(line); - var tokens = this.getTokenizer().getLineTokens(line, state).tokens; - if (tokens.length && tokens[tokens.length-1].type == "comment") { - return indent; - } - - var match = line.match(/^.*\{\s*$/); - if (match) { - indent += tab; - } - - return indent; - }; - - this.checkOutdent = function(state, line, input) { - return this.$outdent.checkOutdent(line, input); - }; - - this.autoOutdent = function(state, doc, row) { - this.$outdent.autoOutdent(doc, row); - }; - - this.createWorker = function(session) { - var worker = new WorkerClient(["ace"], "ace/mode/css_worker", "Worker"); - worker.attachToDocument(session.getDocument()); - - worker.on("csslint", function(e) { - session.setAnnotations(e.data); - }); - - worker.on("terminate", function() { - session.clearAnnotations(); - }); - - return worker; - }; - - this.$id = "ace/mode/css"; -}).call(Mode.prototype); - -exports.Mode = Mode; - -}); - -ace.define('ace/mode/css_highlight_rules', ['require', 'exports', 'module' , 'ace/lib/oop', 'ace/lib/lang', 'ace/mode/text_highlight_rules'], function(require, exports, module) { - - -var oop = require("../lib/oop"); -var lang = require("../lib/lang"); -var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; -var supportType = exports.supportType = "animation-fill-mode|alignment-adjust|alignment-baseline|animation-delay|animation-direction|animation-duration|animation-iteration-count|animation-name|animation-play-state|animation-timing-function|animation|appearance|azimuth|backface-visibility|background-attachment|background-break|background-clip|background-color|background-image|background-origin|background-position|background-repeat|background-size|background|baseline-shift|binding|bleed|bookmark-label|bookmark-level|bookmark-state|bookmark-target|border-bottom|border-bottom-color|border-bottom-left-radius|border-bottom-right-radius|border-bottom-style|border-bottom-width|border-collapse|border-color|border-image|border-image-outset|border-image-repeat|border-image-slice|border-image-source|border-image-width|border-left|border-left-color|border-left-style|border-left-width|border-radius|border-right|border-right-color|border-right-style|border-right-width|border-spacing|border-style|border-top|border-top-color|border-top-left-radius|border-top-right-radius|border-top-style|border-top-width|border-width|border|bottom|box-align|box-decoration-break|box-direction|box-flex-group|box-flex|box-lines|box-ordinal-group|box-orient|box-pack|box-shadow|box-sizing|break-after|break-before|break-inside|caption-side|clear|clip|color-profile|color|column-count|column-fill|column-gap|column-rule|column-rule-color|column-rule-style|column-rule-width|column-span|column-width|columns|content|counter-increment|counter-reset|crop|cue-after|cue-before|cue|cursor|direction|display|dominant-baseline|drop-initial-after-adjust|drop-initial-after-align|drop-initial-before-adjust|drop-initial-before-align|drop-initial-size|drop-initial-value|elevation|empty-cells|fit|fit-position|float-offset|float|font-family|font-size|font-size-adjust|font-stretch|font-style|font-variant|font-weight|font|grid-columns|grid-rows|hanging-punctuation|height|hyphenate-after|hyphenate-before|hyphenate-character|hyphenate-lines|hyphenate-resource|hyphens|icon|image-orientation|image-rendering|image-resolution|inline-box-align|left|letter-spacing|line-height|line-stacking-ruby|line-stacking-shift|line-stacking-strategy|line-stacking|list-style-image|list-style-position|list-style-type|list-style|margin-bottom|margin-left|margin-right|margin-top|margin|mark-after|mark-before|mark|marks|marquee-direction|marquee-play-count|marquee-speed|marquee-style|max-height|max-width|min-height|min-width|move-to|nav-down|nav-index|nav-left|nav-right|nav-up|opacity|orphans|outline-color|outline-offset|outline-style|outline-width|outline|overflow-style|overflow-x|overflow-y|overflow|padding-bottom|padding-left|padding-right|padding-top|padding|page-break-after|page-break-before|page-break-inside|page-policy|page|pause-after|pause-before|pause|perspective-origin|perspective|phonemes|pitch-range|pitch|play-during|pointer-events|position|presentation-level|punctuation-trim|quotes|rendering-intent|resize|rest-after|rest-before|rest|richness|right|rotation-point|rotation|ruby-align|ruby-overhang|ruby-position|ruby-span|size|speak-header|speak-numeral|speak-punctuation|speak|speech-rate|stress|string-set|table-layout|target-name|target-new|target-position|target|text-align-last|text-align|text-decoration|text-emphasis|text-height|text-indent|text-justify|text-outline|text-shadow|text-transform|text-wrap|top|transform-origin|transform-style|transform|transition-delay|transition-duration|transition-property|transition-timing-function|transition|unicode-bidi|vertical-align|visibility|voice-balance|voice-duration|voice-family|voice-pitch-range|voice-pitch|voice-rate|voice-stress|voice-volume|volume|white-space-collapse|white-space|widows|width|word-break|word-spacing|word-wrap|z-index"; -var supportFunction = exports.supportFunction = "rgb|rgba|url|attr|counter|counters"; -var supportConstant = exports.supportConstant = "absolute|after-edge|after|all-scroll|all|alphabetic|always|antialiased|armenian|auto|avoid-column|avoid-page|avoid|balance|baseline|before-edge|before|below|bidi-override|block-line-height|block|bold|bolder|border-box|both|bottom|box|break-all|break-word|capitalize|caps-height|caption|center|central|char|circle|cjk-ideographic|clone|close-quote|col-resize|collapse|column|consider-shifts|contain|content-box|cover|crosshair|cubic-bezier|dashed|decimal-leading-zero|decimal|default|disabled|disc|disregard-shifts|distribute-all-lines|distribute-letter|distribute-space|distribute|dotted|double|e-resize|ease-in|ease-in-out|ease-out|ease|ellipsis|end|exclude-ruby|fill|fixed|georgian|glyphs|grid-height|groove|hand|hanging|hebrew|help|hidden|hiragana-iroha|hiragana|horizontal|icon|ideograph-alpha|ideograph-numeric|ideograph-parenthesis|ideograph-space|ideographic|inactive|include-ruby|inherit|initial|inline-block|inline-box|inline-line-height|inline-table|inline|inset|inside|inter-ideograph|inter-word|invert|italic|justify|katakana-iroha|katakana|keep-all|last|left|lighter|line-edge|line-through|line|linear|list-item|local|loose|lower-alpha|lower-greek|lower-latin|lower-roman|lowercase|lr-tb|ltr|mathematical|max-height|max-size|medium|menu|message-box|middle|move|n-resize|ne-resize|newspaper|no-change|no-close-quote|no-drop|no-open-quote|no-repeat|none|normal|not-allowed|nowrap|nw-resize|oblique|open-quote|outset|outside|overline|padding-box|page|pointer|pre-line|pre-wrap|pre|preserve-3d|progress|relative|repeat-x|repeat-y|repeat|replaced|reset-size|ridge|right|round|row-resize|rtl|s-resize|scroll|se-resize|separate|slice|small-caps|small-caption|solid|space|square|start|static|status-bar|step-end|step-start|steps|stretch|strict|sub|super|sw-resize|table-caption|table-cell|table-column-group|table-column|table-footer-group|table-header-group|table-row-group|table-row|table|tb-rl|text-after-edge|text-before-edge|text-bottom|text-size|text-top|text|thick|thin|transparent|underline|upper-alpha|upper-latin|upper-roman|uppercase|use-script|vertical-ideographic|vertical-text|visible|w-resize|wait|whitespace|z-index|zero"; -var supportConstantColor = exports.supportConstantColor = "aqua|black|blue|fuchsia|gray|green|lime|maroon|navy|olive|orange|purple|red|silver|teal|white|yellow"; -var supportConstantFonts = exports.supportConstantFonts = "arial|century|comic|courier|garamond|georgia|helvetica|impact|lucida|symbol|system|tahoma|times|trebuchet|utopia|verdana|webdings|sans-serif|serif|monospace"; - -var numRe = exports.numRe = "\\-?(?:(?:[0-9]+)|(?:[0-9]*\\.[0-9]+))"; -var pseudoElements = exports.pseudoElements = "(\\:+)\\b(after|before|first-letter|first-line|moz-selection|selection)\\b"; -var pseudoClasses = exports.pseudoClasses = "(:)\\b(active|checked|disabled|empty|enabled|first-child|first-of-type|focus|hover|indeterminate|invalid|last-child|last-of-type|link|not|nth-child|nth-last-child|nth-last-of-type|nth-of-type|only-child|only-of-type|required|root|target|valid|visited)\\b"; - -var CssHighlightRules = function() { - - var keywordMapper = this.createKeywordMapper({ - "support.function": supportFunction, - "support.constant": supportConstant, - "support.type": supportType, - "support.constant.color": supportConstantColor, - "support.constant.fonts": supportConstantFonts - }, "text", true); - - this.$rules = { - "start" : [{ - token : "comment", // multi line comment - regex : "\\/\\*", - push : "comment" - }, { - token: "paren.lparen", - regex: "\\{", - push: "ruleset" - }, { - token: "string", - regex: "@.*?{", - push: "media" - }, { - token: "keyword", - regex: "#[a-z0-9-_]+" - }, { - token: "variable", - regex: "\\.[a-z0-9-_]+" - }, { - token: "string", - regex: ":[a-z0-9-_]+" - }, { - token: "constant", - regex: "[a-z0-9-_]+" - }, { - caseInsensitive: true - }], - - "media" : [{ - token : "comment", // multi line comment - regex : "\\/\\*", - push : "comment" - }, { - token: "paren.lparen", - regex: "\\{", - push: "ruleset" - }, { - token: "string", - regex: "\\}", - next: "pop" - }, { - token: "keyword", - regex: "#[a-z0-9-_]+" - }, { - token: "variable", - regex: "\\.[a-z0-9-_]+" - }, { - token: "string", - regex: ":[a-z0-9-_]+" - }, { - token: "constant", - regex: "[a-z0-9-_]+" - }, { - caseInsensitive: true - }], - - "comment" : [{ - token : "comment", - regex : "\\*\\/", - next : "pop" - }, { - defaultToken : "comment" - }], - - "ruleset" : [ - { - token : "paren.rparen", - regex : "\\}", - next: "pop" - }, { - token : "comment", // multi line comment - regex : "\\/\\*", - push : "comment" - }, { - token : "string", // single line - regex : '["](?:(?:\\\\.)|(?:[^"\\\\]))*?["]' - }, { - token : "string", // single line - regex : "['](?:(?:\\\\.)|(?:[^'\\\\]))*?[']" - }, { - token : ["constant.numeric", "keyword"], - regex : "(" + numRe + ")(ch|cm|deg|em|ex|fr|gd|grad|Hz|in|kHz|mm|ms|pc|pt|px|rad|rem|s|turn|vh|vm|vw|%)" - }, { - token : "constant.numeric", - regex : numRe - }, { - token : "constant.numeric", // hex6 color - regex : "#[a-f0-9]{6}" - }, { - token : "constant.numeric", // hex3 color - regex : "#[a-f0-9]{3}" - }, { - token : ["punctuation", "entity.other.attribute-name.pseudo-element.css"], - regex : pseudoElements - }, { - token : ["punctuation", "entity.other.attribute-name.pseudo-class.css"], - regex : pseudoClasses - }, { - token : ["support.function", "string", "support.function"], - regex : "(url\\()(.*)(\\))" - }, { - token : keywordMapper, - regex : "\\-?[a-zA-Z_][a-zA-Z0-9_\\-]*" - }, { - caseInsensitive: true - }] - }; - - this.normalizeRules(); -}; - -oop.inherits(CssHighlightRules, TextHighlightRules); - -exports.CssHighlightRules = CssHighlightRules; - -}); - -ace.define('ace/mode/behaviour/css', ['require', 'exports', 'module' , 'ace/lib/oop', 'ace/mode/behaviour', 'ace/mode/behaviour/cstyle', 'ace/token_iterator'], function(require, exports, module) { - - -var oop = require("../../lib/oop"); -var Behaviour = require("../behaviour").Behaviour; -var CstyleBehaviour = require("./cstyle").CstyleBehaviour; -var TokenIterator = require("../../token_iterator").TokenIterator; - -var CssBehaviour = function () { - - this.inherit(CstyleBehaviour); - - this.add("colon", "insertion", function (state, action, editor, session, text) { - if (text === ':') { - var cursor = editor.getCursorPosition(); - var iterator = new TokenIterator(session, cursor.row, cursor.column); - var token = iterator.getCurrentToken(); - if (token && token.value.match(/\s+/)) { - token = iterator.stepBackward(); - } - if (token && token.type === 'support.type') { - var line = session.doc.getLine(cursor.row); - var rightChar = line.substring(cursor.column, cursor.column + 1); - if (rightChar === ':') { - return { - text: '', - selection: [1, 1] - } - } - if (!line.substring(cursor.column).match(/^\s*;/)) { - return { - text: ':;', - selection: [1, 1] - } - } - } - } - }); - - this.add("colon", "deletion", function (state, action, editor, session, range) { - var selected = session.doc.getTextRange(range); - if (!range.isMultiLine() && selected === ':') { - var cursor = editor.getCursorPosition(); - var iterator = new TokenIterator(session, cursor.row, cursor.column); - var token = iterator.getCurrentToken(); - if (token && token.value.match(/\s+/)) { - token = iterator.stepBackward(); - } - if (token && token.type === 'support.type') { - var line = session.doc.getLine(range.start.row); - var rightChar = line.substring(range.end.column, range.end.column + 1); - if (rightChar === ';') { - range.end.column ++; - return range; - } - } - } - }); - - this.add("semicolon", "insertion", function (state, action, editor, session, text) { - if (text === ';') { - var cursor = editor.getCursorPosition(); - var line = session.doc.getLine(cursor.row); - var rightChar = line.substring(cursor.column, cursor.column + 1); - if (rightChar === ';') { - return { - text: '', - selection: [1, 1] - } - } - } - }); - -} -oop.inherits(CssBehaviour, CstyleBehaviour); - -exports.CssBehaviour = CssBehaviour; -}); - -ace.define('ace/mode/coldfusion_highlight_rules', ['require', 'exports', 'module' , 'ace/lib/oop', 'ace/mode/javascript_highlight_rules', 'ace/mode/html_highlight_rules'], function(require, exports, module) { - - -var oop = require("../lib/oop"); -var JavaScriptHighlightRules = require("./javascript_highlight_rules").JavaScriptHighlightRules; -var HtmlHighlightRules = require("./html_highlight_rules").HtmlHighlightRules; - -var ColdfusionHighlightRules = function() { - HtmlHighlightRules.call(this); - - this.embedTagRules(JavaScriptHighlightRules, "cfjs-", "cfscript"); - - this.normalizeRules(); -}; - -oop.inherits(ColdfusionHighlightRules, HtmlHighlightRules); - -exports.ColdfusionHighlightRules = ColdfusionHighlightRules; -}); - -ace.define('ace/mode/html_highlight_rules', ['require', 'exports', 'module' , 'ace/lib/oop', 'ace/lib/lang', 'ace/mode/css_highlight_rules', 'ace/mode/javascript_highlight_rules', 'ace/mode/xml_highlight_rules'], function(require, exports, module) { - - -var oop = require("../lib/oop"); -var lang = require("../lib/lang"); -var CssHighlightRules = require("./css_highlight_rules").CssHighlightRules; -var JavaScriptHighlightRules = require("./javascript_highlight_rules").JavaScriptHighlightRules; -var XmlHighlightRules = require("./xml_highlight_rules").XmlHighlightRules; - -var tagMap = lang.createMap({ - a : 'anchor', - button : 'form', - form : 'form', - img : 'image', - input : 'form', - label : 'form', - option : 'form', - script : 'script', - select : 'form', - textarea : 'form', - style : 'style', - table : 'table', - tbody : 'table', - td : 'table', - tfoot : 'table', - th : 'table', - tr : 'table' -}); - -var HtmlHighlightRules = function() { - XmlHighlightRules.call(this); - - this.addRules({ - attributes: [{ - include : "space" - }, { - token : "entity.other.attribute-name", - regex : "[-_a-zA-Z0-9:]+" - }, { - token : "keyword.operator.separator", - regex : "=", - push : [{ - include: "space" - }, { - token : "string", - regex : "[^<>='\"`\\s]+", - next : "pop" - }, { - token : "empty", - regex : "", - next : "pop" - }] - }, { - include : "string" - }], - tag: [{ - token : function(start, tag) { - var group = tagMap[tag]; - return ["meta.tag.punctuation.begin", - "meta.tag.name" + (group ? "." + group : "")]; - }, - regex : "(<)([-_a-zA-Z0-9:]+)", - next: "start_tag_stuff" - }, { - token : function(start, tag) { - var group = tagMap[tag]; - return ["meta.tag.punctuation.begin", - "meta.tag.name" + (group ? "." + group : "")]; - }, - regex : "(", next : "start"} - ], - end_tag_stuff: [ - {include : "space"}, - {token : "meta.tag.punctuation.end", regex : ">", next : "start"} - ] - }); - - this.embedTagRules(CssHighlightRules, "css-", "style"); - this.embedTagRules(JavaScriptHighlightRules, "js-", "script"); - - if (this.constructor === HtmlHighlightRules) - this.normalizeRules(); -}; - -oop.inherits(HtmlHighlightRules, XmlHighlightRules); - -exports.HtmlHighlightRules = HtmlHighlightRules; -}); diff --git a/IDE/jsrealb-ide/ace-src-noconflict/mode-csharp.js b/IDE/jsrealb-ide/ace-src-noconflict/mode-csharp.js deleted file mode 100644 index db34c353..00000000 --- a/IDE/jsrealb-ide/ace-src-noconflict/mode-csharp.js +++ /dev/null @@ -1,771 +0,0 @@ -ace.define('ace/mode/csharp', ['require', 'exports', 'module' , 'ace/lib/oop', 'ace/mode/text', 'ace/tokenizer', 'ace/mode/csharp_highlight_rules', 'ace/mode/matching_brace_outdent', 'ace/mode/behaviour/cstyle', 'ace/mode/folding/csharp'], function(require, exports, module) { - - -var oop = require("../lib/oop"); -var TextMode = require("./text").Mode; -var Tokenizer = require("../tokenizer").Tokenizer; -var CSharpHighlightRules = require("./csharp_highlight_rules").CSharpHighlightRules; -var MatchingBraceOutdent = require("./matching_brace_outdent").MatchingBraceOutdent; -var CstyleBehaviour = require("./behaviour/cstyle").CstyleBehaviour; -var CStyleFoldMode = require("./folding/csharp").FoldMode; - -var Mode = function() { - this.HighlightRules = CSharpHighlightRules; - this.$outdent = new MatchingBraceOutdent(); - this.$behaviour = new CstyleBehaviour(); - this.foldingRules = new CStyleFoldMode(); -}; -oop.inherits(Mode, TextMode); - -(function() { - - this.lineCommentStart = "//"; - this.blockComment = {start: "/*", end: "*/"}; - - this.getNextLineIndent = function(state, line, tab) { - var indent = this.$getIndent(line); - - var tokenizedLine = this.getTokenizer().getLineTokens(line, state); - var tokens = tokenizedLine.tokens; - - if (tokens.length && tokens[tokens.length-1].type == "comment") { - return indent; - } - - if (state == "start") { - var match = line.match(/^.*[\{\(\[]\s*$/); - if (match) { - indent += tab; - } - } - - return indent; - }; - - this.checkOutdent = function(state, line, input) { - return this.$outdent.checkOutdent(line, input); - }; - - this.autoOutdent = function(state, doc, row) { - this.$outdent.autoOutdent(doc, row); - }; - - - this.createWorker = function(session) { - return null; - }; - - this.$id = "ace/mode/csharp"; -}).call(Mode.prototype); - -exports.Mode = Mode; -}); -ace.define('ace/mode/csharp_highlight_rules', ['require', 'exports', 'module' , 'ace/lib/oop', 'ace/mode/doc_comment_highlight_rules', 'ace/mode/text_highlight_rules'], function(require, exports, module) { - - -var oop = require("../lib/oop"); -var DocCommentHighlightRules = require("./doc_comment_highlight_rules").DocCommentHighlightRules; -var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; - -var CSharpHighlightRules = function() { - var keywordMapper = this.createKeywordMapper({ - "variable.language": "this", - "keyword": "abstract|event|new|struct|as|explicit|null|switch|base|extern|object|this|bool|false|operator|throw|break|finally|out|true|byte|fixed|override|try|case|float|params|typeof|catch|for|private|uint|char|foreach|protected|ulong|checked|goto|public|unchecked|class|if|readonly|unsafe|const|implicit|ref|ushort|continue|in|return|using|decimal|int|sbyte|virtual|default|interface|sealed|volatile|delegate|internal|short|void|do|is|sizeof|while|double|lock|stackalloc|else|long|static|enum|namespace|string|var|dynamic", - "constant.language": "null|true|false" - }, "identifier"); - - this.$rules = { - "start" : [ - { - token : "comment", - regex : "\\/\\/.*$" - }, - DocCommentHighlightRules.getStartRule("doc-start"), - { - token : "comment", // multi line comment - regex : "\\/\\*", - next : "comment" - }, { - token : "string.regexp", - regex : "[/](?:(?:\\[(?:\\\\]|[^\\]])+\\])|(?:\\\\/|[^\\]/]))*[/]\\w*\\s*(?=[).,;]|$)" - }, { - token : "string", // character - regex : /'(?:.|\\(:?u[\da-fA-F]+|x[\da-fA-F]+|[tbrf'"n]))'/ - }, { - token : "string", start : '"', end : '"|$', next: [ - {token: "constant.language.escape", regex: /\\(:?u[\da-fA-F]+|x[\da-fA-F]+|[tbrf'"n])/}, - {token: "invalid", regex: /\\./} - ] - }, { - token : "string", start : '@"', end : '"', next:[ - {token: "constant.language.escape", regex: '""'} - ] - }, { - token : "constant.numeric", // hex - regex : "0[xX][0-9a-fA-F]+\\b" - }, { - token : "constant.numeric", // float - regex : "[+-]?\\d+(?:(?:\\.\\d*)?(?:[eE][+-]?\\d+)?)?\\b" - }, { - token : "constant.language.boolean", - regex : "(?:true|false)\\b" - }, { - token : keywordMapper, - regex : "[a-zA-Z_$][a-zA-Z0-9_$]*\\b" - }, { - token : "keyword.operator", - regex : "!|\\$|%|&|\\*|\\-\\-|\\-|\\+\\+|\\+|~|===|==|=|!=|!==|<=|>=|<<=|>>=|>>>=|<>|<|>|!|&&|\\|\\||\\?\\:|\\*=|%=|\\+=|\\-=|&=|\\^=|\\b(?:in|instanceof|new|delete|typeof|void)" - }, { - token : "keyword", - regex : "^\\s*#(if|else|elif|endif|define|undef|warning|error|line|region|endregion|pragma)" - }, { - token : "punctuation.operator", - regex : "\\?|\\:|\\,|\\;|\\." - }, { - token : "paren.lparen", - regex : "[[({]" - }, { - token : "paren.rparen", - regex : "[\\])}]" - }, { - token : "text", - regex : "\\s+" - } - ], - "comment" : [ - { - token : "comment", // closing comment - regex : ".*?\\*\\/", - next : "start" - }, { - token : "comment", // comment spanning whole line - regex : ".+" - } - ] - }; - - this.embedRules(DocCommentHighlightRules, "doc-", - [ DocCommentHighlightRules.getEndRule("start") ]); - this.normalizeRules(); -}; - -oop.inherits(CSharpHighlightRules, TextHighlightRules); - -exports.CSharpHighlightRules = CSharpHighlightRules; -}); - -ace.define('ace/mode/doc_comment_highlight_rules', ['require', 'exports', 'module' , 'ace/lib/oop', 'ace/mode/text_highlight_rules'], function(require, exports, module) { - - -var oop = require("../lib/oop"); -var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; - -var DocCommentHighlightRules = function() { - - this.$rules = { - "start" : [ { - token : "comment.doc.tag", - regex : "@[\\w\\d_]+" // TODO: fix email addresses - }, { - token : "comment.doc.tag", - regex : "\\bTODO\\b" - }, { - defaultToken : "comment.doc" - }] - }; -}; - -oop.inherits(DocCommentHighlightRules, TextHighlightRules); - -DocCommentHighlightRules.getStartRule = function(start) { - return { - token : "comment.doc", // doc comment - regex : "\\/\\*(?=\\*)", - next : start - }; -}; - -DocCommentHighlightRules.getEndRule = function (start) { - return { - token : "comment.doc", // closing comment - regex : "\\*\\/", - next : start - }; -}; - - -exports.DocCommentHighlightRules = DocCommentHighlightRules; - -}); - -ace.define('ace/mode/matching_brace_outdent', ['require', 'exports', 'module' , 'ace/range'], function(require, exports, module) { - - -var Range = require("../range").Range; - -var MatchingBraceOutdent = function() {}; - -(function() { - - this.checkOutdent = function(line, input) { - if (! /^\s+$/.test(line)) - return false; - - return /^\s*\}/.test(input); - }; - - this.autoOutdent = function(doc, row) { - var line = doc.getLine(row); - var match = line.match(/^(\s*\})/); - - if (!match) return 0; - - var column = match[1].length; - var openBracePos = doc.findMatchingBracket({row: row, column: column}); - - if (!openBracePos || openBracePos.row == row) return 0; - - var indent = this.$getIndent(doc.getLine(openBracePos.row)); - doc.replace(new Range(row, 0, row, column-1), indent); - }; - - this.$getIndent = function(line) { - return line.match(/^\s*/)[0]; - }; - -}).call(MatchingBraceOutdent.prototype); - -exports.MatchingBraceOutdent = MatchingBraceOutdent; -}); - -ace.define('ace/mode/behaviour/cstyle', ['require', 'exports', 'module' , 'ace/lib/oop', 'ace/mode/behaviour', 'ace/token_iterator', 'ace/lib/lang'], function(require, exports, module) { - - -var oop = require("../../lib/oop"); -var Behaviour = require("../behaviour").Behaviour; -var TokenIterator = require("../../token_iterator").TokenIterator; -var lang = require("../../lib/lang"); - -var SAFE_INSERT_IN_TOKENS = - ["text", "paren.rparen", "punctuation.operator"]; -var SAFE_INSERT_BEFORE_TOKENS = - ["text", "paren.rparen", "punctuation.operator", "comment"]; - - -var autoInsertedBrackets = 0; -var autoInsertedRow = -1; -var autoInsertedLineEnd = ""; -var maybeInsertedBrackets = 0; -var maybeInsertedRow = -1; -var maybeInsertedLineStart = ""; -var maybeInsertedLineEnd = ""; - -var CstyleBehaviour = function () { - - CstyleBehaviour.isSaneInsertion = function(editor, session) { - var cursor = editor.getCursorPosition(); - var iterator = new TokenIterator(session, cursor.row, cursor.column); - if (!this.$matchTokenType(iterator.getCurrentToken() || "text", SAFE_INSERT_IN_TOKENS)) { - var iterator2 = new TokenIterator(session, cursor.row, cursor.column + 1); - if (!this.$matchTokenType(iterator2.getCurrentToken() || "text", SAFE_INSERT_IN_TOKENS)) - return false; - } - iterator.stepForward(); - return iterator.getCurrentTokenRow() !== cursor.row || - this.$matchTokenType(iterator.getCurrentToken() || "text", SAFE_INSERT_BEFORE_TOKENS); - }; - - CstyleBehaviour.$matchTokenType = function(token, types) { - return types.indexOf(token.type || token) > -1; - }; - - CstyleBehaviour.recordAutoInsert = function(editor, session, bracket) { - var cursor = editor.getCursorPosition(); - var line = session.doc.getLine(cursor.row); - if (!this.isAutoInsertedClosing(cursor, line, autoInsertedLineEnd[0])) - autoInsertedBrackets = 0; - autoInsertedRow = cursor.row; - autoInsertedLineEnd = bracket + line.substr(cursor.column); - autoInsertedBrackets++; - }; - - CstyleBehaviour.recordMaybeInsert = function(editor, session, bracket) { - var cursor = editor.getCursorPosition(); - var line = session.doc.getLine(cursor.row); - if (!this.isMaybeInsertedClosing(cursor, line)) - maybeInsertedBrackets = 0; - maybeInsertedRow = cursor.row; - maybeInsertedLineStart = line.substr(0, cursor.column) + bracket; - maybeInsertedLineEnd = line.substr(cursor.column); - maybeInsertedBrackets++; - }; - - CstyleBehaviour.isAutoInsertedClosing = function(cursor, line, bracket) { - return autoInsertedBrackets > 0 && - cursor.row === autoInsertedRow && - bracket === autoInsertedLineEnd[0] && - line.substr(cursor.column) === autoInsertedLineEnd; - }; - - CstyleBehaviour.isMaybeInsertedClosing = function(cursor, line) { - return maybeInsertedBrackets > 0 && - cursor.row === maybeInsertedRow && - line.substr(cursor.column) === maybeInsertedLineEnd && - line.substr(0, cursor.column) == maybeInsertedLineStart; - }; - - CstyleBehaviour.popAutoInsertedClosing = function() { - autoInsertedLineEnd = autoInsertedLineEnd.substr(1); - autoInsertedBrackets--; - }; - - CstyleBehaviour.clearMaybeInsertedClosing = function() { - maybeInsertedBrackets = 0; - maybeInsertedRow = -1; - }; - - this.add("braces", "insertion", function (state, action, editor, session, text) { - var cursor = editor.getCursorPosition(); - var line = session.doc.getLine(cursor.row); - if (text == '{') { - var selection = editor.getSelectionRange(); - var selected = session.doc.getTextRange(selection); - if (selected !== "" && selected !== "{" && editor.getWrapBehavioursEnabled()) { - return { - text: '{' + selected + '}', - selection: false - }; - } else if (CstyleBehaviour.isSaneInsertion(editor, session)) { - if (/[\]\}\)]/.test(line[cursor.column]) || editor.inMultiSelectMode) { - CstyleBehaviour.recordAutoInsert(editor, session, "}"); - return { - text: '{}', - selection: [1, 1] - }; - } else { - CstyleBehaviour.recordMaybeInsert(editor, session, "{"); - return { - text: '{', - selection: [1, 1] - }; - } - } - } else if (text == '}') { - var rightChar = line.substring(cursor.column, cursor.column + 1); - if (rightChar == '}') { - var matching = session.$findOpeningBracket('}', {column: cursor.column + 1, row: cursor.row}); - if (matching !== null && CstyleBehaviour.isAutoInsertedClosing(cursor, line, text)) { - CstyleBehaviour.popAutoInsertedClosing(); - return { - text: '', - selection: [1, 1] - }; - } - } - } else if (text == "\n" || text == "\r\n") { - var closing = ""; - if (CstyleBehaviour.isMaybeInsertedClosing(cursor, line)) { - closing = lang.stringRepeat("}", maybeInsertedBrackets); - CstyleBehaviour.clearMaybeInsertedClosing(); - } - var rightChar = line.substring(cursor.column, cursor.column + 1); - if (rightChar === '}') { - var openBracePos = session.findMatchingBracket({row: cursor.row, column: cursor.column+1}, '}'); - if (!openBracePos) - return null; - var next_indent = this.$getIndent(session.getLine(openBracePos.row)); - } else if (closing) { - var next_indent = this.$getIndent(line); - } else { - return; - } - var indent = next_indent + session.getTabString(); - - return { - text: '\n' + indent + '\n' + next_indent + closing, - selection: [1, indent.length, 1, indent.length] - }; - } else { - CstyleBehaviour.clearMaybeInsertedClosing(); - } - }); - - this.add("braces", "deletion", function (state, action, editor, session, range) { - var selected = session.doc.getTextRange(range); - if (!range.isMultiLine() && selected == '{') { - var line = session.doc.getLine(range.start.row); - var rightChar = line.substring(range.end.column, range.end.column + 1); - if (rightChar == '}') { - range.end.column++; - return range; - } else { - maybeInsertedBrackets--; - } - } - }); - - this.add("parens", "insertion", function (state, action, editor, session, text) { - if (text == '(') { - var selection = editor.getSelectionRange(); - var selected = session.doc.getTextRange(selection); - if (selected !== "" && editor.getWrapBehavioursEnabled()) { - return { - text: '(' + selected + ')', - selection: false - }; - } else if (CstyleBehaviour.isSaneInsertion(editor, session)) { - CstyleBehaviour.recordAutoInsert(editor, session, ")"); - return { - text: '()', - selection: [1, 1] - }; - } - } else if (text == ')') { - var cursor = editor.getCursorPosition(); - var line = session.doc.getLine(cursor.row); - var rightChar = line.substring(cursor.column, cursor.column + 1); - if (rightChar == ')') { - var matching = session.$findOpeningBracket(')', {column: cursor.column + 1, row: cursor.row}); - if (matching !== null && CstyleBehaviour.isAutoInsertedClosing(cursor, line, text)) { - CstyleBehaviour.popAutoInsertedClosing(); - return { - text: '', - selection: [1, 1] - }; - } - } - } - }); - - this.add("parens", "deletion", function (state, action, editor, session, range) { - var selected = session.doc.getTextRange(range); - if (!range.isMultiLine() && selected == '(') { - var line = session.doc.getLine(range.start.row); - var rightChar = line.substring(range.start.column + 1, range.start.column + 2); - if (rightChar == ')') { - range.end.column++; - return range; - } - } - }); - - this.add("brackets", "insertion", function (state, action, editor, session, text) { - if (text == '[') { - var selection = editor.getSelectionRange(); - var selected = session.doc.getTextRange(selection); - if (selected !== "" && editor.getWrapBehavioursEnabled()) { - return { - text: '[' + selected + ']', - selection: false - }; - } else if (CstyleBehaviour.isSaneInsertion(editor, session)) { - CstyleBehaviour.recordAutoInsert(editor, session, "]"); - return { - text: '[]', - selection: [1, 1] - }; - } - } else if (text == ']') { - var cursor = editor.getCursorPosition(); - var line = session.doc.getLine(cursor.row); - var rightChar = line.substring(cursor.column, cursor.column + 1); - if (rightChar == ']') { - var matching = session.$findOpeningBracket(']', {column: cursor.column + 1, row: cursor.row}); - if (matching !== null && CstyleBehaviour.isAutoInsertedClosing(cursor, line, text)) { - CstyleBehaviour.popAutoInsertedClosing(); - return { - text: '', - selection: [1, 1] - }; - } - } - } - }); - - this.add("brackets", "deletion", function (state, action, editor, session, range) { - var selected = session.doc.getTextRange(range); - if (!range.isMultiLine() && selected == '[') { - var line = session.doc.getLine(range.start.row); - var rightChar = line.substring(range.start.column + 1, range.start.column + 2); - if (rightChar == ']') { - range.end.column++; - return range; - } - } - }); - - this.add("string_dquotes", "insertion", function (state, action, editor, session, text) { - if (text == '"' || text == "'") { - var quote = text; - var selection = editor.getSelectionRange(); - var selected = session.doc.getTextRange(selection); - if (selected !== "" && selected !== "'" && selected != '"' && editor.getWrapBehavioursEnabled()) { - return { - text: quote + selected + quote, - selection: false - }; - } else { - var cursor = editor.getCursorPosition(); - var line = session.doc.getLine(cursor.row); - var leftChar = line.substring(cursor.column-1, cursor.column); - if (leftChar == '\\') { - return null; - } - var tokens = session.getTokens(selection.start.row); - var col = 0, token; - var quotepos = -1; // Track whether we're inside an open quote. - - for (var x = 0; x < tokens.length; x++) { - token = tokens[x]; - if (token.type == "string") { - quotepos = -1; - } else if (quotepos < 0) { - quotepos = token.value.indexOf(quote); - } - if ((token.value.length + col) > selection.start.column) { - break; - } - col += tokens[x].value.length; - } - if (!token || (quotepos < 0 && token.type !== "comment" && (token.type !== "string" || ((selection.start.column !== token.value.length+col-1) && token.value.lastIndexOf(quote) === token.value.length-1)))) { - if (!CstyleBehaviour.isSaneInsertion(editor, session)) - return; - return { - text: quote + quote, - selection: [1,1] - }; - } else if (token && token.type === "string") { - var rightChar = line.substring(cursor.column, cursor.column + 1); - if (rightChar == quote) { - return { - text: '', - selection: [1, 1] - }; - } - } - } - } - }); - - this.add("string_dquotes", "deletion", function (state, action, editor, session, range) { - var selected = session.doc.getTextRange(range); - if (!range.isMultiLine() && (selected == '"' || selected == "'")) { - var line = session.doc.getLine(range.start.row); - var rightChar = line.substring(range.start.column + 1, range.start.column + 2); - if (rightChar == selected) { - range.end.column++; - return range; - } - } - }); - -}; - -oop.inherits(CstyleBehaviour, Behaviour); - -exports.CstyleBehaviour = CstyleBehaviour; -}); - -ace.define('ace/mode/folding/csharp', ['require', 'exports', 'module' , 'ace/lib/oop', 'ace/range', 'ace/mode/folding/cstyle'], function(require, exports, module) { - - -var oop = require("../../lib/oop"); -var Range = require("../../range").Range; -var CFoldMode = require("./cstyle").FoldMode; - -var FoldMode = exports.FoldMode = function(commentRegex) { - if (commentRegex) { - this.foldingStartMarker = new RegExp( - this.foldingStartMarker.source.replace(/\|[^|]*?$/, "|" + commentRegex.start) - ); - this.foldingStopMarker = new RegExp( - this.foldingStopMarker.source.replace(/\|[^|]*?$/, "|" + commentRegex.end) - ); - } -}; -oop.inherits(FoldMode, CFoldMode); - -(function() { - this.usingRe = /^\s*using \S/; - - this.getFoldWidgetRangeBase = this.getFoldWidgetRange; - this.getFoldWidgetBase = this.getFoldWidget; - - this.getFoldWidget = function(session, foldStyle, row) { - var fw = this.getFoldWidgetBase(session, foldStyle, row); - if (!fw) { - var line = session.getLine(row); - if (/^\s*#region\b/.test(line)) - return "start"; - var usingRe = this.usingRe; - if (usingRe.test(line)) { - var prev = session.getLine(row - 1); - var next = session.getLine(row + 1); - if (!usingRe.test(prev) && usingRe.test(next)) - return "start" - } - } - return fw; - }; - - this.getFoldWidgetRange = function(session, foldStyle, row) { - var range = this.getFoldWidgetRangeBase(session, foldStyle, row); - if (range) - return range; - - var line = session.getLine(row); - if (this.usingRe.test(line)) - return this.getUsingStatementBlock(session, line, row); - - if (/^\s*#region\b/.test(line)) - return this.getRegionBlock(session, line, row); - }; - - this.getUsingStatementBlock = function(session, line, row) { - var startColumn = line.match(this.usingRe)[0].length - 1; - var maxRow = session.getLength(); - var startRow = row; - var endRow = row; - - while (++row < maxRow) { - line = session.getLine(row); - if (/^\s*$/.test(line)) - continue; - if (!this.usingRe.test(line)) - break; - - endRow = row; - } - - if (endRow > startRow) { - var endColumn = session.getLine(endRow).length; - return new Range(startRow, startColumn, endRow, endColumn); - } - }; - - this.getRegionBlock = function(session, line, row) { - var startColumn = line.search(/\s*$/); - var maxRow = session.getLength(); - var startRow = row; - - var re = /^\s*#(end)?region\b/ - var depth = 1 - while (++row < maxRow) { - line = session.getLine(row); - var m = re.exec(line); - if (!m) - continue; - if (m[1]) - depth--; - else - depth++; - - if (!depth) - break; - } - - var endRow = row; - if (endRow > startRow) { - var endColumn = line.search(/\S/); - return new Range(startRow, startColumn, endRow, endColumn); - } - }; - -}).call(FoldMode.prototype); - -}); - -ace.define('ace/mode/folding/cstyle', ['require', 'exports', 'module' , 'ace/lib/oop', 'ace/range', 'ace/mode/folding/fold_mode'], function(require, exports, module) { - - -var oop = require("../../lib/oop"); -var Range = require("../../range").Range; -var BaseFoldMode = require("./fold_mode").FoldMode; - -var FoldMode = exports.FoldMode = function(commentRegex) { - if (commentRegex) { - this.foldingStartMarker = new RegExp( - this.foldingStartMarker.source.replace(/\|[^|]*?$/, "|" + commentRegex.start) - ); - this.foldingStopMarker = new RegExp( - this.foldingStopMarker.source.replace(/\|[^|]*?$/, "|" + commentRegex.end) - ); - } -}; -oop.inherits(FoldMode, BaseFoldMode); - -(function() { - - this.foldingStartMarker = /(\{|\[)[^\}\]]*$|^\s*(\/\*)/; - this.foldingStopMarker = /^[^\[\{]*(\}|\])|^[\s\*]*(\*\/)/; - - this.getFoldWidgetRange = function(session, foldStyle, row, forceMultiline) { - var line = session.getLine(row); - var match = line.match(this.foldingStartMarker); - if (match) { - var i = match.index; - - if (match[1]) - return this.openingBracketBlock(session, match[1], row, i); - - var range = session.getCommentFoldRange(row, i + match[0].length, 1); - - if (range && !range.isMultiLine()) { - if (forceMultiline) { - range = this.getSectionRange(session, row); - } else if (foldStyle != "all") - range = null; - } - - return range; - } - - if (foldStyle === "markbegin") - return; - - var match = line.match(this.foldingStopMarker); - if (match) { - var i = match.index + match[0].length; - - if (match[1]) - return this.closingBracketBlock(session, match[1], row, i); - - return session.getCommentFoldRange(row, i, -1); - } - }; - - this.getSectionRange = function(session, row) { - var line = session.getLine(row); - var startIndent = line.search(/\S/); - var startRow = row; - var startColumn = line.length; - row = row + 1; - var endRow = row; - var maxRow = session.getLength(); - while (++row < maxRow) { - line = session.getLine(row); - var indent = line.search(/\S/); - if (indent === -1) - continue; - if (startIndent > indent) - break; - var subRange = this.getFoldWidgetRange(session, "all", row); - - if (subRange) { - if (subRange.start.row <= startRow) { - break; - } else if (subRange.isMultiLine()) { - row = subRange.end.row; - } else if (startIndent == indent) { - break; - } - } - endRow = row; - } - - return new Range(startRow, startColumn, endRow, session.getLine(endRow).length); - }; - -}).call(FoldMode.prototype); - -}); diff --git a/IDE/jsrealb-ide/ace-src-noconflict/mode-css.js b/IDE/jsrealb-ide/ace-src-noconflict/mode-css.js deleted file mode 100644 index abee0314..00000000 --- a/IDE/jsrealb-ide/ace-src-noconflict/mode-css.js +++ /dev/null @@ -1,785 +0,0 @@ -/* ***** BEGIN LICENSE BLOCK ***** - * Distributed under the BSD license: - * - * Copyright (c) 2010, Ajax.org B.V. - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are met: - * * Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * * Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * * Neither the name of Ajax.org B.V. nor the - * names of its contributors may be used to endorse or promote products - * derived from this software without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND - * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED - * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE - * DISCLAIMED. IN NO EVENT SHALL AJAX.ORG B.V. BE LIABLE FOR ANY - * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES - * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; - * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND - * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - * - * ***** END LICENSE BLOCK ***** */ - -ace.define('ace/mode/css', ['require', 'exports', 'module' , 'ace/lib/oop', 'ace/mode/text', 'ace/tokenizer', 'ace/mode/css_highlight_rules', 'ace/mode/matching_brace_outdent', 'ace/worker/worker_client', 'ace/mode/behaviour/css', 'ace/mode/folding/cstyle'], function(require, exports, module) { - - -var oop = require("../lib/oop"); -var TextMode = require("./text").Mode; -var Tokenizer = require("../tokenizer").Tokenizer; -var CssHighlightRules = require("./css_highlight_rules").CssHighlightRules; -var MatchingBraceOutdent = require("./matching_brace_outdent").MatchingBraceOutdent; -var WorkerClient = require("../worker/worker_client").WorkerClient; -var CssBehaviour = require("./behaviour/css").CssBehaviour; -var CStyleFoldMode = require("./folding/cstyle").FoldMode; - -var Mode = function() { - this.HighlightRules = CssHighlightRules; - this.$outdent = new MatchingBraceOutdent(); - this.$behaviour = new CssBehaviour(); - this.foldingRules = new CStyleFoldMode(); -}; -oop.inherits(Mode, TextMode); - -(function() { - - this.foldingRules = "cStyle"; - this.blockComment = {start: "/*", end: "*/"}; - - this.getNextLineIndent = function(state, line, tab) { - var indent = this.$getIndent(line); - var tokens = this.getTokenizer().getLineTokens(line, state).tokens; - if (tokens.length && tokens[tokens.length-1].type == "comment") { - return indent; - } - - var match = line.match(/^.*\{\s*$/); - if (match) { - indent += tab; - } - - return indent; - }; - - this.checkOutdent = function(state, line, input) { - return this.$outdent.checkOutdent(line, input); - }; - - this.autoOutdent = function(state, doc, row) { - this.$outdent.autoOutdent(doc, row); - }; - - this.createWorker = function(session) { - var worker = new WorkerClient(["ace"], "ace/mode/css_worker", "Worker"); - worker.attachToDocument(session.getDocument()); - - worker.on("csslint", function(e) { - session.setAnnotations(e.data); - }); - - worker.on("terminate", function() { - session.clearAnnotations(); - }); - - return worker; - }; - - this.$id = "ace/mode/css"; -}).call(Mode.prototype); - -exports.Mode = Mode; - -}); - -ace.define('ace/mode/css_highlight_rules', ['require', 'exports', 'module' , 'ace/lib/oop', 'ace/lib/lang', 'ace/mode/text_highlight_rules'], function(require, exports, module) { - - -var oop = require("../lib/oop"); -var lang = require("../lib/lang"); -var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; -var supportType = exports.supportType = "animation-fill-mode|alignment-adjust|alignment-baseline|animation-delay|animation-direction|animation-duration|animation-iteration-count|animation-name|animation-play-state|animation-timing-function|animation|appearance|azimuth|backface-visibility|background-attachment|background-break|background-clip|background-color|background-image|background-origin|background-position|background-repeat|background-size|background|baseline-shift|binding|bleed|bookmark-label|bookmark-level|bookmark-state|bookmark-target|border-bottom|border-bottom-color|border-bottom-left-radius|border-bottom-right-radius|border-bottom-style|border-bottom-width|border-collapse|border-color|border-image|border-image-outset|border-image-repeat|border-image-slice|border-image-source|border-image-width|border-left|border-left-color|border-left-style|border-left-width|border-radius|border-right|border-right-color|border-right-style|border-right-width|border-spacing|border-style|border-top|border-top-color|border-top-left-radius|border-top-right-radius|border-top-style|border-top-width|border-width|border|bottom|box-align|box-decoration-break|box-direction|box-flex-group|box-flex|box-lines|box-ordinal-group|box-orient|box-pack|box-shadow|box-sizing|break-after|break-before|break-inside|caption-side|clear|clip|color-profile|color|column-count|column-fill|column-gap|column-rule|column-rule-color|column-rule-style|column-rule-width|column-span|column-width|columns|content|counter-increment|counter-reset|crop|cue-after|cue-before|cue|cursor|direction|display|dominant-baseline|drop-initial-after-adjust|drop-initial-after-align|drop-initial-before-adjust|drop-initial-before-align|drop-initial-size|drop-initial-value|elevation|empty-cells|fit|fit-position|float-offset|float|font-family|font-size|font-size-adjust|font-stretch|font-style|font-variant|font-weight|font|grid-columns|grid-rows|hanging-punctuation|height|hyphenate-after|hyphenate-before|hyphenate-character|hyphenate-lines|hyphenate-resource|hyphens|icon|image-orientation|image-rendering|image-resolution|inline-box-align|left|letter-spacing|line-height|line-stacking-ruby|line-stacking-shift|line-stacking-strategy|line-stacking|list-style-image|list-style-position|list-style-type|list-style|margin-bottom|margin-left|margin-right|margin-top|margin|mark-after|mark-before|mark|marks|marquee-direction|marquee-play-count|marquee-speed|marquee-style|max-height|max-width|min-height|min-width|move-to|nav-down|nav-index|nav-left|nav-right|nav-up|opacity|orphans|outline-color|outline-offset|outline-style|outline-width|outline|overflow-style|overflow-x|overflow-y|overflow|padding-bottom|padding-left|padding-right|padding-top|padding|page-break-after|page-break-before|page-break-inside|page-policy|page|pause-after|pause-before|pause|perspective-origin|perspective|phonemes|pitch-range|pitch|play-during|pointer-events|position|presentation-level|punctuation-trim|quotes|rendering-intent|resize|rest-after|rest-before|rest|richness|right|rotation-point|rotation|ruby-align|ruby-overhang|ruby-position|ruby-span|size|speak-header|speak-numeral|speak-punctuation|speak|speech-rate|stress|string-set|table-layout|target-name|target-new|target-position|target|text-align-last|text-align|text-decoration|text-emphasis|text-height|text-indent|text-justify|text-outline|text-shadow|text-transform|text-wrap|top|transform-origin|transform-style|transform|transition-delay|transition-duration|transition-property|transition-timing-function|transition|unicode-bidi|vertical-align|visibility|voice-balance|voice-duration|voice-family|voice-pitch-range|voice-pitch|voice-rate|voice-stress|voice-volume|volume|white-space-collapse|white-space|widows|width|word-break|word-spacing|word-wrap|z-index"; -var supportFunction = exports.supportFunction = "rgb|rgba|url|attr|counter|counters"; -var supportConstant = exports.supportConstant = "absolute|after-edge|after|all-scroll|all|alphabetic|always|antialiased|armenian|auto|avoid-column|avoid-page|avoid|balance|baseline|before-edge|before|below|bidi-override|block-line-height|block|bold|bolder|border-box|both|bottom|box|break-all|break-word|capitalize|caps-height|caption|center|central|char|circle|cjk-ideographic|clone|close-quote|col-resize|collapse|column|consider-shifts|contain|content-box|cover|crosshair|cubic-bezier|dashed|decimal-leading-zero|decimal|default|disabled|disc|disregard-shifts|distribute-all-lines|distribute-letter|distribute-space|distribute|dotted|double|e-resize|ease-in|ease-in-out|ease-out|ease|ellipsis|end|exclude-ruby|fill|fixed|georgian|glyphs|grid-height|groove|hand|hanging|hebrew|help|hidden|hiragana-iroha|hiragana|horizontal|icon|ideograph-alpha|ideograph-numeric|ideograph-parenthesis|ideograph-space|ideographic|inactive|include-ruby|inherit|initial|inline-block|inline-box|inline-line-height|inline-table|inline|inset|inside|inter-ideograph|inter-word|invert|italic|justify|katakana-iroha|katakana|keep-all|last|left|lighter|line-edge|line-through|line|linear|list-item|local|loose|lower-alpha|lower-greek|lower-latin|lower-roman|lowercase|lr-tb|ltr|mathematical|max-height|max-size|medium|menu|message-box|middle|move|n-resize|ne-resize|newspaper|no-change|no-close-quote|no-drop|no-open-quote|no-repeat|none|normal|not-allowed|nowrap|nw-resize|oblique|open-quote|outset|outside|overline|padding-box|page|pointer|pre-line|pre-wrap|pre|preserve-3d|progress|relative|repeat-x|repeat-y|repeat|replaced|reset-size|ridge|right|round|row-resize|rtl|s-resize|scroll|se-resize|separate|slice|small-caps|small-caption|solid|space|square|start|static|status-bar|step-end|step-start|steps|stretch|strict|sub|super|sw-resize|table-caption|table-cell|table-column-group|table-column|table-footer-group|table-header-group|table-row-group|table-row|table|tb-rl|text-after-edge|text-before-edge|text-bottom|text-size|text-top|text|thick|thin|transparent|underline|upper-alpha|upper-latin|upper-roman|uppercase|use-script|vertical-ideographic|vertical-text|visible|w-resize|wait|whitespace|z-index|zero"; -var supportConstantColor = exports.supportConstantColor = "aqua|black|blue|fuchsia|gray|green|lime|maroon|navy|olive|orange|purple|red|silver|teal|white|yellow"; -var supportConstantFonts = exports.supportConstantFonts = "arial|century|comic|courier|garamond|georgia|helvetica|impact|lucida|symbol|system|tahoma|times|trebuchet|utopia|verdana|webdings|sans-serif|serif|monospace"; - -var numRe = exports.numRe = "\\-?(?:(?:[0-9]+)|(?:[0-9]*\\.[0-9]+))"; -var pseudoElements = exports.pseudoElements = "(\\:+)\\b(after|before|first-letter|first-line|moz-selection|selection)\\b"; -var pseudoClasses = exports.pseudoClasses = "(:)\\b(active|checked|disabled|empty|enabled|first-child|first-of-type|focus|hover|indeterminate|invalid|last-child|last-of-type|link|not|nth-child|nth-last-child|nth-last-of-type|nth-of-type|only-child|only-of-type|required|root|target|valid|visited)\\b"; - -var CssHighlightRules = function() { - - var keywordMapper = this.createKeywordMapper({ - "support.function": supportFunction, - "support.constant": supportConstant, - "support.type": supportType, - "support.constant.color": supportConstantColor, - "support.constant.fonts": supportConstantFonts - }, "text", true); - - this.$rules = { - "start" : [{ - token : "comment", // multi line comment - regex : "\\/\\*", - push : "comment" - }, { - token: "paren.lparen", - regex: "\\{", - push: "ruleset" - }, { - token: "string", - regex: "@.*?{", - push: "media" - }, { - token: "keyword", - regex: "#[a-z0-9-_]+" - }, { - token: "variable", - regex: "\\.[a-z0-9-_]+" - }, { - token: "string", - regex: ":[a-z0-9-_]+" - }, { - token: "constant", - regex: "[a-z0-9-_]+" - }, { - caseInsensitive: true - }], - - "media" : [{ - token : "comment", // multi line comment - regex : "\\/\\*", - push : "comment" - }, { - token: "paren.lparen", - regex: "\\{", - push: "ruleset" - }, { - token: "string", - regex: "\\}", - next: "pop" - }, { - token: "keyword", - regex: "#[a-z0-9-_]+" - }, { - token: "variable", - regex: "\\.[a-z0-9-_]+" - }, { - token: "string", - regex: ":[a-z0-9-_]+" - }, { - token: "constant", - regex: "[a-z0-9-_]+" - }, { - caseInsensitive: true - }], - - "comment" : [{ - token : "comment", - regex : "\\*\\/", - next : "pop" - }, { - defaultToken : "comment" - }], - - "ruleset" : [ - { - token : "paren.rparen", - regex : "\\}", - next: "pop" - }, { - token : "comment", // multi line comment - regex : "\\/\\*", - push : "comment" - }, { - token : "string", // single line - regex : '["](?:(?:\\\\.)|(?:[^"\\\\]))*?["]' - }, { - token : "string", // single line - regex : "['](?:(?:\\\\.)|(?:[^'\\\\]))*?[']" - }, { - token : ["constant.numeric", "keyword"], - regex : "(" + numRe + ")(ch|cm|deg|em|ex|fr|gd|grad|Hz|in|kHz|mm|ms|pc|pt|px|rad|rem|s|turn|vh|vm|vw|%)" - }, { - token : "constant.numeric", - regex : numRe - }, { - token : "constant.numeric", // hex6 color - regex : "#[a-f0-9]{6}" - }, { - token : "constant.numeric", // hex3 color - regex : "#[a-f0-9]{3}" - }, { - token : ["punctuation", "entity.other.attribute-name.pseudo-element.css"], - regex : pseudoElements - }, { - token : ["punctuation", "entity.other.attribute-name.pseudo-class.css"], - regex : pseudoClasses - }, { - token : ["support.function", "string", "support.function"], - regex : "(url\\()(.*)(\\))" - }, { - token : keywordMapper, - regex : "\\-?[a-zA-Z_][a-zA-Z0-9_\\-]*" - }, { - caseInsensitive: true - }] - }; - - this.normalizeRules(); -}; - -oop.inherits(CssHighlightRules, TextHighlightRules); - -exports.CssHighlightRules = CssHighlightRules; - -}); - -ace.define('ace/mode/matching_brace_outdent', ['require', 'exports', 'module' , 'ace/range'], function(require, exports, module) { - - -var Range = require("../range").Range; - -var MatchingBraceOutdent = function() {}; - -(function() { - - this.checkOutdent = function(line, input) { - if (! /^\s+$/.test(line)) - return false; - - return /^\s*\}/.test(input); - }; - - this.autoOutdent = function(doc, row) { - var line = doc.getLine(row); - var match = line.match(/^(\s*\})/); - - if (!match) return 0; - - var column = match[1].length; - var openBracePos = doc.findMatchingBracket({row: row, column: column}); - - if (!openBracePos || openBracePos.row == row) return 0; - - var indent = this.$getIndent(doc.getLine(openBracePos.row)); - doc.replace(new Range(row, 0, row, column-1), indent); - }; - - this.$getIndent = function(line) { - return line.match(/^\s*/)[0]; - }; - -}).call(MatchingBraceOutdent.prototype); - -exports.MatchingBraceOutdent = MatchingBraceOutdent; -}); - -ace.define('ace/mode/behaviour/css', ['require', 'exports', 'module' , 'ace/lib/oop', 'ace/mode/behaviour', 'ace/mode/behaviour/cstyle', 'ace/token_iterator'], function(require, exports, module) { - - -var oop = require("../../lib/oop"); -var Behaviour = require("../behaviour").Behaviour; -var CstyleBehaviour = require("./cstyle").CstyleBehaviour; -var TokenIterator = require("../../token_iterator").TokenIterator; - -var CssBehaviour = function () { - - this.inherit(CstyleBehaviour); - - this.add("colon", "insertion", function (state, action, editor, session, text) { - if (text === ':') { - var cursor = editor.getCursorPosition(); - var iterator = new TokenIterator(session, cursor.row, cursor.column); - var token = iterator.getCurrentToken(); - if (token && token.value.match(/\s+/)) { - token = iterator.stepBackward(); - } - if (token && token.type === 'support.type') { - var line = session.doc.getLine(cursor.row); - var rightChar = line.substring(cursor.column, cursor.column + 1); - if (rightChar === ':') { - return { - text: '', - selection: [1, 1] - } - } - if (!line.substring(cursor.column).match(/^\s*;/)) { - return { - text: ':;', - selection: [1, 1] - } - } - } - } - }); - - this.add("colon", "deletion", function (state, action, editor, session, range) { - var selected = session.doc.getTextRange(range); - if (!range.isMultiLine() && selected === ':') { - var cursor = editor.getCursorPosition(); - var iterator = new TokenIterator(session, cursor.row, cursor.column); - var token = iterator.getCurrentToken(); - if (token && token.value.match(/\s+/)) { - token = iterator.stepBackward(); - } - if (token && token.type === 'support.type') { - var line = session.doc.getLine(range.start.row); - var rightChar = line.substring(range.end.column, range.end.column + 1); - if (rightChar === ';') { - range.end.column ++; - return range; - } - } - } - }); - - this.add("semicolon", "insertion", function (state, action, editor, session, text) { - if (text === ';') { - var cursor = editor.getCursorPosition(); - var line = session.doc.getLine(cursor.row); - var rightChar = line.substring(cursor.column, cursor.column + 1); - if (rightChar === ';') { - return { - text: '', - selection: [1, 1] - } - } - } - }); - -} -oop.inherits(CssBehaviour, CstyleBehaviour); - -exports.CssBehaviour = CssBehaviour; -}); - -ace.define('ace/mode/behaviour/cstyle', ['require', 'exports', 'module' , 'ace/lib/oop', 'ace/mode/behaviour', 'ace/token_iterator', 'ace/lib/lang'], function(require, exports, module) { - - -var oop = require("../../lib/oop"); -var Behaviour = require("../behaviour").Behaviour; -var TokenIterator = require("../../token_iterator").TokenIterator; -var lang = require("../../lib/lang"); - -var SAFE_INSERT_IN_TOKENS = - ["text", "paren.rparen", "punctuation.operator"]; -var SAFE_INSERT_BEFORE_TOKENS = - ["text", "paren.rparen", "punctuation.operator", "comment"]; - - -var autoInsertedBrackets = 0; -var autoInsertedRow = -1; -var autoInsertedLineEnd = ""; -var maybeInsertedBrackets = 0; -var maybeInsertedRow = -1; -var maybeInsertedLineStart = ""; -var maybeInsertedLineEnd = ""; - -var CstyleBehaviour = function () { - - CstyleBehaviour.isSaneInsertion = function(editor, session) { - var cursor = editor.getCursorPosition(); - var iterator = new TokenIterator(session, cursor.row, cursor.column); - if (!this.$matchTokenType(iterator.getCurrentToken() || "text", SAFE_INSERT_IN_TOKENS)) { - var iterator2 = new TokenIterator(session, cursor.row, cursor.column + 1); - if (!this.$matchTokenType(iterator2.getCurrentToken() || "text", SAFE_INSERT_IN_TOKENS)) - return false; - } - iterator.stepForward(); - return iterator.getCurrentTokenRow() !== cursor.row || - this.$matchTokenType(iterator.getCurrentToken() || "text", SAFE_INSERT_BEFORE_TOKENS); - }; - - CstyleBehaviour.$matchTokenType = function(token, types) { - return types.indexOf(token.type || token) > -1; - }; - - CstyleBehaviour.recordAutoInsert = function(editor, session, bracket) { - var cursor = editor.getCursorPosition(); - var line = session.doc.getLine(cursor.row); - if (!this.isAutoInsertedClosing(cursor, line, autoInsertedLineEnd[0])) - autoInsertedBrackets = 0; - autoInsertedRow = cursor.row; - autoInsertedLineEnd = bracket + line.substr(cursor.column); - autoInsertedBrackets++; - }; - - CstyleBehaviour.recordMaybeInsert = function(editor, session, bracket) { - var cursor = editor.getCursorPosition(); - var line = session.doc.getLine(cursor.row); - if (!this.isMaybeInsertedClosing(cursor, line)) - maybeInsertedBrackets = 0; - maybeInsertedRow = cursor.row; - maybeInsertedLineStart = line.substr(0, cursor.column) + bracket; - maybeInsertedLineEnd = line.substr(cursor.column); - maybeInsertedBrackets++; - }; - - CstyleBehaviour.isAutoInsertedClosing = function(cursor, line, bracket) { - return autoInsertedBrackets > 0 && - cursor.row === autoInsertedRow && - bracket === autoInsertedLineEnd[0] && - line.substr(cursor.column) === autoInsertedLineEnd; - }; - - CstyleBehaviour.isMaybeInsertedClosing = function(cursor, line) { - return maybeInsertedBrackets > 0 && - cursor.row === maybeInsertedRow && - line.substr(cursor.column) === maybeInsertedLineEnd && - line.substr(0, cursor.column) == maybeInsertedLineStart; - }; - - CstyleBehaviour.popAutoInsertedClosing = function() { - autoInsertedLineEnd = autoInsertedLineEnd.substr(1); - autoInsertedBrackets--; - }; - - CstyleBehaviour.clearMaybeInsertedClosing = function() { - maybeInsertedBrackets = 0; - maybeInsertedRow = -1; - }; - - this.add("braces", "insertion", function (state, action, editor, session, text) { - var cursor = editor.getCursorPosition(); - var line = session.doc.getLine(cursor.row); - if (text == '{') { - var selection = editor.getSelectionRange(); - var selected = session.doc.getTextRange(selection); - if (selected !== "" && selected !== "{" && editor.getWrapBehavioursEnabled()) { - return { - text: '{' + selected + '}', - selection: false - }; - } else if (CstyleBehaviour.isSaneInsertion(editor, session)) { - if (/[\]\}\)]/.test(line[cursor.column]) || editor.inMultiSelectMode) { - CstyleBehaviour.recordAutoInsert(editor, session, "}"); - return { - text: '{}', - selection: [1, 1] - }; - } else { - CstyleBehaviour.recordMaybeInsert(editor, session, "{"); - return { - text: '{', - selection: [1, 1] - }; - } - } - } else if (text == '}') { - var rightChar = line.substring(cursor.column, cursor.column + 1); - if (rightChar == '}') { - var matching = session.$findOpeningBracket('}', {column: cursor.column + 1, row: cursor.row}); - if (matching !== null && CstyleBehaviour.isAutoInsertedClosing(cursor, line, text)) { - CstyleBehaviour.popAutoInsertedClosing(); - return { - text: '', - selection: [1, 1] - }; - } - } - } else if (text == "\n" || text == "\r\n") { - var closing = ""; - if (CstyleBehaviour.isMaybeInsertedClosing(cursor, line)) { - closing = lang.stringRepeat("}", maybeInsertedBrackets); - CstyleBehaviour.clearMaybeInsertedClosing(); - } - var rightChar = line.substring(cursor.column, cursor.column + 1); - if (rightChar === '}') { - var openBracePos = session.findMatchingBracket({row: cursor.row, column: cursor.column+1}, '}'); - if (!openBracePos) - return null; - var next_indent = this.$getIndent(session.getLine(openBracePos.row)); - } else if (closing) { - var next_indent = this.$getIndent(line); - } else { - return; - } - var indent = next_indent + session.getTabString(); - - return { - text: '\n' + indent + '\n' + next_indent + closing, - selection: [1, indent.length, 1, indent.length] - }; - } else { - CstyleBehaviour.clearMaybeInsertedClosing(); - } - }); - - this.add("braces", "deletion", function (state, action, editor, session, range) { - var selected = session.doc.getTextRange(range); - if (!range.isMultiLine() && selected == '{') { - var line = session.doc.getLine(range.start.row); - var rightChar = line.substring(range.end.column, range.end.column + 1); - if (rightChar == '}') { - range.end.column++; - return range; - } else { - maybeInsertedBrackets--; - } - } - }); - - this.add("parens", "insertion", function (state, action, editor, session, text) { - if (text == '(') { - var selection = editor.getSelectionRange(); - var selected = session.doc.getTextRange(selection); - if (selected !== "" && editor.getWrapBehavioursEnabled()) { - return { - text: '(' + selected + ')', - selection: false - }; - } else if (CstyleBehaviour.isSaneInsertion(editor, session)) { - CstyleBehaviour.recordAutoInsert(editor, session, ")"); - return { - text: '()', - selection: [1, 1] - }; - } - } else if (text == ')') { - var cursor = editor.getCursorPosition(); - var line = session.doc.getLine(cursor.row); - var rightChar = line.substring(cursor.column, cursor.column + 1); - if (rightChar == ')') { - var matching = session.$findOpeningBracket(')', {column: cursor.column + 1, row: cursor.row}); - if (matching !== null && CstyleBehaviour.isAutoInsertedClosing(cursor, line, text)) { - CstyleBehaviour.popAutoInsertedClosing(); - return { - text: '', - selection: [1, 1] - }; - } - } - } - }); - - this.add("parens", "deletion", function (state, action, editor, session, range) { - var selected = session.doc.getTextRange(range); - if (!range.isMultiLine() && selected == '(') { - var line = session.doc.getLine(range.start.row); - var rightChar = line.substring(range.start.column + 1, range.start.column + 2); - if (rightChar == ')') { - range.end.column++; - return range; - } - } - }); - - this.add("brackets", "insertion", function (state, action, editor, session, text) { - if (text == '[') { - var selection = editor.getSelectionRange(); - var selected = session.doc.getTextRange(selection); - if (selected !== "" && editor.getWrapBehavioursEnabled()) { - return { - text: '[' + selected + ']', - selection: false - }; - } else if (CstyleBehaviour.isSaneInsertion(editor, session)) { - CstyleBehaviour.recordAutoInsert(editor, session, "]"); - return { - text: '[]', - selection: [1, 1] - }; - } - } else if (text == ']') { - var cursor = editor.getCursorPosition(); - var line = session.doc.getLine(cursor.row); - var rightChar = line.substring(cursor.column, cursor.column + 1); - if (rightChar == ']') { - var matching = session.$findOpeningBracket(']', {column: cursor.column + 1, row: cursor.row}); - if (matching !== null && CstyleBehaviour.isAutoInsertedClosing(cursor, line, text)) { - CstyleBehaviour.popAutoInsertedClosing(); - return { - text: '', - selection: [1, 1] - }; - } - } - } - }); - - this.add("brackets", "deletion", function (state, action, editor, session, range) { - var selected = session.doc.getTextRange(range); - if (!range.isMultiLine() && selected == '[') { - var line = session.doc.getLine(range.start.row); - var rightChar = line.substring(range.start.column + 1, range.start.column + 2); - if (rightChar == ']') { - range.end.column++; - return range; - } - } - }); - - this.add("string_dquotes", "insertion", function (state, action, editor, session, text) { - if (text == '"' || text == "'") { - var quote = text; - var selection = editor.getSelectionRange(); - var selected = session.doc.getTextRange(selection); - if (selected !== "" && selected !== "'" && selected != '"' && editor.getWrapBehavioursEnabled()) { - return { - text: quote + selected + quote, - selection: false - }; - } else { - var cursor = editor.getCursorPosition(); - var line = session.doc.getLine(cursor.row); - var leftChar = line.substring(cursor.column-1, cursor.column); - if (leftChar == '\\') { - return null; - } - var tokens = session.getTokens(selection.start.row); - var col = 0, token; - var quotepos = -1; // Track whether we're inside an open quote. - - for (var x = 0; x < tokens.length; x++) { - token = tokens[x]; - if (token.type == "string") { - quotepos = -1; - } else if (quotepos < 0) { - quotepos = token.value.indexOf(quote); - } - if ((token.value.length + col) > selection.start.column) { - break; - } - col += tokens[x].value.length; - } - if (!token || (quotepos < 0 && token.type !== "comment" && (token.type !== "string" || ((selection.start.column !== token.value.length+col-1) && token.value.lastIndexOf(quote) === token.value.length-1)))) { - if (!CstyleBehaviour.isSaneInsertion(editor, session)) - return; - return { - text: quote + quote, - selection: [1,1] - }; - } else if (token && token.type === "string") { - var rightChar = line.substring(cursor.column, cursor.column + 1); - if (rightChar == quote) { - return { - text: '', - selection: [1, 1] - }; - } - } - } - } - }); - - this.add("string_dquotes", "deletion", function (state, action, editor, session, range) { - var selected = session.doc.getTextRange(range); - if (!range.isMultiLine() && (selected == '"' || selected == "'")) { - var line = session.doc.getLine(range.start.row); - var rightChar = line.substring(range.start.column + 1, range.start.column + 2); - if (rightChar == selected) { - range.end.column++; - return range; - } - } - }); - -}; - -oop.inherits(CstyleBehaviour, Behaviour); - -exports.CstyleBehaviour = CstyleBehaviour; -}); - -ace.define('ace/mode/folding/cstyle', ['require', 'exports', 'module' , 'ace/lib/oop', 'ace/range', 'ace/mode/folding/fold_mode'], function(require, exports, module) { - - -var oop = require("../../lib/oop"); -var Range = require("../../range").Range; -var BaseFoldMode = require("./fold_mode").FoldMode; - -var FoldMode = exports.FoldMode = function(commentRegex) { - if (commentRegex) { - this.foldingStartMarker = new RegExp( - this.foldingStartMarker.source.replace(/\|[^|]*?$/, "|" + commentRegex.start) - ); - this.foldingStopMarker = new RegExp( - this.foldingStopMarker.source.replace(/\|[^|]*?$/, "|" + commentRegex.end) - ); - } -}; -oop.inherits(FoldMode, BaseFoldMode); - -(function() { - - this.foldingStartMarker = /(\{|\[)[^\}\]]*$|^\s*(\/\*)/; - this.foldingStopMarker = /^[^\[\{]*(\}|\])|^[\s\*]*(\*\/)/; - - this.getFoldWidgetRange = function(session, foldStyle, row, forceMultiline) { - var line = session.getLine(row); - var match = line.match(this.foldingStartMarker); - if (match) { - var i = match.index; - - if (match[1]) - return this.openingBracketBlock(session, match[1], row, i); - - var range = session.getCommentFoldRange(row, i + match[0].length, 1); - - if (range && !range.isMultiLine()) { - if (forceMultiline) { - range = this.getSectionRange(session, row); - } else if (foldStyle != "all") - range = null; - } - - return range; - } - - if (foldStyle === "markbegin") - return; - - var match = line.match(this.foldingStopMarker); - if (match) { - var i = match.index + match[0].length; - - if (match[1]) - return this.closingBracketBlock(session, match[1], row, i); - - return session.getCommentFoldRange(row, i, -1); - } - }; - - this.getSectionRange = function(session, row) { - var line = session.getLine(row); - var startIndent = line.search(/\S/); - var startRow = row; - var startColumn = line.length; - row = row + 1; - var endRow = row; - var maxRow = session.getLength(); - while (++row < maxRow) { - line = session.getLine(row); - var indent = line.search(/\S/); - if (indent === -1) - continue; - if (startIndent > indent) - break; - var subRange = this.getFoldWidgetRange(session, "all", row); - - if (subRange) { - if (subRange.start.row <= startRow) { - break; - } else if (subRange.isMultiLine()) { - row = subRange.end.row; - } else if (startIndent == indent) { - break; - } - } - endRow = row; - } - - return new Range(startRow, startColumn, endRow, session.getLine(endRow).length); - }; - -}).call(FoldMode.prototype); - -}); diff --git a/IDE/jsrealb-ide/ace-src-noconflict/mode-curly.js b/IDE/jsrealb-ide/ace-src-noconflict/mode-curly.js deleted file mode 100644 index 536cc69d..00000000 --- a/IDE/jsrealb-ide/ace-src-noconflict/mode-curly.js +++ /dev/null @@ -1,2423 +0,0 @@ -/* ***** BEGIN LICENSE BLOCK ***** - * Distributed under the BSD license: - * - * Copyright (c) 2012, Ajax.org B.V. - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are met: - * * Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * * Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * * Neither the name of Ajax.org B.V. nor the - * names of its contributors may be used to endorse or promote products - * derived from this software without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND - * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED - * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE - * DISCLAIMED. IN NO EVENT SHALL AJAX.ORG B.V. BE LIABLE FOR ANY - * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES - * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; - * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND - * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - * - * - * Contributor(s): - * - * Libo Cannici - * - * - * - * ***** END LICENSE BLOCK ***** */ -ace.define('ace/mode/curly', ['require', 'exports', 'module' , 'ace/lib/oop', 'ace/mode/html', 'ace/tokenizer', 'ace/mode/matching_brace_outdent', 'ace/mode/html_highlight_rules', 'ace/mode/folding/html', 'ace/mode/curly_highlight_rules'], function(require, exports, module) { - - -var oop = require("../lib/oop"); -var HtmlMode = require("./html").Mode; -var Tokenizer = require("../tokenizer").Tokenizer; -var MatchingBraceOutdent = require("./matching_brace_outdent").MatchingBraceOutdent; -var HtmlHighlightRules = require("./html_highlight_rules").HtmlHighlightRules; -var HtmlFoldMode = require("./folding/html").FoldMode; -var CurlyHighlightRules = require("./curly_highlight_rules").CurlyHighlightRules; - -var Mode = function() { - HtmlMode.call(this); - this.HighlightRules = CurlyHighlightRules; - this.$outdent = new MatchingBraceOutdent(); - this.foldingRules = new HtmlFoldMode(); -}; -oop.inherits(Mode, HtmlMode); - -(function() { - this.$id = "ace/mode/curly"; -}).call(Mode.prototype); - -exports.Mode = Mode; -}); - -ace.define('ace/mode/html', ['require', 'exports', 'module' , 'ace/lib/oop', 'ace/mode/text', 'ace/mode/javascript', 'ace/mode/css', 'ace/tokenizer', 'ace/mode/html_highlight_rules', 'ace/mode/behaviour/html', 'ace/mode/folding/html', 'ace/mode/html_completions'], function(require, exports, module) { - - -var oop = require("../lib/oop"); -var TextMode = require("./text").Mode; -var JavaScriptMode = require("./javascript").Mode; -var CssMode = require("./css").Mode; -var Tokenizer = require("../tokenizer").Tokenizer; -var HtmlHighlightRules = require("./html_highlight_rules").HtmlHighlightRules; -var HtmlBehaviour = require("./behaviour/html").HtmlBehaviour; -var HtmlFoldMode = require("./folding/html").FoldMode; -var HtmlCompletions = require("./html_completions").HtmlCompletions; - -var Mode = function() { - this.HighlightRules = HtmlHighlightRules; - this.$behaviour = new HtmlBehaviour(); - this.$completer = new HtmlCompletions(); - - this.createModeDelegates({ - "js-": JavaScriptMode, - "css-": CssMode - }); - - this.foldingRules = new HtmlFoldMode(); -}; -oop.inherits(Mode, TextMode); - -(function() { - - this.blockComment = {start: ""}; - - this.getNextLineIndent = function(state, line, tab) { - return this.$getIndent(line); - }; - - this.checkOutdent = function(state, line, input) { - return false; - }; - - this.getCompletions = function(state, session, pos, prefix) { - return this.$completer.getCompletions(state, session, pos, prefix); - }; - - this.$id = "ace/mode/html"; -}).call(Mode.prototype); - -exports.Mode = Mode; -}); - -ace.define('ace/mode/javascript', ['require', 'exports', 'module' , 'ace/lib/oop', 'ace/mode/text', 'ace/tokenizer', 'ace/mode/javascript_highlight_rules', 'ace/mode/matching_brace_outdent', 'ace/range', 'ace/worker/worker_client', 'ace/mode/behaviour/cstyle', 'ace/mode/folding/cstyle'], function(require, exports, module) { - - -var oop = require("../lib/oop"); -var TextMode = require("./text").Mode; -var Tokenizer = require("../tokenizer").Tokenizer; -var JavaScriptHighlightRules = require("./javascript_highlight_rules").JavaScriptHighlightRules; -var MatchingBraceOutdent = require("./matching_brace_outdent").MatchingBraceOutdent; -var Range = require("../range").Range; -var WorkerClient = require("../worker/worker_client").WorkerClient; -var CstyleBehaviour = require("./behaviour/cstyle").CstyleBehaviour; -var CStyleFoldMode = require("./folding/cstyle").FoldMode; - -var Mode = function() { - this.HighlightRules = JavaScriptHighlightRules; - - this.$outdent = new MatchingBraceOutdent(); - this.$behaviour = new CstyleBehaviour(); - this.foldingRules = new CStyleFoldMode(); -}; -oop.inherits(Mode, TextMode); - -(function() { - - this.lineCommentStart = "//"; - this.blockComment = {start: "/*", end: "*/"}; - - this.getNextLineIndent = function(state, line, tab) { - var indent = this.$getIndent(line); - - var tokenizedLine = this.getTokenizer().getLineTokens(line, state); - var tokens = tokenizedLine.tokens; - var endState = tokenizedLine.state; - - if (tokens.length && tokens[tokens.length-1].type == "comment") { - return indent; - } - - if (state == "start" || state == "no_regex") { - var match = line.match(/^.*(?:\bcase\b.*\:|[\{\(\[])\s*$/); - if (match) { - indent += tab; - } - } else if (state == "doc-start") { - if (endState == "start" || endState == "no_regex") { - return ""; - } - var match = line.match(/^\s*(\/?)\*/); - if (match) { - if (match[1]) { - indent += " "; - } - indent += "* "; - } - } - - return indent; - }; - - this.checkOutdent = function(state, line, input) { - return this.$outdent.checkOutdent(line, input); - }; - - this.autoOutdent = function(state, doc, row) { - this.$outdent.autoOutdent(doc, row); - }; - - this.createWorker = function(session) { - var worker = new WorkerClient(["ace"], "ace/mode/javascript_worker", "JavaScriptWorker"); - worker.attachToDocument(session.getDocument()); - - worker.on("jslint", function(results) { - session.setAnnotations(results.data); - }); - - worker.on("terminate", function() { - session.clearAnnotations(); - }); - - return worker; - }; - - this.$id = "ace/mode/javascript"; -}).call(Mode.prototype); - -exports.Mode = Mode; -}); - -ace.define('ace/mode/javascript_highlight_rules', ['require', 'exports', 'module' , 'ace/lib/oop', 'ace/mode/doc_comment_highlight_rules', 'ace/mode/text_highlight_rules'], function(require, exports, module) { - - -var oop = require("../lib/oop"); -var DocCommentHighlightRules = require("./doc_comment_highlight_rules").DocCommentHighlightRules; -var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; - -var JavaScriptHighlightRules = function() { - var keywordMapper = this.createKeywordMapper({ - "variable.language": - "Array|Boolean|Date|Function|Iterator|Number|Object|RegExp|String|Proxy|" + // Constructors - "Namespace|QName|XML|XMLList|" + // E4X - "ArrayBuffer|Float32Array|Float64Array|Int16Array|Int32Array|Int8Array|" + - "Uint16Array|Uint32Array|Uint8Array|Uint8ClampedArray|" + - "Error|EvalError|InternalError|RangeError|ReferenceError|StopIteration|" + // Errors - "SyntaxError|TypeError|URIError|" + - "decodeURI|decodeURIComponent|encodeURI|encodeURIComponent|eval|isFinite|" + // Non-constructor functions - "isNaN|parseFloat|parseInt|" + - "JSON|Math|" + // Other - "this|arguments|prototype|window|document" , // Pseudo - "keyword": - "const|yield|import|get|set|" + - "break|case|catch|continue|default|delete|do|else|finally|for|function|" + - "if|in|instanceof|new|return|switch|throw|try|typeof|let|var|while|with|debugger|" + - "__parent__|__count__|escape|unescape|with|__proto__|" + - "class|enum|extends|super|export|implements|private|public|interface|package|protected|static", - "storage.type": - "const|let|var|function", - "constant.language": - "null|Infinity|NaN|undefined", - "support.function": - "alert", - "constant.language.boolean": "true|false" - }, "identifier"); - var kwBeforeRe = "case|do|else|finally|in|instanceof|return|throw|try|typeof|yield|void"; - var identifierRe = "[a-zA-Z\\$_\u00a1-\uffff][a-zA-Z\\d\\$_\u00a1-\uffff]*\\b"; - - var escapedRe = "\\\\(?:x[0-9a-fA-F]{2}|" + // hex - "u[0-9a-fA-F]{4}|" + // unicode - "[0-2][0-7]{0,2}|" + // oct - "3[0-6][0-7]?|" + // oct - "37[0-7]?|" + // oct - "[4-7][0-7]?|" + //oct - ".)"; - - this.$rules = { - "no_regex" : [ - { - token : "comment", - regex : "\\/\\/", - next : "line_comment" - }, - DocCommentHighlightRules.getStartRule("doc-start"), - { - token : "comment", // multi line comment - regex : /\/\*/, - next : "comment" - }, { - token : "string", - regex : "'(?=.)", - next : "qstring" - }, { - token : "string", - regex : '"(?=.)', - next : "qqstring" - }, { - token : "constant.numeric", // hex - regex : /0[xX][0-9a-fA-F]+\b/ - }, { - token : "constant.numeric", // float - regex : /[+-]?\d+(?:(?:\.\d*)?(?:[eE][+-]?\d+)?)?\b/ - }, { - token : [ - "storage.type", "punctuation.operator", "support.function", - "punctuation.operator", "entity.name.function", "text","keyword.operator" - ], - regex : "(" + identifierRe + ")(\\.)(prototype)(\\.)(" + identifierRe +")(\\s*)(=)", - next: "function_arguments" - }, { - token : [ - "storage.type", "punctuation.operator", "entity.name.function", "text", - "keyword.operator", "text", "storage.type", "text", "paren.lparen" - ], - regex : "(" + identifierRe + ")(\\.)(" + identifierRe +")(\\s*)(=)(\\s*)(function)(\\s*)(\\()", - next: "function_arguments" - }, { - token : [ - "entity.name.function", "text", "keyword.operator", "text", "storage.type", - "text", "paren.lparen" - ], - regex : "(" + identifierRe +")(\\s*)(=)(\\s*)(function)(\\s*)(\\()", - next: "function_arguments" - }, { - token : [ - "storage.type", "punctuation.operator", "entity.name.function", "text", - "keyword.operator", "text", - "storage.type", "text", "entity.name.function", "text", "paren.lparen" - ], - regex : "(" + identifierRe + ")(\\.)(" + identifierRe +")(\\s*)(=)(\\s*)(function)(\\s+)(\\w+)(\\s*)(\\()", - next: "function_arguments" - }, { - token : [ - "storage.type", "text", "entity.name.function", "text", "paren.lparen" - ], - regex : "(function)(\\s+)(" + identifierRe + ")(\\s*)(\\()", - next: "function_arguments" - }, { - token : [ - "entity.name.function", "text", "punctuation.operator", - "text", "storage.type", "text", "paren.lparen" - ], - regex : "(" + identifierRe + ")(\\s*)(:)(\\s*)(function)(\\s*)(\\()", - next: "function_arguments" - }, { - token : [ - "text", "text", "storage.type", "text", "paren.lparen" - ], - regex : "(:)(\\s*)(function)(\\s*)(\\()", - next: "function_arguments" - }, { - token : "keyword", - regex : "(?:" + kwBeforeRe + ")\\b", - next : "start" - }, { - token : ["punctuation.operator", "support.function"], - regex : /(\.)(s(?:h(?:ift|ow(?:Mod(?:elessDialog|alDialog)|Help))|croll(?:X|By(?:Pages|Lines)?|Y|To)?|t(?:op|rike)|i(?:n|zeToContent|debar|gnText)|ort|u(?:p|b(?:str(?:ing)?)?)|pli(?:ce|t)|e(?:nd|t(?:Re(?:sizable|questHeader)|M(?:i(?:nutes|lliseconds)|onth)|Seconds|Ho(?:tKeys|urs)|Year|Cursor|Time(?:out)?|Interval|ZOptions|Date|UTC(?:M(?:i(?:nutes|lliseconds)|onth)|Seconds|Hours|Date|FullYear)|FullYear|Active)|arch)|qrt|lice|avePreferences|mall)|h(?:ome|andleEvent)|navigate|c(?:har(?:CodeAt|At)|o(?:s|n(?:cat|textual|firm)|mpile)|eil|lear(?:Timeout|Interval)?|a(?:ptureEvents|ll)|reate(?:StyleSheet|Popup|EventObject))|t(?:o(?:GMTString|S(?:tring|ource)|U(?:TCString|pperCase)|Lo(?:caleString|werCase))|est|a(?:n|int(?:Enabled)?))|i(?:s(?:NaN|Finite)|ndexOf|talics)|d(?:isableExternalCapture|ump|etachEvent)|u(?:n(?:shift|taint|escape|watch)|pdateCommands)|j(?:oin|avaEnabled)|p(?:o(?:p|w)|ush|lugins.refresh|a(?:ddings|rse(?:Int|Float)?)|r(?:int|ompt|eference))|e(?:scape|nableExternalCapture|val|lementFromPoint|x(?:p|ec(?:Script|Command)?))|valueOf|UTC|queryCommand(?:State|Indeterm|Enabled|Value)|f(?:i(?:nd|le(?:ModifiedDate|Size|CreatedDate|UpdatedDate)|xed)|o(?:nt(?:size|color)|rward)|loor|romCharCode)|watch|l(?:ink|o(?:ad|g)|astIndexOf)|a(?:sin|nchor|cos|t(?:tachEvent|ob|an(?:2)?)|pply|lert|b(?:s|ort))|r(?:ou(?:nd|teEvents)|e(?:size(?:By|To)|calc|turnValue|place|verse|l(?:oad|ease(?:Capture|Events)))|andom)|g(?:o|et(?:ResponseHeader|M(?:i(?:nutes|lliseconds)|onth)|Se(?:conds|lection)|Hours|Year|Time(?:zoneOffset)?|Da(?:y|te)|UTC(?:M(?:i(?:nutes|lliseconds)|onth)|Seconds|Hours|Da(?:y|te)|FullYear)|FullYear|A(?:ttention|llResponseHeaders)))|m(?:in|ove(?:B(?:y|elow)|To(?:Absolute)?|Above)|ergeAttributes|a(?:tch|rgins|x))|b(?:toa|ig|o(?:ld|rderWidths)|link|ack))\b(?=\()/ - }, { - token : ["punctuation.operator", "support.function.dom"], - regex : /(\.)(s(?:ub(?:stringData|mit)|plitText|e(?:t(?:NamedItem|Attribute(?:Node)?)|lect))|has(?:ChildNodes|Feature)|namedItem|c(?:l(?:ick|o(?:se|neNode))|reate(?:C(?:omment|DATASection|aption)|T(?:Head|extNode|Foot)|DocumentFragment|ProcessingInstruction|E(?:ntityReference|lement)|Attribute))|tabIndex|i(?:nsert(?:Row|Before|Cell|Data)|tem)|open|delete(?:Row|C(?:ell|aption)|T(?:Head|Foot)|Data)|focus|write(?:ln)?|a(?:dd|ppend(?:Child|Data))|re(?:set|place(?:Child|Data)|move(?:NamedItem|Child|Attribute(?:Node)?)?)|get(?:NamedItem|Element(?:sBy(?:Name|TagName)|ById)|Attribute(?:Node)?)|blur)\b(?=\()/ - }, { - token : ["punctuation.operator", "support.constant"], - regex : /(\.)(s(?:ystemLanguage|cr(?:ipts|ollbars|een(?:X|Y|Top|Left))|t(?:yle(?:Sheets)?|atus(?:Text|bar)?)|ibling(?:Below|Above)|ource|uffixes|e(?:curity(?:Policy)?|l(?:ection|f)))|h(?:istory|ost(?:name)?|as(?:h|Focus))|y|X(?:MLDocument|SLDocument)|n(?:ext|ame(?:space(?:s|URI)|Prop))|M(?:IN_VALUE|AX_VALUE)|c(?:haracterSet|o(?:n(?:structor|trollers)|okieEnabled|lorDepth|mp(?:onents|lete))|urrent|puClass|l(?:i(?:p(?:boardData)?|entInformation)|osed|asses)|alle(?:e|r)|rypto)|t(?:o(?:olbar|p)|ext(?:Transform|Indent|Decoration|Align)|ags)|SQRT(?:1_2|2)|i(?:n(?:ner(?:Height|Width)|put)|ds|gnoreCase)|zIndex|o(?:scpu|n(?:readystatechange|Line)|uter(?:Height|Width)|p(?:sProfile|ener)|ffscreenBuffering)|NEGATIVE_INFINITY|d(?:i(?:splay|alog(?:Height|Top|Width|Left|Arguments)|rectories)|e(?:scription|fault(?:Status|Ch(?:ecked|arset)|View)))|u(?:ser(?:Profile|Language|Agent)|n(?:iqueID|defined)|pdateInterval)|_content|p(?:ixelDepth|ort|ersonalbar|kcs11|l(?:ugins|atform)|a(?:thname|dding(?:Right|Bottom|Top|Left)|rent(?:Window|Layer)?|ge(?:X(?:Offset)?|Y(?:Offset)?))|r(?:o(?:to(?:col|type)|duct(?:Sub)?|mpter)|e(?:vious|fix)))|e(?:n(?:coding|abledPlugin)|x(?:ternal|pando)|mbeds)|v(?:isibility|endor(?:Sub)?|Linkcolor)|URLUnencoded|P(?:I|OSITIVE_INFINITY)|f(?:ilename|o(?:nt(?:Size|Family|Weight)|rmName)|rame(?:s|Element)|gColor)|E|whiteSpace|l(?:i(?:stStyleType|n(?:eHeight|kColor))|o(?:ca(?:tion(?:bar)?|lName)|wsrc)|e(?:ngth|ft(?:Context)?)|a(?:st(?:M(?:odified|atch)|Index|Paren)|yer(?:s|X)|nguage))|a(?:pp(?:MinorVersion|Name|Co(?:deName|re)|Version)|vail(?:Height|Top|Width|Left)|ll|r(?:ity|guments)|Linkcolor|bove)|r(?:ight(?:Context)?|e(?:sponse(?:XML|Text)|adyState))|global|x|m(?:imeTypes|ultiline|enubar|argin(?:Right|Bottom|Top|Left))|L(?:N(?:10|2)|OG(?:10E|2E))|b(?:o(?:ttom|rder(?:Width|RightWidth|BottomWidth|Style|Color|TopWidth|LeftWidth))|ufferDepth|elow|ackground(?:Color|Image)))\b/ - }, { - token : ["storage.type", "punctuation.operator", "support.function.firebug"], - regex : /(console)(\.)(warn|info|log|error|time|timeEnd|assert)\b/ - }, { - token : keywordMapper, - regex : identifierRe - }, { - token : "keyword.operator", - regex : /--|\+\+|[!$%&*+\-~]|===|==|=|!=|!==|<=|>=|<<=|>>=|>>>=|<>|<|>|!|&&|\|\||\?\:|\*=|%=|\+=|\-=|&=|\^=/, - next : "start" - }, { - token : "punctuation.operator", - regex : /\?|\:|\,|\;|\./, - next : "start" - }, { - token : "paren.lparen", - regex : /[\[({]/, - next : "start" - }, { - token : "paren.rparen", - regex : /[\])}]/ - }, { - token : "keyword.operator", - regex : /\/=?/, - next : "start" - }, { - token: "comment", - regex: /^#!.*$/ - } - ], - "start": [ - DocCommentHighlightRules.getStartRule("doc-start"), - { - token : "comment", // multi line comment - regex : "\\/\\*", - next : "comment_regex_allowed" - }, { - token : "comment", - regex : "\\/\\/", - next : "line_comment_regex_allowed" - }, { - token: "string.regexp", - regex: "\\/", - next: "regex" - }, { - token : "text", - regex : "\\s+|^$", - next : "start" - }, { - token: "empty", - regex: "", - next: "no_regex" - } - ], - "regex": [ - { - token: "regexp.keyword.operator", - regex: "\\\\(?:u[\\da-fA-F]{4}|x[\\da-fA-F]{2}|.)" - }, { - token: "string.regexp", - regex: "/[sxngimy]*", - next: "no_regex" - }, { - token : "invalid", - regex: /\{\d+\b,?\d*\}[+*]|[+*$^?][+*]|[$^][?]|\?{3,}/ - }, { - token : "constant.language.escape", - regex: /\(\?[:=!]|\)|\{\d+\b,?\d*\}|[+*]\?|[()$^+*?.]/ - }, { - token : "constant.language.delimiter", - regex: /\|/ - }, { - token: "constant.language.escape", - regex: /\[\^?/, - next: "regex_character_class" - }, { - token: "empty", - regex: "$", - next: "no_regex" - }, { - defaultToken: "string.regexp" - } - ], - "regex_character_class": [ - { - token: "regexp.keyword.operator", - regex: "\\\\(?:u[\\da-fA-F]{4}|x[\\da-fA-F]{2}|.)" - }, { - token: "constant.language.escape", - regex: "]", - next: "regex" - }, { - token: "constant.language.escape", - regex: "-" - }, { - token: "empty", - regex: "$", - next: "no_regex" - }, { - defaultToken: "string.regexp.charachterclass" - } - ], - "function_arguments": [ - { - token: "variable.parameter", - regex: identifierRe - }, { - token: "punctuation.operator", - regex: "[, ]+" - }, { - token: "punctuation.operator", - regex: "$" - }, { - token: "empty", - regex: "", - next: "no_regex" - } - ], - "comment_regex_allowed" : [ - {token : "comment", regex : "\\*\\/", next : "start"}, - {defaultToken : "comment"} - ], - "comment" : [ - {token : "comment", regex : "\\*\\/", next : "no_regex"}, - {defaultToken : "comment"} - ], - "line_comment_regex_allowed" : [ - {token : "comment", regex : "$|^", next : "start"}, - {defaultToken : "comment"} - ], - "line_comment" : [ - {token : "comment", regex : "$|^", next : "no_regex"}, - {defaultToken : "comment"} - ], - "qqstring" : [ - { - token : "constant.language.escape", - regex : escapedRe - }, { - token : "string", - regex : "\\\\$", - next : "qqstring" - }, { - token : "string", - regex : '"|$', - next : "no_regex" - }, { - defaultToken: "string" - } - ], - "qstring" : [ - { - token : "constant.language.escape", - regex : escapedRe - }, { - token : "string", - regex : "\\\\$", - next : "qstring" - }, { - token : "string", - regex : "'|$", - next : "no_regex" - }, { - defaultToken: "string" - } - ] - }; - - this.embedRules(DocCommentHighlightRules, "doc-", - [ DocCommentHighlightRules.getEndRule("no_regex") ]); -}; - -oop.inherits(JavaScriptHighlightRules, TextHighlightRules); - -exports.JavaScriptHighlightRules = JavaScriptHighlightRules; -}); - -ace.define('ace/mode/doc_comment_highlight_rules', ['require', 'exports', 'module' , 'ace/lib/oop', 'ace/mode/text_highlight_rules'], function(require, exports, module) { - - -var oop = require("../lib/oop"); -var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; - -var DocCommentHighlightRules = function() { - - this.$rules = { - "start" : [ { - token : "comment.doc.tag", - regex : "@[\\w\\d_]+" // TODO: fix email addresses - }, { - token : "comment.doc.tag", - regex : "\\bTODO\\b" - }, { - defaultToken : "comment.doc" - }] - }; -}; - -oop.inherits(DocCommentHighlightRules, TextHighlightRules); - -DocCommentHighlightRules.getStartRule = function(start) { - return { - token : "comment.doc", // doc comment - regex : "\\/\\*(?=\\*)", - next : start - }; -}; - -DocCommentHighlightRules.getEndRule = function (start) { - return { - token : "comment.doc", // closing comment - regex : "\\*\\/", - next : start - }; -}; - - -exports.DocCommentHighlightRules = DocCommentHighlightRules; - -}); - -ace.define('ace/mode/matching_brace_outdent', ['require', 'exports', 'module' , 'ace/range'], function(require, exports, module) { - - -var Range = require("../range").Range; - -var MatchingBraceOutdent = function() {}; - -(function() { - - this.checkOutdent = function(line, input) { - if (! /^\s+$/.test(line)) - return false; - - return /^\s*\}/.test(input); - }; - - this.autoOutdent = function(doc, row) { - var line = doc.getLine(row); - var match = line.match(/^(\s*\})/); - - if (!match) return 0; - - var column = match[1].length; - var openBracePos = doc.findMatchingBracket({row: row, column: column}); - - if (!openBracePos || openBracePos.row == row) return 0; - - var indent = this.$getIndent(doc.getLine(openBracePos.row)); - doc.replace(new Range(row, 0, row, column-1), indent); - }; - - this.$getIndent = function(line) { - return line.match(/^\s*/)[0]; - }; - -}).call(MatchingBraceOutdent.prototype); - -exports.MatchingBraceOutdent = MatchingBraceOutdent; -}); - -ace.define('ace/mode/behaviour/cstyle', ['require', 'exports', 'module' , 'ace/lib/oop', 'ace/mode/behaviour', 'ace/token_iterator', 'ace/lib/lang'], function(require, exports, module) { - - -var oop = require("../../lib/oop"); -var Behaviour = require("../behaviour").Behaviour; -var TokenIterator = require("../../token_iterator").TokenIterator; -var lang = require("../../lib/lang"); - -var SAFE_INSERT_IN_TOKENS = - ["text", "paren.rparen", "punctuation.operator"]; -var SAFE_INSERT_BEFORE_TOKENS = - ["text", "paren.rparen", "punctuation.operator", "comment"]; - - -var autoInsertedBrackets = 0; -var autoInsertedRow = -1; -var autoInsertedLineEnd = ""; -var maybeInsertedBrackets = 0; -var maybeInsertedRow = -1; -var maybeInsertedLineStart = ""; -var maybeInsertedLineEnd = ""; - -var CstyleBehaviour = function () { - - CstyleBehaviour.isSaneInsertion = function(editor, session) { - var cursor = editor.getCursorPosition(); - var iterator = new TokenIterator(session, cursor.row, cursor.column); - if (!this.$matchTokenType(iterator.getCurrentToken() || "text", SAFE_INSERT_IN_TOKENS)) { - var iterator2 = new TokenIterator(session, cursor.row, cursor.column + 1); - if (!this.$matchTokenType(iterator2.getCurrentToken() || "text", SAFE_INSERT_IN_TOKENS)) - return false; - } - iterator.stepForward(); - return iterator.getCurrentTokenRow() !== cursor.row || - this.$matchTokenType(iterator.getCurrentToken() || "text", SAFE_INSERT_BEFORE_TOKENS); - }; - - CstyleBehaviour.$matchTokenType = function(token, types) { - return types.indexOf(token.type || token) > -1; - }; - - CstyleBehaviour.recordAutoInsert = function(editor, session, bracket) { - var cursor = editor.getCursorPosition(); - var line = session.doc.getLine(cursor.row); - if (!this.isAutoInsertedClosing(cursor, line, autoInsertedLineEnd[0])) - autoInsertedBrackets = 0; - autoInsertedRow = cursor.row; - autoInsertedLineEnd = bracket + line.substr(cursor.column); - autoInsertedBrackets++; - }; - - CstyleBehaviour.recordMaybeInsert = function(editor, session, bracket) { - var cursor = editor.getCursorPosition(); - var line = session.doc.getLine(cursor.row); - if (!this.isMaybeInsertedClosing(cursor, line)) - maybeInsertedBrackets = 0; - maybeInsertedRow = cursor.row; - maybeInsertedLineStart = line.substr(0, cursor.column) + bracket; - maybeInsertedLineEnd = line.substr(cursor.column); - maybeInsertedBrackets++; - }; - - CstyleBehaviour.isAutoInsertedClosing = function(cursor, line, bracket) { - return autoInsertedBrackets > 0 && - cursor.row === autoInsertedRow && - bracket === autoInsertedLineEnd[0] && - line.substr(cursor.column) === autoInsertedLineEnd; - }; - - CstyleBehaviour.isMaybeInsertedClosing = function(cursor, line) { - return maybeInsertedBrackets > 0 && - cursor.row === maybeInsertedRow && - line.substr(cursor.column) === maybeInsertedLineEnd && - line.substr(0, cursor.column) == maybeInsertedLineStart; - }; - - CstyleBehaviour.popAutoInsertedClosing = function() { - autoInsertedLineEnd = autoInsertedLineEnd.substr(1); - autoInsertedBrackets--; - }; - - CstyleBehaviour.clearMaybeInsertedClosing = function() { - maybeInsertedBrackets = 0; - maybeInsertedRow = -1; - }; - - this.add("braces", "insertion", function (state, action, editor, session, text) { - var cursor = editor.getCursorPosition(); - var line = session.doc.getLine(cursor.row); - if (text == '{') { - var selection = editor.getSelectionRange(); - var selected = session.doc.getTextRange(selection); - if (selected !== "" && selected !== "{" && editor.getWrapBehavioursEnabled()) { - return { - text: '{' + selected + '}', - selection: false - }; - } else if (CstyleBehaviour.isSaneInsertion(editor, session)) { - if (/[\]\}\)]/.test(line[cursor.column]) || editor.inMultiSelectMode) { - CstyleBehaviour.recordAutoInsert(editor, session, "}"); - return { - text: '{}', - selection: [1, 1] - }; - } else { - CstyleBehaviour.recordMaybeInsert(editor, session, "{"); - return { - text: '{', - selection: [1, 1] - }; - } - } - } else if (text == '}') { - var rightChar = line.substring(cursor.column, cursor.column + 1); - if (rightChar == '}') { - var matching = session.$findOpeningBracket('}', {column: cursor.column + 1, row: cursor.row}); - if (matching !== null && CstyleBehaviour.isAutoInsertedClosing(cursor, line, text)) { - CstyleBehaviour.popAutoInsertedClosing(); - return { - text: '', - selection: [1, 1] - }; - } - } - } else if (text == "\n" || text == "\r\n") { - var closing = ""; - if (CstyleBehaviour.isMaybeInsertedClosing(cursor, line)) { - closing = lang.stringRepeat("}", maybeInsertedBrackets); - CstyleBehaviour.clearMaybeInsertedClosing(); - } - var rightChar = line.substring(cursor.column, cursor.column + 1); - if (rightChar === '}') { - var openBracePos = session.findMatchingBracket({row: cursor.row, column: cursor.column+1}, '}'); - if (!openBracePos) - return null; - var next_indent = this.$getIndent(session.getLine(openBracePos.row)); - } else if (closing) { - var next_indent = this.$getIndent(line); - } else { - return; - } - var indent = next_indent + session.getTabString(); - - return { - text: '\n' + indent + '\n' + next_indent + closing, - selection: [1, indent.length, 1, indent.length] - }; - } else { - CstyleBehaviour.clearMaybeInsertedClosing(); - } - }); - - this.add("braces", "deletion", function (state, action, editor, session, range) { - var selected = session.doc.getTextRange(range); - if (!range.isMultiLine() && selected == '{') { - var line = session.doc.getLine(range.start.row); - var rightChar = line.substring(range.end.column, range.end.column + 1); - if (rightChar == '}') { - range.end.column++; - return range; - } else { - maybeInsertedBrackets--; - } - } - }); - - this.add("parens", "insertion", function (state, action, editor, session, text) { - if (text == '(') { - var selection = editor.getSelectionRange(); - var selected = session.doc.getTextRange(selection); - if (selected !== "" && editor.getWrapBehavioursEnabled()) { - return { - text: '(' + selected + ')', - selection: false - }; - } else if (CstyleBehaviour.isSaneInsertion(editor, session)) { - CstyleBehaviour.recordAutoInsert(editor, session, ")"); - return { - text: '()', - selection: [1, 1] - }; - } - } else if (text == ')') { - var cursor = editor.getCursorPosition(); - var line = session.doc.getLine(cursor.row); - var rightChar = line.substring(cursor.column, cursor.column + 1); - if (rightChar == ')') { - var matching = session.$findOpeningBracket(')', {column: cursor.column + 1, row: cursor.row}); - if (matching !== null && CstyleBehaviour.isAutoInsertedClosing(cursor, line, text)) { - CstyleBehaviour.popAutoInsertedClosing(); - return { - text: '', - selection: [1, 1] - }; - } - } - } - }); - - this.add("parens", "deletion", function (state, action, editor, session, range) { - var selected = session.doc.getTextRange(range); - if (!range.isMultiLine() && selected == '(') { - var line = session.doc.getLine(range.start.row); - var rightChar = line.substring(range.start.column + 1, range.start.column + 2); - if (rightChar == ')') { - range.end.column++; - return range; - } - } - }); - - this.add("brackets", "insertion", function (state, action, editor, session, text) { - if (text == '[') { - var selection = editor.getSelectionRange(); - var selected = session.doc.getTextRange(selection); - if (selected !== "" && editor.getWrapBehavioursEnabled()) { - return { - text: '[' + selected + ']', - selection: false - }; - } else if (CstyleBehaviour.isSaneInsertion(editor, session)) { - CstyleBehaviour.recordAutoInsert(editor, session, "]"); - return { - text: '[]', - selection: [1, 1] - }; - } - } else if (text == ']') { - var cursor = editor.getCursorPosition(); - var line = session.doc.getLine(cursor.row); - var rightChar = line.substring(cursor.column, cursor.column + 1); - if (rightChar == ']') { - var matching = session.$findOpeningBracket(']', {column: cursor.column + 1, row: cursor.row}); - if (matching !== null && CstyleBehaviour.isAutoInsertedClosing(cursor, line, text)) { - CstyleBehaviour.popAutoInsertedClosing(); - return { - text: '', - selection: [1, 1] - }; - } - } - } - }); - - this.add("brackets", "deletion", function (state, action, editor, session, range) { - var selected = session.doc.getTextRange(range); - if (!range.isMultiLine() && selected == '[') { - var line = session.doc.getLine(range.start.row); - var rightChar = line.substring(range.start.column + 1, range.start.column + 2); - if (rightChar == ']') { - range.end.column++; - return range; - } - } - }); - - this.add("string_dquotes", "insertion", function (state, action, editor, session, text) { - if (text == '"' || text == "'") { - var quote = text; - var selection = editor.getSelectionRange(); - var selected = session.doc.getTextRange(selection); - if (selected !== "" && selected !== "'" && selected != '"' && editor.getWrapBehavioursEnabled()) { - return { - text: quote + selected + quote, - selection: false - }; - } else { - var cursor = editor.getCursorPosition(); - var line = session.doc.getLine(cursor.row); - var leftChar = line.substring(cursor.column-1, cursor.column); - if (leftChar == '\\') { - return null; - } - var tokens = session.getTokens(selection.start.row); - var col = 0, token; - var quotepos = -1; // Track whether we're inside an open quote. - - for (var x = 0; x < tokens.length; x++) { - token = tokens[x]; - if (token.type == "string") { - quotepos = -1; - } else if (quotepos < 0) { - quotepos = token.value.indexOf(quote); - } - if ((token.value.length + col) > selection.start.column) { - break; - } - col += tokens[x].value.length; - } - if (!token || (quotepos < 0 && token.type !== "comment" && (token.type !== "string" || ((selection.start.column !== token.value.length+col-1) && token.value.lastIndexOf(quote) === token.value.length-1)))) { - if (!CstyleBehaviour.isSaneInsertion(editor, session)) - return; - return { - text: quote + quote, - selection: [1,1] - }; - } else if (token && token.type === "string") { - var rightChar = line.substring(cursor.column, cursor.column + 1); - if (rightChar == quote) { - return { - text: '', - selection: [1, 1] - }; - } - } - } - } - }); - - this.add("string_dquotes", "deletion", function (state, action, editor, session, range) { - var selected = session.doc.getTextRange(range); - if (!range.isMultiLine() && (selected == '"' || selected == "'")) { - var line = session.doc.getLine(range.start.row); - var rightChar = line.substring(range.start.column + 1, range.start.column + 2); - if (rightChar == selected) { - range.end.column++; - return range; - } - } - }); - -}; - -oop.inherits(CstyleBehaviour, Behaviour); - -exports.CstyleBehaviour = CstyleBehaviour; -}); - -ace.define('ace/mode/folding/cstyle', ['require', 'exports', 'module' , 'ace/lib/oop', 'ace/range', 'ace/mode/folding/fold_mode'], function(require, exports, module) { - - -var oop = require("../../lib/oop"); -var Range = require("../../range").Range; -var BaseFoldMode = require("./fold_mode").FoldMode; - -var FoldMode = exports.FoldMode = function(commentRegex) { - if (commentRegex) { - this.foldingStartMarker = new RegExp( - this.foldingStartMarker.source.replace(/\|[^|]*?$/, "|" + commentRegex.start) - ); - this.foldingStopMarker = new RegExp( - this.foldingStopMarker.source.replace(/\|[^|]*?$/, "|" + commentRegex.end) - ); - } -}; -oop.inherits(FoldMode, BaseFoldMode); - -(function() { - - this.foldingStartMarker = /(\{|\[)[^\}\]]*$|^\s*(\/\*)/; - this.foldingStopMarker = /^[^\[\{]*(\}|\])|^[\s\*]*(\*\/)/; - - this.getFoldWidgetRange = function(session, foldStyle, row, forceMultiline) { - var line = session.getLine(row); - var match = line.match(this.foldingStartMarker); - if (match) { - var i = match.index; - - if (match[1]) - return this.openingBracketBlock(session, match[1], row, i); - - var range = session.getCommentFoldRange(row, i + match[0].length, 1); - - if (range && !range.isMultiLine()) { - if (forceMultiline) { - range = this.getSectionRange(session, row); - } else if (foldStyle != "all") - range = null; - } - - return range; - } - - if (foldStyle === "markbegin") - return; - - var match = line.match(this.foldingStopMarker); - if (match) { - var i = match.index + match[0].length; - - if (match[1]) - return this.closingBracketBlock(session, match[1], row, i); - - return session.getCommentFoldRange(row, i, -1); - } - }; - - this.getSectionRange = function(session, row) { - var line = session.getLine(row); - var startIndent = line.search(/\S/); - var startRow = row; - var startColumn = line.length; - row = row + 1; - var endRow = row; - var maxRow = session.getLength(); - while (++row < maxRow) { - line = session.getLine(row); - var indent = line.search(/\S/); - if (indent === -1) - continue; - if (startIndent > indent) - break; - var subRange = this.getFoldWidgetRange(session, "all", row); - - if (subRange) { - if (subRange.start.row <= startRow) { - break; - } else if (subRange.isMultiLine()) { - row = subRange.end.row; - } else if (startIndent == indent) { - break; - } - } - endRow = row; - } - - return new Range(startRow, startColumn, endRow, session.getLine(endRow).length); - }; - -}).call(FoldMode.prototype); - -}); - -ace.define('ace/mode/css', ['require', 'exports', 'module' , 'ace/lib/oop', 'ace/mode/text', 'ace/tokenizer', 'ace/mode/css_highlight_rules', 'ace/mode/matching_brace_outdent', 'ace/worker/worker_client', 'ace/mode/behaviour/css', 'ace/mode/folding/cstyle'], function(require, exports, module) { - - -var oop = require("../lib/oop"); -var TextMode = require("./text").Mode; -var Tokenizer = require("../tokenizer").Tokenizer; -var CssHighlightRules = require("./css_highlight_rules").CssHighlightRules; -var MatchingBraceOutdent = require("./matching_brace_outdent").MatchingBraceOutdent; -var WorkerClient = require("../worker/worker_client").WorkerClient; -var CssBehaviour = require("./behaviour/css").CssBehaviour; -var CStyleFoldMode = require("./folding/cstyle").FoldMode; - -var Mode = function() { - this.HighlightRules = CssHighlightRules; - this.$outdent = new MatchingBraceOutdent(); - this.$behaviour = new CssBehaviour(); - this.foldingRules = new CStyleFoldMode(); -}; -oop.inherits(Mode, TextMode); - -(function() { - - this.foldingRules = "cStyle"; - this.blockComment = {start: "/*", end: "*/"}; - - this.getNextLineIndent = function(state, line, tab) { - var indent = this.$getIndent(line); - var tokens = this.getTokenizer().getLineTokens(line, state).tokens; - if (tokens.length && tokens[tokens.length-1].type == "comment") { - return indent; - } - - var match = line.match(/^.*\{\s*$/); - if (match) { - indent += tab; - } - - return indent; - }; - - this.checkOutdent = function(state, line, input) { - return this.$outdent.checkOutdent(line, input); - }; - - this.autoOutdent = function(state, doc, row) { - this.$outdent.autoOutdent(doc, row); - }; - - this.createWorker = function(session) { - var worker = new WorkerClient(["ace"], "ace/mode/css_worker", "Worker"); - worker.attachToDocument(session.getDocument()); - - worker.on("csslint", function(e) { - session.setAnnotations(e.data); - }); - - worker.on("terminate", function() { - session.clearAnnotations(); - }); - - return worker; - }; - - this.$id = "ace/mode/css"; -}).call(Mode.prototype); - -exports.Mode = Mode; - -}); - -ace.define('ace/mode/css_highlight_rules', ['require', 'exports', 'module' , 'ace/lib/oop', 'ace/lib/lang', 'ace/mode/text_highlight_rules'], function(require, exports, module) { - - -var oop = require("../lib/oop"); -var lang = require("../lib/lang"); -var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; -var supportType = exports.supportType = "animation-fill-mode|alignment-adjust|alignment-baseline|animation-delay|animation-direction|animation-duration|animation-iteration-count|animation-name|animation-play-state|animation-timing-function|animation|appearance|azimuth|backface-visibility|background-attachment|background-break|background-clip|background-color|background-image|background-origin|background-position|background-repeat|background-size|background|baseline-shift|binding|bleed|bookmark-label|bookmark-level|bookmark-state|bookmark-target|border-bottom|border-bottom-color|border-bottom-left-radius|border-bottom-right-radius|border-bottom-style|border-bottom-width|border-collapse|border-color|border-image|border-image-outset|border-image-repeat|border-image-slice|border-image-source|border-image-width|border-left|border-left-color|border-left-style|border-left-width|border-radius|border-right|border-right-color|border-right-style|border-right-width|border-spacing|border-style|border-top|border-top-color|border-top-left-radius|border-top-right-radius|border-top-style|border-top-width|border-width|border|bottom|box-align|box-decoration-break|box-direction|box-flex-group|box-flex|box-lines|box-ordinal-group|box-orient|box-pack|box-shadow|box-sizing|break-after|break-before|break-inside|caption-side|clear|clip|color-profile|color|column-count|column-fill|column-gap|column-rule|column-rule-color|column-rule-style|column-rule-width|column-span|column-width|columns|content|counter-increment|counter-reset|crop|cue-after|cue-before|cue|cursor|direction|display|dominant-baseline|drop-initial-after-adjust|drop-initial-after-align|drop-initial-before-adjust|drop-initial-before-align|drop-initial-size|drop-initial-value|elevation|empty-cells|fit|fit-position|float-offset|float|font-family|font-size|font-size-adjust|font-stretch|font-style|font-variant|font-weight|font|grid-columns|grid-rows|hanging-punctuation|height|hyphenate-after|hyphenate-before|hyphenate-character|hyphenate-lines|hyphenate-resource|hyphens|icon|image-orientation|image-rendering|image-resolution|inline-box-align|left|letter-spacing|line-height|line-stacking-ruby|line-stacking-shift|line-stacking-strategy|line-stacking|list-style-image|list-style-position|list-style-type|list-style|margin-bottom|margin-left|margin-right|margin-top|margin|mark-after|mark-before|mark|marks|marquee-direction|marquee-play-count|marquee-speed|marquee-style|max-height|max-width|min-height|min-width|move-to|nav-down|nav-index|nav-left|nav-right|nav-up|opacity|orphans|outline-color|outline-offset|outline-style|outline-width|outline|overflow-style|overflow-x|overflow-y|overflow|padding-bottom|padding-left|padding-right|padding-top|padding|page-break-after|page-break-before|page-break-inside|page-policy|page|pause-after|pause-before|pause|perspective-origin|perspective|phonemes|pitch-range|pitch|play-during|pointer-events|position|presentation-level|punctuation-trim|quotes|rendering-intent|resize|rest-after|rest-before|rest|richness|right|rotation-point|rotation|ruby-align|ruby-overhang|ruby-position|ruby-span|size|speak-header|speak-numeral|speak-punctuation|speak|speech-rate|stress|string-set|table-layout|target-name|target-new|target-position|target|text-align-last|text-align|text-decoration|text-emphasis|text-height|text-indent|text-justify|text-outline|text-shadow|text-transform|text-wrap|top|transform-origin|transform-style|transform|transition-delay|transition-duration|transition-property|transition-timing-function|transition|unicode-bidi|vertical-align|visibility|voice-balance|voice-duration|voice-family|voice-pitch-range|voice-pitch|voice-rate|voice-stress|voice-volume|volume|white-space-collapse|white-space|widows|width|word-break|word-spacing|word-wrap|z-index"; -var supportFunction = exports.supportFunction = "rgb|rgba|url|attr|counter|counters"; -var supportConstant = exports.supportConstant = "absolute|after-edge|after|all-scroll|all|alphabetic|always|antialiased|armenian|auto|avoid-column|avoid-page|avoid|balance|baseline|before-edge|before|below|bidi-override|block-line-height|block|bold|bolder|border-box|both|bottom|box|break-all|break-word|capitalize|caps-height|caption|center|central|char|circle|cjk-ideographic|clone|close-quote|col-resize|collapse|column|consider-shifts|contain|content-box|cover|crosshair|cubic-bezier|dashed|decimal-leading-zero|decimal|default|disabled|disc|disregard-shifts|distribute-all-lines|distribute-letter|distribute-space|distribute|dotted|double|e-resize|ease-in|ease-in-out|ease-out|ease|ellipsis|end|exclude-ruby|fill|fixed|georgian|glyphs|grid-height|groove|hand|hanging|hebrew|help|hidden|hiragana-iroha|hiragana|horizontal|icon|ideograph-alpha|ideograph-numeric|ideograph-parenthesis|ideograph-space|ideographic|inactive|include-ruby|inherit|initial|inline-block|inline-box|inline-line-height|inline-table|inline|inset|inside|inter-ideograph|inter-word|invert|italic|justify|katakana-iroha|katakana|keep-all|last|left|lighter|line-edge|line-through|line|linear|list-item|local|loose|lower-alpha|lower-greek|lower-latin|lower-roman|lowercase|lr-tb|ltr|mathematical|max-height|max-size|medium|menu|message-box|middle|move|n-resize|ne-resize|newspaper|no-change|no-close-quote|no-drop|no-open-quote|no-repeat|none|normal|not-allowed|nowrap|nw-resize|oblique|open-quote|outset|outside|overline|padding-box|page|pointer|pre-line|pre-wrap|pre|preserve-3d|progress|relative|repeat-x|repeat-y|repeat|replaced|reset-size|ridge|right|round|row-resize|rtl|s-resize|scroll|se-resize|separate|slice|small-caps|small-caption|solid|space|square|start|static|status-bar|step-end|step-start|steps|stretch|strict|sub|super|sw-resize|table-caption|table-cell|table-column-group|table-column|table-footer-group|table-header-group|table-row-group|table-row|table|tb-rl|text-after-edge|text-before-edge|text-bottom|text-size|text-top|text|thick|thin|transparent|underline|upper-alpha|upper-latin|upper-roman|uppercase|use-script|vertical-ideographic|vertical-text|visible|w-resize|wait|whitespace|z-index|zero"; -var supportConstantColor = exports.supportConstantColor = "aqua|black|blue|fuchsia|gray|green|lime|maroon|navy|olive|orange|purple|red|silver|teal|white|yellow"; -var supportConstantFonts = exports.supportConstantFonts = "arial|century|comic|courier|garamond|georgia|helvetica|impact|lucida|symbol|system|tahoma|times|trebuchet|utopia|verdana|webdings|sans-serif|serif|monospace"; - -var numRe = exports.numRe = "\\-?(?:(?:[0-9]+)|(?:[0-9]*\\.[0-9]+))"; -var pseudoElements = exports.pseudoElements = "(\\:+)\\b(after|before|first-letter|first-line|moz-selection|selection)\\b"; -var pseudoClasses = exports.pseudoClasses = "(:)\\b(active|checked|disabled|empty|enabled|first-child|first-of-type|focus|hover|indeterminate|invalid|last-child|last-of-type|link|not|nth-child|nth-last-child|nth-last-of-type|nth-of-type|only-child|only-of-type|required|root|target|valid|visited)\\b"; - -var CssHighlightRules = function() { - - var keywordMapper = this.createKeywordMapper({ - "support.function": supportFunction, - "support.constant": supportConstant, - "support.type": supportType, - "support.constant.color": supportConstantColor, - "support.constant.fonts": supportConstantFonts - }, "text", true); - - this.$rules = { - "start" : [{ - token : "comment", // multi line comment - regex : "\\/\\*", - push : "comment" - }, { - token: "paren.lparen", - regex: "\\{", - push: "ruleset" - }, { - token: "string", - regex: "@.*?{", - push: "media" - }, { - token: "keyword", - regex: "#[a-z0-9-_]+" - }, { - token: "variable", - regex: "\\.[a-z0-9-_]+" - }, { - token: "string", - regex: ":[a-z0-9-_]+" - }, { - token: "constant", - regex: "[a-z0-9-_]+" - }, { - caseInsensitive: true - }], - - "media" : [{ - token : "comment", // multi line comment - regex : "\\/\\*", - push : "comment" - }, { - token: "paren.lparen", - regex: "\\{", - push: "ruleset" - }, { - token: "string", - regex: "\\}", - next: "pop" - }, { - token: "keyword", - regex: "#[a-z0-9-_]+" - }, { - token: "variable", - regex: "\\.[a-z0-9-_]+" - }, { - token: "string", - regex: ":[a-z0-9-_]+" - }, { - token: "constant", - regex: "[a-z0-9-_]+" - }, { - caseInsensitive: true - }], - - "comment" : [{ - token : "comment", - regex : "\\*\\/", - next : "pop" - }, { - defaultToken : "comment" - }], - - "ruleset" : [ - { - token : "paren.rparen", - regex : "\\}", - next: "pop" - }, { - token : "comment", // multi line comment - regex : "\\/\\*", - push : "comment" - }, { - token : "string", // single line - regex : '["](?:(?:\\\\.)|(?:[^"\\\\]))*?["]' - }, { - token : "string", // single line - regex : "['](?:(?:\\\\.)|(?:[^'\\\\]))*?[']" - }, { - token : ["constant.numeric", "keyword"], - regex : "(" + numRe + ")(ch|cm|deg|em|ex|fr|gd|grad|Hz|in|kHz|mm|ms|pc|pt|px|rad|rem|s|turn|vh|vm|vw|%)" - }, { - token : "constant.numeric", - regex : numRe - }, { - token : "constant.numeric", // hex6 color - regex : "#[a-f0-9]{6}" - }, { - token : "constant.numeric", // hex3 color - regex : "#[a-f0-9]{3}" - }, { - token : ["punctuation", "entity.other.attribute-name.pseudo-element.css"], - regex : pseudoElements - }, { - token : ["punctuation", "entity.other.attribute-name.pseudo-class.css"], - regex : pseudoClasses - }, { - token : ["support.function", "string", "support.function"], - regex : "(url\\()(.*)(\\))" - }, { - token : keywordMapper, - regex : "\\-?[a-zA-Z_][a-zA-Z0-9_\\-]*" - }, { - caseInsensitive: true - }] - }; - - this.normalizeRules(); -}; - -oop.inherits(CssHighlightRules, TextHighlightRules); - -exports.CssHighlightRules = CssHighlightRules; - -}); - -ace.define('ace/mode/behaviour/css', ['require', 'exports', 'module' , 'ace/lib/oop', 'ace/mode/behaviour', 'ace/mode/behaviour/cstyle', 'ace/token_iterator'], function(require, exports, module) { - - -var oop = require("../../lib/oop"); -var Behaviour = require("../behaviour").Behaviour; -var CstyleBehaviour = require("./cstyle").CstyleBehaviour; -var TokenIterator = require("../../token_iterator").TokenIterator; - -var CssBehaviour = function () { - - this.inherit(CstyleBehaviour); - - this.add("colon", "insertion", function (state, action, editor, session, text) { - if (text === ':') { - var cursor = editor.getCursorPosition(); - var iterator = new TokenIterator(session, cursor.row, cursor.column); - var token = iterator.getCurrentToken(); - if (token && token.value.match(/\s+/)) { - token = iterator.stepBackward(); - } - if (token && token.type === 'support.type') { - var line = session.doc.getLine(cursor.row); - var rightChar = line.substring(cursor.column, cursor.column + 1); - if (rightChar === ':') { - return { - text: '', - selection: [1, 1] - } - } - if (!line.substring(cursor.column).match(/^\s*;/)) { - return { - text: ':;', - selection: [1, 1] - } - } - } - } - }); - - this.add("colon", "deletion", function (state, action, editor, session, range) { - var selected = session.doc.getTextRange(range); - if (!range.isMultiLine() && selected === ':') { - var cursor = editor.getCursorPosition(); - var iterator = new TokenIterator(session, cursor.row, cursor.column); - var token = iterator.getCurrentToken(); - if (token && token.value.match(/\s+/)) { - token = iterator.stepBackward(); - } - if (token && token.type === 'support.type') { - var line = session.doc.getLine(range.start.row); - var rightChar = line.substring(range.end.column, range.end.column + 1); - if (rightChar === ';') { - range.end.column ++; - return range; - } - } - } - }); - - this.add("semicolon", "insertion", function (state, action, editor, session, text) { - if (text === ';') { - var cursor = editor.getCursorPosition(); - var line = session.doc.getLine(cursor.row); - var rightChar = line.substring(cursor.column, cursor.column + 1); - if (rightChar === ';') { - return { - text: '', - selection: [1, 1] - } - } - } - }); - -} -oop.inherits(CssBehaviour, CstyleBehaviour); - -exports.CssBehaviour = CssBehaviour; -}); - -ace.define('ace/mode/html_highlight_rules', ['require', 'exports', 'module' , 'ace/lib/oop', 'ace/lib/lang', 'ace/mode/css_highlight_rules', 'ace/mode/javascript_highlight_rules', 'ace/mode/xml_highlight_rules'], function(require, exports, module) { - - -var oop = require("../lib/oop"); -var lang = require("../lib/lang"); -var CssHighlightRules = require("./css_highlight_rules").CssHighlightRules; -var JavaScriptHighlightRules = require("./javascript_highlight_rules").JavaScriptHighlightRules; -var XmlHighlightRules = require("./xml_highlight_rules").XmlHighlightRules; - -var tagMap = lang.createMap({ - a : 'anchor', - button : 'form', - form : 'form', - img : 'image', - input : 'form', - label : 'form', - option : 'form', - script : 'script', - select : 'form', - textarea : 'form', - style : 'style', - table : 'table', - tbody : 'table', - td : 'table', - tfoot : 'table', - th : 'table', - tr : 'table' -}); - -var HtmlHighlightRules = function() { - XmlHighlightRules.call(this); - - this.addRules({ - attributes: [{ - include : "space" - }, { - token : "entity.other.attribute-name", - regex : "[-_a-zA-Z0-9:]+" - }, { - token : "keyword.operator.separator", - regex : "=", - push : [{ - include: "space" - }, { - token : "string", - regex : "[^<>='\"`\\s]+", - next : "pop" - }, { - token : "empty", - regex : "", - next : "pop" - }] - }, { - include : "string" - }], - tag: [{ - token : function(start, tag) { - var group = tagMap[tag]; - return ["meta.tag.punctuation.begin", - "meta.tag.name" + (group ? "." + group : "")]; - }, - regex : "(<)([-_a-zA-Z0-9:]+)", - next: "start_tag_stuff" - }, { - token : function(start, tag) { - var group = tagMap[tag]; - return ["meta.tag.punctuation.begin", - "meta.tag.name" + (group ? "." + group : "")]; - }, - regex : "(", next : "start"} - ], - end_tag_stuff: [ - {include : "space"}, - {token : "meta.tag.punctuation.end", regex : ">", next : "start"} - ] - }); - - this.embedTagRules(CssHighlightRules, "css-", "style"); - this.embedTagRules(JavaScriptHighlightRules, "js-", "script"); - - if (this.constructor === HtmlHighlightRules) - this.normalizeRules(); -}; - -oop.inherits(HtmlHighlightRules, XmlHighlightRules); - -exports.HtmlHighlightRules = HtmlHighlightRules; -}); - -ace.define('ace/mode/xml_highlight_rules', ['require', 'exports', 'module' , 'ace/lib/oop', 'ace/mode/xml_util', 'ace/mode/text_highlight_rules'], function(require, exports, module) { - - -var oop = require("../lib/oop"); -var xmlUtil = require("./xml_util"); -var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; - -var XmlHighlightRules = function(normalize) { - this.$rules = { - start : [ - {token : "punctuation.string.begin", regex : "<\\!\\[CDATA\\[", next : "cdata"}, - { - token : ["punctuation.instruction.begin", "keyword.instruction"], - regex : "(<\\?)(xml)(?=[\\s])", next : "xml_declaration" - }, - { - token : ["punctuation.instruction.begin", "keyword.instruction"], - regex : "(<\\?)([-_a-zA-Z0-9]+)", next : "instruction" - }, - {token : "comment", regex : "<\\!--", next : "comment"}, - { - token : ["punctuation.doctype.begin", "meta.tag.doctype"], - regex : "(<\\!)(DOCTYPE)(?=[\\s])", next : "doctype" - }, - {include : "tag"}, - {include : "reference"} - ], - - xml_declaration : [ - {include : "attributes"}, - {include : "instruction"} - ], - - instruction : [ - {token : "punctuation.instruction.end", regex : "\\?>", next : "start"} - ], - - doctype : [ - {include : "space"}, - {include : "string"}, - {token : "punctuation.doctype.end", regex : ">", next : "start"}, - {token : "xml-pe", regex : "[-_a-zA-Z0-9:]+"}, - {token : "punctuation.begin", regex : "\\[", push : "declarations"} - ], - - declarations : [{ - token : "text", - regex : "\\s+" - }, { - token: "punctuation.end", - regex: "]", - next: "pop" - }, { - token : ["punctuation.begin", "keyword"], - regex : "(<\\!)([-_a-zA-Z0-9]+)", - push : [{ - token : "text", - regex : "\\s+" - }, - { - token : "punctuation.end", - regex : ">", - next : "pop" - }, - {include : "string"}] - }], - - cdata : [ - {token : "string.end", regex : "\\]\\]>", next : "start"}, - {token : "text", regex : "\\s+"}, - {token : "text", regex : "(?:[^\\]]|\\](?!\\]>))+"} - ], - - comment : [ - {token : "comment", regex : "-->", next : "start"}, - {defaultToken : "comment"} - ], - - tag : [{ - token : ["meta.tag.punctuation.begin", "meta.tag.name"], - regex : "(<)((?:[-_a-zA-Z0-9]+:)?[-_a-zA-Z0-9]+)", - next: [ - {include : "attributes"}, - {token : "meta.tag.punctuation.end", regex : "/?>", next : "start"} - ] - }, { - token : ["meta.tag.punctuation.begin", "meta.tag.name"], - regex : "(", next : "start"} - ] - }], - - space : [ - {token : "text", regex : "\\s+"} - ], - - reference : [{ - token : "constant.language.escape", - regex : "(?:&#[0-9]+;)|(?:&#x[0-9a-fA-F]+;)|(?:&[a-zA-Z0-9_:\\.-]+;)" - }, { - token : "text", regex : "&" - }], - - string: [{ - token : "string", - regex : "'", - push : "qstring_inner" - }, { - token : "string", - regex : '"', - push : "qqstring_inner" - }], - - qstring_inner: [ - {token : "string", regex: "'", next: "pop"}, - {include : "reference"}, - {defaultToken : "string"} - ], - - qqstring_inner: [ - {token : "string", regex: '"', next: "pop"}, - {include : "reference"}, - {defaultToken : "string"} - ], - - attributes: [{ - token : "entity.other.attribute-name", - regex : "(?:[-_a-zA-Z0-9]+:)?[-_a-zA-Z0-9]+" - }, { - token : "keyword.operator.separator", - regex : "=" - }, { - include : "space" - }, { - include : "string" - }] - }; - - if (this.constructor === XmlHighlightRules) - this.normalizeRules(); -}; - - -(function() { - - this.embedTagRules = function(HighlightRules, prefix, tag){ - this.$rules.tag.unshift({ - token : ["meta.tag.punctuation.begin", "meta.tag.name." + tag], - regex : "(<)(" + tag + ")", - next: [ - {include : "space"}, - {include : "attributes"}, - {token : "meta.tag.punctuation.end", regex : "/?>", next : prefix + "start"} - ] - }); - - this.$rules[tag + "-end"] = [ - {include : "space"}, - {token : "meta.tag.punctuation.end", regex : ">", next: "start", - onMatch : function(value, currentState, stack) { - stack.splice(0); - return this.token; - }} - ] - - this.embedRules(HighlightRules, prefix, [{ - token: ["meta.tag.punctuation.begin", "meta.tag.name." + tag], - regex : "(" - }]); - }; - -}).call(TextHighlightRules.prototype); - -oop.inherits(XmlHighlightRules, TextHighlightRules); - -exports.XmlHighlightRules = XmlHighlightRules; -}); - -ace.define('ace/mode/xml_util', ['require', 'exports', 'module' ], function(require, exports, module) { - - -function string(state) { - return [{ - token : "string", - regex : '"', - next : state + "_qqstring" - }, { - token : "string", - regex : "'", - next : state + "_qstring" - }]; -} - -function multiLineString(quote, state) { - return [ - {token : "string", regex : quote, next : state}, - { - token : "constant.language.escape", - regex : "(?:&#[0-9]+;)|(?:&#x[0-9a-fA-F]+;)|(?:&[a-zA-Z0-9_:\\.-]+;)" - }, - {defaultToken : "string"} - ]; -} - -exports.tag = function(states, name, nextState, tagMap) { - states[name] = [{ - token : "text", - regex : "\\s+" - }, { - - token : !tagMap ? "meta.tag.tag-name" : function(value) { - if (tagMap[value]) - return "meta.tag.tag-name." + tagMap[value]; - else - return "meta.tag.tag-name"; - }, - regex : "[-_a-zA-Z0-9:]+", - next : name + "_embed_attribute_list" - }, { - token: "empty", - regex: "", - next : name + "_embed_attribute_list" - }]; - - states[name + "_qstring"] = multiLineString("'", name + "_embed_attribute_list"); - states[name + "_qqstring"] = multiLineString("\"", name + "_embed_attribute_list"); - - states[name + "_embed_attribute_list"] = [{ - token : "meta.tag.r", - regex : "/?>", - next : nextState - }, { - token : "keyword.operator", - regex : "=" - }, { - token : "entity.other.attribute-name", - regex : "[-_a-zA-Z0-9:]+" - }, { - token : "constant.numeric", // float - regex : "[+-]?\\d+(?:(?:\\.\\d*)?(?:[eE][+-]?\\d+)?)?\\b" - }, { - token : "text", - regex : "\\s+" - }].concat(string(name)); -}; - -}); - -ace.define('ace/mode/behaviour/html', ['require', 'exports', 'module' , 'ace/lib/oop', 'ace/mode/behaviour/xml', 'ace/mode/behaviour/cstyle', 'ace/token_iterator'], function(require, exports, module) { - - -var oop = require("../../lib/oop"); -var XmlBehaviour = require("../behaviour/xml").XmlBehaviour; -var CstyleBehaviour = require("./cstyle").CstyleBehaviour; -var TokenIterator = require("../../token_iterator").TokenIterator; -var voidElements = ['area', 'base', 'br', 'col', 'command', 'embed', 'hr', 'img', 'input', 'keygen', 'link', 'meta', 'param', 'source', 'track', 'wbr']; - -function hasType(token, type) { - var tokenTypes = token.type.split('.'); - return type.split('.').every(function(type){ - return (tokenTypes.indexOf(type) !== -1); - }); - return hasType; -} - -var HtmlBehaviour = function () { - - this.inherit(XmlBehaviour); // Get xml behaviour - - this.add("autoclosing", "insertion", function (state, action, editor, session, text) { - if (text == '>') { - var position = editor.getCursorPosition(); - var iterator = new TokenIterator(session, position.row, position.column); - var token = iterator.getCurrentToken(); - - if (token && hasType(token, 'string') && iterator.getCurrentTokenColumn() + token.value.length > position.column) - return; - var atCursor = false; - if (!token || !hasType(token, 'meta.tag') && !(hasType(token, 'text') && token.value.match('/'))){ - do { - token = iterator.stepBackward(); - } while (token && (hasType(token, 'string') || hasType(token, 'keyword.operator') || hasType(token, 'entity.attribute-name') || hasType(token, 'text'))); - } else { - atCursor = true; - } - if (!token || !hasType(token, 'meta.tag.name') || iterator.stepBackward().value.match('/')) { - return; - } - var element = token.value; - if (atCursor){ - var element = element.substring(0, position.column - token.start); - } - if (voidElements.indexOf(element) !== -1){ - return; - } - return { - text: '>' + '', - selection: [1, 1] - } - } - }); -} -oop.inherits(HtmlBehaviour, XmlBehaviour); - -exports.HtmlBehaviour = HtmlBehaviour; -}); - -ace.define('ace/mode/behaviour/xml', ['require', 'exports', 'module' , 'ace/lib/oop', 'ace/mode/behaviour', 'ace/mode/behaviour/cstyle', 'ace/token_iterator'], function(require, exports, module) { - - -var oop = require("../../lib/oop"); -var Behaviour = require("../behaviour").Behaviour; -var CstyleBehaviour = require("./cstyle").CstyleBehaviour; -var TokenIterator = require("../../token_iterator").TokenIterator; - -function hasType(token, type) { - var tokenTypes = token.type.split('.'); - return type.split('.').every(function(type){ - return (tokenTypes.indexOf(type) !== -1); - }); - return hasType; -} - -var XmlBehaviour = function () { - - this.inherit(CstyleBehaviour, ["string_dquotes"]); // Get string behaviour - - this.add("autoclosing", "insertion", function (state, action, editor, session, text) { - if (text == '>') { - var position = editor.getCursorPosition(); - var iterator = new TokenIterator(session, position.row, position.column); - var token = iterator.getCurrentToken(); - - if (token && hasType(token, 'string') && iterator.getCurrentTokenColumn() + token.value.length > position.column) - return; - var atCursor = false; - if (!token || !hasType(token, 'meta.tag') && !(hasType(token, 'text') && token.value.match('/'))){ - do { - token = iterator.stepBackward(); - } while (token && (hasType(token, 'string') || hasType(token, 'keyword.operator') || hasType(token, 'entity.attribute-name') || hasType(token, 'text'))); - } else { - atCursor = true; - } - if (!token || !hasType(token, 'meta.tag.name') || iterator.stepBackward().value.match('/')) { - return; - } - var tag = token.value; - if (atCursor){ - var tag = tag.substring(0, position.column - token.start); - } - - return { - text: '>' + '', - selection: [1, 1] - } - } - }); - - this.add('autoindent', 'insertion', function (state, action, editor, session, text) { - if (text == "\n") { - var cursor = editor.getCursorPosition(); - var line = session.getLine(cursor.row); - var rightChars = line.substring(cursor.column, cursor.column + 2); - if (rightChars == '?)/; - this._parseTag = function(tag) { - - var match = tag.match(this.tagRe); - var column = 0; - - return { - value: tag, - match: match ? match[2] : "", - closing: match ? !!match[3] : false, - selfClosing: match ? !!match[5] || match[2] == "/>" : false, - tagName: match ? match[4] : "", - column: match[1] ? column + match[1].length : column - }; - }; - this._readTagForward = function(iterator) { - var token = iterator.getCurrentToken(); - if (!token) - return null; - - var value = ""; - var start; - - do { - if (token.type.lastIndexOf("meta.tag", 0) === 0) { - if (!start) { - var start = { - row: iterator.getCurrentTokenRow(), - column: iterator.getCurrentTokenColumn() - }; - } - value += token.value; - if (value.indexOf(">") !== -1) { - var tag = this._parseTag(value); - tag.start = start; - tag.end = { - row: iterator.getCurrentTokenRow(), - column: iterator.getCurrentTokenColumn() + token.value.length - }; - iterator.stepForward(); - return tag; - } - } - } while(token = iterator.stepForward()); - - return null; - }; - - this._readTagBackward = function(iterator) { - var token = iterator.getCurrentToken(); - if (!token) - return null; - - var value = ""; - var end; - - do { - if (token.type.lastIndexOf("meta.tag", 0) === 0) { - if (!end) { - end = { - row: iterator.getCurrentTokenRow(), - column: iterator.getCurrentTokenColumn() + token.value.length - }; - } - value = token.value + value; - if (value.indexOf("<") !== -1) { - var tag = this._parseTag(value); - tag.end = end; - tag.start = { - row: iterator.getCurrentTokenRow(), - column: iterator.getCurrentTokenColumn() - }; - iterator.stepBackward(); - return tag; - } - } - } while(token = iterator.stepBackward()); - - return null; - }; - - this._pop = function(stack, tag) { - while (stack.length) { - - var top = stack[stack.length-1]; - if (!tag || top.tagName == tag.tagName) { - return stack.pop(); - } - else if (this.voidElements[tag.tagName]) { - return; - } - else if (this.voidElements[top.tagName]) { - stack.pop(); - continue; - } else { - return null; - } - } - }; - - this.getFoldWidgetRange = function(session, foldStyle, row) { - var firstTag = this._getFirstTagInLine(session, row); - - if (!firstTag.match) - return null; - - var isBackward = firstTag.closing || firstTag.selfClosing; - var stack = []; - var tag; - - if (!isBackward) { - var iterator = new TokenIterator(session, row, firstTag.column); - var start = { - row: row, - column: firstTag.column + firstTag.tagName.length + 2 - }; - while (tag = this._readTagForward(iterator)) { - if (tag.selfClosing) { - if (!stack.length) { - tag.start.column += tag.tagName.length + 2; - tag.end.column -= 2; - return Range.fromPoints(tag.start, tag.end); - } else - continue; - } - - if (tag.closing) { - this._pop(stack, tag); - if (stack.length == 0) - return Range.fromPoints(start, tag.start); - } - else { - stack.push(tag) - } - } - } - else { - var iterator = new TokenIterator(session, row, firstTag.column + firstTag.match.length); - var end = { - row: row, - column: firstTag.column - }; - - while (tag = this._readTagBackward(iterator)) { - if (tag.selfClosing) { - if (!stack.length) { - tag.start.column += tag.tagName.length + 2; - tag.end.column -= 2; - return Range.fromPoints(tag.start, tag.end); - } else - continue; - } - - if (!tag.closing) { - this._pop(stack, tag); - if (stack.length == 0) { - tag.start.column += tag.tagName.length + 2; - return Range.fromPoints(tag.start, end); - } - } - else { - stack.push(tag) - } - } - } - - }; - -}).call(FoldMode.prototype); - -}); - -ace.define('ace/mode/html_completions', ['require', 'exports', 'module' , 'ace/token_iterator'], function(require, exports, module) { - - -var TokenIterator = require("../token_iterator").TokenIterator; - -var commonAttributes = [ - "accesskey", - "class", - "contenteditable", - "contextmenu", - "dir", - "draggable", - "dropzone", - "hidden", - "id", - "lang", - "spellcheck", - "style", - "tabindex", - "title", - "translate" -]; - -var eventAttributes = [ - "onabort", - "onblur", - "oncancel", - "oncanplay", - "oncanplaythrough", - "onchange", - "onclick", - "onclose", - "oncontextmenu", - "oncuechange", - "ondblclick", - "ondrag", - "ondragend", - "ondragenter", - "ondragleave", - "ondragover", - "ondragstart", - "ondrop", - "ondurationchange", - "onemptied", - "onended", - "onerror", - "onfocus", - "oninput", - "oninvalid", - "onkeydown", - "onkeypress", - "onkeyup", - "onload", - "onloadeddata", - "onloadedmetadata", - "onloadstart", - "onmousedown", - "onmousemove", - "onmouseout", - "onmouseover", - "onmouseup", - "onmousewheel", - "onpause", - "onplay", - "onplaying", - "onprogress", - "onratechange", - "onreset", - "onscroll", - "onseeked", - "onseeking", - "onselect", - "onshow", - "onstalled", - "onsubmit", - "onsuspend", - "ontimeupdate", - "onvolumechange", - "onwaiting" -]; - -var globalAttributes = commonAttributes.concat(eventAttributes); - -var attributeMap = { - "html": ["manifest"], - "head": [], - "title": [], - "base": ["href", "target"], - "link": ["href", "hreflang", "rel", "media", "type", "sizes"], - "meta": ["http-equiv", "name", "content", "charset"], - "style": ["type", "media", "scoped"], - "script": ["charset", "type", "src", "defer", "async"], - "noscript": ["href"], - "body": ["onafterprint", "onbeforeprint", "onbeforeunload", "onhashchange", "onmessage", "onoffline", "onpopstate", "onredo", "onresize", "onstorage", "onundo", "onunload"], - "section": [], - "nav": [], - "article": ["pubdate"], - "aside": [], - "h1": [], - "h2": [], - "h3": [], - "h4": [], - "h5": [], - "h6": [], - "header": [], - "footer": [], - "address": [], - "main": [], - "p": [], - "hr": [], - "pre": [], - "blockquote": ["cite"], - "ol": ["start", "reversed"], - "ul": [], - "li": ["value"], - "dl": [], - "dt": [], - "dd": [], - "figure": [], - "figcaption": [], - "div": [], - "a": ["href", "target", "ping", "rel", "media", "hreflang", "type"], - "em": [], - "strong": [], - "small": [], - "s": [], - "cite": [], - "q": ["cite"], - "dfn": [], - "abbr": [], - "data": [], - "time": ["datetime"], - "code": [], - "var": [], - "samp": [], - "kbd": [], - "sub": [], - "sup": [], - "i": [], - "b": [], - "u": [], - "mark": [], - "ruby": [], - "rt": [], - "rp": [], - "bdi": [], - "bdo": [], - "span": [], - "br": [], - "wbr": [], - "ins": ["cite", "datetime"], - "del": ["cite", "datetime"], - "img": ["alt", "src", "height", "width", "usemap", "ismap"], - "iframe": ["name", "src", "height", "width", "sandbox", "seamless"], - "embed": ["src", "height", "width", "type"], - "object": ["param", "data", "type", "height" , "width", "usemap", "name", "form", "classid"], - "param": ["name", "value"], - "video": ["src", "autobuffer", "autoplay", "loop", "controls", "width", "height", "poster"], - "audio": ["src", "autobuffer", "autoplay", "loop", "controls"], - "source": ["src", "type", "media"], - "track": ["kind", "src", "srclang", "label", "default"], - "canvas": ["width", "height"], - "map": ["name"], - "area": ["shape", "coords", "href", "hreflang", "alt", "target", "media", "rel", "ping", "type"], - "svg": [], - "math": [], - "table": ["summary"], - "caption": [], - "colgroup": ["span"], - "col": ["span"], - "tbody": [], - "thead": [], - "tfoot": [], - "tr": [], - "td": ["headers", "rowspan", "colspan"], - "th": ["headers", "rowspan", "colspan", "scope"], - "form": ["accept-charset", "action", "autocomplete", "enctype", "method", "name", "novalidate", "target"], - "fieldset": ["disabled", "form", "name"], - "legend": [], - "label": ["form", "for"], - "input": ["type", "accept", "alt", "autocomplete", "checked", "disabled", "form", "formaction", "formenctype", "formmethod", "formnovalidate", "formtarget", "height", "list", "max", "maxlength", "min", "multiple", "pattern", "placeholder", "readonly", "required", "size", "src", "step", "width", "files", "value"], - "button": ["autofocus", "disabled", "form", "formaction", "formenctype", "formmethod", "formnovalidate", "formtarget", "name", "value", "type"], - "select": ["autofocus", "disabled", "form", "multiple", "name", "size"], - "datalist": [], - "optgroup": ["disabled", "label"], - "option": ["disabled", "selected", "label", "value"], - "textarea": ["autofocus", "disabled", "form", "maxlength", "name", "placeholder", "readonly", "required", "rows", "cols", "wrap"], - "keygen": ["autofocus", "challenge", "disabled", "form", "keytype", "name"], - "output": ["for", "form", "name"], - "progress": ["value", "max"], - "meter": ["value", "min", "max", "low", "high", "optimum"], - "details": ["open"], - "summary": [], - "command": ["type", "label", "icon", "disabled", "checked", "radiogroup", "command"], - "menu": ["type", "label"], - "dialog": ["open"] -}; - -var allElements = Object.keys(attributeMap); - -function hasType(token, type) { - var tokenTypes = token.type.split('.'); - return type.split('.').every(function(type){ - return (tokenTypes.indexOf(type) !== -1); - }); -} - -function findTagName(session, pos) { - var iterator = new TokenIterator(session, pos.row, pos.column); - var token = iterator.getCurrentToken(); - if (!token || !hasType(token, 'tag') && !(hasType(token, 'text') && token.value.match('/'))){ - do { - token = iterator.stepBackward(); - } while (token && (hasType(token, 'string') || hasType(token, 'operator') || hasType(token, 'attribute-name') || hasType(token, 'text'))); - } - if (token && hasType(token, 'tag-name') && !iterator.stepBackward().value.match('/')) - return token.value; -} - -var HtmlCompletions = function() { - -}; - -(function() { - - this.getCompletions = function(state, session, pos, prefix) { - var token = session.getTokenAt(pos.row, pos.column); - - if (!token) - return []; - if (hasType(token, "tag-name") || (token.value == '<' && hasType(token, "text"))) - return this.getTagCompletions(state, session, pos, prefix); - if (hasType(token, 'text') || hasType(token, 'attribute-name')) - return this.getAttributeCompetions(state, session, pos, prefix); - - return []; - }; - - this.getTagCompletions = function(state, session, pos, prefix) { - var elements = allElements; - if (prefix) { - elements = elements.filter(function(element){ - return element.indexOf(prefix) === 0; - }); - } - return elements.map(function(element){ - return { - value: element, - meta: "tag" - }; - }); - }; - - this.getAttributeCompetions = function(state, session, pos, prefix) { - var tagName = findTagName(session, pos); - if (!tagName) - return []; - var attributes = globalAttributes; - if (tagName in attributeMap) { - attributes = attributes.concat(attributeMap[tagName]); - } - if (prefix) { - attributes = attributes.filter(function(attribute){ - return attribute.indexOf(prefix) === 0; - }); - } - return attributes.map(function(attribute){ - return { - caption: attribute, - snippet: attribute + '="$0"', - meta: "attribute" - }; - }); - }; - -}).call(HtmlCompletions.prototype); - -exports.HtmlCompletions = HtmlCompletions; -}); -ace.define('ace/mode/curly_highlight_rules', ['require', 'exports', 'module' , 'ace/lib/oop', 'ace/mode/html_highlight_rules'], function(require, exports, module) { - - -var oop = require("../lib/oop"); -var HtmlHighlightRules = require("./html_highlight_rules").HtmlHighlightRules; - - -var CurlyHighlightRules = function() { - HtmlHighlightRules.call(this); - - this.$rules["start"].unshift({ - token: "variable", - regex: "{{", - push: "curly-start" - }); - - this.$rules["curly-start"] = [{ - token: "variable", - regex: "}}", - next: "pop" - }]; - - this.normalizeRules(); -}; - -oop.inherits(CurlyHighlightRules, HtmlHighlightRules); - -exports.CurlyHighlightRules = CurlyHighlightRules; - -}); diff --git a/IDE/jsrealb-ide/ace-src-noconflict/mode-d.js b/IDE/jsrealb-ide/ace-src-noconflict/mode-d.js deleted file mode 100644 index 3b0c97ec..00000000 --- a/IDE/jsrealb-ide/ace-src-noconflict/mode-d.js +++ /dev/null @@ -1,492 +0,0 @@ -/* ***** BEGIN LICENSE BLOCK ***** - * Distributed under the BSD license: - * - * Copyright (c) 2012, Ajax.org B.V. - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are met: - * * Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * * Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * * Neither the name of Ajax.org B.V. nor the - * names of its contributors may be used to endorse or promote products - * derived from this software without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND - * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED - * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE - * DISCLAIMED. IN NO EVENT SHALL AJAX.ORG B.V. BE LIABLE FOR ANY - * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES - * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; - * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND - * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - * - * ***** END LICENSE BLOCK ***** */ - -ace.define('ace/mode/d', ['require', 'exports', 'module' , 'ace/lib/oop', 'ace/mode/text', 'ace/tokenizer', 'ace/mode/d_highlight_rules', 'ace/mode/folding/cstyle'], function(require, exports, module) { - - -var oop = require("../lib/oop"); -var TextMode = require("./text").Mode; -var Tokenizer = require("../tokenizer").Tokenizer; -var DHighlightRules = require("./d_highlight_rules").DHighlightRules; -var FoldMode = require("./folding/cstyle").FoldMode; - -var Mode = function() { - this.HighlightRules = DHighlightRules; - this.foldingRules = new FoldMode(); -}; -oop.inherits(Mode, TextMode); - -(function() { - this.lineCommentStart = "/\\+"; - this.blockComment = {start: "/*", end: "*/"}; - this.$id = "ace/mode/d"; -}).call(Mode.prototype); - -exports.Mode = Mode; -}); - -ace.define('ace/mode/d_highlight_rules', ['require', 'exports', 'module' , 'ace/lib/oop', 'ace/mode/doc_comment_highlight_rules', 'ace/mode/text_highlight_rules'], function(require, exports, module) { - - -var oop = require("../lib/oop"); -var DocCommentHighlightRules = require("./doc_comment_highlight_rules").DocCommentHighlightRules; -var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; - -var DHighlightRules = function() { - - var keywords = ( - "this|super|import|module|body|mixin|__traits|invariant|alias|asm|delete|"+ - "typeof|typeid|sizeof|cast|new|in|is|typedef|__vector|__parameters" - ); - - var keywordControls = ( - "break|case|continue|default|do|else|for|foreach|foreach_reverse|goto|if|" + - "return|switch|while|catch|try|throw|finally|version|assert|unittest|with" - ); - - var types = ( - "auto|bool|char|dchar|wchar|byte|ubyte|float|double|real|" + - "cfloat|creal|cdouble|cent|ifloat|ireal|idouble|" + - "int|long|short|void|uint|ulong|ushort|ucent|" + - "function|delegate|string|wstring|dstring|size_t|ptrdiff_t|hash_t|Object" - ); - - var modifiers = ( - "abstract|align|debug|deprecated|export|extern|const|final|in|inout|out|" + - "ref|immutable|lazy|nothrow|override|package|pragma|private|protected|" + - "public|pure|scope|shared|__gshared|synchronized|static|volatile" - ); - - var storages = ( - "class|struct|union|template|interface|enum|macro" - ); - - var stringEscapesSeq = { - token: "constant.language.escape", - regex: "\\\\(?:(?:x[0-9A-F]{2})|(?:[0-7]{1,3})|(?:['\"\\?0abfnrtv])|" + - "(?:u[0-9a-fA-F]{4})|(?:U[0-9a-fA-F]{8}))" - }; - - var builtinConstants = ( - "null|true|false|"+ - "__DATE__|__EOF__|__TIME__|__TIMESTAMP__|__VENDOR__|__VERSION__|"+ - "__FILE__|__MODULE__|__LINE__|__FUNCTION__|__PRETTY_FUNCTION__" - ); - - var operators = ( - "/|/\\=|&|&\\=|&&|\\|\\|\\=|\\|\\||\\-|\\-\\=|\\-\\-|\\+|" + - "\\+\\=|\\+\\+|\\<|\\<\\=|\\<\\<|\\<\\<\\=|\\<\\>|\\<\\>\\=|\\>|\\>\\=|\\>\\>\\=|" + - "\\>\\>\\>\\=|\\>\\>|\\>\\>\\>|\\!|\\!\\=|\\!\\<\\>|\\!\\<\\>\\=|\\!\\<|\\!\\<\\=|" + - "\\!\\>|\\!\\>\\=|\\?|\\$|\\=|\\=\\=|\\*|\\*\\=|%|%\\=|" + - "\\^|\\^\\=|\\^\\^|\\^\\^\\=|~|~\\=|\\=\\>|#" - ); - - var keywordMapper = this.$keywords = this.createKeywordMapper({ - "keyword.modifier" : modifiers, - "keyword.control" : keywordControls, - "keyword.type" : types, - "keyword": keywords, - "keyword.storage": storages, - "punctation": "\\.|\\,|;|\\.\\.|\\.\\.\\.", - "keyword.operator" : operators, - "constant.language": builtinConstants - }, "identifier"); - - var identifierRe = "[a-zA-Z_\u00a1-\uffff][a-zA-Z\\d_\u00a1-\uffff]*\\b"; - - this.$rules = { - "start" : [ - { //-------------------------------------------------------- COMMENTS - token : "comment", - regex : "\\/\\/.*$" - }, - DocCommentHighlightRules.getStartRule("doc-start"), - { - token : "comment", // multi line comment - regex : "\\/\\*", - next : "star-comment" - }, { - token: "comment.shebang", - regex: "^\s*#!.*" - }, { - token : "comment", - regex : "\\/\\+", - next: "plus-comment" - }, { //-------------------------------------------------------- STRINGS - onMatch: function(value, currentState, state) { - state.unshift(this.next, value.substr(2)); - return "string"; - }, - regex: 'q"(?:[\\[\\(\\{\\<]+)', - next: 'operator-heredoc-string' - }, { - onMatch: function(value, currentState, state) { - state.unshift(this.next, value.substr(2)); - return "string"; - }, - regex: 'q"(?:[a-zA-Z_]+)$', - next: 'identifier-heredoc-string' - }, { - token : "string", // multi line string start - regex : '[xr]?"', - next : "quote-string" - }, { - token : "string", // multi line string start - regex : '[xr]?`', - next : "backtick-string" - }, { - token : "string", // single line - regex : "[xr]?['](?:(?:\\\\.)|(?:[^'\\\\]))*?['][cdw]?" - }, { //-------------------------------------------------------- RULES - token: ["keyword", "text", "paren.lparen"], - regex: /(asm)(\s*)({)/, - next: "d-asm" - }, { - token: ["keyword", "text", "paren.lparen", "constant.language"], - regex: "(__traits)(\\s*)(\\()("+identifierRe+")" - }, { // import|module abc - token: ["keyword", "text", "variable.module"], - regex: "(import|module)(\\s+)((?:"+identifierRe+"\\.?)*)" - }, { // storage Name - token: ["keyword.storage", "text", "entity.name.type"], - regex: "("+storages+")(\\s*)("+identifierRe+")" - }, { // alias|typedef foo bar; - token: ["keyword", "text", "variable.storage", "text"], - regex: "(alias|typedef)(\\s*)("+identifierRe+")(\\s*)" - }, { //-------------------------------------------------------- OTHERS - token : "constant.numeric", // hex - regex : "0[xX][0-9a-fA-F_]+(l|ul|u|f|F|L|U|UL)?\\b" - }, { - token : "constant.numeric", // float - regex : "[+-]?\\d[\\d_]*(?:(?:\\.[\\d_]*)?(?:[eE][+-]?[\\d_]+)?)?(l|ul|u|f|F|L|U|UL)?\\b" - }, { - token: "entity.other.attribute-name", - regex: "@"+identifierRe - }, { - token : keywordMapper, - regex : "[a-zA-Z_][a-zA-Z0-9_]*\\b" - }, { - token : "keyword.operator", - regex : operators - }, { - token : "punctuation.operator", - regex : "\\?|\\:|\\,|\\;|\\.|\\:" - }, { - token : "paren.lparen", - regex : "[[({]" - }, { - token : "paren.rparen", - regex : "[\\])}]" - }, { - token : "text", - regex : "\\s+" - } - ], - "star-comment" : [ - { - token : "comment", // closing comment - regex : "\\*\\/", - next : "start" - }, { - defaultToken: 'comment' - } - ], - "plus-comment" : [ - { - token : "comment", // closing comment - regex : "\\+\\/", - next : "start" - }, { - defaultToken: 'comment' - } - ], - - "quote-string" : [ - stringEscapesSeq, - { - token : "string", - regex : '"[cdw]?', - next : "start" - }, { - defaultToken: 'string' - } - ], - - "backtick-string" : [ - stringEscapesSeq, - { - token : "string", - regex : '`[cdw]?', - next : "start" - }, { - defaultToken: 'string' - } - ], - - "operator-heredoc-string": [ - { - onMatch: function(value, currentState, state) { - value = value.substring(value.length-2, value.length-1); - var map = {'>':'<',']':'[',')':'(','}':'{'}; - if(Object.keys(map).indexOf(value) != -1) - value = map[value]; - if(value != state[1]) return "string"; - state.shift(); - state.shift(); - - return "string"; - }, - regex: '(?:[\\]\\)}>]+)"', - next: 'start' - }, { - token: 'string', - regex: '[^\\]\\)}>]+' - } - ], - - "identifier-heredoc-string": [ - { - onMatch: function(value, currentState, state) { - value = value.substring(0, value.length-1); - if(value != state[1]) return "string"; - state.shift(); - state.shift(); - - return "string"; - }, - regex: '^(?:[A-Za-z_][a-zA-Z0-9]+)"', - next: 'start' - }, { - token: 'string', - regex: '[^\\]\\)}>]+' - } - ], - - "d-asm": [ - { - token: "paren.rparen", - regex: "\\}", - next: "start" - }, { - token: 'keyword.instruction', - regex: '[a-zA-Z]+', - next: 'd-asm-instruction' - }, { - token: "text", - regex: "\\s+" - } - ], - 'd-asm-instruction': [ - { - token: 'constant.language', - regex: /AL|AH|AX|EAX|BL|BH|BX|EBX|CL|CH|CX|ECX|DL|DH|DX|EDX|BP|EBP|SP|ESP|DI|EDI|SI|ESI/i - }, { - token: 'identifier', - regex: '[a-zA-Z]+' - }, { - token: 'string', - regex: '".*"' - }, { - token: 'comment', - regex: '//.*$' - }, { - token: 'constant.numeric', - regex: '[0-9.xA-F]+' - }, { - token: 'punctuation.operator', - regex: '\\,' - }, { - token: 'punctuation.operator', - regex: ';', - next: 'd-asm' - }, { - token: 'text', - regex: '\\s+' - } - ] - }; - - this.embedRules(DocCommentHighlightRules, "doc-", - [ DocCommentHighlightRules.getEndRule("start") ]); -}; - -DHighlightRules.metaData = { - comment: 'D language', - fileTypes: [ 'd', 'di' ], - firstLineMatch: '^#!.*\\b[glr]?dmd\\b.', - foldingStartMarker: '(?x)/\\*\\*(?!\\*)|^(?![^{]*?//|[^{]*?/\\*(?!.*?\\*/.*?\\{)).*?\\{\\s*($|//|/\\*(?!.*?\\*/.*\\S))', - foldingStopMarker: '(? indent) - break; - var subRange = this.getFoldWidgetRange(session, "all", row); - - if (subRange) { - if (subRange.start.row <= startRow) { - break; - } else if (subRange.isMultiLine()) { - row = subRange.end.row; - } else if (startIndent == indent) { - break; - } - } - endRow = row; - } - - return new Range(startRow, startColumn, endRow, session.getLine(endRow).length); - }; - -}).call(FoldMode.prototype); - -}); diff --git a/IDE/jsrealb-ide/ace-src-noconflict/mode-dart.js b/IDE/jsrealb-ide/ace-src-noconflict/mode-dart.js deleted file mode 100644 index 92f57464..00000000 --- a/IDE/jsrealb-ide/ace-src-noconflict/mode-dart.js +++ /dev/null @@ -1,993 +0,0 @@ -/* ***** BEGIN LICENSE BLOCK ***** - * Distributed under the BSD license: - * - * Copyright (c) 2012, Ajax.org B.V. - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are met: - * * Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * * Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * * Neither the name of Ajax.org B.V. nor the - * names of its contributors may be used to endorse or promote products - * derived from this software without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND - * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED - * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE - * DISCLAIMED. IN NO EVENT SHALL AJAX.ORG B.V. BE LIABLE FOR ANY - * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES - * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; - * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND - * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - * - * - * Contributor(s): - * - * - * - * ***** END LICENSE BLOCK ***** */ - -ace.define('ace/mode/dart', ['require', 'exports', 'module' , 'ace/lib/oop', 'ace/mode/c_cpp', 'ace/tokenizer', 'ace/mode/dart_highlight_rules', 'ace/mode/folding/cstyle'], function(require, exports, module) { - - -var oop = require("../lib/oop"); -var CMode = require("./c_cpp").Mode; -var Tokenizer = require("../tokenizer").Tokenizer; -var DartHighlightRules = require("./dart_highlight_rules").DartHighlightRules; -var CStyleFoldMode = require("./folding/cstyle").FoldMode; - -var Mode = function() { - CMode.call(this); - this.HighlightRules = DartHighlightRules; - this.foldingRules = new CStyleFoldMode(); -}; -oop.inherits(Mode, CMode); - -(function() { - this.lineCommentStart = "//"; - this.blockComment = {start: "/*", end: "*/"}; - this.$id = "ace/mode/dart"; -}).call(Mode.prototype); - -exports.Mode = Mode; -}); - -ace.define('ace/mode/c_cpp', ['require', 'exports', 'module' , 'ace/lib/oop', 'ace/mode/text', 'ace/tokenizer', 'ace/mode/c_cpp_highlight_rules', 'ace/mode/matching_brace_outdent', 'ace/range', 'ace/mode/behaviour/cstyle', 'ace/mode/folding/cstyle'], function(require, exports, module) { - - -var oop = require("../lib/oop"); -var TextMode = require("./text").Mode; -var Tokenizer = require("../tokenizer").Tokenizer; -var c_cppHighlightRules = require("./c_cpp_highlight_rules").c_cppHighlightRules; -var MatchingBraceOutdent = require("./matching_brace_outdent").MatchingBraceOutdent; -var Range = require("../range").Range; -var CstyleBehaviour = require("./behaviour/cstyle").CstyleBehaviour; -var CStyleFoldMode = require("./folding/cstyle").FoldMode; - -var Mode = function() { - this.HighlightRules = c_cppHighlightRules; - - this.$outdent = new MatchingBraceOutdent(); - this.$behaviour = new CstyleBehaviour(); - - this.foldingRules = new CStyleFoldMode(); -}; -oop.inherits(Mode, TextMode); - -(function() { - - this.lineCommentStart = "//"; - this.blockComment = {start: "/*", end: "*/"}; - - this.getNextLineIndent = function(state, line, tab) { - var indent = this.$getIndent(line); - - var tokenizedLine = this.getTokenizer().getLineTokens(line, state); - var tokens = tokenizedLine.tokens; - var endState = tokenizedLine.state; - - if (tokens.length && tokens[tokens.length-1].type == "comment") { - return indent; - } - - if (state == "start") { - var match = line.match(/^.*[\{\(\[]\s*$/); - if (match) { - indent += tab; - } - } else if (state == "doc-start") { - if (endState == "start") { - return ""; - } - var match = line.match(/^\s*(\/?)\*/); - if (match) { - if (match[1]) { - indent += " "; - } - indent += "* "; - } - } - - return indent; - }; - - this.checkOutdent = function(state, line, input) { - return this.$outdent.checkOutdent(line, input); - }; - - this.autoOutdent = function(state, doc, row) { - this.$outdent.autoOutdent(doc, row); - }; - - this.$id = "ace/mode/c_cpp"; -}).call(Mode.prototype); - -exports.Mode = Mode; -}); -ace.define('ace/mode/c_cpp_highlight_rules', ['require', 'exports', 'module' , 'ace/lib/oop', 'ace/mode/doc_comment_highlight_rules', 'ace/mode/text_highlight_rules'], function(require, exports, module) { - - -var oop = require("../lib/oop"); -var DocCommentHighlightRules = require("./doc_comment_highlight_rules").DocCommentHighlightRules; -var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; -var cFunctions = exports.cFunctions = "\\s*\\bhypot(?:f|l)?|s(?:scanf|ystem|nprintf|ca(?:nf|lb(?:n(?:f|l)?|ln(?:f|l)?))|i(?:n(?:h(?:f|l)?|f|l)?|gn(?:al|bit))|tr(?:s(?:tr|pn)|nc(?:py|at|mp)|c(?:spn|hr|oll|py|at|mp)|to(?:imax|d|u(?:l(?:l)?|max)|k|f|l(?:d|l)?)|error|pbrk|ftime|len|rchr|xfrm)|printf|et(?:jmp|vbuf|locale|buf)|qrt(?:f|l)?|w(?:scanf|printf)|rand)|n(?:e(?:arbyint(?:f|l)?|xt(?:toward(?:f|l)?|after(?:f|l)?))|an(?:f|l)?)|c(?:s(?:in(?:h(?:f|l)?|f|l)?|qrt(?:f|l)?)|cos(?:h(?:f)?|f|l)?|imag(?:f|l)?|t(?:ime|an(?:h(?:f|l)?|f|l)?)|o(?:s(?:h(?:f|l)?|f|l)?|nj(?:f|l)?|pysign(?:f|l)?)|p(?:ow(?:f|l)?|roj(?:f|l)?)|e(?:il(?:f|l)?|xp(?:f|l)?)|l(?:o(?:ck|g(?:f|l)?)|earerr)|a(?:sin(?:h(?:f|l)?|f|l)?|cos(?:h(?:f|l)?|f|l)?|tan(?:h(?:f|l)?|f|l)?|lloc|rg(?:f|l)?|bs(?:f|l)?)|real(?:f|l)?|brt(?:f|l)?)|t(?:ime|o(?:upper|lower)|an(?:h(?:f|l)?|f|l)?|runc(?:f|l)?|gamma(?:f|l)?|mp(?:nam|file))|i(?:s(?:space|n(?:ormal|an)|cntrl|inf|digit|u(?:nordered|pper)|p(?:unct|rint)|finite|w(?:space|c(?:ntrl|type)|digit|upper|p(?:unct|rint)|lower|al(?:num|pha)|graph|xdigit|blank)|l(?:ower|ess(?:equal|greater)?)|al(?:num|pha)|gr(?:eater(?:equal)?|aph)|xdigit|blank)|logb(?:f|l)?|max(?:div|abs))|di(?:v|fftime)|_Exit|unget(?:c|wc)|p(?:ow(?:f|l)?|ut(?:s|c(?:har)?|wc(?:har)?)|error|rintf)|e(?:rf(?:c(?:f|l)?|f|l)?|x(?:it|p(?:2(?:f|l)?|f|l|m1(?:f|l)?)?))|v(?:s(?:scanf|nprintf|canf|printf|w(?:scanf|printf))|printf|f(?:scanf|printf|w(?:scanf|printf))|w(?:scanf|printf)|a_(?:start|copy|end|arg))|qsort|f(?:s(?:canf|e(?:tpos|ek))|close|tell|open|dim(?:f|l)?|p(?:classify|ut(?:s|c|w(?:s|c))|rintf)|e(?:holdexcept|set(?:e(?:nv|xceptflag)|round)|clearexcept|testexcept|of|updateenv|r(?:aiseexcept|ror)|get(?:e(?:nv|xceptflag)|round))|flush|w(?:scanf|ide|printf|rite)|loor(?:f|l)?|abs(?:f|l)?|get(?:s|c|pos|w(?:s|c))|re(?:open|e|ad|xp(?:f|l)?)|m(?:in(?:f|l)?|od(?:f|l)?|a(?:f|l|x(?:f|l)?)?))|l(?:d(?:iv|exp(?:f|l)?)|o(?:ngjmp|cal(?:time|econv)|g(?:1(?:p(?:f|l)?|0(?:f|l)?)|2(?:f|l)?|f|l|b(?:f|l)?)?)|abs|l(?:div|abs|r(?:int(?:f|l)?|ound(?:f|l)?))|r(?:int(?:f|l)?|ound(?:f|l)?)|gamma(?:f|l)?)|w(?:scanf|c(?:s(?:s(?:tr|pn)|nc(?:py|at|mp)|c(?:spn|hr|oll|py|at|mp)|to(?:imax|d|u(?:l(?:l)?|max)|k|f|l(?:d|l)?|mbs)|pbrk|ftime|len|r(?:chr|tombs)|xfrm)|to(?:b|mb)|rtomb)|printf|mem(?:set|c(?:hr|py|mp)|move))|a(?:s(?:sert|ctime|in(?:h(?:f|l)?|f|l)?)|cos(?:h(?:f|l)?|f|l)?|t(?:o(?:i|f|l(?:l)?)|exit|an(?:h(?:f|l)?|2(?:f|l)?|f|l)?)|b(?:s|ort))|g(?:et(?:s|c(?:har)?|env|wc(?:har)?)|mtime)|r(?:int(?:f|l)?|ound(?:f|l)?|e(?:name|alloc|wind|m(?:ove|quo(?:f|l)?|ainder(?:f|l)?))|a(?:nd|ise))|b(?:search|towc)|m(?:odf(?:f|l)?|em(?:set|c(?:hr|py|mp)|move)|ktime|alloc|b(?:s(?:init|towcs|rtowcs)|towc|len|r(?:towc|len)))\\b" - -var c_cppHighlightRules = function() { - - var keywordControls = ( - "break|case|continue|default|do|else|for|goto|if|_Pragma|" + - "return|switch|while|catch|operator|try|throw|using" - ); - - var storageType = ( - "asm|__asm__|auto|bool|_Bool|char|_Complex|double|enum|float|" + - "_Imaginary|int|long|short|signed|struct|typedef|union|unsigned|void|" + - "class|wchar_t|template" - ); - - var storageModifiers = ( - "const|extern|register|restrict|static|volatile|inline|private:|" + - "protected:|public:|friend|explicit|virtual|export|mutable|typename" - ); - - var keywordOperators = ( - "and|and_eq|bitand|bitor|compl|not|not_eq|or|or_eq|typeid|xor|xor_eq" + - "const_cast|dynamic_cast|reinterpret_cast|static_cast|sizeof|namespace" - ); - - var builtinConstants = ( - "NULL|true|false|TRUE|FALSE" - ); - - var keywordMapper = this.$keywords = this.createKeywordMapper({ - "keyword.control" : keywordControls, - "storage.type" : storageType, - "storage.modifier" : storageModifiers, - "keyword.operator" : keywordOperators, - "variable.language": "this", - "constant.language": builtinConstants - }, "identifier"); - - var identifierRe = "[a-zA-Z\\$_\u00a1-\uffff][a-zA-Z\d\\$_\u00a1-\uffff]*\\b"; - - this.$rules = { - "start" : [ - { - token : "comment", - regex : "\\/\\/.*$" - }, - DocCommentHighlightRules.getStartRule("doc-start"), - { - token : "comment", // multi line comment - regex : "\\/\\*", - next : "comment" - }, { - token : "string", // single line - regex : '["](?:(?:\\\\.)|(?:[^"\\\\]))*?["]' - }, { - token : "string", // multi line string start - regex : '["].*\\\\$', - next : "qqstring" - }, { - token : "string", // single line - regex : "['](?:(?:\\\\.)|(?:[^'\\\\]))*?[']" - }, { - token : "string", // multi line string start - regex : "['].*\\\\$", - next : "qstring" - }, { - token : "constant.numeric", // hex - regex : "0[xX][0-9a-fA-F]+(L|l|UL|ul|u|U|F|f|ll|LL|ull|ULL)?\\b" - }, { - token : "constant.numeric", // float - regex : "[+-]?\\d+(?:(?:\\.\\d*)?(?:[eE][+-]?\\d+)?)?(L|l|UL|ul|u|U|F|f|ll|LL|ull|ULL)?\\b" - }, { - token : "keyword", // pre-compiler directives - regex : "#\\s*(?:include|import|pragma|line|define|undef|if|ifdef|else|elif|ifndef)\\b", - next : "directive" - }, { - token : "keyword", // special case pre-compiler directive - regex : "(?:#\\s*endif)\\b" - }, { - token : "support.function.C99.c", - regex : cFunctions - }, { - token : keywordMapper, - regex : "[a-zA-Z_$][a-zA-Z0-9_$]*\\b" - }, { - token : "keyword.operator", - regex : "!|\\$|%|&|\\*|\\-\\-|\\-|\\+\\+|\\+|~|==|=|!=|<=|>=|<<=|>>=|>>>=|<>|<|>|!|&&|\\|\\||\\?\\:|\\*=|%=|\\+=|\\-=|&=|\\^=|\\b(?:in|new|delete|typeof|void)" - }, { - token : "punctuation.operator", - regex : "\\?|\\:|\\,|\\;|\\." - }, { - token : "paren.lparen", - regex : "[[({]" - }, { - token : "paren.rparen", - regex : "[\\])}]" - }, { - token : "text", - regex : "\\s+" - } - ], - "comment" : [ - { - token : "comment", // closing comment - regex : ".*?\\*\\/", - next : "start" - }, { - token : "comment", // comment spanning whole line - regex : ".+" - } - ], - "qqstring" : [ - { - token : "string", - regex : '(?:(?:\\\\.)|(?:[^"\\\\]))*?"', - next : "start" - }, { - token : "string", - regex : '.+' - } - ], - "qstring" : [ - { - token : "string", - regex : "(?:(?:\\\\.)|(?:[^'\\\\]))*?'", - next : "start" - }, { - token : "string", - regex : '.+' - } - ], - "directive" : [ - { - token : "constant.other.multiline", - regex : /\\/ - }, - { - token : "constant.other.multiline", - regex : /.*\\/ - }, - { - token : "constant.other", - regex : "\\s*<.+?>", - next : "start" - }, - { - token : "constant.other", // single line - regex : '\\s*["](?:(?:\\\\.)|(?:[^"\\\\]))*?["]', - next : "start" - }, - { - token : "constant.other", // single line - regex : "\\s*['](?:(?:\\\\.)|(?:[^'\\\\]))*?[']", - next : "start" - }, - { - token : "constant.other", - regex : /[^\\\/]+/, - next : "start" - } - ] - }; - - this.embedRules(DocCommentHighlightRules, "doc-", - [ DocCommentHighlightRules.getEndRule("start") ]); -}; - -oop.inherits(c_cppHighlightRules, TextHighlightRules); - -exports.c_cppHighlightRules = c_cppHighlightRules; -}); - -ace.define('ace/mode/doc_comment_highlight_rules', ['require', 'exports', 'module' , 'ace/lib/oop', 'ace/mode/text_highlight_rules'], function(require, exports, module) { - - -var oop = require("../lib/oop"); -var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; - -var DocCommentHighlightRules = function() { - - this.$rules = { - "start" : [ { - token : "comment.doc.tag", - regex : "@[\\w\\d_]+" // TODO: fix email addresses - }, { - token : "comment.doc.tag", - regex : "\\bTODO\\b" - }, { - defaultToken : "comment.doc" - }] - }; -}; - -oop.inherits(DocCommentHighlightRules, TextHighlightRules); - -DocCommentHighlightRules.getStartRule = function(start) { - return { - token : "comment.doc", // doc comment - regex : "\\/\\*(?=\\*)", - next : start - }; -}; - -DocCommentHighlightRules.getEndRule = function (start) { - return { - token : "comment.doc", // closing comment - regex : "\\*\\/", - next : start - }; -}; - - -exports.DocCommentHighlightRules = DocCommentHighlightRules; - -}); - -ace.define('ace/mode/matching_brace_outdent', ['require', 'exports', 'module' , 'ace/range'], function(require, exports, module) { - - -var Range = require("../range").Range; - -var MatchingBraceOutdent = function() {}; - -(function() { - - this.checkOutdent = function(line, input) { - if (! /^\s+$/.test(line)) - return false; - - return /^\s*\}/.test(input); - }; - - this.autoOutdent = function(doc, row) { - var line = doc.getLine(row); - var match = line.match(/^(\s*\})/); - - if (!match) return 0; - - var column = match[1].length; - var openBracePos = doc.findMatchingBracket({row: row, column: column}); - - if (!openBracePos || openBracePos.row == row) return 0; - - var indent = this.$getIndent(doc.getLine(openBracePos.row)); - doc.replace(new Range(row, 0, row, column-1), indent); - }; - - this.$getIndent = function(line) { - return line.match(/^\s*/)[0]; - }; - -}).call(MatchingBraceOutdent.prototype); - -exports.MatchingBraceOutdent = MatchingBraceOutdent; -}); - -ace.define('ace/mode/behaviour/cstyle', ['require', 'exports', 'module' , 'ace/lib/oop', 'ace/mode/behaviour', 'ace/token_iterator', 'ace/lib/lang'], function(require, exports, module) { - - -var oop = require("../../lib/oop"); -var Behaviour = require("../behaviour").Behaviour; -var TokenIterator = require("../../token_iterator").TokenIterator; -var lang = require("../../lib/lang"); - -var SAFE_INSERT_IN_TOKENS = - ["text", "paren.rparen", "punctuation.operator"]; -var SAFE_INSERT_BEFORE_TOKENS = - ["text", "paren.rparen", "punctuation.operator", "comment"]; - - -var autoInsertedBrackets = 0; -var autoInsertedRow = -1; -var autoInsertedLineEnd = ""; -var maybeInsertedBrackets = 0; -var maybeInsertedRow = -1; -var maybeInsertedLineStart = ""; -var maybeInsertedLineEnd = ""; - -var CstyleBehaviour = function () { - - CstyleBehaviour.isSaneInsertion = function(editor, session) { - var cursor = editor.getCursorPosition(); - var iterator = new TokenIterator(session, cursor.row, cursor.column); - if (!this.$matchTokenType(iterator.getCurrentToken() || "text", SAFE_INSERT_IN_TOKENS)) { - var iterator2 = new TokenIterator(session, cursor.row, cursor.column + 1); - if (!this.$matchTokenType(iterator2.getCurrentToken() || "text", SAFE_INSERT_IN_TOKENS)) - return false; - } - iterator.stepForward(); - return iterator.getCurrentTokenRow() !== cursor.row || - this.$matchTokenType(iterator.getCurrentToken() || "text", SAFE_INSERT_BEFORE_TOKENS); - }; - - CstyleBehaviour.$matchTokenType = function(token, types) { - return types.indexOf(token.type || token) > -1; - }; - - CstyleBehaviour.recordAutoInsert = function(editor, session, bracket) { - var cursor = editor.getCursorPosition(); - var line = session.doc.getLine(cursor.row); - if (!this.isAutoInsertedClosing(cursor, line, autoInsertedLineEnd[0])) - autoInsertedBrackets = 0; - autoInsertedRow = cursor.row; - autoInsertedLineEnd = bracket + line.substr(cursor.column); - autoInsertedBrackets++; - }; - - CstyleBehaviour.recordMaybeInsert = function(editor, session, bracket) { - var cursor = editor.getCursorPosition(); - var line = session.doc.getLine(cursor.row); - if (!this.isMaybeInsertedClosing(cursor, line)) - maybeInsertedBrackets = 0; - maybeInsertedRow = cursor.row; - maybeInsertedLineStart = line.substr(0, cursor.column) + bracket; - maybeInsertedLineEnd = line.substr(cursor.column); - maybeInsertedBrackets++; - }; - - CstyleBehaviour.isAutoInsertedClosing = function(cursor, line, bracket) { - return autoInsertedBrackets > 0 && - cursor.row === autoInsertedRow && - bracket === autoInsertedLineEnd[0] && - line.substr(cursor.column) === autoInsertedLineEnd; - }; - - CstyleBehaviour.isMaybeInsertedClosing = function(cursor, line) { - return maybeInsertedBrackets > 0 && - cursor.row === maybeInsertedRow && - line.substr(cursor.column) === maybeInsertedLineEnd && - line.substr(0, cursor.column) == maybeInsertedLineStart; - }; - - CstyleBehaviour.popAutoInsertedClosing = function() { - autoInsertedLineEnd = autoInsertedLineEnd.substr(1); - autoInsertedBrackets--; - }; - - CstyleBehaviour.clearMaybeInsertedClosing = function() { - maybeInsertedBrackets = 0; - maybeInsertedRow = -1; - }; - - this.add("braces", "insertion", function (state, action, editor, session, text) { - var cursor = editor.getCursorPosition(); - var line = session.doc.getLine(cursor.row); - if (text == '{') { - var selection = editor.getSelectionRange(); - var selected = session.doc.getTextRange(selection); - if (selected !== "" && selected !== "{" && editor.getWrapBehavioursEnabled()) { - return { - text: '{' + selected + '}', - selection: false - }; - } else if (CstyleBehaviour.isSaneInsertion(editor, session)) { - if (/[\]\}\)]/.test(line[cursor.column]) || editor.inMultiSelectMode) { - CstyleBehaviour.recordAutoInsert(editor, session, "}"); - return { - text: '{}', - selection: [1, 1] - }; - } else { - CstyleBehaviour.recordMaybeInsert(editor, session, "{"); - return { - text: '{', - selection: [1, 1] - }; - } - } - } else if (text == '}') { - var rightChar = line.substring(cursor.column, cursor.column + 1); - if (rightChar == '}') { - var matching = session.$findOpeningBracket('}', {column: cursor.column + 1, row: cursor.row}); - if (matching !== null && CstyleBehaviour.isAutoInsertedClosing(cursor, line, text)) { - CstyleBehaviour.popAutoInsertedClosing(); - return { - text: '', - selection: [1, 1] - }; - } - } - } else if (text == "\n" || text == "\r\n") { - var closing = ""; - if (CstyleBehaviour.isMaybeInsertedClosing(cursor, line)) { - closing = lang.stringRepeat("}", maybeInsertedBrackets); - CstyleBehaviour.clearMaybeInsertedClosing(); - } - var rightChar = line.substring(cursor.column, cursor.column + 1); - if (rightChar === '}') { - var openBracePos = session.findMatchingBracket({row: cursor.row, column: cursor.column+1}, '}'); - if (!openBracePos) - return null; - var next_indent = this.$getIndent(session.getLine(openBracePos.row)); - } else if (closing) { - var next_indent = this.$getIndent(line); - } else { - return; - } - var indent = next_indent + session.getTabString(); - - return { - text: '\n' + indent + '\n' + next_indent + closing, - selection: [1, indent.length, 1, indent.length] - }; - } else { - CstyleBehaviour.clearMaybeInsertedClosing(); - } - }); - - this.add("braces", "deletion", function (state, action, editor, session, range) { - var selected = session.doc.getTextRange(range); - if (!range.isMultiLine() && selected == '{') { - var line = session.doc.getLine(range.start.row); - var rightChar = line.substring(range.end.column, range.end.column + 1); - if (rightChar == '}') { - range.end.column++; - return range; - } else { - maybeInsertedBrackets--; - } - } - }); - - this.add("parens", "insertion", function (state, action, editor, session, text) { - if (text == '(') { - var selection = editor.getSelectionRange(); - var selected = session.doc.getTextRange(selection); - if (selected !== "" && editor.getWrapBehavioursEnabled()) { - return { - text: '(' + selected + ')', - selection: false - }; - } else if (CstyleBehaviour.isSaneInsertion(editor, session)) { - CstyleBehaviour.recordAutoInsert(editor, session, ")"); - return { - text: '()', - selection: [1, 1] - }; - } - } else if (text == ')') { - var cursor = editor.getCursorPosition(); - var line = session.doc.getLine(cursor.row); - var rightChar = line.substring(cursor.column, cursor.column + 1); - if (rightChar == ')') { - var matching = session.$findOpeningBracket(')', {column: cursor.column + 1, row: cursor.row}); - if (matching !== null && CstyleBehaviour.isAutoInsertedClosing(cursor, line, text)) { - CstyleBehaviour.popAutoInsertedClosing(); - return { - text: '', - selection: [1, 1] - }; - } - } - } - }); - - this.add("parens", "deletion", function (state, action, editor, session, range) { - var selected = session.doc.getTextRange(range); - if (!range.isMultiLine() && selected == '(') { - var line = session.doc.getLine(range.start.row); - var rightChar = line.substring(range.start.column + 1, range.start.column + 2); - if (rightChar == ')') { - range.end.column++; - return range; - } - } - }); - - this.add("brackets", "insertion", function (state, action, editor, session, text) { - if (text == '[') { - var selection = editor.getSelectionRange(); - var selected = session.doc.getTextRange(selection); - if (selected !== "" && editor.getWrapBehavioursEnabled()) { - return { - text: '[' + selected + ']', - selection: false - }; - } else if (CstyleBehaviour.isSaneInsertion(editor, session)) { - CstyleBehaviour.recordAutoInsert(editor, session, "]"); - return { - text: '[]', - selection: [1, 1] - }; - } - } else if (text == ']') { - var cursor = editor.getCursorPosition(); - var line = session.doc.getLine(cursor.row); - var rightChar = line.substring(cursor.column, cursor.column + 1); - if (rightChar == ']') { - var matching = session.$findOpeningBracket(']', {column: cursor.column + 1, row: cursor.row}); - if (matching !== null && CstyleBehaviour.isAutoInsertedClosing(cursor, line, text)) { - CstyleBehaviour.popAutoInsertedClosing(); - return { - text: '', - selection: [1, 1] - }; - } - } - } - }); - - this.add("brackets", "deletion", function (state, action, editor, session, range) { - var selected = session.doc.getTextRange(range); - if (!range.isMultiLine() && selected == '[') { - var line = session.doc.getLine(range.start.row); - var rightChar = line.substring(range.start.column + 1, range.start.column + 2); - if (rightChar == ']') { - range.end.column++; - return range; - } - } - }); - - this.add("string_dquotes", "insertion", function (state, action, editor, session, text) { - if (text == '"' || text == "'") { - var quote = text; - var selection = editor.getSelectionRange(); - var selected = session.doc.getTextRange(selection); - if (selected !== "" && selected !== "'" && selected != '"' && editor.getWrapBehavioursEnabled()) { - return { - text: quote + selected + quote, - selection: false - }; - } else { - var cursor = editor.getCursorPosition(); - var line = session.doc.getLine(cursor.row); - var leftChar = line.substring(cursor.column-1, cursor.column); - if (leftChar == '\\') { - return null; - } - var tokens = session.getTokens(selection.start.row); - var col = 0, token; - var quotepos = -1; // Track whether we're inside an open quote. - - for (var x = 0; x < tokens.length; x++) { - token = tokens[x]; - if (token.type == "string") { - quotepos = -1; - } else if (quotepos < 0) { - quotepos = token.value.indexOf(quote); - } - if ((token.value.length + col) > selection.start.column) { - break; - } - col += tokens[x].value.length; - } - if (!token || (quotepos < 0 && token.type !== "comment" && (token.type !== "string" || ((selection.start.column !== token.value.length+col-1) && token.value.lastIndexOf(quote) === token.value.length-1)))) { - if (!CstyleBehaviour.isSaneInsertion(editor, session)) - return; - return { - text: quote + quote, - selection: [1,1] - }; - } else if (token && token.type === "string") { - var rightChar = line.substring(cursor.column, cursor.column + 1); - if (rightChar == quote) { - return { - text: '', - selection: [1, 1] - }; - } - } - } - } - }); - - this.add("string_dquotes", "deletion", function (state, action, editor, session, range) { - var selected = session.doc.getTextRange(range); - if (!range.isMultiLine() && (selected == '"' || selected == "'")) { - var line = session.doc.getLine(range.start.row); - var rightChar = line.substring(range.start.column + 1, range.start.column + 2); - if (rightChar == selected) { - range.end.column++; - return range; - } - } - }); - -}; - -oop.inherits(CstyleBehaviour, Behaviour); - -exports.CstyleBehaviour = CstyleBehaviour; -}); - -ace.define('ace/mode/folding/cstyle', ['require', 'exports', 'module' , 'ace/lib/oop', 'ace/range', 'ace/mode/folding/fold_mode'], function(require, exports, module) { - - -var oop = require("../../lib/oop"); -var Range = require("../../range").Range; -var BaseFoldMode = require("./fold_mode").FoldMode; - -var FoldMode = exports.FoldMode = function(commentRegex) { - if (commentRegex) { - this.foldingStartMarker = new RegExp( - this.foldingStartMarker.source.replace(/\|[^|]*?$/, "|" + commentRegex.start) - ); - this.foldingStopMarker = new RegExp( - this.foldingStopMarker.source.replace(/\|[^|]*?$/, "|" + commentRegex.end) - ); - } -}; -oop.inherits(FoldMode, BaseFoldMode); - -(function() { - - this.foldingStartMarker = /(\{|\[)[^\}\]]*$|^\s*(\/\*)/; - this.foldingStopMarker = /^[^\[\{]*(\}|\])|^[\s\*]*(\*\/)/; - - this.getFoldWidgetRange = function(session, foldStyle, row, forceMultiline) { - var line = session.getLine(row); - var match = line.match(this.foldingStartMarker); - if (match) { - var i = match.index; - - if (match[1]) - return this.openingBracketBlock(session, match[1], row, i); - - var range = session.getCommentFoldRange(row, i + match[0].length, 1); - - if (range && !range.isMultiLine()) { - if (forceMultiline) { - range = this.getSectionRange(session, row); - } else if (foldStyle != "all") - range = null; - } - - return range; - } - - if (foldStyle === "markbegin") - return; - - var match = line.match(this.foldingStopMarker); - if (match) { - var i = match.index + match[0].length; - - if (match[1]) - return this.closingBracketBlock(session, match[1], row, i); - - return session.getCommentFoldRange(row, i, -1); - } - }; - - this.getSectionRange = function(session, row) { - var line = session.getLine(row); - var startIndent = line.search(/\S/); - var startRow = row; - var startColumn = line.length; - row = row + 1; - var endRow = row; - var maxRow = session.getLength(); - while (++row < maxRow) { - line = session.getLine(row); - var indent = line.search(/\S/); - if (indent === -1) - continue; - if (startIndent > indent) - break; - var subRange = this.getFoldWidgetRange(session, "all", row); - - if (subRange) { - if (subRange.start.row <= startRow) { - break; - } else if (subRange.isMultiLine()) { - row = subRange.end.row; - } else if (startIndent == indent) { - break; - } - } - endRow = row; - } - - return new Range(startRow, startColumn, endRow, session.getLine(endRow).length); - }; - -}).call(FoldMode.prototype); - -}); - - -ace.define('ace/mode/dart_highlight_rules', ['require', 'exports', 'module' , 'ace/lib/oop', 'ace/mode/text_highlight_rules'], function(require, exports, module) { - - -var oop = require("../lib/oop"); -var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; - -var DartHighlightRules = function() { - - var constantLanguage = "true|false|null"; - var variableLanguage = "this|super"; - var keywordControl = "try|catch|finally|throw|break|case|continue|default|do|else|for|if|in|return|switch|while|new"; - var keywordDeclaration = "abstract|class|extends|external|factory|implements|get|native|operator|set|typedef|with"; - var storageModifier = "static|final|const"; - var storageType = "void|bool|num|int|double|dynamic|var|String"; - - var keywordMapper = this.createKeywordMapper({ - "constant.language.dart": constantLanguage, - "variable.language.dart": variableLanguage, - "keyword.control.dart": keywordControl, - "keyword.declaration.dart": keywordDeclaration, - "storage.modifier.dart": storageModifier, - "storage.type.primitive.dart": storageType - }, "identifier"); - - var stringfill = { - token : "string", - regex : ".+" - }; - - this.$rules = - { - "start": [ - { - token : "comment", - regex : /\/\/.*$/ - }, - { - token : "comment", // multi line comment - regex : /\/\*/, - next : "comment" - }, - { - token: ["meta.preprocessor.script.dart"], - regex: "^(#!.*)$" - }, - { - token: "keyword.other.import.dart", - regex: "(?:\\b)(?:library|import|part|of)(?:\\b)" - }, - { - token : ["keyword.other.import.dart", "text"], - regex : "(?:\\b)(prefix)(\\s*:)" - }, - { - regex: "\\bas\\b", - token: "keyword.cast.dart" - }, - { - regex: "\\?|:", - token: "keyword.control.ternary.dart" - }, - { - regex: "(?:\\b)(is\\!?)(?:\\b)", - token: ["keyword.operator.dart"] - }, - { - regex: "(<<|>>>?|~|\\^|\\||&)", - token: ["keyword.operator.bitwise.dart"] - }, - { - regex: "((?:&|\\^|\\||<<|>>>?)=)", - token: ["keyword.operator.assignment.bitwise.dart"] - }, - { - regex: "(===?|!==?|<=?|>=?)", - token: ["keyword.operator.comparison.dart"] - }, - { - regex: "((?:[+*/%-]|\\~)=)", - token: ["keyword.operator.assignment.arithmetic.dart"] - }, - { - regex: "=", - token: "keyword.operator.assignment.dart" - }, - { - token : "string", - regex : "'''", - next : "qdoc" - }, - { - token : "string", - regex : '"""', - next : "qqdoc" - }, - { - token : "string", - regex : "'", - next : "qstring" - }, - { - token : "string", - regex : '"', - next : "qqstring" - }, - { - regex: "(\\-\\-|\\+\\+)", - token: ["keyword.operator.increment-decrement.dart"] - }, - { - regex: "(\\-|\\+|\\*|\\/|\\~\\/|%)", - token: ["keyword.operator.arithmetic.dart"] - }, - { - regex: "(!|&&|\\|\\|)", - token: ["keyword.operator.logical.dart"] - }, - { - token : "constant.numeric", // hex - regex : "0[xX][0-9a-fA-F]+\\b" - }, - { - token : "constant.numeric", // float - regex : "[+-]?\\d+(?:(?:\\.\\d*)?(?:[eE][+-]?\\d+)?)?\\b" - }, - { - token : keywordMapper, - regex : "[a-zA-Z_$][a-zA-Z0-9_$]*\\b" - } - ], - "comment" : [ - { - token : "comment", // closing comment - regex : ".*?\\*\\/", - next : "start" - }, { - token : "comment", // comment spanning whole line - regex : ".+" - } - ], - "qdoc" : [ - { - token : "string", - regex : ".*?'''", - next : "start" - }, stringfill], - - "qqdoc" : [ - { - token : "string", - regex : '.*?"""', - next : "start" - }, stringfill], - - "qstring" : [ - { - token : "string", - regex : "[^\\\\']*(?:\\\\.[^\\\\']*)*'", - next : "start" - }, stringfill], - - "qqstring" : [ - { - token : "string", - regex : '[^\\\\"]*(?:\\\\.[^\\\\"]*)*"', - next : "start" - }, stringfill] -} - -}; - -oop.inherits(DartHighlightRules, TextHighlightRules); - -exports.DartHighlightRules = DartHighlightRules; -}); diff --git a/IDE/jsrealb-ide/ace-src-noconflict/mode-diff.js b/IDE/jsrealb-ide/ace-src-noconflict/mode-diff.js deleted file mode 100644 index 68fe07ee..00000000 --- a/IDE/jsrealb-ide/ace-src-noconflict/mode-diff.js +++ /dev/null @@ -1,170 +0,0 @@ -/* ***** BEGIN LICENSE BLOCK ***** - * Distributed under the BSD license: - * - * Copyright (c) 2010, Ajax.org B.V. - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are met: - * * Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * * Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * * Neither the name of Ajax.org B.V. nor the - * names of its contributors may be used to endorse or promote products - * derived from this software without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND - * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED - * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE - * DISCLAIMED. IN NO EVENT SHALL AJAX.ORG B.V. BE LIABLE FOR ANY - * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES - * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; - * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND - * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - * - * ***** END LICENSE BLOCK ***** */ - -ace.define('ace/mode/diff', ['require', 'exports', 'module' , 'ace/lib/oop', 'ace/mode/text', 'ace/tokenizer', 'ace/mode/diff_highlight_rules', 'ace/mode/folding/diff'], function(require, exports, module) { - - -var oop = require("../lib/oop"); -var TextMode = require("./text").Mode; -var Tokenizer = require("../tokenizer").Tokenizer; -var HighlightRules = require("./diff_highlight_rules").DiffHighlightRules; -var FoldMode = require("./folding/diff").FoldMode; - -var Mode = function() { - this.HighlightRules = HighlightRules; - this.foldingRules = new FoldMode(["diff", "index", "\\+{3}", "@@|\\*{5}"], "i"); -}; -oop.inherits(Mode, TextMode); - -(function() { - - this.$id = "ace/mode/diff"; -}).call(Mode.prototype); - -exports.Mode = Mode; - -}); - -ace.define('ace/mode/diff_highlight_rules', ['require', 'exports', 'module' , 'ace/lib/oop', 'ace/mode/text_highlight_rules'], function(require, exports, module) { - - -var oop = require("../lib/oop"); -var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; - -var DiffHighlightRules = function() { - - this.$rules = { - "start" : [{ - regex: "^(?:\\*{15}|={67}|-{3}|\\+{3})$", - token: "punctuation.definition.separator.diff", - "name": "keyword" - }, { //diff.range.unified - regex: "^(@@)(\\s*.+?\\s*)(@@)(.*)$", - token: [ - "constant", - "constant.numeric", - "constant", - "comment.doc.tag" - ] - }, { //diff.range.normal - regex: "^(\\d+)([,\\d]+)(a|d|c)(\\d+)([,\\d]+)(.*)$", - token: [ - "constant.numeric", - "punctuation.definition.range.diff", - "constant.function", - "constant.numeric", - "punctuation.definition.range.diff", - "invalid" - ], - "name": "meta." - }, { - regex: "^(\\-{3}|\\+{3}|\\*{3})( .+)$", - token: [ - "constant.numeric", - "meta.tag" - ] - }, { // added - regex: "^([!+>])(.*?)(\\s*)$", - token: [ - "support.constant", - "text", - "invalid" - ] - }, { // removed - regex: "^([<\\-])(.*?)(\\s*)$", - token: [ - "support.function", - "string", - "invalid" - ] - }, { - regex: "^(diff)(\\s+--\\w+)?(.+?)( .+)?$", - token: ["variable", "variable", "keyword", "variable"] - }, { - regex: "^Index.+$", - token: "variable" - }, { - regex: "^\\s+$", - token: "text" - }, { - regex: "\\s*$", - token: "invalid" - }, { - defaultToken: "invisible", - caseInsensitive: true - } - ] - }; -}; - -oop.inherits(DiffHighlightRules, TextHighlightRules); - -exports.DiffHighlightRules = DiffHighlightRules; -}); - -ace.define('ace/mode/folding/diff', ['require', 'exports', 'module' , 'ace/lib/oop', 'ace/mode/folding/fold_mode', 'ace/range'], function(require, exports, module) { - - -var oop = require("../../lib/oop"); -var BaseFoldMode = require("./fold_mode").FoldMode; -var Range = require("../../range").Range; - -var FoldMode = exports.FoldMode = function(levels, flag) { - this.regExpList = levels; - this.flag = flag; - this.foldingStartMarker = RegExp("^(" + levels.join("|") + ")", this.flag); -}; -oop.inherits(FoldMode, BaseFoldMode); - -(function() { - this.getFoldWidgetRange = function(session, foldStyle, row) { - var line = session.getLine(row); - var start = {row: row, column: line.length}; - - var regList = this.regExpList; - for (var i = 1; i <= regList.length; i++) { - var re = RegExp("^(" + regList.slice(0, i).join("|") + ")", this.flag); - if (re.test(line)) - break; - } - - for (var l = session.getLength(); ++row < l; ) { - line = session.getLine(row); - if (re.test(line)) - break; - } - if (row == start.row + 1) - return; - return Range.fromPoints(start, {row: row - 1, column: line.length}); - }; - -}).call(FoldMode.prototype); - -}); diff --git a/IDE/jsrealb-ide/ace-src-noconflict/mode-django.js b/IDE/jsrealb-ide/ace-src-noconflict/mode-django.js deleted file mode 100644 index 6e68b117..00000000 --- a/IDE/jsrealb-ide/ace-src-noconflict/mode-django.js +++ /dev/null @@ -1,2448 +0,0 @@ -/* ***** BEGIN LICENSE BLOCK ***** - * Distributed under the BSD license: - * - * Copyright (c) 2012, Ajax.org B.V. - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are met: - * * Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * * Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * * Neither the name of Ajax.org B.V. nor the - * names of its contributors may be used to endorse or promote products - * derived from this software without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND - * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED - * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE - * DISCLAIMED. IN NO EVENT SHALL AJAX.ORG B.V. BE LIABLE FOR ANY - * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES - * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; - * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND - * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - * - * ***** END LICENSE BLOCK ***** */ - -ace.define('ace/mode/django', ['require', 'exports', 'module' , 'ace/lib/oop', 'ace/mode/html', 'ace/tokenizer', 'ace/mode/html_highlight_rules', 'ace/mode/text_highlight_rules'], function(require, exports, module) { - -var oop = require("../lib/oop"); -var HtmlMode = require("./html").Mode; -var Tokenizer = require("../tokenizer").Tokenizer; -var HtmlHighlightRules = require("./html_highlight_rules").HtmlHighlightRules; -var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; - -var DjangoHighlightRules = function(){ - this.$rules = { - 'start': [{ - token: "string", - regex: '".*?"' - }, { - token: "string", - regex: "'.*?'" - }, { - token: "constant", - regex: '[0-9]+' - }, { - token: "variable", - regex: "[-_a-zA-Z0-9:]+" - }], - 'comment': [{ - token : "comment.block", - merge: true, - regex : ".+?" - }], - 'tag': [{ - token: "entity.name.function", - regex: "[a-zA-Z][_a-zA-Z0-9]*", - next: "start" - }] - }; -}; - -oop.inherits(DjangoHighlightRules, TextHighlightRules) - -var DjangoHtmlHighlightRules = function() { - this.$rules = new HtmlHighlightRules().getRules(); - - for (var i in this.$rules) { - this.$rules[i].unshift({ - token: "comment.line", - regex: "\\{#.*?#\\}" - }, { - token: "comment.block", - regex: "\\{\\%\\s*comment\\s*\\%\\}", - merge: true, - next: "django-comment" - }, { - token: "constant.language", - regex: "\\{\\{", - next: "django-start" - }, { - token: "constant.language", - regex: "\\{\\%", - next: "django-tag" - }); - this.embedRules(DjangoHighlightRules, "django-", [{ - token: "comment.block", - regex: "\\{\\%\\s*endcomment\\s*\\%\\}", - merge: true, - next: "start" - }, { - token: "constant.language", - regex: "\\%\\}", - next: "start" - }, { - token: "constant.language", - regex: "\\}\\}", - next: "start" - }]); - } -}; - -oop.inherits(DjangoHtmlHighlightRules, HtmlHighlightRules); - -var Mode = function() { - HtmlMode.call(this); - this.HighlightRules = DjangoHtmlHighlightRules; -}; -oop.inherits(Mode, HtmlMode); - -exports.Mode = Mode; -}); - -ace.define('ace/mode/html', ['require', 'exports', 'module' , 'ace/lib/oop', 'ace/mode/text', 'ace/mode/javascript', 'ace/mode/css', 'ace/tokenizer', 'ace/mode/html_highlight_rules', 'ace/mode/behaviour/html', 'ace/mode/folding/html', 'ace/mode/html_completions'], function(require, exports, module) { - - -var oop = require("../lib/oop"); -var TextMode = require("./text").Mode; -var JavaScriptMode = require("./javascript").Mode; -var CssMode = require("./css").Mode; -var Tokenizer = require("../tokenizer").Tokenizer; -var HtmlHighlightRules = require("./html_highlight_rules").HtmlHighlightRules; -var HtmlBehaviour = require("./behaviour/html").HtmlBehaviour; -var HtmlFoldMode = require("./folding/html").FoldMode; -var HtmlCompletions = require("./html_completions").HtmlCompletions; - -var Mode = function() { - this.HighlightRules = HtmlHighlightRules; - this.$behaviour = new HtmlBehaviour(); - this.$completer = new HtmlCompletions(); - - this.createModeDelegates({ - "js-": JavaScriptMode, - "css-": CssMode - }); - - this.foldingRules = new HtmlFoldMode(); -}; -oop.inherits(Mode, TextMode); - -(function() { - - this.blockComment = {start: ""}; - - this.getNextLineIndent = function(state, line, tab) { - return this.$getIndent(line); - }; - - this.checkOutdent = function(state, line, input) { - return false; - }; - - this.getCompletions = function(state, session, pos, prefix) { - return this.$completer.getCompletions(state, session, pos, prefix); - }; - - this.$id = "ace/mode/html"; -}).call(Mode.prototype); - -exports.Mode = Mode; -}); - -ace.define('ace/mode/javascript', ['require', 'exports', 'module' , 'ace/lib/oop', 'ace/mode/text', 'ace/tokenizer', 'ace/mode/javascript_highlight_rules', 'ace/mode/matching_brace_outdent', 'ace/range', 'ace/worker/worker_client', 'ace/mode/behaviour/cstyle', 'ace/mode/folding/cstyle'], function(require, exports, module) { - - -var oop = require("../lib/oop"); -var TextMode = require("./text").Mode; -var Tokenizer = require("../tokenizer").Tokenizer; -var JavaScriptHighlightRules = require("./javascript_highlight_rules").JavaScriptHighlightRules; -var MatchingBraceOutdent = require("./matching_brace_outdent").MatchingBraceOutdent; -var Range = require("../range").Range; -var WorkerClient = require("../worker/worker_client").WorkerClient; -var CstyleBehaviour = require("./behaviour/cstyle").CstyleBehaviour; -var CStyleFoldMode = require("./folding/cstyle").FoldMode; - -var Mode = function() { - this.HighlightRules = JavaScriptHighlightRules; - - this.$outdent = new MatchingBraceOutdent(); - this.$behaviour = new CstyleBehaviour(); - this.foldingRules = new CStyleFoldMode(); -}; -oop.inherits(Mode, TextMode); - -(function() { - - this.lineCommentStart = "//"; - this.blockComment = {start: "/*", end: "*/"}; - - this.getNextLineIndent = function(state, line, tab) { - var indent = this.$getIndent(line); - - var tokenizedLine = this.getTokenizer().getLineTokens(line, state); - var tokens = tokenizedLine.tokens; - var endState = tokenizedLine.state; - - if (tokens.length && tokens[tokens.length-1].type == "comment") { - return indent; - } - - if (state == "start" || state == "no_regex") { - var match = line.match(/^.*(?:\bcase\b.*\:|[\{\(\[])\s*$/); - if (match) { - indent += tab; - } - } else if (state == "doc-start") { - if (endState == "start" || endState == "no_regex") { - return ""; - } - var match = line.match(/^\s*(\/?)\*/); - if (match) { - if (match[1]) { - indent += " "; - } - indent += "* "; - } - } - - return indent; - }; - - this.checkOutdent = function(state, line, input) { - return this.$outdent.checkOutdent(line, input); - }; - - this.autoOutdent = function(state, doc, row) { - this.$outdent.autoOutdent(doc, row); - }; - - this.createWorker = function(session) { - var worker = new WorkerClient(["ace"], "ace/mode/javascript_worker", "JavaScriptWorker"); - worker.attachToDocument(session.getDocument()); - - worker.on("jslint", function(results) { - session.setAnnotations(results.data); - }); - - worker.on("terminate", function() { - session.clearAnnotations(); - }); - - return worker; - }; - - this.$id = "ace/mode/javascript"; -}).call(Mode.prototype); - -exports.Mode = Mode; -}); - -ace.define('ace/mode/javascript_highlight_rules', ['require', 'exports', 'module' , 'ace/lib/oop', 'ace/mode/doc_comment_highlight_rules', 'ace/mode/text_highlight_rules'], function(require, exports, module) { - - -var oop = require("../lib/oop"); -var DocCommentHighlightRules = require("./doc_comment_highlight_rules").DocCommentHighlightRules; -var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; - -var JavaScriptHighlightRules = function() { - var keywordMapper = this.createKeywordMapper({ - "variable.language": - "Array|Boolean|Date|Function|Iterator|Number|Object|RegExp|String|Proxy|" + // Constructors - "Namespace|QName|XML|XMLList|" + // E4X - "ArrayBuffer|Float32Array|Float64Array|Int16Array|Int32Array|Int8Array|" + - "Uint16Array|Uint32Array|Uint8Array|Uint8ClampedArray|" + - "Error|EvalError|InternalError|RangeError|ReferenceError|StopIteration|" + // Errors - "SyntaxError|TypeError|URIError|" + - "decodeURI|decodeURIComponent|encodeURI|encodeURIComponent|eval|isFinite|" + // Non-constructor functions - "isNaN|parseFloat|parseInt|" + - "JSON|Math|" + // Other - "this|arguments|prototype|window|document" , // Pseudo - "keyword": - "const|yield|import|get|set|" + - "break|case|catch|continue|default|delete|do|else|finally|for|function|" + - "if|in|instanceof|new|return|switch|throw|try|typeof|let|var|while|with|debugger|" + - "__parent__|__count__|escape|unescape|with|__proto__|" + - "class|enum|extends|super|export|implements|private|public|interface|package|protected|static", - "storage.type": - "const|let|var|function", - "constant.language": - "null|Infinity|NaN|undefined", - "support.function": - "alert", - "constant.language.boolean": "true|false" - }, "identifier"); - var kwBeforeRe = "case|do|else|finally|in|instanceof|return|throw|try|typeof|yield|void"; - var identifierRe = "[a-zA-Z\\$_\u00a1-\uffff][a-zA-Z\\d\\$_\u00a1-\uffff]*\\b"; - - var escapedRe = "\\\\(?:x[0-9a-fA-F]{2}|" + // hex - "u[0-9a-fA-F]{4}|" + // unicode - "[0-2][0-7]{0,2}|" + // oct - "3[0-6][0-7]?|" + // oct - "37[0-7]?|" + // oct - "[4-7][0-7]?|" + //oct - ".)"; - - this.$rules = { - "no_regex" : [ - { - token : "comment", - regex : "\\/\\/", - next : "line_comment" - }, - DocCommentHighlightRules.getStartRule("doc-start"), - { - token : "comment", // multi line comment - regex : /\/\*/, - next : "comment" - }, { - token : "string", - regex : "'(?=.)", - next : "qstring" - }, { - token : "string", - regex : '"(?=.)', - next : "qqstring" - }, { - token : "constant.numeric", // hex - regex : /0[xX][0-9a-fA-F]+\b/ - }, { - token : "constant.numeric", // float - regex : /[+-]?\d+(?:(?:\.\d*)?(?:[eE][+-]?\d+)?)?\b/ - }, { - token : [ - "storage.type", "punctuation.operator", "support.function", - "punctuation.operator", "entity.name.function", "text","keyword.operator" - ], - regex : "(" + identifierRe + ")(\\.)(prototype)(\\.)(" + identifierRe +")(\\s*)(=)", - next: "function_arguments" - }, { - token : [ - "storage.type", "punctuation.operator", "entity.name.function", "text", - "keyword.operator", "text", "storage.type", "text", "paren.lparen" - ], - regex : "(" + identifierRe + ")(\\.)(" + identifierRe +")(\\s*)(=)(\\s*)(function)(\\s*)(\\()", - next: "function_arguments" - }, { - token : [ - "entity.name.function", "text", "keyword.operator", "text", "storage.type", - "text", "paren.lparen" - ], - regex : "(" + identifierRe +")(\\s*)(=)(\\s*)(function)(\\s*)(\\()", - next: "function_arguments" - }, { - token : [ - "storage.type", "punctuation.operator", "entity.name.function", "text", - "keyword.operator", "text", - "storage.type", "text", "entity.name.function", "text", "paren.lparen" - ], - regex : "(" + identifierRe + ")(\\.)(" + identifierRe +")(\\s*)(=)(\\s*)(function)(\\s+)(\\w+)(\\s*)(\\()", - next: "function_arguments" - }, { - token : [ - "storage.type", "text", "entity.name.function", "text", "paren.lparen" - ], - regex : "(function)(\\s+)(" + identifierRe + ")(\\s*)(\\()", - next: "function_arguments" - }, { - token : [ - "entity.name.function", "text", "punctuation.operator", - "text", "storage.type", "text", "paren.lparen" - ], - regex : "(" + identifierRe + ")(\\s*)(:)(\\s*)(function)(\\s*)(\\()", - next: "function_arguments" - }, { - token : [ - "text", "text", "storage.type", "text", "paren.lparen" - ], - regex : "(:)(\\s*)(function)(\\s*)(\\()", - next: "function_arguments" - }, { - token : "keyword", - regex : "(?:" + kwBeforeRe + ")\\b", - next : "start" - }, { - token : ["punctuation.operator", "support.function"], - regex : /(\.)(s(?:h(?:ift|ow(?:Mod(?:elessDialog|alDialog)|Help))|croll(?:X|By(?:Pages|Lines)?|Y|To)?|t(?:op|rike)|i(?:n|zeToContent|debar|gnText)|ort|u(?:p|b(?:str(?:ing)?)?)|pli(?:ce|t)|e(?:nd|t(?:Re(?:sizable|questHeader)|M(?:i(?:nutes|lliseconds)|onth)|Seconds|Ho(?:tKeys|urs)|Year|Cursor|Time(?:out)?|Interval|ZOptions|Date|UTC(?:M(?:i(?:nutes|lliseconds)|onth)|Seconds|Hours|Date|FullYear)|FullYear|Active)|arch)|qrt|lice|avePreferences|mall)|h(?:ome|andleEvent)|navigate|c(?:har(?:CodeAt|At)|o(?:s|n(?:cat|textual|firm)|mpile)|eil|lear(?:Timeout|Interval)?|a(?:ptureEvents|ll)|reate(?:StyleSheet|Popup|EventObject))|t(?:o(?:GMTString|S(?:tring|ource)|U(?:TCString|pperCase)|Lo(?:caleString|werCase))|est|a(?:n|int(?:Enabled)?))|i(?:s(?:NaN|Finite)|ndexOf|talics)|d(?:isableExternalCapture|ump|etachEvent)|u(?:n(?:shift|taint|escape|watch)|pdateCommands)|j(?:oin|avaEnabled)|p(?:o(?:p|w)|ush|lugins.refresh|a(?:ddings|rse(?:Int|Float)?)|r(?:int|ompt|eference))|e(?:scape|nableExternalCapture|val|lementFromPoint|x(?:p|ec(?:Script|Command)?))|valueOf|UTC|queryCommand(?:State|Indeterm|Enabled|Value)|f(?:i(?:nd|le(?:ModifiedDate|Size|CreatedDate|UpdatedDate)|xed)|o(?:nt(?:size|color)|rward)|loor|romCharCode)|watch|l(?:ink|o(?:ad|g)|astIndexOf)|a(?:sin|nchor|cos|t(?:tachEvent|ob|an(?:2)?)|pply|lert|b(?:s|ort))|r(?:ou(?:nd|teEvents)|e(?:size(?:By|To)|calc|turnValue|place|verse|l(?:oad|ease(?:Capture|Events)))|andom)|g(?:o|et(?:ResponseHeader|M(?:i(?:nutes|lliseconds)|onth)|Se(?:conds|lection)|Hours|Year|Time(?:zoneOffset)?|Da(?:y|te)|UTC(?:M(?:i(?:nutes|lliseconds)|onth)|Seconds|Hours|Da(?:y|te)|FullYear)|FullYear|A(?:ttention|llResponseHeaders)))|m(?:in|ove(?:B(?:y|elow)|To(?:Absolute)?|Above)|ergeAttributes|a(?:tch|rgins|x))|b(?:toa|ig|o(?:ld|rderWidths)|link|ack))\b(?=\()/ - }, { - token : ["punctuation.operator", "support.function.dom"], - regex : /(\.)(s(?:ub(?:stringData|mit)|plitText|e(?:t(?:NamedItem|Attribute(?:Node)?)|lect))|has(?:ChildNodes|Feature)|namedItem|c(?:l(?:ick|o(?:se|neNode))|reate(?:C(?:omment|DATASection|aption)|T(?:Head|extNode|Foot)|DocumentFragment|ProcessingInstruction|E(?:ntityReference|lement)|Attribute))|tabIndex|i(?:nsert(?:Row|Before|Cell|Data)|tem)|open|delete(?:Row|C(?:ell|aption)|T(?:Head|Foot)|Data)|focus|write(?:ln)?|a(?:dd|ppend(?:Child|Data))|re(?:set|place(?:Child|Data)|move(?:NamedItem|Child|Attribute(?:Node)?)?)|get(?:NamedItem|Element(?:sBy(?:Name|TagName)|ById)|Attribute(?:Node)?)|blur)\b(?=\()/ - }, { - token : ["punctuation.operator", "support.constant"], - regex : /(\.)(s(?:ystemLanguage|cr(?:ipts|ollbars|een(?:X|Y|Top|Left))|t(?:yle(?:Sheets)?|atus(?:Text|bar)?)|ibling(?:Below|Above)|ource|uffixes|e(?:curity(?:Policy)?|l(?:ection|f)))|h(?:istory|ost(?:name)?|as(?:h|Focus))|y|X(?:MLDocument|SLDocument)|n(?:ext|ame(?:space(?:s|URI)|Prop))|M(?:IN_VALUE|AX_VALUE)|c(?:haracterSet|o(?:n(?:structor|trollers)|okieEnabled|lorDepth|mp(?:onents|lete))|urrent|puClass|l(?:i(?:p(?:boardData)?|entInformation)|osed|asses)|alle(?:e|r)|rypto)|t(?:o(?:olbar|p)|ext(?:Transform|Indent|Decoration|Align)|ags)|SQRT(?:1_2|2)|i(?:n(?:ner(?:Height|Width)|put)|ds|gnoreCase)|zIndex|o(?:scpu|n(?:readystatechange|Line)|uter(?:Height|Width)|p(?:sProfile|ener)|ffscreenBuffering)|NEGATIVE_INFINITY|d(?:i(?:splay|alog(?:Height|Top|Width|Left|Arguments)|rectories)|e(?:scription|fault(?:Status|Ch(?:ecked|arset)|View)))|u(?:ser(?:Profile|Language|Agent)|n(?:iqueID|defined)|pdateInterval)|_content|p(?:ixelDepth|ort|ersonalbar|kcs11|l(?:ugins|atform)|a(?:thname|dding(?:Right|Bottom|Top|Left)|rent(?:Window|Layer)?|ge(?:X(?:Offset)?|Y(?:Offset)?))|r(?:o(?:to(?:col|type)|duct(?:Sub)?|mpter)|e(?:vious|fix)))|e(?:n(?:coding|abledPlugin)|x(?:ternal|pando)|mbeds)|v(?:isibility|endor(?:Sub)?|Linkcolor)|URLUnencoded|P(?:I|OSITIVE_INFINITY)|f(?:ilename|o(?:nt(?:Size|Family|Weight)|rmName)|rame(?:s|Element)|gColor)|E|whiteSpace|l(?:i(?:stStyleType|n(?:eHeight|kColor))|o(?:ca(?:tion(?:bar)?|lName)|wsrc)|e(?:ngth|ft(?:Context)?)|a(?:st(?:M(?:odified|atch)|Index|Paren)|yer(?:s|X)|nguage))|a(?:pp(?:MinorVersion|Name|Co(?:deName|re)|Version)|vail(?:Height|Top|Width|Left)|ll|r(?:ity|guments)|Linkcolor|bove)|r(?:ight(?:Context)?|e(?:sponse(?:XML|Text)|adyState))|global|x|m(?:imeTypes|ultiline|enubar|argin(?:Right|Bottom|Top|Left))|L(?:N(?:10|2)|OG(?:10E|2E))|b(?:o(?:ttom|rder(?:Width|RightWidth|BottomWidth|Style|Color|TopWidth|LeftWidth))|ufferDepth|elow|ackground(?:Color|Image)))\b/ - }, { - token : ["storage.type", "punctuation.operator", "support.function.firebug"], - regex : /(console)(\.)(warn|info|log|error|time|timeEnd|assert)\b/ - }, { - token : keywordMapper, - regex : identifierRe - }, { - token : "keyword.operator", - regex : /--|\+\+|[!$%&*+\-~]|===|==|=|!=|!==|<=|>=|<<=|>>=|>>>=|<>|<|>|!|&&|\|\||\?\:|\*=|%=|\+=|\-=|&=|\^=/, - next : "start" - }, { - token : "punctuation.operator", - regex : /\?|\:|\,|\;|\./, - next : "start" - }, { - token : "paren.lparen", - regex : /[\[({]/, - next : "start" - }, { - token : "paren.rparen", - regex : /[\])}]/ - }, { - token : "keyword.operator", - regex : /\/=?/, - next : "start" - }, { - token: "comment", - regex: /^#!.*$/ - } - ], - "start": [ - DocCommentHighlightRules.getStartRule("doc-start"), - { - token : "comment", // multi line comment - regex : "\\/\\*", - next : "comment_regex_allowed" - }, { - token : "comment", - regex : "\\/\\/", - next : "line_comment_regex_allowed" - }, { - token: "string.regexp", - regex: "\\/", - next: "regex" - }, { - token : "text", - regex : "\\s+|^$", - next : "start" - }, { - token: "empty", - regex: "", - next: "no_regex" - } - ], - "regex": [ - { - token: "regexp.keyword.operator", - regex: "\\\\(?:u[\\da-fA-F]{4}|x[\\da-fA-F]{2}|.)" - }, { - token: "string.regexp", - regex: "/[sxngimy]*", - next: "no_regex" - }, { - token : "invalid", - regex: /\{\d+\b,?\d*\}[+*]|[+*$^?][+*]|[$^][?]|\?{3,}/ - }, { - token : "constant.language.escape", - regex: /\(\?[:=!]|\)|\{\d+\b,?\d*\}|[+*]\?|[()$^+*?.]/ - }, { - token : "constant.language.delimiter", - regex: /\|/ - }, { - token: "constant.language.escape", - regex: /\[\^?/, - next: "regex_character_class" - }, { - token: "empty", - regex: "$", - next: "no_regex" - }, { - defaultToken: "string.regexp" - } - ], - "regex_character_class": [ - { - token: "regexp.keyword.operator", - regex: "\\\\(?:u[\\da-fA-F]{4}|x[\\da-fA-F]{2}|.)" - }, { - token: "constant.language.escape", - regex: "]", - next: "regex" - }, { - token: "constant.language.escape", - regex: "-" - }, { - token: "empty", - regex: "$", - next: "no_regex" - }, { - defaultToken: "string.regexp.charachterclass" - } - ], - "function_arguments": [ - { - token: "variable.parameter", - regex: identifierRe - }, { - token: "punctuation.operator", - regex: "[, ]+" - }, { - token: "punctuation.operator", - regex: "$" - }, { - token: "empty", - regex: "", - next: "no_regex" - } - ], - "comment_regex_allowed" : [ - {token : "comment", regex : "\\*\\/", next : "start"}, - {defaultToken : "comment"} - ], - "comment" : [ - {token : "comment", regex : "\\*\\/", next : "no_regex"}, - {defaultToken : "comment"} - ], - "line_comment_regex_allowed" : [ - {token : "comment", regex : "$|^", next : "start"}, - {defaultToken : "comment"} - ], - "line_comment" : [ - {token : "comment", regex : "$|^", next : "no_regex"}, - {defaultToken : "comment"} - ], - "qqstring" : [ - { - token : "constant.language.escape", - regex : escapedRe - }, { - token : "string", - regex : "\\\\$", - next : "qqstring" - }, { - token : "string", - regex : '"|$', - next : "no_regex" - }, { - defaultToken: "string" - } - ], - "qstring" : [ - { - token : "constant.language.escape", - regex : escapedRe - }, { - token : "string", - regex : "\\\\$", - next : "qstring" - }, { - token : "string", - regex : "'|$", - next : "no_regex" - }, { - defaultToken: "string" - } - ] - }; - - this.embedRules(DocCommentHighlightRules, "doc-", - [ DocCommentHighlightRules.getEndRule("no_regex") ]); -}; - -oop.inherits(JavaScriptHighlightRules, TextHighlightRules); - -exports.JavaScriptHighlightRules = JavaScriptHighlightRules; -}); - -ace.define('ace/mode/doc_comment_highlight_rules', ['require', 'exports', 'module' , 'ace/lib/oop', 'ace/mode/text_highlight_rules'], function(require, exports, module) { - - -var oop = require("../lib/oop"); -var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; - -var DocCommentHighlightRules = function() { - - this.$rules = { - "start" : [ { - token : "comment.doc.tag", - regex : "@[\\w\\d_]+" // TODO: fix email addresses - }, { - token : "comment.doc.tag", - regex : "\\bTODO\\b" - }, { - defaultToken : "comment.doc" - }] - }; -}; - -oop.inherits(DocCommentHighlightRules, TextHighlightRules); - -DocCommentHighlightRules.getStartRule = function(start) { - return { - token : "comment.doc", // doc comment - regex : "\\/\\*(?=\\*)", - next : start - }; -}; - -DocCommentHighlightRules.getEndRule = function (start) { - return { - token : "comment.doc", // closing comment - regex : "\\*\\/", - next : start - }; -}; - - -exports.DocCommentHighlightRules = DocCommentHighlightRules; - -}); - -ace.define('ace/mode/matching_brace_outdent', ['require', 'exports', 'module' , 'ace/range'], function(require, exports, module) { - - -var Range = require("../range").Range; - -var MatchingBraceOutdent = function() {}; - -(function() { - - this.checkOutdent = function(line, input) { - if (! /^\s+$/.test(line)) - return false; - - return /^\s*\}/.test(input); - }; - - this.autoOutdent = function(doc, row) { - var line = doc.getLine(row); - var match = line.match(/^(\s*\})/); - - if (!match) return 0; - - var column = match[1].length; - var openBracePos = doc.findMatchingBracket({row: row, column: column}); - - if (!openBracePos || openBracePos.row == row) return 0; - - var indent = this.$getIndent(doc.getLine(openBracePos.row)); - doc.replace(new Range(row, 0, row, column-1), indent); - }; - - this.$getIndent = function(line) { - return line.match(/^\s*/)[0]; - }; - -}).call(MatchingBraceOutdent.prototype); - -exports.MatchingBraceOutdent = MatchingBraceOutdent; -}); - -ace.define('ace/mode/behaviour/cstyle', ['require', 'exports', 'module' , 'ace/lib/oop', 'ace/mode/behaviour', 'ace/token_iterator', 'ace/lib/lang'], function(require, exports, module) { - - -var oop = require("../../lib/oop"); -var Behaviour = require("../behaviour").Behaviour; -var TokenIterator = require("../../token_iterator").TokenIterator; -var lang = require("../../lib/lang"); - -var SAFE_INSERT_IN_TOKENS = - ["text", "paren.rparen", "punctuation.operator"]; -var SAFE_INSERT_BEFORE_TOKENS = - ["text", "paren.rparen", "punctuation.operator", "comment"]; - - -var autoInsertedBrackets = 0; -var autoInsertedRow = -1; -var autoInsertedLineEnd = ""; -var maybeInsertedBrackets = 0; -var maybeInsertedRow = -1; -var maybeInsertedLineStart = ""; -var maybeInsertedLineEnd = ""; - -var CstyleBehaviour = function () { - - CstyleBehaviour.isSaneInsertion = function(editor, session) { - var cursor = editor.getCursorPosition(); - var iterator = new TokenIterator(session, cursor.row, cursor.column); - if (!this.$matchTokenType(iterator.getCurrentToken() || "text", SAFE_INSERT_IN_TOKENS)) { - var iterator2 = new TokenIterator(session, cursor.row, cursor.column + 1); - if (!this.$matchTokenType(iterator2.getCurrentToken() || "text", SAFE_INSERT_IN_TOKENS)) - return false; - } - iterator.stepForward(); - return iterator.getCurrentTokenRow() !== cursor.row || - this.$matchTokenType(iterator.getCurrentToken() || "text", SAFE_INSERT_BEFORE_TOKENS); - }; - - CstyleBehaviour.$matchTokenType = function(token, types) { - return types.indexOf(token.type || token) > -1; - }; - - CstyleBehaviour.recordAutoInsert = function(editor, session, bracket) { - var cursor = editor.getCursorPosition(); - var line = session.doc.getLine(cursor.row); - if (!this.isAutoInsertedClosing(cursor, line, autoInsertedLineEnd[0])) - autoInsertedBrackets = 0; - autoInsertedRow = cursor.row; - autoInsertedLineEnd = bracket + line.substr(cursor.column); - autoInsertedBrackets++; - }; - - CstyleBehaviour.recordMaybeInsert = function(editor, session, bracket) { - var cursor = editor.getCursorPosition(); - var line = session.doc.getLine(cursor.row); - if (!this.isMaybeInsertedClosing(cursor, line)) - maybeInsertedBrackets = 0; - maybeInsertedRow = cursor.row; - maybeInsertedLineStart = line.substr(0, cursor.column) + bracket; - maybeInsertedLineEnd = line.substr(cursor.column); - maybeInsertedBrackets++; - }; - - CstyleBehaviour.isAutoInsertedClosing = function(cursor, line, bracket) { - return autoInsertedBrackets > 0 && - cursor.row === autoInsertedRow && - bracket === autoInsertedLineEnd[0] && - line.substr(cursor.column) === autoInsertedLineEnd; - }; - - CstyleBehaviour.isMaybeInsertedClosing = function(cursor, line) { - return maybeInsertedBrackets > 0 && - cursor.row === maybeInsertedRow && - line.substr(cursor.column) === maybeInsertedLineEnd && - line.substr(0, cursor.column) == maybeInsertedLineStart; - }; - - CstyleBehaviour.popAutoInsertedClosing = function() { - autoInsertedLineEnd = autoInsertedLineEnd.substr(1); - autoInsertedBrackets--; - }; - - CstyleBehaviour.clearMaybeInsertedClosing = function() { - maybeInsertedBrackets = 0; - maybeInsertedRow = -1; - }; - - this.add("braces", "insertion", function (state, action, editor, session, text) { - var cursor = editor.getCursorPosition(); - var line = session.doc.getLine(cursor.row); - if (text == '{') { - var selection = editor.getSelectionRange(); - var selected = session.doc.getTextRange(selection); - if (selected !== "" && selected !== "{" && editor.getWrapBehavioursEnabled()) { - return { - text: '{' + selected + '}', - selection: false - }; - } else if (CstyleBehaviour.isSaneInsertion(editor, session)) { - if (/[\]\}\)]/.test(line[cursor.column]) || editor.inMultiSelectMode) { - CstyleBehaviour.recordAutoInsert(editor, session, "}"); - return { - text: '{}', - selection: [1, 1] - }; - } else { - CstyleBehaviour.recordMaybeInsert(editor, session, "{"); - return { - text: '{', - selection: [1, 1] - }; - } - } - } else if (text == '}') { - var rightChar = line.substring(cursor.column, cursor.column + 1); - if (rightChar == '}') { - var matching = session.$findOpeningBracket('}', {column: cursor.column + 1, row: cursor.row}); - if (matching !== null && CstyleBehaviour.isAutoInsertedClosing(cursor, line, text)) { - CstyleBehaviour.popAutoInsertedClosing(); - return { - text: '', - selection: [1, 1] - }; - } - } - } else if (text == "\n" || text == "\r\n") { - var closing = ""; - if (CstyleBehaviour.isMaybeInsertedClosing(cursor, line)) { - closing = lang.stringRepeat("}", maybeInsertedBrackets); - CstyleBehaviour.clearMaybeInsertedClosing(); - } - var rightChar = line.substring(cursor.column, cursor.column + 1); - if (rightChar === '}') { - var openBracePos = session.findMatchingBracket({row: cursor.row, column: cursor.column+1}, '}'); - if (!openBracePos) - return null; - var next_indent = this.$getIndent(session.getLine(openBracePos.row)); - } else if (closing) { - var next_indent = this.$getIndent(line); - } else { - return; - } - var indent = next_indent + session.getTabString(); - - return { - text: '\n' + indent + '\n' + next_indent + closing, - selection: [1, indent.length, 1, indent.length] - }; - } else { - CstyleBehaviour.clearMaybeInsertedClosing(); - } - }); - - this.add("braces", "deletion", function (state, action, editor, session, range) { - var selected = session.doc.getTextRange(range); - if (!range.isMultiLine() && selected == '{') { - var line = session.doc.getLine(range.start.row); - var rightChar = line.substring(range.end.column, range.end.column + 1); - if (rightChar == '}') { - range.end.column++; - return range; - } else { - maybeInsertedBrackets--; - } - } - }); - - this.add("parens", "insertion", function (state, action, editor, session, text) { - if (text == '(') { - var selection = editor.getSelectionRange(); - var selected = session.doc.getTextRange(selection); - if (selected !== "" && editor.getWrapBehavioursEnabled()) { - return { - text: '(' + selected + ')', - selection: false - }; - } else if (CstyleBehaviour.isSaneInsertion(editor, session)) { - CstyleBehaviour.recordAutoInsert(editor, session, ")"); - return { - text: '()', - selection: [1, 1] - }; - } - } else if (text == ')') { - var cursor = editor.getCursorPosition(); - var line = session.doc.getLine(cursor.row); - var rightChar = line.substring(cursor.column, cursor.column + 1); - if (rightChar == ')') { - var matching = session.$findOpeningBracket(')', {column: cursor.column + 1, row: cursor.row}); - if (matching !== null && CstyleBehaviour.isAutoInsertedClosing(cursor, line, text)) { - CstyleBehaviour.popAutoInsertedClosing(); - return { - text: '', - selection: [1, 1] - }; - } - } - } - }); - - this.add("parens", "deletion", function (state, action, editor, session, range) { - var selected = session.doc.getTextRange(range); - if (!range.isMultiLine() && selected == '(') { - var line = session.doc.getLine(range.start.row); - var rightChar = line.substring(range.start.column + 1, range.start.column + 2); - if (rightChar == ')') { - range.end.column++; - return range; - } - } - }); - - this.add("brackets", "insertion", function (state, action, editor, session, text) { - if (text == '[') { - var selection = editor.getSelectionRange(); - var selected = session.doc.getTextRange(selection); - if (selected !== "" && editor.getWrapBehavioursEnabled()) { - return { - text: '[' + selected + ']', - selection: false - }; - } else if (CstyleBehaviour.isSaneInsertion(editor, session)) { - CstyleBehaviour.recordAutoInsert(editor, session, "]"); - return { - text: '[]', - selection: [1, 1] - }; - } - } else if (text == ']') { - var cursor = editor.getCursorPosition(); - var line = session.doc.getLine(cursor.row); - var rightChar = line.substring(cursor.column, cursor.column + 1); - if (rightChar == ']') { - var matching = session.$findOpeningBracket(']', {column: cursor.column + 1, row: cursor.row}); - if (matching !== null && CstyleBehaviour.isAutoInsertedClosing(cursor, line, text)) { - CstyleBehaviour.popAutoInsertedClosing(); - return { - text: '', - selection: [1, 1] - }; - } - } - } - }); - - this.add("brackets", "deletion", function (state, action, editor, session, range) { - var selected = session.doc.getTextRange(range); - if (!range.isMultiLine() && selected == '[') { - var line = session.doc.getLine(range.start.row); - var rightChar = line.substring(range.start.column + 1, range.start.column + 2); - if (rightChar == ']') { - range.end.column++; - return range; - } - } - }); - - this.add("string_dquotes", "insertion", function (state, action, editor, session, text) { - if (text == '"' || text == "'") { - var quote = text; - var selection = editor.getSelectionRange(); - var selected = session.doc.getTextRange(selection); - if (selected !== "" && selected !== "'" && selected != '"' && editor.getWrapBehavioursEnabled()) { - return { - text: quote + selected + quote, - selection: false - }; - } else { - var cursor = editor.getCursorPosition(); - var line = session.doc.getLine(cursor.row); - var leftChar = line.substring(cursor.column-1, cursor.column); - if (leftChar == '\\') { - return null; - } - var tokens = session.getTokens(selection.start.row); - var col = 0, token; - var quotepos = -1; // Track whether we're inside an open quote. - - for (var x = 0; x < tokens.length; x++) { - token = tokens[x]; - if (token.type == "string") { - quotepos = -1; - } else if (quotepos < 0) { - quotepos = token.value.indexOf(quote); - } - if ((token.value.length + col) > selection.start.column) { - break; - } - col += tokens[x].value.length; - } - if (!token || (quotepos < 0 && token.type !== "comment" && (token.type !== "string" || ((selection.start.column !== token.value.length+col-1) && token.value.lastIndexOf(quote) === token.value.length-1)))) { - if (!CstyleBehaviour.isSaneInsertion(editor, session)) - return; - return { - text: quote + quote, - selection: [1,1] - }; - } else if (token && token.type === "string") { - var rightChar = line.substring(cursor.column, cursor.column + 1); - if (rightChar == quote) { - return { - text: '', - selection: [1, 1] - }; - } - } - } - } - }); - - this.add("string_dquotes", "deletion", function (state, action, editor, session, range) { - var selected = session.doc.getTextRange(range); - if (!range.isMultiLine() && (selected == '"' || selected == "'")) { - var line = session.doc.getLine(range.start.row); - var rightChar = line.substring(range.start.column + 1, range.start.column + 2); - if (rightChar == selected) { - range.end.column++; - return range; - } - } - }); - -}; - -oop.inherits(CstyleBehaviour, Behaviour); - -exports.CstyleBehaviour = CstyleBehaviour; -}); - -ace.define('ace/mode/folding/cstyle', ['require', 'exports', 'module' , 'ace/lib/oop', 'ace/range', 'ace/mode/folding/fold_mode'], function(require, exports, module) { - - -var oop = require("../../lib/oop"); -var Range = require("../../range").Range; -var BaseFoldMode = require("./fold_mode").FoldMode; - -var FoldMode = exports.FoldMode = function(commentRegex) { - if (commentRegex) { - this.foldingStartMarker = new RegExp( - this.foldingStartMarker.source.replace(/\|[^|]*?$/, "|" + commentRegex.start) - ); - this.foldingStopMarker = new RegExp( - this.foldingStopMarker.source.replace(/\|[^|]*?$/, "|" + commentRegex.end) - ); - } -}; -oop.inherits(FoldMode, BaseFoldMode); - -(function() { - - this.foldingStartMarker = /(\{|\[)[^\}\]]*$|^\s*(\/\*)/; - this.foldingStopMarker = /^[^\[\{]*(\}|\])|^[\s\*]*(\*\/)/; - - this.getFoldWidgetRange = function(session, foldStyle, row, forceMultiline) { - var line = session.getLine(row); - var match = line.match(this.foldingStartMarker); - if (match) { - var i = match.index; - - if (match[1]) - return this.openingBracketBlock(session, match[1], row, i); - - var range = session.getCommentFoldRange(row, i + match[0].length, 1); - - if (range && !range.isMultiLine()) { - if (forceMultiline) { - range = this.getSectionRange(session, row); - } else if (foldStyle != "all") - range = null; - } - - return range; - } - - if (foldStyle === "markbegin") - return; - - var match = line.match(this.foldingStopMarker); - if (match) { - var i = match.index + match[0].length; - - if (match[1]) - return this.closingBracketBlock(session, match[1], row, i); - - return session.getCommentFoldRange(row, i, -1); - } - }; - - this.getSectionRange = function(session, row) { - var line = session.getLine(row); - var startIndent = line.search(/\S/); - var startRow = row; - var startColumn = line.length; - row = row + 1; - var endRow = row; - var maxRow = session.getLength(); - while (++row < maxRow) { - line = session.getLine(row); - var indent = line.search(/\S/); - if (indent === -1) - continue; - if (startIndent > indent) - break; - var subRange = this.getFoldWidgetRange(session, "all", row); - - if (subRange) { - if (subRange.start.row <= startRow) { - break; - } else if (subRange.isMultiLine()) { - row = subRange.end.row; - } else if (startIndent == indent) { - break; - } - } - endRow = row; - } - - return new Range(startRow, startColumn, endRow, session.getLine(endRow).length); - }; - -}).call(FoldMode.prototype); - -}); - -ace.define('ace/mode/css', ['require', 'exports', 'module' , 'ace/lib/oop', 'ace/mode/text', 'ace/tokenizer', 'ace/mode/css_highlight_rules', 'ace/mode/matching_brace_outdent', 'ace/worker/worker_client', 'ace/mode/behaviour/css', 'ace/mode/folding/cstyle'], function(require, exports, module) { - - -var oop = require("../lib/oop"); -var TextMode = require("./text").Mode; -var Tokenizer = require("../tokenizer").Tokenizer; -var CssHighlightRules = require("./css_highlight_rules").CssHighlightRules; -var MatchingBraceOutdent = require("./matching_brace_outdent").MatchingBraceOutdent; -var WorkerClient = require("../worker/worker_client").WorkerClient; -var CssBehaviour = require("./behaviour/css").CssBehaviour; -var CStyleFoldMode = require("./folding/cstyle").FoldMode; - -var Mode = function() { - this.HighlightRules = CssHighlightRules; - this.$outdent = new MatchingBraceOutdent(); - this.$behaviour = new CssBehaviour(); - this.foldingRules = new CStyleFoldMode(); -}; -oop.inherits(Mode, TextMode); - -(function() { - - this.foldingRules = "cStyle"; - this.blockComment = {start: "/*", end: "*/"}; - - this.getNextLineIndent = function(state, line, tab) { - var indent = this.$getIndent(line); - var tokens = this.getTokenizer().getLineTokens(line, state).tokens; - if (tokens.length && tokens[tokens.length-1].type == "comment") { - return indent; - } - - var match = line.match(/^.*\{\s*$/); - if (match) { - indent += tab; - } - - return indent; - }; - - this.checkOutdent = function(state, line, input) { - return this.$outdent.checkOutdent(line, input); - }; - - this.autoOutdent = function(state, doc, row) { - this.$outdent.autoOutdent(doc, row); - }; - - this.createWorker = function(session) { - var worker = new WorkerClient(["ace"], "ace/mode/css_worker", "Worker"); - worker.attachToDocument(session.getDocument()); - - worker.on("csslint", function(e) { - session.setAnnotations(e.data); - }); - - worker.on("terminate", function() { - session.clearAnnotations(); - }); - - return worker; - }; - - this.$id = "ace/mode/css"; -}).call(Mode.prototype); - -exports.Mode = Mode; - -}); - -ace.define('ace/mode/css_highlight_rules', ['require', 'exports', 'module' , 'ace/lib/oop', 'ace/lib/lang', 'ace/mode/text_highlight_rules'], function(require, exports, module) { - - -var oop = require("../lib/oop"); -var lang = require("../lib/lang"); -var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; -var supportType = exports.supportType = "animation-fill-mode|alignment-adjust|alignment-baseline|animation-delay|animation-direction|animation-duration|animation-iteration-count|animation-name|animation-play-state|animation-timing-function|animation|appearance|azimuth|backface-visibility|background-attachment|background-break|background-clip|background-color|background-image|background-origin|background-position|background-repeat|background-size|background|baseline-shift|binding|bleed|bookmark-label|bookmark-level|bookmark-state|bookmark-target|border-bottom|border-bottom-color|border-bottom-left-radius|border-bottom-right-radius|border-bottom-style|border-bottom-width|border-collapse|border-color|border-image|border-image-outset|border-image-repeat|border-image-slice|border-image-source|border-image-width|border-left|border-left-color|border-left-style|border-left-width|border-radius|border-right|border-right-color|border-right-style|border-right-width|border-spacing|border-style|border-top|border-top-color|border-top-left-radius|border-top-right-radius|border-top-style|border-top-width|border-width|border|bottom|box-align|box-decoration-break|box-direction|box-flex-group|box-flex|box-lines|box-ordinal-group|box-orient|box-pack|box-shadow|box-sizing|break-after|break-before|break-inside|caption-side|clear|clip|color-profile|color|column-count|column-fill|column-gap|column-rule|column-rule-color|column-rule-style|column-rule-width|column-span|column-width|columns|content|counter-increment|counter-reset|crop|cue-after|cue-before|cue|cursor|direction|display|dominant-baseline|drop-initial-after-adjust|drop-initial-after-align|drop-initial-before-adjust|drop-initial-before-align|drop-initial-size|drop-initial-value|elevation|empty-cells|fit|fit-position|float-offset|float|font-family|font-size|font-size-adjust|font-stretch|font-style|font-variant|font-weight|font|grid-columns|grid-rows|hanging-punctuation|height|hyphenate-after|hyphenate-before|hyphenate-character|hyphenate-lines|hyphenate-resource|hyphens|icon|image-orientation|image-rendering|image-resolution|inline-box-align|left|letter-spacing|line-height|line-stacking-ruby|line-stacking-shift|line-stacking-strategy|line-stacking|list-style-image|list-style-position|list-style-type|list-style|margin-bottom|margin-left|margin-right|margin-top|margin|mark-after|mark-before|mark|marks|marquee-direction|marquee-play-count|marquee-speed|marquee-style|max-height|max-width|min-height|min-width|move-to|nav-down|nav-index|nav-left|nav-right|nav-up|opacity|orphans|outline-color|outline-offset|outline-style|outline-width|outline|overflow-style|overflow-x|overflow-y|overflow|padding-bottom|padding-left|padding-right|padding-top|padding|page-break-after|page-break-before|page-break-inside|page-policy|page|pause-after|pause-before|pause|perspective-origin|perspective|phonemes|pitch-range|pitch|play-during|pointer-events|position|presentation-level|punctuation-trim|quotes|rendering-intent|resize|rest-after|rest-before|rest|richness|right|rotation-point|rotation|ruby-align|ruby-overhang|ruby-position|ruby-span|size|speak-header|speak-numeral|speak-punctuation|speak|speech-rate|stress|string-set|table-layout|target-name|target-new|target-position|target|text-align-last|text-align|text-decoration|text-emphasis|text-height|text-indent|text-justify|text-outline|text-shadow|text-transform|text-wrap|top|transform-origin|transform-style|transform|transition-delay|transition-duration|transition-property|transition-timing-function|transition|unicode-bidi|vertical-align|visibility|voice-balance|voice-duration|voice-family|voice-pitch-range|voice-pitch|voice-rate|voice-stress|voice-volume|volume|white-space-collapse|white-space|widows|width|word-break|word-spacing|word-wrap|z-index"; -var supportFunction = exports.supportFunction = "rgb|rgba|url|attr|counter|counters"; -var supportConstant = exports.supportConstant = "absolute|after-edge|after|all-scroll|all|alphabetic|always|antialiased|armenian|auto|avoid-column|avoid-page|avoid|balance|baseline|before-edge|before|below|bidi-override|block-line-height|block|bold|bolder|border-box|both|bottom|box|break-all|break-word|capitalize|caps-height|caption|center|central|char|circle|cjk-ideographic|clone|close-quote|col-resize|collapse|column|consider-shifts|contain|content-box|cover|crosshair|cubic-bezier|dashed|decimal-leading-zero|decimal|default|disabled|disc|disregard-shifts|distribute-all-lines|distribute-letter|distribute-space|distribute|dotted|double|e-resize|ease-in|ease-in-out|ease-out|ease|ellipsis|end|exclude-ruby|fill|fixed|georgian|glyphs|grid-height|groove|hand|hanging|hebrew|help|hidden|hiragana-iroha|hiragana|horizontal|icon|ideograph-alpha|ideograph-numeric|ideograph-parenthesis|ideograph-space|ideographic|inactive|include-ruby|inherit|initial|inline-block|inline-box|inline-line-height|inline-table|inline|inset|inside|inter-ideograph|inter-word|invert|italic|justify|katakana-iroha|katakana|keep-all|last|left|lighter|line-edge|line-through|line|linear|list-item|local|loose|lower-alpha|lower-greek|lower-latin|lower-roman|lowercase|lr-tb|ltr|mathematical|max-height|max-size|medium|menu|message-box|middle|move|n-resize|ne-resize|newspaper|no-change|no-close-quote|no-drop|no-open-quote|no-repeat|none|normal|not-allowed|nowrap|nw-resize|oblique|open-quote|outset|outside|overline|padding-box|page|pointer|pre-line|pre-wrap|pre|preserve-3d|progress|relative|repeat-x|repeat-y|repeat|replaced|reset-size|ridge|right|round|row-resize|rtl|s-resize|scroll|se-resize|separate|slice|small-caps|small-caption|solid|space|square|start|static|status-bar|step-end|step-start|steps|stretch|strict|sub|super|sw-resize|table-caption|table-cell|table-column-group|table-column|table-footer-group|table-header-group|table-row-group|table-row|table|tb-rl|text-after-edge|text-before-edge|text-bottom|text-size|text-top|text|thick|thin|transparent|underline|upper-alpha|upper-latin|upper-roman|uppercase|use-script|vertical-ideographic|vertical-text|visible|w-resize|wait|whitespace|z-index|zero"; -var supportConstantColor = exports.supportConstantColor = "aqua|black|blue|fuchsia|gray|green|lime|maroon|navy|olive|orange|purple|red|silver|teal|white|yellow"; -var supportConstantFonts = exports.supportConstantFonts = "arial|century|comic|courier|garamond|georgia|helvetica|impact|lucida|symbol|system|tahoma|times|trebuchet|utopia|verdana|webdings|sans-serif|serif|monospace"; - -var numRe = exports.numRe = "\\-?(?:(?:[0-9]+)|(?:[0-9]*\\.[0-9]+))"; -var pseudoElements = exports.pseudoElements = "(\\:+)\\b(after|before|first-letter|first-line|moz-selection|selection)\\b"; -var pseudoClasses = exports.pseudoClasses = "(:)\\b(active|checked|disabled|empty|enabled|first-child|first-of-type|focus|hover|indeterminate|invalid|last-child|last-of-type|link|not|nth-child|nth-last-child|nth-last-of-type|nth-of-type|only-child|only-of-type|required|root|target|valid|visited)\\b"; - -var CssHighlightRules = function() { - - var keywordMapper = this.createKeywordMapper({ - "support.function": supportFunction, - "support.constant": supportConstant, - "support.type": supportType, - "support.constant.color": supportConstantColor, - "support.constant.fonts": supportConstantFonts - }, "text", true); - - this.$rules = { - "start" : [{ - token : "comment", // multi line comment - regex : "\\/\\*", - push : "comment" - }, { - token: "paren.lparen", - regex: "\\{", - push: "ruleset" - }, { - token: "string", - regex: "@.*?{", - push: "media" - }, { - token: "keyword", - regex: "#[a-z0-9-_]+" - }, { - token: "variable", - regex: "\\.[a-z0-9-_]+" - }, { - token: "string", - regex: ":[a-z0-9-_]+" - }, { - token: "constant", - regex: "[a-z0-9-_]+" - }, { - caseInsensitive: true - }], - - "media" : [{ - token : "comment", // multi line comment - regex : "\\/\\*", - push : "comment" - }, { - token: "paren.lparen", - regex: "\\{", - push: "ruleset" - }, { - token: "string", - regex: "\\}", - next: "pop" - }, { - token: "keyword", - regex: "#[a-z0-9-_]+" - }, { - token: "variable", - regex: "\\.[a-z0-9-_]+" - }, { - token: "string", - regex: ":[a-z0-9-_]+" - }, { - token: "constant", - regex: "[a-z0-9-_]+" - }, { - caseInsensitive: true - }], - - "comment" : [{ - token : "comment", - regex : "\\*\\/", - next : "pop" - }, { - defaultToken : "comment" - }], - - "ruleset" : [ - { - token : "paren.rparen", - regex : "\\}", - next: "pop" - }, { - token : "comment", // multi line comment - regex : "\\/\\*", - push : "comment" - }, { - token : "string", // single line - regex : '["](?:(?:\\\\.)|(?:[^"\\\\]))*?["]' - }, { - token : "string", // single line - regex : "['](?:(?:\\\\.)|(?:[^'\\\\]))*?[']" - }, { - token : ["constant.numeric", "keyword"], - regex : "(" + numRe + ")(ch|cm|deg|em|ex|fr|gd|grad|Hz|in|kHz|mm|ms|pc|pt|px|rad|rem|s|turn|vh|vm|vw|%)" - }, { - token : "constant.numeric", - regex : numRe - }, { - token : "constant.numeric", // hex6 color - regex : "#[a-f0-9]{6}" - }, { - token : "constant.numeric", // hex3 color - regex : "#[a-f0-9]{3}" - }, { - token : ["punctuation", "entity.other.attribute-name.pseudo-element.css"], - regex : pseudoElements - }, { - token : ["punctuation", "entity.other.attribute-name.pseudo-class.css"], - regex : pseudoClasses - }, { - token : ["support.function", "string", "support.function"], - regex : "(url\\()(.*)(\\))" - }, { - token : keywordMapper, - regex : "\\-?[a-zA-Z_][a-zA-Z0-9_\\-]*" - }, { - caseInsensitive: true - }] - }; - - this.normalizeRules(); -}; - -oop.inherits(CssHighlightRules, TextHighlightRules); - -exports.CssHighlightRules = CssHighlightRules; - -}); - -ace.define('ace/mode/behaviour/css', ['require', 'exports', 'module' , 'ace/lib/oop', 'ace/mode/behaviour', 'ace/mode/behaviour/cstyle', 'ace/token_iterator'], function(require, exports, module) { - - -var oop = require("../../lib/oop"); -var Behaviour = require("../behaviour").Behaviour; -var CstyleBehaviour = require("./cstyle").CstyleBehaviour; -var TokenIterator = require("../../token_iterator").TokenIterator; - -var CssBehaviour = function () { - - this.inherit(CstyleBehaviour); - - this.add("colon", "insertion", function (state, action, editor, session, text) { - if (text === ':') { - var cursor = editor.getCursorPosition(); - var iterator = new TokenIterator(session, cursor.row, cursor.column); - var token = iterator.getCurrentToken(); - if (token && token.value.match(/\s+/)) { - token = iterator.stepBackward(); - } - if (token && token.type === 'support.type') { - var line = session.doc.getLine(cursor.row); - var rightChar = line.substring(cursor.column, cursor.column + 1); - if (rightChar === ':') { - return { - text: '', - selection: [1, 1] - } - } - if (!line.substring(cursor.column).match(/^\s*;/)) { - return { - text: ':;', - selection: [1, 1] - } - } - } - } - }); - - this.add("colon", "deletion", function (state, action, editor, session, range) { - var selected = session.doc.getTextRange(range); - if (!range.isMultiLine() && selected === ':') { - var cursor = editor.getCursorPosition(); - var iterator = new TokenIterator(session, cursor.row, cursor.column); - var token = iterator.getCurrentToken(); - if (token && token.value.match(/\s+/)) { - token = iterator.stepBackward(); - } - if (token && token.type === 'support.type') { - var line = session.doc.getLine(range.start.row); - var rightChar = line.substring(range.end.column, range.end.column + 1); - if (rightChar === ';') { - range.end.column ++; - return range; - } - } - } - }); - - this.add("semicolon", "insertion", function (state, action, editor, session, text) { - if (text === ';') { - var cursor = editor.getCursorPosition(); - var line = session.doc.getLine(cursor.row); - var rightChar = line.substring(cursor.column, cursor.column + 1); - if (rightChar === ';') { - return { - text: '', - selection: [1, 1] - } - } - } - }); - -} -oop.inherits(CssBehaviour, CstyleBehaviour); - -exports.CssBehaviour = CssBehaviour; -}); - -ace.define('ace/mode/html_highlight_rules', ['require', 'exports', 'module' , 'ace/lib/oop', 'ace/lib/lang', 'ace/mode/css_highlight_rules', 'ace/mode/javascript_highlight_rules', 'ace/mode/xml_highlight_rules'], function(require, exports, module) { - - -var oop = require("../lib/oop"); -var lang = require("../lib/lang"); -var CssHighlightRules = require("./css_highlight_rules").CssHighlightRules; -var JavaScriptHighlightRules = require("./javascript_highlight_rules").JavaScriptHighlightRules; -var XmlHighlightRules = require("./xml_highlight_rules").XmlHighlightRules; - -var tagMap = lang.createMap({ - a : 'anchor', - button : 'form', - form : 'form', - img : 'image', - input : 'form', - label : 'form', - option : 'form', - script : 'script', - select : 'form', - textarea : 'form', - style : 'style', - table : 'table', - tbody : 'table', - td : 'table', - tfoot : 'table', - th : 'table', - tr : 'table' -}); - -var HtmlHighlightRules = function() { - XmlHighlightRules.call(this); - - this.addRules({ - attributes: [{ - include : "space" - }, { - token : "entity.other.attribute-name", - regex : "[-_a-zA-Z0-9:]+" - }, { - token : "keyword.operator.separator", - regex : "=", - push : [{ - include: "space" - }, { - token : "string", - regex : "[^<>='\"`\\s]+", - next : "pop" - }, { - token : "empty", - regex : "", - next : "pop" - }] - }, { - include : "string" - }], - tag: [{ - token : function(start, tag) { - var group = tagMap[tag]; - return ["meta.tag.punctuation.begin", - "meta.tag.name" + (group ? "." + group : "")]; - }, - regex : "(<)([-_a-zA-Z0-9:]+)", - next: "start_tag_stuff" - }, { - token : function(start, tag) { - var group = tagMap[tag]; - return ["meta.tag.punctuation.begin", - "meta.tag.name" + (group ? "." + group : "")]; - }, - regex : "(", next : "start"} - ], - end_tag_stuff: [ - {include : "space"}, - {token : "meta.tag.punctuation.end", regex : ">", next : "start"} - ] - }); - - this.embedTagRules(CssHighlightRules, "css-", "style"); - this.embedTagRules(JavaScriptHighlightRules, "js-", "script"); - - if (this.constructor === HtmlHighlightRules) - this.normalizeRules(); -}; - -oop.inherits(HtmlHighlightRules, XmlHighlightRules); - -exports.HtmlHighlightRules = HtmlHighlightRules; -}); - -ace.define('ace/mode/xml_highlight_rules', ['require', 'exports', 'module' , 'ace/lib/oop', 'ace/mode/xml_util', 'ace/mode/text_highlight_rules'], function(require, exports, module) { - - -var oop = require("../lib/oop"); -var xmlUtil = require("./xml_util"); -var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; - -var XmlHighlightRules = function(normalize) { - this.$rules = { - start : [ - {token : "punctuation.string.begin", regex : "<\\!\\[CDATA\\[", next : "cdata"}, - { - token : ["punctuation.instruction.begin", "keyword.instruction"], - regex : "(<\\?)(xml)(?=[\\s])", next : "xml_declaration" - }, - { - token : ["punctuation.instruction.begin", "keyword.instruction"], - regex : "(<\\?)([-_a-zA-Z0-9]+)", next : "instruction" - }, - {token : "comment", regex : "<\\!--", next : "comment"}, - { - token : ["punctuation.doctype.begin", "meta.tag.doctype"], - regex : "(<\\!)(DOCTYPE)(?=[\\s])", next : "doctype" - }, - {include : "tag"}, - {include : "reference"} - ], - - xml_declaration : [ - {include : "attributes"}, - {include : "instruction"} - ], - - instruction : [ - {token : "punctuation.instruction.end", regex : "\\?>", next : "start"} - ], - - doctype : [ - {include : "space"}, - {include : "string"}, - {token : "punctuation.doctype.end", regex : ">", next : "start"}, - {token : "xml-pe", regex : "[-_a-zA-Z0-9:]+"}, - {token : "punctuation.begin", regex : "\\[", push : "declarations"} - ], - - declarations : [{ - token : "text", - regex : "\\s+" - }, { - token: "punctuation.end", - regex: "]", - next: "pop" - }, { - token : ["punctuation.begin", "keyword"], - regex : "(<\\!)([-_a-zA-Z0-9]+)", - push : [{ - token : "text", - regex : "\\s+" - }, - { - token : "punctuation.end", - regex : ">", - next : "pop" - }, - {include : "string"}] - }], - - cdata : [ - {token : "string.end", regex : "\\]\\]>", next : "start"}, - {token : "text", regex : "\\s+"}, - {token : "text", regex : "(?:[^\\]]|\\](?!\\]>))+"} - ], - - comment : [ - {token : "comment", regex : "-->", next : "start"}, - {defaultToken : "comment"} - ], - - tag : [{ - token : ["meta.tag.punctuation.begin", "meta.tag.name"], - regex : "(<)((?:[-_a-zA-Z0-9]+:)?[-_a-zA-Z0-9]+)", - next: [ - {include : "attributes"}, - {token : "meta.tag.punctuation.end", regex : "/?>", next : "start"} - ] - }, { - token : ["meta.tag.punctuation.begin", "meta.tag.name"], - regex : "(", next : "start"} - ] - }], - - space : [ - {token : "text", regex : "\\s+"} - ], - - reference : [{ - token : "constant.language.escape", - regex : "(?:&#[0-9]+;)|(?:&#x[0-9a-fA-F]+;)|(?:&[a-zA-Z0-9_:\\.-]+;)" - }, { - token : "text", regex : "&" - }], - - string: [{ - token : "string", - regex : "'", - push : "qstring_inner" - }, { - token : "string", - regex : '"', - push : "qqstring_inner" - }], - - qstring_inner: [ - {token : "string", regex: "'", next: "pop"}, - {include : "reference"}, - {defaultToken : "string"} - ], - - qqstring_inner: [ - {token : "string", regex: '"', next: "pop"}, - {include : "reference"}, - {defaultToken : "string"} - ], - - attributes: [{ - token : "entity.other.attribute-name", - regex : "(?:[-_a-zA-Z0-9]+:)?[-_a-zA-Z0-9]+" - }, { - token : "keyword.operator.separator", - regex : "=" - }, { - include : "space" - }, { - include : "string" - }] - }; - - if (this.constructor === XmlHighlightRules) - this.normalizeRules(); -}; - - -(function() { - - this.embedTagRules = function(HighlightRules, prefix, tag){ - this.$rules.tag.unshift({ - token : ["meta.tag.punctuation.begin", "meta.tag.name." + tag], - regex : "(<)(" + tag + ")", - next: [ - {include : "space"}, - {include : "attributes"}, - {token : "meta.tag.punctuation.end", regex : "/?>", next : prefix + "start"} - ] - }); - - this.$rules[tag + "-end"] = [ - {include : "space"}, - {token : "meta.tag.punctuation.end", regex : ">", next: "start", - onMatch : function(value, currentState, stack) { - stack.splice(0); - return this.token; - }} - ] - - this.embedRules(HighlightRules, prefix, [{ - token: ["meta.tag.punctuation.begin", "meta.tag.name." + tag], - regex : "(" - }]); - }; - -}).call(TextHighlightRules.prototype); - -oop.inherits(XmlHighlightRules, TextHighlightRules); - -exports.XmlHighlightRules = XmlHighlightRules; -}); - -ace.define('ace/mode/xml_util', ['require', 'exports', 'module' ], function(require, exports, module) { - - -function string(state) { - return [{ - token : "string", - regex : '"', - next : state + "_qqstring" - }, { - token : "string", - regex : "'", - next : state + "_qstring" - }]; -} - -function multiLineString(quote, state) { - return [ - {token : "string", regex : quote, next : state}, - { - token : "constant.language.escape", - regex : "(?:&#[0-9]+;)|(?:&#x[0-9a-fA-F]+;)|(?:&[a-zA-Z0-9_:\\.-]+;)" - }, - {defaultToken : "string"} - ]; -} - -exports.tag = function(states, name, nextState, tagMap) { - states[name] = [{ - token : "text", - regex : "\\s+" - }, { - - token : !tagMap ? "meta.tag.tag-name" : function(value) { - if (tagMap[value]) - return "meta.tag.tag-name." + tagMap[value]; - else - return "meta.tag.tag-name"; - }, - regex : "[-_a-zA-Z0-9:]+", - next : name + "_embed_attribute_list" - }, { - token: "empty", - regex: "", - next : name + "_embed_attribute_list" - }]; - - states[name + "_qstring"] = multiLineString("'", name + "_embed_attribute_list"); - states[name + "_qqstring"] = multiLineString("\"", name + "_embed_attribute_list"); - - states[name + "_embed_attribute_list"] = [{ - token : "meta.tag.r", - regex : "/?>", - next : nextState - }, { - token : "keyword.operator", - regex : "=" - }, { - token : "entity.other.attribute-name", - regex : "[-_a-zA-Z0-9:]+" - }, { - token : "constant.numeric", // float - regex : "[+-]?\\d+(?:(?:\\.\\d*)?(?:[eE][+-]?\\d+)?)?\\b" - }, { - token : "text", - regex : "\\s+" - }].concat(string(name)); -}; - -}); - -ace.define('ace/mode/behaviour/html', ['require', 'exports', 'module' , 'ace/lib/oop', 'ace/mode/behaviour/xml', 'ace/mode/behaviour/cstyle', 'ace/token_iterator'], function(require, exports, module) { - - -var oop = require("../../lib/oop"); -var XmlBehaviour = require("../behaviour/xml").XmlBehaviour; -var CstyleBehaviour = require("./cstyle").CstyleBehaviour; -var TokenIterator = require("../../token_iterator").TokenIterator; -var voidElements = ['area', 'base', 'br', 'col', 'command', 'embed', 'hr', 'img', 'input', 'keygen', 'link', 'meta', 'param', 'source', 'track', 'wbr']; - -function hasType(token, type) { - var tokenTypes = token.type.split('.'); - return type.split('.').every(function(type){ - return (tokenTypes.indexOf(type) !== -1); - }); - return hasType; -} - -var HtmlBehaviour = function () { - - this.inherit(XmlBehaviour); // Get xml behaviour - - this.add("autoclosing", "insertion", function (state, action, editor, session, text) { - if (text == '>') { - var position = editor.getCursorPosition(); - var iterator = new TokenIterator(session, position.row, position.column); - var token = iterator.getCurrentToken(); - - if (token && hasType(token, 'string') && iterator.getCurrentTokenColumn() + token.value.length > position.column) - return; - var atCursor = false; - if (!token || !hasType(token, 'meta.tag') && !(hasType(token, 'text') && token.value.match('/'))){ - do { - token = iterator.stepBackward(); - } while (token && (hasType(token, 'string') || hasType(token, 'keyword.operator') || hasType(token, 'entity.attribute-name') || hasType(token, 'text'))); - } else { - atCursor = true; - } - if (!token || !hasType(token, 'meta.tag.name') || iterator.stepBackward().value.match('/')) { - return; - } - var element = token.value; - if (atCursor){ - var element = element.substring(0, position.column - token.start); - } - if (voidElements.indexOf(element) !== -1){ - return; - } - return { - text: '>' + '', - selection: [1, 1] - } - } - }); -} -oop.inherits(HtmlBehaviour, XmlBehaviour); - -exports.HtmlBehaviour = HtmlBehaviour; -}); - -ace.define('ace/mode/behaviour/xml', ['require', 'exports', 'module' , 'ace/lib/oop', 'ace/mode/behaviour', 'ace/mode/behaviour/cstyle', 'ace/token_iterator'], function(require, exports, module) { - - -var oop = require("../../lib/oop"); -var Behaviour = require("../behaviour").Behaviour; -var CstyleBehaviour = require("./cstyle").CstyleBehaviour; -var TokenIterator = require("../../token_iterator").TokenIterator; - -function hasType(token, type) { - var tokenTypes = token.type.split('.'); - return type.split('.').every(function(type){ - return (tokenTypes.indexOf(type) !== -1); - }); - return hasType; -} - -var XmlBehaviour = function () { - - this.inherit(CstyleBehaviour, ["string_dquotes"]); // Get string behaviour - - this.add("autoclosing", "insertion", function (state, action, editor, session, text) { - if (text == '>') { - var position = editor.getCursorPosition(); - var iterator = new TokenIterator(session, position.row, position.column); - var token = iterator.getCurrentToken(); - - if (token && hasType(token, 'string') && iterator.getCurrentTokenColumn() + token.value.length > position.column) - return; - var atCursor = false; - if (!token || !hasType(token, 'meta.tag') && !(hasType(token, 'text') && token.value.match('/'))){ - do { - token = iterator.stepBackward(); - } while (token && (hasType(token, 'string') || hasType(token, 'keyword.operator') || hasType(token, 'entity.attribute-name') || hasType(token, 'text'))); - } else { - atCursor = true; - } - if (!token || !hasType(token, 'meta.tag.name') || iterator.stepBackward().value.match('/')) { - return; - } - var tag = token.value; - if (atCursor){ - var tag = tag.substring(0, position.column - token.start); - } - - return { - text: '>' + '', - selection: [1, 1] - } - } - }); - - this.add('autoindent', 'insertion', function (state, action, editor, session, text) { - if (text == "\n") { - var cursor = editor.getCursorPosition(); - var line = session.getLine(cursor.row); - var rightChars = line.substring(cursor.column, cursor.column + 2); - if (rightChars == '?)/; - this._parseTag = function(tag) { - - var match = tag.match(this.tagRe); - var column = 0; - - return { - value: tag, - match: match ? match[2] : "", - closing: match ? !!match[3] : false, - selfClosing: match ? !!match[5] || match[2] == "/>" : false, - tagName: match ? match[4] : "", - column: match[1] ? column + match[1].length : column - }; - }; - this._readTagForward = function(iterator) { - var token = iterator.getCurrentToken(); - if (!token) - return null; - - var value = ""; - var start; - - do { - if (token.type.lastIndexOf("meta.tag", 0) === 0) { - if (!start) { - var start = { - row: iterator.getCurrentTokenRow(), - column: iterator.getCurrentTokenColumn() - }; - } - value += token.value; - if (value.indexOf(">") !== -1) { - var tag = this._parseTag(value); - tag.start = start; - tag.end = { - row: iterator.getCurrentTokenRow(), - column: iterator.getCurrentTokenColumn() + token.value.length - }; - iterator.stepForward(); - return tag; - } - } - } while(token = iterator.stepForward()); - - return null; - }; - - this._readTagBackward = function(iterator) { - var token = iterator.getCurrentToken(); - if (!token) - return null; - - var value = ""; - var end; - - do { - if (token.type.lastIndexOf("meta.tag", 0) === 0) { - if (!end) { - end = { - row: iterator.getCurrentTokenRow(), - column: iterator.getCurrentTokenColumn() + token.value.length - }; - } - value = token.value + value; - if (value.indexOf("<") !== -1) { - var tag = this._parseTag(value); - tag.end = end; - tag.start = { - row: iterator.getCurrentTokenRow(), - column: iterator.getCurrentTokenColumn() - }; - iterator.stepBackward(); - return tag; - } - } - } while(token = iterator.stepBackward()); - - return null; - }; - - this._pop = function(stack, tag) { - while (stack.length) { - - var top = stack[stack.length-1]; - if (!tag || top.tagName == tag.tagName) { - return stack.pop(); - } - else if (this.voidElements[tag.tagName]) { - return; - } - else if (this.voidElements[top.tagName]) { - stack.pop(); - continue; - } else { - return null; - } - } - }; - - this.getFoldWidgetRange = function(session, foldStyle, row) { - var firstTag = this._getFirstTagInLine(session, row); - - if (!firstTag.match) - return null; - - var isBackward = firstTag.closing || firstTag.selfClosing; - var stack = []; - var tag; - - if (!isBackward) { - var iterator = new TokenIterator(session, row, firstTag.column); - var start = { - row: row, - column: firstTag.column + firstTag.tagName.length + 2 - }; - while (tag = this._readTagForward(iterator)) { - if (tag.selfClosing) { - if (!stack.length) { - tag.start.column += tag.tagName.length + 2; - tag.end.column -= 2; - return Range.fromPoints(tag.start, tag.end); - } else - continue; - } - - if (tag.closing) { - this._pop(stack, tag); - if (stack.length == 0) - return Range.fromPoints(start, tag.start); - } - else { - stack.push(tag) - } - } - } - else { - var iterator = new TokenIterator(session, row, firstTag.column + firstTag.match.length); - var end = { - row: row, - column: firstTag.column - }; - - while (tag = this._readTagBackward(iterator)) { - if (tag.selfClosing) { - if (!stack.length) { - tag.start.column += tag.tagName.length + 2; - tag.end.column -= 2; - return Range.fromPoints(tag.start, tag.end); - } else - continue; - } - - if (!tag.closing) { - this._pop(stack, tag); - if (stack.length == 0) { - tag.start.column += tag.tagName.length + 2; - return Range.fromPoints(tag.start, end); - } - } - else { - stack.push(tag) - } - } - } - - }; - -}).call(FoldMode.prototype); - -}); - -ace.define('ace/mode/html_completions', ['require', 'exports', 'module' , 'ace/token_iterator'], function(require, exports, module) { - - -var TokenIterator = require("../token_iterator").TokenIterator; - -var commonAttributes = [ - "accesskey", - "class", - "contenteditable", - "contextmenu", - "dir", - "draggable", - "dropzone", - "hidden", - "id", - "lang", - "spellcheck", - "style", - "tabindex", - "title", - "translate" -]; - -var eventAttributes = [ - "onabort", - "onblur", - "oncancel", - "oncanplay", - "oncanplaythrough", - "onchange", - "onclick", - "onclose", - "oncontextmenu", - "oncuechange", - "ondblclick", - "ondrag", - "ondragend", - "ondragenter", - "ondragleave", - "ondragover", - "ondragstart", - "ondrop", - "ondurationchange", - "onemptied", - "onended", - "onerror", - "onfocus", - "oninput", - "oninvalid", - "onkeydown", - "onkeypress", - "onkeyup", - "onload", - "onloadeddata", - "onloadedmetadata", - "onloadstart", - "onmousedown", - "onmousemove", - "onmouseout", - "onmouseover", - "onmouseup", - "onmousewheel", - "onpause", - "onplay", - "onplaying", - "onprogress", - "onratechange", - "onreset", - "onscroll", - "onseeked", - "onseeking", - "onselect", - "onshow", - "onstalled", - "onsubmit", - "onsuspend", - "ontimeupdate", - "onvolumechange", - "onwaiting" -]; - -var globalAttributes = commonAttributes.concat(eventAttributes); - -var attributeMap = { - "html": ["manifest"], - "head": [], - "title": [], - "base": ["href", "target"], - "link": ["href", "hreflang", "rel", "media", "type", "sizes"], - "meta": ["http-equiv", "name", "content", "charset"], - "style": ["type", "media", "scoped"], - "script": ["charset", "type", "src", "defer", "async"], - "noscript": ["href"], - "body": ["onafterprint", "onbeforeprint", "onbeforeunload", "onhashchange", "onmessage", "onoffline", "onpopstate", "onredo", "onresize", "onstorage", "onundo", "onunload"], - "section": [], - "nav": [], - "article": ["pubdate"], - "aside": [], - "h1": [], - "h2": [], - "h3": [], - "h4": [], - "h5": [], - "h6": [], - "header": [], - "footer": [], - "address": [], - "main": [], - "p": [], - "hr": [], - "pre": [], - "blockquote": ["cite"], - "ol": ["start", "reversed"], - "ul": [], - "li": ["value"], - "dl": [], - "dt": [], - "dd": [], - "figure": [], - "figcaption": [], - "div": [], - "a": ["href", "target", "ping", "rel", "media", "hreflang", "type"], - "em": [], - "strong": [], - "small": [], - "s": [], - "cite": [], - "q": ["cite"], - "dfn": [], - "abbr": [], - "data": [], - "time": ["datetime"], - "code": [], - "var": [], - "samp": [], - "kbd": [], - "sub": [], - "sup": [], - "i": [], - "b": [], - "u": [], - "mark": [], - "ruby": [], - "rt": [], - "rp": [], - "bdi": [], - "bdo": [], - "span": [], - "br": [], - "wbr": [], - "ins": ["cite", "datetime"], - "del": ["cite", "datetime"], - "img": ["alt", "src", "height", "width", "usemap", "ismap"], - "iframe": ["name", "src", "height", "width", "sandbox", "seamless"], - "embed": ["src", "height", "width", "type"], - "object": ["param", "data", "type", "height" , "width", "usemap", "name", "form", "classid"], - "param": ["name", "value"], - "video": ["src", "autobuffer", "autoplay", "loop", "controls", "width", "height", "poster"], - "audio": ["src", "autobuffer", "autoplay", "loop", "controls"], - "source": ["src", "type", "media"], - "track": ["kind", "src", "srclang", "label", "default"], - "canvas": ["width", "height"], - "map": ["name"], - "area": ["shape", "coords", "href", "hreflang", "alt", "target", "media", "rel", "ping", "type"], - "svg": [], - "math": [], - "table": ["summary"], - "caption": [], - "colgroup": ["span"], - "col": ["span"], - "tbody": [], - "thead": [], - "tfoot": [], - "tr": [], - "td": ["headers", "rowspan", "colspan"], - "th": ["headers", "rowspan", "colspan", "scope"], - "form": ["accept-charset", "action", "autocomplete", "enctype", "method", "name", "novalidate", "target"], - "fieldset": ["disabled", "form", "name"], - "legend": [], - "label": ["form", "for"], - "input": ["type", "accept", "alt", "autocomplete", "checked", "disabled", "form", "formaction", "formenctype", "formmethod", "formnovalidate", "formtarget", "height", "list", "max", "maxlength", "min", "multiple", "pattern", "placeholder", "readonly", "required", "size", "src", "step", "width", "files", "value"], - "button": ["autofocus", "disabled", "form", "formaction", "formenctype", "formmethod", "formnovalidate", "formtarget", "name", "value", "type"], - "select": ["autofocus", "disabled", "form", "multiple", "name", "size"], - "datalist": [], - "optgroup": ["disabled", "label"], - "option": ["disabled", "selected", "label", "value"], - "textarea": ["autofocus", "disabled", "form", "maxlength", "name", "placeholder", "readonly", "required", "rows", "cols", "wrap"], - "keygen": ["autofocus", "challenge", "disabled", "form", "keytype", "name"], - "output": ["for", "form", "name"], - "progress": ["value", "max"], - "meter": ["value", "min", "max", "low", "high", "optimum"], - "details": ["open"], - "summary": [], - "command": ["type", "label", "icon", "disabled", "checked", "radiogroup", "command"], - "menu": ["type", "label"], - "dialog": ["open"] -}; - -var allElements = Object.keys(attributeMap); - -function hasType(token, type) { - var tokenTypes = token.type.split('.'); - return type.split('.').every(function(type){ - return (tokenTypes.indexOf(type) !== -1); - }); -} - -function findTagName(session, pos) { - var iterator = new TokenIterator(session, pos.row, pos.column); - var token = iterator.getCurrentToken(); - if (!token || !hasType(token, 'tag') && !(hasType(token, 'text') && token.value.match('/'))){ - do { - token = iterator.stepBackward(); - } while (token && (hasType(token, 'string') || hasType(token, 'operator') || hasType(token, 'attribute-name') || hasType(token, 'text'))); - } - if (token && hasType(token, 'tag-name') && !iterator.stepBackward().value.match('/')) - return token.value; -} - -var HtmlCompletions = function() { - -}; - -(function() { - - this.getCompletions = function(state, session, pos, prefix) { - var token = session.getTokenAt(pos.row, pos.column); - - if (!token) - return []; - if (hasType(token, "tag-name") || (token.value == '<' && hasType(token, "text"))) - return this.getTagCompletions(state, session, pos, prefix); - if (hasType(token, 'text') || hasType(token, 'attribute-name')) - return this.getAttributeCompetions(state, session, pos, prefix); - - return []; - }; - - this.getTagCompletions = function(state, session, pos, prefix) { - var elements = allElements; - if (prefix) { - elements = elements.filter(function(element){ - return element.indexOf(prefix) === 0; - }); - } - return elements.map(function(element){ - return { - value: element, - meta: "tag" - }; - }); - }; - - this.getAttributeCompetions = function(state, session, pos, prefix) { - var tagName = findTagName(session, pos); - if (!tagName) - return []; - var attributes = globalAttributes; - if (tagName in attributeMap) { - attributes = attributes.concat(attributeMap[tagName]); - } - if (prefix) { - attributes = attributes.filter(function(attribute){ - return attribute.indexOf(prefix) === 0; - }); - } - return attributes.map(function(attribute){ - return { - caption: attribute, - snippet: attribute + '="$0"', - meta: "attribute" - }; - }); - }; - -}).call(HtmlCompletions.prototype); - -exports.HtmlCompletions = HtmlCompletions; -}); diff --git a/IDE/jsrealb-ide/ace-src-noconflict/mode-dot.js b/IDE/jsrealb-ide/ace-src-noconflict/mode-dot.js deleted file mode 100644 index 703fafd1..00000000 --- a/IDE/jsrealb-ide/ace-src-noconflict/mode-dot.js +++ /dev/null @@ -1,361 +0,0 @@ -ace.define('ace/mode/dot', ['require', 'exports', 'module' , 'ace/lib/oop', 'ace/mode/text', 'ace/tokenizer', 'ace/mode/matching_brace_outdent', 'ace/mode/dot_highlight_rules', 'ace/mode/folding/cstyle'], function(require, exports, module) { - - -var oop = require("../lib/oop"); -var TextMode = require("./text").Mode; -var Tokenizer = require("../tokenizer").Tokenizer; -var MatchingBraceOutdent = require("./matching_brace_outdent").MatchingBraceOutdent; -var DotHighlightRules = require("./dot_highlight_rules").DotHighlightRules; -var DotFoldMode = require("./folding/cstyle").FoldMode; - -var Mode = function() { - this.HighlightRules = DotHighlightRules; - this.$outdent = new MatchingBraceOutdent(); - this.foldingRules = new DotFoldMode(); -}; -oop.inherits(Mode, TextMode); - -(function() { - - this.lineCommentStart = ["//", "#"]; - this.blockComment = {start: "/*", end: "*/"}; - - this.getNextLineIndent = function(state, line, tab) { - var indent = this.$getIndent(line); - - var tokenizedLine = this.getTokenizer().getLineTokens(line, state); - var tokens = tokenizedLine.tokens; - var endState = tokenizedLine.state; - - if (tokens.length && tokens[tokens.length-1].type == "comment") { - return indent; - } - - if (state == "start") { - var match = line.match(/^.*(?:\bcase\b.*\:|[\{\(\[])\s*$/); - if (match) { - indent += tab; - } - } - - return indent; - }; - - this.checkOutdent = function(state, line, input) { - return this.$outdent.checkOutdent(line, input); - }; - - this.autoOutdent = function(state, doc, row) { - this.$outdent.autoOutdent(doc, row); - }; - - this.$id = "ace/mode/dot"; -}).call(Mode.prototype); - -exports.Mode = Mode; -}); - -ace.define('ace/mode/matching_brace_outdent', ['require', 'exports', 'module' , 'ace/range'], function(require, exports, module) { - - -var Range = require("../range").Range; - -var MatchingBraceOutdent = function() {}; - -(function() { - - this.checkOutdent = function(line, input) { - if (! /^\s+$/.test(line)) - return false; - - return /^\s*\}/.test(input); - }; - - this.autoOutdent = function(doc, row) { - var line = doc.getLine(row); - var match = line.match(/^(\s*\})/); - - if (!match) return 0; - - var column = match[1].length; - var openBracePos = doc.findMatchingBracket({row: row, column: column}); - - if (!openBracePos || openBracePos.row == row) return 0; - - var indent = this.$getIndent(doc.getLine(openBracePos.row)); - doc.replace(new Range(row, 0, row, column-1), indent); - }; - - this.$getIndent = function(line) { - return line.match(/^\s*/)[0]; - }; - -}).call(MatchingBraceOutdent.prototype); - -exports.MatchingBraceOutdent = MatchingBraceOutdent; -}); -ace.define('ace/mode/dot_highlight_rules', ['require', 'exports', 'module' , 'ace/lib/oop', 'ace/lib/lang', 'ace/mode/text_highlight_rules', 'ace/mode/doc_comment_highlight_rules'], function(require, exports, module) { - - -var oop = require("../lib/oop"); -var lang = require("../lib/lang"); -var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; -var DocCommentHighlightRules = require("./doc_comment_highlight_rules").DocCommentHighlightRules; - -var DotHighlightRules = function() { - - var keywords = lang.arrayToMap( - ("strict|node|edge|graph|digraph|subgraph").split("|") - ); - - var attributes = lang.arrayToMap( - ("damping|k|url|area|arrowhead|arrowsize|arrowtail|aspect|bb|bgcolor|center|charset|clusterrank|color|colorscheme|comment|compound|concentrate|constraint|decorate|defaultdist|dim|dimen|dir|diredgeconstraints|distortion|dpi|edgeurl|edgehref|edgetarget|edgetooltip|epsilon|esep|fillcolor|fixedsize|fontcolor|fontname|fontnames|fontpath|fontsize|forcelabels|gradientangle|group|headurl|head_lp|headclip|headhref|headlabel|headport|headtarget|headtooltip|height|href|id|image|imagepath|imagescale|label|labelurl|label_scheme|labelangle|labeldistance|labelfloat|labelfontcolor|labelfontname|labelfontsize|labelhref|labeljust|labelloc|labeltarget|labeltooltip|landscape|layer|layerlistsep|layers|layerselect|layersep|layout|len|levels|levelsgap|lhead|lheight|lp|ltail|lwidth|margin|maxiter|mclimit|mindist|minlen|mode|model|mosek|nodesep|nojustify|normalize|nslimit|nslimit1|ordering|orientation|outputorder|overlap|overlap_scaling|pack|packmode|pad|page|pagedir|pencolor|penwidth|peripheries|pin|pos|quadtree|quantum|rank|rankdir|ranksep|ratio|rects|regular|remincross|repulsiveforce|resolution|root|rotate|rotation|samehead|sametail|samplepoints|scale|searchsize|sep|shape|shapefile|showboxes|sides|size|skew|smoothing|sortv|splines|start|style|stylesheet|tailurl|tail_lp|tailclip|tailhref|taillabel|tailport|tailtarget|tailtooltip|target|tooltip|truecolor|vertices|viewport|voro_margin|weight|width|xlabel|xlp|z").split("|") - ); - - this.$rules = { - "start" : [ - { - token : "comment", - regex : /\/\/.*$/ - }, { - token : "comment", - regex : /#.*$/ - }, { - token : "comment", // multi line comment - merge : true, - regex : /\/\*/, - next : "comment" - }, { - token : "string", - regex : "'(?=.)", - next : "qstring" - }, { - token : "string", - regex : '"(?=.)', - next : "qqstring" - }, { - token : "constant.numeric", - regex : /[+\-]?\d+(?:(?:\.\d*)?(?:[eE][+\-]?\d+)?)?\b/ - }, { - token : "keyword.operator", - regex : /\+|=|\->/ - }, { - token : "punctuation.operator", - regex : /,|;/ - }, { - token : "paren.lparen", - regex : /[\[{]/ - }, { - token : "paren.rparen", - regex : /[\]}]/ - }, { - token: "comment", - regex: /^#!.*$/ - }, { - token: function(value) { - if (keywords.hasOwnProperty(value.toLowerCase())) { - return "keyword"; - } - else if (attributes.hasOwnProperty(value.toLowerCase())) { - return "variable"; - } - else { - return "text"; - } - }, - regex: "\\-?[a-zA-Z_][a-zA-Z0-9_\\-]*" - } - ], - "comment" : [ - { - token : "comment", // closing comment - regex : ".*?\\*\\/", - merge : true, - next : "start" - }, { - token : "comment", // comment spanning whole line - merge : true, - regex : ".+" - } - ], - "qqstring" : [ - { - token : "string", - regex : '[^"\\\\]+', - merge : true - }, { - token : "string", - regex : "\\\\$", - next : "qqstring", - merge : true - }, { - token : "string", - regex : '"|$', - next : "start", - merge : true - } - ], - "qstring" : [ - { - token : "string", - regex : "[^'\\\\]+", - merge : true - }, { - token : "string", - regex : "\\\\$", - next : "qstring", - merge : true - }, { - token : "string", - regex : "'|$", - next : "start", - merge : true - } - ] - }; -}; - -oop.inherits(DotHighlightRules, TextHighlightRules); - -exports.DotHighlightRules = DotHighlightRules; - -}); - -ace.define('ace/mode/doc_comment_highlight_rules', ['require', 'exports', 'module' , 'ace/lib/oop', 'ace/mode/text_highlight_rules'], function(require, exports, module) { - - -var oop = require("../lib/oop"); -var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; - -var DocCommentHighlightRules = function() { - - this.$rules = { - "start" : [ { - token : "comment.doc.tag", - regex : "@[\\w\\d_]+" // TODO: fix email addresses - }, { - token : "comment.doc.tag", - regex : "\\bTODO\\b" - }, { - defaultToken : "comment.doc" - }] - }; -}; - -oop.inherits(DocCommentHighlightRules, TextHighlightRules); - -DocCommentHighlightRules.getStartRule = function(start) { - return { - token : "comment.doc", // doc comment - regex : "\\/\\*(?=\\*)", - next : start - }; -}; - -DocCommentHighlightRules.getEndRule = function (start) { - return { - token : "comment.doc", // closing comment - regex : "\\*\\/", - next : start - }; -}; - - -exports.DocCommentHighlightRules = DocCommentHighlightRules; - -}); - -ace.define('ace/mode/folding/cstyle', ['require', 'exports', 'module' , 'ace/lib/oop', 'ace/range', 'ace/mode/folding/fold_mode'], function(require, exports, module) { - - -var oop = require("../../lib/oop"); -var Range = require("../../range").Range; -var BaseFoldMode = require("./fold_mode").FoldMode; - -var FoldMode = exports.FoldMode = function(commentRegex) { - if (commentRegex) { - this.foldingStartMarker = new RegExp( - this.foldingStartMarker.source.replace(/\|[^|]*?$/, "|" + commentRegex.start) - ); - this.foldingStopMarker = new RegExp( - this.foldingStopMarker.source.replace(/\|[^|]*?$/, "|" + commentRegex.end) - ); - } -}; -oop.inherits(FoldMode, BaseFoldMode); - -(function() { - - this.foldingStartMarker = /(\{|\[)[^\}\]]*$|^\s*(\/\*)/; - this.foldingStopMarker = /^[^\[\{]*(\}|\])|^[\s\*]*(\*\/)/; - - this.getFoldWidgetRange = function(session, foldStyle, row, forceMultiline) { - var line = session.getLine(row); - var match = line.match(this.foldingStartMarker); - if (match) { - var i = match.index; - - if (match[1]) - return this.openingBracketBlock(session, match[1], row, i); - - var range = session.getCommentFoldRange(row, i + match[0].length, 1); - - if (range && !range.isMultiLine()) { - if (forceMultiline) { - range = this.getSectionRange(session, row); - } else if (foldStyle != "all") - range = null; - } - - return range; - } - - if (foldStyle === "markbegin") - return; - - var match = line.match(this.foldingStopMarker); - if (match) { - var i = match.index + match[0].length; - - if (match[1]) - return this.closingBracketBlock(session, match[1], row, i); - - return session.getCommentFoldRange(row, i, -1); - } - }; - - this.getSectionRange = function(session, row) { - var line = session.getLine(row); - var startIndent = line.search(/\S/); - var startRow = row; - var startColumn = line.length; - row = row + 1; - var endRow = row; - var maxRow = session.getLength(); - while (++row < maxRow) { - line = session.getLine(row); - var indent = line.search(/\S/); - if (indent === -1) - continue; - if (startIndent > indent) - break; - var subRange = this.getFoldWidgetRange(session, "all", row); - - if (subRange) { - if (subRange.start.row <= startRow) { - break; - } else if (subRange.isMultiLine()) { - row = subRange.end.row; - } else if (startIndent == indent) { - break; - } - } - endRow = row; - } - - return new Range(startRow, startColumn, endRow, session.getLine(endRow).length); - }; - -}).call(FoldMode.prototype); - -}); diff --git a/IDE/jsrealb-ide/ace-src-noconflict/mode-ejs.js b/IDE/jsrealb-ide/ace-src-noconflict/mode-ejs.js deleted file mode 100644 index 61879908..00000000 --- a/IDE/jsrealb-ide/ace-src-noconflict/mode-ejs.js +++ /dev/null @@ -1,2817 +0,0 @@ -/* ***** BEGIN LICENSE BLOCK ***** - * Distributed under the BSD license: - * - * Copyright (c) 2012, Ajax.org B.V. - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are met: - * * Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * * Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * * Neither the name of Ajax.org B.V. nor the - * names of its contributors may be used to endorse or promote products - * derived from this software without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND - * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED - * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE - * DISCLAIMED. IN NO EVENT SHALL AJAX.ORG B.V. BE LIABLE FOR ANY - * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES - * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; - * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND - * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - * - * ***** END LICENSE BLOCK ***** */ - - -ace.define('ace/mode/ejs', ['require', 'exports', 'module' , 'ace/lib/oop', 'ace/mode/html_highlight_rules', 'ace/mode/javascript_highlight_rules', 'ace/tokenizer', 'ace/mode/html', 'ace/mode/javascript', 'ace/mode/css', 'ace/mode/ruby'], function(require, exports, module) { - - -var oop = require("../lib/oop"); -var HtmlHighlightRules = require("./html_highlight_rules").HtmlHighlightRules; -var JavaScriptHighlightRules = require("./javascript_highlight_rules").JavaScriptHighlightRules; - -var EjsHighlightRules = function(start, end) { - HtmlHighlightRules.call(this); - - if (!start) - start = "(?:<%|<\\?|{{)"; - if (!end) - end = "(?:%>|\\?>|}})"; - - for (var i in this.$rules) { - this.$rules[i].unshift({ - token : "markup.list.meta.tag", - regex : start + "(?![>}])[-=]?", - push : "ejs-start" - }); - } - - this.embedRules(JavaScriptHighlightRules, "ejs-"); - - this.$rules["ejs-start"].unshift({ - token : "markup.list.meta.tag", - regex : "-?" + end, - next : "pop" - }, { - token: "comment", - regex: "//.*?" + end, - next: "pop" - }); - - this.$rules["ejs-no_regex"].unshift({ - token : "markup.list.meta.tag", - regex : "-?" + end, - next : "pop" - }, { - token: "comment", - regex: "//.*?" + end, - next: "pop" - }); - - this.normalizeRules(); -}; - - -oop.inherits(EjsHighlightRules, HtmlHighlightRules); - -exports.EjsHighlightRules = EjsHighlightRules; - - -var oop = require("../lib/oop"); -var Tokenizer = require("../tokenizer").Tokenizer; -var HtmlMode = require("./html").Mode; -var JavaScriptMode = require("./javascript").Mode; -var CssMode = require("./css").Mode; -var RubyMode = require("./ruby").Mode; - -var Mode = function() { - HtmlMode.call(this); - this.HighlightRules = EjsHighlightRules; - this.createModeDelegates({ - "js-": JavaScriptMode, - "css-": CssMode, - "ejs-": JavaScriptMode - }); -}; -oop.inherits(Mode, HtmlMode); - -(function() { - - this.$id = "ace/mode/ejs"; -}).call(Mode.prototype); - -exports.Mode = Mode; -}); - -ace.define('ace/mode/html_highlight_rules', ['require', 'exports', 'module' , 'ace/lib/oop', 'ace/lib/lang', 'ace/mode/css_highlight_rules', 'ace/mode/javascript_highlight_rules', 'ace/mode/xml_highlight_rules'], function(require, exports, module) { - - -var oop = require("../lib/oop"); -var lang = require("../lib/lang"); -var CssHighlightRules = require("./css_highlight_rules").CssHighlightRules; -var JavaScriptHighlightRules = require("./javascript_highlight_rules").JavaScriptHighlightRules; -var XmlHighlightRules = require("./xml_highlight_rules").XmlHighlightRules; - -var tagMap = lang.createMap({ - a : 'anchor', - button : 'form', - form : 'form', - img : 'image', - input : 'form', - label : 'form', - option : 'form', - script : 'script', - select : 'form', - textarea : 'form', - style : 'style', - table : 'table', - tbody : 'table', - td : 'table', - tfoot : 'table', - th : 'table', - tr : 'table' -}); - -var HtmlHighlightRules = function() { - XmlHighlightRules.call(this); - - this.addRules({ - attributes: [{ - include : "space" - }, { - token : "entity.other.attribute-name", - regex : "[-_a-zA-Z0-9:]+" - }, { - token : "keyword.operator.separator", - regex : "=", - push : [{ - include: "space" - }, { - token : "string", - regex : "[^<>='\"`\\s]+", - next : "pop" - }, { - token : "empty", - regex : "", - next : "pop" - }] - }, { - include : "string" - }], - tag: [{ - token : function(start, tag) { - var group = tagMap[tag]; - return ["meta.tag.punctuation.begin", - "meta.tag.name" + (group ? "." + group : "")]; - }, - regex : "(<)([-_a-zA-Z0-9:]+)", - next: "start_tag_stuff" - }, { - token : function(start, tag) { - var group = tagMap[tag]; - return ["meta.tag.punctuation.begin", - "meta.tag.name" + (group ? "." + group : "")]; - }, - regex : "(", next : "start"} - ], - end_tag_stuff: [ - {include : "space"}, - {token : "meta.tag.punctuation.end", regex : ">", next : "start"} - ] - }); - - this.embedTagRules(CssHighlightRules, "css-", "style"); - this.embedTagRules(JavaScriptHighlightRules, "js-", "script"); - - if (this.constructor === HtmlHighlightRules) - this.normalizeRules(); -}; - -oop.inherits(HtmlHighlightRules, XmlHighlightRules); - -exports.HtmlHighlightRules = HtmlHighlightRules; -}); - -ace.define('ace/mode/css_highlight_rules', ['require', 'exports', 'module' , 'ace/lib/oop', 'ace/lib/lang', 'ace/mode/text_highlight_rules'], function(require, exports, module) { - - -var oop = require("../lib/oop"); -var lang = require("../lib/lang"); -var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; -var supportType = exports.supportType = "animation-fill-mode|alignment-adjust|alignment-baseline|animation-delay|animation-direction|animation-duration|animation-iteration-count|animation-name|animation-play-state|animation-timing-function|animation|appearance|azimuth|backface-visibility|background-attachment|background-break|background-clip|background-color|background-image|background-origin|background-position|background-repeat|background-size|background|baseline-shift|binding|bleed|bookmark-label|bookmark-level|bookmark-state|bookmark-target|border-bottom|border-bottom-color|border-bottom-left-radius|border-bottom-right-radius|border-bottom-style|border-bottom-width|border-collapse|border-color|border-image|border-image-outset|border-image-repeat|border-image-slice|border-image-source|border-image-width|border-left|border-left-color|border-left-style|border-left-width|border-radius|border-right|border-right-color|border-right-style|border-right-width|border-spacing|border-style|border-top|border-top-color|border-top-left-radius|border-top-right-radius|border-top-style|border-top-width|border-width|border|bottom|box-align|box-decoration-break|box-direction|box-flex-group|box-flex|box-lines|box-ordinal-group|box-orient|box-pack|box-shadow|box-sizing|break-after|break-before|break-inside|caption-side|clear|clip|color-profile|color|column-count|column-fill|column-gap|column-rule|column-rule-color|column-rule-style|column-rule-width|column-span|column-width|columns|content|counter-increment|counter-reset|crop|cue-after|cue-before|cue|cursor|direction|display|dominant-baseline|drop-initial-after-adjust|drop-initial-after-align|drop-initial-before-adjust|drop-initial-before-align|drop-initial-size|drop-initial-value|elevation|empty-cells|fit|fit-position|float-offset|float|font-family|font-size|font-size-adjust|font-stretch|font-style|font-variant|font-weight|font|grid-columns|grid-rows|hanging-punctuation|height|hyphenate-after|hyphenate-before|hyphenate-character|hyphenate-lines|hyphenate-resource|hyphens|icon|image-orientation|image-rendering|image-resolution|inline-box-align|left|letter-spacing|line-height|line-stacking-ruby|line-stacking-shift|line-stacking-strategy|line-stacking|list-style-image|list-style-position|list-style-type|list-style|margin-bottom|margin-left|margin-right|margin-top|margin|mark-after|mark-before|mark|marks|marquee-direction|marquee-play-count|marquee-speed|marquee-style|max-height|max-width|min-height|min-width|move-to|nav-down|nav-index|nav-left|nav-right|nav-up|opacity|orphans|outline-color|outline-offset|outline-style|outline-width|outline|overflow-style|overflow-x|overflow-y|overflow|padding-bottom|padding-left|padding-right|padding-top|padding|page-break-after|page-break-before|page-break-inside|page-policy|page|pause-after|pause-before|pause|perspective-origin|perspective|phonemes|pitch-range|pitch|play-during|pointer-events|position|presentation-level|punctuation-trim|quotes|rendering-intent|resize|rest-after|rest-before|rest|richness|right|rotation-point|rotation|ruby-align|ruby-overhang|ruby-position|ruby-span|size|speak-header|speak-numeral|speak-punctuation|speak|speech-rate|stress|string-set|table-layout|target-name|target-new|target-position|target|text-align-last|text-align|text-decoration|text-emphasis|text-height|text-indent|text-justify|text-outline|text-shadow|text-transform|text-wrap|top|transform-origin|transform-style|transform|transition-delay|transition-duration|transition-property|transition-timing-function|transition|unicode-bidi|vertical-align|visibility|voice-balance|voice-duration|voice-family|voice-pitch-range|voice-pitch|voice-rate|voice-stress|voice-volume|volume|white-space-collapse|white-space|widows|width|word-break|word-spacing|word-wrap|z-index"; -var supportFunction = exports.supportFunction = "rgb|rgba|url|attr|counter|counters"; -var supportConstant = exports.supportConstant = "absolute|after-edge|after|all-scroll|all|alphabetic|always|antialiased|armenian|auto|avoid-column|avoid-page|avoid|balance|baseline|before-edge|before|below|bidi-override|block-line-height|block|bold|bolder|border-box|both|bottom|box|break-all|break-word|capitalize|caps-height|caption|center|central|char|circle|cjk-ideographic|clone|close-quote|col-resize|collapse|column|consider-shifts|contain|content-box|cover|crosshair|cubic-bezier|dashed|decimal-leading-zero|decimal|default|disabled|disc|disregard-shifts|distribute-all-lines|distribute-letter|distribute-space|distribute|dotted|double|e-resize|ease-in|ease-in-out|ease-out|ease|ellipsis|end|exclude-ruby|fill|fixed|georgian|glyphs|grid-height|groove|hand|hanging|hebrew|help|hidden|hiragana-iroha|hiragana|horizontal|icon|ideograph-alpha|ideograph-numeric|ideograph-parenthesis|ideograph-space|ideographic|inactive|include-ruby|inherit|initial|inline-block|inline-box|inline-line-height|inline-table|inline|inset|inside|inter-ideograph|inter-word|invert|italic|justify|katakana-iroha|katakana|keep-all|last|left|lighter|line-edge|line-through|line|linear|list-item|local|loose|lower-alpha|lower-greek|lower-latin|lower-roman|lowercase|lr-tb|ltr|mathematical|max-height|max-size|medium|menu|message-box|middle|move|n-resize|ne-resize|newspaper|no-change|no-close-quote|no-drop|no-open-quote|no-repeat|none|normal|not-allowed|nowrap|nw-resize|oblique|open-quote|outset|outside|overline|padding-box|page|pointer|pre-line|pre-wrap|pre|preserve-3d|progress|relative|repeat-x|repeat-y|repeat|replaced|reset-size|ridge|right|round|row-resize|rtl|s-resize|scroll|se-resize|separate|slice|small-caps|small-caption|solid|space|square|start|static|status-bar|step-end|step-start|steps|stretch|strict|sub|super|sw-resize|table-caption|table-cell|table-column-group|table-column|table-footer-group|table-header-group|table-row-group|table-row|table|tb-rl|text-after-edge|text-before-edge|text-bottom|text-size|text-top|text|thick|thin|transparent|underline|upper-alpha|upper-latin|upper-roman|uppercase|use-script|vertical-ideographic|vertical-text|visible|w-resize|wait|whitespace|z-index|zero"; -var supportConstantColor = exports.supportConstantColor = "aqua|black|blue|fuchsia|gray|green|lime|maroon|navy|olive|orange|purple|red|silver|teal|white|yellow"; -var supportConstantFonts = exports.supportConstantFonts = "arial|century|comic|courier|garamond|georgia|helvetica|impact|lucida|symbol|system|tahoma|times|trebuchet|utopia|verdana|webdings|sans-serif|serif|monospace"; - -var numRe = exports.numRe = "\\-?(?:(?:[0-9]+)|(?:[0-9]*\\.[0-9]+))"; -var pseudoElements = exports.pseudoElements = "(\\:+)\\b(after|before|first-letter|first-line|moz-selection|selection)\\b"; -var pseudoClasses = exports.pseudoClasses = "(:)\\b(active|checked|disabled|empty|enabled|first-child|first-of-type|focus|hover|indeterminate|invalid|last-child|last-of-type|link|not|nth-child|nth-last-child|nth-last-of-type|nth-of-type|only-child|only-of-type|required|root|target|valid|visited)\\b"; - -var CssHighlightRules = function() { - - var keywordMapper = this.createKeywordMapper({ - "support.function": supportFunction, - "support.constant": supportConstant, - "support.type": supportType, - "support.constant.color": supportConstantColor, - "support.constant.fonts": supportConstantFonts - }, "text", true); - - this.$rules = { - "start" : [{ - token : "comment", // multi line comment - regex : "\\/\\*", - push : "comment" - }, { - token: "paren.lparen", - regex: "\\{", - push: "ruleset" - }, { - token: "string", - regex: "@.*?{", - push: "media" - }, { - token: "keyword", - regex: "#[a-z0-9-_]+" - }, { - token: "variable", - regex: "\\.[a-z0-9-_]+" - }, { - token: "string", - regex: ":[a-z0-9-_]+" - }, { - token: "constant", - regex: "[a-z0-9-_]+" - }, { - caseInsensitive: true - }], - - "media" : [{ - token : "comment", // multi line comment - regex : "\\/\\*", - push : "comment" - }, { - token: "paren.lparen", - regex: "\\{", - push: "ruleset" - }, { - token: "string", - regex: "\\}", - next: "pop" - }, { - token: "keyword", - regex: "#[a-z0-9-_]+" - }, { - token: "variable", - regex: "\\.[a-z0-9-_]+" - }, { - token: "string", - regex: ":[a-z0-9-_]+" - }, { - token: "constant", - regex: "[a-z0-9-_]+" - }, { - caseInsensitive: true - }], - - "comment" : [{ - token : "comment", - regex : "\\*\\/", - next : "pop" - }, { - defaultToken : "comment" - }], - - "ruleset" : [ - { - token : "paren.rparen", - regex : "\\}", - next: "pop" - }, { - token : "comment", // multi line comment - regex : "\\/\\*", - push : "comment" - }, { - token : "string", // single line - regex : '["](?:(?:\\\\.)|(?:[^"\\\\]))*?["]' - }, { - token : "string", // single line - regex : "['](?:(?:\\\\.)|(?:[^'\\\\]))*?[']" - }, { - token : ["constant.numeric", "keyword"], - regex : "(" + numRe + ")(ch|cm|deg|em|ex|fr|gd|grad|Hz|in|kHz|mm|ms|pc|pt|px|rad|rem|s|turn|vh|vm|vw|%)" - }, { - token : "constant.numeric", - regex : numRe - }, { - token : "constant.numeric", // hex6 color - regex : "#[a-f0-9]{6}" - }, { - token : "constant.numeric", // hex3 color - regex : "#[a-f0-9]{3}" - }, { - token : ["punctuation", "entity.other.attribute-name.pseudo-element.css"], - regex : pseudoElements - }, { - token : ["punctuation", "entity.other.attribute-name.pseudo-class.css"], - regex : pseudoClasses - }, { - token : ["support.function", "string", "support.function"], - regex : "(url\\()(.*)(\\))" - }, { - token : keywordMapper, - regex : "\\-?[a-zA-Z_][a-zA-Z0-9_\\-]*" - }, { - caseInsensitive: true - }] - }; - - this.normalizeRules(); -}; - -oop.inherits(CssHighlightRules, TextHighlightRules); - -exports.CssHighlightRules = CssHighlightRules; - -}); - -ace.define('ace/mode/javascript_highlight_rules', ['require', 'exports', 'module' , 'ace/lib/oop', 'ace/mode/doc_comment_highlight_rules', 'ace/mode/text_highlight_rules'], function(require, exports, module) { - - -var oop = require("../lib/oop"); -var DocCommentHighlightRules = require("./doc_comment_highlight_rules").DocCommentHighlightRules; -var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; - -var JavaScriptHighlightRules = function() { - var keywordMapper = this.createKeywordMapper({ - "variable.language": - "Array|Boolean|Date|Function|Iterator|Number|Object|RegExp|String|Proxy|" + // Constructors - "Namespace|QName|XML|XMLList|" + // E4X - "ArrayBuffer|Float32Array|Float64Array|Int16Array|Int32Array|Int8Array|" + - "Uint16Array|Uint32Array|Uint8Array|Uint8ClampedArray|" + - "Error|EvalError|InternalError|RangeError|ReferenceError|StopIteration|" + // Errors - "SyntaxError|TypeError|URIError|" + - "decodeURI|decodeURIComponent|encodeURI|encodeURIComponent|eval|isFinite|" + // Non-constructor functions - "isNaN|parseFloat|parseInt|" + - "JSON|Math|" + // Other - "this|arguments|prototype|window|document" , // Pseudo - "keyword": - "const|yield|import|get|set|" + - "break|case|catch|continue|default|delete|do|else|finally|for|function|" + - "if|in|instanceof|new|return|switch|throw|try|typeof|let|var|while|with|debugger|" + - "__parent__|__count__|escape|unescape|with|__proto__|" + - "class|enum|extends|super|export|implements|private|public|interface|package|protected|static", - "storage.type": - "const|let|var|function", - "constant.language": - "null|Infinity|NaN|undefined", - "support.function": - "alert", - "constant.language.boolean": "true|false" - }, "identifier"); - var kwBeforeRe = "case|do|else|finally|in|instanceof|return|throw|try|typeof|yield|void"; - var identifierRe = "[a-zA-Z\\$_\u00a1-\uffff][a-zA-Z\\d\\$_\u00a1-\uffff]*\\b"; - - var escapedRe = "\\\\(?:x[0-9a-fA-F]{2}|" + // hex - "u[0-9a-fA-F]{4}|" + // unicode - "[0-2][0-7]{0,2}|" + // oct - "3[0-6][0-7]?|" + // oct - "37[0-7]?|" + // oct - "[4-7][0-7]?|" + //oct - ".)"; - - this.$rules = { - "no_regex" : [ - { - token : "comment", - regex : "\\/\\/", - next : "line_comment" - }, - DocCommentHighlightRules.getStartRule("doc-start"), - { - token : "comment", // multi line comment - regex : /\/\*/, - next : "comment" - }, { - token : "string", - regex : "'(?=.)", - next : "qstring" - }, { - token : "string", - regex : '"(?=.)', - next : "qqstring" - }, { - token : "constant.numeric", // hex - regex : /0[xX][0-9a-fA-F]+\b/ - }, { - token : "constant.numeric", // float - regex : /[+-]?\d+(?:(?:\.\d*)?(?:[eE][+-]?\d+)?)?\b/ - }, { - token : [ - "storage.type", "punctuation.operator", "support.function", - "punctuation.operator", "entity.name.function", "text","keyword.operator" - ], - regex : "(" + identifierRe + ")(\\.)(prototype)(\\.)(" + identifierRe +")(\\s*)(=)", - next: "function_arguments" - }, { - token : [ - "storage.type", "punctuation.operator", "entity.name.function", "text", - "keyword.operator", "text", "storage.type", "text", "paren.lparen" - ], - regex : "(" + identifierRe + ")(\\.)(" + identifierRe +")(\\s*)(=)(\\s*)(function)(\\s*)(\\()", - next: "function_arguments" - }, { - token : [ - "entity.name.function", "text", "keyword.operator", "text", "storage.type", - "text", "paren.lparen" - ], - regex : "(" + identifierRe +")(\\s*)(=)(\\s*)(function)(\\s*)(\\()", - next: "function_arguments" - }, { - token : [ - "storage.type", "punctuation.operator", "entity.name.function", "text", - "keyword.operator", "text", - "storage.type", "text", "entity.name.function", "text", "paren.lparen" - ], - regex : "(" + identifierRe + ")(\\.)(" + identifierRe +")(\\s*)(=)(\\s*)(function)(\\s+)(\\w+)(\\s*)(\\()", - next: "function_arguments" - }, { - token : [ - "storage.type", "text", "entity.name.function", "text", "paren.lparen" - ], - regex : "(function)(\\s+)(" + identifierRe + ")(\\s*)(\\()", - next: "function_arguments" - }, { - token : [ - "entity.name.function", "text", "punctuation.operator", - "text", "storage.type", "text", "paren.lparen" - ], - regex : "(" + identifierRe + ")(\\s*)(:)(\\s*)(function)(\\s*)(\\()", - next: "function_arguments" - }, { - token : [ - "text", "text", "storage.type", "text", "paren.lparen" - ], - regex : "(:)(\\s*)(function)(\\s*)(\\()", - next: "function_arguments" - }, { - token : "keyword", - regex : "(?:" + kwBeforeRe + ")\\b", - next : "start" - }, { - token : ["punctuation.operator", "support.function"], - regex : /(\.)(s(?:h(?:ift|ow(?:Mod(?:elessDialog|alDialog)|Help))|croll(?:X|By(?:Pages|Lines)?|Y|To)?|t(?:op|rike)|i(?:n|zeToContent|debar|gnText)|ort|u(?:p|b(?:str(?:ing)?)?)|pli(?:ce|t)|e(?:nd|t(?:Re(?:sizable|questHeader)|M(?:i(?:nutes|lliseconds)|onth)|Seconds|Ho(?:tKeys|urs)|Year|Cursor|Time(?:out)?|Interval|ZOptions|Date|UTC(?:M(?:i(?:nutes|lliseconds)|onth)|Seconds|Hours|Date|FullYear)|FullYear|Active)|arch)|qrt|lice|avePreferences|mall)|h(?:ome|andleEvent)|navigate|c(?:har(?:CodeAt|At)|o(?:s|n(?:cat|textual|firm)|mpile)|eil|lear(?:Timeout|Interval)?|a(?:ptureEvents|ll)|reate(?:StyleSheet|Popup|EventObject))|t(?:o(?:GMTString|S(?:tring|ource)|U(?:TCString|pperCase)|Lo(?:caleString|werCase))|est|a(?:n|int(?:Enabled)?))|i(?:s(?:NaN|Finite)|ndexOf|talics)|d(?:isableExternalCapture|ump|etachEvent)|u(?:n(?:shift|taint|escape|watch)|pdateCommands)|j(?:oin|avaEnabled)|p(?:o(?:p|w)|ush|lugins.refresh|a(?:ddings|rse(?:Int|Float)?)|r(?:int|ompt|eference))|e(?:scape|nableExternalCapture|val|lementFromPoint|x(?:p|ec(?:Script|Command)?))|valueOf|UTC|queryCommand(?:State|Indeterm|Enabled|Value)|f(?:i(?:nd|le(?:ModifiedDate|Size|CreatedDate|UpdatedDate)|xed)|o(?:nt(?:size|color)|rward)|loor|romCharCode)|watch|l(?:ink|o(?:ad|g)|astIndexOf)|a(?:sin|nchor|cos|t(?:tachEvent|ob|an(?:2)?)|pply|lert|b(?:s|ort))|r(?:ou(?:nd|teEvents)|e(?:size(?:By|To)|calc|turnValue|place|verse|l(?:oad|ease(?:Capture|Events)))|andom)|g(?:o|et(?:ResponseHeader|M(?:i(?:nutes|lliseconds)|onth)|Se(?:conds|lection)|Hours|Year|Time(?:zoneOffset)?|Da(?:y|te)|UTC(?:M(?:i(?:nutes|lliseconds)|onth)|Seconds|Hours|Da(?:y|te)|FullYear)|FullYear|A(?:ttention|llResponseHeaders)))|m(?:in|ove(?:B(?:y|elow)|To(?:Absolute)?|Above)|ergeAttributes|a(?:tch|rgins|x))|b(?:toa|ig|o(?:ld|rderWidths)|link|ack))\b(?=\()/ - }, { - token : ["punctuation.operator", "support.function.dom"], - regex : /(\.)(s(?:ub(?:stringData|mit)|plitText|e(?:t(?:NamedItem|Attribute(?:Node)?)|lect))|has(?:ChildNodes|Feature)|namedItem|c(?:l(?:ick|o(?:se|neNode))|reate(?:C(?:omment|DATASection|aption)|T(?:Head|extNode|Foot)|DocumentFragment|ProcessingInstruction|E(?:ntityReference|lement)|Attribute))|tabIndex|i(?:nsert(?:Row|Before|Cell|Data)|tem)|open|delete(?:Row|C(?:ell|aption)|T(?:Head|Foot)|Data)|focus|write(?:ln)?|a(?:dd|ppend(?:Child|Data))|re(?:set|place(?:Child|Data)|move(?:NamedItem|Child|Attribute(?:Node)?)?)|get(?:NamedItem|Element(?:sBy(?:Name|TagName)|ById)|Attribute(?:Node)?)|blur)\b(?=\()/ - }, { - token : ["punctuation.operator", "support.constant"], - regex : /(\.)(s(?:ystemLanguage|cr(?:ipts|ollbars|een(?:X|Y|Top|Left))|t(?:yle(?:Sheets)?|atus(?:Text|bar)?)|ibling(?:Below|Above)|ource|uffixes|e(?:curity(?:Policy)?|l(?:ection|f)))|h(?:istory|ost(?:name)?|as(?:h|Focus))|y|X(?:MLDocument|SLDocument)|n(?:ext|ame(?:space(?:s|URI)|Prop))|M(?:IN_VALUE|AX_VALUE)|c(?:haracterSet|o(?:n(?:structor|trollers)|okieEnabled|lorDepth|mp(?:onents|lete))|urrent|puClass|l(?:i(?:p(?:boardData)?|entInformation)|osed|asses)|alle(?:e|r)|rypto)|t(?:o(?:olbar|p)|ext(?:Transform|Indent|Decoration|Align)|ags)|SQRT(?:1_2|2)|i(?:n(?:ner(?:Height|Width)|put)|ds|gnoreCase)|zIndex|o(?:scpu|n(?:readystatechange|Line)|uter(?:Height|Width)|p(?:sProfile|ener)|ffscreenBuffering)|NEGATIVE_INFINITY|d(?:i(?:splay|alog(?:Height|Top|Width|Left|Arguments)|rectories)|e(?:scription|fault(?:Status|Ch(?:ecked|arset)|View)))|u(?:ser(?:Profile|Language|Agent)|n(?:iqueID|defined)|pdateInterval)|_content|p(?:ixelDepth|ort|ersonalbar|kcs11|l(?:ugins|atform)|a(?:thname|dding(?:Right|Bottom|Top|Left)|rent(?:Window|Layer)?|ge(?:X(?:Offset)?|Y(?:Offset)?))|r(?:o(?:to(?:col|type)|duct(?:Sub)?|mpter)|e(?:vious|fix)))|e(?:n(?:coding|abledPlugin)|x(?:ternal|pando)|mbeds)|v(?:isibility|endor(?:Sub)?|Linkcolor)|URLUnencoded|P(?:I|OSITIVE_INFINITY)|f(?:ilename|o(?:nt(?:Size|Family|Weight)|rmName)|rame(?:s|Element)|gColor)|E|whiteSpace|l(?:i(?:stStyleType|n(?:eHeight|kColor))|o(?:ca(?:tion(?:bar)?|lName)|wsrc)|e(?:ngth|ft(?:Context)?)|a(?:st(?:M(?:odified|atch)|Index|Paren)|yer(?:s|X)|nguage))|a(?:pp(?:MinorVersion|Name|Co(?:deName|re)|Version)|vail(?:Height|Top|Width|Left)|ll|r(?:ity|guments)|Linkcolor|bove)|r(?:ight(?:Context)?|e(?:sponse(?:XML|Text)|adyState))|global|x|m(?:imeTypes|ultiline|enubar|argin(?:Right|Bottom|Top|Left))|L(?:N(?:10|2)|OG(?:10E|2E))|b(?:o(?:ttom|rder(?:Width|RightWidth|BottomWidth|Style|Color|TopWidth|LeftWidth))|ufferDepth|elow|ackground(?:Color|Image)))\b/ - }, { - token : ["storage.type", "punctuation.operator", "support.function.firebug"], - regex : /(console)(\.)(warn|info|log|error|time|timeEnd|assert)\b/ - }, { - token : keywordMapper, - regex : identifierRe - }, { - token : "keyword.operator", - regex : /--|\+\+|[!$%&*+\-~]|===|==|=|!=|!==|<=|>=|<<=|>>=|>>>=|<>|<|>|!|&&|\|\||\?\:|\*=|%=|\+=|\-=|&=|\^=/, - next : "start" - }, { - token : "punctuation.operator", - regex : /\?|\:|\,|\;|\./, - next : "start" - }, { - token : "paren.lparen", - regex : /[\[({]/, - next : "start" - }, { - token : "paren.rparen", - regex : /[\])}]/ - }, { - token : "keyword.operator", - regex : /\/=?/, - next : "start" - }, { - token: "comment", - regex: /^#!.*$/ - } - ], - "start": [ - DocCommentHighlightRules.getStartRule("doc-start"), - { - token : "comment", // multi line comment - regex : "\\/\\*", - next : "comment_regex_allowed" - }, { - token : "comment", - regex : "\\/\\/", - next : "line_comment_regex_allowed" - }, { - token: "string.regexp", - regex: "\\/", - next: "regex" - }, { - token : "text", - regex : "\\s+|^$", - next : "start" - }, { - token: "empty", - regex: "", - next: "no_regex" - } - ], - "regex": [ - { - token: "regexp.keyword.operator", - regex: "\\\\(?:u[\\da-fA-F]{4}|x[\\da-fA-F]{2}|.)" - }, { - token: "string.regexp", - regex: "/[sxngimy]*", - next: "no_regex" - }, { - token : "invalid", - regex: /\{\d+\b,?\d*\}[+*]|[+*$^?][+*]|[$^][?]|\?{3,}/ - }, { - token : "constant.language.escape", - regex: /\(\?[:=!]|\)|\{\d+\b,?\d*\}|[+*]\?|[()$^+*?.]/ - }, { - token : "constant.language.delimiter", - regex: /\|/ - }, { - token: "constant.language.escape", - regex: /\[\^?/, - next: "regex_character_class" - }, { - token: "empty", - regex: "$", - next: "no_regex" - }, { - defaultToken: "string.regexp" - } - ], - "regex_character_class": [ - { - token: "regexp.keyword.operator", - regex: "\\\\(?:u[\\da-fA-F]{4}|x[\\da-fA-F]{2}|.)" - }, { - token: "constant.language.escape", - regex: "]", - next: "regex" - }, { - token: "constant.language.escape", - regex: "-" - }, { - token: "empty", - regex: "$", - next: "no_regex" - }, { - defaultToken: "string.regexp.charachterclass" - } - ], - "function_arguments": [ - { - token: "variable.parameter", - regex: identifierRe - }, { - token: "punctuation.operator", - regex: "[, ]+" - }, { - token: "punctuation.operator", - regex: "$" - }, { - token: "empty", - regex: "", - next: "no_regex" - } - ], - "comment_regex_allowed" : [ - {token : "comment", regex : "\\*\\/", next : "start"}, - {defaultToken : "comment"} - ], - "comment" : [ - {token : "comment", regex : "\\*\\/", next : "no_regex"}, - {defaultToken : "comment"} - ], - "line_comment_regex_allowed" : [ - {token : "comment", regex : "$|^", next : "start"}, - {defaultToken : "comment"} - ], - "line_comment" : [ - {token : "comment", regex : "$|^", next : "no_regex"}, - {defaultToken : "comment"} - ], - "qqstring" : [ - { - token : "constant.language.escape", - regex : escapedRe - }, { - token : "string", - regex : "\\\\$", - next : "qqstring" - }, { - token : "string", - regex : '"|$', - next : "no_regex" - }, { - defaultToken: "string" - } - ], - "qstring" : [ - { - token : "constant.language.escape", - regex : escapedRe - }, { - token : "string", - regex : "\\\\$", - next : "qstring" - }, { - token : "string", - regex : "'|$", - next : "no_regex" - }, { - defaultToken: "string" - } - ] - }; - - this.embedRules(DocCommentHighlightRules, "doc-", - [ DocCommentHighlightRules.getEndRule("no_regex") ]); -}; - -oop.inherits(JavaScriptHighlightRules, TextHighlightRules); - -exports.JavaScriptHighlightRules = JavaScriptHighlightRules; -}); - -ace.define('ace/mode/doc_comment_highlight_rules', ['require', 'exports', 'module' , 'ace/lib/oop', 'ace/mode/text_highlight_rules'], function(require, exports, module) { - - -var oop = require("../lib/oop"); -var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; - -var DocCommentHighlightRules = function() { - - this.$rules = { - "start" : [ { - token : "comment.doc.tag", - regex : "@[\\w\\d_]+" // TODO: fix email addresses - }, { - token : "comment.doc.tag", - regex : "\\bTODO\\b" - }, { - defaultToken : "comment.doc" - }] - }; -}; - -oop.inherits(DocCommentHighlightRules, TextHighlightRules); - -DocCommentHighlightRules.getStartRule = function(start) { - return { - token : "comment.doc", // doc comment - regex : "\\/\\*(?=\\*)", - next : start - }; -}; - -DocCommentHighlightRules.getEndRule = function (start) { - return { - token : "comment.doc", // closing comment - regex : "\\*\\/", - next : start - }; -}; - - -exports.DocCommentHighlightRules = DocCommentHighlightRules; - -}); - -ace.define('ace/mode/xml_highlight_rules', ['require', 'exports', 'module' , 'ace/lib/oop', 'ace/mode/xml_util', 'ace/mode/text_highlight_rules'], function(require, exports, module) { - - -var oop = require("../lib/oop"); -var xmlUtil = require("./xml_util"); -var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; - -var XmlHighlightRules = function(normalize) { - this.$rules = { - start : [ - {token : "punctuation.string.begin", regex : "<\\!\\[CDATA\\[", next : "cdata"}, - { - token : ["punctuation.instruction.begin", "keyword.instruction"], - regex : "(<\\?)(xml)(?=[\\s])", next : "xml_declaration" - }, - { - token : ["punctuation.instruction.begin", "keyword.instruction"], - regex : "(<\\?)([-_a-zA-Z0-9]+)", next : "instruction" - }, - {token : "comment", regex : "<\\!--", next : "comment"}, - { - token : ["punctuation.doctype.begin", "meta.tag.doctype"], - regex : "(<\\!)(DOCTYPE)(?=[\\s])", next : "doctype" - }, - {include : "tag"}, - {include : "reference"} - ], - - xml_declaration : [ - {include : "attributes"}, - {include : "instruction"} - ], - - instruction : [ - {token : "punctuation.instruction.end", regex : "\\?>", next : "start"} - ], - - doctype : [ - {include : "space"}, - {include : "string"}, - {token : "punctuation.doctype.end", regex : ">", next : "start"}, - {token : "xml-pe", regex : "[-_a-zA-Z0-9:]+"}, - {token : "punctuation.begin", regex : "\\[", push : "declarations"} - ], - - declarations : [{ - token : "text", - regex : "\\s+" - }, { - token: "punctuation.end", - regex: "]", - next: "pop" - }, { - token : ["punctuation.begin", "keyword"], - regex : "(<\\!)([-_a-zA-Z0-9]+)", - push : [{ - token : "text", - regex : "\\s+" - }, - { - token : "punctuation.end", - regex : ">", - next : "pop" - }, - {include : "string"}] - }], - - cdata : [ - {token : "string.end", regex : "\\]\\]>", next : "start"}, - {token : "text", regex : "\\s+"}, - {token : "text", regex : "(?:[^\\]]|\\](?!\\]>))+"} - ], - - comment : [ - {token : "comment", regex : "-->", next : "start"}, - {defaultToken : "comment"} - ], - - tag : [{ - token : ["meta.tag.punctuation.begin", "meta.tag.name"], - regex : "(<)((?:[-_a-zA-Z0-9]+:)?[-_a-zA-Z0-9]+)", - next: [ - {include : "attributes"}, - {token : "meta.tag.punctuation.end", regex : "/?>", next : "start"} - ] - }, { - token : ["meta.tag.punctuation.begin", "meta.tag.name"], - regex : "(", next : "start"} - ] - }], - - space : [ - {token : "text", regex : "\\s+"} - ], - - reference : [{ - token : "constant.language.escape", - regex : "(?:&#[0-9]+;)|(?:&#x[0-9a-fA-F]+;)|(?:&[a-zA-Z0-9_:\\.-]+;)" - }, { - token : "text", regex : "&" - }], - - string: [{ - token : "string", - regex : "'", - push : "qstring_inner" - }, { - token : "string", - regex : '"', - push : "qqstring_inner" - }], - - qstring_inner: [ - {token : "string", regex: "'", next: "pop"}, - {include : "reference"}, - {defaultToken : "string"} - ], - - qqstring_inner: [ - {token : "string", regex: '"', next: "pop"}, - {include : "reference"}, - {defaultToken : "string"} - ], - - attributes: [{ - token : "entity.other.attribute-name", - regex : "(?:[-_a-zA-Z0-9]+:)?[-_a-zA-Z0-9]+" - }, { - token : "keyword.operator.separator", - regex : "=" - }, { - include : "space" - }, { - include : "string" - }] - }; - - if (this.constructor === XmlHighlightRules) - this.normalizeRules(); -}; - - -(function() { - - this.embedTagRules = function(HighlightRules, prefix, tag){ - this.$rules.tag.unshift({ - token : ["meta.tag.punctuation.begin", "meta.tag.name." + tag], - regex : "(<)(" + tag + ")", - next: [ - {include : "space"}, - {include : "attributes"}, - {token : "meta.tag.punctuation.end", regex : "/?>", next : prefix + "start"} - ] - }); - - this.$rules[tag + "-end"] = [ - {include : "space"}, - {token : "meta.tag.punctuation.end", regex : ">", next: "start", - onMatch : function(value, currentState, stack) { - stack.splice(0); - return this.token; - }} - ] - - this.embedRules(HighlightRules, prefix, [{ - token: ["meta.tag.punctuation.begin", "meta.tag.name." + tag], - regex : "(" - }]); - }; - -}).call(TextHighlightRules.prototype); - -oop.inherits(XmlHighlightRules, TextHighlightRules); - -exports.XmlHighlightRules = XmlHighlightRules; -}); - -ace.define('ace/mode/xml_util', ['require', 'exports', 'module' ], function(require, exports, module) { - - -function string(state) { - return [{ - token : "string", - regex : '"', - next : state + "_qqstring" - }, { - token : "string", - regex : "'", - next : state + "_qstring" - }]; -} - -function multiLineString(quote, state) { - return [ - {token : "string", regex : quote, next : state}, - { - token : "constant.language.escape", - regex : "(?:&#[0-9]+;)|(?:&#x[0-9a-fA-F]+;)|(?:&[a-zA-Z0-9_:\\.-]+;)" - }, - {defaultToken : "string"} - ]; -} - -exports.tag = function(states, name, nextState, tagMap) { - states[name] = [{ - token : "text", - regex : "\\s+" - }, { - - token : !tagMap ? "meta.tag.tag-name" : function(value) { - if (tagMap[value]) - return "meta.tag.tag-name." + tagMap[value]; - else - return "meta.tag.tag-name"; - }, - regex : "[-_a-zA-Z0-9:]+", - next : name + "_embed_attribute_list" - }, { - token: "empty", - regex: "", - next : name + "_embed_attribute_list" - }]; - - states[name + "_qstring"] = multiLineString("'", name + "_embed_attribute_list"); - states[name + "_qqstring"] = multiLineString("\"", name + "_embed_attribute_list"); - - states[name + "_embed_attribute_list"] = [{ - token : "meta.tag.r", - regex : "/?>", - next : nextState - }, { - token : "keyword.operator", - regex : "=" - }, { - token : "entity.other.attribute-name", - regex : "[-_a-zA-Z0-9:]+" - }, { - token : "constant.numeric", // float - regex : "[+-]?\\d+(?:(?:\\.\\d*)?(?:[eE][+-]?\\d+)?)?\\b" - }, { - token : "text", - regex : "\\s+" - }].concat(string(name)); -}; - -}); - -ace.define('ace/mode/html', ['require', 'exports', 'module' , 'ace/lib/oop', 'ace/mode/text', 'ace/mode/javascript', 'ace/mode/css', 'ace/tokenizer', 'ace/mode/html_highlight_rules', 'ace/mode/behaviour/html', 'ace/mode/folding/html', 'ace/mode/html_completions'], function(require, exports, module) { - - -var oop = require("../lib/oop"); -var TextMode = require("./text").Mode; -var JavaScriptMode = require("./javascript").Mode; -var CssMode = require("./css").Mode; -var Tokenizer = require("../tokenizer").Tokenizer; -var HtmlHighlightRules = require("./html_highlight_rules").HtmlHighlightRules; -var HtmlBehaviour = require("./behaviour/html").HtmlBehaviour; -var HtmlFoldMode = require("./folding/html").FoldMode; -var HtmlCompletions = require("./html_completions").HtmlCompletions; - -var Mode = function() { - this.HighlightRules = HtmlHighlightRules; - this.$behaviour = new HtmlBehaviour(); - this.$completer = new HtmlCompletions(); - - this.createModeDelegates({ - "js-": JavaScriptMode, - "css-": CssMode - }); - - this.foldingRules = new HtmlFoldMode(); -}; -oop.inherits(Mode, TextMode); - -(function() { - - this.blockComment = {start: ""}; - - this.getNextLineIndent = function(state, line, tab) { - return this.$getIndent(line); - }; - - this.checkOutdent = function(state, line, input) { - return false; - }; - - this.getCompletions = function(state, session, pos, prefix) { - return this.$completer.getCompletions(state, session, pos, prefix); - }; - - this.$id = "ace/mode/html"; -}).call(Mode.prototype); - -exports.Mode = Mode; -}); - -ace.define('ace/mode/javascript', ['require', 'exports', 'module' , 'ace/lib/oop', 'ace/mode/text', 'ace/tokenizer', 'ace/mode/javascript_highlight_rules', 'ace/mode/matching_brace_outdent', 'ace/range', 'ace/worker/worker_client', 'ace/mode/behaviour/cstyle', 'ace/mode/folding/cstyle'], function(require, exports, module) { - - -var oop = require("../lib/oop"); -var TextMode = require("./text").Mode; -var Tokenizer = require("../tokenizer").Tokenizer; -var JavaScriptHighlightRules = require("./javascript_highlight_rules").JavaScriptHighlightRules; -var MatchingBraceOutdent = require("./matching_brace_outdent").MatchingBraceOutdent; -var Range = require("../range").Range; -var WorkerClient = require("../worker/worker_client").WorkerClient; -var CstyleBehaviour = require("./behaviour/cstyle").CstyleBehaviour; -var CStyleFoldMode = require("./folding/cstyle").FoldMode; - -var Mode = function() { - this.HighlightRules = JavaScriptHighlightRules; - - this.$outdent = new MatchingBraceOutdent(); - this.$behaviour = new CstyleBehaviour(); - this.foldingRules = new CStyleFoldMode(); -}; -oop.inherits(Mode, TextMode); - -(function() { - - this.lineCommentStart = "//"; - this.blockComment = {start: "/*", end: "*/"}; - - this.getNextLineIndent = function(state, line, tab) { - var indent = this.$getIndent(line); - - var tokenizedLine = this.getTokenizer().getLineTokens(line, state); - var tokens = tokenizedLine.tokens; - var endState = tokenizedLine.state; - - if (tokens.length && tokens[tokens.length-1].type == "comment") { - return indent; - } - - if (state == "start" || state == "no_regex") { - var match = line.match(/^.*(?:\bcase\b.*\:|[\{\(\[])\s*$/); - if (match) { - indent += tab; - } - } else if (state == "doc-start") { - if (endState == "start" || endState == "no_regex") { - return ""; - } - var match = line.match(/^\s*(\/?)\*/); - if (match) { - if (match[1]) { - indent += " "; - } - indent += "* "; - } - } - - return indent; - }; - - this.checkOutdent = function(state, line, input) { - return this.$outdent.checkOutdent(line, input); - }; - - this.autoOutdent = function(state, doc, row) { - this.$outdent.autoOutdent(doc, row); - }; - - this.createWorker = function(session) { - var worker = new WorkerClient(["ace"], "ace/mode/javascript_worker", "JavaScriptWorker"); - worker.attachToDocument(session.getDocument()); - - worker.on("jslint", function(results) { - session.setAnnotations(results.data); - }); - - worker.on("terminate", function() { - session.clearAnnotations(); - }); - - return worker; - }; - - this.$id = "ace/mode/javascript"; -}).call(Mode.prototype); - -exports.Mode = Mode; -}); - -ace.define('ace/mode/matching_brace_outdent', ['require', 'exports', 'module' , 'ace/range'], function(require, exports, module) { - - -var Range = require("../range").Range; - -var MatchingBraceOutdent = function() {}; - -(function() { - - this.checkOutdent = function(line, input) { - if (! /^\s+$/.test(line)) - return false; - - return /^\s*\}/.test(input); - }; - - this.autoOutdent = function(doc, row) { - var line = doc.getLine(row); - var match = line.match(/^(\s*\})/); - - if (!match) return 0; - - var column = match[1].length; - var openBracePos = doc.findMatchingBracket({row: row, column: column}); - - if (!openBracePos || openBracePos.row == row) return 0; - - var indent = this.$getIndent(doc.getLine(openBracePos.row)); - doc.replace(new Range(row, 0, row, column-1), indent); - }; - - this.$getIndent = function(line) { - return line.match(/^\s*/)[0]; - }; - -}).call(MatchingBraceOutdent.prototype); - -exports.MatchingBraceOutdent = MatchingBraceOutdent; -}); - -ace.define('ace/mode/behaviour/cstyle', ['require', 'exports', 'module' , 'ace/lib/oop', 'ace/mode/behaviour', 'ace/token_iterator', 'ace/lib/lang'], function(require, exports, module) { - - -var oop = require("../../lib/oop"); -var Behaviour = require("../behaviour").Behaviour; -var TokenIterator = require("../../token_iterator").TokenIterator; -var lang = require("../../lib/lang"); - -var SAFE_INSERT_IN_TOKENS = - ["text", "paren.rparen", "punctuation.operator"]; -var SAFE_INSERT_BEFORE_TOKENS = - ["text", "paren.rparen", "punctuation.operator", "comment"]; - - -var autoInsertedBrackets = 0; -var autoInsertedRow = -1; -var autoInsertedLineEnd = ""; -var maybeInsertedBrackets = 0; -var maybeInsertedRow = -1; -var maybeInsertedLineStart = ""; -var maybeInsertedLineEnd = ""; - -var CstyleBehaviour = function () { - - CstyleBehaviour.isSaneInsertion = function(editor, session) { - var cursor = editor.getCursorPosition(); - var iterator = new TokenIterator(session, cursor.row, cursor.column); - if (!this.$matchTokenType(iterator.getCurrentToken() || "text", SAFE_INSERT_IN_TOKENS)) { - var iterator2 = new TokenIterator(session, cursor.row, cursor.column + 1); - if (!this.$matchTokenType(iterator2.getCurrentToken() || "text", SAFE_INSERT_IN_TOKENS)) - return false; - } - iterator.stepForward(); - return iterator.getCurrentTokenRow() !== cursor.row || - this.$matchTokenType(iterator.getCurrentToken() || "text", SAFE_INSERT_BEFORE_TOKENS); - }; - - CstyleBehaviour.$matchTokenType = function(token, types) { - return types.indexOf(token.type || token) > -1; - }; - - CstyleBehaviour.recordAutoInsert = function(editor, session, bracket) { - var cursor = editor.getCursorPosition(); - var line = session.doc.getLine(cursor.row); - if (!this.isAutoInsertedClosing(cursor, line, autoInsertedLineEnd[0])) - autoInsertedBrackets = 0; - autoInsertedRow = cursor.row; - autoInsertedLineEnd = bracket + line.substr(cursor.column); - autoInsertedBrackets++; - }; - - CstyleBehaviour.recordMaybeInsert = function(editor, session, bracket) { - var cursor = editor.getCursorPosition(); - var line = session.doc.getLine(cursor.row); - if (!this.isMaybeInsertedClosing(cursor, line)) - maybeInsertedBrackets = 0; - maybeInsertedRow = cursor.row; - maybeInsertedLineStart = line.substr(0, cursor.column) + bracket; - maybeInsertedLineEnd = line.substr(cursor.column); - maybeInsertedBrackets++; - }; - - CstyleBehaviour.isAutoInsertedClosing = function(cursor, line, bracket) { - return autoInsertedBrackets > 0 && - cursor.row === autoInsertedRow && - bracket === autoInsertedLineEnd[0] && - line.substr(cursor.column) === autoInsertedLineEnd; - }; - - CstyleBehaviour.isMaybeInsertedClosing = function(cursor, line) { - return maybeInsertedBrackets > 0 && - cursor.row === maybeInsertedRow && - line.substr(cursor.column) === maybeInsertedLineEnd && - line.substr(0, cursor.column) == maybeInsertedLineStart; - }; - - CstyleBehaviour.popAutoInsertedClosing = function() { - autoInsertedLineEnd = autoInsertedLineEnd.substr(1); - autoInsertedBrackets--; - }; - - CstyleBehaviour.clearMaybeInsertedClosing = function() { - maybeInsertedBrackets = 0; - maybeInsertedRow = -1; - }; - - this.add("braces", "insertion", function (state, action, editor, session, text) { - var cursor = editor.getCursorPosition(); - var line = session.doc.getLine(cursor.row); - if (text == '{') { - var selection = editor.getSelectionRange(); - var selected = session.doc.getTextRange(selection); - if (selected !== "" && selected !== "{" && editor.getWrapBehavioursEnabled()) { - return { - text: '{' + selected + '}', - selection: false - }; - } else if (CstyleBehaviour.isSaneInsertion(editor, session)) { - if (/[\]\}\)]/.test(line[cursor.column]) || editor.inMultiSelectMode) { - CstyleBehaviour.recordAutoInsert(editor, session, "}"); - return { - text: '{}', - selection: [1, 1] - }; - } else { - CstyleBehaviour.recordMaybeInsert(editor, session, "{"); - return { - text: '{', - selection: [1, 1] - }; - } - } - } else if (text == '}') { - var rightChar = line.substring(cursor.column, cursor.column + 1); - if (rightChar == '}') { - var matching = session.$findOpeningBracket('}', {column: cursor.column + 1, row: cursor.row}); - if (matching !== null && CstyleBehaviour.isAutoInsertedClosing(cursor, line, text)) { - CstyleBehaviour.popAutoInsertedClosing(); - return { - text: '', - selection: [1, 1] - }; - } - } - } else if (text == "\n" || text == "\r\n") { - var closing = ""; - if (CstyleBehaviour.isMaybeInsertedClosing(cursor, line)) { - closing = lang.stringRepeat("}", maybeInsertedBrackets); - CstyleBehaviour.clearMaybeInsertedClosing(); - } - var rightChar = line.substring(cursor.column, cursor.column + 1); - if (rightChar === '}') { - var openBracePos = session.findMatchingBracket({row: cursor.row, column: cursor.column+1}, '}'); - if (!openBracePos) - return null; - var next_indent = this.$getIndent(session.getLine(openBracePos.row)); - } else if (closing) { - var next_indent = this.$getIndent(line); - } else { - return; - } - var indent = next_indent + session.getTabString(); - - return { - text: '\n' + indent + '\n' + next_indent + closing, - selection: [1, indent.length, 1, indent.length] - }; - } else { - CstyleBehaviour.clearMaybeInsertedClosing(); - } - }); - - this.add("braces", "deletion", function (state, action, editor, session, range) { - var selected = session.doc.getTextRange(range); - if (!range.isMultiLine() && selected == '{') { - var line = session.doc.getLine(range.start.row); - var rightChar = line.substring(range.end.column, range.end.column + 1); - if (rightChar == '}') { - range.end.column++; - return range; - } else { - maybeInsertedBrackets--; - } - } - }); - - this.add("parens", "insertion", function (state, action, editor, session, text) { - if (text == '(') { - var selection = editor.getSelectionRange(); - var selected = session.doc.getTextRange(selection); - if (selected !== "" && editor.getWrapBehavioursEnabled()) { - return { - text: '(' + selected + ')', - selection: false - }; - } else if (CstyleBehaviour.isSaneInsertion(editor, session)) { - CstyleBehaviour.recordAutoInsert(editor, session, ")"); - return { - text: '()', - selection: [1, 1] - }; - } - } else if (text == ')') { - var cursor = editor.getCursorPosition(); - var line = session.doc.getLine(cursor.row); - var rightChar = line.substring(cursor.column, cursor.column + 1); - if (rightChar == ')') { - var matching = session.$findOpeningBracket(')', {column: cursor.column + 1, row: cursor.row}); - if (matching !== null && CstyleBehaviour.isAutoInsertedClosing(cursor, line, text)) { - CstyleBehaviour.popAutoInsertedClosing(); - return { - text: '', - selection: [1, 1] - }; - } - } - } - }); - - this.add("parens", "deletion", function (state, action, editor, session, range) { - var selected = session.doc.getTextRange(range); - if (!range.isMultiLine() && selected == '(') { - var line = session.doc.getLine(range.start.row); - var rightChar = line.substring(range.start.column + 1, range.start.column + 2); - if (rightChar == ')') { - range.end.column++; - return range; - } - } - }); - - this.add("brackets", "insertion", function (state, action, editor, session, text) { - if (text == '[') { - var selection = editor.getSelectionRange(); - var selected = session.doc.getTextRange(selection); - if (selected !== "" && editor.getWrapBehavioursEnabled()) { - return { - text: '[' + selected + ']', - selection: false - }; - } else if (CstyleBehaviour.isSaneInsertion(editor, session)) { - CstyleBehaviour.recordAutoInsert(editor, session, "]"); - return { - text: '[]', - selection: [1, 1] - }; - } - } else if (text == ']') { - var cursor = editor.getCursorPosition(); - var line = session.doc.getLine(cursor.row); - var rightChar = line.substring(cursor.column, cursor.column + 1); - if (rightChar == ']') { - var matching = session.$findOpeningBracket(']', {column: cursor.column + 1, row: cursor.row}); - if (matching !== null && CstyleBehaviour.isAutoInsertedClosing(cursor, line, text)) { - CstyleBehaviour.popAutoInsertedClosing(); - return { - text: '', - selection: [1, 1] - }; - } - } - } - }); - - this.add("brackets", "deletion", function (state, action, editor, session, range) { - var selected = session.doc.getTextRange(range); - if (!range.isMultiLine() && selected == '[') { - var line = session.doc.getLine(range.start.row); - var rightChar = line.substring(range.start.column + 1, range.start.column + 2); - if (rightChar == ']') { - range.end.column++; - return range; - } - } - }); - - this.add("string_dquotes", "insertion", function (state, action, editor, session, text) { - if (text == '"' || text == "'") { - var quote = text; - var selection = editor.getSelectionRange(); - var selected = session.doc.getTextRange(selection); - if (selected !== "" && selected !== "'" && selected != '"' && editor.getWrapBehavioursEnabled()) { - return { - text: quote + selected + quote, - selection: false - }; - } else { - var cursor = editor.getCursorPosition(); - var line = session.doc.getLine(cursor.row); - var leftChar = line.substring(cursor.column-1, cursor.column); - if (leftChar == '\\') { - return null; - } - var tokens = session.getTokens(selection.start.row); - var col = 0, token; - var quotepos = -1; // Track whether we're inside an open quote. - - for (var x = 0; x < tokens.length; x++) { - token = tokens[x]; - if (token.type == "string") { - quotepos = -1; - } else if (quotepos < 0) { - quotepos = token.value.indexOf(quote); - } - if ((token.value.length + col) > selection.start.column) { - break; - } - col += tokens[x].value.length; - } - if (!token || (quotepos < 0 && token.type !== "comment" && (token.type !== "string" || ((selection.start.column !== token.value.length+col-1) && token.value.lastIndexOf(quote) === token.value.length-1)))) { - if (!CstyleBehaviour.isSaneInsertion(editor, session)) - return; - return { - text: quote + quote, - selection: [1,1] - }; - } else if (token && token.type === "string") { - var rightChar = line.substring(cursor.column, cursor.column + 1); - if (rightChar == quote) { - return { - text: '', - selection: [1, 1] - }; - } - } - } - } - }); - - this.add("string_dquotes", "deletion", function (state, action, editor, session, range) { - var selected = session.doc.getTextRange(range); - if (!range.isMultiLine() && (selected == '"' || selected == "'")) { - var line = session.doc.getLine(range.start.row); - var rightChar = line.substring(range.start.column + 1, range.start.column + 2); - if (rightChar == selected) { - range.end.column++; - return range; - } - } - }); - -}; - -oop.inherits(CstyleBehaviour, Behaviour); - -exports.CstyleBehaviour = CstyleBehaviour; -}); - -ace.define('ace/mode/folding/cstyle', ['require', 'exports', 'module' , 'ace/lib/oop', 'ace/range', 'ace/mode/folding/fold_mode'], function(require, exports, module) { - - -var oop = require("../../lib/oop"); -var Range = require("../../range").Range; -var BaseFoldMode = require("./fold_mode").FoldMode; - -var FoldMode = exports.FoldMode = function(commentRegex) { - if (commentRegex) { - this.foldingStartMarker = new RegExp( - this.foldingStartMarker.source.replace(/\|[^|]*?$/, "|" + commentRegex.start) - ); - this.foldingStopMarker = new RegExp( - this.foldingStopMarker.source.replace(/\|[^|]*?$/, "|" + commentRegex.end) - ); - } -}; -oop.inherits(FoldMode, BaseFoldMode); - -(function() { - - this.foldingStartMarker = /(\{|\[)[^\}\]]*$|^\s*(\/\*)/; - this.foldingStopMarker = /^[^\[\{]*(\}|\])|^[\s\*]*(\*\/)/; - - this.getFoldWidgetRange = function(session, foldStyle, row, forceMultiline) { - var line = session.getLine(row); - var match = line.match(this.foldingStartMarker); - if (match) { - var i = match.index; - - if (match[1]) - return this.openingBracketBlock(session, match[1], row, i); - - var range = session.getCommentFoldRange(row, i + match[0].length, 1); - - if (range && !range.isMultiLine()) { - if (forceMultiline) { - range = this.getSectionRange(session, row); - } else if (foldStyle != "all") - range = null; - } - - return range; - } - - if (foldStyle === "markbegin") - return; - - var match = line.match(this.foldingStopMarker); - if (match) { - var i = match.index + match[0].length; - - if (match[1]) - return this.closingBracketBlock(session, match[1], row, i); - - return session.getCommentFoldRange(row, i, -1); - } - }; - - this.getSectionRange = function(session, row) { - var line = session.getLine(row); - var startIndent = line.search(/\S/); - var startRow = row; - var startColumn = line.length; - row = row + 1; - var endRow = row; - var maxRow = session.getLength(); - while (++row < maxRow) { - line = session.getLine(row); - var indent = line.search(/\S/); - if (indent === -1) - continue; - if (startIndent > indent) - break; - var subRange = this.getFoldWidgetRange(session, "all", row); - - if (subRange) { - if (subRange.start.row <= startRow) { - break; - } else if (subRange.isMultiLine()) { - row = subRange.end.row; - } else if (startIndent == indent) { - break; - } - } - endRow = row; - } - - return new Range(startRow, startColumn, endRow, session.getLine(endRow).length); - }; - -}).call(FoldMode.prototype); - -}); - -ace.define('ace/mode/css', ['require', 'exports', 'module' , 'ace/lib/oop', 'ace/mode/text', 'ace/tokenizer', 'ace/mode/css_highlight_rules', 'ace/mode/matching_brace_outdent', 'ace/worker/worker_client', 'ace/mode/behaviour/css', 'ace/mode/folding/cstyle'], function(require, exports, module) { - - -var oop = require("../lib/oop"); -var TextMode = require("./text").Mode; -var Tokenizer = require("../tokenizer").Tokenizer; -var CssHighlightRules = require("./css_highlight_rules").CssHighlightRules; -var MatchingBraceOutdent = require("./matching_brace_outdent").MatchingBraceOutdent; -var WorkerClient = require("../worker/worker_client").WorkerClient; -var CssBehaviour = require("./behaviour/css").CssBehaviour; -var CStyleFoldMode = require("./folding/cstyle").FoldMode; - -var Mode = function() { - this.HighlightRules = CssHighlightRules; - this.$outdent = new MatchingBraceOutdent(); - this.$behaviour = new CssBehaviour(); - this.foldingRules = new CStyleFoldMode(); -}; -oop.inherits(Mode, TextMode); - -(function() { - - this.foldingRules = "cStyle"; - this.blockComment = {start: "/*", end: "*/"}; - - this.getNextLineIndent = function(state, line, tab) { - var indent = this.$getIndent(line); - var tokens = this.getTokenizer().getLineTokens(line, state).tokens; - if (tokens.length && tokens[tokens.length-1].type == "comment") { - return indent; - } - - var match = line.match(/^.*\{\s*$/); - if (match) { - indent += tab; - } - - return indent; - }; - - this.checkOutdent = function(state, line, input) { - return this.$outdent.checkOutdent(line, input); - }; - - this.autoOutdent = function(state, doc, row) { - this.$outdent.autoOutdent(doc, row); - }; - - this.createWorker = function(session) { - var worker = new WorkerClient(["ace"], "ace/mode/css_worker", "Worker"); - worker.attachToDocument(session.getDocument()); - - worker.on("csslint", function(e) { - session.setAnnotations(e.data); - }); - - worker.on("terminate", function() { - session.clearAnnotations(); - }); - - return worker; - }; - - this.$id = "ace/mode/css"; -}).call(Mode.prototype); - -exports.Mode = Mode; - -}); - -ace.define('ace/mode/behaviour/css', ['require', 'exports', 'module' , 'ace/lib/oop', 'ace/mode/behaviour', 'ace/mode/behaviour/cstyle', 'ace/token_iterator'], function(require, exports, module) { - - -var oop = require("../../lib/oop"); -var Behaviour = require("../behaviour").Behaviour; -var CstyleBehaviour = require("./cstyle").CstyleBehaviour; -var TokenIterator = require("../../token_iterator").TokenIterator; - -var CssBehaviour = function () { - - this.inherit(CstyleBehaviour); - - this.add("colon", "insertion", function (state, action, editor, session, text) { - if (text === ':') { - var cursor = editor.getCursorPosition(); - var iterator = new TokenIterator(session, cursor.row, cursor.column); - var token = iterator.getCurrentToken(); - if (token && token.value.match(/\s+/)) { - token = iterator.stepBackward(); - } - if (token && token.type === 'support.type') { - var line = session.doc.getLine(cursor.row); - var rightChar = line.substring(cursor.column, cursor.column + 1); - if (rightChar === ':') { - return { - text: '', - selection: [1, 1] - } - } - if (!line.substring(cursor.column).match(/^\s*;/)) { - return { - text: ':;', - selection: [1, 1] - } - } - } - } - }); - - this.add("colon", "deletion", function (state, action, editor, session, range) { - var selected = session.doc.getTextRange(range); - if (!range.isMultiLine() && selected === ':') { - var cursor = editor.getCursorPosition(); - var iterator = new TokenIterator(session, cursor.row, cursor.column); - var token = iterator.getCurrentToken(); - if (token && token.value.match(/\s+/)) { - token = iterator.stepBackward(); - } - if (token && token.type === 'support.type') { - var line = session.doc.getLine(range.start.row); - var rightChar = line.substring(range.end.column, range.end.column + 1); - if (rightChar === ';') { - range.end.column ++; - return range; - } - } - } - }); - - this.add("semicolon", "insertion", function (state, action, editor, session, text) { - if (text === ';') { - var cursor = editor.getCursorPosition(); - var line = session.doc.getLine(cursor.row); - var rightChar = line.substring(cursor.column, cursor.column + 1); - if (rightChar === ';') { - return { - text: '', - selection: [1, 1] - } - } - } - }); - -} -oop.inherits(CssBehaviour, CstyleBehaviour); - -exports.CssBehaviour = CssBehaviour; -}); - -ace.define('ace/mode/behaviour/html', ['require', 'exports', 'module' , 'ace/lib/oop', 'ace/mode/behaviour/xml', 'ace/mode/behaviour/cstyle', 'ace/token_iterator'], function(require, exports, module) { - - -var oop = require("../../lib/oop"); -var XmlBehaviour = require("../behaviour/xml").XmlBehaviour; -var CstyleBehaviour = require("./cstyle").CstyleBehaviour; -var TokenIterator = require("../../token_iterator").TokenIterator; -var voidElements = ['area', 'base', 'br', 'col', 'command', 'embed', 'hr', 'img', 'input', 'keygen', 'link', 'meta', 'param', 'source', 'track', 'wbr']; - -function hasType(token, type) { - var tokenTypes = token.type.split('.'); - return type.split('.').every(function(type){ - return (tokenTypes.indexOf(type) !== -1); - }); - return hasType; -} - -var HtmlBehaviour = function () { - - this.inherit(XmlBehaviour); // Get xml behaviour - - this.add("autoclosing", "insertion", function (state, action, editor, session, text) { - if (text == '>') { - var position = editor.getCursorPosition(); - var iterator = new TokenIterator(session, position.row, position.column); - var token = iterator.getCurrentToken(); - - if (token && hasType(token, 'string') && iterator.getCurrentTokenColumn() + token.value.length > position.column) - return; - var atCursor = false; - if (!token || !hasType(token, 'meta.tag') && !(hasType(token, 'text') && token.value.match('/'))){ - do { - token = iterator.stepBackward(); - } while (token && (hasType(token, 'string') || hasType(token, 'keyword.operator') || hasType(token, 'entity.attribute-name') || hasType(token, 'text'))); - } else { - atCursor = true; - } - if (!token || !hasType(token, 'meta.tag.name') || iterator.stepBackward().value.match('/')) { - return; - } - var element = token.value; - if (atCursor){ - var element = element.substring(0, position.column - token.start); - } - if (voidElements.indexOf(element) !== -1){ - return; - } - return { - text: '>' + '', - selection: [1, 1] - } - } - }); -} -oop.inherits(HtmlBehaviour, XmlBehaviour); - -exports.HtmlBehaviour = HtmlBehaviour; -}); - -ace.define('ace/mode/behaviour/xml', ['require', 'exports', 'module' , 'ace/lib/oop', 'ace/mode/behaviour', 'ace/mode/behaviour/cstyle', 'ace/token_iterator'], function(require, exports, module) { - - -var oop = require("../../lib/oop"); -var Behaviour = require("../behaviour").Behaviour; -var CstyleBehaviour = require("./cstyle").CstyleBehaviour; -var TokenIterator = require("../../token_iterator").TokenIterator; - -function hasType(token, type) { - var tokenTypes = token.type.split('.'); - return type.split('.').every(function(type){ - return (tokenTypes.indexOf(type) !== -1); - }); - return hasType; -} - -var XmlBehaviour = function () { - - this.inherit(CstyleBehaviour, ["string_dquotes"]); // Get string behaviour - - this.add("autoclosing", "insertion", function (state, action, editor, session, text) { - if (text == '>') { - var position = editor.getCursorPosition(); - var iterator = new TokenIterator(session, position.row, position.column); - var token = iterator.getCurrentToken(); - - if (token && hasType(token, 'string') && iterator.getCurrentTokenColumn() + token.value.length > position.column) - return; - var atCursor = false; - if (!token || !hasType(token, 'meta.tag') && !(hasType(token, 'text') && token.value.match('/'))){ - do { - token = iterator.stepBackward(); - } while (token && (hasType(token, 'string') || hasType(token, 'keyword.operator') || hasType(token, 'entity.attribute-name') || hasType(token, 'text'))); - } else { - atCursor = true; - } - if (!token || !hasType(token, 'meta.tag.name') || iterator.stepBackward().value.match('/')) { - return; - } - var tag = token.value; - if (atCursor){ - var tag = tag.substring(0, position.column - token.start); - } - - return { - text: '>' + '', - selection: [1, 1] - } - } - }); - - this.add('autoindent', 'insertion', function (state, action, editor, session, text) { - if (text == "\n") { - var cursor = editor.getCursorPosition(); - var line = session.getLine(cursor.row); - var rightChars = line.substring(cursor.column, cursor.column + 2); - if (rightChars == '?)/; - this._parseTag = function(tag) { - - var match = tag.match(this.tagRe); - var column = 0; - - return { - value: tag, - match: match ? match[2] : "", - closing: match ? !!match[3] : false, - selfClosing: match ? !!match[5] || match[2] == "/>" : false, - tagName: match ? match[4] : "", - column: match[1] ? column + match[1].length : column - }; - }; - this._readTagForward = function(iterator) { - var token = iterator.getCurrentToken(); - if (!token) - return null; - - var value = ""; - var start; - - do { - if (token.type.lastIndexOf("meta.tag", 0) === 0) { - if (!start) { - var start = { - row: iterator.getCurrentTokenRow(), - column: iterator.getCurrentTokenColumn() - }; - } - value += token.value; - if (value.indexOf(">") !== -1) { - var tag = this._parseTag(value); - tag.start = start; - tag.end = { - row: iterator.getCurrentTokenRow(), - column: iterator.getCurrentTokenColumn() + token.value.length - }; - iterator.stepForward(); - return tag; - } - } - } while(token = iterator.stepForward()); - - return null; - }; - - this._readTagBackward = function(iterator) { - var token = iterator.getCurrentToken(); - if (!token) - return null; - - var value = ""; - var end; - - do { - if (token.type.lastIndexOf("meta.tag", 0) === 0) { - if (!end) { - end = { - row: iterator.getCurrentTokenRow(), - column: iterator.getCurrentTokenColumn() + token.value.length - }; - } - value = token.value + value; - if (value.indexOf("<") !== -1) { - var tag = this._parseTag(value); - tag.end = end; - tag.start = { - row: iterator.getCurrentTokenRow(), - column: iterator.getCurrentTokenColumn() - }; - iterator.stepBackward(); - return tag; - } - } - } while(token = iterator.stepBackward()); - - return null; - }; - - this._pop = function(stack, tag) { - while (stack.length) { - - var top = stack[stack.length-1]; - if (!tag || top.tagName == tag.tagName) { - return stack.pop(); - } - else if (this.voidElements[tag.tagName]) { - return; - } - else if (this.voidElements[top.tagName]) { - stack.pop(); - continue; - } else { - return null; - } - } - }; - - this.getFoldWidgetRange = function(session, foldStyle, row) { - var firstTag = this._getFirstTagInLine(session, row); - - if (!firstTag.match) - return null; - - var isBackward = firstTag.closing || firstTag.selfClosing; - var stack = []; - var tag; - - if (!isBackward) { - var iterator = new TokenIterator(session, row, firstTag.column); - var start = { - row: row, - column: firstTag.column + firstTag.tagName.length + 2 - }; - while (tag = this._readTagForward(iterator)) { - if (tag.selfClosing) { - if (!stack.length) { - tag.start.column += tag.tagName.length + 2; - tag.end.column -= 2; - return Range.fromPoints(tag.start, tag.end); - } else - continue; - } - - if (tag.closing) { - this._pop(stack, tag); - if (stack.length == 0) - return Range.fromPoints(start, tag.start); - } - else { - stack.push(tag) - } - } - } - else { - var iterator = new TokenIterator(session, row, firstTag.column + firstTag.match.length); - var end = { - row: row, - column: firstTag.column - }; - - while (tag = this._readTagBackward(iterator)) { - if (tag.selfClosing) { - if (!stack.length) { - tag.start.column += tag.tagName.length + 2; - tag.end.column -= 2; - return Range.fromPoints(tag.start, tag.end); - } else - continue; - } - - if (!tag.closing) { - this._pop(stack, tag); - if (stack.length == 0) { - tag.start.column += tag.tagName.length + 2; - return Range.fromPoints(tag.start, end); - } - } - else { - stack.push(tag) - } - } - } - - }; - -}).call(FoldMode.prototype); - -}); - -ace.define('ace/mode/html_completions', ['require', 'exports', 'module' , 'ace/token_iterator'], function(require, exports, module) { - - -var TokenIterator = require("../token_iterator").TokenIterator; - -var commonAttributes = [ - "accesskey", - "class", - "contenteditable", - "contextmenu", - "dir", - "draggable", - "dropzone", - "hidden", - "id", - "lang", - "spellcheck", - "style", - "tabindex", - "title", - "translate" -]; - -var eventAttributes = [ - "onabort", - "onblur", - "oncancel", - "oncanplay", - "oncanplaythrough", - "onchange", - "onclick", - "onclose", - "oncontextmenu", - "oncuechange", - "ondblclick", - "ondrag", - "ondragend", - "ondragenter", - "ondragleave", - "ondragover", - "ondragstart", - "ondrop", - "ondurationchange", - "onemptied", - "onended", - "onerror", - "onfocus", - "oninput", - "oninvalid", - "onkeydown", - "onkeypress", - "onkeyup", - "onload", - "onloadeddata", - "onloadedmetadata", - "onloadstart", - "onmousedown", - "onmousemove", - "onmouseout", - "onmouseover", - "onmouseup", - "onmousewheel", - "onpause", - "onplay", - "onplaying", - "onprogress", - "onratechange", - "onreset", - "onscroll", - "onseeked", - "onseeking", - "onselect", - "onshow", - "onstalled", - "onsubmit", - "onsuspend", - "ontimeupdate", - "onvolumechange", - "onwaiting" -]; - -var globalAttributes = commonAttributes.concat(eventAttributes); - -var attributeMap = { - "html": ["manifest"], - "head": [], - "title": [], - "base": ["href", "target"], - "link": ["href", "hreflang", "rel", "media", "type", "sizes"], - "meta": ["http-equiv", "name", "content", "charset"], - "style": ["type", "media", "scoped"], - "script": ["charset", "type", "src", "defer", "async"], - "noscript": ["href"], - "body": ["onafterprint", "onbeforeprint", "onbeforeunload", "onhashchange", "onmessage", "onoffline", "onpopstate", "onredo", "onresize", "onstorage", "onundo", "onunload"], - "section": [], - "nav": [], - "article": ["pubdate"], - "aside": [], - "h1": [], - "h2": [], - "h3": [], - "h4": [], - "h5": [], - "h6": [], - "header": [], - "footer": [], - "address": [], - "main": [], - "p": [], - "hr": [], - "pre": [], - "blockquote": ["cite"], - "ol": ["start", "reversed"], - "ul": [], - "li": ["value"], - "dl": [], - "dt": [], - "dd": [], - "figure": [], - "figcaption": [], - "div": [], - "a": ["href", "target", "ping", "rel", "media", "hreflang", "type"], - "em": [], - "strong": [], - "small": [], - "s": [], - "cite": [], - "q": ["cite"], - "dfn": [], - "abbr": [], - "data": [], - "time": ["datetime"], - "code": [], - "var": [], - "samp": [], - "kbd": [], - "sub": [], - "sup": [], - "i": [], - "b": [], - "u": [], - "mark": [], - "ruby": [], - "rt": [], - "rp": [], - "bdi": [], - "bdo": [], - "span": [], - "br": [], - "wbr": [], - "ins": ["cite", "datetime"], - "del": ["cite", "datetime"], - "img": ["alt", "src", "height", "width", "usemap", "ismap"], - "iframe": ["name", "src", "height", "width", "sandbox", "seamless"], - "embed": ["src", "height", "width", "type"], - "object": ["param", "data", "type", "height" , "width", "usemap", "name", "form", "classid"], - "param": ["name", "value"], - "video": ["src", "autobuffer", "autoplay", "loop", "controls", "width", "height", "poster"], - "audio": ["src", "autobuffer", "autoplay", "loop", "controls"], - "source": ["src", "type", "media"], - "track": ["kind", "src", "srclang", "label", "default"], - "canvas": ["width", "height"], - "map": ["name"], - "area": ["shape", "coords", "href", "hreflang", "alt", "target", "media", "rel", "ping", "type"], - "svg": [], - "math": [], - "table": ["summary"], - "caption": [], - "colgroup": ["span"], - "col": ["span"], - "tbody": [], - "thead": [], - "tfoot": [], - "tr": [], - "td": ["headers", "rowspan", "colspan"], - "th": ["headers", "rowspan", "colspan", "scope"], - "form": ["accept-charset", "action", "autocomplete", "enctype", "method", "name", "novalidate", "target"], - "fieldset": ["disabled", "form", "name"], - "legend": [], - "label": ["form", "for"], - "input": ["type", "accept", "alt", "autocomplete", "checked", "disabled", "form", "formaction", "formenctype", "formmethod", "formnovalidate", "formtarget", "height", "list", "max", "maxlength", "min", "multiple", "pattern", "placeholder", "readonly", "required", "size", "src", "step", "width", "files", "value"], - "button": ["autofocus", "disabled", "form", "formaction", "formenctype", "formmethod", "formnovalidate", "formtarget", "name", "value", "type"], - "select": ["autofocus", "disabled", "form", "multiple", "name", "size"], - "datalist": [], - "optgroup": ["disabled", "label"], - "option": ["disabled", "selected", "label", "value"], - "textarea": ["autofocus", "disabled", "form", "maxlength", "name", "placeholder", "readonly", "required", "rows", "cols", "wrap"], - "keygen": ["autofocus", "challenge", "disabled", "form", "keytype", "name"], - "output": ["for", "form", "name"], - "progress": ["value", "max"], - "meter": ["value", "min", "max", "low", "high", "optimum"], - "details": ["open"], - "summary": [], - "command": ["type", "label", "icon", "disabled", "checked", "radiogroup", "command"], - "menu": ["type", "label"], - "dialog": ["open"] -}; - -var allElements = Object.keys(attributeMap); - -function hasType(token, type) { - var tokenTypes = token.type.split('.'); - return type.split('.').every(function(type){ - return (tokenTypes.indexOf(type) !== -1); - }); -} - -function findTagName(session, pos) { - var iterator = new TokenIterator(session, pos.row, pos.column); - var token = iterator.getCurrentToken(); - if (!token || !hasType(token, 'tag') && !(hasType(token, 'text') && token.value.match('/'))){ - do { - token = iterator.stepBackward(); - } while (token && (hasType(token, 'string') || hasType(token, 'operator') || hasType(token, 'attribute-name') || hasType(token, 'text'))); - } - if (token && hasType(token, 'tag-name') && !iterator.stepBackward().value.match('/')) - return token.value; -} - -var HtmlCompletions = function() { - -}; - -(function() { - - this.getCompletions = function(state, session, pos, prefix) { - var token = session.getTokenAt(pos.row, pos.column); - - if (!token) - return []; - if (hasType(token, "tag-name") || (token.value == '<' && hasType(token, "text"))) - return this.getTagCompletions(state, session, pos, prefix); - if (hasType(token, 'text') || hasType(token, 'attribute-name')) - return this.getAttributeCompetions(state, session, pos, prefix); - - return []; - }; - - this.getTagCompletions = function(state, session, pos, prefix) { - var elements = allElements; - if (prefix) { - elements = elements.filter(function(element){ - return element.indexOf(prefix) === 0; - }); - } - return elements.map(function(element){ - return { - value: element, - meta: "tag" - }; - }); - }; - - this.getAttributeCompetions = function(state, session, pos, prefix) { - var tagName = findTagName(session, pos); - if (!tagName) - return []; - var attributes = globalAttributes; - if (tagName in attributeMap) { - attributes = attributes.concat(attributeMap[tagName]); - } - if (prefix) { - attributes = attributes.filter(function(attribute){ - return attribute.indexOf(prefix) === 0; - }); - } - return attributes.map(function(attribute){ - return { - caption: attribute, - snippet: attribute + '="$0"', - meta: "attribute" - }; - }); - }; - -}).call(HtmlCompletions.prototype); - -exports.HtmlCompletions = HtmlCompletions; -}); - -ace.define('ace/mode/ruby', ['require', 'exports', 'module' , 'ace/lib/oop', 'ace/mode/text', 'ace/tokenizer', 'ace/mode/ruby_highlight_rules', 'ace/mode/matching_brace_outdent', 'ace/range', 'ace/mode/folding/coffee'], function(require, exports, module) { - - -var oop = require("../lib/oop"); -var TextMode = require("./text").Mode; -var Tokenizer = require("../tokenizer").Tokenizer; -var RubyHighlightRules = require("./ruby_highlight_rules").RubyHighlightRules; -var MatchingBraceOutdent = require("./matching_brace_outdent").MatchingBraceOutdent; -var Range = require("../range").Range; -var FoldMode = require("./folding/coffee").FoldMode; - -var Mode = function() { - this.HighlightRules = RubyHighlightRules; - this.$outdent = new MatchingBraceOutdent(); - this.foldingRules = new FoldMode(); -}; -oop.inherits(Mode, TextMode); - -(function() { - - - this.lineCommentStart = "#"; - - this.getNextLineIndent = function(state, line, tab) { - var indent = this.$getIndent(line); - - var tokenizedLine = this.getTokenizer().getLineTokens(line, state); - var tokens = tokenizedLine.tokens; - - if (tokens.length && tokens[tokens.length-1].type == "comment") { - return indent; - } - - if (state == "start") { - var match = line.match(/^.*[\{\(\[]\s*$/); - var startingClassOrMethod = line.match(/^\s*(class|def)\s.*$/); - var startingDoBlock = line.match(/.*do(\s*|\s+\|.*\|\s*)$/); - var startingConditional = line.match(/^\s*(if|else)\s*/) - if (match || startingClassOrMethod || startingDoBlock || startingConditional) { - indent += tab; - } - } - - return indent; - }; - - this.checkOutdent = function(state, line, input) { - return /^\s+end$/.test(line + input) || /^\s+}$/.test(line + input) || /^\s+else$/.test(line + input); - }; - - this.autoOutdent = function(state, doc, row) { - var indent = this.$getIndent(doc.getLine(row)); - var tab = doc.getTabString(); - if (indent.slice(-tab.length) == tab) - doc.remove(new Range(row, indent.length-tab.length, row, indent.length)); - }; - - this.$id = "ace/mode/ruby"; -}).call(Mode.prototype); - -exports.Mode = Mode; -}); - -ace.define('ace/mode/ruby_highlight_rules', ['require', 'exports', 'module' , 'ace/lib/oop', 'ace/mode/text_highlight_rules'], function(require, exports, module) { - - -var oop = require("../lib/oop"); -var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; -var constantOtherSymbol = exports.constantOtherSymbol = { - token : "constant.other.symbol.ruby", // symbol - regex : "[:](?:[A-Za-z_]|[@$](?=[a-zA-Z0-9_]))[a-zA-Z0-9_]*[!=?]?" -}; - -var qString = exports.qString = { - token : "string", // single line - regex : "['](?:(?:\\\\.)|(?:[^'\\\\]))*?[']" -}; - -var qqString = exports.qqString = { - token : "string", // single line - regex : '["](?:(?:\\\\.)|(?:[^"\\\\]))*?["]' -}; - -var tString = exports.tString = { - token : "string", // backtick string - regex : "[`](?:(?:\\\\.)|(?:[^'\\\\]))*?[`]" -}; - -var constantNumericHex = exports.constantNumericHex = { - token : "constant.numeric", // hex - regex : "0[xX][0-9a-fA-F](?:[0-9a-fA-F]|_(?=[0-9a-fA-F]))*\\b" -}; - -var constantNumericFloat = exports.constantNumericFloat = { - token : "constant.numeric", // float - regex : "[+-]?\\d(?:\\d|_(?=\\d))*(?:(?:\\.\\d(?:\\d|_(?=\\d))*)?(?:[eE][+-]?\\d+)?)?\\b" -}; - -var RubyHighlightRules = function() { - - var builtinFunctions = ( - "abort|Array|assert|assert_equal|assert_not_equal|assert_same|assert_not_same|" + - "assert_nil|assert_not_nil|assert_match|assert_no_match|assert_in_delta|assert_throws|" + - "assert_raise|assert_nothing_raised|assert_instance_of|assert_kind_of|assert_respond_to|" + - "assert_operator|assert_send|assert_difference|assert_no_difference|assert_recognizes|" + - "assert_generates|assert_response|assert_redirected_to|assert_template|assert_select|" + - "assert_select_email|assert_select_rjs|assert_select_encoded|css_select|at_exit|" + - "attr|attr_writer|attr_reader|attr_accessor|attr_accessible|autoload|binding|block_given?|callcc|" + - "caller|catch|chomp|chomp!|chop|chop!|defined?|delete_via_redirect|eval|exec|exit|" + - "exit!|fail|Float|flunk|follow_redirect!|fork|form_for|form_tag|format|gets|global_variables|gsub|" + - "gsub!|get_via_redirect|host!|https?|https!|include|Integer|lambda|link_to|" + - "link_to_unless_current|link_to_function|link_to_remote|load|local_variables|loop|open|open_session|" + - "p|print|printf|proc|putc|puts|post_via_redirect|put_via_redirect|raise|rand|" + - "raw|readline|readlines|redirect?|request_via_redirect|require|scan|select|" + - "set_trace_func|sleep|split|sprintf|srand|String|stylesheet_link_tag|syscall|system|sub|sub!|test|" + - "throw|trace_var|trap|untrace_var|atan2|cos|exp|frexp|ldexp|log|log10|sin|sqrt|tan|" + - "render|javascript_include_tag|csrf_meta_tag|label_tag|text_field_tag|submit_tag|check_box_tag|" + - "content_tag|radio_button_tag|text_area_tag|password_field_tag|hidden_field_tag|" + - "fields_for|select_tag|options_for_select|options_from_collection_for_select|collection_select|" + - "time_zone_select|select_date|select_time|select_datetime|date_select|time_select|datetime_select|" + - "select_year|select_month|select_day|select_hour|select_minute|select_second|file_field_tag|" + - "file_field|respond_to|skip_before_filter|around_filter|after_filter|verify|" + - "protect_from_forgery|rescue_from|helper_method|redirect_to|before_filter|" + - "send_data|send_file|validates_presence_of|validates_uniqueness_of|validates_length_of|" + - "validates_format_of|validates_acceptance_of|validates_associated|validates_exclusion_of|" + - "validates_inclusion_of|validates_numericality_of|validates_with|validates_each|" + - "authenticate_or_request_with_http_basic|authenticate_or_request_with_http_digest|" + - "filter_parameter_logging|match|get|post|resources|redirect|scope|assert_routing|" + - "translate|localize|extract_locale_from_tld|caches_page|expire_page|caches_action|expire_action|" + - "cache|expire_fragment|expire_cache_for|observe|cache_sweeper|" + - "has_many|has_one|belongs_to|has_and_belongs_to_many" - ); - - var keywords = ( - "alias|and|BEGIN|begin|break|case|class|def|defined|do|else|elsif|END|end|ensure|" + - "__FILE__|finally|for|gem|if|in|__LINE__|module|next|not|or|private|protected|public|" + - "redo|rescue|retry|return|super|then|undef|unless|until|when|while|yield" - ); - - var buildinConstants = ( - "true|TRUE|false|FALSE|nil|NIL|ARGF|ARGV|DATA|ENV|RUBY_PLATFORM|RUBY_RELEASE_DATE|" + - "RUBY_VERSION|STDERR|STDIN|STDOUT|TOPLEVEL_BINDING" - ); - - var builtinVariables = ( - "\$DEBUG|\$defout|\$FILENAME|\$LOAD_PATH|\$SAFE|\$stdin|\$stdout|\$stderr|\$VERBOSE|" + - "$!|root_url|flash|session|cookies|params|request|response|logger|self" - ); - - var keywordMapper = this.$keywords = this.createKeywordMapper({ - "keyword": keywords, - "constant.language": buildinConstants, - "variable.language": builtinVariables, - "support.function": builtinFunctions, - "invalid.deprecated": "debugger" // TODO is this a remnant from js mode? - }, "identifier"); - - this.$rules = { - "start" : [ - { - token : "comment", - regex : "#.*$" - }, { - token : "comment", // multi line comment - regex : "^=begin(?:$|\\s.*$)", - next : "comment" - }, { - token : "string.regexp", - regex : "[/](?:(?:\\[(?:\\\\]|[^\\]])+\\])|(?:\\\\/|[^\\]/]))*[/]\\w*\\s*(?=[).,;]|$)" - }, - - qString, - qqString, - tString, - - { - token : "text", // namespaces aren't symbols - regex : "::" - }, { - token : "variable.instance", // instance variable - regex : "@{1,2}[a-zA-Z_\\d]+" - }, { - token : "support.class", // class name - regex : "[A-Z][a-zA-Z_\\d]+" - }, - - constantOtherSymbol, - constantNumericHex, - constantNumericFloat, - - { - token : "constant.language.boolean", - regex : "(?:true|false)\\b" - }, { - token : keywordMapper, - regex : "[a-zA-Z_$][a-zA-Z0-9_$]*\\b" - }, { - token : "punctuation.separator.key-value", - regex : "=>" - }, { - stateName: "heredoc", - onMatch : function(value, currentState, stack) { - var next = value[2] == '-' ? "indentedHeredoc" : "heredoc"; - var tokens = value.split(this.splitRegex); - stack.push(next, tokens[3]); - return [ - {type:"constant", value: tokens[1]}, - {type:"string", value: tokens[2]}, - {type:"support.class", value: tokens[3]}, - {type:"string", value: tokens[4]} - ]; - }, - regex : "(<<-?)(['\"`]?)([\\w]+)(['\"`]?)", - rules: { - heredoc: [{ - onMatch: function(value, currentState, stack) { - if (value === stack[1]) { - stack.shift(); - stack.shift(); - this.next = stack[0] || "start"; - return "support.class"; - } - this.next = ""; - return "string"; - }, - regex: ".*$", - next: "start" - }], - indentedHeredoc: [{ - token: "string", - regex: "^ +" - }, { - onMatch: function(value, currentState, stack) { - if (value === stack[1]) { - stack.shift(); - stack.shift(); - this.next = stack[0] || "start"; - return "support.class"; - } - this.next = ""; - return "string"; - }, - regex: ".*$", - next: "start" - }] - } - }, { - regex : "$", - token : "empty", - next : function(currentState, stack) { - if (stack[0] === "heredoc" || stack[0] === "indentedHeredoc") - return stack[0]; - return currentState; - } - }, { - token : "keyword.operator", - regex : "!|\\$|%|&|\\*|\\-\\-|\\-|\\+\\+|\\+|~|===|==|=|!=|!==|<=|>=|<<=|>>=|>>>=|<>|<|>|!|&&|\\|\\||\\?\\:|\\*=|%=|\\+=|\\-=|&=|\\^=|\\b(?:in|instanceof|new|delete|typeof|void)" - }, { - token : "paren.lparen", - regex : "[[({]" - }, { - token : "paren.rparen", - regex : "[\\])}]" - }, { - token : "text", - regex : "\\s+" - } - ], - "comment" : [ - { - token : "comment", // closing comment - regex : "^=end(?:$|\\s.*$)", - next : "start" - }, { - token : "comment", // comment spanning whole line - regex : ".+" - } - ] - }; - - this.normalizeRules(); -}; - -oop.inherits(RubyHighlightRules, TextHighlightRules); - -exports.RubyHighlightRules = RubyHighlightRules; -}); - -ace.define('ace/mode/folding/coffee', ['require', 'exports', 'module' , 'ace/lib/oop', 'ace/mode/folding/fold_mode', 'ace/range'], function(require, exports, module) { - - -var oop = require("../../lib/oop"); -var BaseFoldMode = require("./fold_mode").FoldMode; -var Range = require("../../range").Range; - -var FoldMode = exports.FoldMode = function() {}; -oop.inherits(FoldMode, BaseFoldMode); - -(function() { - - this.getFoldWidgetRange = function(session, foldStyle, row) { - var range = this.indentationBlock(session, row); - if (range) - return range; - - var re = /\S/; - var line = session.getLine(row); - var startLevel = line.search(re); - if (startLevel == -1 || line[startLevel] != "#") - return; - - var startColumn = line.length; - var maxRow = session.getLength(); - var startRow = row; - var endRow = row; - - while (++row < maxRow) { - line = session.getLine(row); - var level = line.search(re); - - if (level == -1) - continue; - - if (line[level] != "#") - break; - - endRow = row; - } - - if (endRow > startRow) { - var endColumn = session.getLine(endRow).length; - return new Range(startRow, startColumn, endRow, endColumn); - } - }; - this.getFoldWidget = function(session, foldStyle, row) { - var line = session.getLine(row); - var indent = line.search(/\S/); - var next = session.getLine(row + 1); - var prev = session.getLine(row - 1); - var prevIndent = prev.search(/\S/); - var nextIndent = next.search(/\S/); - - if (indent == -1) { - session.foldWidgets[row - 1] = prevIndent!= -1 && prevIndent < nextIndent ? "start" : ""; - return ""; - } - if (prevIndent == -1) { - if (indent == nextIndent && line[indent] == "#" && next[indent] == "#") { - session.foldWidgets[row - 1] = ""; - session.foldWidgets[row + 1] = ""; - return "start"; - } - } else if (prevIndent == indent && line[indent] == "#" && prev[indent] == "#") { - if (session.getLine(row - 2).search(/\S/) == -1) { - session.foldWidgets[row - 1] = "start"; - session.foldWidgets[row + 1] = ""; - return ""; - } - } - - if (prevIndent!= -1 && prevIndent < indent) - session.foldWidgets[row - 1] = "start"; - else - session.foldWidgets[row - 1] = ""; - - if (indent < nextIndent) - return "start"; - else - return ""; - }; - -}).call(FoldMode.prototype); - -}); diff --git a/IDE/jsrealb-ide/ace-src-noconflict/mode-erlang.js b/IDE/jsrealb-ide/ace-src-noconflict/mode-erlang.js deleted file mode 100644 index 16571686..00000000 --- a/IDE/jsrealb-ide/ace-src-noconflict/mode-erlang.js +++ /dev/null @@ -1,987 +0,0 @@ -/* ***** BEGIN LICENSE BLOCK ***** - * Distributed under the BSD license: - * - * Copyright (c) 2012, Ajax.org B.V. - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are met: - * * Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * * Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * * Neither the name of Ajax.org B.V. nor the - * names of its contributors may be used to endorse or promote products - * derived from this software without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND - * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED - * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE - * DISCLAIMED. IN NO EVENT SHALL AJAX.ORG B.V. BE LIABLE FOR ANY - * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES - * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; - * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND - * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - * - * ***** END LICENSE BLOCK ***** */ - -ace.define('ace/mode/erlang', ['require', 'exports', 'module' , 'ace/lib/oop', 'ace/mode/text', 'ace/tokenizer', 'ace/mode/erlang_highlight_rules', 'ace/mode/folding/cstyle'], function(require, exports, module) { - - -var oop = require("../lib/oop"); -var TextMode = require("./text").Mode; -var Tokenizer = require("../tokenizer").Tokenizer; -var ErlangHighlightRules = require("./erlang_highlight_rules").ErlangHighlightRules; -var FoldMode = require("./folding/cstyle").FoldMode; - -var Mode = function() { - this.HighlightRules = ErlangHighlightRules; - this.foldingRules = new FoldMode(); -}; -oop.inherits(Mode, TextMode); - -(function() { - this.lineCommentStart = "%"; - this.blockComment = {start: "/*", end: "*/"}; - this.$id = "ace/mode/erlang"; -}).call(Mode.prototype); - -exports.Mode = Mode; -}); - -ace.define('ace/mode/erlang_highlight_rules', ['require', 'exports', 'module' , 'ace/lib/oop', 'ace/mode/text_highlight_rules'], function(require, exports, module) { - - -var oop = require("../lib/oop"); -var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; - -var ErlangHighlightRules = function() { - - this.$rules = { start: - [ { include: '#module-directive' }, - { include: '#import-export-directive' }, - { include: '#behaviour-directive' }, - { include: '#record-directive' }, - { include: '#define-directive' }, - { include: '#macro-directive' }, - { include: '#directive' }, - { include: '#function' }, - { include: '#everything-else' } ], - '#atom': - [ { token: 'punctuation.definition.symbol.begin.erlang', - regex: '\'', - push: - [ { token: 'punctuation.definition.symbol.end.erlang', - regex: '\'', - next: 'pop' }, - { token: - [ 'punctuation.definition.escape.erlang', - 'constant.other.symbol.escape.erlang', - 'punctuation.definition.escape.erlang', - 'constant.other.symbol.escape.erlang', - 'constant.other.symbol.escape.erlang' ], - regex: '(\\\\)(?:([bdefnrstv\\\\\'"])|(\\^)([@-_])|([0-7]{1,3}))' }, - { token: 'invalid.illegal.atom.erlang', regex: '\\\\\\^?.?' }, - { defaultToken: 'constant.other.symbol.quoted.single.erlang' } ] }, - { token: 'constant.other.symbol.unquoted.erlang', - regex: '[a-z][a-zA-Z\\d@_]*' } ], - '#behaviour-directive': - [ { token: - [ 'meta.directive.behaviour.erlang', - 'punctuation.section.directive.begin.erlang', - 'meta.directive.behaviour.erlang', - 'keyword.control.directive.behaviour.erlang', - 'meta.directive.behaviour.erlang', - 'punctuation.definition.parameters.begin.erlang', - 'meta.directive.behaviour.erlang', - 'entity.name.type.class.behaviour.definition.erlang', - 'meta.directive.behaviour.erlang', - 'punctuation.definition.parameters.end.erlang', - 'meta.directive.behaviour.erlang', - 'punctuation.section.directive.end.erlang' ], - regex: '^(\\s*)(-)(\\s*)(behaviour)(\\s*)(\\()(\\s*)([a-z][a-zA-Z\\d@_]*)(\\s*)(\\))(\\s*)(\\.)' } ], - '#binary': - [ { token: 'punctuation.definition.binary.begin.erlang', - regex: '<<', - push: - [ { token: 'punctuation.definition.binary.end.erlang', - regex: '>>', - next: 'pop' }, - { token: - [ 'punctuation.separator.binary.erlang', - 'punctuation.separator.value-size.erlang' ], - regex: '(,)|(:)' }, - { include: '#internal-type-specifiers' }, - { include: '#everything-else' }, - { defaultToken: 'meta.structure.binary.erlang' } ] } ], - '#character': - [ { token: - [ 'punctuation.definition.character.erlang', - 'punctuation.definition.escape.erlang', - 'constant.character.escape.erlang', - 'punctuation.definition.escape.erlang', - 'constant.character.escape.erlang', - 'constant.character.escape.erlang' ], - regex: '(\\$)(\\\\)(?:([bdefnrstv\\\\\'"])|(\\^)([@-_])|([0-7]{1,3}))' }, - { token: 'invalid.illegal.character.erlang', - regex: '\\$\\\\\\^?.?' }, - { token: - [ 'punctuation.definition.character.erlang', - 'constant.character.erlang' ], - regex: '(\\$)(\\S)' }, - { token: 'invalid.illegal.character.erlang', regex: '\\$.?' } ], - '#comment': - [ { token: 'punctuation.definition.comment.erlang', - regex: '%.*$', - push_: - [ { token: 'comment.line.percentage.erlang', - regex: '$', - next: 'pop' }, - { defaultToken: 'comment.line.percentage.erlang' } ] } ], - '#define-directive': - [ { token: - [ 'meta.directive.define.erlang', - 'punctuation.section.directive.begin.erlang', - 'meta.directive.define.erlang', - 'keyword.control.directive.define.erlang', - 'meta.directive.define.erlang', - 'punctuation.definition.parameters.begin.erlang', - 'meta.directive.define.erlang', - 'entity.name.function.macro.definition.erlang', - 'meta.directive.define.erlang', - 'punctuation.separator.parameters.erlang' ], - regex: '^(\\s*)(-)(\\s*)(define)(\\s*)(\\()(\\s*)([a-zA-Z\\d@_]+)(\\s*)(,)', - push: - [ { token: - [ 'punctuation.definition.parameters.end.erlang', - 'meta.directive.define.erlang', - 'punctuation.section.directive.end.erlang' ], - regex: '(\\))(\\s*)(\\.)', - next: 'pop' }, - { include: '#everything-else' }, - { defaultToken: 'meta.directive.define.erlang' } ] }, - { token: 'meta.directive.define.erlang', - regex: '(?=^\\s*-\\s*define\\s*\\(\\s*[a-zA-Z\\d@_]+\\s*\\()', - push: - [ { token: - [ 'punctuation.definition.parameters.end.erlang', - 'meta.directive.define.erlang', - 'punctuation.section.directive.end.erlang' ], - regex: '(\\))(\\s*)(\\.)', - next: 'pop' }, - { token: - [ 'text', - 'punctuation.section.directive.begin.erlang', - 'text', - 'keyword.control.directive.define.erlang', - 'text', - 'punctuation.definition.parameters.begin.erlang', - 'text', - 'entity.name.function.macro.definition.erlang', - 'text', - 'punctuation.definition.parameters.begin.erlang' ], - regex: '^(\\s*)(-)(\\s*)(define)(\\s*)(\\()(\\s*)([a-zA-Z\\d@_]+)(\\s*)(\\()', - push: - [ { token: - [ 'punctuation.definition.parameters.end.erlang', - 'text', - 'punctuation.separator.parameters.erlang' ], - regex: '(\\))(\\s*)(,)', - next: 'pop' }, - { token: 'punctuation.separator.parameters.erlang', regex: ',' }, - { include: '#everything-else' } ] }, - { token: 'punctuation.separator.define.erlang', - regex: '\\|\\||\\||:|;|,|\\.|->' }, - { include: '#everything-else' }, - { defaultToken: 'meta.directive.define.erlang' } ] } ], - '#directive': - [ { token: - [ 'meta.directive.erlang', - 'punctuation.section.directive.begin.erlang', - 'meta.directive.erlang', - 'keyword.control.directive.erlang', - 'meta.directive.erlang', - 'punctuation.definition.parameters.begin.erlang' ], - regex: '^(\\s*)(-)(\\s*)([a-z][a-zA-Z\\d@_]*)(\\s*)(\\(?)', - push: - [ { token: - [ 'punctuation.definition.parameters.end.erlang', - 'meta.directive.erlang', - 'punctuation.section.directive.end.erlang' ], - regex: '(\\)?)(\\s*)(\\.)', - next: 'pop' }, - { include: '#everything-else' }, - { defaultToken: 'meta.directive.erlang' } ] }, - { token: - [ 'meta.directive.erlang', - 'punctuation.section.directive.begin.erlang', - 'meta.directive.erlang', - 'keyword.control.directive.erlang', - 'meta.directive.erlang', - 'punctuation.section.directive.end.erlang' ], - regex: '^(\\s*)(-)(\\s*)([a-z][a-zA-Z\\d@_]*)(\\s*)(\\.)' } ], - '#everything-else': - [ { include: '#comment' }, - { include: '#record-usage' }, - { include: '#macro-usage' }, - { include: '#expression' }, - { include: '#keyword' }, - { include: '#textual-operator' }, - { include: '#function-call' }, - { include: '#tuple' }, - { include: '#list' }, - { include: '#binary' }, - { include: '#parenthesized-expression' }, - { include: '#character' }, - { include: '#number' }, - { include: '#atom' }, - { include: '#string' }, - { include: '#symbolic-operator' }, - { include: '#variable' } ], - '#expression': - [ { token: 'keyword.control.if.erlang', - regex: '\\bif\\b', - push: - [ { token: 'keyword.control.end.erlang', - regex: '\\bend\\b', - next: 'pop' }, - { include: '#internal-expression-punctuation' }, - { include: '#everything-else' }, - { defaultToken: 'meta.expression.if.erlang' } ] }, - { token: 'keyword.control.case.erlang', - regex: '\\bcase\\b', - push: - [ { token: 'keyword.control.end.erlang', - regex: '\\bend\\b', - next: 'pop' }, - { include: '#internal-expression-punctuation' }, - { include: '#everything-else' }, - { defaultToken: 'meta.expression.case.erlang' } ] }, - { token: 'keyword.control.receive.erlang', - regex: '\\breceive\\b', - push: - [ { token: 'keyword.control.end.erlang', - regex: '\\bend\\b', - next: 'pop' }, - { include: '#internal-expression-punctuation' }, - { include: '#everything-else' }, - { defaultToken: 'meta.expression.receive.erlang' } ] }, - { token: - [ 'keyword.control.fun.erlang', - 'text', - 'entity.name.type.class.module.erlang', - 'text', - 'punctuation.separator.module-function.erlang', - 'text', - 'entity.name.function.erlang', - 'text', - 'punctuation.separator.function-arity.erlang' ], - regex: '\\b(fun)(\\s*)(?:([a-z][a-zA-Z\\d@_]*)(\\s*)(:)(\\s*))?([a-z][a-zA-Z\\d@_]*)(\\s*)(/)' }, - { token: 'keyword.control.fun.erlang', - regex: '\\bfun\\b', - push: - [ { token: 'keyword.control.end.erlang', - regex: '\\bend\\b', - next: 'pop' }, - { token: 'text', - regex: '(?=\\()', - push: - [ { token: 'punctuation.separator.clauses.erlang', - regex: ';|(?=\\bend\\b)', - next: 'pop' }, - { include: '#internal-function-parts' } ] }, - { include: '#everything-else' }, - { defaultToken: 'meta.expression.fun.erlang' } ] }, - { token: 'keyword.control.try.erlang', - regex: '\\btry\\b', - push: - [ { token: 'keyword.control.end.erlang', - regex: '\\bend\\b', - next: 'pop' }, - { include: '#internal-expression-punctuation' }, - { include: '#everything-else' }, - { defaultToken: 'meta.expression.try.erlang' } ] }, - { token: 'keyword.control.begin.erlang', - regex: '\\bbegin\\b', - push: - [ { token: 'keyword.control.end.erlang', - regex: '\\bend\\b', - next: 'pop' }, - { include: '#internal-expression-punctuation' }, - { include: '#everything-else' }, - { defaultToken: 'meta.expression.begin.erlang' } ] }, - { token: 'keyword.control.query.erlang', - regex: '\\bquery\\b', - push: - [ { token: 'keyword.control.end.erlang', - regex: '\\bend\\b', - next: 'pop' }, - { include: '#everything-else' }, - { defaultToken: 'meta.expression.query.erlang' } ] } ], - '#function': - [ { token: - [ 'meta.function.erlang', - 'entity.name.function.definition.erlang', - 'meta.function.erlang' ], - regex: '^(\\s*)([a-z][a-zA-Z\\d@_]*|\'[^\']*\')(\\s*)(?=\\()', - push: - [ { token: 'punctuation.terminator.function.erlang', - regex: '\\.', - next: 'pop' }, - { token: [ 'text', 'entity.name.function.erlang', 'text' ], - regex: '^(\\s*)([a-z][a-zA-Z\\d@_]*|\'[^\']*\')(\\s*)(?=\\()' }, - { token: 'text', - regex: '(?=\\()', - push: - [ { token: 'punctuation.separator.clauses.erlang', - regex: ';|(?=\\.)', - next: 'pop' }, - { include: '#parenthesized-expression' }, - { include: '#internal-function-parts' } ] }, - { include: '#everything-else' }, - { defaultToken: 'meta.function.erlang' } ] } ], - '#function-call': - [ { token: 'meta.function-call.erlang', - regex: '(?=(?:[a-z][a-zA-Z\\d@_]*|\'[^\']*\')\\s*(?:\\(|:\\s*(?:[a-z][a-zA-Z\\d@_]*|\'[^\']*\')\\s*\\())', - push: - [ { token: 'punctuation.definition.parameters.end.erlang', - regex: '\\)', - next: 'pop' }, - { token: - [ 'entity.name.type.class.module.erlang', - 'text', - 'punctuation.separator.module-function.erlang', - 'text', - 'entity.name.function.guard.erlang', - 'text', - 'punctuation.definition.parameters.begin.erlang' ], - regex: '(?:(erlang)(\\s*)(:)(\\s*))?(is_atom|is_binary|is_constant|is_float|is_function|is_integer|is_list|is_number|is_pid|is_port|is_reference|is_tuple|is_record|abs|element|hd|length|node|round|self|size|tl|trunc)(\\s*)(\\()', - push: - [ { token: 'text', regex: '(?=\\))', next: 'pop' }, - { token: 'punctuation.separator.parameters.erlang', regex: ',' }, - { include: '#everything-else' } ] }, - { token: - [ 'entity.name.type.class.module.erlang', - 'text', - 'punctuation.separator.module-function.erlang', - 'text', - 'entity.name.function.erlang', - 'text', - 'punctuation.definition.parameters.begin.erlang' ], - regex: '(?:([a-z][a-zA-Z\\d@_]*|\'[^\']*\')(\\s*)(:)(\\s*))?([a-z][a-zA-Z\\d@_]*|\'[^\']*\')(\\s*)(\\()', - push: - [ { token: 'text', regex: '(?=\\))', next: 'pop' }, - { token: 'punctuation.separator.parameters.erlang', regex: ',' }, - { include: '#everything-else' } ] }, - { defaultToken: 'meta.function-call.erlang' } ] } ], - '#import-export-directive': - [ { token: - [ 'meta.directive.import.erlang', - 'punctuation.section.directive.begin.erlang', - 'meta.directive.import.erlang', - 'keyword.control.directive.import.erlang', - 'meta.directive.import.erlang', - 'punctuation.definition.parameters.begin.erlang', - 'meta.directive.import.erlang', - 'entity.name.type.class.module.erlang', - 'meta.directive.import.erlang', - 'punctuation.separator.parameters.erlang' ], - regex: '^(\\s*)(-)(\\s*)(import)(\\s*)(\\()(\\s*)([a-z][a-zA-Z\\d@_]*|\'[^\']*\')(\\s*)(,)', - push: - [ { token: - [ 'punctuation.definition.parameters.end.erlang', - 'meta.directive.import.erlang', - 'punctuation.section.directive.end.erlang' ], - regex: '(\\))(\\s*)(\\.)', - next: 'pop' }, - { include: '#internal-function-list' }, - { defaultToken: 'meta.directive.import.erlang' } ] }, - { token: - [ 'meta.directive.export.erlang', - 'punctuation.section.directive.begin.erlang', - 'meta.directive.export.erlang', - 'keyword.control.directive.export.erlang', - 'meta.directive.export.erlang', - 'punctuation.definition.parameters.begin.erlang' ], - regex: '^(\\s*)(-)(\\s*)(export)(\\s*)(\\()', - push: - [ { token: - [ 'punctuation.definition.parameters.end.erlang', - 'meta.directive.export.erlang', - 'punctuation.section.directive.end.erlang' ], - regex: '(\\))(\\s*)(\\.)', - next: 'pop' }, - { include: '#internal-function-list' }, - { defaultToken: 'meta.directive.export.erlang' } ] } ], - '#internal-expression-punctuation': - [ { token: - [ 'punctuation.separator.clause-head-body.erlang', - 'punctuation.separator.clauses.erlang', - 'punctuation.separator.expressions.erlang' ], - regex: '(->)|(;)|(,)' } ], - '#internal-function-list': - [ { token: 'punctuation.definition.list.begin.erlang', - regex: '\\[', - push: - [ { token: 'punctuation.definition.list.end.erlang', - regex: '\\]', - next: 'pop' }, - { token: - [ 'entity.name.function.erlang', - 'text', - 'punctuation.separator.function-arity.erlang' ], - regex: '([a-z][a-zA-Z\\d@_]*|\'[^\']*\')(\\s*)(/)', - push: - [ { token: 'punctuation.separator.list.erlang', - regex: ',|(?=\\])', - next: 'pop' }, - { include: '#everything-else' } ] }, - { include: '#everything-else' }, - { defaultToken: 'meta.structure.list.function.erlang' } ] } ], - '#internal-function-parts': - [ { token: 'text', - regex: '(?=\\()', - push: - [ { token: 'punctuation.separator.clause-head-body.erlang', - regex: '->', - next: 'pop' }, - { token: 'punctuation.definition.parameters.begin.erlang', - regex: '\\(', - push: - [ { token: 'punctuation.definition.parameters.end.erlang', - regex: '\\)', - next: 'pop' }, - { token: 'punctuation.separator.parameters.erlang', regex: ',' }, - { include: '#everything-else' } ] }, - { token: 'punctuation.separator.guards.erlang', regex: ',|;' }, - { include: '#everything-else' } ] }, - { token: 'punctuation.separator.expressions.erlang', - regex: ',' }, - { include: '#everything-else' } ], - '#internal-record-body': - [ { token: 'punctuation.definition.class.record.begin.erlang', - regex: '\\{', - push: - [ { token: 'meta.structure.record.erlang', - regex: '(?=\\})', - next: 'pop' }, - { token: - [ 'variable.other.field.erlang', - 'variable.language.omitted.field.erlang', - 'text', - 'keyword.operator.assignment.erlang' ], - regex: '(?:([a-z][a-zA-Z\\d@_]*|\'[^\']*\')|(_))(\\s*)(=|::)', - push: - [ { token: 'punctuation.separator.class.record.erlang', - regex: ',|(?=\\})', - next: 'pop' }, - { include: '#everything-else' } ] }, - { token: - [ 'variable.other.field.erlang', - 'text', - 'punctuation.separator.class.record.erlang' ], - regex: '([a-z][a-zA-Z\\d@_]*|\'[^\']*\')(\\s*)((?:,)?)' }, - { include: '#everything-else' }, - { defaultToken: 'meta.structure.record.erlang' } ] } ], - '#internal-type-specifiers': - [ { token: 'punctuation.separator.value-type.erlang', - regex: '/', - push: - [ { token: 'text', regex: '(?=,|:|>>)', next: 'pop' }, - { token: - [ 'storage.type.erlang', - 'storage.modifier.signedness.erlang', - 'storage.modifier.endianness.erlang', - 'storage.modifier.unit.erlang', - 'punctuation.separator.type-specifiers.erlang' ], - regex: '(integer|float|binary|bytes|bitstring|bits)|(signed|unsigned)|(big|little|native)|(unit)|(-)' } ] } ], - '#keyword': - [ { token: 'keyword.control.erlang', - regex: '\\b(?:after|begin|case|catch|cond|end|fun|if|let|of|query|try|receive|when)\\b' } ], - '#list': - [ { token: 'punctuation.definition.list.begin.erlang', - regex: '\\[', - push: - [ { token: 'punctuation.definition.list.end.erlang', - regex: '\\]', - next: 'pop' }, - { token: 'punctuation.separator.list.erlang', - regex: '\\||\\|\\||,' }, - { include: '#everything-else' }, - { defaultToken: 'meta.structure.list.erlang' } ] } ], - '#macro-directive': - [ { token: - [ 'meta.directive.ifdef.erlang', - 'punctuation.section.directive.begin.erlang', - 'meta.directive.ifdef.erlang', - 'keyword.control.directive.ifdef.erlang', - 'meta.directive.ifdef.erlang', - 'punctuation.definition.parameters.begin.erlang', - 'meta.directive.ifdef.erlang', - 'entity.name.function.macro.erlang', - 'meta.directive.ifdef.erlang', - 'punctuation.definition.parameters.end.erlang', - 'meta.directive.ifdef.erlang', - 'punctuation.section.directive.end.erlang' ], - regex: '^(\\s*)(-)(\\s*)(ifdef)(\\s*)(\\()(\\s*)([a-zA-z\\d@_]+)(\\s*)(\\))(\\s*)(\\.)' }, - { token: - [ 'meta.directive.ifndef.erlang', - 'punctuation.section.directive.begin.erlang', - 'meta.directive.ifndef.erlang', - 'keyword.control.directive.ifndef.erlang', - 'meta.directive.ifndef.erlang', - 'punctuation.definition.parameters.begin.erlang', - 'meta.directive.ifndef.erlang', - 'entity.name.function.macro.erlang', - 'meta.directive.ifndef.erlang', - 'punctuation.definition.parameters.end.erlang', - 'meta.directive.ifndef.erlang', - 'punctuation.section.directive.end.erlang' ], - regex: '^(\\s*)(-)(\\s*)(ifndef)(\\s*)(\\()(\\s*)([a-zA-z\\d@_]+)(\\s*)(\\))(\\s*)(\\.)' }, - { token: - [ 'meta.directive.undef.erlang', - 'punctuation.section.directive.begin.erlang', - 'meta.directive.undef.erlang', - 'keyword.control.directive.undef.erlang', - 'meta.directive.undef.erlang', - 'punctuation.definition.parameters.begin.erlang', - 'meta.directive.undef.erlang', - 'entity.name.function.macro.erlang', - 'meta.directive.undef.erlang', - 'punctuation.definition.parameters.end.erlang', - 'meta.directive.undef.erlang', - 'punctuation.section.directive.end.erlang' ], - regex: '^(\\s*)(-)(\\s*)(undef)(\\s*)(\\()(\\s*)([a-zA-z\\d@_]+)(\\s*)(\\))(\\s*)(\\.)' } ], - '#macro-usage': - [ { token: - [ 'keyword.operator.macro.erlang', - 'meta.macro-usage.erlang', - 'entity.name.function.macro.erlang' ], - regex: '(\\?\\??)(\\s*)([a-zA-Z\\d@_]+)' } ], - '#module-directive': - [ { token: - [ 'meta.directive.module.erlang', - 'punctuation.section.directive.begin.erlang', - 'meta.directive.module.erlang', - 'keyword.control.directive.module.erlang', - 'meta.directive.module.erlang', - 'punctuation.definition.parameters.begin.erlang', - 'meta.directive.module.erlang', - 'entity.name.type.class.module.definition.erlang', - 'meta.directive.module.erlang', - 'punctuation.definition.parameters.end.erlang', - 'meta.directive.module.erlang', - 'punctuation.section.directive.end.erlang' ], - regex: '^(\\s*)(-)(\\s*)(module)(\\s*)(\\()(\\s*)([a-z][a-zA-Z\\d@_]*)(\\s*)(\\))(\\s*)(\\.)' } ], - '#number': - [ { token: 'text', - regex: '(?=\\d)', - push: - [ { token: 'text', regex: '(?!\\d)', next: 'pop' }, - { token: - [ 'constant.numeric.float.erlang', - 'punctuation.separator.integer-float.erlang', - 'constant.numeric.float.erlang', - 'punctuation.separator.float-exponent.erlang' ], - regex: '(\\d+)(\\.)(\\d+)((?:[eE][\\+\\-]?\\d+)?)' }, - { token: - [ 'constant.numeric.integer.binary.erlang', - 'punctuation.separator.base-integer.erlang', - 'constant.numeric.integer.binary.erlang' ], - regex: '(2)(#)([0-1]+)' }, - { token: - [ 'constant.numeric.integer.base-3.erlang', - 'punctuation.separator.base-integer.erlang', - 'constant.numeric.integer.base-3.erlang' ], - regex: '(3)(#)([0-2]+)' }, - { token: - [ 'constant.numeric.integer.base-4.erlang', - 'punctuation.separator.base-integer.erlang', - 'constant.numeric.integer.base-4.erlang' ], - regex: '(4)(#)([0-3]+)' }, - { token: - [ 'constant.numeric.integer.base-5.erlang', - 'punctuation.separator.base-integer.erlang', - 'constant.numeric.integer.base-5.erlang' ], - regex: '(5)(#)([0-4]+)' }, - { token: - [ 'constant.numeric.integer.base-6.erlang', - 'punctuation.separator.base-integer.erlang', - 'constant.numeric.integer.base-6.erlang' ], - regex: '(6)(#)([0-5]+)' }, - { token: - [ 'constant.numeric.integer.base-7.erlang', - 'punctuation.separator.base-integer.erlang', - 'constant.numeric.integer.base-7.erlang' ], - regex: '(7)(#)([0-6]+)' }, - { token: - [ 'constant.numeric.integer.octal.erlang', - 'punctuation.separator.base-integer.erlang', - 'constant.numeric.integer.octal.erlang' ], - regex: '(8)(#)([0-7]+)' }, - { token: - [ 'constant.numeric.integer.base-9.erlang', - 'punctuation.separator.base-integer.erlang', - 'constant.numeric.integer.base-9.erlang' ], - regex: '(9)(#)([0-8]+)' }, - { token: - [ 'constant.numeric.integer.decimal.erlang', - 'punctuation.separator.base-integer.erlang', - 'constant.numeric.integer.decimal.erlang' ], - regex: '(10)(#)(\\d+)' }, - { token: - [ 'constant.numeric.integer.base-11.erlang', - 'punctuation.separator.base-integer.erlang', - 'constant.numeric.integer.base-11.erlang' ], - regex: '(11)(#)([\\daA]+)' }, - { token: - [ 'constant.numeric.integer.base-12.erlang', - 'punctuation.separator.base-integer.erlang', - 'constant.numeric.integer.base-12.erlang' ], - regex: '(12)(#)([\\da-bA-B]+)' }, - { token: - [ 'constant.numeric.integer.base-13.erlang', - 'punctuation.separator.base-integer.erlang', - 'constant.numeric.integer.base-13.erlang' ], - regex: '(13)(#)([\\da-cA-C]+)' }, - { token: - [ 'constant.numeric.integer.base-14.erlang', - 'punctuation.separator.base-integer.erlang', - 'constant.numeric.integer.base-14.erlang' ], - regex: '(14)(#)([\\da-dA-D]+)' }, - { token: - [ 'constant.numeric.integer.base-15.erlang', - 'punctuation.separator.base-integer.erlang', - 'constant.numeric.integer.base-15.erlang' ], - regex: '(15)(#)([\\da-eA-E]+)' }, - { token: - [ 'constant.numeric.integer.hexadecimal.erlang', - 'punctuation.separator.base-integer.erlang', - 'constant.numeric.integer.hexadecimal.erlang' ], - regex: '(16)(#)([\\da-fA-F]+)' }, - { token: - [ 'constant.numeric.integer.base-17.erlang', - 'punctuation.separator.base-integer.erlang', - 'constant.numeric.integer.base-17.erlang' ], - regex: '(17)(#)([\\da-gA-G]+)' }, - { token: - [ 'constant.numeric.integer.base-18.erlang', - 'punctuation.separator.base-integer.erlang', - 'constant.numeric.integer.base-18.erlang' ], - regex: '(18)(#)([\\da-hA-H]+)' }, - { token: - [ 'constant.numeric.integer.base-19.erlang', - 'punctuation.separator.base-integer.erlang', - 'constant.numeric.integer.base-19.erlang' ], - regex: '(19)(#)([\\da-iA-I]+)' }, - { token: - [ 'constant.numeric.integer.base-20.erlang', - 'punctuation.separator.base-integer.erlang', - 'constant.numeric.integer.base-20.erlang' ], - regex: '(20)(#)([\\da-jA-J]+)' }, - { token: - [ 'constant.numeric.integer.base-21.erlang', - 'punctuation.separator.base-integer.erlang', - 'constant.numeric.integer.base-21.erlang' ], - regex: '(21)(#)([\\da-kA-K]+)' }, - { token: - [ 'constant.numeric.integer.base-22.erlang', - 'punctuation.separator.base-integer.erlang', - 'constant.numeric.integer.base-22.erlang' ], - regex: '(22)(#)([\\da-lA-L]+)' }, - { token: - [ 'constant.numeric.integer.base-23.erlang', - 'punctuation.separator.base-integer.erlang', - 'constant.numeric.integer.base-23.erlang' ], - regex: '(23)(#)([\\da-mA-M]+)' }, - { token: - [ 'constant.numeric.integer.base-24.erlang', - 'punctuation.separator.base-integer.erlang', - 'constant.numeric.integer.base-24.erlang' ], - regex: '(24)(#)([\\da-nA-N]+)' }, - { token: - [ 'constant.numeric.integer.base-25.erlang', - 'punctuation.separator.base-integer.erlang', - 'constant.numeric.integer.base-25.erlang' ], - regex: '(25)(#)([\\da-oA-O]+)' }, - { token: - [ 'constant.numeric.integer.base-26.erlang', - 'punctuation.separator.base-integer.erlang', - 'constant.numeric.integer.base-26.erlang' ], - regex: '(26)(#)([\\da-pA-P]+)' }, - { token: - [ 'constant.numeric.integer.base-27.erlang', - 'punctuation.separator.base-integer.erlang', - 'constant.numeric.integer.base-27.erlang' ], - regex: '(27)(#)([\\da-qA-Q]+)' }, - { token: - [ 'constant.numeric.integer.base-28.erlang', - 'punctuation.separator.base-integer.erlang', - 'constant.numeric.integer.base-28.erlang' ], - regex: '(28)(#)([\\da-rA-R]+)' }, - { token: - [ 'constant.numeric.integer.base-29.erlang', - 'punctuation.separator.base-integer.erlang', - 'constant.numeric.integer.base-29.erlang' ], - regex: '(29)(#)([\\da-sA-S]+)' }, - { token: - [ 'constant.numeric.integer.base-30.erlang', - 'punctuation.separator.base-integer.erlang', - 'constant.numeric.integer.base-30.erlang' ], - regex: '(30)(#)([\\da-tA-T]+)' }, - { token: - [ 'constant.numeric.integer.base-31.erlang', - 'punctuation.separator.base-integer.erlang', - 'constant.numeric.integer.base-31.erlang' ], - regex: '(31)(#)([\\da-uA-U]+)' }, - { token: - [ 'constant.numeric.integer.base-32.erlang', - 'punctuation.separator.base-integer.erlang', - 'constant.numeric.integer.base-32.erlang' ], - regex: '(32)(#)([\\da-vA-V]+)' }, - { token: - [ 'constant.numeric.integer.base-33.erlang', - 'punctuation.separator.base-integer.erlang', - 'constant.numeric.integer.base-33.erlang' ], - regex: '(33)(#)([\\da-wA-W]+)' }, - { token: - [ 'constant.numeric.integer.base-34.erlang', - 'punctuation.separator.base-integer.erlang', - 'constant.numeric.integer.base-34.erlang' ], - regex: '(34)(#)([\\da-xA-X]+)' }, - { token: - [ 'constant.numeric.integer.base-35.erlang', - 'punctuation.separator.base-integer.erlang', - 'constant.numeric.integer.base-35.erlang' ], - regex: '(35)(#)([\\da-yA-Y]+)' }, - { token: - [ 'constant.numeric.integer.base-36.erlang', - 'punctuation.separator.base-integer.erlang', - 'constant.numeric.integer.base-36.erlang' ], - regex: '(36)(#)([\\da-zA-Z]+)' }, - { token: 'invalid.illegal.integer.erlang', - regex: '\\d+#[\\da-zA-Z]+' }, - { token: 'constant.numeric.integer.decimal.erlang', - regex: '\\d+' } ] } ], - '#parenthesized-expression': - [ { token: 'punctuation.section.expression.begin.erlang', - regex: '\\(', - push: - [ { token: 'punctuation.section.expression.end.erlang', - regex: '\\)', - next: 'pop' }, - { include: '#everything-else' }, - { defaultToken: 'meta.expression.parenthesized' } ] } ], - '#record-directive': - [ { token: - [ 'meta.directive.record.erlang', - 'punctuation.section.directive.begin.erlang', - 'meta.directive.record.erlang', - 'keyword.control.directive.import.erlang', - 'meta.directive.record.erlang', - 'punctuation.definition.parameters.begin.erlang', - 'meta.directive.record.erlang', - 'entity.name.type.class.record.definition.erlang', - 'meta.directive.record.erlang', - 'punctuation.separator.parameters.erlang' ], - regex: '^(\\s*)(-)(\\s*)(record)(\\s*)(\\()(\\s*)([a-z][a-zA-Z\\d@_]*|\'[^\']*\')(\\s*)(,)', - push: - [ { token: - [ 'punctuation.definition.class.record.end.erlang', - 'meta.directive.record.erlang', - 'punctuation.definition.parameters.end.erlang', - 'meta.directive.record.erlang', - 'punctuation.section.directive.end.erlang' ], - regex: '(\\})(\\s*)(\\))(\\s*)(\\.)', - next: 'pop' }, - { include: '#internal-record-body' }, - { defaultToken: 'meta.directive.record.erlang' } ] } ], - '#record-usage': - [ { token: - [ 'keyword.operator.record.erlang', - 'meta.record-usage.erlang', - 'entity.name.type.class.record.erlang', - 'meta.record-usage.erlang', - 'punctuation.separator.record-field.erlang', - 'meta.record-usage.erlang', - 'variable.other.field.erlang' ], - regex: '(#)(\\s*)([a-z][a-zA-Z\\d@_]*|\'[^\']*\')(\\s*)(\\.)(\\s*)([a-z][a-zA-Z\\d@_]*|\'[^\']*\')' }, - { token: - [ 'keyword.operator.record.erlang', - 'meta.record-usage.erlang', - 'entity.name.type.class.record.erlang' ], - regex: '(#)(\\s*)([a-z][a-zA-Z\\d@_]*|\'[^\']*\')', - push: - [ { token: 'punctuation.definition.class.record.end.erlang', - regex: '\\}', - next: 'pop' }, - { include: '#internal-record-body' }, - { defaultToken: 'meta.record-usage.erlang' } ] } ], - '#string': - [ { token: 'punctuation.definition.string.begin.erlang', - regex: '"', - push: - [ { token: 'punctuation.definition.string.end.erlang', - regex: '"', - next: 'pop' }, - { token: - [ 'punctuation.definition.escape.erlang', - 'constant.character.escape.erlang', - 'punctuation.definition.escape.erlang', - 'constant.character.escape.erlang', - 'constant.character.escape.erlang' ], - regex: '(\\\\)(?:([bdefnrstv\\\\\'"])|(\\^)([@-_])|([0-7]{1,3}))' }, - { token: 'invalid.illegal.string.erlang', regex: '\\\\\\^?.?' }, - { token: - [ 'punctuation.definition.placeholder.erlang', - 'punctuation.separator.placeholder-parts.erlang', - 'constant.other.placeholder.erlang', - 'punctuation.separator.placeholder-parts.erlang', - 'punctuation.separator.placeholder-parts.erlang', - 'constant.other.placeholder.erlang', - 'punctuation.separator.placeholder-parts.erlang', - 'punctuation.separator.placeholder-parts.erlang', - 'punctuation.separator.placeholder-parts.erlang', - 'constant.other.placeholder.erlang', - 'constant.other.placeholder.erlang' ], - regex: '(~)(?:((?:\\-)?)(\\d+)|(\\*))?(?:(\\.)(?:(\\d+)|(\\*)))?(?:(\\.)(?:(\\*)|(.)))?([~cfegswpWPBX#bx\\+ni])' }, - { token: - [ 'punctuation.definition.placeholder.erlang', - 'punctuation.separator.placeholder-parts.erlang', - 'constant.other.placeholder.erlang', - 'constant.other.placeholder.erlang' ], - regex: '(~)((?:\\*)?)((?:\\d+)?)([~du\\-#fsacl])' }, - { token: 'invalid.illegal.string.erlang', regex: '~.?' }, - { defaultToken: 'string.quoted.double.erlang' } ] } ], - '#symbolic-operator': - [ { token: 'keyword.operator.symbolic.erlang', - regex: '\\+\\+|\\+|--|-|\\*|/=|/|=/=|=:=|==|=<|=|<-|<|>=|>|!|::' } ], - '#textual-operator': - [ { token: 'keyword.operator.textual.erlang', - regex: '\\b(?:andalso|band|and|bxor|xor|bor|orelse|or|bnot|not|bsl|bsr|div|rem)\\b' } ], - '#tuple': - [ { token: 'punctuation.definition.tuple.begin.erlang', - regex: '\\{', - push: - [ { token: 'punctuation.definition.tuple.end.erlang', - regex: '\\}', - next: 'pop' }, - { token: 'punctuation.separator.tuple.erlang', regex: ',' }, - { include: '#everything-else' }, - { defaultToken: 'meta.structure.tuple.erlang' } ] } ], - '#variable': - [ { token: [ 'variable.other.erlang', 'variable.language.omitted.erlang' ], - regex: '(_[a-zA-Z\\d@_]+|[A-Z][a-zA-Z\\d@_]*)|(_)' } ] } - - this.normalizeRules(); -}; - -ErlangHighlightRules.metaData = { comment: 'The recognition of function definitions and compiler directives (such as module, record and macro definitions) requires that each of the aforementioned constructs must be the first string inside a line (except for whitespace). Also, the function/module/record/macro names must be given unquoted. -- desp', - fileTypes: [ 'erl', 'hrl' ], - keyEquivalent: '^~E', - name: 'Erlang', - scopeName: 'source.erlang' } - - -oop.inherits(ErlangHighlightRules, TextHighlightRules); - -exports.ErlangHighlightRules = ErlangHighlightRules; -}); - -ace.define('ace/mode/folding/cstyle', ['require', 'exports', 'module' , 'ace/lib/oop', 'ace/range', 'ace/mode/folding/fold_mode'], function(require, exports, module) { - - -var oop = require("../../lib/oop"); -var Range = require("../../range").Range; -var BaseFoldMode = require("./fold_mode").FoldMode; - -var FoldMode = exports.FoldMode = function(commentRegex) { - if (commentRegex) { - this.foldingStartMarker = new RegExp( - this.foldingStartMarker.source.replace(/\|[^|]*?$/, "|" + commentRegex.start) - ); - this.foldingStopMarker = new RegExp( - this.foldingStopMarker.source.replace(/\|[^|]*?$/, "|" + commentRegex.end) - ); - } -}; -oop.inherits(FoldMode, BaseFoldMode); - -(function() { - - this.foldingStartMarker = /(\{|\[)[^\}\]]*$|^\s*(\/\*)/; - this.foldingStopMarker = /^[^\[\{]*(\}|\])|^[\s\*]*(\*\/)/; - - this.getFoldWidgetRange = function(session, foldStyle, row, forceMultiline) { - var line = session.getLine(row); - var match = line.match(this.foldingStartMarker); - if (match) { - var i = match.index; - - if (match[1]) - return this.openingBracketBlock(session, match[1], row, i); - - var range = session.getCommentFoldRange(row, i + match[0].length, 1); - - if (range && !range.isMultiLine()) { - if (forceMultiline) { - range = this.getSectionRange(session, row); - } else if (foldStyle != "all") - range = null; - } - - return range; - } - - if (foldStyle === "markbegin") - return; - - var match = line.match(this.foldingStopMarker); - if (match) { - var i = match.index + match[0].length; - - if (match[1]) - return this.closingBracketBlock(session, match[1], row, i); - - return session.getCommentFoldRange(row, i, -1); - } - }; - - this.getSectionRange = function(session, row) { - var line = session.getLine(row); - var startIndent = line.search(/\S/); - var startRow = row; - var startColumn = line.length; - row = row + 1; - var endRow = row; - var maxRow = session.getLength(); - while (++row < maxRow) { - line = session.getLine(row); - var indent = line.search(/\S/); - if (indent === -1) - continue; - if (startIndent > indent) - break; - var subRange = this.getFoldWidgetRange(session, "all", row); - - if (subRange) { - if (subRange.start.row <= startRow) { - break; - } else if (subRange.isMultiLine()) { - row = subRange.end.row; - } else if (startIndent == indent) { - break; - } - } - endRow = row; - } - - return new Range(startRow, startColumn, endRow, session.getLine(endRow).length); - }; - -}).call(FoldMode.prototype); - -}); diff --git a/IDE/jsrealb-ide/ace-src-noconflict/mode-forth.js b/IDE/jsrealb-ide/ace-src-noconflict/mode-forth.js deleted file mode 100644 index 2b7508ef..00000000 --- a/IDE/jsrealb-ide/ace-src-noconflict/mode-forth.js +++ /dev/null @@ -1,280 +0,0 @@ -/* ***** BEGIN LICENSE BLOCK ***** - * Distributed under the BSD license: - * - * Copyright (c) 2012, Ajax.org B.V. - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are met: - * * Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * * Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * * Neither the name of Ajax.org B.V. nor the - * names of its contributors may be used to endorse or promote products - * derived from this software without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND - * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED - * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE - * DISCLAIMED. IN NO EVENT SHALL AJAX.ORG B.V. BE LIABLE FOR ANY - * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES - * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; - * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND - * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - * - * - * Contributor(s): - * - * - * - * ***** END LICENSE BLOCK ***** */ - -ace.define('ace/mode/forth', ['require', 'exports', 'module' , 'ace/lib/oop', 'ace/mode/text', 'ace/tokenizer', 'ace/mode/forth_highlight_rules', 'ace/mode/folding/cstyle'], function(require, exports, module) { - - -var oop = require("../lib/oop"); -var TextMode = require("./text").Mode; -var Tokenizer = require("../tokenizer").Tokenizer; -var ForthHighlightRules = require("./forth_highlight_rules").ForthHighlightRules; -var FoldMode = require("./folding/cstyle").FoldMode; - -var Mode = function() { - this.HighlightRules = ForthHighlightRules; - this.foldingRules = new FoldMode(); -}; -oop.inherits(Mode, TextMode); - -(function() { - this.lineCommentStart = "(?<=^|\\s)\\.?\\( [^)]*\\)"; - this.blockComment = {start: "/*", end: "*/"}; - this.$id = "ace/mode/forth"; -}).call(Mode.prototype); - -exports.Mode = Mode; -}); - -ace.define('ace/mode/forth_highlight_rules', ['require', 'exports', 'module' , 'ace/lib/oop', 'ace/mode/text_highlight_rules'], function(require, exports, module) { - - -var oop = require("../lib/oop"); -var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; - -var ForthHighlightRules = function() { - - this.$rules = { start: [ { include: '#forth' } ], - '#comment': - [ { token: 'comment.line.double-dash.forth', - regex: '(?:^|\\s)--\\s.*$', - comment: 'line comments for iForth' }, - { token: 'comment.line.backslash.forth', - regex: '(?:^|\\s)\\\\[\\s\\S]*$', - comment: 'ANSI line comment' }, - { token: 'comment.line.backslash-g.forth', - regex: '(?:^|\\s)\\\\[Gg] .*$', - comment: 'gForth line comment' }, - { token: 'comment.block.forth', - regex: '(?:^|\\s)\\(\\*(?=\\s|$)', - push: - [ { token: 'comment.block.forth', - regex: '(?:^|\\s)\\*\\)(?=\\s|$)', - next: 'pop' }, - { defaultToken: 'comment.block.forth' } ], - comment: 'multiline comments for iForth' }, - { token: 'comment.block.documentation.forth', - regex: '\\bDOC\\b', - caseInsensitive: true, - push: - [ { token: 'comment.block.documentation.forth', - regex: '\\bENDDOC\\b', - caseInsensitive: true, - next: 'pop' }, - { defaultToken: 'comment.block.documentation.forth' } ], - comment: 'documentation comments for iForth' }, - { token: 'comment.line.parentheses.forth', - regex: '(?:^|\\s)\\.?\\( [^)]*\\)', - comment: 'ANSI line comment' } ], - '#constant': - [ { token: 'constant.language.forth', - regex: '(?:^|\\s)(?:TRUE|FALSE|BL|PI|CELL|C/L|R/O|W/O|R/W)(?=\\s|$)', - caseInsensitive: true}, - { token: 'constant.numeric.forth', - regex: '(?:^|\\s)[$#%]?[-+]?[0-9]+(?:\\.[0-9]*e-?[0-9]+|\\.?[0-9a-fA-F]*)(?=\\s|$)'}, - { token: 'constant.character.forth', - regex: '(?:^|\\s)(?:[&^]\\S|(?:"|\')\\S(?:"|\'))(?=\\s|$)'}], - '#forth': - [ { include: '#constant' }, - { include: '#comment' }, - { include: '#string' }, - { include: '#word' }, - { include: '#variable' }, - { include: '#storage' }, - { include: '#word-def' } ], - '#storage': - [ { token: 'storage.type.forth', - regex: '(?:^|\\s)(?:2CONSTANT|2VARIABLE|ALIAS|CONSTANT|CREATE-INTERPRET/COMPILE[:]?|CREATE|DEFER|FCONSTANT|FIELD|FVARIABLE|USER|VALUE|VARIABLE|VOCABULARY)(?=\\s|$)', - caseInsensitive: true}], - '#string': - [ { token: 'string.quoted.double.forth', - regex: '(ABORT" |BREAK" |\\." |C" |0"|S\\\\?" )([^"]+")', - caseInsensitive: true}, - { token: 'string.unquoted.forth', - regex: '(?:INCLUDE|NEEDS|REQUIRE|USE)[ ]\\S+(?=\\s|$)', - caseInsensitive: true}], - '#variable': - [ { token: 'variable.language.forth', - regex: '\\b(?:I|J)\\b', - caseInsensitive: true } ], - '#word': - [ { token: 'keyword.control.immediate.forth', - regex: '(?:^|\\s)\\[(?:\\?DO|\\+LOOP|AGAIN|BEGIN|DEFINED|DO|ELSE|ENDIF|FOR|IF|IFDEF|IFUNDEF|LOOP|NEXT|REPEAT|THEN|UNTIL|WHILE)\\](?=\\s|$)', - caseInsensitive: true}, - { token: 'keyword.other.immediate.forth', - regex: '(?:^|\\s)(?:COMPILE-ONLY|IMMEDIATE|IS|RESTRICT|TO|WHAT\'S|])(?=\\s|$)', - caseInsensitive: true}, - { token: 'keyword.control.compile-only.forth', - regex: '(?:^|\\s)(?:-DO|\\-LOOP|\\?DO|\\?LEAVE|\\+DO|\\+LOOP|ABORT\\"|AGAIN|AHEAD|BEGIN|CASE|DO|ELSE|ENDCASE|ENDIF|ENDOF|ENDTRY\\-IFERROR|ENDTRY|FOR|IF|IFERROR|LEAVE|LOOP|NEXT|RECOVER|REPEAT|RESTORE|THEN|TRY|U\\-DO|U\\+DO|UNTIL|WHILE)(?=\\s|$)', - caseInsensitive: true}, - { token: 'keyword.other.compile-only.forth', - regex: '(?:^|\\s)(?:\\?DUP-0=-IF|\\?DUP-IF|\\)|\\[|\\[\'\\]|\\[CHAR\\]|\\[COMPILE\\]|\\[IS\\]|\\[TO\\]||DEFERS|DOES>|INTERPRETATION>|OF|POSTPONE)(?=\\s|$)', - caseInsensitive: true}, - { token: 'keyword.other.non-immediate.forth', - regex: '(?:^|\\s)(?:\'|||CHAR|END-STRUCT|INCLUDE[D]?|LOAD|NEEDS|REQUIRE[D]?|REVISION|SEE|STRUCT|THRU|USE)(?=\\s|$)', - caseInsensitive: true}, - { token: 'keyword.other.warning.forth', - regex: '(?:^|\\s)(?:~~|BREAK:|BREAK"|DBG)(?=\\s|$)', - caseInsensitive: true}], - '#word-def': - [ { token: - [ 'keyword.other.compile-only.forth', - 'keyword.other.compile-only.forth', - 'meta.block.forth', - 'entity.name.function.forth' ], - regex: '(:NONAME)|(^:|\\s:)(\\s)(\\S+)(?=\\s|$)', - caseInsensitive: true, - push: - [ { token: 'keyword.other.compile-only.forth', - regex: ';(?:CODE)?', - caseInsensitive: true, - next: 'pop' }, - { include: '#constant' }, - { include: '#comment' }, - { include: '#string' }, - { include: '#word' }, - { include: '#variable' }, - { include: '#storage' }, - { defaultToken: 'meta.block.forth' } ] } ] } - - this.normalizeRules(); -}; - -ForthHighlightRules.metaData = { fileTypes: [ 'frt', 'fs', 'ldr' ], - foldingStartMarker: '/\\*\\*|\\{\\s*$', - foldingStopMarker: '\\*\\*/|^\\s*\\}', - keyEquivalent: '^~F', - name: 'Forth', - scopeName: 'source.forth' } - - -oop.inherits(ForthHighlightRules, TextHighlightRules); - -exports.ForthHighlightRules = ForthHighlightRules; -}); - -ace.define('ace/mode/folding/cstyle', ['require', 'exports', 'module' , 'ace/lib/oop', 'ace/range', 'ace/mode/folding/fold_mode'], function(require, exports, module) { - - -var oop = require("../../lib/oop"); -var Range = require("../../range").Range; -var BaseFoldMode = require("./fold_mode").FoldMode; - -var FoldMode = exports.FoldMode = function(commentRegex) { - if (commentRegex) { - this.foldingStartMarker = new RegExp( - this.foldingStartMarker.source.replace(/\|[^|]*?$/, "|" + commentRegex.start) - ); - this.foldingStopMarker = new RegExp( - this.foldingStopMarker.source.replace(/\|[^|]*?$/, "|" + commentRegex.end) - ); - } -}; -oop.inherits(FoldMode, BaseFoldMode); - -(function() { - - this.foldingStartMarker = /(\{|\[)[^\}\]]*$|^\s*(\/\*)/; - this.foldingStopMarker = /^[^\[\{]*(\}|\])|^[\s\*]*(\*\/)/; - - this.getFoldWidgetRange = function(session, foldStyle, row, forceMultiline) { - var line = session.getLine(row); - var match = line.match(this.foldingStartMarker); - if (match) { - var i = match.index; - - if (match[1]) - return this.openingBracketBlock(session, match[1], row, i); - - var range = session.getCommentFoldRange(row, i + match[0].length, 1); - - if (range && !range.isMultiLine()) { - if (forceMultiline) { - range = this.getSectionRange(session, row); - } else if (foldStyle != "all") - range = null; - } - - return range; - } - - if (foldStyle === "markbegin") - return; - - var match = line.match(this.foldingStopMarker); - if (match) { - var i = match.index + match[0].length; - - if (match[1]) - return this.closingBracketBlock(session, match[1], row, i); - - return session.getCommentFoldRange(row, i, -1); - } - }; - - this.getSectionRange = function(session, row) { - var line = session.getLine(row); - var startIndent = line.search(/\S/); - var startRow = row; - var startColumn = line.length; - row = row + 1; - var endRow = row; - var maxRow = session.getLength(); - while (++row < maxRow) { - line = session.getLine(row); - var indent = line.search(/\S/); - if (indent === -1) - continue; - if (startIndent > indent) - break; - var subRange = this.getFoldWidgetRange(session, "all", row); - - if (subRange) { - if (subRange.start.row <= startRow) { - break; - } else if (subRange.isMultiLine()) { - row = subRange.end.row; - } else if (startIndent == indent) { - break; - } - } - endRow = row; - } - - return new Range(startRow, startColumn, endRow, session.getLine(endRow).length); - }; - -}).call(FoldMode.prototype); - -}); diff --git a/IDE/jsrealb-ide/ace-src-noconflict/mode-ftl.js b/IDE/jsrealb-ide/ace-src-noconflict/mode-ftl.js deleted file mode 100644 index 6e6d85cf..00000000 --- a/IDE/jsrealb-ide/ace-src-noconflict/mode-ftl.js +++ /dev/null @@ -1,1061 +0,0 @@ -/* ***** BEGIN LICENSE BLOCK ***** - * Distributed under the BSD license: - * - * Copyright (c) 2010, Ajax.org B.V. - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are met: - * * Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * * Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * * Neither the name of Ajax.org B.V. nor the - * names of its contributors may be used to endorse or promote products - * derived from this software without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND - * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED - * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE - * DISCLAIMED. IN NO EVENT SHALL AJAX.ORG B.V. BE LIABLE FOR ANY - * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES - * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; - * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND - * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - * - * ***** END LICENSE BLOCK ***** */ - -ace.define('ace/mode/ftl', ['require', 'exports', 'module' , 'ace/lib/oop', 'ace/mode/text', 'ace/tokenizer', 'ace/mode/ftl_highlight_rules'], function(require, exports, module) { - - -var oop = require("../lib/oop"); -var TextMode = require("./text").Mode; -var Tokenizer = require("../tokenizer").Tokenizer; -var FtlHighlightRules = require("./ftl_highlight_rules").FtlHighlightRules; - -var Mode = function() { - this.HighlightRules = FtlHighlightRules; -}; -oop.inherits(Mode, TextMode); - -(function() { - - this.$id = "ace/mode/ftl"; -}).call(Mode.prototype); - -exports.Mode = Mode; -}); - -ace.define('ace/mode/ftl_highlight_rules', ['require', 'exports', 'module' , 'ace/lib/oop', 'ace/mode/html_highlight_rules', 'ace/mode/text_highlight_rules'], function(require, exports, module) { - - -var oop = require("../lib/oop"); -var HtmlHighlightRules = require("./html_highlight_rules").HtmlHighlightRules; -var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; - -var FtlLangHighlightRules = function () { - - var stringBuiltIns = "\\?|substring|cap_first|uncap_first|capitalize|chop_linebreak|date|time|datetime|" - + "ends_with|html|groups|index_of|j_string|js_string|json_string|last_index_of|length|lower_case|" - + "left_pad|right_pad|contains|matches|number|replace|rtf|url|split|starts_with|string|trim|" - + "upper_case|word_list|xhtml|xml"; - var numberBuiltIns = "c|round|floor|ceiling"; - var dateBuiltIns = "iso_[a-z_]+"; - var seqBuiltIns = "first|last|seq_contains|seq_index_of|seq_last_index_of|reverse|size|sort|sort_by|chunk"; - var hashBuiltIns = "keys|values"; - var xmlBuiltIns = "children|parent|root|ancestors|node_name|node_type|node_namespace"; - var expertBuiltIns = "byte|double|float|int|long|short|number_to_date|number_to_time|number_to_datetime|" - + "eval|has_content|interpret|is_[a-z_]+|namespacenew"; - var allBuiltIns = stringBuiltIns + numberBuiltIns + dateBuiltIns + seqBuiltIns + hashBuiltIns - + xmlBuiltIns + expertBuiltIns; - - var deprecatedBuiltIns = "default|exists|if_exists|web_safe"; - - var variables = "data_model|error|globals|lang|locale|locals|main|namespace|node|current_node|" - + "now|output_encoding|template_name|url_escaping_charset|vars|version"; - - var operators = "gt|gte|lt|lte|as|in|using"; - - var reserved = "true|false"; - - var attributes = "encoding|parse|locale|number_format|date_format|time_format|datetime_format|time_zone|" - + "url_escaping_charset|classic_compatible|strip_whitespace|strip_text|strict_syntax|ns_prefixes|" - + "attributes"; - - this.$rules = { - "start" : [{ - token : "constant.character.entity", - regex : /&[^;]+;/ - }, { - token : "support.function", - regex : "\\?("+allBuiltIns+")" - }, { - token : "support.function.deprecated", - regex : "\\?("+deprecatedBuiltIns+")" - }, { - token : "language.variable", - regex : "\\.(?:"+variables+")" - }, { - token : "constant.language", - regex : "\\b("+reserved+")\\b" - }, { - token : "keyword.operator", - regex : "\\b(?:"+operators+")\\b" - }, { - token : "entity.other.attribute-name", - regex : attributes - }, { - token : "string", // - regex : /['"]/, - next : "qstring" - }, { - token : function(value) { - if (value.match("^[+-]?\\d+(?:(?:\\.\\d*)?(?:[eE][+-]?\\d+)?)?$")) { - return "constant.numeric"; - } else { - return "variable"; - } - }, - regex : /[\w.+\-]+/ - }, { - token : "keyword.operator", - regex : "!|\\.|\\$|%|&|\\*|\\-\\-|\\-|\\+\\+|\\+|~|===|==|=|!=|!==|<=|>=|<<=|>>=|>>>=|<>|<|>|&&|\\|\\||\\?\\:|\\*=|%=|\\+=|\\-=|&=|\\^=" - }, { - token : "paren.lparen", - regex : "[[({]" - }, { - token : "paren.rparen", - regex : "[\\])}]" - }, { - token : "text", - regex : "\\s+" - }], - - "qstring" : [{ - token : "constant.character.escape", - regex : '\\\\[nrtvef\\\\"$]' - }, { - token : "string", - regex : /['"]/, - next : "start" - }, { - defaultToken : "string" - }] - }; -}; - -oop.inherits(FtlLangHighlightRules, TextHighlightRules); - -var FtlHighlightRules = function() { - HtmlHighlightRules.call(this); - - var directives = "assign|attempt|break|case|compress|default|elseif|else|escape|fallback|function|flush|" - + "ftl|global|if|import|include|list|local|lt|macro|nested|noescape|noparse|nt|recover|recurse|return|rt|" - + "setting|stop|switch|t|visit"; - - var startRules = [ - { - token : "comment", - regex : "<#--", - next : "ftl-dcomment" - }, { - token : "string.interpolated", - regex : "\\${", - push : "ftl-start" - }, { - token : "keyword.function", - regex : "", - next : "pop" - }, { - token : "string.interpolated", - regex : "}", - next : "pop" - } - ]; - - for (var key in this.$rules) - this.$rules[key].unshift.apply(this.$rules[key], startRules); - - this.embedRules(FtlLangHighlightRules, "ftl-", endRules, ["start"]); - - this.addRules({ - "ftl-dcomment" : [{ - token : "comment", - regex : ".*?-->", - next : "pop" - }, { - token : "comment", - regex : ".+" - }] - }); - - this.normalizeRules(); -}; - -oop.inherits(FtlHighlightRules, HtmlHighlightRules); - -exports.FtlHighlightRules = FtlHighlightRules; -}); - -ace.define('ace/mode/html_highlight_rules', ['require', 'exports', 'module' , 'ace/lib/oop', 'ace/lib/lang', 'ace/mode/css_highlight_rules', 'ace/mode/javascript_highlight_rules', 'ace/mode/xml_highlight_rules'], function(require, exports, module) { - - -var oop = require("../lib/oop"); -var lang = require("../lib/lang"); -var CssHighlightRules = require("./css_highlight_rules").CssHighlightRules; -var JavaScriptHighlightRules = require("./javascript_highlight_rules").JavaScriptHighlightRules; -var XmlHighlightRules = require("./xml_highlight_rules").XmlHighlightRules; - -var tagMap = lang.createMap({ - a : 'anchor', - button : 'form', - form : 'form', - img : 'image', - input : 'form', - label : 'form', - option : 'form', - script : 'script', - select : 'form', - textarea : 'form', - style : 'style', - table : 'table', - tbody : 'table', - td : 'table', - tfoot : 'table', - th : 'table', - tr : 'table' -}); - -var HtmlHighlightRules = function() { - XmlHighlightRules.call(this); - - this.addRules({ - attributes: [{ - include : "space" - }, { - token : "entity.other.attribute-name", - regex : "[-_a-zA-Z0-9:]+" - }, { - token : "keyword.operator.separator", - regex : "=", - push : [{ - include: "space" - }, { - token : "string", - regex : "[^<>='\"`\\s]+", - next : "pop" - }, { - token : "empty", - regex : "", - next : "pop" - }] - }, { - include : "string" - }], - tag: [{ - token : function(start, tag) { - var group = tagMap[tag]; - return ["meta.tag.punctuation.begin", - "meta.tag.name" + (group ? "." + group : "")]; - }, - regex : "(<)([-_a-zA-Z0-9:]+)", - next: "start_tag_stuff" - }, { - token : function(start, tag) { - var group = tagMap[tag]; - return ["meta.tag.punctuation.begin", - "meta.tag.name" + (group ? "." + group : "")]; - }, - regex : "(", next : "start"} - ], - end_tag_stuff: [ - {include : "space"}, - {token : "meta.tag.punctuation.end", regex : ">", next : "start"} - ] - }); - - this.embedTagRules(CssHighlightRules, "css-", "style"); - this.embedTagRules(JavaScriptHighlightRules, "js-", "script"); - - if (this.constructor === HtmlHighlightRules) - this.normalizeRules(); -}; - -oop.inherits(HtmlHighlightRules, XmlHighlightRules); - -exports.HtmlHighlightRules = HtmlHighlightRules; -}); - -ace.define('ace/mode/css_highlight_rules', ['require', 'exports', 'module' , 'ace/lib/oop', 'ace/lib/lang', 'ace/mode/text_highlight_rules'], function(require, exports, module) { - - -var oop = require("../lib/oop"); -var lang = require("../lib/lang"); -var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; -var supportType = exports.supportType = "animation-fill-mode|alignment-adjust|alignment-baseline|animation-delay|animation-direction|animation-duration|animation-iteration-count|animation-name|animation-play-state|animation-timing-function|animation|appearance|azimuth|backface-visibility|background-attachment|background-break|background-clip|background-color|background-image|background-origin|background-position|background-repeat|background-size|background|baseline-shift|binding|bleed|bookmark-label|bookmark-level|bookmark-state|bookmark-target|border-bottom|border-bottom-color|border-bottom-left-radius|border-bottom-right-radius|border-bottom-style|border-bottom-width|border-collapse|border-color|border-image|border-image-outset|border-image-repeat|border-image-slice|border-image-source|border-image-width|border-left|border-left-color|border-left-style|border-left-width|border-radius|border-right|border-right-color|border-right-style|border-right-width|border-spacing|border-style|border-top|border-top-color|border-top-left-radius|border-top-right-radius|border-top-style|border-top-width|border-width|border|bottom|box-align|box-decoration-break|box-direction|box-flex-group|box-flex|box-lines|box-ordinal-group|box-orient|box-pack|box-shadow|box-sizing|break-after|break-before|break-inside|caption-side|clear|clip|color-profile|color|column-count|column-fill|column-gap|column-rule|column-rule-color|column-rule-style|column-rule-width|column-span|column-width|columns|content|counter-increment|counter-reset|crop|cue-after|cue-before|cue|cursor|direction|display|dominant-baseline|drop-initial-after-adjust|drop-initial-after-align|drop-initial-before-adjust|drop-initial-before-align|drop-initial-size|drop-initial-value|elevation|empty-cells|fit|fit-position|float-offset|float|font-family|font-size|font-size-adjust|font-stretch|font-style|font-variant|font-weight|font|grid-columns|grid-rows|hanging-punctuation|height|hyphenate-after|hyphenate-before|hyphenate-character|hyphenate-lines|hyphenate-resource|hyphens|icon|image-orientation|image-rendering|image-resolution|inline-box-align|left|letter-spacing|line-height|line-stacking-ruby|line-stacking-shift|line-stacking-strategy|line-stacking|list-style-image|list-style-position|list-style-type|list-style|margin-bottom|margin-left|margin-right|margin-top|margin|mark-after|mark-before|mark|marks|marquee-direction|marquee-play-count|marquee-speed|marquee-style|max-height|max-width|min-height|min-width|move-to|nav-down|nav-index|nav-left|nav-right|nav-up|opacity|orphans|outline-color|outline-offset|outline-style|outline-width|outline|overflow-style|overflow-x|overflow-y|overflow|padding-bottom|padding-left|padding-right|padding-top|padding|page-break-after|page-break-before|page-break-inside|page-policy|page|pause-after|pause-before|pause|perspective-origin|perspective|phonemes|pitch-range|pitch|play-during|pointer-events|position|presentation-level|punctuation-trim|quotes|rendering-intent|resize|rest-after|rest-before|rest|richness|right|rotation-point|rotation|ruby-align|ruby-overhang|ruby-position|ruby-span|size|speak-header|speak-numeral|speak-punctuation|speak|speech-rate|stress|string-set|table-layout|target-name|target-new|target-position|target|text-align-last|text-align|text-decoration|text-emphasis|text-height|text-indent|text-justify|text-outline|text-shadow|text-transform|text-wrap|top|transform-origin|transform-style|transform|transition-delay|transition-duration|transition-property|transition-timing-function|transition|unicode-bidi|vertical-align|visibility|voice-balance|voice-duration|voice-family|voice-pitch-range|voice-pitch|voice-rate|voice-stress|voice-volume|volume|white-space-collapse|white-space|widows|width|word-break|word-spacing|word-wrap|z-index"; -var supportFunction = exports.supportFunction = "rgb|rgba|url|attr|counter|counters"; -var supportConstant = exports.supportConstant = "absolute|after-edge|after|all-scroll|all|alphabetic|always|antialiased|armenian|auto|avoid-column|avoid-page|avoid|balance|baseline|before-edge|before|below|bidi-override|block-line-height|block|bold|bolder|border-box|both|bottom|box|break-all|break-word|capitalize|caps-height|caption|center|central|char|circle|cjk-ideographic|clone|close-quote|col-resize|collapse|column|consider-shifts|contain|content-box|cover|crosshair|cubic-bezier|dashed|decimal-leading-zero|decimal|default|disabled|disc|disregard-shifts|distribute-all-lines|distribute-letter|distribute-space|distribute|dotted|double|e-resize|ease-in|ease-in-out|ease-out|ease|ellipsis|end|exclude-ruby|fill|fixed|georgian|glyphs|grid-height|groove|hand|hanging|hebrew|help|hidden|hiragana-iroha|hiragana|horizontal|icon|ideograph-alpha|ideograph-numeric|ideograph-parenthesis|ideograph-space|ideographic|inactive|include-ruby|inherit|initial|inline-block|inline-box|inline-line-height|inline-table|inline|inset|inside|inter-ideograph|inter-word|invert|italic|justify|katakana-iroha|katakana|keep-all|last|left|lighter|line-edge|line-through|line|linear|list-item|local|loose|lower-alpha|lower-greek|lower-latin|lower-roman|lowercase|lr-tb|ltr|mathematical|max-height|max-size|medium|menu|message-box|middle|move|n-resize|ne-resize|newspaper|no-change|no-close-quote|no-drop|no-open-quote|no-repeat|none|normal|not-allowed|nowrap|nw-resize|oblique|open-quote|outset|outside|overline|padding-box|page|pointer|pre-line|pre-wrap|pre|preserve-3d|progress|relative|repeat-x|repeat-y|repeat|replaced|reset-size|ridge|right|round|row-resize|rtl|s-resize|scroll|se-resize|separate|slice|small-caps|small-caption|solid|space|square|start|static|status-bar|step-end|step-start|steps|stretch|strict|sub|super|sw-resize|table-caption|table-cell|table-column-group|table-column|table-footer-group|table-header-group|table-row-group|table-row|table|tb-rl|text-after-edge|text-before-edge|text-bottom|text-size|text-top|text|thick|thin|transparent|underline|upper-alpha|upper-latin|upper-roman|uppercase|use-script|vertical-ideographic|vertical-text|visible|w-resize|wait|whitespace|z-index|zero"; -var supportConstantColor = exports.supportConstantColor = "aqua|black|blue|fuchsia|gray|green|lime|maroon|navy|olive|orange|purple|red|silver|teal|white|yellow"; -var supportConstantFonts = exports.supportConstantFonts = "arial|century|comic|courier|garamond|georgia|helvetica|impact|lucida|symbol|system|tahoma|times|trebuchet|utopia|verdana|webdings|sans-serif|serif|monospace"; - -var numRe = exports.numRe = "\\-?(?:(?:[0-9]+)|(?:[0-9]*\\.[0-9]+))"; -var pseudoElements = exports.pseudoElements = "(\\:+)\\b(after|before|first-letter|first-line|moz-selection|selection)\\b"; -var pseudoClasses = exports.pseudoClasses = "(:)\\b(active|checked|disabled|empty|enabled|first-child|first-of-type|focus|hover|indeterminate|invalid|last-child|last-of-type|link|not|nth-child|nth-last-child|nth-last-of-type|nth-of-type|only-child|only-of-type|required|root|target|valid|visited)\\b"; - -var CssHighlightRules = function() { - - var keywordMapper = this.createKeywordMapper({ - "support.function": supportFunction, - "support.constant": supportConstant, - "support.type": supportType, - "support.constant.color": supportConstantColor, - "support.constant.fonts": supportConstantFonts - }, "text", true); - - this.$rules = { - "start" : [{ - token : "comment", // multi line comment - regex : "\\/\\*", - push : "comment" - }, { - token: "paren.lparen", - regex: "\\{", - push: "ruleset" - }, { - token: "string", - regex: "@.*?{", - push: "media" - }, { - token: "keyword", - regex: "#[a-z0-9-_]+" - }, { - token: "variable", - regex: "\\.[a-z0-9-_]+" - }, { - token: "string", - regex: ":[a-z0-9-_]+" - }, { - token: "constant", - regex: "[a-z0-9-_]+" - }, { - caseInsensitive: true - }], - - "media" : [{ - token : "comment", // multi line comment - regex : "\\/\\*", - push : "comment" - }, { - token: "paren.lparen", - regex: "\\{", - push: "ruleset" - }, { - token: "string", - regex: "\\}", - next: "pop" - }, { - token: "keyword", - regex: "#[a-z0-9-_]+" - }, { - token: "variable", - regex: "\\.[a-z0-9-_]+" - }, { - token: "string", - regex: ":[a-z0-9-_]+" - }, { - token: "constant", - regex: "[a-z0-9-_]+" - }, { - caseInsensitive: true - }], - - "comment" : [{ - token : "comment", - regex : "\\*\\/", - next : "pop" - }, { - defaultToken : "comment" - }], - - "ruleset" : [ - { - token : "paren.rparen", - regex : "\\}", - next: "pop" - }, { - token : "comment", // multi line comment - regex : "\\/\\*", - push : "comment" - }, { - token : "string", // single line - regex : '["](?:(?:\\\\.)|(?:[^"\\\\]))*?["]' - }, { - token : "string", // single line - regex : "['](?:(?:\\\\.)|(?:[^'\\\\]))*?[']" - }, { - token : ["constant.numeric", "keyword"], - regex : "(" + numRe + ")(ch|cm|deg|em|ex|fr|gd|grad|Hz|in|kHz|mm|ms|pc|pt|px|rad|rem|s|turn|vh|vm|vw|%)" - }, { - token : "constant.numeric", - regex : numRe - }, { - token : "constant.numeric", // hex6 color - regex : "#[a-f0-9]{6}" - }, { - token : "constant.numeric", // hex3 color - regex : "#[a-f0-9]{3}" - }, { - token : ["punctuation", "entity.other.attribute-name.pseudo-element.css"], - regex : pseudoElements - }, { - token : ["punctuation", "entity.other.attribute-name.pseudo-class.css"], - regex : pseudoClasses - }, { - token : ["support.function", "string", "support.function"], - regex : "(url\\()(.*)(\\))" - }, { - token : keywordMapper, - regex : "\\-?[a-zA-Z_][a-zA-Z0-9_\\-]*" - }, { - caseInsensitive: true - }] - }; - - this.normalizeRules(); -}; - -oop.inherits(CssHighlightRules, TextHighlightRules); - -exports.CssHighlightRules = CssHighlightRules; - -}); - -ace.define('ace/mode/javascript_highlight_rules', ['require', 'exports', 'module' , 'ace/lib/oop', 'ace/mode/doc_comment_highlight_rules', 'ace/mode/text_highlight_rules'], function(require, exports, module) { - - -var oop = require("../lib/oop"); -var DocCommentHighlightRules = require("./doc_comment_highlight_rules").DocCommentHighlightRules; -var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; - -var JavaScriptHighlightRules = function() { - var keywordMapper = this.createKeywordMapper({ - "variable.language": - "Array|Boolean|Date|Function|Iterator|Number|Object|RegExp|String|Proxy|" + // Constructors - "Namespace|QName|XML|XMLList|" + // E4X - "ArrayBuffer|Float32Array|Float64Array|Int16Array|Int32Array|Int8Array|" + - "Uint16Array|Uint32Array|Uint8Array|Uint8ClampedArray|" + - "Error|EvalError|InternalError|RangeError|ReferenceError|StopIteration|" + // Errors - "SyntaxError|TypeError|URIError|" + - "decodeURI|decodeURIComponent|encodeURI|encodeURIComponent|eval|isFinite|" + // Non-constructor functions - "isNaN|parseFloat|parseInt|" + - "JSON|Math|" + // Other - "this|arguments|prototype|window|document" , // Pseudo - "keyword": - "const|yield|import|get|set|" + - "break|case|catch|continue|default|delete|do|else|finally|for|function|" + - "if|in|instanceof|new|return|switch|throw|try|typeof|let|var|while|with|debugger|" + - "__parent__|__count__|escape|unescape|with|__proto__|" + - "class|enum|extends|super|export|implements|private|public|interface|package|protected|static", - "storage.type": - "const|let|var|function", - "constant.language": - "null|Infinity|NaN|undefined", - "support.function": - "alert", - "constant.language.boolean": "true|false" - }, "identifier"); - var kwBeforeRe = "case|do|else|finally|in|instanceof|return|throw|try|typeof|yield|void"; - var identifierRe = "[a-zA-Z\\$_\u00a1-\uffff][a-zA-Z\\d\\$_\u00a1-\uffff]*\\b"; - - var escapedRe = "\\\\(?:x[0-9a-fA-F]{2}|" + // hex - "u[0-9a-fA-F]{4}|" + // unicode - "[0-2][0-7]{0,2}|" + // oct - "3[0-6][0-7]?|" + // oct - "37[0-7]?|" + // oct - "[4-7][0-7]?|" + //oct - ".)"; - - this.$rules = { - "no_regex" : [ - { - token : "comment", - regex : "\\/\\/", - next : "line_comment" - }, - DocCommentHighlightRules.getStartRule("doc-start"), - { - token : "comment", // multi line comment - regex : /\/\*/, - next : "comment" - }, { - token : "string", - regex : "'(?=.)", - next : "qstring" - }, { - token : "string", - regex : '"(?=.)', - next : "qqstring" - }, { - token : "constant.numeric", // hex - regex : /0[xX][0-9a-fA-F]+\b/ - }, { - token : "constant.numeric", // float - regex : /[+-]?\d+(?:(?:\.\d*)?(?:[eE][+-]?\d+)?)?\b/ - }, { - token : [ - "storage.type", "punctuation.operator", "support.function", - "punctuation.operator", "entity.name.function", "text","keyword.operator" - ], - regex : "(" + identifierRe + ")(\\.)(prototype)(\\.)(" + identifierRe +")(\\s*)(=)", - next: "function_arguments" - }, { - token : [ - "storage.type", "punctuation.operator", "entity.name.function", "text", - "keyword.operator", "text", "storage.type", "text", "paren.lparen" - ], - regex : "(" + identifierRe + ")(\\.)(" + identifierRe +")(\\s*)(=)(\\s*)(function)(\\s*)(\\()", - next: "function_arguments" - }, { - token : [ - "entity.name.function", "text", "keyword.operator", "text", "storage.type", - "text", "paren.lparen" - ], - regex : "(" + identifierRe +")(\\s*)(=)(\\s*)(function)(\\s*)(\\()", - next: "function_arguments" - }, { - token : [ - "storage.type", "punctuation.operator", "entity.name.function", "text", - "keyword.operator", "text", - "storage.type", "text", "entity.name.function", "text", "paren.lparen" - ], - regex : "(" + identifierRe + ")(\\.)(" + identifierRe +")(\\s*)(=)(\\s*)(function)(\\s+)(\\w+)(\\s*)(\\()", - next: "function_arguments" - }, { - token : [ - "storage.type", "text", "entity.name.function", "text", "paren.lparen" - ], - regex : "(function)(\\s+)(" + identifierRe + ")(\\s*)(\\()", - next: "function_arguments" - }, { - token : [ - "entity.name.function", "text", "punctuation.operator", - "text", "storage.type", "text", "paren.lparen" - ], - regex : "(" + identifierRe + ")(\\s*)(:)(\\s*)(function)(\\s*)(\\()", - next: "function_arguments" - }, { - token : [ - "text", "text", "storage.type", "text", "paren.lparen" - ], - regex : "(:)(\\s*)(function)(\\s*)(\\()", - next: "function_arguments" - }, { - token : "keyword", - regex : "(?:" + kwBeforeRe + ")\\b", - next : "start" - }, { - token : ["punctuation.operator", "support.function"], - regex : /(\.)(s(?:h(?:ift|ow(?:Mod(?:elessDialog|alDialog)|Help))|croll(?:X|By(?:Pages|Lines)?|Y|To)?|t(?:op|rike)|i(?:n|zeToContent|debar|gnText)|ort|u(?:p|b(?:str(?:ing)?)?)|pli(?:ce|t)|e(?:nd|t(?:Re(?:sizable|questHeader)|M(?:i(?:nutes|lliseconds)|onth)|Seconds|Ho(?:tKeys|urs)|Year|Cursor|Time(?:out)?|Interval|ZOptions|Date|UTC(?:M(?:i(?:nutes|lliseconds)|onth)|Seconds|Hours|Date|FullYear)|FullYear|Active)|arch)|qrt|lice|avePreferences|mall)|h(?:ome|andleEvent)|navigate|c(?:har(?:CodeAt|At)|o(?:s|n(?:cat|textual|firm)|mpile)|eil|lear(?:Timeout|Interval)?|a(?:ptureEvents|ll)|reate(?:StyleSheet|Popup|EventObject))|t(?:o(?:GMTString|S(?:tring|ource)|U(?:TCString|pperCase)|Lo(?:caleString|werCase))|est|a(?:n|int(?:Enabled)?))|i(?:s(?:NaN|Finite)|ndexOf|talics)|d(?:isableExternalCapture|ump|etachEvent)|u(?:n(?:shift|taint|escape|watch)|pdateCommands)|j(?:oin|avaEnabled)|p(?:o(?:p|w)|ush|lugins.refresh|a(?:ddings|rse(?:Int|Float)?)|r(?:int|ompt|eference))|e(?:scape|nableExternalCapture|val|lementFromPoint|x(?:p|ec(?:Script|Command)?))|valueOf|UTC|queryCommand(?:State|Indeterm|Enabled|Value)|f(?:i(?:nd|le(?:ModifiedDate|Size|CreatedDate|UpdatedDate)|xed)|o(?:nt(?:size|color)|rward)|loor|romCharCode)|watch|l(?:ink|o(?:ad|g)|astIndexOf)|a(?:sin|nchor|cos|t(?:tachEvent|ob|an(?:2)?)|pply|lert|b(?:s|ort))|r(?:ou(?:nd|teEvents)|e(?:size(?:By|To)|calc|turnValue|place|verse|l(?:oad|ease(?:Capture|Events)))|andom)|g(?:o|et(?:ResponseHeader|M(?:i(?:nutes|lliseconds)|onth)|Se(?:conds|lection)|Hours|Year|Time(?:zoneOffset)?|Da(?:y|te)|UTC(?:M(?:i(?:nutes|lliseconds)|onth)|Seconds|Hours|Da(?:y|te)|FullYear)|FullYear|A(?:ttention|llResponseHeaders)))|m(?:in|ove(?:B(?:y|elow)|To(?:Absolute)?|Above)|ergeAttributes|a(?:tch|rgins|x))|b(?:toa|ig|o(?:ld|rderWidths)|link|ack))\b(?=\()/ - }, { - token : ["punctuation.operator", "support.function.dom"], - regex : /(\.)(s(?:ub(?:stringData|mit)|plitText|e(?:t(?:NamedItem|Attribute(?:Node)?)|lect))|has(?:ChildNodes|Feature)|namedItem|c(?:l(?:ick|o(?:se|neNode))|reate(?:C(?:omment|DATASection|aption)|T(?:Head|extNode|Foot)|DocumentFragment|ProcessingInstruction|E(?:ntityReference|lement)|Attribute))|tabIndex|i(?:nsert(?:Row|Before|Cell|Data)|tem)|open|delete(?:Row|C(?:ell|aption)|T(?:Head|Foot)|Data)|focus|write(?:ln)?|a(?:dd|ppend(?:Child|Data))|re(?:set|place(?:Child|Data)|move(?:NamedItem|Child|Attribute(?:Node)?)?)|get(?:NamedItem|Element(?:sBy(?:Name|TagName)|ById)|Attribute(?:Node)?)|blur)\b(?=\()/ - }, { - token : ["punctuation.operator", "support.constant"], - regex : /(\.)(s(?:ystemLanguage|cr(?:ipts|ollbars|een(?:X|Y|Top|Left))|t(?:yle(?:Sheets)?|atus(?:Text|bar)?)|ibling(?:Below|Above)|ource|uffixes|e(?:curity(?:Policy)?|l(?:ection|f)))|h(?:istory|ost(?:name)?|as(?:h|Focus))|y|X(?:MLDocument|SLDocument)|n(?:ext|ame(?:space(?:s|URI)|Prop))|M(?:IN_VALUE|AX_VALUE)|c(?:haracterSet|o(?:n(?:structor|trollers)|okieEnabled|lorDepth|mp(?:onents|lete))|urrent|puClass|l(?:i(?:p(?:boardData)?|entInformation)|osed|asses)|alle(?:e|r)|rypto)|t(?:o(?:olbar|p)|ext(?:Transform|Indent|Decoration|Align)|ags)|SQRT(?:1_2|2)|i(?:n(?:ner(?:Height|Width)|put)|ds|gnoreCase)|zIndex|o(?:scpu|n(?:readystatechange|Line)|uter(?:Height|Width)|p(?:sProfile|ener)|ffscreenBuffering)|NEGATIVE_INFINITY|d(?:i(?:splay|alog(?:Height|Top|Width|Left|Arguments)|rectories)|e(?:scription|fault(?:Status|Ch(?:ecked|arset)|View)))|u(?:ser(?:Profile|Language|Agent)|n(?:iqueID|defined)|pdateInterval)|_content|p(?:ixelDepth|ort|ersonalbar|kcs11|l(?:ugins|atform)|a(?:thname|dding(?:Right|Bottom|Top|Left)|rent(?:Window|Layer)?|ge(?:X(?:Offset)?|Y(?:Offset)?))|r(?:o(?:to(?:col|type)|duct(?:Sub)?|mpter)|e(?:vious|fix)))|e(?:n(?:coding|abledPlugin)|x(?:ternal|pando)|mbeds)|v(?:isibility|endor(?:Sub)?|Linkcolor)|URLUnencoded|P(?:I|OSITIVE_INFINITY)|f(?:ilename|o(?:nt(?:Size|Family|Weight)|rmName)|rame(?:s|Element)|gColor)|E|whiteSpace|l(?:i(?:stStyleType|n(?:eHeight|kColor))|o(?:ca(?:tion(?:bar)?|lName)|wsrc)|e(?:ngth|ft(?:Context)?)|a(?:st(?:M(?:odified|atch)|Index|Paren)|yer(?:s|X)|nguage))|a(?:pp(?:MinorVersion|Name|Co(?:deName|re)|Version)|vail(?:Height|Top|Width|Left)|ll|r(?:ity|guments)|Linkcolor|bove)|r(?:ight(?:Context)?|e(?:sponse(?:XML|Text)|adyState))|global|x|m(?:imeTypes|ultiline|enubar|argin(?:Right|Bottom|Top|Left))|L(?:N(?:10|2)|OG(?:10E|2E))|b(?:o(?:ttom|rder(?:Width|RightWidth|BottomWidth|Style|Color|TopWidth|LeftWidth))|ufferDepth|elow|ackground(?:Color|Image)))\b/ - }, { - token : ["storage.type", "punctuation.operator", "support.function.firebug"], - regex : /(console)(\.)(warn|info|log|error|time|timeEnd|assert)\b/ - }, { - token : keywordMapper, - regex : identifierRe - }, { - token : "keyword.operator", - regex : /--|\+\+|[!$%&*+\-~]|===|==|=|!=|!==|<=|>=|<<=|>>=|>>>=|<>|<|>|!|&&|\|\||\?\:|\*=|%=|\+=|\-=|&=|\^=/, - next : "start" - }, { - token : "punctuation.operator", - regex : /\?|\:|\,|\;|\./, - next : "start" - }, { - token : "paren.lparen", - regex : /[\[({]/, - next : "start" - }, { - token : "paren.rparen", - regex : /[\])}]/ - }, { - token : "keyword.operator", - regex : /\/=?/, - next : "start" - }, { - token: "comment", - regex: /^#!.*$/ - } - ], - "start": [ - DocCommentHighlightRules.getStartRule("doc-start"), - { - token : "comment", // multi line comment - regex : "\\/\\*", - next : "comment_regex_allowed" - }, { - token : "comment", - regex : "\\/\\/", - next : "line_comment_regex_allowed" - }, { - token: "string.regexp", - regex: "\\/", - next: "regex" - }, { - token : "text", - regex : "\\s+|^$", - next : "start" - }, { - token: "empty", - regex: "", - next: "no_regex" - } - ], - "regex": [ - { - token: "regexp.keyword.operator", - regex: "\\\\(?:u[\\da-fA-F]{4}|x[\\da-fA-F]{2}|.)" - }, { - token: "string.regexp", - regex: "/[sxngimy]*", - next: "no_regex" - }, { - token : "invalid", - regex: /\{\d+\b,?\d*\}[+*]|[+*$^?][+*]|[$^][?]|\?{3,}/ - }, { - token : "constant.language.escape", - regex: /\(\?[:=!]|\)|\{\d+\b,?\d*\}|[+*]\?|[()$^+*?.]/ - }, { - token : "constant.language.delimiter", - regex: /\|/ - }, { - token: "constant.language.escape", - regex: /\[\^?/, - next: "regex_character_class" - }, { - token: "empty", - regex: "$", - next: "no_regex" - }, { - defaultToken: "string.regexp" - } - ], - "regex_character_class": [ - { - token: "regexp.keyword.operator", - regex: "\\\\(?:u[\\da-fA-F]{4}|x[\\da-fA-F]{2}|.)" - }, { - token: "constant.language.escape", - regex: "]", - next: "regex" - }, { - token: "constant.language.escape", - regex: "-" - }, { - token: "empty", - regex: "$", - next: "no_regex" - }, { - defaultToken: "string.regexp.charachterclass" - } - ], - "function_arguments": [ - { - token: "variable.parameter", - regex: identifierRe - }, { - token: "punctuation.operator", - regex: "[, ]+" - }, { - token: "punctuation.operator", - regex: "$" - }, { - token: "empty", - regex: "", - next: "no_regex" - } - ], - "comment_regex_allowed" : [ - {token : "comment", regex : "\\*\\/", next : "start"}, - {defaultToken : "comment"} - ], - "comment" : [ - {token : "comment", regex : "\\*\\/", next : "no_regex"}, - {defaultToken : "comment"} - ], - "line_comment_regex_allowed" : [ - {token : "comment", regex : "$|^", next : "start"}, - {defaultToken : "comment"} - ], - "line_comment" : [ - {token : "comment", regex : "$|^", next : "no_regex"}, - {defaultToken : "comment"} - ], - "qqstring" : [ - { - token : "constant.language.escape", - regex : escapedRe - }, { - token : "string", - regex : "\\\\$", - next : "qqstring" - }, { - token : "string", - regex : '"|$', - next : "no_regex" - }, { - defaultToken: "string" - } - ], - "qstring" : [ - { - token : "constant.language.escape", - regex : escapedRe - }, { - token : "string", - regex : "\\\\$", - next : "qstring" - }, { - token : "string", - regex : "'|$", - next : "no_regex" - }, { - defaultToken: "string" - } - ] - }; - - this.embedRules(DocCommentHighlightRules, "doc-", - [ DocCommentHighlightRules.getEndRule("no_regex") ]); -}; - -oop.inherits(JavaScriptHighlightRules, TextHighlightRules); - -exports.JavaScriptHighlightRules = JavaScriptHighlightRules; -}); - -ace.define('ace/mode/doc_comment_highlight_rules', ['require', 'exports', 'module' , 'ace/lib/oop', 'ace/mode/text_highlight_rules'], function(require, exports, module) { - - -var oop = require("../lib/oop"); -var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; - -var DocCommentHighlightRules = function() { - - this.$rules = { - "start" : [ { - token : "comment.doc.tag", - regex : "@[\\w\\d_]+" // TODO: fix email addresses - }, { - token : "comment.doc.tag", - regex : "\\bTODO\\b" - }, { - defaultToken : "comment.doc" - }] - }; -}; - -oop.inherits(DocCommentHighlightRules, TextHighlightRules); - -DocCommentHighlightRules.getStartRule = function(start) { - return { - token : "comment.doc", // doc comment - regex : "\\/\\*(?=\\*)", - next : start - }; -}; - -DocCommentHighlightRules.getEndRule = function (start) { - return { - token : "comment.doc", // closing comment - regex : "\\*\\/", - next : start - }; -}; - - -exports.DocCommentHighlightRules = DocCommentHighlightRules; - -}); - -ace.define('ace/mode/xml_highlight_rules', ['require', 'exports', 'module' , 'ace/lib/oop', 'ace/mode/xml_util', 'ace/mode/text_highlight_rules'], function(require, exports, module) { - - -var oop = require("../lib/oop"); -var xmlUtil = require("./xml_util"); -var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; - -var XmlHighlightRules = function(normalize) { - this.$rules = { - start : [ - {token : "punctuation.string.begin", regex : "<\\!\\[CDATA\\[", next : "cdata"}, - { - token : ["punctuation.instruction.begin", "keyword.instruction"], - regex : "(<\\?)(xml)(?=[\\s])", next : "xml_declaration" - }, - { - token : ["punctuation.instruction.begin", "keyword.instruction"], - regex : "(<\\?)([-_a-zA-Z0-9]+)", next : "instruction" - }, - {token : "comment", regex : "<\\!--", next : "comment"}, - { - token : ["punctuation.doctype.begin", "meta.tag.doctype"], - regex : "(<\\!)(DOCTYPE)(?=[\\s])", next : "doctype" - }, - {include : "tag"}, - {include : "reference"} - ], - - xml_declaration : [ - {include : "attributes"}, - {include : "instruction"} - ], - - instruction : [ - {token : "punctuation.instruction.end", regex : "\\?>", next : "start"} - ], - - doctype : [ - {include : "space"}, - {include : "string"}, - {token : "punctuation.doctype.end", regex : ">", next : "start"}, - {token : "xml-pe", regex : "[-_a-zA-Z0-9:]+"}, - {token : "punctuation.begin", regex : "\\[", push : "declarations"} - ], - - declarations : [{ - token : "text", - regex : "\\s+" - }, { - token: "punctuation.end", - regex: "]", - next: "pop" - }, { - token : ["punctuation.begin", "keyword"], - regex : "(<\\!)([-_a-zA-Z0-9]+)", - push : [{ - token : "text", - regex : "\\s+" - }, - { - token : "punctuation.end", - regex : ">", - next : "pop" - }, - {include : "string"}] - }], - - cdata : [ - {token : "string.end", regex : "\\]\\]>", next : "start"}, - {token : "text", regex : "\\s+"}, - {token : "text", regex : "(?:[^\\]]|\\](?!\\]>))+"} - ], - - comment : [ - {token : "comment", regex : "-->", next : "start"}, - {defaultToken : "comment"} - ], - - tag : [{ - token : ["meta.tag.punctuation.begin", "meta.tag.name"], - regex : "(<)((?:[-_a-zA-Z0-9]+:)?[-_a-zA-Z0-9]+)", - next: [ - {include : "attributes"}, - {token : "meta.tag.punctuation.end", regex : "/?>", next : "start"} - ] - }, { - token : ["meta.tag.punctuation.begin", "meta.tag.name"], - regex : "(", next : "start"} - ] - }], - - space : [ - {token : "text", regex : "\\s+"} - ], - - reference : [{ - token : "constant.language.escape", - regex : "(?:&#[0-9]+;)|(?:&#x[0-9a-fA-F]+;)|(?:&[a-zA-Z0-9_:\\.-]+;)" - }, { - token : "text", regex : "&" - }], - - string: [{ - token : "string", - regex : "'", - push : "qstring_inner" - }, { - token : "string", - regex : '"', - push : "qqstring_inner" - }], - - qstring_inner: [ - {token : "string", regex: "'", next: "pop"}, - {include : "reference"}, - {defaultToken : "string"} - ], - - qqstring_inner: [ - {token : "string", regex: '"', next: "pop"}, - {include : "reference"}, - {defaultToken : "string"} - ], - - attributes: [{ - token : "entity.other.attribute-name", - regex : "(?:[-_a-zA-Z0-9]+:)?[-_a-zA-Z0-9]+" - }, { - token : "keyword.operator.separator", - regex : "=" - }, { - include : "space" - }, { - include : "string" - }] - }; - - if (this.constructor === XmlHighlightRules) - this.normalizeRules(); -}; - - -(function() { - - this.embedTagRules = function(HighlightRules, prefix, tag){ - this.$rules.tag.unshift({ - token : ["meta.tag.punctuation.begin", "meta.tag.name." + tag], - regex : "(<)(" + tag + ")", - next: [ - {include : "space"}, - {include : "attributes"}, - {token : "meta.tag.punctuation.end", regex : "/?>", next : prefix + "start"} - ] - }); - - this.$rules[tag + "-end"] = [ - {include : "space"}, - {token : "meta.tag.punctuation.end", regex : ">", next: "start", - onMatch : function(value, currentState, stack) { - stack.splice(0); - return this.token; - }} - ] - - this.embedRules(HighlightRules, prefix, [{ - token: ["meta.tag.punctuation.begin", "meta.tag.name." + tag], - regex : "(" - }]); - }; - -}).call(TextHighlightRules.prototype); - -oop.inherits(XmlHighlightRules, TextHighlightRules); - -exports.XmlHighlightRules = XmlHighlightRules; -}); - -ace.define('ace/mode/xml_util', ['require', 'exports', 'module' ], function(require, exports, module) { - - -function string(state) { - return [{ - token : "string", - regex : '"', - next : state + "_qqstring" - }, { - token : "string", - regex : "'", - next : state + "_qstring" - }]; -} - -function multiLineString(quote, state) { - return [ - {token : "string", regex : quote, next : state}, - { - token : "constant.language.escape", - regex : "(?:&#[0-9]+;)|(?:&#x[0-9a-fA-F]+;)|(?:&[a-zA-Z0-9_:\\.-]+;)" - }, - {defaultToken : "string"} - ]; -} - -exports.tag = function(states, name, nextState, tagMap) { - states[name] = [{ - token : "text", - regex : "\\s+" - }, { - - token : !tagMap ? "meta.tag.tag-name" : function(value) { - if (tagMap[value]) - return "meta.tag.tag-name." + tagMap[value]; - else - return "meta.tag.tag-name"; - }, - regex : "[-_a-zA-Z0-9:]+", - next : name + "_embed_attribute_list" - }, { - token: "empty", - regex: "", - next : name + "_embed_attribute_list" - }]; - - states[name + "_qstring"] = multiLineString("'", name + "_embed_attribute_list"); - states[name + "_qqstring"] = multiLineString("\"", name + "_embed_attribute_list"); - - states[name + "_embed_attribute_list"] = [{ - token : "meta.tag.r", - regex : "/?>", - next : nextState - }, { - token : "keyword.operator", - regex : "=" - }, { - token : "entity.other.attribute-name", - regex : "[-_a-zA-Z0-9:]+" - }, { - token : "constant.numeric", // float - regex : "[+-]?\\d+(?:(?:\\.\\d*)?(?:[eE][+-]?\\d+)?)?\\b" - }, { - token : "text", - regex : "\\s+" - }].concat(string(name)); -}; - -}); diff --git a/IDE/jsrealb-ide/ace-src-noconflict/mode-glsl.js b/IDE/jsrealb-ide/ace-src-noconflict/mode-glsl.js deleted file mode 100644 index 110f9503..00000000 --- a/IDE/jsrealb-ide/ace-src-noconflict/mode-glsl.js +++ /dev/null @@ -1,860 +0,0 @@ -/* ***** BEGIN LICENSE BLOCK ***** - * Distributed under the BSD license: - * - * Copyright (c) 2010, Ajax.org B.V. - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are met: - * * Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * * Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * * Neither the name of Ajax.org B.V. nor the - * names of its contributors may be used to endorse or promote products - * derived from this software without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND - * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED - * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE - * DISCLAIMED. IN NO EVENT SHALL AJAX.ORG B.V. BE LIABLE FOR ANY - * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES - * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; - * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND - * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - * - * ***** END LICENSE BLOCK ***** */ - -ace.define('ace/mode/glsl', ['require', 'exports', 'module' , 'ace/lib/oop', 'ace/mode/c_cpp', 'ace/tokenizer', 'ace/mode/glsl_highlight_rules', 'ace/mode/matching_brace_outdent', 'ace/range', 'ace/mode/behaviour/cstyle', 'ace/mode/folding/cstyle'], function(require, exports, module) { - - -var oop = require("../lib/oop"); -var CMode = require("./c_cpp").Mode; -var Tokenizer = require("../tokenizer").Tokenizer; -var glslHighlightRules = require("./glsl_highlight_rules").glslHighlightRules; -var MatchingBraceOutdent = require("./matching_brace_outdent").MatchingBraceOutdent; -var Range = require("../range").Range; -var CstyleBehaviour = require("./behaviour/cstyle").CstyleBehaviour; -var CStyleFoldMode = require("./folding/cstyle").FoldMode; - -var Mode = function() { - this.HighlightRules = glslHighlightRules; - - this.$outdent = new MatchingBraceOutdent(); - this.$behaviour = new CstyleBehaviour(); - this.foldingRules = new CStyleFoldMode(); -}; -oop.inherits(Mode, CMode); - -exports.Mode = Mode; -}); - -ace.define('ace/mode/c_cpp', ['require', 'exports', 'module' , 'ace/lib/oop', 'ace/mode/text', 'ace/tokenizer', 'ace/mode/c_cpp_highlight_rules', 'ace/mode/matching_brace_outdent', 'ace/range', 'ace/mode/behaviour/cstyle', 'ace/mode/folding/cstyle'], function(require, exports, module) { - - -var oop = require("../lib/oop"); -var TextMode = require("./text").Mode; -var Tokenizer = require("../tokenizer").Tokenizer; -var c_cppHighlightRules = require("./c_cpp_highlight_rules").c_cppHighlightRules; -var MatchingBraceOutdent = require("./matching_brace_outdent").MatchingBraceOutdent; -var Range = require("../range").Range; -var CstyleBehaviour = require("./behaviour/cstyle").CstyleBehaviour; -var CStyleFoldMode = require("./folding/cstyle").FoldMode; - -var Mode = function() { - this.HighlightRules = c_cppHighlightRules; - - this.$outdent = new MatchingBraceOutdent(); - this.$behaviour = new CstyleBehaviour(); - - this.foldingRules = new CStyleFoldMode(); -}; -oop.inherits(Mode, TextMode); - -(function() { - - this.lineCommentStart = "//"; - this.blockComment = {start: "/*", end: "*/"}; - - this.getNextLineIndent = function(state, line, tab) { - var indent = this.$getIndent(line); - - var tokenizedLine = this.getTokenizer().getLineTokens(line, state); - var tokens = tokenizedLine.tokens; - var endState = tokenizedLine.state; - - if (tokens.length && tokens[tokens.length-1].type == "comment") { - return indent; - } - - if (state == "start") { - var match = line.match(/^.*[\{\(\[]\s*$/); - if (match) { - indent += tab; - } - } else if (state == "doc-start") { - if (endState == "start") { - return ""; - } - var match = line.match(/^\s*(\/?)\*/); - if (match) { - if (match[1]) { - indent += " "; - } - indent += "* "; - } - } - - return indent; - }; - - this.checkOutdent = function(state, line, input) { - return this.$outdent.checkOutdent(line, input); - }; - - this.autoOutdent = function(state, doc, row) { - this.$outdent.autoOutdent(doc, row); - }; - - this.$id = "ace/mode/c_cpp"; -}).call(Mode.prototype); - -exports.Mode = Mode; -}); -ace.define('ace/mode/c_cpp_highlight_rules', ['require', 'exports', 'module' , 'ace/lib/oop', 'ace/mode/doc_comment_highlight_rules', 'ace/mode/text_highlight_rules'], function(require, exports, module) { - - -var oop = require("../lib/oop"); -var DocCommentHighlightRules = require("./doc_comment_highlight_rules").DocCommentHighlightRules; -var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; -var cFunctions = exports.cFunctions = "\\s*\\bhypot(?:f|l)?|s(?:scanf|ystem|nprintf|ca(?:nf|lb(?:n(?:f|l)?|ln(?:f|l)?))|i(?:n(?:h(?:f|l)?|f|l)?|gn(?:al|bit))|tr(?:s(?:tr|pn)|nc(?:py|at|mp)|c(?:spn|hr|oll|py|at|mp)|to(?:imax|d|u(?:l(?:l)?|max)|k|f|l(?:d|l)?)|error|pbrk|ftime|len|rchr|xfrm)|printf|et(?:jmp|vbuf|locale|buf)|qrt(?:f|l)?|w(?:scanf|printf)|rand)|n(?:e(?:arbyint(?:f|l)?|xt(?:toward(?:f|l)?|after(?:f|l)?))|an(?:f|l)?)|c(?:s(?:in(?:h(?:f|l)?|f|l)?|qrt(?:f|l)?)|cos(?:h(?:f)?|f|l)?|imag(?:f|l)?|t(?:ime|an(?:h(?:f|l)?|f|l)?)|o(?:s(?:h(?:f|l)?|f|l)?|nj(?:f|l)?|pysign(?:f|l)?)|p(?:ow(?:f|l)?|roj(?:f|l)?)|e(?:il(?:f|l)?|xp(?:f|l)?)|l(?:o(?:ck|g(?:f|l)?)|earerr)|a(?:sin(?:h(?:f|l)?|f|l)?|cos(?:h(?:f|l)?|f|l)?|tan(?:h(?:f|l)?|f|l)?|lloc|rg(?:f|l)?|bs(?:f|l)?)|real(?:f|l)?|brt(?:f|l)?)|t(?:ime|o(?:upper|lower)|an(?:h(?:f|l)?|f|l)?|runc(?:f|l)?|gamma(?:f|l)?|mp(?:nam|file))|i(?:s(?:space|n(?:ormal|an)|cntrl|inf|digit|u(?:nordered|pper)|p(?:unct|rint)|finite|w(?:space|c(?:ntrl|type)|digit|upper|p(?:unct|rint)|lower|al(?:num|pha)|graph|xdigit|blank)|l(?:ower|ess(?:equal|greater)?)|al(?:num|pha)|gr(?:eater(?:equal)?|aph)|xdigit|blank)|logb(?:f|l)?|max(?:div|abs))|di(?:v|fftime)|_Exit|unget(?:c|wc)|p(?:ow(?:f|l)?|ut(?:s|c(?:har)?|wc(?:har)?)|error|rintf)|e(?:rf(?:c(?:f|l)?|f|l)?|x(?:it|p(?:2(?:f|l)?|f|l|m1(?:f|l)?)?))|v(?:s(?:scanf|nprintf|canf|printf|w(?:scanf|printf))|printf|f(?:scanf|printf|w(?:scanf|printf))|w(?:scanf|printf)|a_(?:start|copy|end|arg))|qsort|f(?:s(?:canf|e(?:tpos|ek))|close|tell|open|dim(?:f|l)?|p(?:classify|ut(?:s|c|w(?:s|c))|rintf)|e(?:holdexcept|set(?:e(?:nv|xceptflag)|round)|clearexcept|testexcept|of|updateenv|r(?:aiseexcept|ror)|get(?:e(?:nv|xceptflag)|round))|flush|w(?:scanf|ide|printf|rite)|loor(?:f|l)?|abs(?:f|l)?|get(?:s|c|pos|w(?:s|c))|re(?:open|e|ad|xp(?:f|l)?)|m(?:in(?:f|l)?|od(?:f|l)?|a(?:f|l|x(?:f|l)?)?))|l(?:d(?:iv|exp(?:f|l)?)|o(?:ngjmp|cal(?:time|econv)|g(?:1(?:p(?:f|l)?|0(?:f|l)?)|2(?:f|l)?|f|l|b(?:f|l)?)?)|abs|l(?:div|abs|r(?:int(?:f|l)?|ound(?:f|l)?))|r(?:int(?:f|l)?|ound(?:f|l)?)|gamma(?:f|l)?)|w(?:scanf|c(?:s(?:s(?:tr|pn)|nc(?:py|at|mp)|c(?:spn|hr|oll|py|at|mp)|to(?:imax|d|u(?:l(?:l)?|max)|k|f|l(?:d|l)?|mbs)|pbrk|ftime|len|r(?:chr|tombs)|xfrm)|to(?:b|mb)|rtomb)|printf|mem(?:set|c(?:hr|py|mp)|move))|a(?:s(?:sert|ctime|in(?:h(?:f|l)?|f|l)?)|cos(?:h(?:f|l)?|f|l)?|t(?:o(?:i|f|l(?:l)?)|exit|an(?:h(?:f|l)?|2(?:f|l)?|f|l)?)|b(?:s|ort))|g(?:et(?:s|c(?:har)?|env|wc(?:har)?)|mtime)|r(?:int(?:f|l)?|ound(?:f|l)?|e(?:name|alloc|wind|m(?:ove|quo(?:f|l)?|ainder(?:f|l)?))|a(?:nd|ise))|b(?:search|towc)|m(?:odf(?:f|l)?|em(?:set|c(?:hr|py|mp)|move)|ktime|alloc|b(?:s(?:init|towcs|rtowcs)|towc|len|r(?:towc|len)))\\b" - -var c_cppHighlightRules = function() { - - var keywordControls = ( - "break|case|continue|default|do|else|for|goto|if|_Pragma|" + - "return|switch|while|catch|operator|try|throw|using" - ); - - var storageType = ( - "asm|__asm__|auto|bool|_Bool|char|_Complex|double|enum|float|" + - "_Imaginary|int|long|short|signed|struct|typedef|union|unsigned|void|" + - "class|wchar_t|template" - ); - - var storageModifiers = ( - "const|extern|register|restrict|static|volatile|inline|private:|" + - "protected:|public:|friend|explicit|virtual|export|mutable|typename" - ); - - var keywordOperators = ( - "and|and_eq|bitand|bitor|compl|not|not_eq|or|or_eq|typeid|xor|xor_eq" + - "const_cast|dynamic_cast|reinterpret_cast|static_cast|sizeof|namespace" - ); - - var builtinConstants = ( - "NULL|true|false|TRUE|FALSE" - ); - - var keywordMapper = this.$keywords = this.createKeywordMapper({ - "keyword.control" : keywordControls, - "storage.type" : storageType, - "storage.modifier" : storageModifiers, - "keyword.operator" : keywordOperators, - "variable.language": "this", - "constant.language": builtinConstants - }, "identifier"); - - var identifierRe = "[a-zA-Z\\$_\u00a1-\uffff][a-zA-Z\d\\$_\u00a1-\uffff]*\\b"; - - this.$rules = { - "start" : [ - { - token : "comment", - regex : "\\/\\/.*$" - }, - DocCommentHighlightRules.getStartRule("doc-start"), - { - token : "comment", // multi line comment - regex : "\\/\\*", - next : "comment" - }, { - token : "string", // single line - regex : '["](?:(?:\\\\.)|(?:[^"\\\\]))*?["]' - }, { - token : "string", // multi line string start - regex : '["].*\\\\$', - next : "qqstring" - }, { - token : "string", // single line - regex : "['](?:(?:\\\\.)|(?:[^'\\\\]))*?[']" - }, { - token : "string", // multi line string start - regex : "['].*\\\\$", - next : "qstring" - }, { - token : "constant.numeric", // hex - regex : "0[xX][0-9a-fA-F]+(L|l|UL|ul|u|U|F|f|ll|LL|ull|ULL)?\\b" - }, { - token : "constant.numeric", // float - regex : "[+-]?\\d+(?:(?:\\.\\d*)?(?:[eE][+-]?\\d+)?)?(L|l|UL|ul|u|U|F|f|ll|LL|ull|ULL)?\\b" - }, { - token : "keyword", // pre-compiler directives - regex : "#\\s*(?:include|import|pragma|line|define|undef|if|ifdef|else|elif|ifndef)\\b", - next : "directive" - }, { - token : "keyword", // special case pre-compiler directive - regex : "(?:#\\s*endif)\\b" - }, { - token : "support.function.C99.c", - regex : cFunctions - }, { - token : keywordMapper, - regex : "[a-zA-Z_$][a-zA-Z0-9_$]*\\b" - }, { - token : "keyword.operator", - regex : "!|\\$|%|&|\\*|\\-\\-|\\-|\\+\\+|\\+|~|==|=|!=|<=|>=|<<=|>>=|>>>=|<>|<|>|!|&&|\\|\\||\\?\\:|\\*=|%=|\\+=|\\-=|&=|\\^=|\\b(?:in|new|delete|typeof|void)" - }, { - token : "punctuation.operator", - regex : "\\?|\\:|\\,|\\;|\\." - }, { - token : "paren.lparen", - regex : "[[({]" - }, { - token : "paren.rparen", - regex : "[\\])}]" - }, { - token : "text", - regex : "\\s+" - } - ], - "comment" : [ - { - token : "comment", // closing comment - regex : ".*?\\*\\/", - next : "start" - }, { - token : "comment", // comment spanning whole line - regex : ".+" - } - ], - "qqstring" : [ - { - token : "string", - regex : '(?:(?:\\\\.)|(?:[^"\\\\]))*?"', - next : "start" - }, { - token : "string", - regex : '.+' - } - ], - "qstring" : [ - { - token : "string", - regex : "(?:(?:\\\\.)|(?:[^'\\\\]))*?'", - next : "start" - }, { - token : "string", - regex : '.+' - } - ], - "directive" : [ - { - token : "constant.other.multiline", - regex : /\\/ - }, - { - token : "constant.other.multiline", - regex : /.*\\/ - }, - { - token : "constant.other", - regex : "\\s*<.+?>", - next : "start" - }, - { - token : "constant.other", // single line - regex : '\\s*["](?:(?:\\\\.)|(?:[^"\\\\]))*?["]', - next : "start" - }, - { - token : "constant.other", // single line - regex : "\\s*['](?:(?:\\\\.)|(?:[^'\\\\]))*?[']", - next : "start" - }, - { - token : "constant.other", - regex : /[^\\\/]+/, - next : "start" - } - ] - }; - - this.embedRules(DocCommentHighlightRules, "doc-", - [ DocCommentHighlightRules.getEndRule("start") ]); -}; - -oop.inherits(c_cppHighlightRules, TextHighlightRules); - -exports.c_cppHighlightRules = c_cppHighlightRules; -}); - -ace.define('ace/mode/doc_comment_highlight_rules', ['require', 'exports', 'module' , 'ace/lib/oop', 'ace/mode/text_highlight_rules'], function(require, exports, module) { - - -var oop = require("../lib/oop"); -var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; - -var DocCommentHighlightRules = function() { - - this.$rules = { - "start" : [ { - token : "comment.doc.tag", - regex : "@[\\w\\d_]+" // TODO: fix email addresses - }, { - token : "comment.doc.tag", - regex : "\\bTODO\\b" - }, { - defaultToken : "comment.doc" - }] - }; -}; - -oop.inherits(DocCommentHighlightRules, TextHighlightRules); - -DocCommentHighlightRules.getStartRule = function(start) { - return { - token : "comment.doc", // doc comment - regex : "\\/\\*(?=\\*)", - next : start - }; -}; - -DocCommentHighlightRules.getEndRule = function (start) { - return { - token : "comment.doc", // closing comment - regex : "\\*\\/", - next : start - }; -}; - - -exports.DocCommentHighlightRules = DocCommentHighlightRules; - -}); - -ace.define('ace/mode/matching_brace_outdent', ['require', 'exports', 'module' , 'ace/range'], function(require, exports, module) { - - -var Range = require("../range").Range; - -var MatchingBraceOutdent = function() {}; - -(function() { - - this.checkOutdent = function(line, input) { - if (! /^\s+$/.test(line)) - return false; - - return /^\s*\}/.test(input); - }; - - this.autoOutdent = function(doc, row) { - var line = doc.getLine(row); - var match = line.match(/^(\s*\})/); - - if (!match) return 0; - - var column = match[1].length; - var openBracePos = doc.findMatchingBracket({row: row, column: column}); - - if (!openBracePos || openBracePos.row == row) return 0; - - var indent = this.$getIndent(doc.getLine(openBracePos.row)); - doc.replace(new Range(row, 0, row, column-1), indent); - }; - - this.$getIndent = function(line) { - return line.match(/^\s*/)[0]; - }; - -}).call(MatchingBraceOutdent.prototype); - -exports.MatchingBraceOutdent = MatchingBraceOutdent; -}); - -ace.define('ace/mode/behaviour/cstyle', ['require', 'exports', 'module' , 'ace/lib/oop', 'ace/mode/behaviour', 'ace/token_iterator', 'ace/lib/lang'], function(require, exports, module) { - - -var oop = require("../../lib/oop"); -var Behaviour = require("../behaviour").Behaviour; -var TokenIterator = require("../../token_iterator").TokenIterator; -var lang = require("../../lib/lang"); - -var SAFE_INSERT_IN_TOKENS = - ["text", "paren.rparen", "punctuation.operator"]; -var SAFE_INSERT_BEFORE_TOKENS = - ["text", "paren.rparen", "punctuation.operator", "comment"]; - - -var autoInsertedBrackets = 0; -var autoInsertedRow = -1; -var autoInsertedLineEnd = ""; -var maybeInsertedBrackets = 0; -var maybeInsertedRow = -1; -var maybeInsertedLineStart = ""; -var maybeInsertedLineEnd = ""; - -var CstyleBehaviour = function () { - - CstyleBehaviour.isSaneInsertion = function(editor, session) { - var cursor = editor.getCursorPosition(); - var iterator = new TokenIterator(session, cursor.row, cursor.column); - if (!this.$matchTokenType(iterator.getCurrentToken() || "text", SAFE_INSERT_IN_TOKENS)) { - var iterator2 = new TokenIterator(session, cursor.row, cursor.column + 1); - if (!this.$matchTokenType(iterator2.getCurrentToken() || "text", SAFE_INSERT_IN_TOKENS)) - return false; - } - iterator.stepForward(); - return iterator.getCurrentTokenRow() !== cursor.row || - this.$matchTokenType(iterator.getCurrentToken() || "text", SAFE_INSERT_BEFORE_TOKENS); - }; - - CstyleBehaviour.$matchTokenType = function(token, types) { - return types.indexOf(token.type || token) > -1; - }; - - CstyleBehaviour.recordAutoInsert = function(editor, session, bracket) { - var cursor = editor.getCursorPosition(); - var line = session.doc.getLine(cursor.row); - if (!this.isAutoInsertedClosing(cursor, line, autoInsertedLineEnd[0])) - autoInsertedBrackets = 0; - autoInsertedRow = cursor.row; - autoInsertedLineEnd = bracket + line.substr(cursor.column); - autoInsertedBrackets++; - }; - - CstyleBehaviour.recordMaybeInsert = function(editor, session, bracket) { - var cursor = editor.getCursorPosition(); - var line = session.doc.getLine(cursor.row); - if (!this.isMaybeInsertedClosing(cursor, line)) - maybeInsertedBrackets = 0; - maybeInsertedRow = cursor.row; - maybeInsertedLineStart = line.substr(0, cursor.column) + bracket; - maybeInsertedLineEnd = line.substr(cursor.column); - maybeInsertedBrackets++; - }; - - CstyleBehaviour.isAutoInsertedClosing = function(cursor, line, bracket) { - return autoInsertedBrackets > 0 && - cursor.row === autoInsertedRow && - bracket === autoInsertedLineEnd[0] && - line.substr(cursor.column) === autoInsertedLineEnd; - }; - - CstyleBehaviour.isMaybeInsertedClosing = function(cursor, line) { - return maybeInsertedBrackets > 0 && - cursor.row === maybeInsertedRow && - line.substr(cursor.column) === maybeInsertedLineEnd && - line.substr(0, cursor.column) == maybeInsertedLineStart; - }; - - CstyleBehaviour.popAutoInsertedClosing = function() { - autoInsertedLineEnd = autoInsertedLineEnd.substr(1); - autoInsertedBrackets--; - }; - - CstyleBehaviour.clearMaybeInsertedClosing = function() { - maybeInsertedBrackets = 0; - maybeInsertedRow = -1; - }; - - this.add("braces", "insertion", function (state, action, editor, session, text) { - var cursor = editor.getCursorPosition(); - var line = session.doc.getLine(cursor.row); - if (text == '{') { - var selection = editor.getSelectionRange(); - var selected = session.doc.getTextRange(selection); - if (selected !== "" && selected !== "{" && editor.getWrapBehavioursEnabled()) { - return { - text: '{' + selected + '}', - selection: false - }; - } else if (CstyleBehaviour.isSaneInsertion(editor, session)) { - if (/[\]\}\)]/.test(line[cursor.column]) || editor.inMultiSelectMode) { - CstyleBehaviour.recordAutoInsert(editor, session, "}"); - return { - text: '{}', - selection: [1, 1] - }; - } else { - CstyleBehaviour.recordMaybeInsert(editor, session, "{"); - return { - text: '{', - selection: [1, 1] - }; - } - } - } else if (text == '}') { - var rightChar = line.substring(cursor.column, cursor.column + 1); - if (rightChar == '}') { - var matching = session.$findOpeningBracket('}', {column: cursor.column + 1, row: cursor.row}); - if (matching !== null && CstyleBehaviour.isAutoInsertedClosing(cursor, line, text)) { - CstyleBehaviour.popAutoInsertedClosing(); - return { - text: '', - selection: [1, 1] - }; - } - } - } else if (text == "\n" || text == "\r\n") { - var closing = ""; - if (CstyleBehaviour.isMaybeInsertedClosing(cursor, line)) { - closing = lang.stringRepeat("}", maybeInsertedBrackets); - CstyleBehaviour.clearMaybeInsertedClosing(); - } - var rightChar = line.substring(cursor.column, cursor.column + 1); - if (rightChar === '}') { - var openBracePos = session.findMatchingBracket({row: cursor.row, column: cursor.column+1}, '}'); - if (!openBracePos) - return null; - var next_indent = this.$getIndent(session.getLine(openBracePos.row)); - } else if (closing) { - var next_indent = this.$getIndent(line); - } else { - return; - } - var indent = next_indent + session.getTabString(); - - return { - text: '\n' + indent + '\n' + next_indent + closing, - selection: [1, indent.length, 1, indent.length] - }; - } else { - CstyleBehaviour.clearMaybeInsertedClosing(); - } - }); - - this.add("braces", "deletion", function (state, action, editor, session, range) { - var selected = session.doc.getTextRange(range); - if (!range.isMultiLine() && selected == '{') { - var line = session.doc.getLine(range.start.row); - var rightChar = line.substring(range.end.column, range.end.column + 1); - if (rightChar == '}') { - range.end.column++; - return range; - } else { - maybeInsertedBrackets--; - } - } - }); - - this.add("parens", "insertion", function (state, action, editor, session, text) { - if (text == '(') { - var selection = editor.getSelectionRange(); - var selected = session.doc.getTextRange(selection); - if (selected !== "" && editor.getWrapBehavioursEnabled()) { - return { - text: '(' + selected + ')', - selection: false - }; - } else if (CstyleBehaviour.isSaneInsertion(editor, session)) { - CstyleBehaviour.recordAutoInsert(editor, session, ")"); - return { - text: '()', - selection: [1, 1] - }; - } - } else if (text == ')') { - var cursor = editor.getCursorPosition(); - var line = session.doc.getLine(cursor.row); - var rightChar = line.substring(cursor.column, cursor.column + 1); - if (rightChar == ')') { - var matching = session.$findOpeningBracket(')', {column: cursor.column + 1, row: cursor.row}); - if (matching !== null && CstyleBehaviour.isAutoInsertedClosing(cursor, line, text)) { - CstyleBehaviour.popAutoInsertedClosing(); - return { - text: '', - selection: [1, 1] - }; - } - } - } - }); - - this.add("parens", "deletion", function (state, action, editor, session, range) { - var selected = session.doc.getTextRange(range); - if (!range.isMultiLine() && selected == '(') { - var line = session.doc.getLine(range.start.row); - var rightChar = line.substring(range.start.column + 1, range.start.column + 2); - if (rightChar == ')') { - range.end.column++; - return range; - } - } - }); - - this.add("brackets", "insertion", function (state, action, editor, session, text) { - if (text == '[') { - var selection = editor.getSelectionRange(); - var selected = session.doc.getTextRange(selection); - if (selected !== "" && editor.getWrapBehavioursEnabled()) { - return { - text: '[' + selected + ']', - selection: false - }; - } else if (CstyleBehaviour.isSaneInsertion(editor, session)) { - CstyleBehaviour.recordAutoInsert(editor, session, "]"); - return { - text: '[]', - selection: [1, 1] - }; - } - } else if (text == ']') { - var cursor = editor.getCursorPosition(); - var line = session.doc.getLine(cursor.row); - var rightChar = line.substring(cursor.column, cursor.column + 1); - if (rightChar == ']') { - var matching = session.$findOpeningBracket(']', {column: cursor.column + 1, row: cursor.row}); - if (matching !== null && CstyleBehaviour.isAutoInsertedClosing(cursor, line, text)) { - CstyleBehaviour.popAutoInsertedClosing(); - return { - text: '', - selection: [1, 1] - }; - } - } - } - }); - - this.add("brackets", "deletion", function (state, action, editor, session, range) { - var selected = session.doc.getTextRange(range); - if (!range.isMultiLine() && selected == '[') { - var line = session.doc.getLine(range.start.row); - var rightChar = line.substring(range.start.column + 1, range.start.column + 2); - if (rightChar == ']') { - range.end.column++; - return range; - } - } - }); - - this.add("string_dquotes", "insertion", function (state, action, editor, session, text) { - if (text == '"' || text == "'") { - var quote = text; - var selection = editor.getSelectionRange(); - var selected = session.doc.getTextRange(selection); - if (selected !== "" && selected !== "'" && selected != '"' && editor.getWrapBehavioursEnabled()) { - return { - text: quote + selected + quote, - selection: false - }; - } else { - var cursor = editor.getCursorPosition(); - var line = session.doc.getLine(cursor.row); - var leftChar = line.substring(cursor.column-1, cursor.column); - if (leftChar == '\\') { - return null; - } - var tokens = session.getTokens(selection.start.row); - var col = 0, token; - var quotepos = -1; // Track whether we're inside an open quote. - - for (var x = 0; x < tokens.length; x++) { - token = tokens[x]; - if (token.type == "string") { - quotepos = -1; - } else if (quotepos < 0) { - quotepos = token.value.indexOf(quote); - } - if ((token.value.length + col) > selection.start.column) { - break; - } - col += tokens[x].value.length; - } - if (!token || (quotepos < 0 && token.type !== "comment" && (token.type !== "string" || ((selection.start.column !== token.value.length+col-1) && token.value.lastIndexOf(quote) === token.value.length-1)))) { - if (!CstyleBehaviour.isSaneInsertion(editor, session)) - return; - return { - text: quote + quote, - selection: [1,1] - }; - } else if (token && token.type === "string") { - var rightChar = line.substring(cursor.column, cursor.column + 1); - if (rightChar == quote) { - return { - text: '', - selection: [1, 1] - }; - } - } - } - } - }); - - this.add("string_dquotes", "deletion", function (state, action, editor, session, range) { - var selected = session.doc.getTextRange(range); - if (!range.isMultiLine() && (selected == '"' || selected == "'")) { - var line = session.doc.getLine(range.start.row); - var rightChar = line.substring(range.start.column + 1, range.start.column + 2); - if (rightChar == selected) { - range.end.column++; - return range; - } - } - }); - -}; - -oop.inherits(CstyleBehaviour, Behaviour); - -exports.CstyleBehaviour = CstyleBehaviour; -}); - -ace.define('ace/mode/folding/cstyle', ['require', 'exports', 'module' , 'ace/lib/oop', 'ace/range', 'ace/mode/folding/fold_mode'], function(require, exports, module) { - - -var oop = require("../../lib/oop"); -var Range = require("../../range").Range; -var BaseFoldMode = require("./fold_mode").FoldMode; - -var FoldMode = exports.FoldMode = function(commentRegex) { - if (commentRegex) { - this.foldingStartMarker = new RegExp( - this.foldingStartMarker.source.replace(/\|[^|]*?$/, "|" + commentRegex.start) - ); - this.foldingStopMarker = new RegExp( - this.foldingStopMarker.source.replace(/\|[^|]*?$/, "|" + commentRegex.end) - ); - } -}; -oop.inherits(FoldMode, BaseFoldMode); - -(function() { - - this.foldingStartMarker = /(\{|\[)[^\}\]]*$|^\s*(\/\*)/; - this.foldingStopMarker = /^[^\[\{]*(\}|\])|^[\s\*]*(\*\/)/; - - this.getFoldWidgetRange = function(session, foldStyle, row, forceMultiline) { - var line = session.getLine(row); - var match = line.match(this.foldingStartMarker); - if (match) { - var i = match.index; - - if (match[1]) - return this.openingBracketBlock(session, match[1], row, i); - - var range = session.getCommentFoldRange(row, i + match[0].length, 1); - - if (range && !range.isMultiLine()) { - if (forceMultiline) { - range = this.getSectionRange(session, row); - } else if (foldStyle != "all") - range = null; - } - - return range; - } - - if (foldStyle === "markbegin") - return; - - var match = line.match(this.foldingStopMarker); - if (match) { - var i = match.index + match[0].length; - - if (match[1]) - return this.closingBracketBlock(session, match[1], row, i); - - return session.getCommentFoldRange(row, i, -1); - } - }; - - this.getSectionRange = function(session, row) { - var line = session.getLine(row); - var startIndent = line.search(/\S/); - var startRow = row; - var startColumn = line.length; - row = row + 1; - var endRow = row; - var maxRow = session.getLength(); - while (++row < maxRow) { - line = session.getLine(row); - var indent = line.search(/\S/); - if (indent === -1) - continue; - if (startIndent > indent) - break; - var subRange = this.getFoldWidgetRange(session, "all", row); - - if (subRange) { - if (subRange.start.row <= startRow) { - break; - } else if (subRange.isMultiLine()) { - row = subRange.end.row; - } else if (startIndent == indent) { - break; - } - } - endRow = row; - } - - return new Range(startRow, startColumn, endRow, session.getLine(endRow).length); - }; - -}).call(FoldMode.prototype); - -}); - -ace.define('ace/mode/glsl_highlight_rules', ['require', 'exports', 'module' , 'ace/lib/oop', 'ace/mode/c_cpp_highlight_rules'], function(require, exports, module) { - - -var oop = require("../lib/oop"); -var c_cppHighlightRules = require("./c_cpp_highlight_rules").c_cppHighlightRules; - -var glslHighlightRules = function() { - - var keywords = ( - "attribute|const|uniform|varying|break|continue|do|for|while|" + - "if|else|in|out|inout|float|int|void|bool|true|false|" + - "lowp|mediump|highp|precision|invariant|discard|return|mat2|mat3|" + - "mat4|vec2|vec3|vec4|ivec2|ivec3|ivec4|bvec2|bvec3|bvec4|sampler2D|" + - "samplerCube|struct" - ); - - var buildinConstants = ( - "radians|degrees|sin|cos|tan|asin|acos|atan|pow|" + - "exp|log|exp2|log2|sqrt|inversesqrt|abs|sign|floor|ceil|fract|mod|" + - "min|max|clamp|mix|step|smoothstep|length|distance|dot|cross|" + - "normalize|faceforward|reflect|refract|matrixCompMult|lessThan|" + - "lessThanEqual|greaterThan|greaterThanEqual|equal|notEqual|any|all|" + - "not|dFdx|dFdy|fwidth|texture2D|texture2DProj|texture2DLod|" + - "texture2DProjLod|textureCube|textureCubeLod|" + - "gl_MaxVertexAttribs|gl_MaxVertexUniformVectors|gl_MaxVaryingVectors|" + - "gl_MaxVertexTextureImageUnits|gl_MaxCombinedTextureImageUnits|" + - "gl_MaxTextureImageUnits|gl_MaxFragmentUniformVectors|gl_MaxDrawBuffers|" + - "gl_DepthRangeParameters|gl_DepthRange|" + - "gl_Position|gl_PointSize|" + - "gl_FragCoord|gl_FrontFacing|gl_PointCoord|gl_FragColor|gl_FragData" - ); - - var keywordMapper = this.createKeywordMapper({ - "variable.language": "this", - "keyword": keywords, - "constant.language": buildinConstants - }, "identifier"); - - this.$rules = new c_cppHighlightRules().$rules; - this.$rules.start.forEach(function(rule) { - if (typeof rule.token == "function") - rule.token = keywordMapper; - }) -}; - -oop.inherits(glslHighlightRules, c_cppHighlightRules); - -exports.glslHighlightRules = glslHighlightRules; -}); diff --git a/IDE/jsrealb-ide/ace-src-noconflict/mode-golang.js b/IDE/jsrealb-ide/ace-src-noconflict/mode-golang.js deleted file mode 100644 index 826ad41a..00000000 --- a/IDE/jsrealb-ide/ace-src-noconflict/mode-golang.js +++ /dev/null @@ -1,674 +0,0 @@ -ace.define('ace/mode/golang', ['require', 'exports', 'module' , 'ace/lib/oop', 'ace/mode/text', 'ace/tokenizer', 'ace/mode/golang_highlight_rules', 'ace/mode/matching_brace_outdent', 'ace/mode/behaviour/cstyle', 'ace/mode/folding/cstyle'], function(require, exports, module) { - -var oop = require("../lib/oop"); -var TextMode = require("./text").Mode; -var Tokenizer = require("../tokenizer").Tokenizer; -var GolangHighlightRules = require("./golang_highlight_rules").GolangHighlightRules; -var MatchingBraceOutdent = require("./matching_brace_outdent").MatchingBraceOutdent; -var CstyleBehaviour = require("./behaviour/cstyle").CstyleBehaviour; -var CStyleFoldMode = require("./folding/cstyle").FoldMode; - -var Mode = function() { - this.HighlightRules = GolangHighlightRules; - this.$outdent = new MatchingBraceOutdent(); - this.foldingRules = new CStyleFoldMode(); -}; -oop.inherits(Mode, TextMode); - -(function() { - - this.lineCommentStart = "//"; - this.blockComment = {start: "/*", end: "*/"}; - - this.getNextLineIndent = function(state, line, tab) { - var indent = this.$getIndent(line); - - var tokenizedLine = this.getTokenizer().getLineTokens(line, state); - var tokens = tokenizedLine.tokens; - var endState = tokenizedLine.state; - - if (tokens.length && tokens[tokens.length-1].type == "comment") { - return indent; - } - - if (state == "start") { - var match = line.match(/^.*[\{\(\[]\s*$/); - if (match) { - indent += tab; - } - } - - return indent; - };//end getNextLineIndent - - this.checkOutdent = function(state, line, input) { - return this.$outdent.checkOutdent(line, input); - }; - - this.autoOutdent = function(state, doc, row) { - this.$outdent.autoOutdent(doc, row); - }; - - this.$id = "ace/mode/golang"; -}).call(Mode.prototype); - -exports.Mode = Mode; -}); -ace.define('ace/mode/golang_highlight_rules', ['require', 'exports', 'module' , 'ace/lib/oop', 'ace/mode/doc_comment_highlight_rules', 'ace/mode/text_highlight_rules'], function(require, exports, module) { - var oop = require("../lib/oop"); - var DocCommentHighlightRules = require("./doc_comment_highlight_rules").DocCommentHighlightRules; - var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; - - var GolangHighlightRules = function() { - var keywords = ( - "else|break|case|return|goto|if|const|select|" + - "continue|struct|default|switch|for|range|" + - "func|import|package|chan|defer|fallthrough|go|interface|map|range|" + - "select|type|var" - ); - var builtinTypes = ( - "string|uint8|uint16|uint32|uint64|int8|int16|int32|int64|float32|" + - "float64|complex64|complex128|byte|rune|uint|int|uintptr|bool|error" - ); - var builtinFunctions = ( - "make|close|new|panic|recover" - ); - var builtinConstants = ("nil|true|false|iota"); - - var keywordMapper = this.createKeywordMapper({ - "keyword": keywords, - "constant.language": builtinConstants, - "support.function": builtinFunctions, - "support.type": builtinTypes - }, "identifier"); - - this.$rules = { - "start" : [ - { - token : "comment", - regex : "\\/\\/.*$" - }, - DocCommentHighlightRules.getStartRule("doc-start"), - { - token : "comment", // multi line comment - regex : "\\/\\*", - next : "comment" - }, { - token : "string", // single line - regex : '["](?:(?:\\\\.)|(?:[^"\\\\]))*?["]' - }, { - token : "string", // single line - regex : '[`](?:[^`]*)[`]' - }, { - token : "string", // multi line string start - merge : true, - regex : '[`](?:[^`]*)$', - next : "bqstring" - }, { - token : "constant.numeric", // rune - regex : "['](?:(?:\\\\.)|(?:[^'\\\\]))[']" - }, { - token : "constant.numeric", // hex - regex : "0[xX][0-9a-fA-F]+\\b" - }, { - token : "constant.numeric", // float - regex : "[+-]?\\d+(?:(?:\\.\\d*)?(?:[eE][+-]?\\d+)?)?\\b" - }, { - token : keywordMapper, - regex : "[a-zA-Z_$][a-zA-Z0-9_$]*\\b" - }, { - token : "keyword.operator", - regex : "!|\\$|%|&|\\*|\\-\\-|\\-|\\+\\+|\\+|~|==|=|!=|<=|>=|<<=|>>=|>>>=|<>|<|>|!|&&|\\|\\||\\?\\:|\\*=|%=|\\+=|\\-=|&=|\\^=" - }, { - token : "punctuation.operator", - regex : "\\?|\\:|\\,|\\;|\\." - }, { - token : "paren.lparen", - regex : "[[({]" - }, { - token : "paren.rparen", - regex : "[\\])}]" - }, { - token: "invalid", - regex: "\\s+$" - }, { - token : "text", - regex : "\\s+" - } - ], - "comment" : [ - { - token : "comment", // closing comment - regex : ".*?\\*\\/", - next : "start" - }, { - token : "comment", // comment spanning whole line - regex : ".+" - } - ], - "bqstring" : [ - { - token : "string", - regex : '(?:[^`]*)`', - next : "start" - }, { - token : "string", - regex : '.+' - } - ] - }; - - this.embedRules(DocCommentHighlightRules, "doc-", - [ DocCommentHighlightRules.getEndRule("start") ]); - }; - oop.inherits(GolangHighlightRules, TextHighlightRules); - - exports.GolangHighlightRules = GolangHighlightRules; -}); - -ace.define('ace/mode/doc_comment_highlight_rules', ['require', 'exports', 'module' , 'ace/lib/oop', 'ace/mode/text_highlight_rules'], function(require, exports, module) { - - -var oop = require("../lib/oop"); -var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; - -var DocCommentHighlightRules = function() { - - this.$rules = { - "start" : [ { - token : "comment.doc.tag", - regex : "@[\\w\\d_]+" // TODO: fix email addresses - }, { - token : "comment.doc.tag", - regex : "\\bTODO\\b" - }, { - defaultToken : "comment.doc" - }] - }; -}; - -oop.inherits(DocCommentHighlightRules, TextHighlightRules); - -DocCommentHighlightRules.getStartRule = function(start) { - return { - token : "comment.doc", // doc comment - regex : "\\/\\*(?=\\*)", - next : start - }; -}; - -DocCommentHighlightRules.getEndRule = function (start) { - return { - token : "comment.doc", // closing comment - regex : "\\*\\/", - next : start - }; -}; - - -exports.DocCommentHighlightRules = DocCommentHighlightRules; - -}); - -ace.define('ace/mode/matching_brace_outdent', ['require', 'exports', 'module' , 'ace/range'], function(require, exports, module) { - - -var Range = require("../range").Range; - -var MatchingBraceOutdent = function() {}; - -(function() { - - this.checkOutdent = function(line, input) { - if (! /^\s+$/.test(line)) - return false; - - return /^\s*\}/.test(input); - }; - - this.autoOutdent = function(doc, row) { - var line = doc.getLine(row); - var match = line.match(/^(\s*\})/); - - if (!match) return 0; - - var column = match[1].length; - var openBracePos = doc.findMatchingBracket({row: row, column: column}); - - if (!openBracePos || openBracePos.row == row) return 0; - - var indent = this.$getIndent(doc.getLine(openBracePos.row)); - doc.replace(new Range(row, 0, row, column-1), indent); - }; - - this.$getIndent = function(line) { - return line.match(/^\s*/)[0]; - }; - -}).call(MatchingBraceOutdent.prototype); - -exports.MatchingBraceOutdent = MatchingBraceOutdent; -}); - -ace.define('ace/mode/behaviour/cstyle', ['require', 'exports', 'module' , 'ace/lib/oop', 'ace/mode/behaviour', 'ace/token_iterator', 'ace/lib/lang'], function(require, exports, module) { - - -var oop = require("../../lib/oop"); -var Behaviour = require("../behaviour").Behaviour; -var TokenIterator = require("../../token_iterator").TokenIterator; -var lang = require("../../lib/lang"); - -var SAFE_INSERT_IN_TOKENS = - ["text", "paren.rparen", "punctuation.operator"]; -var SAFE_INSERT_BEFORE_TOKENS = - ["text", "paren.rparen", "punctuation.operator", "comment"]; - - -var autoInsertedBrackets = 0; -var autoInsertedRow = -1; -var autoInsertedLineEnd = ""; -var maybeInsertedBrackets = 0; -var maybeInsertedRow = -1; -var maybeInsertedLineStart = ""; -var maybeInsertedLineEnd = ""; - -var CstyleBehaviour = function () { - - CstyleBehaviour.isSaneInsertion = function(editor, session) { - var cursor = editor.getCursorPosition(); - var iterator = new TokenIterator(session, cursor.row, cursor.column); - if (!this.$matchTokenType(iterator.getCurrentToken() || "text", SAFE_INSERT_IN_TOKENS)) { - var iterator2 = new TokenIterator(session, cursor.row, cursor.column + 1); - if (!this.$matchTokenType(iterator2.getCurrentToken() || "text", SAFE_INSERT_IN_TOKENS)) - return false; - } - iterator.stepForward(); - return iterator.getCurrentTokenRow() !== cursor.row || - this.$matchTokenType(iterator.getCurrentToken() || "text", SAFE_INSERT_BEFORE_TOKENS); - }; - - CstyleBehaviour.$matchTokenType = function(token, types) { - return types.indexOf(token.type || token) > -1; - }; - - CstyleBehaviour.recordAutoInsert = function(editor, session, bracket) { - var cursor = editor.getCursorPosition(); - var line = session.doc.getLine(cursor.row); - if (!this.isAutoInsertedClosing(cursor, line, autoInsertedLineEnd[0])) - autoInsertedBrackets = 0; - autoInsertedRow = cursor.row; - autoInsertedLineEnd = bracket + line.substr(cursor.column); - autoInsertedBrackets++; - }; - - CstyleBehaviour.recordMaybeInsert = function(editor, session, bracket) { - var cursor = editor.getCursorPosition(); - var line = session.doc.getLine(cursor.row); - if (!this.isMaybeInsertedClosing(cursor, line)) - maybeInsertedBrackets = 0; - maybeInsertedRow = cursor.row; - maybeInsertedLineStart = line.substr(0, cursor.column) + bracket; - maybeInsertedLineEnd = line.substr(cursor.column); - maybeInsertedBrackets++; - }; - - CstyleBehaviour.isAutoInsertedClosing = function(cursor, line, bracket) { - return autoInsertedBrackets > 0 && - cursor.row === autoInsertedRow && - bracket === autoInsertedLineEnd[0] && - line.substr(cursor.column) === autoInsertedLineEnd; - }; - - CstyleBehaviour.isMaybeInsertedClosing = function(cursor, line) { - return maybeInsertedBrackets > 0 && - cursor.row === maybeInsertedRow && - line.substr(cursor.column) === maybeInsertedLineEnd && - line.substr(0, cursor.column) == maybeInsertedLineStart; - }; - - CstyleBehaviour.popAutoInsertedClosing = function() { - autoInsertedLineEnd = autoInsertedLineEnd.substr(1); - autoInsertedBrackets--; - }; - - CstyleBehaviour.clearMaybeInsertedClosing = function() { - maybeInsertedBrackets = 0; - maybeInsertedRow = -1; - }; - - this.add("braces", "insertion", function (state, action, editor, session, text) { - var cursor = editor.getCursorPosition(); - var line = session.doc.getLine(cursor.row); - if (text == '{') { - var selection = editor.getSelectionRange(); - var selected = session.doc.getTextRange(selection); - if (selected !== "" && selected !== "{" && editor.getWrapBehavioursEnabled()) { - return { - text: '{' + selected + '}', - selection: false - }; - } else if (CstyleBehaviour.isSaneInsertion(editor, session)) { - if (/[\]\}\)]/.test(line[cursor.column]) || editor.inMultiSelectMode) { - CstyleBehaviour.recordAutoInsert(editor, session, "}"); - return { - text: '{}', - selection: [1, 1] - }; - } else { - CstyleBehaviour.recordMaybeInsert(editor, session, "{"); - return { - text: '{', - selection: [1, 1] - }; - } - } - } else if (text == '}') { - var rightChar = line.substring(cursor.column, cursor.column + 1); - if (rightChar == '}') { - var matching = session.$findOpeningBracket('}', {column: cursor.column + 1, row: cursor.row}); - if (matching !== null && CstyleBehaviour.isAutoInsertedClosing(cursor, line, text)) { - CstyleBehaviour.popAutoInsertedClosing(); - return { - text: '', - selection: [1, 1] - }; - } - } - } else if (text == "\n" || text == "\r\n") { - var closing = ""; - if (CstyleBehaviour.isMaybeInsertedClosing(cursor, line)) { - closing = lang.stringRepeat("}", maybeInsertedBrackets); - CstyleBehaviour.clearMaybeInsertedClosing(); - } - var rightChar = line.substring(cursor.column, cursor.column + 1); - if (rightChar === '}') { - var openBracePos = session.findMatchingBracket({row: cursor.row, column: cursor.column+1}, '}'); - if (!openBracePos) - return null; - var next_indent = this.$getIndent(session.getLine(openBracePos.row)); - } else if (closing) { - var next_indent = this.$getIndent(line); - } else { - return; - } - var indent = next_indent + session.getTabString(); - - return { - text: '\n' + indent + '\n' + next_indent + closing, - selection: [1, indent.length, 1, indent.length] - }; - } else { - CstyleBehaviour.clearMaybeInsertedClosing(); - } - }); - - this.add("braces", "deletion", function (state, action, editor, session, range) { - var selected = session.doc.getTextRange(range); - if (!range.isMultiLine() && selected == '{') { - var line = session.doc.getLine(range.start.row); - var rightChar = line.substring(range.end.column, range.end.column + 1); - if (rightChar == '}') { - range.end.column++; - return range; - } else { - maybeInsertedBrackets--; - } - } - }); - - this.add("parens", "insertion", function (state, action, editor, session, text) { - if (text == '(') { - var selection = editor.getSelectionRange(); - var selected = session.doc.getTextRange(selection); - if (selected !== "" && editor.getWrapBehavioursEnabled()) { - return { - text: '(' + selected + ')', - selection: false - }; - } else if (CstyleBehaviour.isSaneInsertion(editor, session)) { - CstyleBehaviour.recordAutoInsert(editor, session, ")"); - return { - text: '()', - selection: [1, 1] - }; - } - } else if (text == ')') { - var cursor = editor.getCursorPosition(); - var line = session.doc.getLine(cursor.row); - var rightChar = line.substring(cursor.column, cursor.column + 1); - if (rightChar == ')') { - var matching = session.$findOpeningBracket(')', {column: cursor.column + 1, row: cursor.row}); - if (matching !== null && CstyleBehaviour.isAutoInsertedClosing(cursor, line, text)) { - CstyleBehaviour.popAutoInsertedClosing(); - return { - text: '', - selection: [1, 1] - }; - } - } - } - }); - - this.add("parens", "deletion", function (state, action, editor, session, range) { - var selected = session.doc.getTextRange(range); - if (!range.isMultiLine() && selected == '(') { - var line = session.doc.getLine(range.start.row); - var rightChar = line.substring(range.start.column + 1, range.start.column + 2); - if (rightChar == ')') { - range.end.column++; - return range; - } - } - }); - - this.add("brackets", "insertion", function (state, action, editor, session, text) { - if (text == '[') { - var selection = editor.getSelectionRange(); - var selected = session.doc.getTextRange(selection); - if (selected !== "" && editor.getWrapBehavioursEnabled()) { - return { - text: '[' + selected + ']', - selection: false - }; - } else if (CstyleBehaviour.isSaneInsertion(editor, session)) { - CstyleBehaviour.recordAutoInsert(editor, session, "]"); - return { - text: '[]', - selection: [1, 1] - }; - } - } else if (text == ']') { - var cursor = editor.getCursorPosition(); - var line = session.doc.getLine(cursor.row); - var rightChar = line.substring(cursor.column, cursor.column + 1); - if (rightChar == ']') { - var matching = session.$findOpeningBracket(']', {column: cursor.column + 1, row: cursor.row}); - if (matching !== null && CstyleBehaviour.isAutoInsertedClosing(cursor, line, text)) { - CstyleBehaviour.popAutoInsertedClosing(); - return { - text: '', - selection: [1, 1] - }; - } - } - } - }); - - this.add("brackets", "deletion", function (state, action, editor, session, range) { - var selected = session.doc.getTextRange(range); - if (!range.isMultiLine() && selected == '[') { - var line = session.doc.getLine(range.start.row); - var rightChar = line.substring(range.start.column + 1, range.start.column + 2); - if (rightChar == ']') { - range.end.column++; - return range; - } - } - }); - - this.add("string_dquotes", "insertion", function (state, action, editor, session, text) { - if (text == '"' || text == "'") { - var quote = text; - var selection = editor.getSelectionRange(); - var selected = session.doc.getTextRange(selection); - if (selected !== "" && selected !== "'" && selected != '"' && editor.getWrapBehavioursEnabled()) { - return { - text: quote + selected + quote, - selection: false - }; - } else { - var cursor = editor.getCursorPosition(); - var line = session.doc.getLine(cursor.row); - var leftChar = line.substring(cursor.column-1, cursor.column); - if (leftChar == '\\') { - return null; - } - var tokens = session.getTokens(selection.start.row); - var col = 0, token; - var quotepos = -1; // Track whether we're inside an open quote. - - for (var x = 0; x < tokens.length; x++) { - token = tokens[x]; - if (token.type == "string") { - quotepos = -1; - } else if (quotepos < 0) { - quotepos = token.value.indexOf(quote); - } - if ((token.value.length + col) > selection.start.column) { - break; - } - col += tokens[x].value.length; - } - if (!token || (quotepos < 0 && token.type !== "comment" && (token.type !== "string" || ((selection.start.column !== token.value.length+col-1) && token.value.lastIndexOf(quote) === token.value.length-1)))) { - if (!CstyleBehaviour.isSaneInsertion(editor, session)) - return; - return { - text: quote + quote, - selection: [1,1] - }; - } else if (token && token.type === "string") { - var rightChar = line.substring(cursor.column, cursor.column + 1); - if (rightChar == quote) { - return { - text: '', - selection: [1, 1] - }; - } - } - } - } - }); - - this.add("string_dquotes", "deletion", function (state, action, editor, session, range) { - var selected = session.doc.getTextRange(range); - if (!range.isMultiLine() && (selected == '"' || selected == "'")) { - var line = session.doc.getLine(range.start.row); - var rightChar = line.substring(range.start.column + 1, range.start.column + 2); - if (rightChar == selected) { - range.end.column++; - return range; - } - } - }); - -}; - -oop.inherits(CstyleBehaviour, Behaviour); - -exports.CstyleBehaviour = CstyleBehaviour; -}); - -ace.define('ace/mode/folding/cstyle', ['require', 'exports', 'module' , 'ace/lib/oop', 'ace/range', 'ace/mode/folding/fold_mode'], function(require, exports, module) { - - -var oop = require("../../lib/oop"); -var Range = require("../../range").Range; -var BaseFoldMode = require("./fold_mode").FoldMode; - -var FoldMode = exports.FoldMode = function(commentRegex) { - if (commentRegex) { - this.foldingStartMarker = new RegExp( - this.foldingStartMarker.source.replace(/\|[^|]*?$/, "|" + commentRegex.start) - ); - this.foldingStopMarker = new RegExp( - this.foldingStopMarker.source.replace(/\|[^|]*?$/, "|" + commentRegex.end) - ); - } -}; -oop.inherits(FoldMode, BaseFoldMode); - -(function() { - - this.foldingStartMarker = /(\{|\[)[^\}\]]*$|^\s*(\/\*)/; - this.foldingStopMarker = /^[^\[\{]*(\}|\])|^[\s\*]*(\*\/)/; - - this.getFoldWidgetRange = function(session, foldStyle, row, forceMultiline) { - var line = session.getLine(row); - var match = line.match(this.foldingStartMarker); - if (match) { - var i = match.index; - - if (match[1]) - return this.openingBracketBlock(session, match[1], row, i); - - var range = session.getCommentFoldRange(row, i + match[0].length, 1); - - if (range && !range.isMultiLine()) { - if (forceMultiline) { - range = this.getSectionRange(session, row); - } else if (foldStyle != "all") - range = null; - } - - return range; - } - - if (foldStyle === "markbegin") - return; - - var match = line.match(this.foldingStopMarker); - if (match) { - var i = match.index + match[0].length; - - if (match[1]) - return this.closingBracketBlock(session, match[1], row, i); - - return session.getCommentFoldRange(row, i, -1); - } - }; - - this.getSectionRange = function(session, row) { - var line = session.getLine(row); - var startIndent = line.search(/\S/); - var startRow = row; - var startColumn = line.length; - row = row + 1; - var endRow = row; - var maxRow = session.getLength(); - while (++row < maxRow) { - line = session.getLine(row); - var indent = line.search(/\S/); - if (indent === -1) - continue; - if (startIndent > indent) - break; - var subRange = this.getFoldWidgetRange(session, "all", row); - - if (subRange) { - if (subRange.start.row <= startRow) { - break; - } else if (subRange.isMultiLine()) { - row = subRange.end.row; - } else if (startIndent == indent) { - break; - } - } - endRow = row; - } - - return new Range(startRow, startColumn, endRow, session.getLine(endRow).length); - }; - -}).call(FoldMode.prototype); - -}); diff --git a/IDE/jsrealb-ide/ace-src-noconflict/mode-groovy.js b/IDE/jsrealb-ide/ace-src-noconflict/mode-groovy.js deleted file mode 100644 index f4155e52..00000000 --- a/IDE/jsrealb-ide/ace-src-noconflict/mode-groovy.js +++ /dev/null @@ -1,1095 +0,0 @@ -ace.define('ace/mode/groovy', ['require', 'exports', 'module' , 'ace/lib/oop', 'ace/mode/javascript', 'ace/tokenizer', 'ace/mode/groovy_highlight_rules'], function(require, exports, module) { - - -var oop = require("../lib/oop"); -var JavaScriptMode = require("./javascript").Mode; -var Tokenizer = require("../tokenizer").Tokenizer; -var GroovyHighlightRules = require("./groovy_highlight_rules").GroovyHighlightRules; - -var Mode = function() { - JavaScriptMode.call(this); - this.HighlightRules = GroovyHighlightRules; -}; -oop.inherits(Mode, JavaScriptMode); - -(function() { - - this.createWorker = function(session) { - return null; - }; - - this.$id = "ace/mode/groovy"; -}).call(Mode.prototype); - -exports.Mode = Mode; -}); - -ace.define('ace/mode/javascript', ['require', 'exports', 'module' , 'ace/lib/oop', 'ace/mode/text', 'ace/tokenizer', 'ace/mode/javascript_highlight_rules', 'ace/mode/matching_brace_outdent', 'ace/range', 'ace/worker/worker_client', 'ace/mode/behaviour/cstyle', 'ace/mode/folding/cstyle'], function(require, exports, module) { - - -var oop = require("../lib/oop"); -var TextMode = require("./text").Mode; -var Tokenizer = require("../tokenizer").Tokenizer; -var JavaScriptHighlightRules = require("./javascript_highlight_rules").JavaScriptHighlightRules; -var MatchingBraceOutdent = require("./matching_brace_outdent").MatchingBraceOutdent; -var Range = require("../range").Range; -var WorkerClient = require("../worker/worker_client").WorkerClient; -var CstyleBehaviour = require("./behaviour/cstyle").CstyleBehaviour; -var CStyleFoldMode = require("./folding/cstyle").FoldMode; - -var Mode = function() { - this.HighlightRules = JavaScriptHighlightRules; - - this.$outdent = new MatchingBraceOutdent(); - this.$behaviour = new CstyleBehaviour(); - this.foldingRules = new CStyleFoldMode(); -}; -oop.inherits(Mode, TextMode); - -(function() { - - this.lineCommentStart = "//"; - this.blockComment = {start: "/*", end: "*/"}; - - this.getNextLineIndent = function(state, line, tab) { - var indent = this.$getIndent(line); - - var tokenizedLine = this.getTokenizer().getLineTokens(line, state); - var tokens = tokenizedLine.tokens; - var endState = tokenizedLine.state; - - if (tokens.length && tokens[tokens.length-1].type == "comment") { - return indent; - } - - if (state == "start" || state == "no_regex") { - var match = line.match(/^.*(?:\bcase\b.*\:|[\{\(\[])\s*$/); - if (match) { - indent += tab; - } - } else if (state == "doc-start") { - if (endState == "start" || endState == "no_regex") { - return ""; - } - var match = line.match(/^\s*(\/?)\*/); - if (match) { - if (match[1]) { - indent += " "; - } - indent += "* "; - } - } - - return indent; - }; - - this.checkOutdent = function(state, line, input) { - return this.$outdent.checkOutdent(line, input); - }; - - this.autoOutdent = function(state, doc, row) { - this.$outdent.autoOutdent(doc, row); - }; - - this.createWorker = function(session) { - var worker = new WorkerClient(["ace"], "ace/mode/javascript_worker", "JavaScriptWorker"); - worker.attachToDocument(session.getDocument()); - - worker.on("jslint", function(results) { - session.setAnnotations(results.data); - }); - - worker.on("terminate", function() { - session.clearAnnotations(); - }); - - return worker; - }; - - this.$id = "ace/mode/javascript"; -}).call(Mode.prototype); - -exports.Mode = Mode; -}); - -ace.define('ace/mode/javascript_highlight_rules', ['require', 'exports', 'module' , 'ace/lib/oop', 'ace/mode/doc_comment_highlight_rules', 'ace/mode/text_highlight_rules'], function(require, exports, module) { - - -var oop = require("../lib/oop"); -var DocCommentHighlightRules = require("./doc_comment_highlight_rules").DocCommentHighlightRules; -var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; - -var JavaScriptHighlightRules = function() { - var keywordMapper = this.createKeywordMapper({ - "variable.language": - "Array|Boolean|Date|Function|Iterator|Number|Object|RegExp|String|Proxy|" + // Constructors - "Namespace|QName|XML|XMLList|" + // E4X - "ArrayBuffer|Float32Array|Float64Array|Int16Array|Int32Array|Int8Array|" + - "Uint16Array|Uint32Array|Uint8Array|Uint8ClampedArray|" + - "Error|EvalError|InternalError|RangeError|ReferenceError|StopIteration|" + // Errors - "SyntaxError|TypeError|URIError|" + - "decodeURI|decodeURIComponent|encodeURI|encodeURIComponent|eval|isFinite|" + // Non-constructor functions - "isNaN|parseFloat|parseInt|" + - "JSON|Math|" + // Other - "this|arguments|prototype|window|document" , // Pseudo - "keyword": - "const|yield|import|get|set|" + - "break|case|catch|continue|default|delete|do|else|finally|for|function|" + - "if|in|instanceof|new|return|switch|throw|try|typeof|let|var|while|with|debugger|" + - "__parent__|__count__|escape|unescape|with|__proto__|" + - "class|enum|extends|super|export|implements|private|public|interface|package|protected|static", - "storage.type": - "const|let|var|function", - "constant.language": - "null|Infinity|NaN|undefined", - "support.function": - "alert", - "constant.language.boolean": "true|false" - }, "identifier"); - var kwBeforeRe = "case|do|else|finally|in|instanceof|return|throw|try|typeof|yield|void"; - var identifierRe = "[a-zA-Z\\$_\u00a1-\uffff][a-zA-Z\\d\\$_\u00a1-\uffff]*\\b"; - - var escapedRe = "\\\\(?:x[0-9a-fA-F]{2}|" + // hex - "u[0-9a-fA-F]{4}|" + // unicode - "[0-2][0-7]{0,2}|" + // oct - "3[0-6][0-7]?|" + // oct - "37[0-7]?|" + // oct - "[4-7][0-7]?|" + //oct - ".)"; - - this.$rules = { - "no_regex" : [ - { - token : "comment", - regex : "\\/\\/", - next : "line_comment" - }, - DocCommentHighlightRules.getStartRule("doc-start"), - { - token : "comment", // multi line comment - regex : /\/\*/, - next : "comment" - }, { - token : "string", - regex : "'(?=.)", - next : "qstring" - }, { - token : "string", - regex : '"(?=.)', - next : "qqstring" - }, { - token : "constant.numeric", // hex - regex : /0[xX][0-9a-fA-F]+\b/ - }, { - token : "constant.numeric", // float - regex : /[+-]?\d+(?:(?:\.\d*)?(?:[eE][+-]?\d+)?)?\b/ - }, { - token : [ - "storage.type", "punctuation.operator", "support.function", - "punctuation.operator", "entity.name.function", "text","keyword.operator" - ], - regex : "(" + identifierRe + ")(\\.)(prototype)(\\.)(" + identifierRe +")(\\s*)(=)", - next: "function_arguments" - }, { - token : [ - "storage.type", "punctuation.operator", "entity.name.function", "text", - "keyword.operator", "text", "storage.type", "text", "paren.lparen" - ], - regex : "(" + identifierRe + ")(\\.)(" + identifierRe +")(\\s*)(=)(\\s*)(function)(\\s*)(\\()", - next: "function_arguments" - }, { - token : [ - "entity.name.function", "text", "keyword.operator", "text", "storage.type", - "text", "paren.lparen" - ], - regex : "(" + identifierRe +")(\\s*)(=)(\\s*)(function)(\\s*)(\\()", - next: "function_arguments" - }, { - token : [ - "storage.type", "punctuation.operator", "entity.name.function", "text", - "keyword.operator", "text", - "storage.type", "text", "entity.name.function", "text", "paren.lparen" - ], - regex : "(" + identifierRe + ")(\\.)(" + identifierRe +")(\\s*)(=)(\\s*)(function)(\\s+)(\\w+)(\\s*)(\\()", - next: "function_arguments" - }, { - token : [ - "storage.type", "text", "entity.name.function", "text", "paren.lparen" - ], - regex : "(function)(\\s+)(" + identifierRe + ")(\\s*)(\\()", - next: "function_arguments" - }, { - token : [ - "entity.name.function", "text", "punctuation.operator", - "text", "storage.type", "text", "paren.lparen" - ], - regex : "(" + identifierRe + ")(\\s*)(:)(\\s*)(function)(\\s*)(\\()", - next: "function_arguments" - }, { - token : [ - "text", "text", "storage.type", "text", "paren.lparen" - ], - regex : "(:)(\\s*)(function)(\\s*)(\\()", - next: "function_arguments" - }, { - token : "keyword", - regex : "(?:" + kwBeforeRe + ")\\b", - next : "start" - }, { - token : ["punctuation.operator", "support.function"], - regex : /(\.)(s(?:h(?:ift|ow(?:Mod(?:elessDialog|alDialog)|Help))|croll(?:X|By(?:Pages|Lines)?|Y|To)?|t(?:op|rike)|i(?:n|zeToContent|debar|gnText)|ort|u(?:p|b(?:str(?:ing)?)?)|pli(?:ce|t)|e(?:nd|t(?:Re(?:sizable|questHeader)|M(?:i(?:nutes|lliseconds)|onth)|Seconds|Ho(?:tKeys|urs)|Year|Cursor|Time(?:out)?|Interval|ZOptions|Date|UTC(?:M(?:i(?:nutes|lliseconds)|onth)|Seconds|Hours|Date|FullYear)|FullYear|Active)|arch)|qrt|lice|avePreferences|mall)|h(?:ome|andleEvent)|navigate|c(?:har(?:CodeAt|At)|o(?:s|n(?:cat|textual|firm)|mpile)|eil|lear(?:Timeout|Interval)?|a(?:ptureEvents|ll)|reate(?:StyleSheet|Popup|EventObject))|t(?:o(?:GMTString|S(?:tring|ource)|U(?:TCString|pperCase)|Lo(?:caleString|werCase))|est|a(?:n|int(?:Enabled)?))|i(?:s(?:NaN|Finite)|ndexOf|talics)|d(?:isableExternalCapture|ump|etachEvent)|u(?:n(?:shift|taint|escape|watch)|pdateCommands)|j(?:oin|avaEnabled)|p(?:o(?:p|w)|ush|lugins.refresh|a(?:ddings|rse(?:Int|Float)?)|r(?:int|ompt|eference))|e(?:scape|nableExternalCapture|val|lementFromPoint|x(?:p|ec(?:Script|Command)?))|valueOf|UTC|queryCommand(?:State|Indeterm|Enabled|Value)|f(?:i(?:nd|le(?:ModifiedDate|Size|CreatedDate|UpdatedDate)|xed)|o(?:nt(?:size|color)|rward)|loor|romCharCode)|watch|l(?:ink|o(?:ad|g)|astIndexOf)|a(?:sin|nchor|cos|t(?:tachEvent|ob|an(?:2)?)|pply|lert|b(?:s|ort))|r(?:ou(?:nd|teEvents)|e(?:size(?:By|To)|calc|turnValue|place|verse|l(?:oad|ease(?:Capture|Events)))|andom)|g(?:o|et(?:ResponseHeader|M(?:i(?:nutes|lliseconds)|onth)|Se(?:conds|lection)|Hours|Year|Time(?:zoneOffset)?|Da(?:y|te)|UTC(?:M(?:i(?:nutes|lliseconds)|onth)|Seconds|Hours|Da(?:y|te)|FullYear)|FullYear|A(?:ttention|llResponseHeaders)))|m(?:in|ove(?:B(?:y|elow)|To(?:Absolute)?|Above)|ergeAttributes|a(?:tch|rgins|x))|b(?:toa|ig|o(?:ld|rderWidths)|link|ack))\b(?=\()/ - }, { - token : ["punctuation.operator", "support.function.dom"], - regex : /(\.)(s(?:ub(?:stringData|mit)|plitText|e(?:t(?:NamedItem|Attribute(?:Node)?)|lect))|has(?:ChildNodes|Feature)|namedItem|c(?:l(?:ick|o(?:se|neNode))|reate(?:C(?:omment|DATASection|aption)|T(?:Head|extNode|Foot)|DocumentFragment|ProcessingInstruction|E(?:ntityReference|lement)|Attribute))|tabIndex|i(?:nsert(?:Row|Before|Cell|Data)|tem)|open|delete(?:Row|C(?:ell|aption)|T(?:Head|Foot)|Data)|focus|write(?:ln)?|a(?:dd|ppend(?:Child|Data))|re(?:set|place(?:Child|Data)|move(?:NamedItem|Child|Attribute(?:Node)?)?)|get(?:NamedItem|Element(?:sBy(?:Name|TagName)|ById)|Attribute(?:Node)?)|blur)\b(?=\()/ - }, { - token : ["punctuation.operator", "support.constant"], - regex : /(\.)(s(?:ystemLanguage|cr(?:ipts|ollbars|een(?:X|Y|Top|Left))|t(?:yle(?:Sheets)?|atus(?:Text|bar)?)|ibling(?:Below|Above)|ource|uffixes|e(?:curity(?:Policy)?|l(?:ection|f)))|h(?:istory|ost(?:name)?|as(?:h|Focus))|y|X(?:MLDocument|SLDocument)|n(?:ext|ame(?:space(?:s|URI)|Prop))|M(?:IN_VALUE|AX_VALUE)|c(?:haracterSet|o(?:n(?:structor|trollers)|okieEnabled|lorDepth|mp(?:onents|lete))|urrent|puClass|l(?:i(?:p(?:boardData)?|entInformation)|osed|asses)|alle(?:e|r)|rypto)|t(?:o(?:olbar|p)|ext(?:Transform|Indent|Decoration|Align)|ags)|SQRT(?:1_2|2)|i(?:n(?:ner(?:Height|Width)|put)|ds|gnoreCase)|zIndex|o(?:scpu|n(?:readystatechange|Line)|uter(?:Height|Width)|p(?:sProfile|ener)|ffscreenBuffering)|NEGATIVE_INFINITY|d(?:i(?:splay|alog(?:Height|Top|Width|Left|Arguments)|rectories)|e(?:scription|fault(?:Status|Ch(?:ecked|arset)|View)))|u(?:ser(?:Profile|Language|Agent)|n(?:iqueID|defined)|pdateInterval)|_content|p(?:ixelDepth|ort|ersonalbar|kcs11|l(?:ugins|atform)|a(?:thname|dding(?:Right|Bottom|Top|Left)|rent(?:Window|Layer)?|ge(?:X(?:Offset)?|Y(?:Offset)?))|r(?:o(?:to(?:col|type)|duct(?:Sub)?|mpter)|e(?:vious|fix)))|e(?:n(?:coding|abledPlugin)|x(?:ternal|pando)|mbeds)|v(?:isibility|endor(?:Sub)?|Linkcolor)|URLUnencoded|P(?:I|OSITIVE_INFINITY)|f(?:ilename|o(?:nt(?:Size|Family|Weight)|rmName)|rame(?:s|Element)|gColor)|E|whiteSpace|l(?:i(?:stStyleType|n(?:eHeight|kColor))|o(?:ca(?:tion(?:bar)?|lName)|wsrc)|e(?:ngth|ft(?:Context)?)|a(?:st(?:M(?:odified|atch)|Index|Paren)|yer(?:s|X)|nguage))|a(?:pp(?:MinorVersion|Name|Co(?:deName|re)|Version)|vail(?:Height|Top|Width|Left)|ll|r(?:ity|guments)|Linkcolor|bove)|r(?:ight(?:Context)?|e(?:sponse(?:XML|Text)|adyState))|global|x|m(?:imeTypes|ultiline|enubar|argin(?:Right|Bottom|Top|Left))|L(?:N(?:10|2)|OG(?:10E|2E))|b(?:o(?:ttom|rder(?:Width|RightWidth|BottomWidth|Style|Color|TopWidth|LeftWidth))|ufferDepth|elow|ackground(?:Color|Image)))\b/ - }, { - token : ["storage.type", "punctuation.operator", "support.function.firebug"], - regex : /(console)(\.)(warn|info|log|error|time|timeEnd|assert)\b/ - }, { - token : keywordMapper, - regex : identifierRe - }, { - token : "keyword.operator", - regex : /--|\+\+|[!$%&*+\-~]|===|==|=|!=|!==|<=|>=|<<=|>>=|>>>=|<>|<|>|!|&&|\|\||\?\:|\*=|%=|\+=|\-=|&=|\^=/, - next : "start" - }, { - token : "punctuation.operator", - regex : /\?|\:|\,|\;|\./, - next : "start" - }, { - token : "paren.lparen", - regex : /[\[({]/, - next : "start" - }, { - token : "paren.rparen", - regex : /[\])}]/ - }, { - token : "keyword.operator", - regex : /\/=?/, - next : "start" - }, { - token: "comment", - regex: /^#!.*$/ - } - ], - "start": [ - DocCommentHighlightRules.getStartRule("doc-start"), - { - token : "comment", // multi line comment - regex : "\\/\\*", - next : "comment_regex_allowed" - }, { - token : "comment", - regex : "\\/\\/", - next : "line_comment_regex_allowed" - }, { - token: "string.regexp", - regex: "\\/", - next: "regex" - }, { - token : "text", - regex : "\\s+|^$", - next : "start" - }, { - token: "empty", - regex: "", - next: "no_regex" - } - ], - "regex": [ - { - token: "regexp.keyword.operator", - regex: "\\\\(?:u[\\da-fA-F]{4}|x[\\da-fA-F]{2}|.)" - }, { - token: "string.regexp", - regex: "/[sxngimy]*", - next: "no_regex" - }, { - token : "invalid", - regex: /\{\d+\b,?\d*\}[+*]|[+*$^?][+*]|[$^][?]|\?{3,}/ - }, { - token : "constant.language.escape", - regex: /\(\?[:=!]|\)|\{\d+\b,?\d*\}|[+*]\?|[()$^+*?.]/ - }, { - token : "constant.language.delimiter", - regex: /\|/ - }, { - token: "constant.language.escape", - regex: /\[\^?/, - next: "regex_character_class" - }, { - token: "empty", - regex: "$", - next: "no_regex" - }, { - defaultToken: "string.regexp" - } - ], - "regex_character_class": [ - { - token: "regexp.keyword.operator", - regex: "\\\\(?:u[\\da-fA-F]{4}|x[\\da-fA-F]{2}|.)" - }, { - token: "constant.language.escape", - regex: "]", - next: "regex" - }, { - token: "constant.language.escape", - regex: "-" - }, { - token: "empty", - regex: "$", - next: "no_regex" - }, { - defaultToken: "string.regexp.charachterclass" - } - ], - "function_arguments": [ - { - token: "variable.parameter", - regex: identifierRe - }, { - token: "punctuation.operator", - regex: "[, ]+" - }, { - token: "punctuation.operator", - regex: "$" - }, { - token: "empty", - regex: "", - next: "no_regex" - } - ], - "comment_regex_allowed" : [ - {token : "comment", regex : "\\*\\/", next : "start"}, - {defaultToken : "comment"} - ], - "comment" : [ - {token : "comment", regex : "\\*\\/", next : "no_regex"}, - {defaultToken : "comment"} - ], - "line_comment_regex_allowed" : [ - {token : "comment", regex : "$|^", next : "start"}, - {defaultToken : "comment"} - ], - "line_comment" : [ - {token : "comment", regex : "$|^", next : "no_regex"}, - {defaultToken : "comment"} - ], - "qqstring" : [ - { - token : "constant.language.escape", - regex : escapedRe - }, { - token : "string", - regex : "\\\\$", - next : "qqstring" - }, { - token : "string", - regex : '"|$', - next : "no_regex" - }, { - defaultToken: "string" - } - ], - "qstring" : [ - { - token : "constant.language.escape", - regex : escapedRe - }, { - token : "string", - regex : "\\\\$", - next : "qstring" - }, { - token : "string", - regex : "'|$", - next : "no_regex" - }, { - defaultToken: "string" - } - ] - }; - - this.embedRules(DocCommentHighlightRules, "doc-", - [ DocCommentHighlightRules.getEndRule("no_regex") ]); -}; - -oop.inherits(JavaScriptHighlightRules, TextHighlightRules); - -exports.JavaScriptHighlightRules = JavaScriptHighlightRules; -}); - -ace.define('ace/mode/doc_comment_highlight_rules', ['require', 'exports', 'module' , 'ace/lib/oop', 'ace/mode/text_highlight_rules'], function(require, exports, module) { - - -var oop = require("../lib/oop"); -var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; - -var DocCommentHighlightRules = function() { - - this.$rules = { - "start" : [ { - token : "comment.doc.tag", - regex : "@[\\w\\d_]+" // TODO: fix email addresses - }, { - token : "comment.doc.tag", - regex : "\\bTODO\\b" - }, { - defaultToken : "comment.doc" - }] - }; -}; - -oop.inherits(DocCommentHighlightRules, TextHighlightRules); - -DocCommentHighlightRules.getStartRule = function(start) { - return { - token : "comment.doc", // doc comment - regex : "\\/\\*(?=\\*)", - next : start - }; -}; - -DocCommentHighlightRules.getEndRule = function (start) { - return { - token : "comment.doc", // closing comment - regex : "\\*\\/", - next : start - }; -}; - - -exports.DocCommentHighlightRules = DocCommentHighlightRules; - -}); - -ace.define('ace/mode/matching_brace_outdent', ['require', 'exports', 'module' , 'ace/range'], function(require, exports, module) { - - -var Range = require("../range").Range; - -var MatchingBraceOutdent = function() {}; - -(function() { - - this.checkOutdent = function(line, input) { - if (! /^\s+$/.test(line)) - return false; - - return /^\s*\}/.test(input); - }; - - this.autoOutdent = function(doc, row) { - var line = doc.getLine(row); - var match = line.match(/^(\s*\})/); - - if (!match) return 0; - - var column = match[1].length; - var openBracePos = doc.findMatchingBracket({row: row, column: column}); - - if (!openBracePos || openBracePos.row == row) return 0; - - var indent = this.$getIndent(doc.getLine(openBracePos.row)); - doc.replace(new Range(row, 0, row, column-1), indent); - }; - - this.$getIndent = function(line) { - return line.match(/^\s*/)[0]; - }; - -}).call(MatchingBraceOutdent.prototype); - -exports.MatchingBraceOutdent = MatchingBraceOutdent; -}); - -ace.define('ace/mode/behaviour/cstyle', ['require', 'exports', 'module' , 'ace/lib/oop', 'ace/mode/behaviour', 'ace/token_iterator', 'ace/lib/lang'], function(require, exports, module) { - - -var oop = require("../../lib/oop"); -var Behaviour = require("../behaviour").Behaviour; -var TokenIterator = require("../../token_iterator").TokenIterator; -var lang = require("../../lib/lang"); - -var SAFE_INSERT_IN_TOKENS = - ["text", "paren.rparen", "punctuation.operator"]; -var SAFE_INSERT_BEFORE_TOKENS = - ["text", "paren.rparen", "punctuation.operator", "comment"]; - - -var autoInsertedBrackets = 0; -var autoInsertedRow = -1; -var autoInsertedLineEnd = ""; -var maybeInsertedBrackets = 0; -var maybeInsertedRow = -1; -var maybeInsertedLineStart = ""; -var maybeInsertedLineEnd = ""; - -var CstyleBehaviour = function () { - - CstyleBehaviour.isSaneInsertion = function(editor, session) { - var cursor = editor.getCursorPosition(); - var iterator = new TokenIterator(session, cursor.row, cursor.column); - if (!this.$matchTokenType(iterator.getCurrentToken() || "text", SAFE_INSERT_IN_TOKENS)) { - var iterator2 = new TokenIterator(session, cursor.row, cursor.column + 1); - if (!this.$matchTokenType(iterator2.getCurrentToken() || "text", SAFE_INSERT_IN_TOKENS)) - return false; - } - iterator.stepForward(); - return iterator.getCurrentTokenRow() !== cursor.row || - this.$matchTokenType(iterator.getCurrentToken() || "text", SAFE_INSERT_BEFORE_TOKENS); - }; - - CstyleBehaviour.$matchTokenType = function(token, types) { - return types.indexOf(token.type || token) > -1; - }; - - CstyleBehaviour.recordAutoInsert = function(editor, session, bracket) { - var cursor = editor.getCursorPosition(); - var line = session.doc.getLine(cursor.row); - if (!this.isAutoInsertedClosing(cursor, line, autoInsertedLineEnd[0])) - autoInsertedBrackets = 0; - autoInsertedRow = cursor.row; - autoInsertedLineEnd = bracket + line.substr(cursor.column); - autoInsertedBrackets++; - }; - - CstyleBehaviour.recordMaybeInsert = function(editor, session, bracket) { - var cursor = editor.getCursorPosition(); - var line = session.doc.getLine(cursor.row); - if (!this.isMaybeInsertedClosing(cursor, line)) - maybeInsertedBrackets = 0; - maybeInsertedRow = cursor.row; - maybeInsertedLineStart = line.substr(0, cursor.column) + bracket; - maybeInsertedLineEnd = line.substr(cursor.column); - maybeInsertedBrackets++; - }; - - CstyleBehaviour.isAutoInsertedClosing = function(cursor, line, bracket) { - return autoInsertedBrackets > 0 && - cursor.row === autoInsertedRow && - bracket === autoInsertedLineEnd[0] && - line.substr(cursor.column) === autoInsertedLineEnd; - }; - - CstyleBehaviour.isMaybeInsertedClosing = function(cursor, line) { - return maybeInsertedBrackets > 0 && - cursor.row === maybeInsertedRow && - line.substr(cursor.column) === maybeInsertedLineEnd && - line.substr(0, cursor.column) == maybeInsertedLineStart; - }; - - CstyleBehaviour.popAutoInsertedClosing = function() { - autoInsertedLineEnd = autoInsertedLineEnd.substr(1); - autoInsertedBrackets--; - }; - - CstyleBehaviour.clearMaybeInsertedClosing = function() { - maybeInsertedBrackets = 0; - maybeInsertedRow = -1; - }; - - this.add("braces", "insertion", function (state, action, editor, session, text) { - var cursor = editor.getCursorPosition(); - var line = session.doc.getLine(cursor.row); - if (text == '{') { - var selection = editor.getSelectionRange(); - var selected = session.doc.getTextRange(selection); - if (selected !== "" && selected !== "{" && editor.getWrapBehavioursEnabled()) { - return { - text: '{' + selected + '}', - selection: false - }; - } else if (CstyleBehaviour.isSaneInsertion(editor, session)) { - if (/[\]\}\)]/.test(line[cursor.column]) || editor.inMultiSelectMode) { - CstyleBehaviour.recordAutoInsert(editor, session, "}"); - return { - text: '{}', - selection: [1, 1] - }; - } else { - CstyleBehaviour.recordMaybeInsert(editor, session, "{"); - return { - text: '{', - selection: [1, 1] - }; - } - } - } else if (text == '}') { - var rightChar = line.substring(cursor.column, cursor.column + 1); - if (rightChar == '}') { - var matching = session.$findOpeningBracket('}', {column: cursor.column + 1, row: cursor.row}); - if (matching !== null && CstyleBehaviour.isAutoInsertedClosing(cursor, line, text)) { - CstyleBehaviour.popAutoInsertedClosing(); - return { - text: '', - selection: [1, 1] - }; - } - } - } else if (text == "\n" || text == "\r\n") { - var closing = ""; - if (CstyleBehaviour.isMaybeInsertedClosing(cursor, line)) { - closing = lang.stringRepeat("}", maybeInsertedBrackets); - CstyleBehaviour.clearMaybeInsertedClosing(); - } - var rightChar = line.substring(cursor.column, cursor.column + 1); - if (rightChar === '}') { - var openBracePos = session.findMatchingBracket({row: cursor.row, column: cursor.column+1}, '}'); - if (!openBracePos) - return null; - var next_indent = this.$getIndent(session.getLine(openBracePos.row)); - } else if (closing) { - var next_indent = this.$getIndent(line); - } else { - return; - } - var indent = next_indent + session.getTabString(); - - return { - text: '\n' + indent + '\n' + next_indent + closing, - selection: [1, indent.length, 1, indent.length] - }; - } else { - CstyleBehaviour.clearMaybeInsertedClosing(); - } - }); - - this.add("braces", "deletion", function (state, action, editor, session, range) { - var selected = session.doc.getTextRange(range); - if (!range.isMultiLine() && selected == '{') { - var line = session.doc.getLine(range.start.row); - var rightChar = line.substring(range.end.column, range.end.column + 1); - if (rightChar == '}') { - range.end.column++; - return range; - } else { - maybeInsertedBrackets--; - } - } - }); - - this.add("parens", "insertion", function (state, action, editor, session, text) { - if (text == '(') { - var selection = editor.getSelectionRange(); - var selected = session.doc.getTextRange(selection); - if (selected !== "" && editor.getWrapBehavioursEnabled()) { - return { - text: '(' + selected + ')', - selection: false - }; - } else if (CstyleBehaviour.isSaneInsertion(editor, session)) { - CstyleBehaviour.recordAutoInsert(editor, session, ")"); - return { - text: '()', - selection: [1, 1] - }; - } - } else if (text == ')') { - var cursor = editor.getCursorPosition(); - var line = session.doc.getLine(cursor.row); - var rightChar = line.substring(cursor.column, cursor.column + 1); - if (rightChar == ')') { - var matching = session.$findOpeningBracket(')', {column: cursor.column + 1, row: cursor.row}); - if (matching !== null && CstyleBehaviour.isAutoInsertedClosing(cursor, line, text)) { - CstyleBehaviour.popAutoInsertedClosing(); - return { - text: '', - selection: [1, 1] - }; - } - } - } - }); - - this.add("parens", "deletion", function (state, action, editor, session, range) { - var selected = session.doc.getTextRange(range); - if (!range.isMultiLine() && selected == '(') { - var line = session.doc.getLine(range.start.row); - var rightChar = line.substring(range.start.column + 1, range.start.column + 2); - if (rightChar == ')') { - range.end.column++; - return range; - } - } - }); - - this.add("brackets", "insertion", function (state, action, editor, session, text) { - if (text == '[') { - var selection = editor.getSelectionRange(); - var selected = session.doc.getTextRange(selection); - if (selected !== "" && editor.getWrapBehavioursEnabled()) { - return { - text: '[' + selected + ']', - selection: false - }; - } else if (CstyleBehaviour.isSaneInsertion(editor, session)) { - CstyleBehaviour.recordAutoInsert(editor, session, "]"); - return { - text: '[]', - selection: [1, 1] - }; - } - } else if (text == ']') { - var cursor = editor.getCursorPosition(); - var line = session.doc.getLine(cursor.row); - var rightChar = line.substring(cursor.column, cursor.column + 1); - if (rightChar == ']') { - var matching = session.$findOpeningBracket(']', {column: cursor.column + 1, row: cursor.row}); - if (matching !== null && CstyleBehaviour.isAutoInsertedClosing(cursor, line, text)) { - CstyleBehaviour.popAutoInsertedClosing(); - return { - text: '', - selection: [1, 1] - }; - } - } - } - }); - - this.add("brackets", "deletion", function (state, action, editor, session, range) { - var selected = session.doc.getTextRange(range); - if (!range.isMultiLine() && selected == '[') { - var line = session.doc.getLine(range.start.row); - var rightChar = line.substring(range.start.column + 1, range.start.column + 2); - if (rightChar == ']') { - range.end.column++; - return range; - } - } - }); - - this.add("string_dquotes", "insertion", function (state, action, editor, session, text) { - if (text == '"' || text == "'") { - var quote = text; - var selection = editor.getSelectionRange(); - var selected = session.doc.getTextRange(selection); - if (selected !== "" && selected !== "'" && selected != '"' && editor.getWrapBehavioursEnabled()) { - return { - text: quote + selected + quote, - selection: false - }; - } else { - var cursor = editor.getCursorPosition(); - var line = session.doc.getLine(cursor.row); - var leftChar = line.substring(cursor.column-1, cursor.column); - if (leftChar == '\\') { - return null; - } - var tokens = session.getTokens(selection.start.row); - var col = 0, token; - var quotepos = -1; // Track whether we're inside an open quote. - - for (var x = 0; x < tokens.length; x++) { - token = tokens[x]; - if (token.type == "string") { - quotepos = -1; - } else if (quotepos < 0) { - quotepos = token.value.indexOf(quote); - } - if ((token.value.length + col) > selection.start.column) { - break; - } - col += tokens[x].value.length; - } - if (!token || (quotepos < 0 && token.type !== "comment" && (token.type !== "string" || ((selection.start.column !== token.value.length+col-1) && token.value.lastIndexOf(quote) === token.value.length-1)))) { - if (!CstyleBehaviour.isSaneInsertion(editor, session)) - return; - return { - text: quote + quote, - selection: [1,1] - }; - } else if (token && token.type === "string") { - var rightChar = line.substring(cursor.column, cursor.column + 1); - if (rightChar == quote) { - return { - text: '', - selection: [1, 1] - }; - } - } - } - } - }); - - this.add("string_dquotes", "deletion", function (state, action, editor, session, range) { - var selected = session.doc.getTextRange(range); - if (!range.isMultiLine() && (selected == '"' || selected == "'")) { - var line = session.doc.getLine(range.start.row); - var rightChar = line.substring(range.start.column + 1, range.start.column + 2); - if (rightChar == selected) { - range.end.column++; - return range; - } - } - }); - -}; - -oop.inherits(CstyleBehaviour, Behaviour); - -exports.CstyleBehaviour = CstyleBehaviour; -}); - -ace.define('ace/mode/folding/cstyle', ['require', 'exports', 'module' , 'ace/lib/oop', 'ace/range', 'ace/mode/folding/fold_mode'], function(require, exports, module) { - - -var oop = require("../../lib/oop"); -var Range = require("../../range").Range; -var BaseFoldMode = require("./fold_mode").FoldMode; - -var FoldMode = exports.FoldMode = function(commentRegex) { - if (commentRegex) { - this.foldingStartMarker = new RegExp( - this.foldingStartMarker.source.replace(/\|[^|]*?$/, "|" + commentRegex.start) - ); - this.foldingStopMarker = new RegExp( - this.foldingStopMarker.source.replace(/\|[^|]*?$/, "|" + commentRegex.end) - ); - } -}; -oop.inherits(FoldMode, BaseFoldMode); - -(function() { - - this.foldingStartMarker = /(\{|\[)[^\}\]]*$|^\s*(\/\*)/; - this.foldingStopMarker = /^[^\[\{]*(\}|\])|^[\s\*]*(\*\/)/; - - this.getFoldWidgetRange = function(session, foldStyle, row, forceMultiline) { - var line = session.getLine(row); - var match = line.match(this.foldingStartMarker); - if (match) { - var i = match.index; - - if (match[1]) - return this.openingBracketBlock(session, match[1], row, i); - - var range = session.getCommentFoldRange(row, i + match[0].length, 1); - - if (range && !range.isMultiLine()) { - if (forceMultiline) { - range = this.getSectionRange(session, row); - } else if (foldStyle != "all") - range = null; - } - - return range; - } - - if (foldStyle === "markbegin") - return; - - var match = line.match(this.foldingStopMarker); - if (match) { - var i = match.index + match[0].length; - - if (match[1]) - return this.closingBracketBlock(session, match[1], row, i); - - return session.getCommentFoldRange(row, i, -1); - } - }; - - this.getSectionRange = function(session, row) { - var line = session.getLine(row); - var startIndent = line.search(/\S/); - var startRow = row; - var startColumn = line.length; - row = row + 1; - var endRow = row; - var maxRow = session.getLength(); - while (++row < maxRow) { - line = session.getLine(row); - var indent = line.search(/\S/); - if (indent === -1) - continue; - if (startIndent > indent) - break; - var subRange = this.getFoldWidgetRange(session, "all", row); - - if (subRange) { - if (subRange.start.row <= startRow) { - break; - } else if (subRange.isMultiLine()) { - row = subRange.end.row; - } else if (startIndent == indent) { - break; - } - } - endRow = row; - } - - return new Range(startRow, startColumn, endRow, session.getLine(endRow).length); - }; - -}).call(FoldMode.prototype); - -}); -ace.define('ace/mode/groovy_highlight_rules', ['require', 'exports', 'module' , 'ace/lib/oop', 'ace/mode/doc_comment_highlight_rules', 'ace/mode/text_highlight_rules'], function(require, exports, module) { - - -var oop = require("../lib/oop"); -var DocCommentHighlightRules = require("./doc_comment_highlight_rules").DocCommentHighlightRules; -var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; - -var GroovyHighlightRules = function() { - - var keywords = ( - "assert|with|abstract|continue|for|new|switch|" + - "assert|default|goto|package|synchronized|" + - "boolean|do|if|private|this|" + - "break|double|implements|protected|throw|" + - "byte|else|import|public|throws|" + - "case|enum|instanceof|return|transient|" + - "catch|extends|int|short|try|" + - "char|final|interface|static|void|" + - "class|finally|long|strictfp|volatile|" + - "def|float|native|super|while" - ); - - var buildinConstants = ( - "null|Infinity|NaN|undefined" - ); - - var langClasses = ( - "AbstractMethodError|AssertionError|ClassCircularityError|"+ - "ClassFormatError|Deprecated|EnumConstantNotPresentException|"+ - "ExceptionInInitializerError|IllegalAccessError|"+ - "IllegalThreadStateException|InstantiationError|InternalError|"+ - "NegativeArraySizeException|NoSuchFieldError|Override|Process|"+ - "ProcessBuilder|SecurityManager|StringIndexOutOfBoundsException|"+ - "SuppressWarnings|TypeNotPresentException|UnknownError|"+ - "UnsatisfiedLinkError|UnsupportedClassVersionError|VerifyError|"+ - "InstantiationException|IndexOutOfBoundsException|"+ - "ArrayIndexOutOfBoundsException|CloneNotSupportedException|"+ - "NoSuchFieldException|IllegalArgumentException|NumberFormatException|"+ - "SecurityException|Void|InheritableThreadLocal|IllegalStateException|"+ - "InterruptedException|NoSuchMethodException|IllegalAccessException|"+ - "UnsupportedOperationException|Enum|StrictMath|Package|Compiler|"+ - "Readable|Runtime|StringBuilder|Math|IncompatibleClassChangeError|"+ - "NoSuchMethodError|ThreadLocal|RuntimePermission|ArithmeticException|"+ - "NullPointerException|Long|Integer|Short|Byte|Double|Number|Float|"+ - "Character|Boolean|StackTraceElement|Appendable|StringBuffer|"+ - "Iterable|ThreadGroup|Runnable|Thread|IllegalMonitorStateException|"+ - "StackOverflowError|OutOfMemoryError|VirtualMachineError|"+ - "ArrayStoreException|ClassCastException|LinkageError|"+ - "NoClassDefFoundError|ClassNotFoundException|RuntimeException|"+ - "Exception|ThreadDeath|Error|Throwable|System|ClassLoader|"+ - "Cloneable|Class|CharSequence|Comparable|String|Object" - ); - - var keywordMapper = this.createKeywordMapper({ - "variable.language": "this", - "keyword": keywords, - "support.function": langClasses, - "constant.language": buildinConstants - }, "identifier"); - - this.$rules = { - "start" : [ - { - token : "comment", - regex : "\\/\\/.*$" - }, - DocCommentHighlightRules.getStartRule("doc-start"), - { - token : "comment", // multi line comment - regex : "\\/\\*", - next : "comment" - }, { - token : "string.regexp", - regex : "[/](?:(?:\\[(?:\\\\]|[^\\]])+\\])|(?:\\\\/|[^\\]/]))*[/]\\w*\\s*(?=[).,;]|$)" - }, { - token : "string", - regex : '"""', - next : "qqstring" - }, { - token : "string", - regex : "'''", - next : "qstring" - }, { - token : "string", // single line - regex : '["](?:(?:\\\\.)|(?:[^"\\\\]))*?["]' - }, { - token : "string", // single line - regex : "['](?:(?:\\\\.)|(?:[^'\\\\]))*?[']" - }, { - token : "constant.numeric", // hex - regex : "0[xX][0-9a-fA-F]+\\b" - }, { - token : "constant.numeric", // float - regex : "[+-]?\\d+(?:(?:\\.\\d*)?(?:[eE][+-]?\\d+)?)?\\b" - }, { - token : "constant.language.boolean", - regex : "(?:true|false)\\b" - }, { - token : keywordMapper, - regex : "[a-zA-Z_$][a-zA-Z0-9_$]*\\b" - }, { - token : "keyword.operator", - regex : "\\?:|\\?\\.|\\*\\.|<=>|=~|==~|\\.@|\\*\\.@|\\.&|as|in|is|!|\\$|%|&|\\*|\\-\\-|\\-|\\+\\+|\\+|~|===|==|=|!=|!==|<=|>=|<<=|>>=|>>>=|<>|<|>|!|&&|\\|\\||\\?\\:|\\*=|%=|\\+=|\\-=|&=|\\^=|\\b(?:in|instanceof|new|delete|typeof|void)" - }, { - token : "lparen", - regex : "[[({]" - }, { - token : "rparen", - regex : "[\\])}]" - }, { - token : "text", - regex : "\\s+" - } - ], - "comment" : [ - { - token : "comment", // closing comment - regex : ".*?\\*\\/", - next : "start" - }, { - token : "comment", // comment spanning whole line - regex : ".+" - } - ], - "qqstring" : [ - { - token : "constant.language.escape", - regex : /\\(?:u[0-9A-Fa-f]{4}|.|$)/ - }, { - token : "constant.language.escape", - regex : /\$[\w\d]+/ - }, { - token : "constant.language.escape", - regex : /\$\{[^"\}]+\}?/ - }, { - token : "string", - regex : '"{3,5}', - next : "start" - }, { - token : "string", - regex : '.+?' - } - ], - "qstring" : [ - { - token : "constant.language.escape", - regex : /\\(?:u[0-9A-Fa-f]{4}|.|$)/ - }, { - token : "string", - regex : "'{3,5}", - next : "start" - }, { - token : "string", - regex : ".+?" - } - ] - }; - - this.embedRules(DocCommentHighlightRules, "doc-", - [ DocCommentHighlightRules.getEndRule("start") ]); -}; - -oop.inherits(GroovyHighlightRules, TextHighlightRules); - -exports.GroovyHighlightRules = GroovyHighlightRules; -}); diff --git a/IDE/jsrealb-ide/ace-src-noconflict/mode-haml.js b/IDE/jsrealb-ide/ace-src-noconflict/mode-haml.js deleted file mode 100644 index 8d4a2f0f..00000000 --- a/IDE/jsrealb-ide/ace-src-noconflict/mode-haml.js +++ /dev/null @@ -1,498 +0,0 @@ -/* ***** BEGIN LICENSE BLOCK ***** - * Distributed under the BSD license: - * - * Copyright (c) 2012, Ajax.org B.V. - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are met: - * * Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * * Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * * Neither the name of Ajax.org B.V. nor the - * names of its contributors may be used to endorse or promote products - * derived from this software without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND - * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED - * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE - * DISCLAIMED. IN NO EVENT SHALL AJAX.ORG B.V. BE LIABLE FOR ANY - * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES - * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; - * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND - * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - * - * - * Contributor(s): - * - * Garen J. Torikian < gjtorikian AT gmail DOT com > - * - * ***** END LICENSE BLOCK ***** */ - -ace.define('ace/mode/haml', ['require', 'exports', 'module' , 'ace/lib/oop', 'ace/mode/text', 'ace/tokenizer', 'ace/mode/haml_highlight_rules', 'ace/mode/folding/coffee'], function(require, exports, module) { - - -var oop = require("../lib/oop"); -var TextMode = require("./text").Mode; -var Tokenizer = require("../tokenizer").Tokenizer; -var HamlHighlightRules = require("./haml_highlight_rules").HamlHighlightRules; -var FoldMode = require("./folding/coffee").FoldMode; - -var Mode = function() { - this.HighlightRules = HamlHighlightRules; - this.foldingRules = new FoldMode(); -}; -oop.inherits(Mode, TextMode); - -(function() { - this.lineCommentStart = ["//", "#"]; - - this.$id = "ace/mode/haml"; -}).call(Mode.prototype); - -exports.Mode = Mode; -});ace.define('ace/mode/haml_highlight_rules', ['require', 'exports', 'module' , 'ace/lib/oop', 'ace/mode/text_highlight_rules', 'ace/mode/ruby_highlight_rules'], function(require, exports, module) { - - -var oop = require("../lib/oop"); -var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; -var RubyExports = require("./ruby_highlight_rules"); -var RubyHighlightRules = RubyExports.RubyHighlightRules; - -var HamlHighlightRules = function() { - - this.$rules = - { - "start": [ - { - token : "punctuation.section.comment", - regex : /^\s*\/.*/ - }, - { - token : "punctuation.section.comment", - regex : /^\s*#.*/ - }, - { - token: "string.quoted.double", - regex: "==.+?==" - }, - { - token: "keyword.other.doctype", - regex: "^!!!\\s*(?:[a-zA-Z0-9-_]+)?" - }, - RubyExports.qString, - RubyExports.qqString, - RubyExports.tString, - { - token: ["entity.name.tag.haml"], - regex: /^\s*%[\w:]+/, - next: "tag_single" - }, - { - token: [ "meta.escape.haml" ], - regex: "^\\s*\\\\." - }, - RubyExports.constantNumericHex, - RubyExports.constantNumericFloat, - - RubyExports.constantOtherSymbol, - { - token: "text", - regex: "=|-|~", - next: "embedded_ruby" - } - ], - "tag_single": [ - { - token: "entity.other.attribute-name.class.haml", - regex: "\\.[\\w-]+" - }, - { - token: "entity.other.attribute-name.id.haml", - regex: "#[\\w-]+" - }, - { - token: "punctuation.section", - regex: "\\{", - next: "section" - }, - - RubyExports.constantOtherSymbol, - - { - token: "text", - regex: /\s/, - next: "start" - }, - { - token: "empty", - regex: "$|(?!\\.|#|\\{|\\[|=|-|~|\\/)", - next: "start" - } - ], - "section": [ - RubyExports.constantOtherSymbol, - - RubyExports.qString, - RubyExports.qqString, - RubyExports.tString, - - RubyExports.constantNumericHex, - RubyExports.constantNumericFloat, - { - token: "punctuation.section", - regex: "\\}", - next: "start" - } - ], - "embedded_ruby": [ - RubyExports.constantNumericHex, - RubyExports.constantNumericFloat, - { - token : "support.class", // class name - regex : "[A-Z][a-zA-Z_\\d]+" - }, - { - token : new RubyHighlightRules().getKeywords(), - regex : "[a-zA-Z_$][a-zA-Z0-9_$]*\\b" - }, - { - token : ["keyword", "text", "text"], - regex : "(?:do|\\{)(?: \\|[^|]+\\|)?$", - next : "start" - }, - { - token : ["text"], - regex : "^$", - next : "start" - }, - { - token : ["text"], - regex : "^(?!.*\\|\\s*$)", - next : "start" - } - ] -} - -}; - -oop.inherits(HamlHighlightRules, TextHighlightRules); - -exports.HamlHighlightRules = HamlHighlightRules; -}); - -ace.define('ace/mode/ruby_highlight_rules', ['require', 'exports', 'module' , 'ace/lib/oop', 'ace/mode/text_highlight_rules'], function(require, exports, module) { - - -var oop = require("../lib/oop"); -var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; -var constantOtherSymbol = exports.constantOtherSymbol = { - token : "constant.other.symbol.ruby", // symbol - regex : "[:](?:[A-Za-z_]|[@$](?=[a-zA-Z0-9_]))[a-zA-Z0-9_]*[!=?]?" -}; - -var qString = exports.qString = { - token : "string", // single line - regex : "['](?:(?:\\\\.)|(?:[^'\\\\]))*?[']" -}; - -var qqString = exports.qqString = { - token : "string", // single line - regex : '["](?:(?:\\\\.)|(?:[^"\\\\]))*?["]' -}; - -var tString = exports.tString = { - token : "string", // backtick string - regex : "[`](?:(?:\\\\.)|(?:[^'\\\\]))*?[`]" -}; - -var constantNumericHex = exports.constantNumericHex = { - token : "constant.numeric", // hex - regex : "0[xX][0-9a-fA-F](?:[0-9a-fA-F]|_(?=[0-9a-fA-F]))*\\b" -}; - -var constantNumericFloat = exports.constantNumericFloat = { - token : "constant.numeric", // float - regex : "[+-]?\\d(?:\\d|_(?=\\d))*(?:(?:\\.\\d(?:\\d|_(?=\\d))*)?(?:[eE][+-]?\\d+)?)?\\b" -}; - -var RubyHighlightRules = function() { - - var builtinFunctions = ( - "abort|Array|assert|assert_equal|assert_not_equal|assert_same|assert_not_same|" + - "assert_nil|assert_not_nil|assert_match|assert_no_match|assert_in_delta|assert_throws|" + - "assert_raise|assert_nothing_raised|assert_instance_of|assert_kind_of|assert_respond_to|" + - "assert_operator|assert_send|assert_difference|assert_no_difference|assert_recognizes|" + - "assert_generates|assert_response|assert_redirected_to|assert_template|assert_select|" + - "assert_select_email|assert_select_rjs|assert_select_encoded|css_select|at_exit|" + - "attr|attr_writer|attr_reader|attr_accessor|attr_accessible|autoload|binding|block_given?|callcc|" + - "caller|catch|chomp|chomp!|chop|chop!|defined?|delete_via_redirect|eval|exec|exit|" + - "exit!|fail|Float|flunk|follow_redirect!|fork|form_for|form_tag|format|gets|global_variables|gsub|" + - "gsub!|get_via_redirect|host!|https?|https!|include|Integer|lambda|link_to|" + - "link_to_unless_current|link_to_function|link_to_remote|load|local_variables|loop|open|open_session|" + - "p|print|printf|proc|putc|puts|post_via_redirect|put_via_redirect|raise|rand|" + - "raw|readline|readlines|redirect?|request_via_redirect|require|scan|select|" + - "set_trace_func|sleep|split|sprintf|srand|String|stylesheet_link_tag|syscall|system|sub|sub!|test|" + - "throw|trace_var|trap|untrace_var|atan2|cos|exp|frexp|ldexp|log|log10|sin|sqrt|tan|" + - "render|javascript_include_tag|csrf_meta_tag|label_tag|text_field_tag|submit_tag|check_box_tag|" + - "content_tag|radio_button_tag|text_area_tag|password_field_tag|hidden_field_tag|" + - "fields_for|select_tag|options_for_select|options_from_collection_for_select|collection_select|" + - "time_zone_select|select_date|select_time|select_datetime|date_select|time_select|datetime_select|" + - "select_year|select_month|select_day|select_hour|select_minute|select_second|file_field_tag|" + - "file_field|respond_to|skip_before_filter|around_filter|after_filter|verify|" + - "protect_from_forgery|rescue_from|helper_method|redirect_to|before_filter|" + - "send_data|send_file|validates_presence_of|validates_uniqueness_of|validates_length_of|" + - "validates_format_of|validates_acceptance_of|validates_associated|validates_exclusion_of|" + - "validates_inclusion_of|validates_numericality_of|validates_with|validates_each|" + - "authenticate_or_request_with_http_basic|authenticate_or_request_with_http_digest|" + - "filter_parameter_logging|match|get|post|resources|redirect|scope|assert_routing|" + - "translate|localize|extract_locale_from_tld|caches_page|expire_page|caches_action|expire_action|" + - "cache|expire_fragment|expire_cache_for|observe|cache_sweeper|" + - "has_many|has_one|belongs_to|has_and_belongs_to_many" - ); - - var keywords = ( - "alias|and|BEGIN|begin|break|case|class|def|defined|do|else|elsif|END|end|ensure|" + - "__FILE__|finally|for|gem|if|in|__LINE__|module|next|not|or|private|protected|public|" + - "redo|rescue|retry|return|super|then|undef|unless|until|when|while|yield" - ); - - var buildinConstants = ( - "true|TRUE|false|FALSE|nil|NIL|ARGF|ARGV|DATA|ENV|RUBY_PLATFORM|RUBY_RELEASE_DATE|" + - "RUBY_VERSION|STDERR|STDIN|STDOUT|TOPLEVEL_BINDING" - ); - - var builtinVariables = ( - "\$DEBUG|\$defout|\$FILENAME|\$LOAD_PATH|\$SAFE|\$stdin|\$stdout|\$stderr|\$VERBOSE|" + - "$!|root_url|flash|session|cookies|params|request|response|logger|self" - ); - - var keywordMapper = this.$keywords = this.createKeywordMapper({ - "keyword": keywords, - "constant.language": buildinConstants, - "variable.language": builtinVariables, - "support.function": builtinFunctions, - "invalid.deprecated": "debugger" // TODO is this a remnant from js mode? - }, "identifier"); - - this.$rules = { - "start" : [ - { - token : "comment", - regex : "#.*$" - }, { - token : "comment", // multi line comment - regex : "^=begin(?:$|\\s.*$)", - next : "comment" - }, { - token : "string.regexp", - regex : "[/](?:(?:\\[(?:\\\\]|[^\\]])+\\])|(?:\\\\/|[^\\]/]))*[/]\\w*\\s*(?=[).,;]|$)" - }, - - qString, - qqString, - tString, - - { - token : "text", // namespaces aren't symbols - regex : "::" - }, { - token : "variable.instance", // instance variable - regex : "@{1,2}[a-zA-Z_\\d]+" - }, { - token : "support.class", // class name - regex : "[A-Z][a-zA-Z_\\d]+" - }, - - constantOtherSymbol, - constantNumericHex, - constantNumericFloat, - - { - token : "constant.language.boolean", - regex : "(?:true|false)\\b" - }, { - token : keywordMapper, - regex : "[a-zA-Z_$][a-zA-Z0-9_$]*\\b" - }, { - token : "punctuation.separator.key-value", - regex : "=>" - }, { - stateName: "heredoc", - onMatch : function(value, currentState, stack) { - var next = value[2] == '-' ? "indentedHeredoc" : "heredoc"; - var tokens = value.split(this.splitRegex); - stack.push(next, tokens[3]); - return [ - {type:"constant", value: tokens[1]}, - {type:"string", value: tokens[2]}, - {type:"support.class", value: tokens[3]}, - {type:"string", value: tokens[4]} - ]; - }, - regex : "(<<-?)(['\"`]?)([\\w]+)(['\"`]?)", - rules: { - heredoc: [{ - onMatch: function(value, currentState, stack) { - if (value === stack[1]) { - stack.shift(); - stack.shift(); - this.next = stack[0] || "start"; - return "support.class"; - } - this.next = ""; - return "string"; - }, - regex: ".*$", - next: "start" - }], - indentedHeredoc: [{ - token: "string", - regex: "^ +" - }, { - onMatch: function(value, currentState, stack) { - if (value === stack[1]) { - stack.shift(); - stack.shift(); - this.next = stack[0] || "start"; - return "support.class"; - } - this.next = ""; - return "string"; - }, - regex: ".*$", - next: "start" - }] - } - }, { - regex : "$", - token : "empty", - next : function(currentState, stack) { - if (stack[0] === "heredoc" || stack[0] === "indentedHeredoc") - return stack[0]; - return currentState; - } - }, { - token : "keyword.operator", - regex : "!|\\$|%|&|\\*|\\-\\-|\\-|\\+\\+|\\+|~|===|==|=|!=|!==|<=|>=|<<=|>>=|>>>=|<>|<|>|!|&&|\\|\\||\\?\\:|\\*=|%=|\\+=|\\-=|&=|\\^=|\\b(?:in|instanceof|new|delete|typeof|void)" - }, { - token : "paren.lparen", - regex : "[[({]" - }, { - token : "paren.rparen", - regex : "[\\])}]" - }, { - token : "text", - regex : "\\s+" - } - ], - "comment" : [ - { - token : "comment", // closing comment - regex : "^=end(?:$|\\s.*$)", - next : "start" - }, { - token : "comment", // comment spanning whole line - regex : ".+" - } - ] - }; - - this.normalizeRules(); -}; - -oop.inherits(RubyHighlightRules, TextHighlightRules); - -exports.RubyHighlightRules = RubyHighlightRules; -}); - -ace.define('ace/mode/folding/coffee', ['require', 'exports', 'module' , 'ace/lib/oop', 'ace/mode/folding/fold_mode', 'ace/range'], function(require, exports, module) { - - -var oop = require("../../lib/oop"); -var BaseFoldMode = require("./fold_mode").FoldMode; -var Range = require("../../range").Range; - -var FoldMode = exports.FoldMode = function() {}; -oop.inherits(FoldMode, BaseFoldMode); - -(function() { - - this.getFoldWidgetRange = function(session, foldStyle, row) { - var range = this.indentationBlock(session, row); - if (range) - return range; - - var re = /\S/; - var line = session.getLine(row); - var startLevel = line.search(re); - if (startLevel == -1 || line[startLevel] != "#") - return; - - var startColumn = line.length; - var maxRow = session.getLength(); - var startRow = row; - var endRow = row; - - while (++row < maxRow) { - line = session.getLine(row); - var level = line.search(re); - - if (level == -1) - continue; - - if (line[level] != "#") - break; - - endRow = row; - } - - if (endRow > startRow) { - var endColumn = session.getLine(endRow).length; - return new Range(startRow, startColumn, endRow, endColumn); - } - }; - this.getFoldWidget = function(session, foldStyle, row) { - var line = session.getLine(row); - var indent = line.search(/\S/); - var next = session.getLine(row + 1); - var prev = session.getLine(row - 1); - var prevIndent = prev.search(/\S/); - var nextIndent = next.search(/\S/); - - if (indent == -1) { - session.foldWidgets[row - 1] = prevIndent!= -1 && prevIndent < nextIndent ? "start" : ""; - return ""; - } - if (prevIndent == -1) { - if (indent == nextIndent && line[indent] == "#" && next[indent] == "#") { - session.foldWidgets[row - 1] = ""; - session.foldWidgets[row + 1] = ""; - return "start"; - } - } else if (prevIndent == indent && line[indent] == "#" && prev[indent] == "#") { - if (session.getLine(row - 2).search(/\S/) == -1) { - session.foldWidgets[row - 1] = "start"; - session.foldWidgets[row + 1] = ""; - return ""; - } - } - - if (prevIndent!= -1 && prevIndent < indent) - session.foldWidgets[row - 1] = "start"; - else - session.foldWidgets[row - 1] = ""; - - if (indent < nextIndent) - return "start"; - else - return ""; - }; - -}).call(FoldMode.prototype); - -}); diff --git a/IDE/jsrealb-ide/ace-src-noconflict/mode-handlebars.js b/IDE/jsrealb-ide/ace-src-noconflict/mode-handlebars.js deleted file mode 100644 index 03e92fba..00000000 --- a/IDE/jsrealb-ide/ace-src-noconflict/mode-handlebars.js +++ /dev/null @@ -1,2433 +0,0 @@ -/* global define */ - -ace.define('ace/mode/handlebars', ['require', 'exports', 'module' , 'ace/lib/oop', 'ace/mode/html', 'ace/tokenizer', 'ace/mode/handlebars_highlight_rules', 'ace/mode/behaviour/html', 'ace/mode/folding/html'], function(require, exports, module) { - - -var oop = require("../lib/oop"); -var HtmlMode = require("./html").Mode; -var Tokenizer = require("../tokenizer").Tokenizer; -var HandlebarsHighlightRules = require("./handlebars_highlight_rules").HandlebarsHighlightRules; -var HtmlBehaviour = require("./behaviour/html").HtmlBehaviour; -var HtmlFoldMode = require("./folding/html").FoldMode; - -var Mode = function() { - HtmlMode.call(this); - this.HighlightRules = HandlebarsHighlightRules; - this.$behaviour = new HtmlBehaviour(); - - - this.foldingRules = new HtmlFoldMode(); -}; - -oop.inherits(Mode, HtmlMode); - -(function() { - - this.$id = "ace/mode/handlebars"; -}).call(Mode.prototype); - -exports.Mode = Mode; -}); - -ace.define('ace/mode/html', ['require', 'exports', 'module' , 'ace/lib/oop', 'ace/mode/text', 'ace/mode/javascript', 'ace/mode/css', 'ace/tokenizer', 'ace/mode/html_highlight_rules', 'ace/mode/behaviour/html', 'ace/mode/folding/html', 'ace/mode/html_completions'], function(require, exports, module) { - - -var oop = require("../lib/oop"); -var TextMode = require("./text").Mode; -var JavaScriptMode = require("./javascript").Mode; -var CssMode = require("./css").Mode; -var Tokenizer = require("../tokenizer").Tokenizer; -var HtmlHighlightRules = require("./html_highlight_rules").HtmlHighlightRules; -var HtmlBehaviour = require("./behaviour/html").HtmlBehaviour; -var HtmlFoldMode = require("./folding/html").FoldMode; -var HtmlCompletions = require("./html_completions").HtmlCompletions; - -var Mode = function() { - this.HighlightRules = HtmlHighlightRules; - this.$behaviour = new HtmlBehaviour(); - this.$completer = new HtmlCompletions(); - - this.createModeDelegates({ - "js-": JavaScriptMode, - "css-": CssMode - }); - - this.foldingRules = new HtmlFoldMode(); -}; -oop.inherits(Mode, TextMode); - -(function() { - - this.blockComment = {start: ""}; - - this.getNextLineIndent = function(state, line, tab) { - return this.$getIndent(line); - }; - - this.checkOutdent = function(state, line, input) { - return false; - }; - - this.getCompletions = function(state, session, pos, prefix) { - return this.$completer.getCompletions(state, session, pos, prefix); - }; - - this.$id = "ace/mode/html"; -}).call(Mode.prototype); - -exports.Mode = Mode; -}); - -ace.define('ace/mode/javascript', ['require', 'exports', 'module' , 'ace/lib/oop', 'ace/mode/text', 'ace/tokenizer', 'ace/mode/javascript_highlight_rules', 'ace/mode/matching_brace_outdent', 'ace/range', 'ace/worker/worker_client', 'ace/mode/behaviour/cstyle', 'ace/mode/folding/cstyle'], function(require, exports, module) { - - -var oop = require("../lib/oop"); -var TextMode = require("./text").Mode; -var Tokenizer = require("../tokenizer").Tokenizer; -var JavaScriptHighlightRules = require("./javascript_highlight_rules").JavaScriptHighlightRules; -var MatchingBraceOutdent = require("./matching_brace_outdent").MatchingBraceOutdent; -var Range = require("../range").Range; -var WorkerClient = require("../worker/worker_client").WorkerClient; -var CstyleBehaviour = require("./behaviour/cstyle").CstyleBehaviour; -var CStyleFoldMode = require("./folding/cstyle").FoldMode; - -var Mode = function() { - this.HighlightRules = JavaScriptHighlightRules; - - this.$outdent = new MatchingBraceOutdent(); - this.$behaviour = new CstyleBehaviour(); - this.foldingRules = new CStyleFoldMode(); -}; -oop.inherits(Mode, TextMode); - -(function() { - - this.lineCommentStart = "//"; - this.blockComment = {start: "/*", end: "*/"}; - - this.getNextLineIndent = function(state, line, tab) { - var indent = this.$getIndent(line); - - var tokenizedLine = this.getTokenizer().getLineTokens(line, state); - var tokens = tokenizedLine.tokens; - var endState = tokenizedLine.state; - - if (tokens.length && tokens[tokens.length-1].type == "comment") { - return indent; - } - - if (state == "start" || state == "no_regex") { - var match = line.match(/^.*(?:\bcase\b.*\:|[\{\(\[])\s*$/); - if (match) { - indent += tab; - } - } else if (state == "doc-start") { - if (endState == "start" || endState == "no_regex") { - return ""; - } - var match = line.match(/^\s*(\/?)\*/); - if (match) { - if (match[1]) { - indent += " "; - } - indent += "* "; - } - } - - return indent; - }; - - this.checkOutdent = function(state, line, input) { - return this.$outdent.checkOutdent(line, input); - }; - - this.autoOutdent = function(state, doc, row) { - this.$outdent.autoOutdent(doc, row); - }; - - this.createWorker = function(session) { - var worker = new WorkerClient(["ace"], "ace/mode/javascript_worker", "JavaScriptWorker"); - worker.attachToDocument(session.getDocument()); - - worker.on("jslint", function(results) { - session.setAnnotations(results.data); - }); - - worker.on("terminate", function() { - session.clearAnnotations(); - }); - - return worker; - }; - - this.$id = "ace/mode/javascript"; -}).call(Mode.prototype); - -exports.Mode = Mode; -}); - -ace.define('ace/mode/javascript_highlight_rules', ['require', 'exports', 'module' , 'ace/lib/oop', 'ace/mode/doc_comment_highlight_rules', 'ace/mode/text_highlight_rules'], function(require, exports, module) { - - -var oop = require("../lib/oop"); -var DocCommentHighlightRules = require("./doc_comment_highlight_rules").DocCommentHighlightRules; -var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; - -var JavaScriptHighlightRules = function() { - var keywordMapper = this.createKeywordMapper({ - "variable.language": - "Array|Boolean|Date|Function|Iterator|Number|Object|RegExp|String|Proxy|" + // Constructors - "Namespace|QName|XML|XMLList|" + // E4X - "ArrayBuffer|Float32Array|Float64Array|Int16Array|Int32Array|Int8Array|" + - "Uint16Array|Uint32Array|Uint8Array|Uint8ClampedArray|" + - "Error|EvalError|InternalError|RangeError|ReferenceError|StopIteration|" + // Errors - "SyntaxError|TypeError|URIError|" + - "decodeURI|decodeURIComponent|encodeURI|encodeURIComponent|eval|isFinite|" + // Non-constructor functions - "isNaN|parseFloat|parseInt|" + - "JSON|Math|" + // Other - "this|arguments|prototype|window|document" , // Pseudo - "keyword": - "const|yield|import|get|set|" + - "break|case|catch|continue|default|delete|do|else|finally|for|function|" + - "if|in|instanceof|new|return|switch|throw|try|typeof|let|var|while|with|debugger|" + - "__parent__|__count__|escape|unescape|with|__proto__|" + - "class|enum|extends|super|export|implements|private|public|interface|package|protected|static", - "storage.type": - "const|let|var|function", - "constant.language": - "null|Infinity|NaN|undefined", - "support.function": - "alert", - "constant.language.boolean": "true|false" - }, "identifier"); - var kwBeforeRe = "case|do|else|finally|in|instanceof|return|throw|try|typeof|yield|void"; - var identifierRe = "[a-zA-Z\\$_\u00a1-\uffff][a-zA-Z\\d\\$_\u00a1-\uffff]*\\b"; - - var escapedRe = "\\\\(?:x[0-9a-fA-F]{2}|" + // hex - "u[0-9a-fA-F]{4}|" + // unicode - "[0-2][0-7]{0,2}|" + // oct - "3[0-6][0-7]?|" + // oct - "37[0-7]?|" + // oct - "[4-7][0-7]?|" + //oct - ".)"; - - this.$rules = { - "no_regex" : [ - { - token : "comment", - regex : "\\/\\/", - next : "line_comment" - }, - DocCommentHighlightRules.getStartRule("doc-start"), - { - token : "comment", // multi line comment - regex : /\/\*/, - next : "comment" - }, { - token : "string", - regex : "'(?=.)", - next : "qstring" - }, { - token : "string", - regex : '"(?=.)', - next : "qqstring" - }, { - token : "constant.numeric", // hex - regex : /0[xX][0-9a-fA-F]+\b/ - }, { - token : "constant.numeric", // float - regex : /[+-]?\d+(?:(?:\.\d*)?(?:[eE][+-]?\d+)?)?\b/ - }, { - token : [ - "storage.type", "punctuation.operator", "support.function", - "punctuation.operator", "entity.name.function", "text","keyword.operator" - ], - regex : "(" + identifierRe + ")(\\.)(prototype)(\\.)(" + identifierRe +")(\\s*)(=)", - next: "function_arguments" - }, { - token : [ - "storage.type", "punctuation.operator", "entity.name.function", "text", - "keyword.operator", "text", "storage.type", "text", "paren.lparen" - ], - regex : "(" + identifierRe + ")(\\.)(" + identifierRe +")(\\s*)(=)(\\s*)(function)(\\s*)(\\()", - next: "function_arguments" - }, { - token : [ - "entity.name.function", "text", "keyword.operator", "text", "storage.type", - "text", "paren.lparen" - ], - regex : "(" + identifierRe +")(\\s*)(=)(\\s*)(function)(\\s*)(\\()", - next: "function_arguments" - }, { - token : [ - "storage.type", "punctuation.operator", "entity.name.function", "text", - "keyword.operator", "text", - "storage.type", "text", "entity.name.function", "text", "paren.lparen" - ], - regex : "(" + identifierRe + ")(\\.)(" + identifierRe +")(\\s*)(=)(\\s*)(function)(\\s+)(\\w+)(\\s*)(\\()", - next: "function_arguments" - }, { - token : [ - "storage.type", "text", "entity.name.function", "text", "paren.lparen" - ], - regex : "(function)(\\s+)(" + identifierRe + ")(\\s*)(\\()", - next: "function_arguments" - }, { - token : [ - "entity.name.function", "text", "punctuation.operator", - "text", "storage.type", "text", "paren.lparen" - ], - regex : "(" + identifierRe + ")(\\s*)(:)(\\s*)(function)(\\s*)(\\()", - next: "function_arguments" - }, { - token : [ - "text", "text", "storage.type", "text", "paren.lparen" - ], - regex : "(:)(\\s*)(function)(\\s*)(\\()", - next: "function_arguments" - }, { - token : "keyword", - regex : "(?:" + kwBeforeRe + ")\\b", - next : "start" - }, { - token : ["punctuation.operator", "support.function"], - regex : /(\.)(s(?:h(?:ift|ow(?:Mod(?:elessDialog|alDialog)|Help))|croll(?:X|By(?:Pages|Lines)?|Y|To)?|t(?:op|rike)|i(?:n|zeToContent|debar|gnText)|ort|u(?:p|b(?:str(?:ing)?)?)|pli(?:ce|t)|e(?:nd|t(?:Re(?:sizable|questHeader)|M(?:i(?:nutes|lliseconds)|onth)|Seconds|Ho(?:tKeys|urs)|Year|Cursor|Time(?:out)?|Interval|ZOptions|Date|UTC(?:M(?:i(?:nutes|lliseconds)|onth)|Seconds|Hours|Date|FullYear)|FullYear|Active)|arch)|qrt|lice|avePreferences|mall)|h(?:ome|andleEvent)|navigate|c(?:har(?:CodeAt|At)|o(?:s|n(?:cat|textual|firm)|mpile)|eil|lear(?:Timeout|Interval)?|a(?:ptureEvents|ll)|reate(?:StyleSheet|Popup|EventObject))|t(?:o(?:GMTString|S(?:tring|ource)|U(?:TCString|pperCase)|Lo(?:caleString|werCase))|est|a(?:n|int(?:Enabled)?))|i(?:s(?:NaN|Finite)|ndexOf|talics)|d(?:isableExternalCapture|ump|etachEvent)|u(?:n(?:shift|taint|escape|watch)|pdateCommands)|j(?:oin|avaEnabled)|p(?:o(?:p|w)|ush|lugins.refresh|a(?:ddings|rse(?:Int|Float)?)|r(?:int|ompt|eference))|e(?:scape|nableExternalCapture|val|lementFromPoint|x(?:p|ec(?:Script|Command)?))|valueOf|UTC|queryCommand(?:State|Indeterm|Enabled|Value)|f(?:i(?:nd|le(?:ModifiedDate|Size|CreatedDate|UpdatedDate)|xed)|o(?:nt(?:size|color)|rward)|loor|romCharCode)|watch|l(?:ink|o(?:ad|g)|astIndexOf)|a(?:sin|nchor|cos|t(?:tachEvent|ob|an(?:2)?)|pply|lert|b(?:s|ort))|r(?:ou(?:nd|teEvents)|e(?:size(?:By|To)|calc|turnValue|place|verse|l(?:oad|ease(?:Capture|Events)))|andom)|g(?:o|et(?:ResponseHeader|M(?:i(?:nutes|lliseconds)|onth)|Se(?:conds|lection)|Hours|Year|Time(?:zoneOffset)?|Da(?:y|te)|UTC(?:M(?:i(?:nutes|lliseconds)|onth)|Seconds|Hours|Da(?:y|te)|FullYear)|FullYear|A(?:ttention|llResponseHeaders)))|m(?:in|ove(?:B(?:y|elow)|To(?:Absolute)?|Above)|ergeAttributes|a(?:tch|rgins|x))|b(?:toa|ig|o(?:ld|rderWidths)|link|ack))\b(?=\()/ - }, { - token : ["punctuation.operator", "support.function.dom"], - regex : /(\.)(s(?:ub(?:stringData|mit)|plitText|e(?:t(?:NamedItem|Attribute(?:Node)?)|lect))|has(?:ChildNodes|Feature)|namedItem|c(?:l(?:ick|o(?:se|neNode))|reate(?:C(?:omment|DATASection|aption)|T(?:Head|extNode|Foot)|DocumentFragment|ProcessingInstruction|E(?:ntityReference|lement)|Attribute))|tabIndex|i(?:nsert(?:Row|Before|Cell|Data)|tem)|open|delete(?:Row|C(?:ell|aption)|T(?:Head|Foot)|Data)|focus|write(?:ln)?|a(?:dd|ppend(?:Child|Data))|re(?:set|place(?:Child|Data)|move(?:NamedItem|Child|Attribute(?:Node)?)?)|get(?:NamedItem|Element(?:sBy(?:Name|TagName)|ById)|Attribute(?:Node)?)|blur)\b(?=\()/ - }, { - token : ["punctuation.operator", "support.constant"], - regex : /(\.)(s(?:ystemLanguage|cr(?:ipts|ollbars|een(?:X|Y|Top|Left))|t(?:yle(?:Sheets)?|atus(?:Text|bar)?)|ibling(?:Below|Above)|ource|uffixes|e(?:curity(?:Policy)?|l(?:ection|f)))|h(?:istory|ost(?:name)?|as(?:h|Focus))|y|X(?:MLDocument|SLDocument)|n(?:ext|ame(?:space(?:s|URI)|Prop))|M(?:IN_VALUE|AX_VALUE)|c(?:haracterSet|o(?:n(?:structor|trollers)|okieEnabled|lorDepth|mp(?:onents|lete))|urrent|puClass|l(?:i(?:p(?:boardData)?|entInformation)|osed|asses)|alle(?:e|r)|rypto)|t(?:o(?:olbar|p)|ext(?:Transform|Indent|Decoration|Align)|ags)|SQRT(?:1_2|2)|i(?:n(?:ner(?:Height|Width)|put)|ds|gnoreCase)|zIndex|o(?:scpu|n(?:readystatechange|Line)|uter(?:Height|Width)|p(?:sProfile|ener)|ffscreenBuffering)|NEGATIVE_INFINITY|d(?:i(?:splay|alog(?:Height|Top|Width|Left|Arguments)|rectories)|e(?:scription|fault(?:Status|Ch(?:ecked|arset)|View)))|u(?:ser(?:Profile|Language|Agent)|n(?:iqueID|defined)|pdateInterval)|_content|p(?:ixelDepth|ort|ersonalbar|kcs11|l(?:ugins|atform)|a(?:thname|dding(?:Right|Bottom|Top|Left)|rent(?:Window|Layer)?|ge(?:X(?:Offset)?|Y(?:Offset)?))|r(?:o(?:to(?:col|type)|duct(?:Sub)?|mpter)|e(?:vious|fix)))|e(?:n(?:coding|abledPlugin)|x(?:ternal|pando)|mbeds)|v(?:isibility|endor(?:Sub)?|Linkcolor)|URLUnencoded|P(?:I|OSITIVE_INFINITY)|f(?:ilename|o(?:nt(?:Size|Family|Weight)|rmName)|rame(?:s|Element)|gColor)|E|whiteSpace|l(?:i(?:stStyleType|n(?:eHeight|kColor))|o(?:ca(?:tion(?:bar)?|lName)|wsrc)|e(?:ngth|ft(?:Context)?)|a(?:st(?:M(?:odified|atch)|Index|Paren)|yer(?:s|X)|nguage))|a(?:pp(?:MinorVersion|Name|Co(?:deName|re)|Version)|vail(?:Height|Top|Width|Left)|ll|r(?:ity|guments)|Linkcolor|bove)|r(?:ight(?:Context)?|e(?:sponse(?:XML|Text)|adyState))|global|x|m(?:imeTypes|ultiline|enubar|argin(?:Right|Bottom|Top|Left))|L(?:N(?:10|2)|OG(?:10E|2E))|b(?:o(?:ttom|rder(?:Width|RightWidth|BottomWidth|Style|Color|TopWidth|LeftWidth))|ufferDepth|elow|ackground(?:Color|Image)))\b/ - }, { - token : ["storage.type", "punctuation.operator", "support.function.firebug"], - regex : /(console)(\.)(warn|info|log|error|time|timeEnd|assert)\b/ - }, { - token : keywordMapper, - regex : identifierRe - }, { - token : "keyword.operator", - regex : /--|\+\+|[!$%&*+\-~]|===|==|=|!=|!==|<=|>=|<<=|>>=|>>>=|<>|<|>|!|&&|\|\||\?\:|\*=|%=|\+=|\-=|&=|\^=/, - next : "start" - }, { - token : "punctuation.operator", - regex : /\?|\:|\,|\;|\./, - next : "start" - }, { - token : "paren.lparen", - regex : /[\[({]/, - next : "start" - }, { - token : "paren.rparen", - regex : /[\])}]/ - }, { - token : "keyword.operator", - regex : /\/=?/, - next : "start" - }, { - token: "comment", - regex: /^#!.*$/ - } - ], - "start": [ - DocCommentHighlightRules.getStartRule("doc-start"), - { - token : "comment", // multi line comment - regex : "\\/\\*", - next : "comment_regex_allowed" - }, { - token : "comment", - regex : "\\/\\/", - next : "line_comment_regex_allowed" - }, { - token: "string.regexp", - regex: "\\/", - next: "regex" - }, { - token : "text", - regex : "\\s+|^$", - next : "start" - }, { - token: "empty", - regex: "", - next: "no_regex" - } - ], - "regex": [ - { - token: "regexp.keyword.operator", - regex: "\\\\(?:u[\\da-fA-F]{4}|x[\\da-fA-F]{2}|.)" - }, { - token: "string.regexp", - regex: "/[sxngimy]*", - next: "no_regex" - }, { - token : "invalid", - regex: /\{\d+\b,?\d*\}[+*]|[+*$^?][+*]|[$^][?]|\?{3,}/ - }, { - token : "constant.language.escape", - regex: /\(\?[:=!]|\)|\{\d+\b,?\d*\}|[+*]\?|[()$^+*?.]/ - }, { - token : "constant.language.delimiter", - regex: /\|/ - }, { - token: "constant.language.escape", - regex: /\[\^?/, - next: "regex_character_class" - }, { - token: "empty", - regex: "$", - next: "no_regex" - }, { - defaultToken: "string.regexp" - } - ], - "regex_character_class": [ - { - token: "regexp.keyword.operator", - regex: "\\\\(?:u[\\da-fA-F]{4}|x[\\da-fA-F]{2}|.)" - }, { - token: "constant.language.escape", - regex: "]", - next: "regex" - }, { - token: "constant.language.escape", - regex: "-" - }, { - token: "empty", - regex: "$", - next: "no_regex" - }, { - defaultToken: "string.regexp.charachterclass" - } - ], - "function_arguments": [ - { - token: "variable.parameter", - regex: identifierRe - }, { - token: "punctuation.operator", - regex: "[, ]+" - }, { - token: "punctuation.operator", - regex: "$" - }, { - token: "empty", - regex: "", - next: "no_regex" - } - ], - "comment_regex_allowed" : [ - {token : "comment", regex : "\\*\\/", next : "start"}, - {defaultToken : "comment"} - ], - "comment" : [ - {token : "comment", regex : "\\*\\/", next : "no_regex"}, - {defaultToken : "comment"} - ], - "line_comment_regex_allowed" : [ - {token : "comment", regex : "$|^", next : "start"}, - {defaultToken : "comment"} - ], - "line_comment" : [ - {token : "comment", regex : "$|^", next : "no_regex"}, - {defaultToken : "comment"} - ], - "qqstring" : [ - { - token : "constant.language.escape", - regex : escapedRe - }, { - token : "string", - regex : "\\\\$", - next : "qqstring" - }, { - token : "string", - regex : '"|$', - next : "no_regex" - }, { - defaultToken: "string" - } - ], - "qstring" : [ - { - token : "constant.language.escape", - regex : escapedRe - }, { - token : "string", - regex : "\\\\$", - next : "qstring" - }, { - token : "string", - regex : "'|$", - next : "no_regex" - }, { - defaultToken: "string" - } - ] - }; - - this.embedRules(DocCommentHighlightRules, "doc-", - [ DocCommentHighlightRules.getEndRule("no_regex") ]); -}; - -oop.inherits(JavaScriptHighlightRules, TextHighlightRules); - -exports.JavaScriptHighlightRules = JavaScriptHighlightRules; -}); - -ace.define('ace/mode/doc_comment_highlight_rules', ['require', 'exports', 'module' , 'ace/lib/oop', 'ace/mode/text_highlight_rules'], function(require, exports, module) { - - -var oop = require("../lib/oop"); -var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; - -var DocCommentHighlightRules = function() { - - this.$rules = { - "start" : [ { - token : "comment.doc.tag", - regex : "@[\\w\\d_]+" // TODO: fix email addresses - }, { - token : "comment.doc.tag", - regex : "\\bTODO\\b" - }, { - defaultToken : "comment.doc" - }] - }; -}; - -oop.inherits(DocCommentHighlightRules, TextHighlightRules); - -DocCommentHighlightRules.getStartRule = function(start) { - return { - token : "comment.doc", // doc comment - regex : "\\/\\*(?=\\*)", - next : start - }; -}; - -DocCommentHighlightRules.getEndRule = function (start) { - return { - token : "comment.doc", // closing comment - regex : "\\*\\/", - next : start - }; -}; - - -exports.DocCommentHighlightRules = DocCommentHighlightRules; - -}); - -ace.define('ace/mode/matching_brace_outdent', ['require', 'exports', 'module' , 'ace/range'], function(require, exports, module) { - - -var Range = require("../range").Range; - -var MatchingBraceOutdent = function() {}; - -(function() { - - this.checkOutdent = function(line, input) { - if (! /^\s+$/.test(line)) - return false; - - return /^\s*\}/.test(input); - }; - - this.autoOutdent = function(doc, row) { - var line = doc.getLine(row); - var match = line.match(/^(\s*\})/); - - if (!match) return 0; - - var column = match[1].length; - var openBracePos = doc.findMatchingBracket({row: row, column: column}); - - if (!openBracePos || openBracePos.row == row) return 0; - - var indent = this.$getIndent(doc.getLine(openBracePos.row)); - doc.replace(new Range(row, 0, row, column-1), indent); - }; - - this.$getIndent = function(line) { - return line.match(/^\s*/)[0]; - }; - -}).call(MatchingBraceOutdent.prototype); - -exports.MatchingBraceOutdent = MatchingBraceOutdent; -}); - -ace.define('ace/mode/behaviour/cstyle', ['require', 'exports', 'module' , 'ace/lib/oop', 'ace/mode/behaviour', 'ace/token_iterator', 'ace/lib/lang'], function(require, exports, module) { - - -var oop = require("../../lib/oop"); -var Behaviour = require("../behaviour").Behaviour; -var TokenIterator = require("../../token_iterator").TokenIterator; -var lang = require("../../lib/lang"); - -var SAFE_INSERT_IN_TOKENS = - ["text", "paren.rparen", "punctuation.operator"]; -var SAFE_INSERT_BEFORE_TOKENS = - ["text", "paren.rparen", "punctuation.operator", "comment"]; - - -var autoInsertedBrackets = 0; -var autoInsertedRow = -1; -var autoInsertedLineEnd = ""; -var maybeInsertedBrackets = 0; -var maybeInsertedRow = -1; -var maybeInsertedLineStart = ""; -var maybeInsertedLineEnd = ""; - -var CstyleBehaviour = function () { - - CstyleBehaviour.isSaneInsertion = function(editor, session) { - var cursor = editor.getCursorPosition(); - var iterator = new TokenIterator(session, cursor.row, cursor.column); - if (!this.$matchTokenType(iterator.getCurrentToken() || "text", SAFE_INSERT_IN_TOKENS)) { - var iterator2 = new TokenIterator(session, cursor.row, cursor.column + 1); - if (!this.$matchTokenType(iterator2.getCurrentToken() || "text", SAFE_INSERT_IN_TOKENS)) - return false; - } - iterator.stepForward(); - return iterator.getCurrentTokenRow() !== cursor.row || - this.$matchTokenType(iterator.getCurrentToken() || "text", SAFE_INSERT_BEFORE_TOKENS); - }; - - CstyleBehaviour.$matchTokenType = function(token, types) { - return types.indexOf(token.type || token) > -1; - }; - - CstyleBehaviour.recordAutoInsert = function(editor, session, bracket) { - var cursor = editor.getCursorPosition(); - var line = session.doc.getLine(cursor.row); - if (!this.isAutoInsertedClosing(cursor, line, autoInsertedLineEnd[0])) - autoInsertedBrackets = 0; - autoInsertedRow = cursor.row; - autoInsertedLineEnd = bracket + line.substr(cursor.column); - autoInsertedBrackets++; - }; - - CstyleBehaviour.recordMaybeInsert = function(editor, session, bracket) { - var cursor = editor.getCursorPosition(); - var line = session.doc.getLine(cursor.row); - if (!this.isMaybeInsertedClosing(cursor, line)) - maybeInsertedBrackets = 0; - maybeInsertedRow = cursor.row; - maybeInsertedLineStart = line.substr(0, cursor.column) + bracket; - maybeInsertedLineEnd = line.substr(cursor.column); - maybeInsertedBrackets++; - }; - - CstyleBehaviour.isAutoInsertedClosing = function(cursor, line, bracket) { - return autoInsertedBrackets > 0 && - cursor.row === autoInsertedRow && - bracket === autoInsertedLineEnd[0] && - line.substr(cursor.column) === autoInsertedLineEnd; - }; - - CstyleBehaviour.isMaybeInsertedClosing = function(cursor, line) { - return maybeInsertedBrackets > 0 && - cursor.row === maybeInsertedRow && - line.substr(cursor.column) === maybeInsertedLineEnd && - line.substr(0, cursor.column) == maybeInsertedLineStart; - }; - - CstyleBehaviour.popAutoInsertedClosing = function() { - autoInsertedLineEnd = autoInsertedLineEnd.substr(1); - autoInsertedBrackets--; - }; - - CstyleBehaviour.clearMaybeInsertedClosing = function() { - maybeInsertedBrackets = 0; - maybeInsertedRow = -1; - }; - - this.add("braces", "insertion", function (state, action, editor, session, text) { - var cursor = editor.getCursorPosition(); - var line = session.doc.getLine(cursor.row); - if (text == '{') { - var selection = editor.getSelectionRange(); - var selected = session.doc.getTextRange(selection); - if (selected !== "" && selected !== "{" && editor.getWrapBehavioursEnabled()) { - return { - text: '{' + selected + '}', - selection: false - }; - } else if (CstyleBehaviour.isSaneInsertion(editor, session)) { - if (/[\]\}\)]/.test(line[cursor.column]) || editor.inMultiSelectMode) { - CstyleBehaviour.recordAutoInsert(editor, session, "}"); - return { - text: '{}', - selection: [1, 1] - }; - } else { - CstyleBehaviour.recordMaybeInsert(editor, session, "{"); - return { - text: '{', - selection: [1, 1] - }; - } - } - } else if (text == '}') { - var rightChar = line.substring(cursor.column, cursor.column + 1); - if (rightChar == '}') { - var matching = session.$findOpeningBracket('}', {column: cursor.column + 1, row: cursor.row}); - if (matching !== null && CstyleBehaviour.isAutoInsertedClosing(cursor, line, text)) { - CstyleBehaviour.popAutoInsertedClosing(); - return { - text: '', - selection: [1, 1] - }; - } - } - } else if (text == "\n" || text == "\r\n") { - var closing = ""; - if (CstyleBehaviour.isMaybeInsertedClosing(cursor, line)) { - closing = lang.stringRepeat("}", maybeInsertedBrackets); - CstyleBehaviour.clearMaybeInsertedClosing(); - } - var rightChar = line.substring(cursor.column, cursor.column + 1); - if (rightChar === '}') { - var openBracePos = session.findMatchingBracket({row: cursor.row, column: cursor.column+1}, '}'); - if (!openBracePos) - return null; - var next_indent = this.$getIndent(session.getLine(openBracePos.row)); - } else if (closing) { - var next_indent = this.$getIndent(line); - } else { - return; - } - var indent = next_indent + session.getTabString(); - - return { - text: '\n' + indent + '\n' + next_indent + closing, - selection: [1, indent.length, 1, indent.length] - }; - } else { - CstyleBehaviour.clearMaybeInsertedClosing(); - } - }); - - this.add("braces", "deletion", function (state, action, editor, session, range) { - var selected = session.doc.getTextRange(range); - if (!range.isMultiLine() && selected == '{') { - var line = session.doc.getLine(range.start.row); - var rightChar = line.substring(range.end.column, range.end.column + 1); - if (rightChar == '}') { - range.end.column++; - return range; - } else { - maybeInsertedBrackets--; - } - } - }); - - this.add("parens", "insertion", function (state, action, editor, session, text) { - if (text == '(') { - var selection = editor.getSelectionRange(); - var selected = session.doc.getTextRange(selection); - if (selected !== "" && editor.getWrapBehavioursEnabled()) { - return { - text: '(' + selected + ')', - selection: false - }; - } else if (CstyleBehaviour.isSaneInsertion(editor, session)) { - CstyleBehaviour.recordAutoInsert(editor, session, ")"); - return { - text: '()', - selection: [1, 1] - }; - } - } else if (text == ')') { - var cursor = editor.getCursorPosition(); - var line = session.doc.getLine(cursor.row); - var rightChar = line.substring(cursor.column, cursor.column + 1); - if (rightChar == ')') { - var matching = session.$findOpeningBracket(')', {column: cursor.column + 1, row: cursor.row}); - if (matching !== null && CstyleBehaviour.isAutoInsertedClosing(cursor, line, text)) { - CstyleBehaviour.popAutoInsertedClosing(); - return { - text: '', - selection: [1, 1] - }; - } - } - } - }); - - this.add("parens", "deletion", function (state, action, editor, session, range) { - var selected = session.doc.getTextRange(range); - if (!range.isMultiLine() && selected == '(') { - var line = session.doc.getLine(range.start.row); - var rightChar = line.substring(range.start.column + 1, range.start.column + 2); - if (rightChar == ')') { - range.end.column++; - return range; - } - } - }); - - this.add("brackets", "insertion", function (state, action, editor, session, text) { - if (text == '[') { - var selection = editor.getSelectionRange(); - var selected = session.doc.getTextRange(selection); - if (selected !== "" && editor.getWrapBehavioursEnabled()) { - return { - text: '[' + selected + ']', - selection: false - }; - } else if (CstyleBehaviour.isSaneInsertion(editor, session)) { - CstyleBehaviour.recordAutoInsert(editor, session, "]"); - return { - text: '[]', - selection: [1, 1] - }; - } - } else if (text == ']') { - var cursor = editor.getCursorPosition(); - var line = session.doc.getLine(cursor.row); - var rightChar = line.substring(cursor.column, cursor.column + 1); - if (rightChar == ']') { - var matching = session.$findOpeningBracket(']', {column: cursor.column + 1, row: cursor.row}); - if (matching !== null && CstyleBehaviour.isAutoInsertedClosing(cursor, line, text)) { - CstyleBehaviour.popAutoInsertedClosing(); - return { - text: '', - selection: [1, 1] - }; - } - } - } - }); - - this.add("brackets", "deletion", function (state, action, editor, session, range) { - var selected = session.doc.getTextRange(range); - if (!range.isMultiLine() && selected == '[') { - var line = session.doc.getLine(range.start.row); - var rightChar = line.substring(range.start.column + 1, range.start.column + 2); - if (rightChar == ']') { - range.end.column++; - return range; - } - } - }); - - this.add("string_dquotes", "insertion", function (state, action, editor, session, text) { - if (text == '"' || text == "'") { - var quote = text; - var selection = editor.getSelectionRange(); - var selected = session.doc.getTextRange(selection); - if (selected !== "" && selected !== "'" && selected != '"' && editor.getWrapBehavioursEnabled()) { - return { - text: quote + selected + quote, - selection: false - }; - } else { - var cursor = editor.getCursorPosition(); - var line = session.doc.getLine(cursor.row); - var leftChar = line.substring(cursor.column-1, cursor.column); - if (leftChar == '\\') { - return null; - } - var tokens = session.getTokens(selection.start.row); - var col = 0, token; - var quotepos = -1; // Track whether we're inside an open quote. - - for (var x = 0; x < tokens.length; x++) { - token = tokens[x]; - if (token.type == "string") { - quotepos = -1; - } else if (quotepos < 0) { - quotepos = token.value.indexOf(quote); - } - if ((token.value.length + col) > selection.start.column) { - break; - } - col += tokens[x].value.length; - } - if (!token || (quotepos < 0 && token.type !== "comment" && (token.type !== "string" || ((selection.start.column !== token.value.length+col-1) && token.value.lastIndexOf(quote) === token.value.length-1)))) { - if (!CstyleBehaviour.isSaneInsertion(editor, session)) - return; - return { - text: quote + quote, - selection: [1,1] - }; - } else if (token && token.type === "string") { - var rightChar = line.substring(cursor.column, cursor.column + 1); - if (rightChar == quote) { - return { - text: '', - selection: [1, 1] - }; - } - } - } - } - }); - - this.add("string_dquotes", "deletion", function (state, action, editor, session, range) { - var selected = session.doc.getTextRange(range); - if (!range.isMultiLine() && (selected == '"' || selected == "'")) { - var line = session.doc.getLine(range.start.row); - var rightChar = line.substring(range.start.column + 1, range.start.column + 2); - if (rightChar == selected) { - range.end.column++; - return range; - } - } - }); - -}; - -oop.inherits(CstyleBehaviour, Behaviour); - -exports.CstyleBehaviour = CstyleBehaviour; -}); - -ace.define('ace/mode/folding/cstyle', ['require', 'exports', 'module' , 'ace/lib/oop', 'ace/range', 'ace/mode/folding/fold_mode'], function(require, exports, module) { - - -var oop = require("../../lib/oop"); -var Range = require("../../range").Range; -var BaseFoldMode = require("./fold_mode").FoldMode; - -var FoldMode = exports.FoldMode = function(commentRegex) { - if (commentRegex) { - this.foldingStartMarker = new RegExp( - this.foldingStartMarker.source.replace(/\|[^|]*?$/, "|" + commentRegex.start) - ); - this.foldingStopMarker = new RegExp( - this.foldingStopMarker.source.replace(/\|[^|]*?$/, "|" + commentRegex.end) - ); - } -}; -oop.inherits(FoldMode, BaseFoldMode); - -(function() { - - this.foldingStartMarker = /(\{|\[)[^\}\]]*$|^\s*(\/\*)/; - this.foldingStopMarker = /^[^\[\{]*(\}|\])|^[\s\*]*(\*\/)/; - - this.getFoldWidgetRange = function(session, foldStyle, row, forceMultiline) { - var line = session.getLine(row); - var match = line.match(this.foldingStartMarker); - if (match) { - var i = match.index; - - if (match[1]) - return this.openingBracketBlock(session, match[1], row, i); - - var range = session.getCommentFoldRange(row, i + match[0].length, 1); - - if (range && !range.isMultiLine()) { - if (forceMultiline) { - range = this.getSectionRange(session, row); - } else if (foldStyle != "all") - range = null; - } - - return range; - } - - if (foldStyle === "markbegin") - return; - - var match = line.match(this.foldingStopMarker); - if (match) { - var i = match.index + match[0].length; - - if (match[1]) - return this.closingBracketBlock(session, match[1], row, i); - - return session.getCommentFoldRange(row, i, -1); - } - }; - - this.getSectionRange = function(session, row) { - var line = session.getLine(row); - var startIndent = line.search(/\S/); - var startRow = row; - var startColumn = line.length; - row = row + 1; - var endRow = row; - var maxRow = session.getLength(); - while (++row < maxRow) { - line = session.getLine(row); - var indent = line.search(/\S/); - if (indent === -1) - continue; - if (startIndent > indent) - break; - var subRange = this.getFoldWidgetRange(session, "all", row); - - if (subRange) { - if (subRange.start.row <= startRow) { - break; - } else if (subRange.isMultiLine()) { - row = subRange.end.row; - } else if (startIndent == indent) { - break; - } - } - endRow = row; - } - - return new Range(startRow, startColumn, endRow, session.getLine(endRow).length); - }; - -}).call(FoldMode.prototype); - -}); - -ace.define('ace/mode/css', ['require', 'exports', 'module' , 'ace/lib/oop', 'ace/mode/text', 'ace/tokenizer', 'ace/mode/css_highlight_rules', 'ace/mode/matching_brace_outdent', 'ace/worker/worker_client', 'ace/mode/behaviour/css', 'ace/mode/folding/cstyle'], function(require, exports, module) { - - -var oop = require("../lib/oop"); -var TextMode = require("./text").Mode; -var Tokenizer = require("../tokenizer").Tokenizer; -var CssHighlightRules = require("./css_highlight_rules").CssHighlightRules; -var MatchingBraceOutdent = require("./matching_brace_outdent").MatchingBraceOutdent; -var WorkerClient = require("../worker/worker_client").WorkerClient; -var CssBehaviour = require("./behaviour/css").CssBehaviour; -var CStyleFoldMode = require("./folding/cstyle").FoldMode; - -var Mode = function() { - this.HighlightRules = CssHighlightRules; - this.$outdent = new MatchingBraceOutdent(); - this.$behaviour = new CssBehaviour(); - this.foldingRules = new CStyleFoldMode(); -}; -oop.inherits(Mode, TextMode); - -(function() { - - this.foldingRules = "cStyle"; - this.blockComment = {start: "/*", end: "*/"}; - - this.getNextLineIndent = function(state, line, tab) { - var indent = this.$getIndent(line); - var tokens = this.getTokenizer().getLineTokens(line, state).tokens; - if (tokens.length && tokens[tokens.length-1].type == "comment") { - return indent; - } - - var match = line.match(/^.*\{\s*$/); - if (match) { - indent += tab; - } - - return indent; - }; - - this.checkOutdent = function(state, line, input) { - return this.$outdent.checkOutdent(line, input); - }; - - this.autoOutdent = function(state, doc, row) { - this.$outdent.autoOutdent(doc, row); - }; - - this.createWorker = function(session) { - var worker = new WorkerClient(["ace"], "ace/mode/css_worker", "Worker"); - worker.attachToDocument(session.getDocument()); - - worker.on("csslint", function(e) { - session.setAnnotations(e.data); - }); - - worker.on("terminate", function() { - session.clearAnnotations(); - }); - - return worker; - }; - - this.$id = "ace/mode/css"; -}).call(Mode.prototype); - -exports.Mode = Mode; - -}); - -ace.define('ace/mode/css_highlight_rules', ['require', 'exports', 'module' , 'ace/lib/oop', 'ace/lib/lang', 'ace/mode/text_highlight_rules'], function(require, exports, module) { - - -var oop = require("../lib/oop"); -var lang = require("../lib/lang"); -var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; -var supportType = exports.supportType = "animation-fill-mode|alignment-adjust|alignment-baseline|animation-delay|animation-direction|animation-duration|animation-iteration-count|animation-name|animation-play-state|animation-timing-function|animation|appearance|azimuth|backface-visibility|background-attachment|background-break|background-clip|background-color|background-image|background-origin|background-position|background-repeat|background-size|background|baseline-shift|binding|bleed|bookmark-label|bookmark-level|bookmark-state|bookmark-target|border-bottom|border-bottom-color|border-bottom-left-radius|border-bottom-right-radius|border-bottom-style|border-bottom-width|border-collapse|border-color|border-image|border-image-outset|border-image-repeat|border-image-slice|border-image-source|border-image-width|border-left|border-left-color|border-left-style|border-left-width|border-radius|border-right|border-right-color|border-right-style|border-right-width|border-spacing|border-style|border-top|border-top-color|border-top-left-radius|border-top-right-radius|border-top-style|border-top-width|border-width|border|bottom|box-align|box-decoration-break|box-direction|box-flex-group|box-flex|box-lines|box-ordinal-group|box-orient|box-pack|box-shadow|box-sizing|break-after|break-before|break-inside|caption-side|clear|clip|color-profile|color|column-count|column-fill|column-gap|column-rule|column-rule-color|column-rule-style|column-rule-width|column-span|column-width|columns|content|counter-increment|counter-reset|crop|cue-after|cue-before|cue|cursor|direction|display|dominant-baseline|drop-initial-after-adjust|drop-initial-after-align|drop-initial-before-adjust|drop-initial-before-align|drop-initial-size|drop-initial-value|elevation|empty-cells|fit|fit-position|float-offset|float|font-family|font-size|font-size-adjust|font-stretch|font-style|font-variant|font-weight|font|grid-columns|grid-rows|hanging-punctuation|height|hyphenate-after|hyphenate-before|hyphenate-character|hyphenate-lines|hyphenate-resource|hyphens|icon|image-orientation|image-rendering|image-resolution|inline-box-align|left|letter-spacing|line-height|line-stacking-ruby|line-stacking-shift|line-stacking-strategy|line-stacking|list-style-image|list-style-position|list-style-type|list-style|margin-bottom|margin-left|margin-right|margin-top|margin|mark-after|mark-before|mark|marks|marquee-direction|marquee-play-count|marquee-speed|marquee-style|max-height|max-width|min-height|min-width|move-to|nav-down|nav-index|nav-left|nav-right|nav-up|opacity|orphans|outline-color|outline-offset|outline-style|outline-width|outline|overflow-style|overflow-x|overflow-y|overflow|padding-bottom|padding-left|padding-right|padding-top|padding|page-break-after|page-break-before|page-break-inside|page-policy|page|pause-after|pause-before|pause|perspective-origin|perspective|phonemes|pitch-range|pitch|play-during|pointer-events|position|presentation-level|punctuation-trim|quotes|rendering-intent|resize|rest-after|rest-before|rest|richness|right|rotation-point|rotation|ruby-align|ruby-overhang|ruby-position|ruby-span|size|speak-header|speak-numeral|speak-punctuation|speak|speech-rate|stress|string-set|table-layout|target-name|target-new|target-position|target|text-align-last|text-align|text-decoration|text-emphasis|text-height|text-indent|text-justify|text-outline|text-shadow|text-transform|text-wrap|top|transform-origin|transform-style|transform|transition-delay|transition-duration|transition-property|transition-timing-function|transition|unicode-bidi|vertical-align|visibility|voice-balance|voice-duration|voice-family|voice-pitch-range|voice-pitch|voice-rate|voice-stress|voice-volume|volume|white-space-collapse|white-space|widows|width|word-break|word-spacing|word-wrap|z-index"; -var supportFunction = exports.supportFunction = "rgb|rgba|url|attr|counter|counters"; -var supportConstant = exports.supportConstant = "absolute|after-edge|after|all-scroll|all|alphabetic|always|antialiased|armenian|auto|avoid-column|avoid-page|avoid|balance|baseline|before-edge|before|below|bidi-override|block-line-height|block|bold|bolder|border-box|both|bottom|box|break-all|break-word|capitalize|caps-height|caption|center|central|char|circle|cjk-ideographic|clone|close-quote|col-resize|collapse|column|consider-shifts|contain|content-box|cover|crosshair|cubic-bezier|dashed|decimal-leading-zero|decimal|default|disabled|disc|disregard-shifts|distribute-all-lines|distribute-letter|distribute-space|distribute|dotted|double|e-resize|ease-in|ease-in-out|ease-out|ease|ellipsis|end|exclude-ruby|fill|fixed|georgian|glyphs|grid-height|groove|hand|hanging|hebrew|help|hidden|hiragana-iroha|hiragana|horizontal|icon|ideograph-alpha|ideograph-numeric|ideograph-parenthesis|ideograph-space|ideographic|inactive|include-ruby|inherit|initial|inline-block|inline-box|inline-line-height|inline-table|inline|inset|inside|inter-ideograph|inter-word|invert|italic|justify|katakana-iroha|katakana|keep-all|last|left|lighter|line-edge|line-through|line|linear|list-item|local|loose|lower-alpha|lower-greek|lower-latin|lower-roman|lowercase|lr-tb|ltr|mathematical|max-height|max-size|medium|menu|message-box|middle|move|n-resize|ne-resize|newspaper|no-change|no-close-quote|no-drop|no-open-quote|no-repeat|none|normal|not-allowed|nowrap|nw-resize|oblique|open-quote|outset|outside|overline|padding-box|page|pointer|pre-line|pre-wrap|pre|preserve-3d|progress|relative|repeat-x|repeat-y|repeat|replaced|reset-size|ridge|right|round|row-resize|rtl|s-resize|scroll|se-resize|separate|slice|small-caps|small-caption|solid|space|square|start|static|status-bar|step-end|step-start|steps|stretch|strict|sub|super|sw-resize|table-caption|table-cell|table-column-group|table-column|table-footer-group|table-header-group|table-row-group|table-row|table|tb-rl|text-after-edge|text-before-edge|text-bottom|text-size|text-top|text|thick|thin|transparent|underline|upper-alpha|upper-latin|upper-roman|uppercase|use-script|vertical-ideographic|vertical-text|visible|w-resize|wait|whitespace|z-index|zero"; -var supportConstantColor = exports.supportConstantColor = "aqua|black|blue|fuchsia|gray|green|lime|maroon|navy|olive|orange|purple|red|silver|teal|white|yellow"; -var supportConstantFonts = exports.supportConstantFonts = "arial|century|comic|courier|garamond|georgia|helvetica|impact|lucida|symbol|system|tahoma|times|trebuchet|utopia|verdana|webdings|sans-serif|serif|monospace"; - -var numRe = exports.numRe = "\\-?(?:(?:[0-9]+)|(?:[0-9]*\\.[0-9]+))"; -var pseudoElements = exports.pseudoElements = "(\\:+)\\b(after|before|first-letter|first-line|moz-selection|selection)\\b"; -var pseudoClasses = exports.pseudoClasses = "(:)\\b(active|checked|disabled|empty|enabled|first-child|first-of-type|focus|hover|indeterminate|invalid|last-child|last-of-type|link|not|nth-child|nth-last-child|nth-last-of-type|nth-of-type|only-child|only-of-type|required|root|target|valid|visited)\\b"; - -var CssHighlightRules = function() { - - var keywordMapper = this.createKeywordMapper({ - "support.function": supportFunction, - "support.constant": supportConstant, - "support.type": supportType, - "support.constant.color": supportConstantColor, - "support.constant.fonts": supportConstantFonts - }, "text", true); - - this.$rules = { - "start" : [{ - token : "comment", // multi line comment - regex : "\\/\\*", - push : "comment" - }, { - token: "paren.lparen", - regex: "\\{", - push: "ruleset" - }, { - token: "string", - regex: "@.*?{", - push: "media" - }, { - token: "keyword", - regex: "#[a-z0-9-_]+" - }, { - token: "variable", - regex: "\\.[a-z0-9-_]+" - }, { - token: "string", - regex: ":[a-z0-9-_]+" - }, { - token: "constant", - regex: "[a-z0-9-_]+" - }, { - caseInsensitive: true - }], - - "media" : [{ - token : "comment", // multi line comment - regex : "\\/\\*", - push : "comment" - }, { - token: "paren.lparen", - regex: "\\{", - push: "ruleset" - }, { - token: "string", - regex: "\\}", - next: "pop" - }, { - token: "keyword", - regex: "#[a-z0-9-_]+" - }, { - token: "variable", - regex: "\\.[a-z0-9-_]+" - }, { - token: "string", - regex: ":[a-z0-9-_]+" - }, { - token: "constant", - regex: "[a-z0-9-_]+" - }, { - caseInsensitive: true - }], - - "comment" : [{ - token : "comment", - regex : "\\*\\/", - next : "pop" - }, { - defaultToken : "comment" - }], - - "ruleset" : [ - { - token : "paren.rparen", - regex : "\\}", - next: "pop" - }, { - token : "comment", // multi line comment - regex : "\\/\\*", - push : "comment" - }, { - token : "string", // single line - regex : '["](?:(?:\\\\.)|(?:[^"\\\\]))*?["]' - }, { - token : "string", // single line - regex : "['](?:(?:\\\\.)|(?:[^'\\\\]))*?[']" - }, { - token : ["constant.numeric", "keyword"], - regex : "(" + numRe + ")(ch|cm|deg|em|ex|fr|gd|grad|Hz|in|kHz|mm|ms|pc|pt|px|rad|rem|s|turn|vh|vm|vw|%)" - }, { - token : "constant.numeric", - regex : numRe - }, { - token : "constant.numeric", // hex6 color - regex : "#[a-f0-9]{6}" - }, { - token : "constant.numeric", // hex3 color - regex : "#[a-f0-9]{3}" - }, { - token : ["punctuation", "entity.other.attribute-name.pseudo-element.css"], - regex : pseudoElements - }, { - token : ["punctuation", "entity.other.attribute-name.pseudo-class.css"], - regex : pseudoClasses - }, { - token : ["support.function", "string", "support.function"], - regex : "(url\\()(.*)(\\))" - }, { - token : keywordMapper, - regex : "\\-?[a-zA-Z_][a-zA-Z0-9_\\-]*" - }, { - caseInsensitive: true - }] - }; - - this.normalizeRules(); -}; - -oop.inherits(CssHighlightRules, TextHighlightRules); - -exports.CssHighlightRules = CssHighlightRules; - -}); - -ace.define('ace/mode/behaviour/css', ['require', 'exports', 'module' , 'ace/lib/oop', 'ace/mode/behaviour', 'ace/mode/behaviour/cstyle', 'ace/token_iterator'], function(require, exports, module) { - - -var oop = require("../../lib/oop"); -var Behaviour = require("../behaviour").Behaviour; -var CstyleBehaviour = require("./cstyle").CstyleBehaviour; -var TokenIterator = require("../../token_iterator").TokenIterator; - -var CssBehaviour = function () { - - this.inherit(CstyleBehaviour); - - this.add("colon", "insertion", function (state, action, editor, session, text) { - if (text === ':') { - var cursor = editor.getCursorPosition(); - var iterator = new TokenIterator(session, cursor.row, cursor.column); - var token = iterator.getCurrentToken(); - if (token && token.value.match(/\s+/)) { - token = iterator.stepBackward(); - } - if (token && token.type === 'support.type') { - var line = session.doc.getLine(cursor.row); - var rightChar = line.substring(cursor.column, cursor.column + 1); - if (rightChar === ':') { - return { - text: '', - selection: [1, 1] - } - } - if (!line.substring(cursor.column).match(/^\s*;/)) { - return { - text: ':;', - selection: [1, 1] - } - } - } - } - }); - - this.add("colon", "deletion", function (state, action, editor, session, range) { - var selected = session.doc.getTextRange(range); - if (!range.isMultiLine() && selected === ':') { - var cursor = editor.getCursorPosition(); - var iterator = new TokenIterator(session, cursor.row, cursor.column); - var token = iterator.getCurrentToken(); - if (token && token.value.match(/\s+/)) { - token = iterator.stepBackward(); - } - if (token && token.type === 'support.type') { - var line = session.doc.getLine(range.start.row); - var rightChar = line.substring(range.end.column, range.end.column + 1); - if (rightChar === ';') { - range.end.column ++; - return range; - } - } - } - }); - - this.add("semicolon", "insertion", function (state, action, editor, session, text) { - if (text === ';') { - var cursor = editor.getCursorPosition(); - var line = session.doc.getLine(cursor.row); - var rightChar = line.substring(cursor.column, cursor.column + 1); - if (rightChar === ';') { - return { - text: '', - selection: [1, 1] - } - } - } - }); - -} -oop.inherits(CssBehaviour, CstyleBehaviour); - -exports.CssBehaviour = CssBehaviour; -}); - -ace.define('ace/mode/html_highlight_rules', ['require', 'exports', 'module' , 'ace/lib/oop', 'ace/lib/lang', 'ace/mode/css_highlight_rules', 'ace/mode/javascript_highlight_rules', 'ace/mode/xml_highlight_rules'], function(require, exports, module) { - - -var oop = require("../lib/oop"); -var lang = require("../lib/lang"); -var CssHighlightRules = require("./css_highlight_rules").CssHighlightRules; -var JavaScriptHighlightRules = require("./javascript_highlight_rules").JavaScriptHighlightRules; -var XmlHighlightRules = require("./xml_highlight_rules").XmlHighlightRules; - -var tagMap = lang.createMap({ - a : 'anchor', - button : 'form', - form : 'form', - img : 'image', - input : 'form', - label : 'form', - option : 'form', - script : 'script', - select : 'form', - textarea : 'form', - style : 'style', - table : 'table', - tbody : 'table', - td : 'table', - tfoot : 'table', - th : 'table', - tr : 'table' -}); - -var HtmlHighlightRules = function() { - XmlHighlightRules.call(this); - - this.addRules({ - attributes: [{ - include : "space" - }, { - token : "entity.other.attribute-name", - regex : "[-_a-zA-Z0-9:]+" - }, { - token : "keyword.operator.separator", - regex : "=", - push : [{ - include: "space" - }, { - token : "string", - regex : "[^<>='\"`\\s]+", - next : "pop" - }, { - token : "empty", - regex : "", - next : "pop" - }] - }, { - include : "string" - }], - tag: [{ - token : function(start, tag) { - var group = tagMap[tag]; - return ["meta.tag.punctuation.begin", - "meta.tag.name" + (group ? "." + group : "")]; - }, - regex : "(<)([-_a-zA-Z0-9:]+)", - next: "start_tag_stuff" - }, { - token : function(start, tag) { - var group = tagMap[tag]; - return ["meta.tag.punctuation.begin", - "meta.tag.name" + (group ? "." + group : "")]; - }, - regex : "(", next : "start"} - ], - end_tag_stuff: [ - {include : "space"}, - {token : "meta.tag.punctuation.end", regex : ">", next : "start"} - ] - }); - - this.embedTagRules(CssHighlightRules, "css-", "style"); - this.embedTagRules(JavaScriptHighlightRules, "js-", "script"); - - if (this.constructor === HtmlHighlightRules) - this.normalizeRules(); -}; - -oop.inherits(HtmlHighlightRules, XmlHighlightRules); - -exports.HtmlHighlightRules = HtmlHighlightRules; -}); - -ace.define('ace/mode/xml_highlight_rules', ['require', 'exports', 'module' , 'ace/lib/oop', 'ace/mode/xml_util', 'ace/mode/text_highlight_rules'], function(require, exports, module) { - - -var oop = require("../lib/oop"); -var xmlUtil = require("./xml_util"); -var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; - -var XmlHighlightRules = function(normalize) { - this.$rules = { - start : [ - {token : "punctuation.string.begin", regex : "<\\!\\[CDATA\\[", next : "cdata"}, - { - token : ["punctuation.instruction.begin", "keyword.instruction"], - regex : "(<\\?)(xml)(?=[\\s])", next : "xml_declaration" - }, - { - token : ["punctuation.instruction.begin", "keyword.instruction"], - regex : "(<\\?)([-_a-zA-Z0-9]+)", next : "instruction" - }, - {token : "comment", regex : "<\\!--", next : "comment"}, - { - token : ["punctuation.doctype.begin", "meta.tag.doctype"], - regex : "(<\\!)(DOCTYPE)(?=[\\s])", next : "doctype" - }, - {include : "tag"}, - {include : "reference"} - ], - - xml_declaration : [ - {include : "attributes"}, - {include : "instruction"} - ], - - instruction : [ - {token : "punctuation.instruction.end", regex : "\\?>", next : "start"} - ], - - doctype : [ - {include : "space"}, - {include : "string"}, - {token : "punctuation.doctype.end", regex : ">", next : "start"}, - {token : "xml-pe", regex : "[-_a-zA-Z0-9:]+"}, - {token : "punctuation.begin", regex : "\\[", push : "declarations"} - ], - - declarations : [{ - token : "text", - regex : "\\s+" - }, { - token: "punctuation.end", - regex: "]", - next: "pop" - }, { - token : ["punctuation.begin", "keyword"], - regex : "(<\\!)([-_a-zA-Z0-9]+)", - push : [{ - token : "text", - regex : "\\s+" - }, - { - token : "punctuation.end", - regex : ">", - next : "pop" - }, - {include : "string"}] - }], - - cdata : [ - {token : "string.end", regex : "\\]\\]>", next : "start"}, - {token : "text", regex : "\\s+"}, - {token : "text", regex : "(?:[^\\]]|\\](?!\\]>))+"} - ], - - comment : [ - {token : "comment", regex : "-->", next : "start"}, - {defaultToken : "comment"} - ], - - tag : [{ - token : ["meta.tag.punctuation.begin", "meta.tag.name"], - regex : "(<)((?:[-_a-zA-Z0-9]+:)?[-_a-zA-Z0-9]+)", - next: [ - {include : "attributes"}, - {token : "meta.tag.punctuation.end", regex : "/?>", next : "start"} - ] - }, { - token : ["meta.tag.punctuation.begin", "meta.tag.name"], - regex : "(", next : "start"} - ] - }], - - space : [ - {token : "text", regex : "\\s+"} - ], - - reference : [{ - token : "constant.language.escape", - regex : "(?:&#[0-9]+;)|(?:&#x[0-9a-fA-F]+;)|(?:&[a-zA-Z0-9_:\\.-]+;)" - }, { - token : "text", regex : "&" - }], - - string: [{ - token : "string", - regex : "'", - push : "qstring_inner" - }, { - token : "string", - regex : '"', - push : "qqstring_inner" - }], - - qstring_inner: [ - {token : "string", regex: "'", next: "pop"}, - {include : "reference"}, - {defaultToken : "string"} - ], - - qqstring_inner: [ - {token : "string", regex: '"', next: "pop"}, - {include : "reference"}, - {defaultToken : "string"} - ], - - attributes: [{ - token : "entity.other.attribute-name", - regex : "(?:[-_a-zA-Z0-9]+:)?[-_a-zA-Z0-9]+" - }, { - token : "keyword.operator.separator", - regex : "=" - }, { - include : "space" - }, { - include : "string" - }] - }; - - if (this.constructor === XmlHighlightRules) - this.normalizeRules(); -}; - - -(function() { - - this.embedTagRules = function(HighlightRules, prefix, tag){ - this.$rules.tag.unshift({ - token : ["meta.tag.punctuation.begin", "meta.tag.name." + tag], - regex : "(<)(" + tag + ")", - next: [ - {include : "space"}, - {include : "attributes"}, - {token : "meta.tag.punctuation.end", regex : "/?>", next : prefix + "start"} - ] - }); - - this.$rules[tag + "-end"] = [ - {include : "space"}, - {token : "meta.tag.punctuation.end", regex : ">", next: "start", - onMatch : function(value, currentState, stack) { - stack.splice(0); - return this.token; - }} - ] - - this.embedRules(HighlightRules, prefix, [{ - token: ["meta.tag.punctuation.begin", "meta.tag.name." + tag], - regex : "(" - }]); - }; - -}).call(TextHighlightRules.prototype); - -oop.inherits(XmlHighlightRules, TextHighlightRules); - -exports.XmlHighlightRules = XmlHighlightRules; -}); - -ace.define('ace/mode/xml_util', ['require', 'exports', 'module' ], function(require, exports, module) { - - -function string(state) { - return [{ - token : "string", - regex : '"', - next : state + "_qqstring" - }, { - token : "string", - regex : "'", - next : state + "_qstring" - }]; -} - -function multiLineString(quote, state) { - return [ - {token : "string", regex : quote, next : state}, - { - token : "constant.language.escape", - regex : "(?:&#[0-9]+;)|(?:&#x[0-9a-fA-F]+;)|(?:&[a-zA-Z0-9_:\\.-]+;)" - }, - {defaultToken : "string"} - ]; -} - -exports.tag = function(states, name, nextState, tagMap) { - states[name] = [{ - token : "text", - regex : "\\s+" - }, { - - token : !tagMap ? "meta.tag.tag-name" : function(value) { - if (tagMap[value]) - return "meta.tag.tag-name." + tagMap[value]; - else - return "meta.tag.tag-name"; - }, - regex : "[-_a-zA-Z0-9:]+", - next : name + "_embed_attribute_list" - }, { - token: "empty", - regex: "", - next : name + "_embed_attribute_list" - }]; - - states[name + "_qstring"] = multiLineString("'", name + "_embed_attribute_list"); - states[name + "_qqstring"] = multiLineString("\"", name + "_embed_attribute_list"); - - states[name + "_embed_attribute_list"] = [{ - token : "meta.tag.r", - regex : "/?>", - next : nextState - }, { - token : "keyword.operator", - regex : "=" - }, { - token : "entity.other.attribute-name", - regex : "[-_a-zA-Z0-9:]+" - }, { - token : "constant.numeric", // float - regex : "[+-]?\\d+(?:(?:\\.\\d*)?(?:[eE][+-]?\\d+)?)?\\b" - }, { - token : "text", - regex : "\\s+" - }].concat(string(name)); -}; - -}); - -ace.define('ace/mode/behaviour/html', ['require', 'exports', 'module' , 'ace/lib/oop', 'ace/mode/behaviour/xml', 'ace/mode/behaviour/cstyle', 'ace/token_iterator'], function(require, exports, module) { - - -var oop = require("../../lib/oop"); -var XmlBehaviour = require("../behaviour/xml").XmlBehaviour; -var CstyleBehaviour = require("./cstyle").CstyleBehaviour; -var TokenIterator = require("../../token_iterator").TokenIterator; -var voidElements = ['area', 'base', 'br', 'col', 'command', 'embed', 'hr', 'img', 'input', 'keygen', 'link', 'meta', 'param', 'source', 'track', 'wbr']; - -function hasType(token, type) { - var tokenTypes = token.type.split('.'); - return type.split('.').every(function(type){ - return (tokenTypes.indexOf(type) !== -1); - }); - return hasType; -} - -var HtmlBehaviour = function () { - - this.inherit(XmlBehaviour); // Get xml behaviour - - this.add("autoclosing", "insertion", function (state, action, editor, session, text) { - if (text == '>') { - var position = editor.getCursorPosition(); - var iterator = new TokenIterator(session, position.row, position.column); - var token = iterator.getCurrentToken(); - - if (token && hasType(token, 'string') && iterator.getCurrentTokenColumn() + token.value.length > position.column) - return; - var atCursor = false; - if (!token || !hasType(token, 'meta.tag') && !(hasType(token, 'text') && token.value.match('/'))){ - do { - token = iterator.stepBackward(); - } while (token && (hasType(token, 'string') || hasType(token, 'keyword.operator') || hasType(token, 'entity.attribute-name') || hasType(token, 'text'))); - } else { - atCursor = true; - } - if (!token || !hasType(token, 'meta.tag.name') || iterator.stepBackward().value.match('/')) { - return; - } - var element = token.value; - if (atCursor){ - var element = element.substring(0, position.column - token.start); - } - if (voidElements.indexOf(element) !== -1){ - return; - } - return { - text: '>' + '', - selection: [1, 1] - } - } - }); -} -oop.inherits(HtmlBehaviour, XmlBehaviour); - -exports.HtmlBehaviour = HtmlBehaviour; -}); - -ace.define('ace/mode/behaviour/xml', ['require', 'exports', 'module' , 'ace/lib/oop', 'ace/mode/behaviour', 'ace/mode/behaviour/cstyle', 'ace/token_iterator'], function(require, exports, module) { - - -var oop = require("../../lib/oop"); -var Behaviour = require("../behaviour").Behaviour; -var CstyleBehaviour = require("./cstyle").CstyleBehaviour; -var TokenIterator = require("../../token_iterator").TokenIterator; - -function hasType(token, type) { - var tokenTypes = token.type.split('.'); - return type.split('.').every(function(type){ - return (tokenTypes.indexOf(type) !== -1); - }); - return hasType; -} - -var XmlBehaviour = function () { - - this.inherit(CstyleBehaviour, ["string_dquotes"]); // Get string behaviour - - this.add("autoclosing", "insertion", function (state, action, editor, session, text) { - if (text == '>') { - var position = editor.getCursorPosition(); - var iterator = new TokenIterator(session, position.row, position.column); - var token = iterator.getCurrentToken(); - - if (token && hasType(token, 'string') && iterator.getCurrentTokenColumn() + token.value.length > position.column) - return; - var atCursor = false; - if (!token || !hasType(token, 'meta.tag') && !(hasType(token, 'text') && token.value.match('/'))){ - do { - token = iterator.stepBackward(); - } while (token && (hasType(token, 'string') || hasType(token, 'keyword.operator') || hasType(token, 'entity.attribute-name') || hasType(token, 'text'))); - } else { - atCursor = true; - } - if (!token || !hasType(token, 'meta.tag.name') || iterator.stepBackward().value.match('/')) { - return; - } - var tag = token.value; - if (atCursor){ - var tag = tag.substring(0, position.column - token.start); - } - - return { - text: '>' + '', - selection: [1, 1] - } - } - }); - - this.add('autoindent', 'insertion', function (state, action, editor, session, text) { - if (text == "\n") { - var cursor = editor.getCursorPosition(); - var line = session.getLine(cursor.row); - var rightChars = line.substring(cursor.column, cursor.column + 2); - if (rightChars == '?)/; - this._parseTag = function(tag) { - - var match = tag.match(this.tagRe); - var column = 0; - - return { - value: tag, - match: match ? match[2] : "", - closing: match ? !!match[3] : false, - selfClosing: match ? !!match[5] || match[2] == "/>" : false, - tagName: match ? match[4] : "", - column: match[1] ? column + match[1].length : column - }; - }; - this._readTagForward = function(iterator) { - var token = iterator.getCurrentToken(); - if (!token) - return null; - - var value = ""; - var start; - - do { - if (token.type.lastIndexOf("meta.tag", 0) === 0) { - if (!start) { - var start = { - row: iterator.getCurrentTokenRow(), - column: iterator.getCurrentTokenColumn() - }; - } - value += token.value; - if (value.indexOf(">") !== -1) { - var tag = this._parseTag(value); - tag.start = start; - tag.end = { - row: iterator.getCurrentTokenRow(), - column: iterator.getCurrentTokenColumn() + token.value.length - }; - iterator.stepForward(); - return tag; - } - } - } while(token = iterator.stepForward()); - - return null; - }; - - this._readTagBackward = function(iterator) { - var token = iterator.getCurrentToken(); - if (!token) - return null; - - var value = ""; - var end; - - do { - if (token.type.lastIndexOf("meta.tag", 0) === 0) { - if (!end) { - end = { - row: iterator.getCurrentTokenRow(), - column: iterator.getCurrentTokenColumn() + token.value.length - }; - } - value = token.value + value; - if (value.indexOf("<") !== -1) { - var tag = this._parseTag(value); - tag.end = end; - tag.start = { - row: iterator.getCurrentTokenRow(), - column: iterator.getCurrentTokenColumn() - }; - iterator.stepBackward(); - return tag; - } - } - } while(token = iterator.stepBackward()); - - return null; - }; - - this._pop = function(stack, tag) { - while (stack.length) { - - var top = stack[stack.length-1]; - if (!tag || top.tagName == tag.tagName) { - return stack.pop(); - } - else if (this.voidElements[tag.tagName]) { - return; - } - else if (this.voidElements[top.tagName]) { - stack.pop(); - continue; - } else { - return null; - } - } - }; - - this.getFoldWidgetRange = function(session, foldStyle, row) { - var firstTag = this._getFirstTagInLine(session, row); - - if (!firstTag.match) - return null; - - var isBackward = firstTag.closing || firstTag.selfClosing; - var stack = []; - var tag; - - if (!isBackward) { - var iterator = new TokenIterator(session, row, firstTag.column); - var start = { - row: row, - column: firstTag.column + firstTag.tagName.length + 2 - }; - while (tag = this._readTagForward(iterator)) { - if (tag.selfClosing) { - if (!stack.length) { - tag.start.column += tag.tagName.length + 2; - tag.end.column -= 2; - return Range.fromPoints(tag.start, tag.end); - } else - continue; - } - - if (tag.closing) { - this._pop(stack, tag); - if (stack.length == 0) - return Range.fromPoints(start, tag.start); - } - else { - stack.push(tag) - } - } - } - else { - var iterator = new TokenIterator(session, row, firstTag.column + firstTag.match.length); - var end = { - row: row, - column: firstTag.column - }; - - while (tag = this._readTagBackward(iterator)) { - if (tag.selfClosing) { - if (!stack.length) { - tag.start.column += tag.tagName.length + 2; - tag.end.column -= 2; - return Range.fromPoints(tag.start, tag.end); - } else - continue; - } - - if (!tag.closing) { - this._pop(stack, tag); - if (stack.length == 0) { - tag.start.column += tag.tagName.length + 2; - return Range.fromPoints(tag.start, end); - } - } - else { - stack.push(tag) - } - } - } - - }; - -}).call(FoldMode.prototype); - -}); - -ace.define('ace/mode/html_completions', ['require', 'exports', 'module' , 'ace/token_iterator'], function(require, exports, module) { - - -var TokenIterator = require("../token_iterator").TokenIterator; - -var commonAttributes = [ - "accesskey", - "class", - "contenteditable", - "contextmenu", - "dir", - "draggable", - "dropzone", - "hidden", - "id", - "lang", - "spellcheck", - "style", - "tabindex", - "title", - "translate" -]; - -var eventAttributes = [ - "onabort", - "onblur", - "oncancel", - "oncanplay", - "oncanplaythrough", - "onchange", - "onclick", - "onclose", - "oncontextmenu", - "oncuechange", - "ondblclick", - "ondrag", - "ondragend", - "ondragenter", - "ondragleave", - "ondragover", - "ondragstart", - "ondrop", - "ondurationchange", - "onemptied", - "onended", - "onerror", - "onfocus", - "oninput", - "oninvalid", - "onkeydown", - "onkeypress", - "onkeyup", - "onload", - "onloadeddata", - "onloadedmetadata", - "onloadstart", - "onmousedown", - "onmousemove", - "onmouseout", - "onmouseover", - "onmouseup", - "onmousewheel", - "onpause", - "onplay", - "onplaying", - "onprogress", - "onratechange", - "onreset", - "onscroll", - "onseeked", - "onseeking", - "onselect", - "onshow", - "onstalled", - "onsubmit", - "onsuspend", - "ontimeupdate", - "onvolumechange", - "onwaiting" -]; - -var globalAttributes = commonAttributes.concat(eventAttributes); - -var attributeMap = { - "html": ["manifest"], - "head": [], - "title": [], - "base": ["href", "target"], - "link": ["href", "hreflang", "rel", "media", "type", "sizes"], - "meta": ["http-equiv", "name", "content", "charset"], - "style": ["type", "media", "scoped"], - "script": ["charset", "type", "src", "defer", "async"], - "noscript": ["href"], - "body": ["onafterprint", "onbeforeprint", "onbeforeunload", "onhashchange", "onmessage", "onoffline", "onpopstate", "onredo", "onresize", "onstorage", "onundo", "onunload"], - "section": [], - "nav": [], - "article": ["pubdate"], - "aside": [], - "h1": [], - "h2": [], - "h3": [], - "h4": [], - "h5": [], - "h6": [], - "header": [], - "footer": [], - "address": [], - "main": [], - "p": [], - "hr": [], - "pre": [], - "blockquote": ["cite"], - "ol": ["start", "reversed"], - "ul": [], - "li": ["value"], - "dl": [], - "dt": [], - "dd": [], - "figure": [], - "figcaption": [], - "div": [], - "a": ["href", "target", "ping", "rel", "media", "hreflang", "type"], - "em": [], - "strong": [], - "small": [], - "s": [], - "cite": [], - "q": ["cite"], - "dfn": [], - "abbr": [], - "data": [], - "time": ["datetime"], - "code": [], - "var": [], - "samp": [], - "kbd": [], - "sub": [], - "sup": [], - "i": [], - "b": [], - "u": [], - "mark": [], - "ruby": [], - "rt": [], - "rp": [], - "bdi": [], - "bdo": [], - "span": [], - "br": [], - "wbr": [], - "ins": ["cite", "datetime"], - "del": ["cite", "datetime"], - "img": ["alt", "src", "height", "width", "usemap", "ismap"], - "iframe": ["name", "src", "height", "width", "sandbox", "seamless"], - "embed": ["src", "height", "width", "type"], - "object": ["param", "data", "type", "height" , "width", "usemap", "name", "form", "classid"], - "param": ["name", "value"], - "video": ["src", "autobuffer", "autoplay", "loop", "controls", "width", "height", "poster"], - "audio": ["src", "autobuffer", "autoplay", "loop", "controls"], - "source": ["src", "type", "media"], - "track": ["kind", "src", "srclang", "label", "default"], - "canvas": ["width", "height"], - "map": ["name"], - "area": ["shape", "coords", "href", "hreflang", "alt", "target", "media", "rel", "ping", "type"], - "svg": [], - "math": [], - "table": ["summary"], - "caption": [], - "colgroup": ["span"], - "col": ["span"], - "tbody": [], - "thead": [], - "tfoot": [], - "tr": [], - "td": ["headers", "rowspan", "colspan"], - "th": ["headers", "rowspan", "colspan", "scope"], - "form": ["accept-charset", "action", "autocomplete", "enctype", "method", "name", "novalidate", "target"], - "fieldset": ["disabled", "form", "name"], - "legend": [], - "label": ["form", "for"], - "input": ["type", "accept", "alt", "autocomplete", "checked", "disabled", "form", "formaction", "formenctype", "formmethod", "formnovalidate", "formtarget", "height", "list", "max", "maxlength", "min", "multiple", "pattern", "placeholder", "readonly", "required", "size", "src", "step", "width", "files", "value"], - "button": ["autofocus", "disabled", "form", "formaction", "formenctype", "formmethod", "formnovalidate", "formtarget", "name", "value", "type"], - "select": ["autofocus", "disabled", "form", "multiple", "name", "size"], - "datalist": [], - "optgroup": ["disabled", "label"], - "option": ["disabled", "selected", "label", "value"], - "textarea": ["autofocus", "disabled", "form", "maxlength", "name", "placeholder", "readonly", "required", "rows", "cols", "wrap"], - "keygen": ["autofocus", "challenge", "disabled", "form", "keytype", "name"], - "output": ["for", "form", "name"], - "progress": ["value", "max"], - "meter": ["value", "min", "max", "low", "high", "optimum"], - "details": ["open"], - "summary": [], - "command": ["type", "label", "icon", "disabled", "checked", "radiogroup", "command"], - "menu": ["type", "label"], - "dialog": ["open"] -}; - -var allElements = Object.keys(attributeMap); - -function hasType(token, type) { - var tokenTypes = token.type.split('.'); - return type.split('.').every(function(type){ - return (tokenTypes.indexOf(type) !== -1); - }); -} - -function findTagName(session, pos) { - var iterator = new TokenIterator(session, pos.row, pos.column); - var token = iterator.getCurrentToken(); - if (!token || !hasType(token, 'tag') && !(hasType(token, 'text') && token.value.match('/'))){ - do { - token = iterator.stepBackward(); - } while (token && (hasType(token, 'string') || hasType(token, 'operator') || hasType(token, 'attribute-name') || hasType(token, 'text'))); - } - if (token && hasType(token, 'tag-name') && !iterator.stepBackward().value.match('/')) - return token.value; -} - -var HtmlCompletions = function() { - -}; - -(function() { - - this.getCompletions = function(state, session, pos, prefix) { - var token = session.getTokenAt(pos.row, pos.column); - - if (!token) - return []; - if (hasType(token, "tag-name") || (token.value == '<' && hasType(token, "text"))) - return this.getTagCompletions(state, session, pos, prefix); - if (hasType(token, 'text') || hasType(token, 'attribute-name')) - return this.getAttributeCompetions(state, session, pos, prefix); - - return []; - }; - - this.getTagCompletions = function(state, session, pos, prefix) { - var elements = allElements; - if (prefix) { - elements = elements.filter(function(element){ - return element.indexOf(prefix) === 0; - }); - } - return elements.map(function(element){ - return { - value: element, - meta: "tag" - }; - }); - }; - - this.getAttributeCompetions = function(state, session, pos, prefix) { - var tagName = findTagName(session, pos); - if (!tagName) - return []; - var attributes = globalAttributes; - if (tagName in attributeMap) { - attributes = attributes.concat(attributeMap[tagName]); - } - if (prefix) { - attributes = attributes.filter(function(attribute){ - return attribute.indexOf(prefix) === 0; - }); - } - return attributes.map(function(attribute){ - return { - caption: attribute, - snippet: attribute + '="$0"', - meta: "attribute" - }; - }); - }; - -}).call(HtmlCompletions.prototype); - -exports.HtmlCompletions = HtmlCompletions; -}); - -ace.define('ace/mode/handlebars_highlight_rules', ['require', 'exports', 'module' , 'ace/lib/oop', 'ace/mode/html_highlight_rules', 'ace/mode/xml_util'], function(require, exports, module) { - - -var oop = require("../lib/oop"); -var HtmlHighlightRules = require("./html_highlight_rules").HtmlHighlightRules; -var xmlUtil = require("./xml_util"); -function pop2(currentState, stack) { - stack.splice(0, 3); - return stack.shift() || "start"; -} -var HandlebarsHighlightRules = function() { - HtmlHighlightRules.call(this); - var hbs = { - regex : "(?={{)", - push : "handlebars" - } - for (var key in this.$rules) { - this.$rules[key].unshift(hbs); - } - this.$rules.handlebars = [{ - token : "comment.start", - regex : "{{!--", - push : [{ - token : "comment.end", - regex : "--}}", - next : pop2 - }, { - defaultToken : "comment" - }] - }, { - token : "comment.start", - regex : "{{!", - push : [{ - token : "comment.end", - regex : "}}", - next : pop2 - }, { - defaultToken : "comment" - }] - }, { - token : "storage.type.start", // begin section - regex : "{{[#\\^/&]?", - push : [{ - token : "storage.type.end", - regex : "}}", - next : pop2 - }, { - token : "variable.parameter", - regex : "[a-zA-Z_$][a-zA-Z0-9_$]*" - }] - }, { - token : "support.function", // unescaped variable - regex : "{{{", - push : [{ - token : "support.function", - regex : "}}}", - next : pop2 - }, { - token : "variable.parameter", - regex : "[a-zA-Z_$][a-zA-Z0-9_$]*" - }] - }]; - - this.normalizeRules(); -}; - -oop.inherits(HandlebarsHighlightRules, HtmlHighlightRules); - -exports.HandlebarsHighlightRules = HandlebarsHighlightRules; -}); diff --git a/IDE/jsrealb-ide/ace-src-noconflict/mode-haskell.js b/IDE/jsrealb-ide/ace-src-noconflict/mode-haskell.js deleted file mode 100644 index a81e71e8..00000000 --- a/IDE/jsrealb-ide/ace-src-noconflict/mode-haskell.js +++ /dev/null @@ -1,362 +0,0 @@ -/* ***** BEGIN LICENSE BLOCK ***** - * Distributed under the BSD license: - * - * Copyright (c) 2012, Ajax.org B.V. - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are met: - * * Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * * Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * * Neither the name of Ajax.org B.V. nor the - * names of its contributors may be used to endorse or promote products - * derived from this software without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND - * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED - * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE - * DISCLAIMED. IN NO EVENT SHALL AJAX.ORG B.V. BE LIABLE FOR ANY - * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES - * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; - * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND - * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - * - * - * Contributor(s): - * - * - * - * ***** END LICENSE BLOCK ***** */ - -ace.define('ace/mode/haskell', ['require', 'exports', 'module' , 'ace/lib/oop', 'ace/mode/text', 'ace/tokenizer', 'ace/mode/haskell_highlight_rules', 'ace/mode/folding/cstyle'], function(require, exports, module) { - - -var oop = require("../lib/oop"); -var TextMode = require("./text").Mode; -var Tokenizer = require("../tokenizer").Tokenizer; -var HaskellHighlightRules = require("./haskell_highlight_rules").HaskellHighlightRules; -var FoldMode = require("./folding/cstyle").FoldMode; - -var Mode = function() { - this.HighlightRules = HaskellHighlightRules; - this.foldingRules = new FoldMode(); -}; -oop.inherits(Mode, TextMode); - -(function() { - this.lineCommentStart = "--"; - this.blockComment = {start: "/*", end: "*/"}; - this.$id = "ace/mode/haskell"; -}).call(Mode.prototype); - -exports.Mode = Mode; -}); - -ace.define('ace/mode/haskell_highlight_rules', ['require', 'exports', 'module' , 'ace/lib/oop', 'ace/mode/text_highlight_rules'], function(require, exports, module) { - - -var oop = require("../lib/oop"); -var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; - -var HaskellHighlightRules = function() { - - this.$rules = { start: - [ { token: - [ 'punctuation.definition.entity.haskell', - 'keyword.operator.function.infix.haskell', - 'punctuation.definition.entity.haskell' ], - regex: '(`)([a-zA-Z_\']*?)(`)', - comment: 'In case this regex seems unusual for an infix operator, note that Haskell allows any ordinary function application (elem 4 [1..10]) to be rewritten as an infix expression (4 `elem` [1..10]).' }, - { token: 'constant.language.unit.haskell', regex: '\\(\\)' }, - { token: 'constant.language.empty-list.haskell', - regex: '\\[\\]' }, - { token: 'keyword.other.haskell', - regex: 'module', - push: - [ { token: 'keyword.other.haskell', regex: 'where', next: 'pop' }, - { include: '#module_name' }, - { include: '#module_exports' }, - { token: 'invalid', regex: '[a-z]+' }, - { defaultToken: 'meta.declaration.module.haskell' } ] }, - { token: 'keyword.other.haskell', - regex: '\\bclass\\b', - push: - [ { token: 'keyword.other.haskell', - regex: '\\bwhere\\b', - next: 'pop' }, - { token: 'support.class.prelude.haskell', - regex: '\\b(?:Monad|Functor|Eq|Ord|Read|Show|Num|(?:Frac|Ra)tional|Enum|Bounded|Real(?:Frac|Float)?|Integral|Floating)\\b' }, - { token: 'entity.other.inherited-class.haskell', - regex: '[A-Z][A-Za-z_\']*' }, - { token: 'variable.other.generic-type.haskell', - regex: '\\b[a-z][a-zA-Z0-9_\']*\\b' }, - { defaultToken: 'meta.declaration.class.haskell' } ] }, - { token: 'keyword.other.haskell', - regex: '\\binstance\\b', - push: - [ { token: 'keyword.other.haskell', - regex: '\\bwhere\\b|$', - next: 'pop' }, - { include: '#type_signature' }, - { defaultToken: 'meta.declaration.instance.haskell' } ] }, - { token: 'keyword.other.haskell', - regex: 'import', - push: - [ { token: 'meta.import.haskell', regex: '$|;', next: 'pop' }, - { token: 'keyword.other.haskell', regex: 'qualified|as|hiding' }, - { include: '#module_name' }, - { include: '#module_exports' }, - { defaultToken: 'meta.import.haskell' } ] }, - { token: [ 'keyword.other.haskell', 'meta.deriving.haskell' ], - regex: '(deriving)(\\s*\\()', - push: - [ { token: 'meta.deriving.haskell', regex: '\\)', next: 'pop' }, - { token: 'entity.other.inherited-class.haskell', - regex: '\\b[A-Z][a-zA-Z_\']*' }, - { defaultToken: 'meta.deriving.haskell' } ] }, - { token: 'keyword.other.haskell', - regex: '\\b(?:deriving|where|data|type|case|of|let|in|newtype|default)\\b' }, - { token: 'keyword.operator.haskell', regex: '\\binfix[lr]?\\b' }, - { token: 'keyword.control.haskell', - regex: '\\b(?:do|if|then|else)\\b' }, - { token: 'constant.numeric.float.haskell', - regex: '\\b(?:[0-9]+\\.[0-9]+(?:[eE][+-]?[0-9]+)?|[0-9]+[eE][+-]?[0-9]+)\\b', - comment: 'Floats are always decimal' }, - { token: 'constant.numeric.haskell', - regex: '\\b(?:[0-9]+|0(?:[xX][0-9a-fA-F]+|[oO][0-7]+))\\b' }, - { token: - [ 'meta.preprocessor.c', - 'punctuation.definition.preprocessor.c', - 'meta.preprocessor.c' ], - regex: '^(\\s*)(#)(\\s*\\w+)', - comment: 'In addition to Haskell\'s "native" syntax, GHC permits the C preprocessor to be run on a source file.' }, - { include: '#pragma' }, - { token: 'punctuation.definition.string.begin.haskell', - regex: '"', - push: - [ { token: 'punctuation.definition.string.end.haskell', - regex: '"', - next: 'pop' }, - { token: 'constant.character.escape.haskell', - regex: '\\\\(?:NUL|SOH|STX|ETX|EOT|ENQ|ACK|BEL|BS|HT|LF|VT|FF|CR|SO|SI|DLE|DC1|DC2|DC3|DC4|NAK|SYN|ETB|CAN|EM|SUB|ESC|FS|GS|RS|US|SP|DEL|[abfnrtv\\\\\\"\'\\&])' }, - { token: 'constant.character.escape.octal.haskell', - regex: '\\\\o[0-7]+|\\\\x[0-9A-Fa-f]+|\\\\[0-9]+' }, - { token: 'constant.character.escape.control.haskell', - regex: '\\^[A-Z@\\[\\]\\\\\\^_]' }, - { defaultToken: 'string.quoted.double.haskell' } ] }, - { token: - [ 'punctuation.definition.string.begin.haskell', - 'string.quoted.single.haskell', - 'constant.character.escape.haskell', - 'constant.character.escape.octal.haskell', - 'constant.character.escape.hexadecimal.haskell', - 'constant.character.escape.control.haskell', - 'punctuation.definition.string.end.haskell' ], - regex: '(\')(?:([\\ -\\[\\]-~])|(\\\\(?:NUL|SOH|STX|ETX|EOT|ENQ|ACK|BEL|BS|HT|LF|VT|FF|CR|SO|SI|DLE|DC1|DC2|DC3|DC4|NAK|SYN|ETB|CAN|EM|SUB|ESC|FS|GS|RS|US|SP|DEL|[abfnrtv\\\\\\"\'\\&]))|(\\\\o[0-7]+)|(\\\\x[0-9A-Fa-f]+)|(\\^[A-Z@\\[\\]\\\\\\^_]))(\')' }, - { token: - [ 'meta.function.type-declaration.haskell', - 'entity.name.function.haskell', - 'meta.function.type-declaration.haskell', - 'keyword.other.double-colon.haskell' ], - regex: '^(\\s*)([a-z_][a-zA-Z0-9_\']*|\\([|!%$+\\-.,=]+\\))(\\s*)(::)', - push: - [ { token: 'meta.function.type-declaration.haskell', - regex: '$', - next: 'pop' }, - { include: '#type_signature' }, - { defaultToken: 'meta.function.type-declaration.haskell' } ] }, - { token: 'support.constant.haskell', - regex: '\\b(?:Just|Nothing|Left|Right|True|False|LT|EQ|GT|\\(\\)|\\[\\])\\b' }, - { token: 'constant.other.haskell', regex: '\\b[A-Z]\\w*\\b' }, - { include: '#comments' }, - { token: 'support.function.prelude.haskell', - regex: '\\b(?:abs|acos|acosh|all|and|any|appendFile|applyM|asTypeOf|asin|asinh|atan|atan2|atanh|break|catch|ceiling|compare|concat|concatMap|const|cos|cosh|curry|cycle|decodeFloat|div|divMod|drop|dropWhile|elem|encodeFloat|enumFrom|enumFromThen|enumFromThenTo|enumFromTo|error|even|exp|exponent|fail|filter|flip|floatDigits|floatRadix|floatRange|floor|fmap|foldl|foldl1|foldr|foldr1|fromEnum|fromInteger|fromIntegral|fromRational|fst|gcd|getChar|getContents|getLine|head|id|init|interact|ioError|isDenormalized|isIEEE|isInfinite|isNaN|isNegativeZero|iterate|last|lcm|length|lex|lines|log|logBase|lookup|map|mapM|mapM_|max|maxBound|maximum|maybe|min|minBound|minimum|mod|negate|not|notElem|null|odd|or|otherwise|pi|pred|print|product|properFraction|putChar|putStr|putStrLn|quot|quotRem|read|readFile|readIO|readList|readLn|readParen|reads|readsPrec|realToFrac|recip|rem|repeat|replicate|return|reverse|round|scaleFloat|scanl|scanl1|scanr|scanr1|seq|sequence|sequence_|show|showChar|showList|showParen|showString|shows|showsPrec|significand|signum|sin|sinh|snd|span|splitAt|sqrt|subtract|succ|sum|tail|take|takeWhile|tan|tanh|toEnum|toInteger|toRational|truncate|uncurry|undefined|unlines|until|unwords|unzip|unzip3|userError|words|writeFile|zip|zip3|zipWith|zipWith3)\\b' }, - { include: '#infix_op' }, - { token: 'keyword.operator.haskell', - regex: '[|!%$?~+:\\-.=\\\\]+', - comment: 'In case this regex seems overly general, note that Haskell permits the definition of new operators which can be nearly any string of punctuation characters, such as $%^&*.' }, - { token: 'punctuation.separator.comma.haskell', regex: ',' } ], - '#block_comment': - [ { token: 'punctuation.definition.comment.haskell', - regex: '\\{-(?!#)', - push: - [ { include: '#block_comment' }, - { token: 'punctuation.definition.comment.haskell', - regex: '-\\}', - next: 'pop' }, - { defaultToken: 'comment.block.haskell' } ] } ], - '#comments': - [ { token: 'punctuation.definition.comment.haskell', - regex: '--.*', - push_: - [ { token: 'comment.line.double-dash.haskell', - regex: '$', - next: 'pop' }, - { defaultToken: 'comment.line.double-dash.haskell' } ] }, - { include: '#block_comment' } ], - '#infix_op': - [ { token: 'entity.name.function.infix.haskell', - regex: '\\([|!%$+:\\-.=]+\\)|\\(,+\\)' } ], - '#module_exports': - [ { token: 'meta.declaration.exports.haskell', - regex: '\\(', - push: - [ { token: 'meta.declaration.exports.haskell', - regex: '\\)', - next: 'pop' }, - { token: 'entity.name.function.haskell', - regex: '\\b[a-z][a-zA-Z_\']*' }, - { token: 'storage.type.haskell', regex: '\\b[A-Z][A-Za-z_\']*' }, - { token: 'punctuation.separator.comma.haskell', regex: ',' }, - { include: '#infix_op' }, - { token: 'meta.other.unknown.haskell', - regex: '\\(.*?\\)', - comment: 'So named because I don\'t know what to call this.' }, - { defaultToken: 'meta.declaration.exports.haskell' } ] } ], - '#module_name': - [ { token: 'support.other.module.haskell', - regex: '[A-Z][A-Za-z._\']*' } ], - '#pragma': - [ { token: 'meta.preprocessor.haskell', - regex: '\\{-#', - push: - [ { token: 'meta.preprocessor.haskell', - regex: '#-\\}', - next: 'pop' }, - { token: 'keyword.other.preprocessor.haskell', - regex: '\\b(?:LANGUAGE|UNPACK|INLINE)\\b' }, - { defaultToken: 'meta.preprocessor.haskell' } ] } ], - '#type_signature': - [ { token: - [ 'meta.class-constraint.haskell', - 'entity.other.inherited-class.haskell', - 'meta.class-constraint.haskell', - 'variable.other.generic-type.haskell', - 'meta.class-constraint.haskell', - 'keyword.other.big-arrow.haskell' ], - regex: '(\\(\\s*)([A-Z][A-Za-z]*)(\\s+)([a-z][A-Za-z_\']*)(\\)\\s*)(=>)' }, - { include: '#pragma' }, - { token: 'keyword.other.arrow.haskell', regex: '->' }, - { token: 'keyword.other.big-arrow.haskell', regex: '=>' }, - { token: 'support.type.prelude.haskell', - regex: '\\b(?:Int(?:eger)?|Maybe|Either|Bool|Float|Double|Char|String|Ordering|ShowS|ReadS|FilePath|IO(?:Error)?)\\b' }, - { token: 'variable.other.generic-type.haskell', - regex: '\\b[a-z][a-zA-Z0-9_\']*\\b' }, - { token: 'storage.type.haskell', - regex: '\\b[A-Z][a-zA-Z0-9_\']*\\b' }, - { token: 'support.constant.unit.haskell', regex: '\\(\\)' }, - { include: '#comments' } ] } - - this.normalizeRules(); -}; - -HaskellHighlightRules.metaData = { fileTypes: [ 'hs' ], - keyEquivalent: '^~H', - name: 'Haskell', - scopeName: 'source.haskell' } - - -oop.inherits(HaskellHighlightRules, TextHighlightRules); - -exports.HaskellHighlightRules = HaskellHighlightRules; -}); - -ace.define('ace/mode/folding/cstyle', ['require', 'exports', 'module' , 'ace/lib/oop', 'ace/range', 'ace/mode/folding/fold_mode'], function(require, exports, module) { - - -var oop = require("../../lib/oop"); -var Range = require("../../range").Range; -var BaseFoldMode = require("./fold_mode").FoldMode; - -var FoldMode = exports.FoldMode = function(commentRegex) { - if (commentRegex) { - this.foldingStartMarker = new RegExp( - this.foldingStartMarker.source.replace(/\|[^|]*?$/, "|" + commentRegex.start) - ); - this.foldingStopMarker = new RegExp( - this.foldingStopMarker.source.replace(/\|[^|]*?$/, "|" + commentRegex.end) - ); - } -}; -oop.inherits(FoldMode, BaseFoldMode); - -(function() { - - this.foldingStartMarker = /(\{|\[)[^\}\]]*$|^\s*(\/\*)/; - this.foldingStopMarker = /^[^\[\{]*(\}|\])|^[\s\*]*(\*\/)/; - - this.getFoldWidgetRange = function(session, foldStyle, row, forceMultiline) { - var line = session.getLine(row); - var match = line.match(this.foldingStartMarker); - if (match) { - var i = match.index; - - if (match[1]) - return this.openingBracketBlock(session, match[1], row, i); - - var range = session.getCommentFoldRange(row, i + match[0].length, 1); - - if (range && !range.isMultiLine()) { - if (forceMultiline) { - range = this.getSectionRange(session, row); - } else if (foldStyle != "all") - range = null; - } - - return range; - } - - if (foldStyle === "markbegin") - return; - - var match = line.match(this.foldingStopMarker); - if (match) { - var i = match.index + match[0].length; - - if (match[1]) - return this.closingBracketBlock(session, match[1], row, i); - - return session.getCommentFoldRange(row, i, -1); - } - }; - - this.getSectionRange = function(session, row) { - var line = session.getLine(row); - var startIndent = line.search(/\S/); - var startRow = row; - var startColumn = line.length; - row = row + 1; - var endRow = row; - var maxRow = session.getLength(); - while (++row < maxRow) { - line = session.getLine(row); - var indent = line.search(/\S/); - if (indent === -1) - continue; - if (startIndent > indent) - break; - var subRange = this.getFoldWidgetRange(session, "all", row); - - if (subRange) { - if (subRange.start.row <= startRow) { - break; - } else if (subRange.isMultiLine()) { - row = subRange.end.row; - } else if (startIndent == indent) { - break; - } - } - endRow = row; - } - - return new Range(startRow, startColumn, endRow, session.getLine(endRow).length); - }; - -}).call(FoldMode.prototype); - -}); diff --git a/IDE/jsrealb-ide/ace-src-noconflict/mode-haxe.js b/IDE/jsrealb-ide/ace-src-noconflict/mode-haxe.js deleted file mode 100644 index 6da93126..00000000 --- a/IDE/jsrealb-ide/ace-src-noconflict/mode-haxe.js +++ /dev/null @@ -1,657 +0,0 @@ -ace.define('ace/mode/haxe', ['require', 'exports', 'module' , 'ace/lib/oop', 'ace/mode/text', 'ace/tokenizer', 'ace/mode/haxe_highlight_rules', 'ace/mode/matching_brace_outdent', 'ace/mode/behaviour/cstyle', 'ace/mode/folding/cstyle'], function(require, exports, module) { - - -var oop = require("../lib/oop"); -var TextMode = require("./text").Mode; -var Tokenizer = require("../tokenizer").Tokenizer; -var HaxeHighlightRules = require("./haxe_highlight_rules").HaxeHighlightRules; -var MatchingBraceOutdent = require("./matching_brace_outdent").MatchingBraceOutdent; -var CstyleBehaviour = require("./behaviour/cstyle").CstyleBehaviour; -var CStyleFoldMode = require("./folding/cstyle").FoldMode; - -var Mode = function() { - this.HighlightRules = HaxeHighlightRules; - - this.$outdent = new MatchingBraceOutdent(); - this.$behaviour = new CstyleBehaviour(); - this.foldingRules = new CStyleFoldMode(); -}; -oop.inherits(Mode, TextMode); - -(function() { - this.lineCommentStart = "//"; - this.blockComment = {start: "/*", end: "*/"}; - - this.getNextLineIndent = function(state, line, tab) { - var indent = this.$getIndent(line); - - var tokenizedLine = this.getTokenizer().getLineTokens(line, state); - var tokens = tokenizedLine.tokens; - - if (tokens.length && tokens[tokens.length-1].type == "comment") { - return indent; - } - - if (state == "start") { - var match = line.match(/^.*[\{\(\[]\s*$/); - if (match) { - indent += tab; - } - } - - return indent; - }; - - this.checkOutdent = function(state, line, input) { - return this.$outdent.checkOutdent(line, input); - }; - - this.autoOutdent = function(state, doc, row) { - this.$outdent.autoOutdent(doc, row); - }; - - this.$id = "ace/mode/haxe"; -}).call(Mode.prototype); - -exports.Mode = Mode; -}); -ace.define('ace/mode/haxe_highlight_rules', ['require', 'exports', 'module' , 'ace/lib/oop', 'ace/mode/doc_comment_highlight_rules', 'ace/mode/text_highlight_rules'], function(require, exports, module) { - - -var oop = require("../lib/oop"); - -var DocCommentHighlightRules = require("./doc_comment_highlight_rules").DocCommentHighlightRules; -var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; - -var HaxeHighlightRules = function() { - - var keywords = ( - "break|case|cast|catch|class|continue|default|else|enum|extends|for|function|if|implements|import|in|inline|interface|new|override|package|private|public|return|static|super|switch|this|throw|trace|try|typedef|untyped|var|while|Array|Void|Bool|Int|UInt|Float|Dynamic|String|List|Hash|IntHash|Error|Unknown|Type|Std" - ); - - var buildinConstants = ( - "null|true|false" - ); - - var keywordMapper = this.createKeywordMapper({ - "variable.language": "this", - "keyword": keywords, - "constant.language": buildinConstants - }, "identifier"); - - this.$rules = { - "start" : [ - { - token : "comment", - regex : "\\/\\/.*$" - }, - DocCommentHighlightRules.getStartRule("doc-start"), - { - token : "comment", // multi line comment - regex : "\\/\\*", - next : "comment" - }, { - token : "string.regexp", - regex : "[/](?:(?:\\[(?:\\\\]|[^\\]])+\\])|(?:\\\\/|[^\\]/]))*[/]\\w*\\s*(?=[).,;]|$)" - }, { - token : "string", // single line - regex : '["](?:(?:\\\\.)|(?:[^"\\\\]))*?["]' - }, { - token : "string", // single line - regex : "['](?:(?:\\\\.)|(?:[^'\\\\]))*?[']" - }, { - token : "constant.numeric", // hex - regex : "0[xX][0-9a-fA-F]+\\b" - }, { - token : "constant.numeric", // float - regex : "[+-]?\\d+(?:(?:\\.\\d*)?(?:[eE][+-]?\\d+)?)?\\b" - }, { - token : "constant.language.boolean", - regex : "(?:true|false)\\b" - }, { - token : keywordMapper, - regex : "[a-zA-Z_$][a-zA-Z0-9_$]*\\b" - }, { - token : "keyword.operator", - regex : "!|\\$|%|&|\\*|\\-\\-|\\-|\\+\\+|\\+|~|===|==|=|!=|!==|<=|>=|<<=|>>=|>>>=|<>|<|>|!|&&|\\|\\||\\?\\:|\\*=|%=|\\+=|\\-=|&=|\\^=|\\b(?:in|instanceof|new|delete|typeof|void)" - }, { - token : "punctuation.operator", - regex : "\\?|\\:|\\,|\\;|\\." - }, { - token : "paren.lparen", - regex : "[[({<]" - }, { - token : "paren.rparen", - regex : "[\\])}>]" - }, { - token : "text", - regex : "\\s+" - } - ], - "comment" : [ - { - token : "comment", // closing comment - regex : ".*?\\*\\/", - next : "start" - }, { - token : "comment", // comment spanning whole line - regex : ".+" - } - ] - }; - - this.embedRules(DocCommentHighlightRules, "doc-", - [ DocCommentHighlightRules.getEndRule("start") ]); -}; - -oop.inherits(HaxeHighlightRules, TextHighlightRules); - -exports.HaxeHighlightRules = HaxeHighlightRules; -}); - -ace.define('ace/mode/doc_comment_highlight_rules', ['require', 'exports', 'module' , 'ace/lib/oop', 'ace/mode/text_highlight_rules'], function(require, exports, module) { - - -var oop = require("../lib/oop"); -var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; - -var DocCommentHighlightRules = function() { - - this.$rules = { - "start" : [ { - token : "comment.doc.tag", - regex : "@[\\w\\d_]+" // TODO: fix email addresses - }, { - token : "comment.doc.tag", - regex : "\\bTODO\\b" - }, { - defaultToken : "comment.doc" - }] - }; -}; - -oop.inherits(DocCommentHighlightRules, TextHighlightRules); - -DocCommentHighlightRules.getStartRule = function(start) { - return { - token : "comment.doc", // doc comment - regex : "\\/\\*(?=\\*)", - next : start - }; -}; - -DocCommentHighlightRules.getEndRule = function (start) { - return { - token : "comment.doc", // closing comment - regex : "\\*\\/", - next : start - }; -}; - - -exports.DocCommentHighlightRules = DocCommentHighlightRules; - -}); - -ace.define('ace/mode/matching_brace_outdent', ['require', 'exports', 'module' , 'ace/range'], function(require, exports, module) { - - -var Range = require("../range").Range; - -var MatchingBraceOutdent = function() {}; - -(function() { - - this.checkOutdent = function(line, input) { - if (! /^\s+$/.test(line)) - return false; - - return /^\s*\}/.test(input); - }; - - this.autoOutdent = function(doc, row) { - var line = doc.getLine(row); - var match = line.match(/^(\s*\})/); - - if (!match) return 0; - - var column = match[1].length; - var openBracePos = doc.findMatchingBracket({row: row, column: column}); - - if (!openBracePos || openBracePos.row == row) return 0; - - var indent = this.$getIndent(doc.getLine(openBracePos.row)); - doc.replace(new Range(row, 0, row, column-1), indent); - }; - - this.$getIndent = function(line) { - return line.match(/^\s*/)[0]; - }; - -}).call(MatchingBraceOutdent.prototype); - -exports.MatchingBraceOutdent = MatchingBraceOutdent; -}); - -ace.define('ace/mode/behaviour/cstyle', ['require', 'exports', 'module' , 'ace/lib/oop', 'ace/mode/behaviour', 'ace/token_iterator', 'ace/lib/lang'], function(require, exports, module) { - - -var oop = require("../../lib/oop"); -var Behaviour = require("../behaviour").Behaviour; -var TokenIterator = require("../../token_iterator").TokenIterator; -var lang = require("../../lib/lang"); - -var SAFE_INSERT_IN_TOKENS = - ["text", "paren.rparen", "punctuation.operator"]; -var SAFE_INSERT_BEFORE_TOKENS = - ["text", "paren.rparen", "punctuation.operator", "comment"]; - - -var autoInsertedBrackets = 0; -var autoInsertedRow = -1; -var autoInsertedLineEnd = ""; -var maybeInsertedBrackets = 0; -var maybeInsertedRow = -1; -var maybeInsertedLineStart = ""; -var maybeInsertedLineEnd = ""; - -var CstyleBehaviour = function () { - - CstyleBehaviour.isSaneInsertion = function(editor, session) { - var cursor = editor.getCursorPosition(); - var iterator = new TokenIterator(session, cursor.row, cursor.column); - if (!this.$matchTokenType(iterator.getCurrentToken() || "text", SAFE_INSERT_IN_TOKENS)) { - var iterator2 = new TokenIterator(session, cursor.row, cursor.column + 1); - if (!this.$matchTokenType(iterator2.getCurrentToken() || "text", SAFE_INSERT_IN_TOKENS)) - return false; - } - iterator.stepForward(); - return iterator.getCurrentTokenRow() !== cursor.row || - this.$matchTokenType(iterator.getCurrentToken() || "text", SAFE_INSERT_BEFORE_TOKENS); - }; - - CstyleBehaviour.$matchTokenType = function(token, types) { - return types.indexOf(token.type || token) > -1; - }; - - CstyleBehaviour.recordAutoInsert = function(editor, session, bracket) { - var cursor = editor.getCursorPosition(); - var line = session.doc.getLine(cursor.row); - if (!this.isAutoInsertedClosing(cursor, line, autoInsertedLineEnd[0])) - autoInsertedBrackets = 0; - autoInsertedRow = cursor.row; - autoInsertedLineEnd = bracket + line.substr(cursor.column); - autoInsertedBrackets++; - }; - - CstyleBehaviour.recordMaybeInsert = function(editor, session, bracket) { - var cursor = editor.getCursorPosition(); - var line = session.doc.getLine(cursor.row); - if (!this.isMaybeInsertedClosing(cursor, line)) - maybeInsertedBrackets = 0; - maybeInsertedRow = cursor.row; - maybeInsertedLineStart = line.substr(0, cursor.column) + bracket; - maybeInsertedLineEnd = line.substr(cursor.column); - maybeInsertedBrackets++; - }; - - CstyleBehaviour.isAutoInsertedClosing = function(cursor, line, bracket) { - return autoInsertedBrackets > 0 && - cursor.row === autoInsertedRow && - bracket === autoInsertedLineEnd[0] && - line.substr(cursor.column) === autoInsertedLineEnd; - }; - - CstyleBehaviour.isMaybeInsertedClosing = function(cursor, line) { - return maybeInsertedBrackets > 0 && - cursor.row === maybeInsertedRow && - line.substr(cursor.column) === maybeInsertedLineEnd && - line.substr(0, cursor.column) == maybeInsertedLineStart; - }; - - CstyleBehaviour.popAutoInsertedClosing = function() { - autoInsertedLineEnd = autoInsertedLineEnd.substr(1); - autoInsertedBrackets--; - }; - - CstyleBehaviour.clearMaybeInsertedClosing = function() { - maybeInsertedBrackets = 0; - maybeInsertedRow = -1; - }; - - this.add("braces", "insertion", function (state, action, editor, session, text) { - var cursor = editor.getCursorPosition(); - var line = session.doc.getLine(cursor.row); - if (text == '{') { - var selection = editor.getSelectionRange(); - var selected = session.doc.getTextRange(selection); - if (selected !== "" && selected !== "{" && editor.getWrapBehavioursEnabled()) { - return { - text: '{' + selected + '}', - selection: false - }; - } else if (CstyleBehaviour.isSaneInsertion(editor, session)) { - if (/[\]\}\)]/.test(line[cursor.column]) || editor.inMultiSelectMode) { - CstyleBehaviour.recordAutoInsert(editor, session, "}"); - return { - text: '{}', - selection: [1, 1] - }; - } else { - CstyleBehaviour.recordMaybeInsert(editor, session, "{"); - return { - text: '{', - selection: [1, 1] - }; - } - } - } else if (text == '}') { - var rightChar = line.substring(cursor.column, cursor.column + 1); - if (rightChar == '}') { - var matching = session.$findOpeningBracket('}', {column: cursor.column + 1, row: cursor.row}); - if (matching !== null && CstyleBehaviour.isAutoInsertedClosing(cursor, line, text)) { - CstyleBehaviour.popAutoInsertedClosing(); - return { - text: '', - selection: [1, 1] - }; - } - } - } else if (text == "\n" || text == "\r\n") { - var closing = ""; - if (CstyleBehaviour.isMaybeInsertedClosing(cursor, line)) { - closing = lang.stringRepeat("}", maybeInsertedBrackets); - CstyleBehaviour.clearMaybeInsertedClosing(); - } - var rightChar = line.substring(cursor.column, cursor.column + 1); - if (rightChar === '}') { - var openBracePos = session.findMatchingBracket({row: cursor.row, column: cursor.column+1}, '}'); - if (!openBracePos) - return null; - var next_indent = this.$getIndent(session.getLine(openBracePos.row)); - } else if (closing) { - var next_indent = this.$getIndent(line); - } else { - return; - } - var indent = next_indent + session.getTabString(); - - return { - text: '\n' + indent + '\n' + next_indent + closing, - selection: [1, indent.length, 1, indent.length] - }; - } else { - CstyleBehaviour.clearMaybeInsertedClosing(); - } - }); - - this.add("braces", "deletion", function (state, action, editor, session, range) { - var selected = session.doc.getTextRange(range); - if (!range.isMultiLine() && selected == '{') { - var line = session.doc.getLine(range.start.row); - var rightChar = line.substring(range.end.column, range.end.column + 1); - if (rightChar == '}') { - range.end.column++; - return range; - } else { - maybeInsertedBrackets--; - } - } - }); - - this.add("parens", "insertion", function (state, action, editor, session, text) { - if (text == '(') { - var selection = editor.getSelectionRange(); - var selected = session.doc.getTextRange(selection); - if (selected !== "" && editor.getWrapBehavioursEnabled()) { - return { - text: '(' + selected + ')', - selection: false - }; - } else if (CstyleBehaviour.isSaneInsertion(editor, session)) { - CstyleBehaviour.recordAutoInsert(editor, session, ")"); - return { - text: '()', - selection: [1, 1] - }; - } - } else if (text == ')') { - var cursor = editor.getCursorPosition(); - var line = session.doc.getLine(cursor.row); - var rightChar = line.substring(cursor.column, cursor.column + 1); - if (rightChar == ')') { - var matching = session.$findOpeningBracket(')', {column: cursor.column + 1, row: cursor.row}); - if (matching !== null && CstyleBehaviour.isAutoInsertedClosing(cursor, line, text)) { - CstyleBehaviour.popAutoInsertedClosing(); - return { - text: '', - selection: [1, 1] - }; - } - } - } - }); - - this.add("parens", "deletion", function (state, action, editor, session, range) { - var selected = session.doc.getTextRange(range); - if (!range.isMultiLine() && selected == '(') { - var line = session.doc.getLine(range.start.row); - var rightChar = line.substring(range.start.column + 1, range.start.column + 2); - if (rightChar == ')') { - range.end.column++; - return range; - } - } - }); - - this.add("brackets", "insertion", function (state, action, editor, session, text) { - if (text == '[') { - var selection = editor.getSelectionRange(); - var selected = session.doc.getTextRange(selection); - if (selected !== "" && editor.getWrapBehavioursEnabled()) { - return { - text: '[' + selected + ']', - selection: false - }; - } else if (CstyleBehaviour.isSaneInsertion(editor, session)) { - CstyleBehaviour.recordAutoInsert(editor, session, "]"); - return { - text: '[]', - selection: [1, 1] - }; - } - } else if (text == ']') { - var cursor = editor.getCursorPosition(); - var line = session.doc.getLine(cursor.row); - var rightChar = line.substring(cursor.column, cursor.column + 1); - if (rightChar == ']') { - var matching = session.$findOpeningBracket(']', {column: cursor.column + 1, row: cursor.row}); - if (matching !== null && CstyleBehaviour.isAutoInsertedClosing(cursor, line, text)) { - CstyleBehaviour.popAutoInsertedClosing(); - return { - text: '', - selection: [1, 1] - }; - } - } - } - }); - - this.add("brackets", "deletion", function (state, action, editor, session, range) { - var selected = session.doc.getTextRange(range); - if (!range.isMultiLine() && selected == '[') { - var line = session.doc.getLine(range.start.row); - var rightChar = line.substring(range.start.column + 1, range.start.column + 2); - if (rightChar == ']') { - range.end.column++; - return range; - } - } - }); - - this.add("string_dquotes", "insertion", function (state, action, editor, session, text) { - if (text == '"' || text == "'") { - var quote = text; - var selection = editor.getSelectionRange(); - var selected = session.doc.getTextRange(selection); - if (selected !== "" && selected !== "'" && selected != '"' && editor.getWrapBehavioursEnabled()) { - return { - text: quote + selected + quote, - selection: false - }; - } else { - var cursor = editor.getCursorPosition(); - var line = session.doc.getLine(cursor.row); - var leftChar = line.substring(cursor.column-1, cursor.column); - if (leftChar == '\\') { - return null; - } - var tokens = session.getTokens(selection.start.row); - var col = 0, token; - var quotepos = -1; // Track whether we're inside an open quote. - - for (var x = 0; x < tokens.length; x++) { - token = tokens[x]; - if (token.type == "string") { - quotepos = -1; - } else if (quotepos < 0) { - quotepos = token.value.indexOf(quote); - } - if ((token.value.length + col) > selection.start.column) { - break; - } - col += tokens[x].value.length; - } - if (!token || (quotepos < 0 && token.type !== "comment" && (token.type !== "string" || ((selection.start.column !== token.value.length+col-1) && token.value.lastIndexOf(quote) === token.value.length-1)))) { - if (!CstyleBehaviour.isSaneInsertion(editor, session)) - return; - return { - text: quote + quote, - selection: [1,1] - }; - } else if (token && token.type === "string") { - var rightChar = line.substring(cursor.column, cursor.column + 1); - if (rightChar == quote) { - return { - text: '', - selection: [1, 1] - }; - } - } - } - } - }); - - this.add("string_dquotes", "deletion", function (state, action, editor, session, range) { - var selected = session.doc.getTextRange(range); - if (!range.isMultiLine() && (selected == '"' || selected == "'")) { - var line = session.doc.getLine(range.start.row); - var rightChar = line.substring(range.start.column + 1, range.start.column + 2); - if (rightChar == selected) { - range.end.column++; - return range; - } - } - }); - -}; - -oop.inherits(CstyleBehaviour, Behaviour); - -exports.CstyleBehaviour = CstyleBehaviour; -}); - -ace.define('ace/mode/folding/cstyle', ['require', 'exports', 'module' , 'ace/lib/oop', 'ace/range', 'ace/mode/folding/fold_mode'], function(require, exports, module) { - - -var oop = require("../../lib/oop"); -var Range = require("../../range").Range; -var BaseFoldMode = require("./fold_mode").FoldMode; - -var FoldMode = exports.FoldMode = function(commentRegex) { - if (commentRegex) { - this.foldingStartMarker = new RegExp( - this.foldingStartMarker.source.replace(/\|[^|]*?$/, "|" + commentRegex.start) - ); - this.foldingStopMarker = new RegExp( - this.foldingStopMarker.source.replace(/\|[^|]*?$/, "|" + commentRegex.end) - ); - } -}; -oop.inherits(FoldMode, BaseFoldMode); - -(function() { - - this.foldingStartMarker = /(\{|\[)[^\}\]]*$|^\s*(\/\*)/; - this.foldingStopMarker = /^[^\[\{]*(\}|\])|^[\s\*]*(\*\/)/; - - this.getFoldWidgetRange = function(session, foldStyle, row, forceMultiline) { - var line = session.getLine(row); - var match = line.match(this.foldingStartMarker); - if (match) { - var i = match.index; - - if (match[1]) - return this.openingBracketBlock(session, match[1], row, i); - - var range = session.getCommentFoldRange(row, i + match[0].length, 1); - - if (range && !range.isMultiLine()) { - if (forceMultiline) { - range = this.getSectionRange(session, row); - } else if (foldStyle != "all") - range = null; - } - - return range; - } - - if (foldStyle === "markbegin") - return; - - var match = line.match(this.foldingStopMarker); - if (match) { - var i = match.index + match[0].length; - - if (match[1]) - return this.closingBracketBlock(session, match[1], row, i); - - return session.getCommentFoldRange(row, i, -1); - } - }; - - this.getSectionRange = function(session, row) { - var line = session.getLine(row); - var startIndent = line.search(/\S/); - var startRow = row; - var startColumn = line.length; - row = row + 1; - var endRow = row; - var maxRow = session.getLength(); - while (++row < maxRow) { - line = session.getLine(row); - var indent = line.search(/\S/); - if (indent === -1) - continue; - if (startIndent > indent) - break; - var subRange = this.getFoldWidgetRange(session, "all", row); - - if (subRange) { - if (subRange.start.row <= startRow) { - break; - } else if (subRange.isMultiLine()) { - row = subRange.end.row; - } else if (startIndent == indent) { - break; - } - } - endRow = row; - } - - return new Range(startRow, startColumn, endRow, session.getLine(endRow).length); - }; - -}).call(FoldMode.prototype); - -}); diff --git a/IDE/jsrealb-ide/ace-src-noconflict/mode-html.js b/IDE/jsrealb-ide/ace-src-noconflict/mode-html.js deleted file mode 100644 index 22f0bb03..00000000 --- a/IDE/jsrealb-ide/ace-src-noconflict/mode-html.js +++ /dev/null @@ -1,2361 +0,0 @@ -/* ***** BEGIN LICENSE BLOCK ***** - * Distributed under the BSD license: - * - * Copyright (c) 2010, Ajax.org B.V. - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are met: - * * Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * * Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * * Neither the name of Ajax.org B.V. nor the - * names of its contributors may be used to endorse or promote products - * derived from this software without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND - * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED - * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE - * DISCLAIMED. IN NO EVENT SHALL AJAX.ORG B.V. BE LIABLE FOR ANY - * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES - * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; - * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND - * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - * - * ***** END LICENSE BLOCK ***** */ - -ace.define('ace/mode/html', ['require', 'exports', 'module' , 'ace/lib/oop', 'ace/mode/text', 'ace/mode/javascript', 'ace/mode/css', 'ace/tokenizer', 'ace/mode/html_highlight_rules', 'ace/mode/behaviour/html', 'ace/mode/folding/html', 'ace/mode/html_completions'], function(require, exports, module) { - - -var oop = require("../lib/oop"); -var TextMode = require("./text").Mode; -var JavaScriptMode = require("./javascript").Mode; -var CssMode = require("./css").Mode; -var Tokenizer = require("../tokenizer").Tokenizer; -var HtmlHighlightRules = require("./html_highlight_rules").HtmlHighlightRules; -var HtmlBehaviour = require("./behaviour/html").HtmlBehaviour; -var HtmlFoldMode = require("./folding/html").FoldMode; -var HtmlCompletions = require("./html_completions").HtmlCompletions; - -var Mode = function() { - this.HighlightRules = HtmlHighlightRules; - this.$behaviour = new HtmlBehaviour(); - this.$completer = new HtmlCompletions(); - - this.createModeDelegates({ - "js-": JavaScriptMode, - "css-": CssMode - }); - - this.foldingRules = new HtmlFoldMode(); -}; -oop.inherits(Mode, TextMode); - -(function() { - - this.blockComment = {start: ""}; - - this.getNextLineIndent = function(state, line, tab) { - return this.$getIndent(line); - }; - - this.checkOutdent = function(state, line, input) { - return false; - }; - - this.getCompletions = function(state, session, pos, prefix) { - return this.$completer.getCompletions(state, session, pos, prefix); - }; - - this.$id = "ace/mode/html"; -}).call(Mode.prototype); - -exports.Mode = Mode; -}); - -ace.define('ace/mode/javascript', ['require', 'exports', 'module' , 'ace/lib/oop', 'ace/mode/text', 'ace/tokenizer', 'ace/mode/javascript_highlight_rules', 'ace/mode/matching_brace_outdent', 'ace/range', 'ace/worker/worker_client', 'ace/mode/behaviour/cstyle', 'ace/mode/folding/cstyle'], function(require, exports, module) { - - -var oop = require("../lib/oop"); -var TextMode = require("./text").Mode; -var Tokenizer = require("../tokenizer").Tokenizer; -var JavaScriptHighlightRules = require("./javascript_highlight_rules").JavaScriptHighlightRules; -var MatchingBraceOutdent = require("./matching_brace_outdent").MatchingBraceOutdent; -var Range = require("../range").Range; -var WorkerClient = require("../worker/worker_client").WorkerClient; -var CstyleBehaviour = require("./behaviour/cstyle").CstyleBehaviour; -var CStyleFoldMode = require("./folding/cstyle").FoldMode; - -var Mode = function() { - this.HighlightRules = JavaScriptHighlightRules; - - this.$outdent = new MatchingBraceOutdent(); - this.$behaviour = new CstyleBehaviour(); - this.foldingRules = new CStyleFoldMode(); -}; -oop.inherits(Mode, TextMode); - -(function() { - - this.lineCommentStart = "//"; - this.blockComment = {start: "/*", end: "*/"}; - - this.getNextLineIndent = function(state, line, tab) { - var indent = this.$getIndent(line); - - var tokenizedLine = this.getTokenizer().getLineTokens(line, state); - var tokens = tokenizedLine.tokens; - var endState = tokenizedLine.state; - - if (tokens.length && tokens[tokens.length-1].type == "comment") { - return indent; - } - - if (state == "start" || state == "no_regex") { - var match = line.match(/^.*(?:\bcase\b.*\:|[\{\(\[])\s*$/); - if (match) { - indent += tab; - } - } else if (state == "doc-start") { - if (endState == "start" || endState == "no_regex") { - return ""; - } - var match = line.match(/^\s*(\/?)\*/); - if (match) { - if (match[1]) { - indent += " "; - } - indent += "* "; - } - } - - return indent; - }; - - this.checkOutdent = function(state, line, input) { - return this.$outdent.checkOutdent(line, input); - }; - - this.autoOutdent = function(state, doc, row) { - this.$outdent.autoOutdent(doc, row); - }; - - this.createWorker = function(session) { - var worker = new WorkerClient(["ace"], "ace/mode/javascript_worker", "JavaScriptWorker"); - worker.attachToDocument(session.getDocument()); - - worker.on("jslint", function(results) { - session.setAnnotations(results.data); - }); - - worker.on("terminate", function() { - session.clearAnnotations(); - }); - - return worker; - }; - - this.$id = "ace/mode/javascript"; -}).call(Mode.prototype); - -exports.Mode = Mode; -}); - -ace.define('ace/mode/javascript_highlight_rules', ['require', 'exports', 'module' , 'ace/lib/oop', 'ace/mode/doc_comment_highlight_rules', 'ace/mode/text_highlight_rules'], function(require, exports, module) { - - -var oop = require("../lib/oop"); -var DocCommentHighlightRules = require("./doc_comment_highlight_rules").DocCommentHighlightRules; -var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; - -var JavaScriptHighlightRules = function() { - var keywordMapper = this.createKeywordMapper({ - "variable.language": - "Array|Boolean|Date|Function|Iterator|Number|Object|RegExp|String|Proxy|" + // Constructors - "Namespace|QName|XML|XMLList|" + // E4X - "ArrayBuffer|Float32Array|Float64Array|Int16Array|Int32Array|Int8Array|" + - "Uint16Array|Uint32Array|Uint8Array|Uint8ClampedArray|" + - "Error|EvalError|InternalError|RangeError|ReferenceError|StopIteration|" + // Errors - "SyntaxError|TypeError|URIError|" + - "decodeURI|decodeURIComponent|encodeURI|encodeURIComponent|eval|isFinite|" + // Non-constructor functions - "isNaN|parseFloat|parseInt|" + - "JSON|Math|" + // Other - "this|arguments|prototype|window|document" , // Pseudo - "keyword": - "const|yield|import|get|set|" + - "break|case|catch|continue|default|delete|do|else|finally|for|function|" + - "if|in|instanceof|new|return|switch|throw|try|typeof|let|var|while|with|debugger|" + - "__parent__|__count__|escape|unescape|with|__proto__|" + - "class|enum|extends|super|export|implements|private|public|interface|package|protected|static", - "storage.type": - "const|let|var|function", - "constant.language": - "null|Infinity|NaN|undefined", - "support.function": - "alert", - "constant.language.boolean": "true|false" - }, "identifier"); - var kwBeforeRe = "case|do|else|finally|in|instanceof|return|throw|try|typeof|yield|void"; - var identifierRe = "[a-zA-Z\\$_\u00a1-\uffff][a-zA-Z\\d\\$_\u00a1-\uffff]*\\b"; - - var escapedRe = "\\\\(?:x[0-9a-fA-F]{2}|" + // hex - "u[0-9a-fA-F]{4}|" + // unicode - "[0-2][0-7]{0,2}|" + // oct - "3[0-6][0-7]?|" + // oct - "37[0-7]?|" + // oct - "[4-7][0-7]?|" + //oct - ".)"; - - this.$rules = { - "no_regex" : [ - { - token : "comment", - regex : "\\/\\/", - next : "line_comment" - }, - DocCommentHighlightRules.getStartRule("doc-start"), - { - token : "comment", // multi line comment - regex : /\/\*/, - next : "comment" - }, { - token : "string", - regex : "'(?=.)", - next : "qstring" - }, { - token : "string", - regex : '"(?=.)', - next : "qqstring" - }, { - token : "constant.numeric", // hex - regex : /0[xX][0-9a-fA-F]+\b/ - }, { - token : "constant.numeric", // float - regex : /[+-]?\d+(?:(?:\.\d*)?(?:[eE][+-]?\d+)?)?\b/ - }, { - token : [ - "storage.type", "punctuation.operator", "support.function", - "punctuation.operator", "entity.name.function", "text","keyword.operator" - ], - regex : "(" + identifierRe + ")(\\.)(prototype)(\\.)(" + identifierRe +")(\\s*)(=)", - next: "function_arguments" - }, { - token : [ - "storage.type", "punctuation.operator", "entity.name.function", "text", - "keyword.operator", "text", "storage.type", "text", "paren.lparen" - ], - regex : "(" + identifierRe + ")(\\.)(" + identifierRe +")(\\s*)(=)(\\s*)(function)(\\s*)(\\()", - next: "function_arguments" - }, { - token : [ - "entity.name.function", "text", "keyword.operator", "text", "storage.type", - "text", "paren.lparen" - ], - regex : "(" + identifierRe +")(\\s*)(=)(\\s*)(function)(\\s*)(\\()", - next: "function_arguments" - }, { - token : [ - "storage.type", "punctuation.operator", "entity.name.function", "text", - "keyword.operator", "text", - "storage.type", "text", "entity.name.function", "text", "paren.lparen" - ], - regex : "(" + identifierRe + ")(\\.)(" + identifierRe +")(\\s*)(=)(\\s*)(function)(\\s+)(\\w+)(\\s*)(\\()", - next: "function_arguments" - }, { - token : [ - "storage.type", "text", "entity.name.function", "text", "paren.lparen" - ], - regex : "(function)(\\s+)(" + identifierRe + ")(\\s*)(\\()", - next: "function_arguments" - }, { - token : [ - "entity.name.function", "text", "punctuation.operator", - "text", "storage.type", "text", "paren.lparen" - ], - regex : "(" + identifierRe + ")(\\s*)(:)(\\s*)(function)(\\s*)(\\()", - next: "function_arguments" - }, { - token : [ - "text", "text", "storage.type", "text", "paren.lparen" - ], - regex : "(:)(\\s*)(function)(\\s*)(\\()", - next: "function_arguments" - }, { - token : "keyword", - regex : "(?:" + kwBeforeRe + ")\\b", - next : "start" - }, { - token : ["punctuation.operator", "support.function"], - regex : /(\.)(s(?:h(?:ift|ow(?:Mod(?:elessDialog|alDialog)|Help))|croll(?:X|By(?:Pages|Lines)?|Y|To)?|t(?:op|rike)|i(?:n|zeToContent|debar|gnText)|ort|u(?:p|b(?:str(?:ing)?)?)|pli(?:ce|t)|e(?:nd|t(?:Re(?:sizable|questHeader)|M(?:i(?:nutes|lliseconds)|onth)|Seconds|Ho(?:tKeys|urs)|Year|Cursor|Time(?:out)?|Interval|ZOptions|Date|UTC(?:M(?:i(?:nutes|lliseconds)|onth)|Seconds|Hours|Date|FullYear)|FullYear|Active)|arch)|qrt|lice|avePreferences|mall)|h(?:ome|andleEvent)|navigate|c(?:har(?:CodeAt|At)|o(?:s|n(?:cat|textual|firm)|mpile)|eil|lear(?:Timeout|Interval)?|a(?:ptureEvents|ll)|reate(?:StyleSheet|Popup|EventObject))|t(?:o(?:GMTString|S(?:tring|ource)|U(?:TCString|pperCase)|Lo(?:caleString|werCase))|est|a(?:n|int(?:Enabled)?))|i(?:s(?:NaN|Finite)|ndexOf|talics)|d(?:isableExternalCapture|ump|etachEvent)|u(?:n(?:shift|taint|escape|watch)|pdateCommands)|j(?:oin|avaEnabled)|p(?:o(?:p|w)|ush|lugins.refresh|a(?:ddings|rse(?:Int|Float)?)|r(?:int|ompt|eference))|e(?:scape|nableExternalCapture|val|lementFromPoint|x(?:p|ec(?:Script|Command)?))|valueOf|UTC|queryCommand(?:State|Indeterm|Enabled|Value)|f(?:i(?:nd|le(?:ModifiedDate|Size|CreatedDate|UpdatedDate)|xed)|o(?:nt(?:size|color)|rward)|loor|romCharCode)|watch|l(?:ink|o(?:ad|g)|astIndexOf)|a(?:sin|nchor|cos|t(?:tachEvent|ob|an(?:2)?)|pply|lert|b(?:s|ort))|r(?:ou(?:nd|teEvents)|e(?:size(?:By|To)|calc|turnValue|place|verse|l(?:oad|ease(?:Capture|Events)))|andom)|g(?:o|et(?:ResponseHeader|M(?:i(?:nutes|lliseconds)|onth)|Se(?:conds|lection)|Hours|Year|Time(?:zoneOffset)?|Da(?:y|te)|UTC(?:M(?:i(?:nutes|lliseconds)|onth)|Seconds|Hours|Da(?:y|te)|FullYear)|FullYear|A(?:ttention|llResponseHeaders)))|m(?:in|ove(?:B(?:y|elow)|To(?:Absolute)?|Above)|ergeAttributes|a(?:tch|rgins|x))|b(?:toa|ig|o(?:ld|rderWidths)|link|ack))\b(?=\()/ - }, { - token : ["punctuation.operator", "support.function.dom"], - regex : /(\.)(s(?:ub(?:stringData|mit)|plitText|e(?:t(?:NamedItem|Attribute(?:Node)?)|lect))|has(?:ChildNodes|Feature)|namedItem|c(?:l(?:ick|o(?:se|neNode))|reate(?:C(?:omment|DATASection|aption)|T(?:Head|extNode|Foot)|DocumentFragment|ProcessingInstruction|E(?:ntityReference|lement)|Attribute))|tabIndex|i(?:nsert(?:Row|Before|Cell|Data)|tem)|open|delete(?:Row|C(?:ell|aption)|T(?:Head|Foot)|Data)|focus|write(?:ln)?|a(?:dd|ppend(?:Child|Data))|re(?:set|place(?:Child|Data)|move(?:NamedItem|Child|Attribute(?:Node)?)?)|get(?:NamedItem|Element(?:sBy(?:Name|TagName)|ById)|Attribute(?:Node)?)|blur)\b(?=\()/ - }, { - token : ["punctuation.operator", "support.constant"], - regex : /(\.)(s(?:ystemLanguage|cr(?:ipts|ollbars|een(?:X|Y|Top|Left))|t(?:yle(?:Sheets)?|atus(?:Text|bar)?)|ibling(?:Below|Above)|ource|uffixes|e(?:curity(?:Policy)?|l(?:ection|f)))|h(?:istory|ost(?:name)?|as(?:h|Focus))|y|X(?:MLDocument|SLDocument)|n(?:ext|ame(?:space(?:s|URI)|Prop))|M(?:IN_VALUE|AX_VALUE)|c(?:haracterSet|o(?:n(?:structor|trollers)|okieEnabled|lorDepth|mp(?:onents|lete))|urrent|puClass|l(?:i(?:p(?:boardData)?|entInformation)|osed|asses)|alle(?:e|r)|rypto)|t(?:o(?:olbar|p)|ext(?:Transform|Indent|Decoration|Align)|ags)|SQRT(?:1_2|2)|i(?:n(?:ner(?:Height|Width)|put)|ds|gnoreCase)|zIndex|o(?:scpu|n(?:readystatechange|Line)|uter(?:Height|Width)|p(?:sProfile|ener)|ffscreenBuffering)|NEGATIVE_INFINITY|d(?:i(?:splay|alog(?:Height|Top|Width|Left|Arguments)|rectories)|e(?:scription|fault(?:Status|Ch(?:ecked|arset)|View)))|u(?:ser(?:Profile|Language|Agent)|n(?:iqueID|defined)|pdateInterval)|_content|p(?:ixelDepth|ort|ersonalbar|kcs11|l(?:ugins|atform)|a(?:thname|dding(?:Right|Bottom|Top|Left)|rent(?:Window|Layer)?|ge(?:X(?:Offset)?|Y(?:Offset)?))|r(?:o(?:to(?:col|type)|duct(?:Sub)?|mpter)|e(?:vious|fix)))|e(?:n(?:coding|abledPlugin)|x(?:ternal|pando)|mbeds)|v(?:isibility|endor(?:Sub)?|Linkcolor)|URLUnencoded|P(?:I|OSITIVE_INFINITY)|f(?:ilename|o(?:nt(?:Size|Family|Weight)|rmName)|rame(?:s|Element)|gColor)|E|whiteSpace|l(?:i(?:stStyleType|n(?:eHeight|kColor))|o(?:ca(?:tion(?:bar)?|lName)|wsrc)|e(?:ngth|ft(?:Context)?)|a(?:st(?:M(?:odified|atch)|Index|Paren)|yer(?:s|X)|nguage))|a(?:pp(?:MinorVersion|Name|Co(?:deName|re)|Version)|vail(?:Height|Top|Width|Left)|ll|r(?:ity|guments)|Linkcolor|bove)|r(?:ight(?:Context)?|e(?:sponse(?:XML|Text)|adyState))|global|x|m(?:imeTypes|ultiline|enubar|argin(?:Right|Bottom|Top|Left))|L(?:N(?:10|2)|OG(?:10E|2E))|b(?:o(?:ttom|rder(?:Width|RightWidth|BottomWidth|Style|Color|TopWidth|LeftWidth))|ufferDepth|elow|ackground(?:Color|Image)))\b/ - }, { - token : ["storage.type", "punctuation.operator", "support.function.firebug"], - regex : /(console)(\.)(warn|info|log|error|time|timeEnd|assert)\b/ - }, { - token : keywordMapper, - regex : identifierRe - }, { - token : "keyword.operator", - regex : /--|\+\+|[!$%&*+\-~]|===|==|=|!=|!==|<=|>=|<<=|>>=|>>>=|<>|<|>|!|&&|\|\||\?\:|\*=|%=|\+=|\-=|&=|\^=/, - next : "start" - }, { - token : "punctuation.operator", - regex : /\?|\:|\,|\;|\./, - next : "start" - }, { - token : "paren.lparen", - regex : /[\[({]/, - next : "start" - }, { - token : "paren.rparen", - regex : /[\])}]/ - }, { - token : "keyword.operator", - regex : /\/=?/, - next : "start" - }, { - token: "comment", - regex: /^#!.*$/ - } - ], - "start": [ - DocCommentHighlightRules.getStartRule("doc-start"), - { - token : "comment", // multi line comment - regex : "\\/\\*", - next : "comment_regex_allowed" - }, { - token : "comment", - regex : "\\/\\/", - next : "line_comment_regex_allowed" - }, { - token: "string.regexp", - regex: "\\/", - next: "regex" - }, { - token : "text", - regex : "\\s+|^$", - next : "start" - }, { - token: "empty", - regex: "", - next: "no_regex" - } - ], - "regex": [ - { - token: "regexp.keyword.operator", - regex: "\\\\(?:u[\\da-fA-F]{4}|x[\\da-fA-F]{2}|.)" - }, { - token: "string.regexp", - regex: "/[sxngimy]*", - next: "no_regex" - }, { - token : "invalid", - regex: /\{\d+\b,?\d*\}[+*]|[+*$^?][+*]|[$^][?]|\?{3,}/ - }, { - token : "constant.language.escape", - regex: /\(\?[:=!]|\)|\{\d+\b,?\d*\}|[+*]\?|[()$^+*?.]/ - }, { - token : "constant.language.delimiter", - regex: /\|/ - }, { - token: "constant.language.escape", - regex: /\[\^?/, - next: "regex_character_class" - }, { - token: "empty", - regex: "$", - next: "no_regex" - }, { - defaultToken: "string.regexp" - } - ], - "regex_character_class": [ - { - token: "regexp.keyword.operator", - regex: "\\\\(?:u[\\da-fA-F]{4}|x[\\da-fA-F]{2}|.)" - }, { - token: "constant.language.escape", - regex: "]", - next: "regex" - }, { - token: "constant.language.escape", - regex: "-" - }, { - token: "empty", - regex: "$", - next: "no_regex" - }, { - defaultToken: "string.regexp.charachterclass" - } - ], - "function_arguments": [ - { - token: "variable.parameter", - regex: identifierRe - }, { - token: "punctuation.operator", - regex: "[, ]+" - }, { - token: "punctuation.operator", - regex: "$" - }, { - token: "empty", - regex: "", - next: "no_regex" - } - ], - "comment_regex_allowed" : [ - {token : "comment", regex : "\\*\\/", next : "start"}, - {defaultToken : "comment"} - ], - "comment" : [ - {token : "comment", regex : "\\*\\/", next : "no_regex"}, - {defaultToken : "comment"} - ], - "line_comment_regex_allowed" : [ - {token : "comment", regex : "$|^", next : "start"}, - {defaultToken : "comment"} - ], - "line_comment" : [ - {token : "comment", regex : "$|^", next : "no_regex"}, - {defaultToken : "comment"} - ], - "qqstring" : [ - { - token : "constant.language.escape", - regex : escapedRe - }, { - token : "string", - regex : "\\\\$", - next : "qqstring" - }, { - token : "string", - regex : '"|$', - next : "no_regex" - }, { - defaultToken: "string" - } - ], - "qstring" : [ - { - token : "constant.language.escape", - regex : escapedRe - }, { - token : "string", - regex : "\\\\$", - next : "qstring" - }, { - token : "string", - regex : "'|$", - next : "no_regex" - }, { - defaultToken: "string" - } - ] - }; - - this.embedRules(DocCommentHighlightRules, "doc-", - [ DocCommentHighlightRules.getEndRule("no_regex") ]); -}; - -oop.inherits(JavaScriptHighlightRules, TextHighlightRules); - -exports.JavaScriptHighlightRules = JavaScriptHighlightRules; -}); - -ace.define('ace/mode/doc_comment_highlight_rules', ['require', 'exports', 'module' , 'ace/lib/oop', 'ace/mode/text_highlight_rules'], function(require, exports, module) { - - -var oop = require("../lib/oop"); -var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; - -var DocCommentHighlightRules = function() { - - this.$rules = { - "start" : [ { - token : "comment.doc.tag", - regex : "@[\\w\\d_]+" // TODO: fix email addresses - }, { - token : "comment.doc.tag", - regex : "\\bTODO\\b" - }, { - defaultToken : "comment.doc" - }] - }; -}; - -oop.inherits(DocCommentHighlightRules, TextHighlightRules); - -DocCommentHighlightRules.getStartRule = function(start) { - return { - token : "comment.doc", // doc comment - regex : "\\/\\*(?=\\*)", - next : start - }; -}; - -DocCommentHighlightRules.getEndRule = function (start) { - return { - token : "comment.doc", // closing comment - regex : "\\*\\/", - next : start - }; -}; - - -exports.DocCommentHighlightRules = DocCommentHighlightRules; - -}); - -ace.define('ace/mode/matching_brace_outdent', ['require', 'exports', 'module' , 'ace/range'], function(require, exports, module) { - - -var Range = require("../range").Range; - -var MatchingBraceOutdent = function() {}; - -(function() { - - this.checkOutdent = function(line, input) { - if (! /^\s+$/.test(line)) - return false; - - return /^\s*\}/.test(input); - }; - - this.autoOutdent = function(doc, row) { - var line = doc.getLine(row); - var match = line.match(/^(\s*\})/); - - if (!match) return 0; - - var column = match[1].length; - var openBracePos = doc.findMatchingBracket({row: row, column: column}); - - if (!openBracePos || openBracePos.row == row) return 0; - - var indent = this.$getIndent(doc.getLine(openBracePos.row)); - doc.replace(new Range(row, 0, row, column-1), indent); - }; - - this.$getIndent = function(line) { - return line.match(/^\s*/)[0]; - }; - -}).call(MatchingBraceOutdent.prototype); - -exports.MatchingBraceOutdent = MatchingBraceOutdent; -}); - -ace.define('ace/mode/behaviour/cstyle', ['require', 'exports', 'module' , 'ace/lib/oop', 'ace/mode/behaviour', 'ace/token_iterator', 'ace/lib/lang'], function(require, exports, module) { - - -var oop = require("../../lib/oop"); -var Behaviour = require("../behaviour").Behaviour; -var TokenIterator = require("../../token_iterator").TokenIterator; -var lang = require("../../lib/lang"); - -var SAFE_INSERT_IN_TOKENS = - ["text", "paren.rparen", "punctuation.operator"]; -var SAFE_INSERT_BEFORE_TOKENS = - ["text", "paren.rparen", "punctuation.operator", "comment"]; - - -var autoInsertedBrackets = 0; -var autoInsertedRow = -1; -var autoInsertedLineEnd = ""; -var maybeInsertedBrackets = 0; -var maybeInsertedRow = -1; -var maybeInsertedLineStart = ""; -var maybeInsertedLineEnd = ""; - -var CstyleBehaviour = function () { - - CstyleBehaviour.isSaneInsertion = function(editor, session) { - var cursor = editor.getCursorPosition(); - var iterator = new TokenIterator(session, cursor.row, cursor.column); - if (!this.$matchTokenType(iterator.getCurrentToken() || "text", SAFE_INSERT_IN_TOKENS)) { - var iterator2 = new TokenIterator(session, cursor.row, cursor.column + 1); - if (!this.$matchTokenType(iterator2.getCurrentToken() || "text", SAFE_INSERT_IN_TOKENS)) - return false; - } - iterator.stepForward(); - return iterator.getCurrentTokenRow() !== cursor.row || - this.$matchTokenType(iterator.getCurrentToken() || "text", SAFE_INSERT_BEFORE_TOKENS); - }; - - CstyleBehaviour.$matchTokenType = function(token, types) { - return types.indexOf(token.type || token) > -1; - }; - - CstyleBehaviour.recordAutoInsert = function(editor, session, bracket) { - var cursor = editor.getCursorPosition(); - var line = session.doc.getLine(cursor.row); - if (!this.isAutoInsertedClosing(cursor, line, autoInsertedLineEnd[0])) - autoInsertedBrackets = 0; - autoInsertedRow = cursor.row; - autoInsertedLineEnd = bracket + line.substr(cursor.column); - autoInsertedBrackets++; - }; - - CstyleBehaviour.recordMaybeInsert = function(editor, session, bracket) { - var cursor = editor.getCursorPosition(); - var line = session.doc.getLine(cursor.row); - if (!this.isMaybeInsertedClosing(cursor, line)) - maybeInsertedBrackets = 0; - maybeInsertedRow = cursor.row; - maybeInsertedLineStart = line.substr(0, cursor.column) + bracket; - maybeInsertedLineEnd = line.substr(cursor.column); - maybeInsertedBrackets++; - }; - - CstyleBehaviour.isAutoInsertedClosing = function(cursor, line, bracket) { - return autoInsertedBrackets > 0 && - cursor.row === autoInsertedRow && - bracket === autoInsertedLineEnd[0] && - line.substr(cursor.column) === autoInsertedLineEnd; - }; - - CstyleBehaviour.isMaybeInsertedClosing = function(cursor, line) { - return maybeInsertedBrackets > 0 && - cursor.row === maybeInsertedRow && - line.substr(cursor.column) === maybeInsertedLineEnd && - line.substr(0, cursor.column) == maybeInsertedLineStart; - }; - - CstyleBehaviour.popAutoInsertedClosing = function() { - autoInsertedLineEnd = autoInsertedLineEnd.substr(1); - autoInsertedBrackets--; - }; - - CstyleBehaviour.clearMaybeInsertedClosing = function() { - maybeInsertedBrackets = 0; - maybeInsertedRow = -1; - }; - - this.add("braces", "insertion", function (state, action, editor, session, text) { - var cursor = editor.getCursorPosition(); - var line = session.doc.getLine(cursor.row); - if (text == '{') { - var selection = editor.getSelectionRange(); - var selected = session.doc.getTextRange(selection); - if (selected !== "" && selected !== "{" && editor.getWrapBehavioursEnabled()) { - return { - text: '{' + selected + '}', - selection: false - }; - } else if (CstyleBehaviour.isSaneInsertion(editor, session)) { - if (/[\]\}\)]/.test(line[cursor.column]) || editor.inMultiSelectMode) { - CstyleBehaviour.recordAutoInsert(editor, session, "}"); - return { - text: '{}', - selection: [1, 1] - }; - } else { - CstyleBehaviour.recordMaybeInsert(editor, session, "{"); - return { - text: '{', - selection: [1, 1] - }; - } - } - } else if (text == '}') { - var rightChar = line.substring(cursor.column, cursor.column + 1); - if (rightChar == '}') { - var matching = session.$findOpeningBracket('}', {column: cursor.column + 1, row: cursor.row}); - if (matching !== null && CstyleBehaviour.isAutoInsertedClosing(cursor, line, text)) { - CstyleBehaviour.popAutoInsertedClosing(); - return { - text: '', - selection: [1, 1] - }; - } - } - } else if (text == "\n" || text == "\r\n") { - var closing = ""; - if (CstyleBehaviour.isMaybeInsertedClosing(cursor, line)) { - closing = lang.stringRepeat("}", maybeInsertedBrackets); - CstyleBehaviour.clearMaybeInsertedClosing(); - } - var rightChar = line.substring(cursor.column, cursor.column + 1); - if (rightChar === '}') { - var openBracePos = session.findMatchingBracket({row: cursor.row, column: cursor.column+1}, '}'); - if (!openBracePos) - return null; - var next_indent = this.$getIndent(session.getLine(openBracePos.row)); - } else if (closing) { - var next_indent = this.$getIndent(line); - } else { - return; - } - var indent = next_indent + session.getTabString(); - - return { - text: '\n' + indent + '\n' + next_indent + closing, - selection: [1, indent.length, 1, indent.length] - }; - } else { - CstyleBehaviour.clearMaybeInsertedClosing(); - } - }); - - this.add("braces", "deletion", function (state, action, editor, session, range) { - var selected = session.doc.getTextRange(range); - if (!range.isMultiLine() && selected == '{') { - var line = session.doc.getLine(range.start.row); - var rightChar = line.substring(range.end.column, range.end.column + 1); - if (rightChar == '}') { - range.end.column++; - return range; - } else { - maybeInsertedBrackets--; - } - } - }); - - this.add("parens", "insertion", function (state, action, editor, session, text) { - if (text == '(') { - var selection = editor.getSelectionRange(); - var selected = session.doc.getTextRange(selection); - if (selected !== "" && editor.getWrapBehavioursEnabled()) { - return { - text: '(' + selected + ')', - selection: false - }; - } else if (CstyleBehaviour.isSaneInsertion(editor, session)) { - CstyleBehaviour.recordAutoInsert(editor, session, ")"); - return { - text: '()', - selection: [1, 1] - }; - } - } else if (text == ')') { - var cursor = editor.getCursorPosition(); - var line = session.doc.getLine(cursor.row); - var rightChar = line.substring(cursor.column, cursor.column + 1); - if (rightChar == ')') { - var matching = session.$findOpeningBracket(')', {column: cursor.column + 1, row: cursor.row}); - if (matching !== null && CstyleBehaviour.isAutoInsertedClosing(cursor, line, text)) { - CstyleBehaviour.popAutoInsertedClosing(); - return { - text: '', - selection: [1, 1] - }; - } - } - } - }); - - this.add("parens", "deletion", function (state, action, editor, session, range) { - var selected = session.doc.getTextRange(range); - if (!range.isMultiLine() && selected == '(') { - var line = session.doc.getLine(range.start.row); - var rightChar = line.substring(range.start.column + 1, range.start.column + 2); - if (rightChar == ')') { - range.end.column++; - return range; - } - } - }); - - this.add("brackets", "insertion", function (state, action, editor, session, text) { - if (text == '[') { - var selection = editor.getSelectionRange(); - var selected = session.doc.getTextRange(selection); - if (selected !== "" && editor.getWrapBehavioursEnabled()) { - return { - text: '[' + selected + ']', - selection: false - }; - } else if (CstyleBehaviour.isSaneInsertion(editor, session)) { - CstyleBehaviour.recordAutoInsert(editor, session, "]"); - return { - text: '[]', - selection: [1, 1] - }; - } - } else if (text == ']') { - var cursor = editor.getCursorPosition(); - var line = session.doc.getLine(cursor.row); - var rightChar = line.substring(cursor.column, cursor.column + 1); - if (rightChar == ']') { - var matching = session.$findOpeningBracket(']', {column: cursor.column + 1, row: cursor.row}); - if (matching !== null && CstyleBehaviour.isAutoInsertedClosing(cursor, line, text)) { - CstyleBehaviour.popAutoInsertedClosing(); - return { - text: '', - selection: [1, 1] - }; - } - } - } - }); - - this.add("brackets", "deletion", function (state, action, editor, session, range) { - var selected = session.doc.getTextRange(range); - if (!range.isMultiLine() && selected == '[') { - var line = session.doc.getLine(range.start.row); - var rightChar = line.substring(range.start.column + 1, range.start.column + 2); - if (rightChar == ']') { - range.end.column++; - return range; - } - } - }); - - this.add("string_dquotes", "insertion", function (state, action, editor, session, text) { - if (text == '"' || text == "'") { - var quote = text; - var selection = editor.getSelectionRange(); - var selected = session.doc.getTextRange(selection); - if (selected !== "" && selected !== "'" && selected != '"' && editor.getWrapBehavioursEnabled()) { - return { - text: quote + selected + quote, - selection: false - }; - } else { - var cursor = editor.getCursorPosition(); - var line = session.doc.getLine(cursor.row); - var leftChar = line.substring(cursor.column-1, cursor.column); - if (leftChar == '\\') { - return null; - } - var tokens = session.getTokens(selection.start.row); - var col = 0, token; - var quotepos = -1; // Track whether we're inside an open quote. - - for (var x = 0; x < tokens.length; x++) { - token = tokens[x]; - if (token.type == "string") { - quotepos = -1; - } else if (quotepos < 0) { - quotepos = token.value.indexOf(quote); - } - if ((token.value.length + col) > selection.start.column) { - break; - } - col += tokens[x].value.length; - } - if (!token || (quotepos < 0 && token.type !== "comment" && (token.type !== "string" || ((selection.start.column !== token.value.length+col-1) && token.value.lastIndexOf(quote) === token.value.length-1)))) { - if (!CstyleBehaviour.isSaneInsertion(editor, session)) - return; - return { - text: quote + quote, - selection: [1,1] - }; - } else if (token && token.type === "string") { - var rightChar = line.substring(cursor.column, cursor.column + 1); - if (rightChar == quote) { - return { - text: '', - selection: [1, 1] - }; - } - } - } - } - }); - - this.add("string_dquotes", "deletion", function (state, action, editor, session, range) { - var selected = session.doc.getTextRange(range); - if (!range.isMultiLine() && (selected == '"' || selected == "'")) { - var line = session.doc.getLine(range.start.row); - var rightChar = line.substring(range.start.column + 1, range.start.column + 2); - if (rightChar == selected) { - range.end.column++; - return range; - } - } - }); - -}; - -oop.inherits(CstyleBehaviour, Behaviour); - -exports.CstyleBehaviour = CstyleBehaviour; -}); - -ace.define('ace/mode/folding/cstyle', ['require', 'exports', 'module' , 'ace/lib/oop', 'ace/range', 'ace/mode/folding/fold_mode'], function(require, exports, module) { - - -var oop = require("../../lib/oop"); -var Range = require("../../range").Range; -var BaseFoldMode = require("./fold_mode").FoldMode; - -var FoldMode = exports.FoldMode = function(commentRegex) { - if (commentRegex) { - this.foldingStartMarker = new RegExp( - this.foldingStartMarker.source.replace(/\|[^|]*?$/, "|" + commentRegex.start) - ); - this.foldingStopMarker = new RegExp( - this.foldingStopMarker.source.replace(/\|[^|]*?$/, "|" + commentRegex.end) - ); - } -}; -oop.inherits(FoldMode, BaseFoldMode); - -(function() { - - this.foldingStartMarker = /(\{|\[)[^\}\]]*$|^\s*(\/\*)/; - this.foldingStopMarker = /^[^\[\{]*(\}|\])|^[\s\*]*(\*\/)/; - - this.getFoldWidgetRange = function(session, foldStyle, row, forceMultiline) { - var line = session.getLine(row); - var match = line.match(this.foldingStartMarker); - if (match) { - var i = match.index; - - if (match[1]) - return this.openingBracketBlock(session, match[1], row, i); - - var range = session.getCommentFoldRange(row, i + match[0].length, 1); - - if (range && !range.isMultiLine()) { - if (forceMultiline) { - range = this.getSectionRange(session, row); - } else if (foldStyle != "all") - range = null; - } - - return range; - } - - if (foldStyle === "markbegin") - return; - - var match = line.match(this.foldingStopMarker); - if (match) { - var i = match.index + match[0].length; - - if (match[1]) - return this.closingBracketBlock(session, match[1], row, i); - - return session.getCommentFoldRange(row, i, -1); - } - }; - - this.getSectionRange = function(session, row) { - var line = session.getLine(row); - var startIndent = line.search(/\S/); - var startRow = row; - var startColumn = line.length; - row = row + 1; - var endRow = row; - var maxRow = session.getLength(); - while (++row < maxRow) { - line = session.getLine(row); - var indent = line.search(/\S/); - if (indent === -1) - continue; - if (startIndent > indent) - break; - var subRange = this.getFoldWidgetRange(session, "all", row); - - if (subRange) { - if (subRange.start.row <= startRow) { - break; - } else if (subRange.isMultiLine()) { - row = subRange.end.row; - } else if (startIndent == indent) { - break; - } - } - endRow = row; - } - - return new Range(startRow, startColumn, endRow, session.getLine(endRow).length); - }; - -}).call(FoldMode.prototype); - -}); - -ace.define('ace/mode/css', ['require', 'exports', 'module' , 'ace/lib/oop', 'ace/mode/text', 'ace/tokenizer', 'ace/mode/css_highlight_rules', 'ace/mode/matching_brace_outdent', 'ace/worker/worker_client', 'ace/mode/behaviour/css', 'ace/mode/folding/cstyle'], function(require, exports, module) { - - -var oop = require("../lib/oop"); -var TextMode = require("./text").Mode; -var Tokenizer = require("../tokenizer").Tokenizer; -var CssHighlightRules = require("./css_highlight_rules").CssHighlightRules; -var MatchingBraceOutdent = require("./matching_brace_outdent").MatchingBraceOutdent; -var WorkerClient = require("../worker/worker_client").WorkerClient; -var CssBehaviour = require("./behaviour/css").CssBehaviour; -var CStyleFoldMode = require("./folding/cstyle").FoldMode; - -var Mode = function() { - this.HighlightRules = CssHighlightRules; - this.$outdent = new MatchingBraceOutdent(); - this.$behaviour = new CssBehaviour(); - this.foldingRules = new CStyleFoldMode(); -}; -oop.inherits(Mode, TextMode); - -(function() { - - this.foldingRules = "cStyle"; - this.blockComment = {start: "/*", end: "*/"}; - - this.getNextLineIndent = function(state, line, tab) { - var indent = this.$getIndent(line); - var tokens = this.getTokenizer().getLineTokens(line, state).tokens; - if (tokens.length && tokens[tokens.length-1].type == "comment") { - return indent; - } - - var match = line.match(/^.*\{\s*$/); - if (match) { - indent += tab; - } - - return indent; - }; - - this.checkOutdent = function(state, line, input) { - return this.$outdent.checkOutdent(line, input); - }; - - this.autoOutdent = function(state, doc, row) { - this.$outdent.autoOutdent(doc, row); - }; - - this.createWorker = function(session) { - var worker = new WorkerClient(["ace"], "ace/mode/css_worker", "Worker"); - worker.attachToDocument(session.getDocument()); - - worker.on("csslint", function(e) { - session.setAnnotations(e.data); - }); - - worker.on("terminate", function() { - session.clearAnnotations(); - }); - - return worker; - }; - - this.$id = "ace/mode/css"; -}).call(Mode.prototype); - -exports.Mode = Mode; - -}); - -ace.define('ace/mode/css_highlight_rules', ['require', 'exports', 'module' , 'ace/lib/oop', 'ace/lib/lang', 'ace/mode/text_highlight_rules'], function(require, exports, module) { - - -var oop = require("../lib/oop"); -var lang = require("../lib/lang"); -var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; -var supportType = exports.supportType = "animation-fill-mode|alignment-adjust|alignment-baseline|animation-delay|animation-direction|animation-duration|animation-iteration-count|animation-name|animation-play-state|animation-timing-function|animation|appearance|azimuth|backface-visibility|background-attachment|background-break|background-clip|background-color|background-image|background-origin|background-position|background-repeat|background-size|background|baseline-shift|binding|bleed|bookmark-label|bookmark-level|bookmark-state|bookmark-target|border-bottom|border-bottom-color|border-bottom-left-radius|border-bottom-right-radius|border-bottom-style|border-bottom-width|border-collapse|border-color|border-image|border-image-outset|border-image-repeat|border-image-slice|border-image-source|border-image-width|border-left|border-left-color|border-left-style|border-left-width|border-radius|border-right|border-right-color|border-right-style|border-right-width|border-spacing|border-style|border-top|border-top-color|border-top-left-radius|border-top-right-radius|border-top-style|border-top-width|border-width|border|bottom|box-align|box-decoration-break|box-direction|box-flex-group|box-flex|box-lines|box-ordinal-group|box-orient|box-pack|box-shadow|box-sizing|break-after|break-before|break-inside|caption-side|clear|clip|color-profile|color|column-count|column-fill|column-gap|column-rule|column-rule-color|column-rule-style|column-rule-width|column-span|column-width|columns|content|counter-increment|counter-reset|crop|cue-after|cue-before|cue|cursor|direction|display|dominant-baseline|drop-initial-after-adjust|drop-initial-after-align|drop-initial-before-adjust|drop-initial-before-align|drop-initial-size|drop-initial-value|elevation|empty-cells|fit|fit-position|float-offset|float|font-family|font-size|font-size-adjust|font-stretch|font-style|font-variant|font-weight|font|grid-columns|grid-rows|hanging-punctuation|height|hyphenate-after|hyphenate-before|hyphenate-character|hyphenate-lines|hyphenate-resource|hyphens|icon|image-orientation|image-rendering|image-resolution|inline-box-align|left|letter-spacing|line-height|line-stacking-ruby|line-stacking-shift|line-stacking-strategy|line-stacking|list-style-image|list-style-position|list-style-type|list-style|margin-bottom|margin-left|margin-right|margin-top|margin|mark-after|mark-before|mark|marks|marquee-direction|marquee-play-count|marquee-speed|marquee-style|max-height|max-width|min-height|min-width|move-to|nav-down|nav-index|nav-left|nav-right|nav-up|opacity|orphans|outline-color|outline-offset|outline-style|outline-width|outline|overflow-style|overflow-x|overflow-y|overflow|padding-bottom|padding-left|padding-right|padding-top|padding|page-break-after|page-break-before|page-break-inside|page-policy|page|pause-after|pause-before|pause|perspective-origin|perspective|phonemes|pitch-range|pitch|play-during|pointer-events|position|presentation-level|punctuation-trim|quotes|rendering-intent|resize|rest-after|rest-before|rest|richness|right|rotation-point|rotation|ruby-align|ruby-overhang|ruby-position|ruby-span|size|speak-header|speak-numeral|speak-punctuation|speak|speech-rate|stress|string-set|table-layout|target-name|target-new|target-position|target|text-align-last|text-align|text-decoration|text-emphasis|text-height|text-indent|text-justify|text-outline|text-shadow|text-transform|text-wrap|top|transform-origin|transform-style|transform|transition-delay|transition-duration|transition-property|transition-timing-function|transition|unicode-bidi|vertical-align|visibility|voice-balance|voice-duration|voice-family|voice-pitch-range|voice-pitch|voice-rate|voice-stress|voice-volume|volume|white-space-collapse|white-space|widows|width|word-break|word-spacing|word-wrap|z-index"; -var supportFunction = exports.supportFunction = "rgb|rgba|url|attr|counter|counters"; -var supportConstant = exports.supportConstant = "absolute|after-edge|after|all-scroll|all|alphabetic|always|antialiased|armenian|auto|avoid-column|avoid-page|avoid|balance|baseline|before-edge|before|below|bidi-override|block-line-height|block|bold|bolder|border-box|both|bottom|box|break-all|break-word|capitalize|caps-height|caption|center|central|char|circle|cjk-ideographic|clone|close-quote|col-resize|collapse|column|consider-shifts|contain|content-box|cover|crosshair|cubic-bezier|dashed|decimal-leading-zero|decimal|default|disabled|disc|disregard-shifts|distribute-all-lines|distribute-letter|distribute-space|distribute|dotted|double|e-resize|ease-in|ease-in-out|ease-out|ease|ellipsis|end|exclude-ruby|fill|fixed|georgian|glyphs|grid-height|groove|hand|hanging|hebrew|help|hidden|hiragana-iroha|hiragana|horizontal|icon|ideograph-alpha|ideograph-numeric|ideograph-parenthesis|ideograph-space|ideographic|inactive|include-ruby|inherit|initial|inline-block|inline-box|inline-line-height|inline-table|inline|inset|inside|inter-ideograph|inter-word|invert|italic|justify|katakana-iroha|katakana|keep-all|last|left|lighter|line-edge|line-through|line|linear|list-item|local|loose|lower-alpha|lower-greek|lower-latin|lower-roman|lowercase|lr-tb|ltr|mathematical|max-height|max-size|medium|menu|message-box|middle|move|n-resize|ne-resize|newspaper|no-change|no-close-quote|no-drop|no-open-quote|no-repeat|none|normal|not-allowed|nowrap|nw-resize|oblique|open-quote|outset|outside|overline|padding-box|page|pointer|pre-line|pre-wrap|pre|preserve-3d|progress|relative|repeat-x|repeat-y|repeat|replaced|reset-size|ridge|right|round|row-resize|rtl|s-resize|scroll|se-resize|separate|slice|small-caps|small-caption|solid|space|square|start|static|status-bar|step-end|step-start|steps|stretch|strict|sub|super|sw-resize|table-caption|table-cell|table-column-group|table-column|table-footer-group|table-header-group|table-row-group|table-row|table|tb-rl|text-after-edge|text-before-edge|text-bottom|text-size|text-top|text|thick|thin|transparent|underline|upper-alpha|upper-latin|upper-roman|uppercase|use-script|vertical-ideographic|vertical-text|visible|w-resize|wait|whitespace|z-index|zero"; -var supportConstantColor = exports.supportConstantColor = "aqua|black|blue|fuchsia|gray|green|lime|maroon|navy|olive|orange|purple|red|silver|teal|white|yellow"; -var supportConstantFonts = exports.supportConstantFonts = "arial|century|comic|courier|garamond|georgia|helvetica|impact|lucida|symbol|system|tahoma|times|trebuchet|utopia|verdana|webdings|sans-serif|serif|monospace"; - -var numRe = exports.numRe = "\\-?(?:(?:[0-9]+)|(?:[0-9]*\\.[0-9]+))"; -var pseudoElements = exports.pseudoElements = "(\\:+)\\b(after|before|first-letter|first-line|moz-selection|selection)\\b"; -var pseudoClasses = exports.pseudoClasses = "(:)\\b(active|checked|disabled|empty|enabled|first-child|first-of-type|focus|hover|indeterminate|invalid|last-child|last-of-type|link|not|nth-child|nth-last-child|nth-last-of-type|nth-of-type|only-child|only-of-type|required|root|target|valid|visited)\\b"; - -var CssHighlightRules = function() { - - var keywordMapper = this.createKeywordMapper({ - "support.function": supportFunction, - "support.constant": supportConstant, - "support.type": supportType, - "support.constant.color": supportConstantColor, - "support.constant.fonts": supportConstantFonts - }, "text", true); - - this.$rules = { - "start" : [{ - token : "comment", // multi line comment - regex : "\\/\\*", - push : "comment" - }, { - token: "paren.lparen", - regex: "\\{", - push: "ruleset" - }, { - token: "string", - regex: "@.*?{", - push: "media" - }, { - token: "keyword", - regex: "#[a-z0-9-_]+" - }, { - token: "variable", - regex: "\\.[a-z0-9-_]+" - }, { - token: "string", - regex: ":[a-z0-9-_]+" - }, { - token: "constant", - regex: "[a-z0-9-_]+" - }, { - caseInsensitive: true - }], - - "media" : [{ - token : "comment", // multi line comment - regex : "\\/\\*", - push : "comment" - }, { - token: "paren.lparen", - regex: "\\{", - push: "ruleset" - }, { - token: "string", - regex: "\\}", - next: "pop" - }, { - token: "keyword", - regex: "#[a-z0-9-_]+" - }, { - token: "variable", - regex: "\\.[a-z0-9-_]+" - }, { - token: "string", - regex: ":[a-z0-9-_]+" - }, { - token: "constant", - regex: "[a-z0-9-_]+" - }, { - caseInsensitive: true - }], - - "comment" : [{ - token : "comment", - regex : "\\*\\/", - next : "pop" - }, { - defaultToken : "comment" - }], - - "ruleset" : [ - { - token : "paren.rparen", - regex : "\\}", - next: "pop" - }, { - token : "comment", // multi line comment - regex : "\\/\\*", - push : "comment" - }, { - token : "string", // single line - regex : '["](?:(?:\\\\.)|(?:[^"\\\\]))*?["]' - }, { - token : "string", // single line - regex : "['](?:(?:\\\\.)|(?:[^'\\\\]))*?[']" - }, { - token : ["constant.numeric", "keyword"], - regex : "(" + numRe + ")(ch|cm|deg|em|ex|fr|gd|grad|Hz|in|kHz|mm|ms|pc|pt|px|rad|rem|s|turn|vh|vm|vw|%)" - }, { - token : "constant.numeric", - regex : numRe - }, { - token : "constant.numeric", // hex6 color - regex : "#[a-f0-9]{6}" - }, { - token : "constant.numeric", // hex3 color - regex : "#[a-f0-9]{3}" - }, { - token : ["punctuation", "entity.other.attribute-name.pseudo-element.css"], - regex : pseudoElements - }, { - token : ["punctuation", "entity.other.attribute-name.pseudo-class.css"], - regex : pseudoClasses - }, { - token : ["support.function", "string", "support.function"], - regex : "(url\\()(.*)(\\))" - }, { - token : keywordMapper, - regex : "\\-?[a-zA-Z_][a-zA-Z0-9_\\-]*" - }, { - caseInsensitive: true - }] - }; - - this.normalizeRules(); -}; - -oop.inherits(CssHighlightRules, TextHighlightRules); - -exports.CssHighlightRules = CssHighlightRules; - -}); - -ace.define('ace/mode/behaviour/css', ['require', 'exports', 'module' , 'ace/lib/oop', 'ace/mode/behaviour', 'ace/mode/behaviour/cstyle', 'ace/token_iterator'], function(require, exports, module) { - - -var oop = require("../../lib/oop"); -var Behaviour = require("../behaviour").Behaviour; -var CstyleBehaviour = require("./cstyle").CstyleBehaviour; -var TokenIterator = require("../../token_iterator").TokenIterator; - -var CssBehaviour = function () { - - this.inherit(CstyleBehaviour); - - this.add("colon", "insertion", function (state, action, editor, session, text) { - if (text === ':') { - var cursor = editor.getCursorPosition(); - var iterator = new TokenIterator(session, cursor.row, cursor.column); - var token = iterator.getCurrentToken(); - if (token && token.value.match(/\s+/)) { - token = iterator.stepBackward(); - } - if (token && token.type === 'support.type') { - var line = session.doc.getLine(cursor.row); - var rightChar = line.substring(cursor.column, cursor.column + 1); - if (rightChar === ':') { - return { - text: '', - selection: [1, 1] - } - } - if (!line.substring(cursor.column).match(/^\s*;/)) { - return { - text: ':;', - selection: [1, 1] - } - } - } - } - }); - - this.add("colon", "deletion", function (state, action, editor, session, range) { - var selected = session.doc.getTextRange(range); - if (!range.isMultiLine() && selected === ':') { - var cursor = editor.getCursorPosition(); - var iterator = new TokenIterator(session, cursor.row, cursor.column); - var token = iterator.getCurrentToken(); - if (token && token.value.match(/\s+/)) { - token = iterator.stepBackward(); - } - if (token && token.type === 'support.type') { - var line = session.doc.getLine(range.start.row); - var rightChar = line.substring(range.end.column, range.end.column + 1); - if (rightChar === ';') { - range.end.column ++; - return range; - } - } - } - }); - - this.add("semicolon", "insertion", function (state, action, editor, session, text) { - if (text === ';') { - var cursor = editor.getCursorPosition(); - var line = session.doc.getLine(cursor.row); - var rightChar = line.substring(cursor.column, cursor.column + 1); - if (rightChar === ';') { - return { - text: '', - selection: [1, 1] - } - } - } - }); - -} -oop.inherits(CssBehaviour, CstyleBehaviour); - -exports.CssBehaviour = CssBehaviour; -}); - -ace.define('ace/mode/html_highlight_rules', ['require', 'exports', 'module' , 'ace/lib/oop', 'ace/lib/lang', 'ace/mode/css_highlight_rules', 'ace/mode/javascript_highlight_rules', 'ace/mode/xml_highlight_rules'], function(require, exports, module) { - - -var oop = require("../lib/oop"); -var lang = require("../lib/lang"); -var CssHighlightRules = require("./css_highlight_rules").CssHighlightRules; -var JavaScriptHighlightRules = require("./javascript_highlight_rules").JavaScriptHighlightRules; -var XmlHighlightRules = require("./xml_highlight_rules").XmlHighlightRules; - -var tagMap = lang.createMap({ - a : 'anchor', - button : 'form', - form : 'form', - img : 'image', - input : 'form', - label : 'form', - option : 'form', - script : 'script', - select : 'form', - textarea : 'form', - style : 'style', - table : 'table', - tbody : 'table', - td : 'table', - tfoot : 'table', - th : 'table', - tr : 'table' -}); - -var HtmlHighlightRules = function() { - XmlHighlightRules.call(this); - - this.addRules({ - attributes: [{ - include : "space" - }, { - token : "entity.other.attribute-name", - regex : "[-_a-zA-Z0-9:]+" - }, { - token : "keyword.operator.separator", - regex : "=", - push : [{ - include: "space" - }, { - token : "string", - regex : "[^<>='\"`\\s]+", - next : "pop" - }, { - token : "empty", - regex : "", - next : "pop" - }] - }, { - include : "string" - }], - tag: [{ - token : function(start, tag) { - var group = tagMap[tag]; - return ["meta.tag.punctuation.begin", - "meta.tag.name" + (group ? "." + group : "")]; - }, - regex : "(<)([-_a-zA-Z0-9:]+)", - next: "start_tag_stuff" - }, { - token : function(start, tag) { - var group = tagMap[tag]; - return ["meta.tag.punctuation.begin", - "meta.tag.name" + (group ? "." + group : "")]; - }, - regex : "(", next : "start"} - ], - end_tag_stuff: [ - {include : "space"}, - {token : "meta.tag.punctuation.end", regex : ">", next : "start"} - ] - }); - - this.embedTagRules(CssHighlightRules, "css-", "style"); - this.embedTagRules(JavaScriptHighlightRules, "js-", "script"); - - if (this.constructor === HtmlHighlightRules) - this.normalizeRules(); -}; - -oop.inherits(HtmlHighlightRules, XmlHighlightRules); - -exports.HtmlHighlightRules = HtmlHighlightRules; -}); - -ace.define('ace/mode/xml_highlight_rules', ['require', 'exports', 'module' , 'ace/lib/oop', 'ace/mode/xml_util', 'ace/mode/text_highlight_rules'], function(require, exports, module) { - - -var oop = require("../lib/oop"); -var xmlUtil = require("./xml_util"); -var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; - -var XmlHighlightRules = function(normalize) { - this.$rules = { - start : [ - {token : "punctuation.string.begin", regex : "<\\!\\[CDATA\\[", next : "cdata"}, - { - token : ["punctuation.instruction.begin", "keyword.instruction"], - regex : "(<\\?)(xml)(?=[\\s])", next : "xml_declaration" - }, - { - token : ["punctuation.instruction.begin", "keyword.instruction"], - regex : "(<\\?)([-_a-zA-Z0-9]+)", next : "instruction" - }, - {token : "comment", regex : "<\\!--", next : "comment"}, - { - token : ["punctuation.doctype.begin", "meta.tag.doctype"], - regex : "(<\\!)(DOCTYPE)(?=[\\s])", next : "doctype" - }, - {include : "tag"}, - {include : "reference"} - ], - - xml_declaration : [ - {include : "attributes"}, - {include : "instruction"} - ], - - instruction : [ - {token : "punctuation.instruction.end", regex : "\\?>", next : "start"} - ], - - doctype : [ - {include : "space"}, - {include : "string"}, - {token : "punctuation.doctype.end", regex : ">", next : "start"}, - {token : "xml-pe", regex : "[-_a-zA-Z0-9:]+"}, - {token : "punctuation.begin", regex : "\\[", push : "declarations"} - ], - - declarations : [{ - token : "text", - regex : "\\s+" - }, { - token: "punctuation.end", - regex: "]", - next: "pop" - }, { - token : ["punctuation.begin", "keyword"], - regex : "(<\\!)([-_a-zA-Z0-9]+)", - push : [{ - token : "text", - regex : "\\s+" - }, - { - token : "punctuation.end", - regex : ">", - next : "pop" - }, - {include : "string"}] - }], - - cdata : [ - {token : "string.end", regex : "\\]\\]>", next : "start"}, - {token : "text", regex : "\\s+"}, - {token : "text", regex : "(?:[^\\]]|\\](?!\\]>))+"} - ], - - comment : [ - {token : "comment", regex : "-->", next : "start"}, - {defaultToken : "comment"} - ], - - tag : [{ - token : ["meta.tag.punctuation.begin", "meta.tag.name"], - regex : "(<)((?:[-_a-zA-Z0-9]+:)?[-_a-zA-Z0-9]+)", - next: [ - {include : "attributes"}, - {token : "meta.tag.punctuation.end", regex : "/?>", next : "start"} - ] - }, { - token : ["meta.tag.punctuation.begin", "meta.tag.name"], - regex : "(", next : "start"} - ] - }], - - space : [ - {token : "text", regex : "\\s+"} - ], - - reference : [{ - token : "constant.language.escape", - regex : "(?:&#[0-9]+;)|(?:&#x[0-9a-fA-F]+;)|(?:&[a-zA-Z0-9_:\\.-]+;)" - }, { - token : "text", regex : "&" - }], - - string: [{ - token : "string", - regex : "'", - push : "qstring_inner" - }, { - token : "string", - regex : '"', - push : "qqstring_inner" - }], - - qstring_inner: [ - {token : "string", regex: "'", next: "pop"}, - {include : "reference"}, - {defaultToken : "string"} - ], - - qqstring_inner: [ - {token : "string", regex: '"', next: "pop"}, - {include : "reference"}, - {defaultToken : "string"} - ], - - attributes: [{ - token : "entity.other.attribute-name", - regex : "(?:[-_a-zA-Z0-9]+:)?[-_a-zA-Z0-9]+" - }, { - token : "keyword.operator.separator", - regex : "=" - }, { - include : "space" - }, { - include : "string" - }] - }; - - if (this.constructor === XmlHighlightRules) - this.normalizeRules(); -}; - - -(function() { - - this.embedTagRules = function(HighlightRules, prefix, tag){ - this.$rules.tag.unshift({ - token : ["meta.tag.punctuation.begin", "meta.tag.name." + tag], - regex : "(<)(" + tag + ")", - next: [ - {include : "space"}, - {include : "attributes"}, - {token : "meta.tag.punctuation.end", regex : "/?>", next : prefix + "start"} - ] - }); - - this.$rules[tag + "-end"] = [ - {include : "space"}, - {token : "meta.tag.punctuation.end", regex : ">", next: "start", - onMatch : function(value, currentState, stack) { - stack.splice(0); - return this.token; - }} - ] - - this.embedRules(HighlightRules, prefix, [{ - token: ["meta.tag.punctuation.begin", "meta.tag.name." + tag], - regex : "(" - }]); - }; - -}).call(TextHighlightRules.prototype); - -oop.inherits(XmlHighlightRules, TextHighlightRules); - -exports.XmlHighlightRules = XmlHighlightRules; -}); - -ace.define('ace/mode/xml_util', ['require', 'exports', 'module' ], function(require, exports, module) { - - -function string(state) { - return [{ - token : "string", - regex : '"', - next : state + "_qqstring" - }, { - token : "string", - regex : "'", - next : state + "_qstring" - }]; -} - -function multiLineString(quote, state) { - return [ - {token : "string", regex : quote, next : state}, - { - token : "constant.language.escape", - regex : "(?:&#[0-9]+;)|(?:&#x[0-9a-fA-F]+;)|(?:&[a-zA-Z0-9_:\\.-]+;)" - }, - {defaultToken : "string"} - ]; -} - -exports.tag = function(states, name, nextState, tagMap) { - states[name] = [{ - token : "text", - regex : "\\s+" - }, { - - token : !tagMap ? "meta.tag.tag-name" : function(value) { - if (tagMap[value]) - return "meta.tag.tag-name." + tagMap[value]; - else - return "meta.tag.tag-name"; - }, - regex : "[-_a-zA-Z0-9:]+", - next : name + "_embed_attribute_list" - }, { - token: "empty", - regex: "", - next : name + "_embed_attribute_list" - }]; - - states[name + "_qstring"] = multiLineString("'", name + "_embed_attribute_list"); - states[name + "_qqstring"] = multiLineString("\"", name + "_embed_attribute_list"); - - states[name + "_embed_attribute_list"] = [{ - token : "meta.tag.r", - regex : "/?>", - next : nextState - }, { - token : "keyword.operator", - regex : "=" - }, { - token : "entity.other.attribute-name", - regex : "[-_a-zA-Z0-9:]+" - }, { - token : "constant.numeric", // float - regex : "[+-]?\\d+(?:(?:\\.\\d*)?(?:[eE][+-]?\\d+)?)?\\b" - }, { - token : "text", - regex : "\\s+" - }].concat(string(name)); -}; - -}); - -ace.define('ace/mode/behaviour/html', ['require', 'exports', 'module' , 'ace/lib/oop', 'ace/mode/behaviour/xml', 'ace/mode/behaviour/cstyle', 'ace/token_iterator'], function(require, exports, module) { - - -var oop = require("../../lib/oop"); -var XmlBehaviour = require("../behaviour/xml").XmlBehaviour; -var CstyleBehaviour = require("./cstyle").CstyleBehaviour; -var TokenIterator = require("../../token_iterator").TokenIterator; -var voidElements = ['area', 'base', 'br', 'col', 'command', 'embed', 'hr', 'img', 'input', 'keygen', 'link', 'meta', 'param', 'source', 'track', 'wbr']; - -function hasType(token, type) { - var tokenTypes = token.type.split('.'); - return type.split('.').every(function(type){ - return (tokenTypes.indexOf(type) !== -1); - }); - return hasType; -} - -var HtmlBehaviour = function () { - - this.inherit(XmlBehaviour); // Get xml behaviour - - this.add("autoclosing", "insertion", function (state, action, editor, session, text) { - if (text == '>') { - var position = editor.getCursorPosition(); - var iterator = new TokenIterator(session, position.row, position.column); - var token = iterator.getCurrentToken(); - - if (token && hasType(token, 'string') && iterator.getCurrentTokenColumn() + token.value.length > position.column) - return; - var atCursor = false; - if (!token || !hasType(token, 'meta.tag') && !(hasType(token, 'text') && token.value.match('/'))){ - do { - token = iterator.stepBackward(); - } while (token && (hasType(token, 'string') || hasType(token, 'keyword.operator') || hasType(token, 'entity.attribute-name') || hasType(token, 'text'))); - } else { - atCursor = true; - } - if (!token || !hasType(token, 'meta.tag.name') || iterator.stepBackward().value.match('/')) { - return; - } - var element = token.value; - if (atCursor){ - var element = element.substring(0, position.column - token.start); - } - if (voidElements.indexOf(element) !== -1){ - return; - } - return { - text: '>' + '', - selection: [1, 1] - } - } - }); -} -oop.inherits(HtmlBehaviour, XmlBehaviour); - -exports.HtmlBehaviour = HtmlBehaviour; -}); - -ace.define('ace/mode/behaviour/xml', ['require', 'exports', 'module' , 'ace/lib/oop', 'ace/mode/behaviour', 'ace/mode/behaviour/cstyle', 'ace/token_iterator'], function(require, exports, module) { - - -var oop = require("../../lib/oop"); -var Behaviour = require("../behaviour").Behaviour; -var CstyleBehaviour = require("./cstyle").CstyleBehaviour; -var TokenIterator = require("../../token_iterator").TokenIterator; - -function hasType(token, type) { - var tokenTypes = token.type.split('.'); - return type.split('.').every(function(type){ - return (tokenTypes.indexOf(type) !== -1); - }); - return hasType; -} - -var XmlBehaviour = function () { - - this.inherit(CstyleBehaviour, ["string_dquotes"]); // Get string behaviour - - this.add("autoclosing", "insertion", function (state, action, editor, session, text) { - if (text == '>') { - var position = editor.getCursorPosition(); - var iterator = new TokenIterator(session, position.row, position.column); - var token = iterator.getCurrentToken(); - - if (token && hasType(token, 'string') && iterator.getCurrentTokenColumn() + token.value.length > position.column) - return; - var atCursor = false; - if (!token || !hasType(token, 'meta.tag') && !(hasType(token, 'text') && token.value.match('/'))){ - do { - token = iterator.stepBackward(); - } while (token && (hasType(token, 'string') || hasType(token, 'keyword.operator') || hasType(token, 'entity.attribute-name') || hasType(token, 'text'))); - } else { - atCursor = true; - } - if (!token || !hasType(token, 'meta.tag.name') || iterator.stepBackward().value.match('/')) { - return; - } - var tag = token.value; - if (atCursor){ - var tag = tag.substring(0, position.column - token.start); - } - - return { - text: '>' + '', - selection: [1, 1] - } - } - }); - - this.add('autoindent', 'insertion', function (state, action, editor, session, text) { - if (text == "\n") { - var cursor = editor.getCursorPosition(); - var line = session.getLine(cursor.row); - var rightChars = line.substring(cursor.column, cursor.column + 2); - if (rightChars == '?)/; - this._parseTag = function(tag) { - - var match = tag.match(this.tagRe); - var column = 0; - - return { - value: tag, - match: match ? match[2] : "", - closing: match ? !!match[3] : false, - selfClosing: match ? !!match[5] || match[2] == "/>" : false, - tagName: match ? match[4] : "", - column: match[1] ? column + match[1].length : column - }; - }; - this._readTagForward = function(iterator) { - var token = iterator.getCurrentToken(); - if (!token) - return null; - - var value = ""; - var start; - - do { - if (token.type.lastIndexOf("meta.tag", 0) === 0) { - if (!start) { - var start = { - row: iterator.getCurrentTokenRow(), - column: iterator.getCurrentTokenColumn() - }; - } - value += token.value; - if (value.indexOf(">") !== -1) { - var tag = this._parseTag(value); - tag.start = start; - tag.end = { - row: iterator.getCurrentTokenRow(), - column: iterator.getCurrentTokenColumn() + token.value.length - }; - iterator.stepForward(); - return tag; - } - } - } while(token = iterator.stepForward()); - - return null; - }; - - this._readTagBackward = function(iterator) { - var token = iterator.getCurrentToken(); - if (!token) - return null; - - var value = ""; - var end; - - do { - if (token.type.lastIndexOf("meta.tag", 0) === 0) { - if (!end) { - end = { - row: iterator.getCurrentTokenRow(), - column: iterator.getCurrentTokenColumn() + token.value.length - }; - } - value = token.value + value; - if (value.indexOf("<") !== -1) { - var tag = this._parseTag(value); - tag.end = end; - tag.start = { - row: iterator.getCurrentTokenRow(), - column: iterator.getCurrentTokenColumn() - }; - iterator.stepBackward(); - return tag; - } - } - } while(token = iterator.stepBackward()); - - return null; - }; - - this._pop = function(stack, tag) { - while (stack.length) { - - var top = stack[stack.length-1]; - if (!tag || top.tagName == tag.tagName) { - return stack.pop(); - } - else if (this.voidElements[tag.tagName]) { - return; - } - else if (this.voidElements[top.tagName]) { - stack.pop(); - continue; - } else { - return null; - } - } - }; - - this.getFoldWidgetRange = function(session, foldStyle, row) { - var firstTag = this._getFirstTagInLine(session, row); - - if (!firstTag.match) - return null; - - var isBackward = firstTag.closing || firstTag.selfClosing; - var stack = []; - var tag; - - if (!isBackward) { - var iterator = new TokenIterator(session, row, firstTag.column); - var start = { - row: row, - column: firstTag.column + firstTag.tagName.length + 2 - }; - while (tag = this._readTagForward(iterator)) { - if (tag.selfClosing) { - if (!stack.length) { - tag.start.column += tag.tagName.length + 2; - tag.end.column -= 2; - return Range.fromPoints(tag.start, tag.end); - } else - continue; - } - - if (tag.closing) { - this._pop(stack, tag); - if (stack.length == 0) - return Range.fromPoints(start, tag.start); - } - else { - stack.push(tag) - } - } - } - else { - var iterator = new TokenIterator(session, row, firstTag.column + firstTag.match.length); - var end = { - row: row, - column: firstTag.column - }; - - while (tag = this._readTagBackward(iterator)) { - if (tag.selfClosing) { - if (!stack.length) { - tag.start.column += tag.tagName.length + 2; - tag.end.column -= 2; - return Range.fromPoints(tag.start, tag.end); - } else - continue; - } - - if (!tag.closing) { - this._pop(stack, tag); - if (stack.length == 0) { - tag.start.column += tag.tagName.length + 2; - return Range.fromPoints(tag.start, end); - } - } - else { - stack.push(tag) - } - } - } - - }; - -}).call(FoldMode.prototype); - -}); - -ace.define('ace/mode/html_completions', ['require', 'exports', 'module' , 'ace/token_iterator'], function(require, exports, module) { - - -var TokenIterator = require("../token_iterator").TokenIterator; - -var commonAttributes = [ - "accesskey", - "class", - "contenteditable", - "contextmenu", - "dir", - "draggable", - "dropzone", - "hidden", - "id", - "lang", - "spellcheck", - "style", - "tabindex", - "title", - "translate" -]; - -var eventAttributes = [ - "onabort", - "onblur", - "oncancel", - "oncanplay", - "oncanplaythrough", - "onchange", - "onclick", - "onclose", - "oncontextmenu", - "oncuechange", - "ondblclick", - "ondrag", - "ondragend", - "ondragenter", - "ondragleave", - "ondragover", - "ondragstart", - "ondrop", - "ondurationchange", - "onemptied", - "onended", - "onerror", - "onfocus", - "oninput", - "oninvalid", - "onkeydown", - "onkeypress", - "onkeyup", - "onload", - "onloadeddata", - "onloadedmetadata", - "onloadstart", - "onmousedown", - "onmousemove", - "onmouseout", - "onmouseover", - "onmouseup", - "onmousewheel", - "onpause", - "onplay", - "onplaying", - "onprogress", - "onratechange", - "onreset", - "onscroll", - "onseeked", - "onseeking", - "onselect", - "onshow", - "onstalled", - "onsubmit", - "onsuspend", - "ontimeupdate", - "onvolumechange", - "onwaiting" -]; - -var globalAttributes = commonAttributes.concat(eventAttributes); - -var attributeMap = { - "html": ["manifest"], - "head": [], - "title": [], - "base": ["href", "target"], - "link": ["href", "hreflang", "rel", "media", "type", "sizes"], - "meta": ["http-equiv", "name", "content", "charset"], - "style": ["type", "media", "scoped"], - "script": ["charset", "type", "src", "defer", "async"], - "noscript": ["href"], - "body": ["onafterprint", "onbeforeprint", "onbeforeunload", "onhashchange", "onmessage", "onoffline", "onpopstate", "onredo", "onresize", "onstorage", "onundo", "onunload"], - "section": [], - "nav": [], - "article": ["pubdate"], - "aside": [], - "h1": [], - "h2": [], - "h3": [], - "h4": [], - "h5": [], - "h6": [], - "header": [], - "footer": [], - "address": [], - "main": [], - "p": [], - "hr": [], - "pre": [], - "blockquote": ["cite"], - "ol": ["start", "reversed"], - "ul": [], - "li": ["value"], - "dl": [], - "dt": [], - "dd": [], - "figure": [], - "figcaption": [], - "div": [], - "a": ["href", "target", "ping", "rel", "media", "hreflang", "type"], - "em": [], - "strong": [], - "small": [], - "s": [], - "cite": [], - "q": ["cite"], - "dfn": [], - "abbr": [], - "data": [], - "time": ["datetime"], - "code": [], - "var": [], - "samp": [], - "kbd": [], - "sub": [], - "sup": [], - "i": [], - "b": [], - "u": [], - "mark": [], - "ruby": [], - "rt": [], - "rp": [], - "bdi": [], - "bdo": [], - "span": [], - "br": [], - "wbr": [], - "ins": ["cite", "datetime"], - "del": ["cite", "datetime"], - "img": ["alt", "src", "height", "width", "usemap", "ismap"], - "iframe": ["name", "src", "height", "width", "sandbox", "seamless"], - "embed": ["src", "height", "width", "type"], - "object": ["param", "data", "type", "height" , "width", "usemap", "name", "form", "classid"], - "param": ["name", "value"], - "video": ["src", "autobuffer", "autoplay", "loop", "controls", "width", "height", "poster"], - "audio": ["src", "autobuffer", "autoplay", "loop", "controls"], - "source": ["src", "type", "media"], - "track": ["kind", "src", "srclang", "label", "default"], - "canvas": ["width", "height"], - "map": ["name"], - "area": ["shape", "coords", "href", "hreflang", "alt", "target", "media", "rel", "ping", "type"], - "svg": [], - "math": [], - "table": ["summary"], - "caption": [], - "colgroup": ["span"], - "col": ["span"], - "tbody": [], - "thead": [], - "tfoot": [], - "tr": [], - "td": ["headers", "rowspan", "colspan"], - "th": ["headers", "rowspan", "colspan", "scope"], - "form": ["accept-charset", "action", "autocomplete", "enctype", "method", "name", "novalidate", "target"], - "fieldset": ["disabled", "form", "name"], - "legend": [], - "label": ["form", "for"], - "input": ["type", "accept", "alt", "autocomplete", "checked", "disabled", "form", "formaction", "formenctype", "formmethod", "formnovalidate", "formtarget", "height", "list", "max", "maxlength", "min", "multiple", "pattern", "placeholder", "readonly", "required", "size", "src", "step", "width", "files", "value"], - "button": ["autofocus", "disabled", "form", "formaction", "formenctype", "formmethod", "formnovalidate", "formtarget", "name", "value", "type"], - "select": ["autofocus", "disabled", "form", "multiple", "name", "size"], - "datalist": [], - "optgroup": ["disabled", "label"], - "option": ["disabled", "selected", "label", "value"], - "textarea": ["autofocus", "disabled", "form", "maxlength", "name", "placeholder", "readonly", "required", "rows", "cols", "wrap"], - "keygen": ["autofocus", "challenge", "disabled", "form", "keytype", "name"], - "output": ["for", "form", "name"], - "progress": ["value", "max"], - "meter": ["value", "min", "max", "low", "high", "optimum"], - "details": ["open"], - "summary": [], - "command": ["type", "label", "icon", "disabled", "checked", "radiogroup", "command"], - "menu": ["type", "label"], - "dialog": ["open"] -}; - -var allElements = Object.keys(attributeMap); - -function hasType(token, type) { - var tokenTypes = token.type.split('.'); - return type.split('.').every(function(type){ - return (tokenTypes.indexOf(type) !== -1); - }); -} - -function findTagName(session, pos) { - var iterator = new TokenIterator(session, pos.row, pos.column); - var token = iterator.getCurrentToken(); - if (!token || !hasType(token, 'tag') && !(hasType(token, 'text') && token.value.match('/'))){ - do { - token = iterator.stepBackward(); - } while (token && (hasType(token, 'string') || hasType(token, 'operator') || hasType(token, 'attribute-name') || hasType(token, 'text'))); - } - if (token && hasType(token, 'tag-name') && !iterator.stepBackward().value.match('/')) - return token.value; -} - -var HtmlCompletions = function() { - -}; - -(function() { - - this.getCompletions = function(state, session, pos, prefix) { - var token = session.getTokenAt(pos.row, pos.column); - - if (!token) - return []; - if (hasType(token, "tag-name") || (token.value == '<' && hasType(token, "text"))) - return this.getTagCompletions(state, session, pos, prefix); - if (hasType(token, 'text') || hasType(token, 'attribute-name')) - return this.getAttributeCompetions(state, session, pos, prefix); - - return []; - }; - - this.getTagCompletions = function(state, session, pos, prefix) { - var elements = allElements; - if (prefix) { - elements = elements.filter(function(element){ - return element.indexOf(prefix) === 0; - }); - } - return elements.map(function(element){ - return { - value: element, - meta: "tag" - }; - }); - }; - - this.getAttributeCompetions = function(state, session, pos, prefix) { - var tagName = findTagName(session, pos); - if (!tagName) - return []; - var attributes = globalAttributes; - if (tagName in attributeMap) { - attributes = attributes.concat(attributeMap[tagName]); - } - if (prefix) { - attributes = attributes.filter(function(attribute){ - return attribute.indexOf(prefix) === 0; - }); - } - return attributes.map(function(attribute){ - return { - caption: attribute, - snippet: attribute + '="$0"', - meta: "attribute" - }; - }); - }; - -}).call(HtmlCompletions.prototype); - -exports.HtmlCompletions = HtmlCompletions; -}); diff --git a/IDE/jsrealb-ide/ace-src-noconflict/mode-html_completions.js b/IDE/jsrealb-ide/ace-src-noconflict/mode-html_completions.js deleted file mode 100644 index bcac214f..00000000 --- a/IDE/jsrealb-ide/ace-src-noconflict/mode-html_completions.js +++ /dev/null @@ -1,309 +0,0 @@ -/* ***** BEGIN LICENSE BLOCK ***** - * Distributed under the BSD license: - * - * Copyright (c) 2010, Ajax.org B.V. - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are met: - * * Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * * Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * * Neither the name of Ajax.org B.V. nor the - * names of its contributors may be used to endorse or promote products - * derived from this software without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND - * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED - * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE - * DISCLAIMED. IN NO EVENT SHALL AJAX.ORG B.V. BE LIABLE FOR ANY - * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES - * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; - * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND - * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - * - * ***** END LICENSE BLOCK ***** */ - -ace.define('ace/mode/html_completions', ['require', 'exports', 'module' , 'ace/token_iterator'], function(require, exports, module) { - - -var TokenIterator = require("../token_iterator").TokenIterator; - -var commonAttributes = [ - "accesskey", - "class", - "contenteditable", - "contextmenu", - "dir", - "draggable", - "dropzone", - "hidden", - "id", - "lang", - "spellcheck", - "style", - "tabindex", - "title", - "translate" -]; - -var eventAttributes = [ - "onabort", - "onblur", - "oncancel", - "oncanplay", - "oncanplaythrough", - "onchange", - "onclick", - "onclose", - "oncontextmenu", - "oncuechange", - "ondblclick", - "ondrag", - "ondragend", - "ondragenter", - "ondragleave", - "ondragover", - "ondragstart", - "ondrop", - "ondurationchange", - "onemptied", - "onended", - "onerror", - "onfocus", - "oninput", - "oninvalid", - "onkeydown", - "onkeypress", - "onkeyup", - "onload", - "onloadeddata", - "onloadedmetadata", - "onloadstart", - "onmousedown", - "onmousemove", - "onmouseout", - "onmouseover", - "onmouseup", - "onmousewheel", - "onpause", - "onplay", - "onplaying", - "onprogress", - "onratechange", - "onreset", - "onscroll", - "onseeked", - "onseeking", - "onselect", - "onshow", - "onstalled", - "onsubmit", - "onsuspend", - "ontimeupdate", - "onvolumechange", - "onwaiting" -]; - -var globalAttributes = commonAttributes.concat(eventAttributes); - -var attributeMap = { - "html": ["manifest"], - "head": [], - "title": [], - "base": ["href", "target"], - "link": ["href", "hreflang", "rel", "media", "type", "sizes"], - "meta": ["http-equiv", "name", "content", "charset"], - "style": ["type", "media", "scoped"], - "script": ["charset", "type", "src", "defer", "async"], - "noscript": ["href"], - "body": ["onafterprint", "onbeforeprint", "onbeforeunload", "onhashchange", "onmessage", "onoffline", "onpopstate", "onredo", "onresize", "onstorage", "onundo", "onunload"], - "section": [], - "nav": [], - "article": ["pubdate"], - "aside": [], - "h1": [], - "h2": [], - "h3": [], - "h4": [], - "h5": [], - "h6": [], - "header": [], - "footer": [], - "address": [], - "main": [], - "p": [], - "hr": [], - "pre": [], - "blockquote": ["cite"], - "ol": ["start", "reversed"], - "ul": [], - "li": ["value"], - "dl": [], - "dt": [], - "dd": [], - "figure": [], - "figcaption": [], - "div": [], - "a": ["href", "target", "ping", "rel", "media", "hreflang", "type"], - "em": [], - "strong": [], - "small": [], - "s": [], - "cite": [], - "q": ["cite"], - "dfn": [], - "abbr": [], - "data": [], - "time": ["datetime"], - "code": [], - "var": [], - "samp": [], - "kbd": [], - "sub": [], - "sup": [], - "i": [], - "b": [], - "u": [], - "mark": [], - "ruby": [], - "rt": [], - "rp": [], - "bdi": [], - "bdo": [], - "span": [], - "br": [], - "wbr": [], - "ins": ["cite", "datetime"], - "del": ["cite", "datetime"], - "img": ["alt", "src", "height", "width", "usemap", "ismap"], - "iframe": ["name", "src", "height", "width", "sandbox", "seamless"], - "embed": ["src", "height", "width", "type"], - "object": ["param", "data", "type", "height" , "width", "usemap", "name", "form", "classid"], - "param": ["name", "value"], - "video": ["src", "autobuffer", "autoplay", "loop", "controls", "width", "height", "poster"], - "audio": ["src", "autobuffer", "autoplay", "loop", "controls"], - "source": ["src", "type", "media"], - "track": ["kind", "src", "srclang", "label", "default"], - "canvas": ["width", "height"], - "map": ["name"], - "area": ["shape", "coords", "href", "hreflang", "alt", "target", "media", "rel", "ping", "type"], - "svg": [], - "math": [], - "table": ["summary"], - "caption": [], - "colgroup": ["span"], - "col": ["span"], - "tbody": [], - "thead": [], - "tfoot": [], - "tr": [], - "td": ["headers", "rowspan", "colspan"], - "th": ["headers", "rowspan", "colspan", "scope"], - "form": ["accept-charset", "action", "autocomplete", "enctype", "method", "name", "novalidate", "target"], - "fieldset": ["disabled", "form", "name"], - "legend": [], - "label": ["form", "for"], - "input": ["type", "accept", "alt", "autocomplete", "checked", "disabled", "form", "formaction", "formenctype", "formmethod", "formnovalidate", "formtarget", "height", "list", "max", "maxlength", "min", "multiple", "pattern", "placeholder", "readonly", "required", "size", "src", "step", "width", "files", "value"], - "button": ["autofocus", "disabled", "form", "formaction", "formenctype", "formmethod", "formnovalidate", "formtarget", "name", "value", "type"], - "select": ["autofocus", "disabled", "form", "multiple", "name", "size"], - "datalist": [], - "optgroup": ["disabled", "label"], - "option": ["disabled", "selected", "label", "value"], - "textarea": ["autofocus", "disabled", "form", "maxlength", "name", "placeholder", "readonly", "required", "rows", "cols", "wrap"], - "keygen": ["autofocus", "challenge", "disabled", "form", "keytype", "name"], - "output": ["for", "form", "name"], - "progress": ["value", "max"], - "meter": ["value", "min", "max", "low", "high", "optimum"], - "details": ["open"], - "summary": [], - "command": ["type", "label", "icon", "disabled", "checked", "radiogroup", "command"], - "menu": ["type", "label"], - "dialog": ["open"] -}; - -var allElements = Object.keys(attributeMap); - -function hasType(token, type) { - var tokenTypes = token.type.split('.'); - return type.split('.').every(function(type){ - return (tokenTypes.indexOf(type) !== -1); - }); -} - -function findTagName(session, pos) { - var iterator = new TokenIterator(session, pos.row, pos.column); - var token = iterator.getCurrentToken(); - if (!token || !hasType(token, 'tag') && !(hasType(token, 'text') && token.value.match('/'))){ - do { - token = iterator.stepBackward(); - } while (token && (hasType(token, 'string') || hasType(token, 'operator') || hasType(token, 'attribute-name') || hasType(token, 'text'))); - } - if (token && hasType(token, 'tag-name') && !iterator.stepBackward().value.match('/')) - return token.value; -} - -var HtmlCompletions = function() { - -}; - -(function() { - - this.getCompletions = function(state, session, pos, prefix) { - var token = session.getTokenAt(pos.row, pos.column); - - if (!token) - return []; - if (hasType(token, "tag-name") || (token.value == '<' && hasType(token, "text"))) - return this.getTagCompletions(state, session, pos, prefix); - if (hasType(token, 'text') || hasType(token, 'attribute-name')) - return this.getAttributeCompetions(state, session, pos, prefix); - - return []; - }; - - this.getTagCompletions = function(state, session, pos, prefix) { - var elements = allElements; - if (prefix) { - elements = elements.filter(function(element){ - return element.indexOf(prefix) === 0; - }); - } - return elements.map(function(element){ - return { - value: element, - meta: "tag" - }; - }); - }; - - this.getAttributeCompetions = function(state, session, pos, prefix) { - var tagName = findTagName(session, pos); - if (!tagName) - return []; - var attributes = globalAttributes; - if (tagName in attributeMap) { - attributes = attributes.concat(attributeMap[tagName]); - } - if (prefix) { - attributes = attributes.filter(function(attribute){ - return attribute.indexOf(prefix) === 0; - }); - } - return attributes.map(function(attribute){ - return { - caption: attribute, - snippet: attribute + '="$0"', - meta: "attribute" - }; - }); - }; - -}).call(HtmlCompletions.prototype); - -exports.HtmlCompletions = HtmlCompletions; -}); diff --git a/IDE/jsrealb-ide/ace-src-noconflict/mode-html_ruby.js b/IDE/jsrealb-ide/ace-src-noconflict/mode-html_ruby.js deleted file mode 100644 index 622ff8a3..00000000 --- a/IDE/jsrealb-ide/ace-src-noconflict/mode-html_ruby.js +++ /dev/null @@ -1,2822 +0,0 @@ -/* ***** BEGIN LICENSE BLOCK ***** - * Distributed under the BSD license: - * - * Copyright (c) 2012, Ajax.org B.V. - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are met: - * * Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * * Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * * Neither the name of Ajax.org B.V. nor the - * names of its contributors may be used to endorse or promote products - * derived from this software without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND - * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED - * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE - * DISCLAIMED. IN NO EVENT SHALL AJAX.ORG B.V. BE LIABLE FOR ANY - * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES - * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; - * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND - * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - * - * ***** END LICENSE BLOCK ***** */ - - -ace.define('ace/mode/html_ruby', ['require', 'exports', 'module' , 'ace/lib/oop', 'ace/tokenizer', 'ace/mode/html_ruby_highlight_rules', 'ace/mode/html', 'ace/mode/javascript', 'ace/mode/css', 'ace/mode/ruby'], function(require, exports, module) { - - -var oop = require("../lib/oop"); -var Tokenizer = require("../tokenizer").Tokenizer; -var HtmlRubyHighlightRules = require("./html_ruby_highlight_rules").HtmlRubyHighlightRules; -var HtmlMode = require("./html").Mode; -var JavaScriptMode = require("./javascript").Mode; -var CssMode = require("./css").Mode; -var RubyMode = require("./ruby").Mode; - -var Mode = function() { - HtmlMode.call(this); - this.HighlightRules = HtmlRubyHighlightRules; - this.createModeDelegates({ - "js-": JavaScriptMode, - "css-": CssMode, - "ruby-": RubyMode - }); -}; -oop.inherits(Mode, HtmlMode); - -(function() { - - this.$id = "ace/mode/html_ruby"; -}).call(Mode.prototype); - -exports.Mode = Mode; -}); - -ace.define('ace/mode/html_ruby_highlight_rules', ['require', 'exports', 'module' , 'ace/lib/oop', 'ace/mode/html_highlight_rules', 'ace/mode/ruby_highlight_rules'], function(require, exports, module) { - - - var oop = require("../lib/oop"); - var HtmlHighlightRules = require("./html_highlight_rules").HtmlHighlightRules; - var RubyHighlightRules = require("./ruby_highlight_rules").RubyHighlightRules; - - var HtmlRubyHighlightRules = function() { - HtmlHighlightRules.call(this); - - var startRules = [ - { - regex: "<%%|%%>", - token: "constant.language.escape" - }, { - token : "comment.start.erb", - regex : "<%#", - push : [{ - token : "comment.end.erb", - regex: "%>", - next: "pop", - defaultToken:"comment" - }] - }, { - token : "support.ruby_tag", - regex : "<%+(?!>)[-=]?", - push : "ruby-start" - } - ]; - - var endRules = [ - { - token : "support.ruby_tag", - regex : "%>", - next : "pop" - }, { - token: "comment", - regex: "#(?:[^%]|%[^>])*" - } - ]; - - for (var key in this.$rules) - this.$rules[key].unshift.apply(this.$rules[key], startRules); - - this.embedRules(RubyHighlightRules, "ruby-", endRules, ["start"]); - - this.normalizeRules(); - }; - - - oop.inherits(HtmlRubyHighlightRules, HtmlHighlightRules); - - exports.HtmlRubyHighlightRules = HtmlRubyHighlightRules; -}); - -ace.define('ace/mode/html_highlight_rules', ['require', 'exports', 'module' , 'ace/lib/oop', 'ace/lib/lang', 'ace/mode/css_highlight_rules', 'ace/mode/javascript_highlight_rules', 'ace/mode/xml_highlight_rules'], function(require, exports, module) { - - -var oop = require("../lib/oop"); -var lang = require("../lib/lang"); -var CssHighlightRules = require("./css_highlight_rules").CssHighlightRules; -var JavaScriptHighlightRules = require("./javascript_highlight_rules").JavaScriptHighlightRules; -var XmlHighlightRules = require("./xml_highlight_rules").XmlHighlightRules; - -var tagMap = lang.createMap({ - a : 'anchor', - button : 'form', - form : 'form', - img : 'image', - input : 'form', - label : 'form', - option : 'form', - script : 'script', - select : 'form', - textarea : 'form', - style : 'style', - table : 'table', - tbody : 'table', - td : 'table', - tfoot : 'table', - th : 'table', - tr : 'table' -}); - -var HtmlHighlightRules = function() { - XmlHighlightRules.call(this); - - this.addRules({ - attributes: [{ - include : "space" - }, { - token : "entity.other.attribute-name", - regex : "[-_a-zA-Z0-9:]+" - }, { - token : "keyword.operator.separator", - regex : "=", - push : [{ - include: "space" - }, { - token : "string", - regex : "[^<>='\"`\\s]+", - next : "pop" - }, { - token : "empty", - regex : "", - next : "pop" - }] - }, { - include : "string" - }], - tag: [{ - token : function(start, tag) { - var group = tagMap[tag]; - return ["meta.tag.punctuation.begin", - "meta.tag.name" + (group ? "." + group : "")]; - }, - regex : "(<)([-_a-zA-Z0-9:]+)", - next: "start_tag_stuff" - }, { - token : function(start, tag) { - var group = tagMap[tag]; - return ["meta.tag.punctuation.begin", - "meta.tag.name" + (group ? "." + group : "")]; - }, - regex : "(", next : "start"} - ], - end_tag_stuff: [ - {include : "space"}, - {token : "meta.tag.punctuation.end", regex : ">", next : "start"} - ] - }); - - this.embedTagRules(CssHighlightRules, "css-", "style"); - this.embedTagRules(JavaScriptHighlightRules, "js-", "script"); - - if (this.constructor === HtmlHighlightRules) - this.normalizeRules(); -}; - -oop.inherits(HtmlHighlightRules, XmlHighlightRules); - -exports.HtmlHighlightRules = HtmlHighlightRules; -}); - -ace.define('ace/mode/css_highlight_rules', ['require', 'exports', 'module' , 'ace/lib/oop', 'ace/lib/lang', 'ace/mode/text_highlight_rules'], function(require, exports, module) { - - -var oop = require("../lib/oop"); -var lang = require("../lib/lang"); -var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; -var supportType = exports.supportType = "animation-fill-mode|alignment-adjust|alignment-baseline|animation-delay|animation-direction|animation-duration|animation-iteration-count|animation-name|animation-play-state|animation-timing-function|animation|appearance|azimuth|backface-visibility|background-attachment|background-break|background-clip|background-color|background-image|background-origin|background-position|background-repeat|background-size|background|baseline-shift|binding|bleed|bookmark-label|bookmark-level|bookmark-state|bookmark-target|border-bottom|border-bottom-color|border-bottom-left-radius|border-bottom-right-radius|border-bottom-style|border-bottom-width|border-collapse|border-color|border-image|border-image-outset|border-image-repeat|border-image-slice|border-image-source|border-image-width|border-left|border-left-color|border-left-style|border-left-width|border-radius|border-right|border-right-color|border-right-style|border-right-width|border-spacing|border-style|border-top|border-top-color|border-top-left-radius|border-top-right-radius|border-top-style|border-top-width|border-width|border|bottom|box-align|box-decoration-break|box-direction|box-flex-group|box-flex|box-lines|box-ordinal-group|box-orient|box-pack|box-shadow|box-sizing|break-after|break-before|break-inside|caption-side|clear|clip|color-profile|color|column-count|column-fill|column-gap|column-rule|column-rule-color|column-rule-style|column-rule-width|column-span|column-width|columns|content|counter-increment|counter-reset|crop|cue-after|cue-before|cue|cursor|direction|display|dominant-baseline|drop-initial-after-adjust|drop-initial-after-align|drop-initial-before-adjust|drop-initial-before-align|drop-initial-size|drop-initial-value|elevation|empty-cells|fit|fit-position|float-offset|float|font-family|font-size|font-size-adjust|font-stretch|font-style|font-variant|font-weight|font|grid-columns|grid-rows|hanging-punctuation|height|hyphenate-after|hyphenate-before|hyphenate-character|hyphenate-lines|hyphenate-resource|hyphens|icon|image-orientation|image-rendering|image-resolution|inline-box-align|left|letter-spacing|line-height|line-stacking-ruby|line-stacking-shift|line-stacking-strategy|line-stacking|list-style-image|list-style-position|list-style-type|list-style|margin-bottom|margin-left|margin-right|margin-top|margin|mark-after|mark-before|mark|marks|marquee-direction|marquee-play-count|marquee-speed|marquee-style|max-height|max-width|min-height|min-width|move-to|nav-down|nav-index|nav-left|nav-right|nav-up|opacity|orphans|outline-color|outline-offset|outline-style|outline-width|outline|overflow-style|overflow-x|overflow-y|overflow|padding-bottom|padding-left|padding-right|padding-top|padding|page-break-after|page-break-before|page-break-inside|page-policy|page|pause-after|pause-before|pause|perspective-origin|perspective|phonemes|pitch-range|pitch|play-during|pointer-events|position|presentation-level|punctuation-trim|quotes|rendering-intent|resize|rest-after|rest-before|rest|richness|right|rotation-point|rotation|ruby-align|ruby-overhang|ruby-position|ruby-span|size|speak-header|speak-numeral|speak-punctuation|speak|speech-rate|stress|string-set|table-layout|target-name|target-new|target-position|target|text-align-last|text-align|text-decoration|text-emphasis|text-height|text-indent|text-justify|text-outline|text-shadow|text-transform|text-wrap|top|transform-origin|transform-style|transform|transition-delay|transition-duration|transition-property|transition-timing-function|transition|unicode-bidi|vertical-align|visibility|voice-balance|voice-duration|voice-family|voice-pitch-range|voice-pitch|voice-rate|voice-stress|voice-volume|volume|white-space-collapse|white-space|widows|width|word-break|word-spacing|word-wrap|z-index"; -var supportFunction = exports.supportFunction = "rgb|rgba|url|attr|counter|counters"; -var supportConstant = exports.supportConstant = "absolute|after-edge|after|all-scroll|all|alphabetic|always|antialiased|armenian|auto|avoid-column|avoid-page|avoid|balance|baseline|before-edge|before|below|bidi-override|block-line-height|block|bold|bolder|border-box|both|bottom|box|break-all|break-word|capitalize|caps-height|caption|center|central|char|circle|cjk-ideographic|clone|close-quote|col-resize|collapse|column|consider-shifts|contain|content-box|cover|crosshair|cubic-bezier|dashed|decimal-leading-zero|decimal|default|disabled|disc|disregard-shifts|distribute-all-lines|distribute-letter|distribute-space|distribute|dotted|double|e-resize|ease-in|ease-in-out|ease-out|ease|ellipsis|end|exclude-ruby|fill|fixed|georgian|glyphs|grid-height|groove|hand|hanging|hebrew|help|hidden|hiragana-iroha|hiragana|horizontal|icon|ideograph-alpha|ideograph-numeric|ideograph-parenthesis|ideograph-space|ideographic|inactive|include-ruby|inherit|initial|inline-block|inline-box|inline-line-height|inline-table|inline|inset|inside|inter-ideograph|inter-word|invert|italic|justify|katakana-iroha|katakana|keep-all|last|left|lighter|line-edge|line-through|line|linear|list-item|local|loose|lower-alpha|lower-greek|lower-latin|lower-roman|lowercase|lr-tb|ltr|mathematical|max-height|max-size|medium|menu|message-box|middle|move|n-resize|ne-resize|newspaper|no-change|no-close-quote|no-drop|no-open-quote|no-repeat|none|normal|not-allowed|nowrap|nw-resize|oblique|open-quote|outset|outside|overline|padding-box|page|pointer|pre-line|pre-wrap|pre|preserve-3d|progress|relative|repeat-x|repeat-y|repeat|replaced|reset-size|ridge|right|round|row-resize|rtl|s-resize|scroll|se-resize|separate|slice|small-caps|small-caption|solid|space|square|start|static|status-bar|step-end|step-start|steps|stretch|strict|sub|super|sw-resize|table-caption|table-cell|table-column-group|table-column|table-footer-group|table-header-group|table-row-group|table-row|table|tb-rl|text-after-edge|text-before-edge|text-bottom|text-size|text-top|text|thick|thin|transparent|underline|upper-alpha|upper-latin|upper-roman|uppercase|use-script|vertical-ideographic|vertical-text|visible|w-resize|wait|whitespace|z-index|zero"; -var supportConstantColor = exports.supportConstantColor = "aqua|black|blue|fuchsia|gray|green|lime|maroon|navy|olive|orange|purple|red|silver|teal|white|yellow"; -var supportConstantFonts = exports.supportConstantFonts = "arial|century|comic|courier|garamond|georgia|helvetica|impact|lucida|symbol|system|tahoma|times|trebuchet|utopia|verdana|webdings|sans-serif|serif|monospace"; - -var numRe = exports.numRe = "\\-?(?:(?:[0-9]+)|(?:[0-9]*\\.[0-9]+))"; -var pseudoElements = exports.pseudoElements = "(\\:+)\\b(after|before|first-letter|first-line|moz-selection|selection)\\b"; -var pseudoClasses = exports.pseudoClasses = "(:)\\b(active|checked|disabled|empty|enabled|first-child|first-of-type|focus|hover|indeterminate|invalid|last-child|last-of-type|link|not|nth-child|nth-last-child|nth-last-of-type|nth-of-type|only-child|only-of-type|required|root|target|valid|visited)\\b"; - -var CssHighlightRules = function() { - - var keywordMapper = this.createKeywordMapper({ - "support.function": supportFunction, - "support.constant": supportConstant, - "support.type": supportType, - "support.constant.color": supportConstantColor, - "support.constant.fonts": supportConstantFonts - }, "text", true); - - this.$rules = { - "start" : [{ - token : "comment", // multi line comment - regex : "\\/\\*", - push : "comment" - }, { - token: "paren.lparen", - regex: "\\{", - push: "ruleset" - }, { - token: "string", - regex: "@.*?{", - push: "media" - }, { - token: "keyword", - regex: "#[a-z0-9-_]+" - }, { - token: "variable", - regex: "\\.[a-z0-9-_]+" - }, { - token: "string", - regex: ":[a-z0-9-_]+" - }, { - token: "constant", - regex: "[a-z0-9-_]+" - }, { - caseInsensitive: true - }], - - "media" : [{ - token : "comment", // multi line comment - regex : "\\/\\*", - push : "comment" - }, { - token: "paren.lparen", - regex: "\\{", - push: "ruleset" - }, { - token: "string", - regex: "\\}", - next: "pop" - }, { - token: "keyword", - regex: "#[a-z0-9-_]+" - }, { - token: "variable", - regex: "\\.[a-z0-9-_]+" - }, { - token: "string", - regex: ":[a-z0-9-_]+" - }, { - token: "constant", - regex: "[a-z0-9-_]+" - }, { - caseInsensitive: true - }], - - "comment" : [{ - token : "comment", - regex : "\\*\\/", - next : "pop" - }, { - defaultToken : "comment" - }], - - "ruleset" : [ - { - token : "paren.rparen", - regex : "\\}", - next: "pop" - }, { - token : "comment", // multi line comment - regex : "\\/\\*", - push : "comment" - }, { - token : "string", // single line - regex : '["](?:(?:\\\\.)|(?:[^"\\\\]))*?["]' - }, { - token : "string", // single line - regex : "['](?:(?:\\\\.)|(?:[^'\\\\]))*?[']" - }, { - token : ["constant.numeric", "keyword"], - regex : "(" + numRe + ")(ch|cm|deg|em|ex|fr|gd|grad|Hz|in|kHz|mm|ms|pc|pt|px|rad|rem|s|turn|vh|vm|vw|%)" - }, { - token : "constant.numeric", - regex : numRe - }, { - token : "constant.numeric", // hex6 color - regex : "#[a-f0-9]{6}" - }, { - token : "constant.numeric", // hex3 color - regex : "#[a-f0-9]{3}" - }, { - token : ["punctuation", "entity.other.attribute-name.pseudo-element.css"], - regex : pseudoElements - }, { - token : ["punctuation", "entity.other.attribute-name.pseudo-class.css"], - regex : pseudoClasses - }, { - token : ["support.function", "string", "support.function"], - regex : "(url\\()(.*)(\\))" - }, { - token : keywordMapper, - regex : "\\-?[a-zA-Z_][a-zA-Z0-9_\\-]*" - }, { - caseInsensitive: true - }] - }; - - this.normalizeRules(); -}; - -oop.inherits(CssHighlightRules, TextHighlightRules); - -exports.CssHighlightRules = CssHighlightRules; - -}); - -ace.define('ace/mode/javascript_highlight_rules', ['require', 'exports', 'module' , 'ace/lib/oop', 'ace/mode/doc_comment_highlight_rules', 'ace/mode/text_highlight_rules'], function(require, exports, module) { - - -var oop = require("../lib/oop"); -var DocCommentHighlightRules = require("./doc_comment_highlight_rules").DocCommentHighlightRules; -var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; - -var JavaScriptHighlightRules = function() { - var keywordMapper = this.createKeywordMapper({ - "variable.language": - "Array|Boolean|Date|Function|Iterator|Number|Object|RegExp|String|Proxy|" + // Constructors - "Namespace|QName|XML|XMLList|" + // E4X - "ArrayBuffer|Float32Array|Float64Array|Int16Array|Int32Array|Int8Array|" + - "Uint16Array|Uint32Array|Uint8Array|Uint8ClampedArray|" + - "Error|EvalError|InternalError|RangeError|ReferenceError|StopIteration|" + // Errors - "SyntaxError|TypeError|URIError|" + - "decodeURI|decodeURIComponent|encodeURI|encodeURIComponent|eval|isFinite|" + // Non-constructor functions - "isNaN|parseFloat|parseInt|" + - "JSON|Math|" + // Other - "this|arguments|prototype|window|document" , // Pseudo - "keyword": - "const|yield|import|get|set|" + - "break|case|catch|continue|default|delete|do|else|finally|for|function|" + - "if|in|instanceof|new|return|switch|throw|try|typeof|let|var|while|with|debugger|" + - "__parent__|__count__|escape|unescape|with|__proto__|" + - "class|enum|extends|super|export|implements|private|public|interface|package|protected|static", - "storage.type": - "const|let|var|function", - "constant.language": - "null|Infinity|NaN|undefined", - "support.function": - "alert", - "constant.language.boolean": "true|false" - }, "identifier"); - var kwBeforeRe = "case|do|else|finally|in|instanceof|return|throw|try|typeof|yield|void"; - var identifierRe = "[a-zA-Z\\$_\u00a1-\uffff][a-zA-Z\\d\\$_\u00a1-\uffff]*\\b"; - - var escapedRe = "\\\\(?:x[0-9a-fA-F]{2}|" + // hex - "u[0-9a-fA-F]{4}|" + // unicode - "[0-2][0-7]{0,2}|" + // oct - "3[0-6][0-7]?|" + // oct - "37[0-7]?|" + // oct - "[4-7][0-7]?|" + //oct - ".)"; - - this.$rules = { - "no_regex" : [ - { - token : "comment", - regex : "\\/\\/", - next : "line_comment" - }, - DocCommentHighlightRules.getStartRule("doc-start"), - { - token : "comment", // multi line comment - regex : /\/\*/, - next : "comment" - }, { - token : "string", - regex : "'(?=.)", - next : "qstring" - }, { - token : "string", - regex : '"(?=.)', - next : "qqstring" - }, { - token : "constant.numeric", // hex - regex : /0[xX][0-9a-fA-F]+\b/ - }, { - token : "constant.numeric", // float - regex : /[+-]?\d+(?:(?:\.\d*)?(?:[eE][+-]?\d+)?)?\b/ - }, { - token : [ - "storage.type", "punctuation.operator", "support.function", - "punctuation.operator", "entity.name.function", "text","keyword.operator" - ], - regex : "(" + identifierRe + ")(\\.)(prototype)(\\.)(" + identifierRe +")(\\s*)(=)", - next: "function_arguments" - }, { - token : [ - "storage.type", "punctuation.operator", "entity.name.function", "text", - "keyword.operator", "text", "storage.type", "text", "paren.lparen" - ], - regex : "(" + identifierRe + ")(\\.)(" + identifierRe +")(\\s*)(=)(\\s*)(function)(\\s*)(\\()", - next: "function_arguments" - }, { - token : [ - "entity.name.function", "text", "keyword.operator", "text", "storage.type", - "text", "paren.lparen" - ], - regex : "(" + identifierRe +")(\\s*)(=)(\\s*)(function)(\\s*)(\\()", - next: "function_arguments" - }, { - token : [ - "storage.type", "punctuation.operator", "entity.name.function", "text", - "keyword.operator", "text", - "storage.type", "text", "entity.name.function", "text", "paren.lparen" - ], - regex : "(" + identifierRe + ")(\\.)(" + identifierRe +")(\\s*)(=)(\\s*)(function)(\\s+)(\\w+)(\\s*)(\\()", - next: "function_arguments" - }, { - token : [ - "storage.type", "text", "entity.name.function", "text", "paren.lparen" - ], - regex : "(function)(\\s+)(" + identifierRe + ")(\\s*)(\\()", - next: "function_arguments" - }, { - token : [ - "entity.name.function", "text", "punctuation.operator", - "text", "storage.type", "text", "paren.lparen" - ], - regex : "(" + identifierRe + ")(\\s*)(:)(\\s*)(function)(\\s*)(\\()", - next: "function_arguments" - }, { - token : [ - "text", "text", "storage.type", "text", "paren.lparen" - ], - regex : "(:)(\\s*)(function)(\\s*)(\\()", - next: "function_arguments" - }, { - token : "keyword", - regex : "(?:" + kwBeforeRe + ")\\b", - next : "start" - }, { - token : ["punctuation.operator", "support.function"], - regex : /(\.)(s(?:h(?:ift|ow(?:Mod(?:elessDialog|alDialog)|Help))|croll(?:X|By(?:Pages|Lines)?|Y|To)?|t(?:op|rike)|i(?:n|zeToContent|debar|gnText)|ort|u(?:p|b(?:str(?:ing)?)?)|pli(?:ce|t)|e(?:nd|t(?:Re(?:sizable|questHeader)|M(?:i(?:nutes|lliseconds)|onth)|Seconds|Ho(?:tKeys|urs)|Year|Cursor|Time(?:out)?|Interval|ZOptions|Date|UTC(?:M(?:i(?:nutes|lliseconds)|onth)|Seconds|Hours|Date|FullYear)|FullYear|Active)|arch)|qrt|lice|avePreferences|mall)|h(?:ome|andleEvent)|navigate|c(?:har(?:CodeAt|At)|o(?:s|n(?:cat|textual|firm)|mpile)|eil|lear(?:Timeout|Interval)?|a(?:ptureEvents|ll)|reate(?:StyleSheet|Popup|EventObject))|t(?:o(?:GMTString|S(?:tring|ource)|U(?:TCString|pperCase)|Lo(?:caleString|werCase))|est|a(?:n|int(?:Enabled)?))|i(?:s(?:NaN|Finite)|ndexOf|talics)|d(?:isableExternalCapture|ump|etachEvent)|u(?:n(?:shift|taint|escape|watch)|pdateCommands)|j(?:oin|avaEnabled)|p(?:o(?:p|w)|ush|lugins.refresh|a(?:ddings|rse(?:Int|Float)?)|r(?:int|ompt|eference))|e(?:scape|nableExternalCapture|val|lementFromPoint|x(?:p|ec(?:Script|Command)?))|valueOf|UTC|queryCommand(?:State|Indeterm|Enabled|Value)|f(?:i(?:nd|le(?:ModifiedDate|Size|CreatedDate|UpdatedDate)|xed)|o(?:nt(?:size|color)|rward)|loor|romCharCode)|watch|l(?:ink|o(?:ad|g)|astIndexOf)|a(?:sin|nchor|cos|t(?:tachEvent|ob|an(?:2)?)|pply|lert|b(?:s|ort))|r(?:ou(?:nd|teEvents)|e(?:size(?:By|To)|calc|turnValue|place|verse|l(?:oad|ease(?:Capture|Events)))|andom)|g(?:o|et(?:ResponseHeader|M(?:i(?:nutes|lliseconds)|onth)|Se(?:conds|lection)|Hours|Year|Time(?:zoneOffset)?|Da(?:y|te)|UTC(?:M(?:i(?:nutes|lliseconds)|onth)|Seconds|Hours|Da(?:y|te)|FullYear)|FullYear|A(?:ttention|llResponseHeaders)))|m(?:in|ove(?:B(?:y|elow)|To(?:Absolute)?|Above)|ergeAttributes|a(?:tch|rgins|x))|b(?:toa|ig|o(?:ld|rderWidths)|link|ack))\b(?=\()/ - }, { - token : ["punctuation.operator", "support.function.dom"], - regex : /(\.)(s(?:ub(?:stringData|mit)|plitText|e(?:t(?:NamedItem|Attribute(?:Node)?)|lect))|has(?:ChildNodes|Feature)|namedItem|c(?:l(?:ick|o(?:se|neNode))|reate(?:C(?:omment|DATASection|aption)|T(?:Head|extNode|Foot)|DocumentFragment|ProcessingInstruction|E(?:ntityReference|lement)|Attribute))|tabIndex|i(?:nsert(?:Row|Before|Cell|Data)|tem)|open|delete(?:Row|C(?:ell|aption)|T(?:Head|Foot)|Data)|focus|write(?:ln)?|a(?:dd|ppend(?:Child|Data))|re(?:set|place(?:Child|Data)|move(?:NamedItem|Child|Attribute(?:Node)?)?)|get(?:NamedItem|Element(?:sBy(?:Name|TagName)|ById)|Attribute(?:Node)?)|blur)\b(?=\()/ - }, { - token : ["punctuation.operator", "support.constant"], - regex : /(\.)(s(?:ystemLanguage|cr(?:ipts|ollbars|een(?:X|Y|Top|Left))|t(?:yle(?:Sheets)?|atus(?:Text|bar)?)|ibling(?:Below|Above)|ource|uffixes|e(?:curity(?:Policy)?|l(?:ection|f)))|h(?:istory|ost(?:name)?|as(?:h|Focus))|y|X(?:MLDocument|SLDocument)|n(?:ext|ame(?:space(?:s|URI)|Prop))|M(?:IN_VALUE|AX_VALUE)|c(?:haracterSet|o(?:n(?:structor|trollers)|okieEnabled|lorDepth|mp(?:onents|lete))|urrent|puClass|l(?:i(?:p(?:boardData)?|entInformation)|osed|asses)|alle(?:e|r)|rypto)|t(?:o(?:olbar|p)|ext(?:Transform|Indent|Decoration|Align)|ags)|SQRT(?:1_2|2)|i(?:n(?:ner(?:Height|Width)|put)|ds|gnoreCase)|zIndex|o(?:scpu|n(?:readystatechange|Line)|uter(?:Height|Width)|p(?:sProfile|ener)|ffscreenBuffering)|NEGATIVE_INFINITY|d(?:i(?:splay|alog(?:Height|Top|Width|Left|Arguments)|rectories)|e(?:scription|fault(?:Status|Ch(?:ecked|arset)|View)))|u(?:ser(?:Profile|Language|Agent)|n(?:iqueID|defined)|pdateInterval)|_content|p(?:ixelDepth|ort|ersonalbar|kcs11|l(?:ugins|atform)|a(?:thname|dding(?:Right|Bottom|Top|Left)|rent(?:Window|Layer)?|ge(?:X(?:Offset)?|Y(?:Offset)?))|r(?:o(?:to(?:col|type)|duct(?:Sub)?|mpter)|e(?:vious|fix)))|e(?:n(?:coding|abledPlugin)|x(?:ternal|pando)|mbeds)|v(?:isibility|endor(?:Sub)?|Linkcolor)|URLUnencoded|P(?:I|OSITIVE_INFINITY)|f(?:ilename|o(?:nt(?:Size|Family|Weight)|rmName)|rame(?:s|Element)|gColor)|E|whiteSpace|l(?:i(?:stStyleType|n(?:eHeight|kColor))|o(?:ca(?:tion(?:bar)?|lName)|wsrc)|e(?:ngth|ft(?:Context)?)|a(?:st(?:M(?:odified|atch)|Index|Paren)|yer(?:s|X)|nguage))|a(?:pp(?:MinorVersion|Name|Co(?:deName|re)|Version)|vail(?:Height|Top|Width|Left)|ll|r(?:ity|guments)|Linkcolor|bove)|r(?:ight(?:Context)?|e(?:sponse(?:XML|Text)|adyState))|global|x|m(?:imeTypes|ultiline|enubar|argin(?:Right|Bottom|Top|Left))|L(?:N(?:10|2)|OG(?:10E|2E))|b(?:o(?:ttom|rder(?:Width|RightWidth|BottomWidth|Style|Color|TopWidth|LeftWidth))|ufferDepth|elow|ackground(?:Color|Image)))\b/ - }, { - token : ["storage.type", "punctuation.operator", "support.function.firebug"], - regex : /(console)(\.)(warn|info|log|error|time|timeEnd|assert)\b/ - }, { - token : keywordMapper, - regex : identifierRe - }, { - token : "keyword.operator", - regex : /--|\+\+|[!$%&*+\-~]|===|==|=|!=|!==|<=|>=|<<=|>>=|>>>=|<>|<|>|!|&&|\|\||\?\:|\*=|%=|\+=|\-=|&=|\^=/, - next : "start" - }, { - token : "punctuation.operator", - regex : /\?|\:|\,|\;|\./, - next : "start" - }, { - token : "paren.lparen", - regex : /[\[({]/, - next : "start" - }, { - token : "paren.rparen", - regex : /[\])}]/ - }, { - token : "keyword.operator", - regex : /\/=?/, - next : "start" - }, { - token: "comment", - regex: /^#!.*$/ - } - ], - "start": [ - DocCommentHighlightRules.getStartRule("doc-start"), - { - token : "comment", // multi line comment - regex : "\\/\\*", - next : "comment_regex_allowed" - }, { - token : "comment", - regex : "\\/\\/", - next : "line_comment_regex_allowed" - }, { - token: "string.regexp", - regex: "\\/", - next: "regex" - }, { - token : "text", - regex : "\\s+|^$", - next : "start" - }, { - token: "empty", - regex: "", - next: "no_regex" - } - ], - "regex": [ - { - token: "regexp.keyword.operator", - regex: "\\\\(?:u[\\da-fA-F]{4}|x[\\da-fA-F]{2}|.)" - }, { - token: "string.regexp", - regex: "/[sxngimy]*", - next: "no_regex" - }, { - token : "invalid", - regex: /\{\d+\b,?\d*\}[+*]|[+*$^?][+*]|[$^][?]|\?{3,}/ - }, { - token : "constant.language.escape", - regex: /\(\?[:=!]|\)|\{\d+\b,?\d*\}|[+*]\?|[()$^+*?.]/ - }, { - token : "constant.language.delimiter", - regex: /\|/ - }, { - token: "constant.language.escape", - regex: /\[\^?/, - next: "regex_character_class" - }, { - token: "empty", - regex: "$", - next: "no_regex" - }, { - defaultToken: "string.regexp" - } - ], - "regex_character_class": [ - { - token: "regexp.keyword.operator", - regex: "\\\\(?:u[\\da-fA-F]{4}|x[\\da-fA-F]{2}|.)" - }, { - token: "constant.language.escape", - regex: "]", - next: "regex" - }, { - token: "constant.language.escape", - regex: "-" - }, { - token: "empty", - regex: "$", - next: "no_regex" - }, { - defaultToken: "string.regexp.charachterclass" - } - ], - "function_arguments": [ - { - token: "variable.parameter", - regex: identifierRe - }, { - token: "punctuation.operator", - regex: "[, ]+" - }, { - token: "punctuation.operator", - regex: "$" - }, { - token: "empty", - regex: "", - next: "no_regex" - } - ], - "comment_regex_allowed" : [ - {token : "comment", regex : "\\*\\/", next : "start"}, - {defaultToken : "comment"} - ], - "comment" : [ - {token : "comment", regex : "\\*\\/", next : "no_regex"}, - {defaultToken : "comment"} - ], - "line_comment_regex_allowed" : [ - {token : "comment", regex : "$|^", next : "start"}, - {defaultToken : "comment"} - ], - "line_comment" : [ - {token : "comment", regex : "$|^", next : "no_regex"}, - {defaultToken : "comment"} - ], - "qqstring" : [ - { - token : "constant.language.escape", - regex : escapedRe - }, { - token : "string", - regex : "\\\\$", - next : "qqstring" - }, { - token : "string", - regex : '"|$', - next : "no_regex" - }, { - defaultToken: "string" - } - ], - "qstring" : [ - { - token : "constant.language.escape", - regex : escapedRe - }, { - token : "string", - regex : "\\\\$", - next : "qstring" - }, { - token : "string", - regex : "'|$", - next : "no_regex" - }, { - defaultToken: "string" - } - ] - }; - - this.embedRules(DocCommentHighlightRules, "doc-", - [ DocCommentHighlightRules.getEndRule("no_regex") ]); -}; - -oop.inherits(JavaScriptHighlightRules, TextHighlightRules); - -exports.JavaScriptHighlightRules = JavaScriptHighlightRules; -}); - -ace.define('ace/mode/doc_comment_highlight_rules', ['require', 'exports', 'module' , 'ace/lib/oop', 'ace/mode/text_highlight_rules'], function(require, exports, module) { - - -var oop = require("../lib/oop"); -var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; - -var DocCommentHighlightRules = function() { - - this.$rules = { - "start" : [ { - token : "comment.doc.tag", - regex : "@[\\w\\d_]+" // TODO: fix email addresses - }, { - token : "comment.doc.tag", - regex : "\\bTODO\\b" - }, { - defaultToken : "comment.doc" - }] - }; -}; - -oop.inherits(DocCommentHighlightRules, TextHighlightRules); - -DocCommentHighlightRules.getStartRule = function(start) { - return { - token : "comment.doc", // doc comment - regex : "\\/\\*(?=\\*)", - next : start - }; -}; - -DocCommentHighlightRules.getEndRule = function (start) { - return { - token : "comment.doc", // closing comment - regex : "\\*\\/", - next : start - }; -}; - - -exports.DocCommentHighlightRules = DocCommentHighlightRules; - -}); - -ace.define('ace/mode/xml_highlight_rules', ['require', 'exports', 'module' , 'ace/lib/oop', 'ace/mode/xml_util', 'ace/mode/text_highlight_rules'], function(require, exports, module) { - - -var oop = require("../lib/oop"); -var xmlUtil = require("./xml_util"); -var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; - -var XmlHighlightRules = function(normalize) { - this.$rules = { - start : [ - {token : "punctuation.string.begin", regex : "<\\!\\[CDATA\\[", next : "cdata"}, - { - token : ["punctuation.instruction.begin", "keyword.instruction"], - regex : "(<\\?)(xml)(?=[\\s])", next : "xml_declaration" - }, - { - token : ["punctuation.instruction.begin", "keyword.instruction"], - regex : "(<\\?)([-_a-zA-Z0-9]+)", next : "instruction" - }, - {token : "comment", regex : "<\\!--", next : "comment"}, - { - token : ["punctuation.doctype.begin", "meta.tag.doctype"], - regex : "(<\\!)(DOCTYPE)(?=[\\s])", next : "doctype" - }, - {include : "tag"}, - {include : "reference"} - ], - - xml_declaration : [ - {include : "attributes"}, - {include : "instruction"} - ], - - instruction : [ - {token : "punctuation.instruction.end", regex : "\\?>", next : "start"} - ], - - doctype : [ - {include : "space"}, - {include : "string"}, - {token : "punctuation.doctype.end", regex : ">", next : "start"}, - {token : "xml-pe", regex : "[-_a-zA-Z0-9:]+"}, - {token : "punctuation.begin", regex : "\\[", push : "declarations"} - ], - - declarations : [{ - token : "text", - regex : "\\s+" - }, { - token: "punctuation.end", - regex: "]", - next: "pop" - }, { - token : ["punctuation.begin", "keyword"], - regex : "(<\\!)([-_a-zA-Z0-9]+)", - push : [{ - token : "text", - regex : "\\s+" - }, - { - token : "punctuation.end", - regex : ">", - next : "pop" - }, - {include : "string"}] - }], - - cdata : [ - {token : "string.end", regex : "\\]\\]>", next : "start"}, - {token : "text", regex : "\\s+"}, - {token : "text", regex : "(?:[^\\]]|\\](?!\\]>))+"} - ], - - comment : [ - {token : "comment", regex : "-->", next : "start"}, - {defaultToken : "comment"} - ], - - tag : [{ - token : ["meta.tag.punctuation.begin", "meta.tag.name"], - regex : "(<)((?:[-_a-zA-Z0-9]+:)?[-_a-zA-Z0-9]+)", - next: [ - {include : "attributes"}, - {token : "meta.tag.punctuation.end", regex : "/?>", next : "start"} - ] - }, { - token : ["meta.tag.punctuation.begin", "meta.tag.name"], - regex : "(", next : "start"} - ] - }], - - space : [ - {token : "text", regex : "\\s+"} - ], - - reference : [{ - token : "constant.language.escape", - regex : "(?:&#[0-9]+;)|(?:&#x[0-9a-fA-F]+;)|(?:&[a-zA-Z0-9_:\\.-]+;)" - }, { - token : "text", regex : "&" - }], - - string: [{ - token : "string", - regex : "'", - push : "qstring_inner" - }, { - token : "string", - regex : '"', - push : "qqstring_inner" - }], - - qstring_inner: [ - {token : "string", regex: "'", next: "pop"}, - {include : "reference"}, - {defaultToken : "string"} - ], - - qqstring_inner: [ - {token : "string", regex: '"', next: "pop"}, - {include : "reference"}, - {defaultToken : "string"} - ], - - attributes: [{ - token : "entity.other.attribute-name", - regex : "(?:[-_a-zA-Z0-9]+:)?[-_a-zA-Z0-9]+" - }, { - token : "keyword.operator.separator", - regex : "=" - }, { - include : "space" - }, { - include : "string" - }] - }; - - if (this.constructor === XmlHighlightRules) - this.normalizeRules(); -}; - - -(function() { - - this.embedTagRules = function(HighlightRules, prefix, tag){ - this.$rules.tag.unshift({ - token : ["meta.tag.punctuation.begin", "meta.tag.name." + tag], - regex : "(<)(" + tag + ")", - next: [ - {include : "space"}, - {include : "attributes"}, - {token : "meta.tag.punctuation.end", regex : "/?>", next : prefix + "start"} - ] - }); - - this.$rules[tag + "-end"] = [ - {include : "space"}, - {token : "meta.tag.punctuation.end", regex : ">", next: "start", - onMatch : function(value, currentState, stack) { - stack.splice(0); - return this.token; - }} - ] - - this.embedRules(HighlightRules, prefix, [{ - token: ["meta.tag.punctuation.begin", "meta.tag.name." + tag], - regex : "(" - }]); - }; - -}).call(TextHighlightRules.prototype); - -oop.inherits(XmlHighlightRules, TextHighlightRules); - -exports.XmlHighlightRules = XmlHighlightRules; -}); - -ace.define('ace/mode/xml_util', ['require', 'exports', 'module' ], function(require, exports, module) { - - -function string(state) { - return [{ - token : "string", - regex : '"', - next : state + "_qqstring" - }, { - token : "string", - regex : "'", - next : state + "_qstring" - }]; -} - -function multiLineString(quote, state) { - return [ - {token : "string", regex : quote, next : state}, - { - token : "constant.language.escape", - regex : "(?:&#[0-9]+;)|(?:&#x[0-9a-fA-F]+;)|(?:&[a-zA-Z0-9_:\\.-]+;)" - }, - {defaultToken : "string"} - ]; -} - -exports.tag = function(states, name, nextState, tagMap) { - states[name] = [{ - token : "text", - regex : "\\s+" - }, { - - token : !tagMap ? "meta.tag.tag-name" : function(value) { - if (tagMap[value]) - return "meta.tag.tag-name." + tagMap[value]; - else - return "meta.tag.tag-name"; - }, - regex : "[-_a-zA-Z0-9:]+", - next : name + "_embed_attribute_list" - }, { - token: "empty", - regex: "", - next : name + "_embed_attribute_list" - }]; - - states[name + "_qstring"] = multiLineString("'", name + "_embed_attribute_list"); - states[name + "_qqstring"] = multiLineString("\"", name + "_embed_attribute_list"); - - states[name + "_embed_attribute_list"] = [{ - token : "meta.tag.r", - regex : "/?>", - next : nextState - }, { - token : "keyword.operator", - regex : "=" - }, { - token : "entity.other.attribute-name", - regex : "[-_a-zA-Z0-9:]+" - }, { - token : "constant.numeric", // float - regex : "[+-]?\\d+(?:(?:\\.\\d*)?(?:[eE][+-]?\\d+)?)?\\b" - }, { - token : "text", - regex : "\\s+" - }].concat(string(name)); -}; - -}); - -ace.define('ace/mode/ruby_highlight_rules', ['require', 'exports', 'module' , 'ace/lib/oop', 'ace/mode/text_highlight_rules'], function(require, exports, module) { - - -var oop = require("../lib/oop"); -var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; -var constantOtherSymbol = exports.constantOtherSymbol = { - token : "constant.other.symbol.ruby", // symbol - regex : "[:](?:[A-Za-z_]|[@$](?=[a-zA-Z0-9_]))[a-zA-Z0-9_]*[!=?]?" -}; - -var qString = exports.qString = { - token : "string", // single line - regex : "['](?:(?:\\\\.)|(?:[^'\\\\]))*?[']" -}; - -var qqString = exports.qqString = { - token : "string", // single line - regex : '["](?:(?:\\\\.)|(?:[^"\\\\]))*?["]' -}; - -var tString = exports.tString = { - token : "string", // backtick string - regex : "[`](?:(?:\\\\.)|(?:[^'\\\\]))*?[`]" -}; - -var constantNumericHex = exports.constantNumericHex = { - token : "constant.numeric", // hex - regex : "0[xX][0-9a-fA-F](?:[0-9a-fA-F]|_(?=[0-9a-fA-F]))*\\b" -}; - -var constantNumericFloat = exports.constantNumericFloat = { - token : "constant.numeric", // float - regex : "[+-]?\\d(?:\\d|_(?=\\d))*(?:(?:\\.\\d(?:\\d|_(?=\\d))*)?(?:[eE][+-]?\\d+)?)?\\b" -}; - -var RubyHighlightRules = function() { - - var builtinFunctions = ( - "abort|Array|assert|assert_equal|assert_not_equal|assert_same|assert_not_same|" + - "assert_nil|assert_not_nil|assert_match|assert_no_match|assert_in_delta|assert_throws|" + - "assert_raise|assert_nothing_raised|assert_instance_of|assert_kind_of|assert_respond_to|" + - "assert_operator|assert_send|assert_difference|assert_no_difference|assert_recognizes|" + - "assert_generates|assert_response|assert_redirected_to|assert_template|assert_select|" + - "assert_select_email|assert_select_rjs|assert_select_encoded|css_select|at_exit|" + - "attr|attr_writer|attr_reader|attr_accessor|attr_accessible|autoload|binding|block_given?|callcc|" + - "caller|catch|chomp|chomp!|chop|chop!|defined?|delete_via_redirect|eval|exec|exit|" + - "exit!|fail|Float|flunk|follow_redirect!|fork|form_for|form_tag|format|gets|global_variables|gsub|" + - "gsub!|get_via_redirect|host!|https?|https!|include|Integer|lambda|link_to|" + - "link_to_unless_current|link_to_function|link_to_remote|load|local_variables|loop|open|open_session|" + - "p|print|printf|proc|putc|puts|post_via_redirect|put_via_redirect|raise|rand|" + - "raw|readline|readlines|redirect?|request_via_redirect|require|scan|select|" + - "set_trace_func|sleep|split|sprintf|srand|String|stylesheet_link_tag|syscall|system|sub|sub!|test|" + - "throw|trace_var|trap|untrace_var|atan2|cos|exp|frexp|ldexp|log|log10|sin|sqrt|tan|" + - "render|javascript_include_tag|csrf_meta_tag|label_tag|text_field_tag|submit_tag|check_box_tag|" + - "content_tag|radio_button_tag|text_area_tag|password_field_tag|hidden_field_tag|" + - "fields_for|select_tag|options_for_select|options_from_collection_for_select|collection_select|" + - "time_zone_select|select_date|select_time|select_datetime|date_select|time_select|datetime_select|" + - "select_year|select_month|select_day|select_hour|select_minute|select_second|file_field_tag|" + - "file_field|respond_to|skip_before_filter|around_filter|after_filter|verify|" + - "protect_from_forgery|rescue_from|helper_method|redirect_to|before_filter|" + - "send_data|send_file|validates_presence_of|validates_uniqueness_of|validates_length_of|" + - "validates_format_of|validates_acceptance_of|validates_associated|validates_exclusion_of|" + - "validates_inclusion_of|validates_numericality_of|validates_with|validates_each|" + - "authenticate_or_request_with_http_basic|authenticate_or_request_with_http_digest|" + - "filter_parameter_logging|match|get|post|resources|redirect|scope|assert_routing|" + - "translate|localize|extract_locale_from_tld|caches_page|expire_page|caches_action|expire_action|" + - "cache|expire_fragment|expire_cache_for|observe|cache_sweeper|" + - "has_many|has_one|belongs_to|has_and_belongs_to_many" - ); - - var keywords = ( - "alias|and|BEGIN|begin|break|case|class|def|defined|do|else|elsif|END|end|ensure|" + - "__FILE__|finally|for|gem|if|in|__LINE__|module|next|not|or|private|protected|public|" + - "redo|rescue|retry|return|super|then|undef|unless|until|when|while|yield" - ); - - var buildinConstants = ( - "true|TRUE|false|FALSE|nil|NIL|ARGF|ARGV|DATA|ENV|RUBY_PLATFORM|RUBY_RELEASE_DATE|" + - "RUBY_VERSION|STDERR|STDIN|STDOUT|TOPLEVEL_BINDING" - ); - - var builtinVariables = ( - "\$DEBUG|\$defout|\$FILENAME|\$LOAD_PATH|\$SAFE|\$stdin|\$stdout|\$stderr|\$VERBOSE|" + - "$!|root_url|flash|session|cookies|params|request|response|logger|self" - ); - - var keywordMapper = this.$keywords = this.createKeywordMapper({ - "keyword": keywords, - "constant.language": buildinConstants, - "variable.language": builtinVariables, - "support.function": builtinFunctions, - "invalid.deprecated": "debugger" // TODO is this a remnant from js mode? - }, "identifier"); - - this.$rules = { - "start" : [ - { - token : "comment", - regex : "#.*$" - }, { - token : "comment", // multi line comment - regex : "^=begin(?:$|\\s.*$)", - next : "comment" - }, { - token : "string.regexp", - regex : "[/](?:(?:\\[(?:\\\\]|[^\\]])+\\])|(?:\\\\/|[^\\]/]))*[/]\\w*\\s*(?=[).,;]|$)" - }, - - qString, - qqString, - tString, - - { - token : "text", // namespaces aren't symbols - regex : "::" - }, { - token : "variable.instance", // instance variable - regex : "@{1,2}[a-zA-Z_\\d]+" - }, { - token : "support.class", // class name - regex : "[A-Z][a-zA-Z_\\d]+" - }, - - constantOtherSymbol, - constantNumericHex, - constantNumericFloat, - - { - token : "constant.language.boolean", - regex : "(?:true|false)\\b" - }, { - token : keywordMapper, - regex : "[a-zA-Z_$][a-zA-Z0-9_$]*\\b" - }, { - token : "punctuation.separator.key-value", - regex : "=>" - }, { - stateName: "heredoc", - onMatch : function(value, currentState, stack) { - var next = value[2] == '-' ? "indentedHeredoc" : "heredoc"; - var tokens = value.split(this.splitRegex); - stack.push(next, tokens[3]); - return [ - {type:"constant", value: tokens[1]}, - {type:"string", value: tokens[2]}, - {type:"support.class", value: tokens[3]}, - {type:"string", value: tokens[4]} - ]; - }, - regex : "(<<-?)(['\"`]?)([\\w]+)(['\"`]?)", - rules: { - heredoc: [{ - onMatch: function(value, currentState, stack) { - if (value === stack[1]) { - stack.shift(); - stack.shift(); - this.next = stack[0] || "start"; - return "support.class"; - } - this.next = ""; - return "string"; - }, - regex: ".*$", - next: "start" - }], - indentedHeredoc: [{ - token: "string", - regex: "^ +" - }, { - onMatch: function(value, currentState, stack) { - if (value === stack[1]) { - stack.shift(); - stack.shift(); - this.next = stack[0] || "start"; - return "support.class"; - } - this.next = ""; - return "string"; - }, - regex: ".*$", - next: "start" - }] - } - }, { - regex : "$", - token : "empty", - next : function(currentState, stack) { - if (stack[0] === "heredoc" || stack[0] === "indentedHeredoc") - return stack[0]; - return currentState; - } - }, { - token : "keyword.operator", - regex : "!|\\$|%|&|\\*|\\-\\-|\\-|\\+\\+|\\+|~|===|==|=|!=|!==|<=|>=|<<=|>>=|>>>=|<>|<|>|!|&&|\\|\\||\\?\\:|\\*=|%=|\\+=|\\-=|&=|\\^=|\\b(?:in|instanceof|new|delete|typeof|void)" - }, { - token : "paren.lparen", - regex : "[[({]" - }, { - token : "paren.rparen", - regex : "[\\])}]" - }, { - token : "text", - regex : "\\s+" - } - ], - "comment" : [ - { - token : "comment", // closing comment - regex : "^=end(?:$|\\s.*$)", - next : "start" - }, { - token : "comment", // comment spanning whole line - regex : ".+" - } - ] - }; - - this.normalizeRules(); -}; - -oop.inherits(RubyHighlightRules, TextHighlightRules); - -exports.RubyHighlightRules = RubyHighlightRules; -}); - -ace.define('ace/mode/html', ['require', 'exports', 'module' , 'ace/lib/oop', 'ace/mode/text', 'ace/mode/javascript', 'ace/mode/css', 'ace/tokenizer', 'ace/mode/html_highlight_rules', 'ace/mode/behaviour/html', 'ace/mode/folding/html', 'ace/mode/html_completions'], function(require, exports, module) { - - -var oop = require("../lib/oop"); -var TextMode = require("./text").Mode; -var JavaScriptMode = require("./javascript").Mode; -var CssMode = require("./css").Mode; -var Tokenizer = require("../tokenizer").Tokenizer; -var HtmlHighlightRules = require("./html_highlight_rules").HtmlHighlightRules; -var HtmlBehaviour = require("./behaviour/html").HtmlBehaviour; -var HtmlFoldMode = require("./folding/html").FoldMode; -var HtmlCompletions = require("./html_completions").HtmlCompletions; - -var Mode = function() { - this.HighlightRules = HtmlHighlightRules; - this.$behaviour = new HtmlBehaviour(); - this.$completer = new HtmlCompletions(); - - this.createModeDelegates({ - "js-": JavaScriptMode, - "css-": CssMode - }); - - this.foldingRules = new HtmlFoldMode(); -}; -oop.inherits(Mode, TextMode); - -(function() { - - this.blockComment = {start: ""}; - - this.getNextLineIndent = function(state, line, tab) { - return this.$getIndent(line); - }; - - this.checkOutdent = function(state, line, input) { - return false; - }; - - this.getCompletions = function(state, session, pos, prefix) { - return this.$completer.getCompletions(state, session, pos, prefix); - }; - - this.$id = "ace/mode/html"; -}).call(Mode.prototype); - -exports.Mode = Mode; -}); - -ace.define('ace/mode/javascript', ['require', 'exports', 'module' , 'ace/lib/oop', 'ace/mode/text', 'ace/tokenizer', 'ace/mode/javascript_highlight_rules', 'ace/mode/matching_brace_outdent', 'ace/range', 'ace/worker/worker_client', 'ace/mode/behaviour/cstyle', 'ace/mode/folding/cstyle'], function(require, exports, module) { - - -var oop = require("../lib/oop"); -var TextMode = require("./text").Mode; -var Tokenizer = require("../tokenizer").Tokenizer; -var JavaScriptHighlightRules = require("./javascript_highlight_rules").JavaScriptHighlightRules; -var MatchingBraceOutdent = require("./matching_brace_outdent").MatchingBraceOutdent; -var Range = require("../range").Range; -var WorkerClient = require("../worker/worker_client").WorkerClient; -var CstyleBehaviour = require("./behaviour/cstyle").CstyleBehaviour; -var CStyleFoldMode = require("./folding/cstyle").FoldMode; - -var Mode = function() { - this.HighlightRules = JavaScriptHighlightRules; - - this.$outdent = new MatchingBraceOutdent(); - this.$behaviour = new CstyleBehaviour(); - this.foldingRules = new CStyleFoldMode(); -}; -oop.inherits(Mode, TextMode); - -(function() { - - this.lineCommentStart = "//"; - this.blockComment = {start: "/*", end: "*/"}; - - this.getNextLineIndent = function(state, line, tab) { - var indent = this.$getIndent(line); - - var tokenizedLine = this.getTokenizer().getLineTokens(line, state); - var tokens = tokenizedLine.tokens; - var endState = tokenizedLine.state; - - if (tokens.length && tokens[tokens.length-1].type == "comment") { - return indent; - } - - if (state == "start" || state == "no_regex") { - var match = line.match(/^.*(?:\bcase\b.*\:|[\{\(\[])\s*$/); - if (match) { - indent += tab; - } - } else if (state == "doc-start") { - if (endState == "start" || endState == "no_regex") { - return ""; - } - var match = line.match(/^\s*(\/?)\*/); - if (match) { - if (match[1]) { - indent += " "; - } - indent += "* "; - } - } - - return indent; - }; - - this.checkOutdent = function(state, line, input) { - return this.$outdent.checkOutdent(line, input); - }; - - this.autoOutdent = function(state, doc, row) { - this.$outdent.autoOutdent(doc, row); - }; - - this.createWorker = function(session) { - var worker = new WorkerClient(["ace"], "ace/mode/javascript_worker", "JavaScriptWorker"); - worker.attachToDocument(session.getDocument()); - - worker.on("jslint", function(results) { - session.setAnnotations(results.data); - }); - - worker.on("terminate", function() { - session.clearAnnotations(); - }); - - return worker; - }; - - this.$id = "ace/mode/javascript"; -}).call(Mode.prototype); - -exports.Mode = Mode; -}); - -ace.define('ace/mode/matching_brace_outdent', ['require', 'exports', 'module' , 'ace/range'], function(require, exports, module) { - - -var Range = require("../range").Range; - -var MatchingBraceOutdent = function() {}; - -(function() { - - this.checkOutdent = function(line, input) { - if (! /^\s+$/.test(line)) - return false; - - return /^\s*\}/.test(input); - }; - - this.autoOutdent = function(doc, row) { - var line = doc.getLine(row); - var match = line.match(/^(\s*\})/); - - if (!match) return 0; - - var column = match[1].length; - var openBracePos = doc.findMatchingBracket({row: row, column: column}); - - if (!openBracePos || openBracePos.row == row) return 0; - - var indent = this.$getIndent(doc.getLine(openBracePos.row)); - doc.replace(new Range(row, 0, row, column-1), indent); - }; - - this.$getIndent = function(line) { - return line.match(/^\s*/)[0]; - }; - -}).call(MatchingBraceOutdent.prototype); - -exports.MatchingBraceOutdent = MatchingBraceOutdent; -}); - -ace.define('ace/mode/behaviour/cstyle', ['require', 'exports', 'module' , 'ace/lib/oop', 'ace/mode/behaviour', 'ace/token_iterator', 'ace/lib/lang'], function(require, exports, module) { - - -var oop = require("../../lib/oop"); -var Behaviour = require("../behaviour").Behaviour; -var TokenIterator = require("../../token_iterator").TokenIterator; -var lang = require("../../lib/lang"); - -var SAFE_INSERT_IN_TOKENS = - ["text", "paren.rparen", "punctuation.operator"]; -var SAFE_INSERT_BEFORE_TOKENS = - ["text", "paren.rparen", "punctuation.operator", "comment"]; - - -var autoInsertedBrackets = 0; -var autoInsertedRow = -1; -var autoInsertedLineEnd = ""; -var maybeInsertedBrackets = 0; -var maybeInsertedRow = -1; -var maybeInsertedLineStart = ""; -var maybeInsertedLineEnd = ""; - -var CstyleBehaviour = function () { - - CstyleBehaviour.isSaneInsertion = function(editor, session) { - var cursor = editor.getCursorPosition(); - var iterator = new TokenIterator(session, cursor.row, cursor.column); - if (!this.$matchTokenType(iterator.getCurrentToken() || "text", SAFE_INSERT_IN_TOKENS)) { - var iterator2 = new TokenIterator(session, cursor.row, cursor.column + 1); - if (!this.$matchTokenType(iterator2.getCurrentToken() || "text", SAFE_INSERT_IN_TOKENS)) - return false; - } - iterator.stepForward(); - return iterator.getCurrentTokenRow() !== cursor.row || - this.$matchTokenType(iterator.getCurrentToken() || "text", SAFE_INSERT_BEFORE_TOKENS); - }; - - CstyleBehaviour.$matchTokenType = function(token, types) { - return types.indexOf(token.type || token) > -1; - }; - - CstyleBehaviour.recordAutoInsert = function(editor, session, bracket) { - var cursor = editor.getCursorPosition(); - var line = session.doc.getLine(cursor.row); - if (!this.isAutoInsertedClosing(cursor, line, autoInsertedLineEnd[0])) - autoInsertedBrackets = 0; - autoInsertedRow = cursor.row; - autoInsertedLineEnd = bracket + line.substr(cursor.column); - autoInsertedBrackets++; - }; - - CstyleBehaviour.recordMaybeInsert = function(editor, session, bracket) { - var cursor = editor.getCursorPosition(); - var line = session.doc.getLine(cursor.row); - if (!this.isMaybeInsertedClosing(cursor, line)) - maybeInsertedBrackets = 0; - maybeInsertedRow = cursor.row; - maybeInsertedLineStart = line.substr(0, cursor.column) + bracket; - maybeInsertedLineEnd = line.substr(cursor.column); - maybeInsertedBrackets++; - }; - - CstyleBehaviour.isAutoInsertedClosing = function(cursor, line, bracket) { - return autoInsertedBrackets > 0 && - cursor.row === autoInsertedRow && - bracket === autoInsertedLineEnd[0] && - line.substr(cursor.column) === autoInsertedLineEnd; - }; - - CstyleBehaviour.isMaybeInsertedClosing = function(cursor, line) { - return maybeInsertedBrackets > 0 && - cursor.row === maybeInsertedRow && - line.substr(cursor.column) === maybeInsertedLineEnd && - line.substr(0, cursor.column) == maybeInsertedLineStart; - }; - - CstyleBehaviour.popAutoInsertedClosing = function() { - autoInsertedLineEnd = autoInsertedLineEnd.substr(1); - autoInsertedBrackets--; - }; - - CstyleBehaviour.clearMaybeInsertedClosing = function() { - maybeInsertedBrackets = 0; - maybeInsertedRow = -1; - }; - - this.add("braces", "insertion", function (state, action, editor, session, text) { - var cursor = editor.getCursorPosition(); - var line = session.doc.getLine(cursor.row); - if (text == '{') { - var selection = editor.getSelectionRange(); - var selected = session.doc.getTextRange(selection); - if (selected !== "" && selected !== "{" && editor.getWrapBehavioursEnabled()) { - return { - text: '{' + selected + '}', - selection: false - }; - } else if (CstyleBehaviour.isSaneInsertion(editor, session)) { - if (/[\]\}\)]/.test(line[cursor.column]) || editor.inMultiSelectMode) { - CstyleBehaviour.recordAutoInsert(editor, session, "}"); - return { - text: '{}', - selection: [1, 1] - }; - } else { - CstyleBehaviour.recordMaybeInsert(editor, session, "{"); - return { - text: '{', - selection: [1, 1] - }; - } - } - } else if (text == '}') { - var rightChar = line.substring(cursor.column, cursor.column + 1); - if (rightChar == '}') { - var matching = session.$findOpeningBracket('}', {column: cursor.column + 1, row: cursor.row}); - if (matching !== null && CstyleBehaviour.isAutoInsertedClosing(cursor, line, text)) { - CstyleBehaviour.popAutoInsertedClosing(); - return { - text: '', - selection: [1, 1] - }; - } - } - } else if (text == "\n" || text == "\r\n") { - var closing = ""; - if (CstyleBehaviour.isMaybeInsertedClosing(cursor, line)) { - closing = lang.stringRepeat("}", maybeInsertedBrackets); - CstyleBehaviour.clearMaybeInsertedClosing(); - } - var rightChar = line.substring(cursor.column, cursor.column + 1); - if (rightChar === '}') { - var openBracePos = session.findMatchingBracket({row: cursor.row, column: cursor.column+1}, '}'); - if (!openBracePos) - return null; - var next_indent = this.$getIndent(session.getLine(openBracePos.row)); - } else if (closing) { - var next_indent = this.$getIndent(line); - } else { - return; - } - var indent = next_indent + session.getTabString(); - - return { - text: '\n' + indent + '\n' + next_indent + closing, - selection: [1, indent.length, 1, indent.length] - }; - } else { - CstyleBehaviour.clearMaybeInsertedClosing(); - } - }); - - this.add("braces", "deletion", function (state, action, editor, session, range) { - var selected = session.doc.getTextRange(range); - if (!range.isMultiLine() && selected == '{') { - var line = session.doc.getLine(range.start.row); - var rightChar = line.substring(range.end.column, range.end.column + 1); - if (rightChar == '}') { - range.end.column++; - return range; - } else { - maybeInsertedBrackets--; - } - } - }); - - this.add("parens", "insertion", function (state, action, editor, session, text) { - if (text == '(') { - var selection = editor.getSelectionRange(); - var selected = session.doc.getTextRange(selection); - if (selected !== "" && editor.getWrapBehavioursEnabled()) { - return { - text: '(' + selected + ')', - selection: false - }; - } else if (CstyleBehaviour.isSaneInsertion(editor, session)) { - CstyleBehaviour.recordAutoInsert(editor, session, ")"); - return { - text: '()', - selection: [1, 1] - }; - } - } else if (text == ')') { - var cursor = editor.getCursorPosition(); - var line = session.doc.getLine(cursor.row); - var rightChar = line.substring(cursor.column, cursor.column + 1); - if (rightChar == ')') { - var matching = session.$findOpeningBracket(')', {column: cursor.column + 1, row: cursor.row}); - if (matching !== null && CstyleBehaviour.isAutoInsertedClosing(cursor, line, text)) { - CstyleBehaviour.popAutoInsertedClosing(); - return { - text: '', - selection: [1, 1] - }; - } - } - } - }); - - this.add("parens", "deletion", function (state, action, editor, session, range) { - var selected = session.doc.getTextRange(range); - if (!range.isMultiLine() && selected == '(') { - var line = session.doc.getLine(range.start.row); - var rightChar = line.substring(range.start.column + 1, range.start.column + 2); - if (rightChar == ')') { - range.end.column++; - return range; - } - } - }); - - this.add("brackets", "insertion", function (state, action, editor, session, text) { - if (text == '[') { - var selection = editor.getSelectionRange(); - var selected = session.doc.getTextRange(selection); - if (selected !== "" && editor.getWrapBehavioursEnabled()) { - return { - text: '[' + selected + ']', - selection: false - }; - } else if (CstyleBehaviour.isSaneInsertion(editor, session)) { - CstyleBehaviour.recordAutoInsert(editor, session, "]"); - return { - text: '[]', - selection: [1, 1] - }; - } - } else if (text == ']') { - var cursor = editor.getCursorPosition(); - var line = session.doc.getLine(cursor.row); - var rightChar = line.substring(cursor.column, cursor.column + 1); - if (rightChar == ']') { - var matching = session.$findOpeningBracket(']', {column: cursor.column + 1, row: cursor.row}); - if (matching !== null && CstyleBehaviour.isAutoInsertedClosing(cursor, line, text)) { - CstyleBehaviour.popAutoInsertedClosing(); - return { - text: '', - selection: [1, 1] - }; - } - } - } - }); - - this.add("brackets", "deletion", function (state, action, editor, session, range) { - var selected = session.doc.getTextRange(range); - if (!range.isMultiLine() && selected == '[') { - var line = session.doc.getLine(range.start.row); - var rightChar = line.substring(range.start.column + 1, range.start.column + 2); - if (rightChar == ']') { - range.end.column++; - return range; - } - } - }); - - this.add("string_dquotes", "insertion", function (state, action, editor, session, text) { - if (text == '"' || text == "'") { - var quote = text; - var selection = editor.getSelectionRange(); - var selected = session.doc.getTextRange(selection); - if (selected !== "" && selected !== "'" && selected != '"' && editor.getWrapBehavioursEnabled()) { - return { - text: quote + selected + quote, - selection: false - }; - } else { - var cursor = editor.getCursorPosition(); - var line = session.doc.getLine(cursor.row); - var leftChar = line.substring(cursor.column-1, cursor.column); - if (leftChar == '\\') { - return null; - } - var tokens = session.getTokens(selection.start.row); - var col = 0, token; - var quotepos = -1; // Track whether we're inside an open quote. - - for (var x = 0; x < tokens.length; x++) { - token = tokens[x]; - if (token.type == "string") { - quotepos = -1; - } else if (quotepos < 0) { - quotepos = token.value.indexOf(quote); - } - if ((token.value.length + col) > selection.start.column) { - break; - } - col += tokens[x].value.length; - } - if (!token || (quotepos < 0 && token.type !== "comment" && (token.type !== "string" || ((selection.start.column !== token.value.length+col-1) && token.value.lastIndexOf(quote) === token.value.length-1)))) { - if (!CstyleBehaviour.isSaneInsertion(editor, session)) - return; - return { - text: quote + quote, - selection: [1,1] - }; - } else if (token && token.type === "string") { - var rightChar = line.substring(cursor.column, cursor.column + 1); - if (rightChar == quote) { - return { - text: '', - selection: [1, 1] - }; - } - } - } - } - }); - - this.add("string_dquotes", "deletion", function (state, action, editor, session, range) { - var selected = session.doc.getTextRange(range); - if (!range.isMultiLine() && (selected == '"' || selected == "'")) { - var line = session.doc.getLine(range.start.row); - var rightChar = line.substring(range.start.column + 1, range.start.column + 2); - if (rightChar == selected) { - range.end.column++; - return range; - } - } - }); - -}; - -oop.inherits(CstyleBehaviour, Behaviour); - -exports.CstyleBehaviour = CstyleBehaviour; -}); - -ace.define('ace/mode/folding/cstyle', ['require', 'exports', 'module' , 'ace/lib/oop', 'ace/range', 'ace/mode/folding/fold_mode'], function(require, exports, module) { - - -var oop = require("../../lib/oop"); -var Range = require("../../range").Range; -var BaseFoldMode = require("./fold_mode").FoldMode; - -var FoldMode = exports.FoldMode = function(commentRegex) { - if (commentRegex) { - this.foldingStartMarker = new RegExp( - this.foldingStartMarker.source.replace(/\|[^|]*?$/, "|" + commentRegex.start) - ); - this.foldingStopMarker = new RegExp( - this.foldingStopMarker.source.replace(/\|[^|]*?$/, "|" + commentRegex.end) - ); - } -}; -oop.inherits(FoldMode, BaseFoldMode); - -(function() { - - this.foldingStartMarker = /(\{|\[)[^\}\]]*$|^\s*(\/\*)/; - this.foldingStopMarker = /^[^\[\{]*(\}|\])|^[\s\*]*(\*\/)/; - - this.getFoldWidgetRange = function(session, foldStyle, row, forceMultiline) { - var line = session.getLine(row); - var match = line.match(this.foldingStartMarker); - if (match) { - var i = match.index; - - if (match[1]) - return this.openingBracketBlock(session, match[1], row, i); - - var range = session.getCommentFoldRange(row, i + match[0].length, 1); - - if (range && !range.isMultiLine()) { - if (forceMultiline) { - range = this.getSectionRange(session, row); - } else if (foldStyle != "all") - range = null; - } - - return range; - } - - if (foldStyle === "markbegin") - return; - - var match = line.match(this.foldingStopMarker); - if (match) { - var i = match.index + match[0].length; - - if (match[1]) - return this.closingBracketBlock(session, match[1], row, i); - - return session.getCommentFoldRange(row, i, -1); - } - }; - - this.getSectionRange = function(session, row) { - var line = session.getLine(row); - var startIndent = line.search(/\S/); - var startRow = row; - var startColumn = line.length; - row = row + 1; - var endRow = row; - var maxRow = session.getLength(); - while (++row < maxRow) { - line = session.getLine(row); - var indent = line.search(/\S/); - if (indent === -1) - continue; - if (startIndent > indent) - break; - var subRange = this.getFoldWidgetRange(session, "all", row); - - if (subRange) { - if (subRange.start.row <= startRow) { - break; - } else if (subRange.isMultiLine()) { - row = subRange.end.row; - } else if (startIndent == indent) { - break; - } - } - endRow = row; - } - - return new Range(startRow, startColumn, endRow, session.getLine(endRow).length); - }; - -}).call(FoldMode.prototype); - -}); - -ace.define('ace/mode/css', ['require', 'exports', 'module' , 'ace/lib/oop', 'ace/mode/text', 'ace/tokenizer', 'ace/mode/css_highlight_rules', 'ace/mode/matching_brace_outdent', 'ace/worker/worker_client', 'ace/mode/behaviour/css', 'ace/mode/folding/cstyle'], function(require, exports, module) { - - -var oop = require("../lib/oop"); -var TextMode = require("./text").Mode; -var Tokenizer = require("../tokenizer").Tokenizer; -var CssHighlightRules = require("./css_highlight_rules").CssHighlightRules; -var MatchingBraceOutdent = require("./matching_brace_outdent").MatchingBraceOutdent; -var WorkerClient = require("../worker/worker_client").WorkerClient; -var CssBehaviour = require("./behaviour/css").CssBehaviour; -var CStyleFoldMode = require("./folding/cstyle").FoldMode; - -var Mode = function() { - this.HighlightRules = CssHighlightRules; - this.$outdent = new MatchingBraceOutdent(); - this.$behaviour = new CssBehaviour(); - this.foldingRules = new CStyleFoldMode(); -}; -oop.inherits(Mode, TextMode); - -(function() { - - this.foldingRules = "cStyle"; - this.blockComment = {start: "/*", end: "*/"}; - - this.getNextLineIndent = function(state, line, tab) { - var indent = this.$getIndent(line); - var tokens = this.getTokenizer().getLineTokens(line, state).tokens; - if (tokens.length && tokens[tokens.length-1].type == "comment") { - return indent; - } - - var match = line.match(/^.*\{\s*$/); - if (match) { - indent += tab; - } - - return indent; - }; - - this.checkOutdent = function(state, line, input) { - return this.$outdent.checkOutdent(line, input); - }; - - this.autoOutdent = function(state, doc, row) { - this.$outdent.autoOutdent(doc, row); - }; - - this.createWorker = function(session) { - var worker = new WorkerClient(["ace"], "ace/mode/css_worker", "Worker"); - worker.attachToDocument(session.getDocument()); - - worker.on("csslint", function(e) { - session.setAnnotations(e.data); - }); - - worker.on("terminate", function() { - session.clearAnnotations(); - }); - - return worker; - }; - - this.$id = "ace/mode/css"; -}).call(Mode.prototype); - -exports.Mode = Mode; - -}); - -ace.define('ace/mode/behaviour/css', ['require', 'exports', 'module' , 'ace/lib/oop', 'ace/mode/behaviour', 'ace/mode/behaviour/cstyle', 'ace/token_iterator'], function(require, exports, module) { - - -var oop = require("../../lib/oop"); -var Behaviour = require("../behaviour").Behaviour; -var CstyleBehaviour = require("./cstyle").CstyleBehaviour; -var TokenIterator = require("../../token_iterator").TokenIterator; - -var CssBehaviour = function () { - - this.inherit(CstyleBehaviour); - - this.add("colon", "insertion", function (state, action, editor, session, text) { - if (text === ':') { - var cursor = editor.getCursorPosition(); - var iterator = new TokenIterator(session, cursor.row, cursor.column); - var token = iterator.getCurrentToken(); - if (token && token.value.match(/\s+/)) { - token = iterator.stepBackward(); - } - if (token && token.type === 'support.type') { - var line = session.doc.getLine(cursor.row); - var rightChar = line.substring(cursor.column, cursor.column + 1); - if (rightChar === ':') { - return { - text: '', - selection: [1, 1] - } - } - if (!line.substring(cursor.column).match(/^\s*;/)) { - return { - text: ':;', - selection: [1, 1] - } - } - } - } - }); - - this.add("colon", "deletion", function (state, action, editor, session, range) { - var selected = session.doc.getTextRange(range); - if (!range.isMultiLine() && selected === ':') { - var cursor = editor.getCursorPosition(); - var iterator = new TokenIterator(session, cursor.row, cursor.column); - var token = iterator.getCurrentToken(); - if (token && token.value.match(/\s+/)) { - token = iterator.stepBackward(); - } - if (token && token.type === 'support.type') { - var line = session.doc.getLine(range.start.row); - var rightChar = line.substring(range.end.column, range.end.column + 1); - if (rightChar === ';') { - range.end.column ++; - return range; - } - } - } - }); - - this.add("semicolon", "insertion", function (state, action, editor, session, text) { - if (text === ';') { - var cursor = editor.getCursorPosition(); - var line = session.doc.getLine(cursor.row); - var rightChar = line.substring(cursor.column, cursor.column + 1); - if (rightChar === ';') { - return { - text: '', - selection: [1, 1] - } - } - } - }); - -} -oop.inherits(CssBehaviour, CstyleBehaviour); - -exports.CssBehaviour = CssBehaviour; -}); - -ace.define('ace/mode/behaviour/html', ['require', 'exports', 'module' , 'ace/lib/oop', 'ace/mode/behaviour/xml', 'ace/mode/behaviour/cstyle', 'ace/token_iterator'], function(require, exports, module) { - - -var oop = require("../../lib/oop"); -var XmlBehaviour = require("../behaviour/xml").XmlBehaviour; -var CstyleBehaviour = require("./cstyle").CstyleBehaviour; -var TokenIterator = require("../../token_iterator").TokenIterator; -var voidElements = ['area', 'base', 'br', 'col', 'command', 'embed', 'hr', 'img', 'input', 'keygen', 'link', 'meta', 'param', 'source', 'track', 'wbr']; - -function hasType(token, type) { - var tokenTypes = token.type.split('.'); - return type.split('.').every(function(type){ - return (tokenTypes.indexOf(type) !== -1); - }); - return hasType; -} - -var HtmlBehaviour = function () { - - this.inherit(XmlBehaviour); // Get xml behaviour - - this.add("autoclosing", "insertion", function (state, action, editor, session, text) { - if (text == '>') { - var position = editor.getCursorPosition(); - var iterator = new TokenIterator(session, position.row, position.column); - var token = iterator.getCurrentToken(); - - if (token && hasType(token, 'string') && iterator.getCurrentTokenColumn() + token.value.length > position.column) - return; - var atCursor = false; - if (!token || !hasType(token, 'meta.tag') && !(hasType(token, 'text') && token.value.match('/'))){ - do { - token = iterator.stepBackward(); - } while (token && (hasType(token, 'string') || hasType(token, 'keyword.operator') || hasType(token, 'entity.attribute-name') || hasType(token, 'text'))); - } else { - atCursor = true; - } - if (!token || !hasType(token, 'meta.tag.name') || iterator.stepBackward().value.match('/')) { - return; - } - var element = token.value; - if (atCursor){ - var element = element.substring(0, position.column - token.start); - } - if (voidElements.indexOf(element) !== -1){ - return; - } - return { - text: '>' + '', - selection: [1, 1] - } - } - }); -} -oop.inherits(HtmlBehaviour, XmlBehaviour); - -exports.HtmlBehaviour = HtmlBehaviour; -}); - -ace.define('ace/mode/behaviour/xml', ['require', 'exports', 'module' , 'ace/lib/oop', 'ace/mode/behaviour', 'ace/mode/behaviour/cstyle', 'ace/token_iterator'], function(require, exports, module) { - - -var oop = require("../../lib/oop"); -var Behaviour = require("../behaviour").Behaviour; -var CstyleBehaviour = require("./cstyle").CstyleBehaviour; -var TokenIterator = require("../../token_iterator").TokenIterator; - -function hasType(token, type) { - var tokenTypes = token.type.split('.'); - return type.split('.').every(function(type){ - return (tokenTypes.indexOf(type) !== -1); - }); - return hasType; -} - -var XmlBehaviour = function () { - - this.inherit(CstyleBehaviour, ["string_dquotes"]); // Get string behaviour - - this.add("autoclosing", "insertion", function (state, action, editor, session, text) { - if (text == '>') { - var position = editor.getCursorPosition(); - var iterator = new TokenIterator(session, position.row, position.column); - var token = iterator.getCurrentToken(); - - if (token && hasType(token, 'string') && iterator.getCurrentTokenColumn() + token.value.length > position.column) - return; - var atCursor = false; - if (!token || !hasType(token, 'meta.tag') && !(hasType(token, 'text') && token.value.match('/'))){ - do { - token = iterator.stepBackward(); - } while (token && (hasType(token, 'string') || hasType(token, 'keyword.operator') || hasType(token, 'entity.attribute-name') || hasType(token, 'text'))); - } else { - atCursor = true; - } - if (!token || !hasType(token, 'meta.tag.name') || iterator.stepBackward().value.match('/')) { - return; - } - var tag = token.value; - if (atCursor){ - var tag = tag.substring(0, position.column - token.start); - } - - return { - text: '>' + '', - selection: [1, 1] - } - } - }); - - this.add('autoindent', 'insertion', function (state, action, editor, session, text) { - if (text == "\n") { - var cursor = editor.getCursorPosition(); - var line = session.getLine(cursor.row); - var rightChars = line.substring(cursor.column, cursor.column + 2); - if (rightChars == '?)/; - this._parseTag = function(tag) { - - var match = tag.match(this.tagRe); - var column = 0; - - return { - value: tag, - match: match ? match[2] : "", - closing: match ? !!match[3] : false, - selfClosing: match ? !!match[5] || match[2] == "/>" : false, - tagName: match ? match[4] : "", - column: match[1] ? column + match[1].length : column - }; - }; - this._readTagForward = function(iterator) { - var token = iterator.getCurrentToken(); - if (!token) - return null; - - var value = ""; - var start; - - do { - if (token.type.lastIndexOf("meta.tag", 0) === 0) { - if (!start) { - var start = { - row: iterator.getCurrentTokenRow(), - column: iterator.getCurrentTokenColumn() - }; - } - value += token.value; - if (value.indexOf(">") !== -1) { - var tag = this._parseTag(value); - tag.start = start; - tag.end = { - row: iterator.getCurrentTokenRow(), - column: iterator.getCurrentTokenColumn() + token.value.length - }; - iterator.stepForward(); - return tag; - } - } - } while(token = iterator.stepForward()); - - return null; - }; - - this._readTagBackward = function(iterator) { - var token = iterator.getCurrentToken(); - if (!token) - return null; - - var value = ""; - var end; - - do { - if (token.type.lastIndexOf("meta.tag", 0) === 0) { - if (!end) { - end = { - row: iterator.getCurrentTokenRow(), - column: iterator.getCurrentTokenColumn() + token.value.length - }; - } - value = token.value + value; - if (value.indexOf("<") !== -1) { - var tag = this._parseTag(value); - tag.end = end; - tag.start = { - row: iterator.getCurrentTokenRow(), - column: iterator.getCurrentTokenColumn() - }; - iterator.stepBackward(); - return tag; - } - } - } while(token = iterator.stepBackward()); - - return null; - }; - - this._pop = function(stack, tag) { - while (stack.length) { - - var top = stack[stack.length-1]; - if (!tag || top.tagName == tag.tagName) { - return stack.pop(); - } - else if (this.voidElements[tag.tagName]) { - return; - } - else if (this.voidElements[top.tagName]) { - stack.pop(); - continue; - } else { - return null; - } - } - }; - - this.getFoldWidgetRange = function(session, foldStyle, row) { - var firstTag = this._getFirstTagInLine(session, row); - - if (!firstTag.match) - return null; - - var isBackward = firstTag.closing || firstTag.selfClosing; - var stack = []; - var tag; - - if (!isBackward) { - var iterator = new TokenIterator(session, row, firstTag.column); - var start = { - row: row, - column: firstTag.column + firstTag.tagName.length + 2 - }; - while (tag = this._readTagForward(iterator)) { - if (tag.selfClosing) { - if (!stack.length) { - tag.start.column += tag.tagName.length + 2; - tag.end.column -= 2; - return Range.fromPoints(tag.start, tag.end); - } else - continue; - } - - if (tag.closing) { - this._pop(stack, tag); - if (stack.length == 0) - return Range.fromPoints(start, tag.start); - } - else { - stack.push(tag) - } - } - } - else { - var iterator = new TokenIterator(session, row, firstTag.column + firstTag.match.length); - var end = { - row: row, - column: firstTag.column - }; - - while (tag = this._readTagBackward(iterator)) { - if (tag.selfClosing) { - if (!stack.length) { - tag.start.column += tag.tagName.length + 2; - tag.end.column -= 2; - return Range.fromPoints(tag.start, tag.end); - } else - continue; - } - - if (!tag.closing) { - this._pop(stack, tag); - if (stack.length == 0) { - tag.start.column += tag.tagName.length + 2; - return Range.fromPoints(tag.start, end); - } - } - else { - stack.push(tag) - } - } - } - - }; - -}).call(FoldMode.prototype); - -}); - -ace.define('ace/mode/html_completions', ['require', 'exports', 'module' , 'ace/token_iterator'], function(require, exports, module) { - - -var TokenIterator = require("../token_iterator").TokenIterator; - -var commonAttributes = [ - "accesskey", - "class", - "contenteditable", - "contextmenu", - "dir", - "draggable", - "dropzone", - "hidden", - "id", - "lang", - "spellcheck", - "style", - "tabindex", - "title", - "translate" -]; - -var eventAttributes = [ - "onabort", - "onblur", - "oncancel", - "oncanplay", - "oncanplaythrough", - "onchange", - "onclick", - "onclose", - "oncontextmenu", - "oncuechange", - "ondblclick", - "ondrag", - "ondragend", - "ondragenter", - "ondragleave", - "ondragover", - "ondragstart", - "ondrop", - "ondurationchange", - "onemptied", - "onended", - "onerror", - "onfocus", - "oninput", - "oninvalid", - "onkeydown", - "onkeypress", - "onkeyup", - "onload", - "onloadeddata", - "onloadedmetadata", - "onloadstart", - "onmousedown", - "onmousemove", - "onmouseout", - "onmouseover", - "onmouseup", - "onmousewheel", - "onpause", - "onplay", - "onplaying", - "onprogress", - "onratechange", - "onreset", - "onscroll", - "onseeked", - "onseeking", - "onselect", - "onshow", - "onstalled", - "onsubmit", - "onsuspend", - "ontimeupdate", - "onvolumechange", - "onwaiting" -]; - -var globalAttributes = commonAttributes.concat(eventAttributes); - -var attributeMap = { - "html": ["manifest"], - "head": [], - "title": [], - "base": ["href", "target"], - "link": ["href", "hreflang", "rel", "media", "type", "sizes"], - "meta": ["http-equiv", "name", "content", "charset"], - "style": ["type", "media", "scoped"], - "script": ["charset", "type", "src", "defer", "async"], - "noscript": ["href"], - "body": ["onafterprint", "onbeforeprint", "onbeforeunload", "onhashchange", "onmessage", "onoffline", "onpopstate", "onredo", "onresize", "onstorage", "onundo", "onunload"], - "section": [], - "nav": [], - "article": ["pubdate"], - "aside": [], - "h1": [], - "h2": [], - "h3": [], - "h4": [], - "h5": [], - "h6": [], - "header": [], - "footer": [], - "address": [], - "main": [], - "p": [], - "hr": [], - "pre": [], - "blockquote": ["cite"], - "ol": ["start", "reversed"], - "ul": [], - "li": ["value"], - "dl": [], - "dt": [], - "dd": [], - "figure": [], - "figcaption": [], - "div": [], - "a": ["href", "target", "ping", "rel", "media", "hreflang", "type"], - "em": [], - "strong": [], - "small": [], - "s": [], - "cite": [], - "q": ["cite"], - "dfn": [], - "abbr": [], - "data": [], - "time": ["datetime"], - "code": [], - "var": [], - "samp": [], - "kbd": [], - "sub": [], - "sup": [], - "i": [], - "b": [], - "u": [], - "mark": [], - "ruby": [], - "rt": [], - "rp": [], - "bdi": [], - "bdo": [], - "span": [], - "br": [], - "wbr": [], - "ins": ["cite", "datetime"], - "del": ["cite", "datetime"], - "img": ["alt", "src", "height", "width", "usemap", "ismap"], - "iframe": ["name", "src", "height", "width", "sandbox", "seamless"], - "embed": ["src", "height", "width", "type"], - "object": ["param", "data", "type", "height" , "width", "usemap", "name", "form", "classid"], - "param": ["name", "value"], - "video": ["src", "autobuffer", "autoplay", "loop", "controls", "width", "height", "poster"], - "audio": ["src", "autobuffer", "autoplay", "loop", "controls"], - "source": ["src", "type", "media"], - "track": ["kind", "src", "srclang", "label", "default"], - "canvas": ["width", "height"], - "map": ["name"], - "area": ["shape", "coords", "href", "hreflang", "alt", "target", "media", "rel", "ping", "type"], - "svg": [], - "math": [], - "table": ["summary"], - "caption": [], - "colgroup": ["span"], - "col": ["span"], - "tbody": [], - "thead": [], - "tfoot": [], - "tr": [], - "td": ["headers", "rowspan", "colspan"], - "th": ["headers", "rowspan", "colspan", "scope"], - "form": ["accept-charset", "action", "autocomplete", "enctype", "method", "name", "novalidate", "target"], - "fieldset": ["disabled", "form", "name"], - "legend": [], - "label": ["form", "for"], - "input": ["type", "accept", "alt", "autocomplete", "checked", "disabled", "form", "formaction", "formenctype", "formmethod", "formnovalidate", "formtarget", "height", "list", "max", "maxlength", "min", "multiple", "pattern", "placeholder", "readonly", "required", "size", "src", "step", "width", "files", "value"], - "button": ["autofocus", "disabled", "form", "formaction", "formenctype", "formmethod", "formnovalidate", "formtarget", "name", "value", "type"], - "select": ["autofocus", "disabled", "form", "multiple", "name", "size"], - "datalist": [], - "optgroup": ["disabled", "label"], - "option": ["disabled", "selected", "label", "value"], - "textarea": ["autofocus", "disabled", "form", "maxlength", "name", "placeholder", "readonly", "required", "rows", "cols", "wrap"], - "keygen": ["autofocus", "challenge", "disabled", "form", "keytype", "name"], - "output": ["for", "form", "name"], - "progress": ["value", "max"], - "meter": ["value", "min", "max", "low", "high", "optimum"], - "details": ["open"], - "summary": [], - "command": ["type", "label", "icon", "disabled", "checked", "radiogroup", "command"], - "menu": ["type", "label"], - "dialog": ["open"] -}; - -var allElements = Object.keys(attributeMap); - -function hasType(token, type) { - var tokenTypes = token.type.split('.'); - return type.split('.').every(function(type){ - return (tokenTypes.indexOf(type) !== -1); - }); -} - -function findTagName(session, pos) { - var iterator = new TokenIterator(session, pos.row, pos.column); - var token = iterator.getCurrentToken(); - if (!token || !hasType(token, 'tag') && !(hasType(token, 'text') && token.value.match('/'))){ - do { - token = iterator.stepBackward(); - } while (token && (hasType(token, 'string') || hasType(token, 'operator') || hasType(token, 'attribute-name') || hasType(token, 'text'))); - } - if (token && hasType(token, 'tag-name') && !iterator.stepBackward().value.match('/')) - return token.value; -} - -var HtmlCompletions = function() { - -}; - -(function() { - - this.getCompletions = function(state, session, pos, prefix) { - var token = session.getTokenAt(pos.row, pos.column); - - if (!token) - return []; - if (hasType(token, "tag-name") || (token.value == '<' && hasType(token, "text"))) - return this.getTagCompletions(state, session, pos, prefix); - if (hasType(token, 'text') || hasType(token, 'attribute-name')) - return this.getAttributeCompetions(state, session, pos, prefix); - - return []; - }; - - this.getTagCompletions = function(state, session, pos, prefix) { - var elements = allElements; - if (prefix) { - elements = elements.filter(function(element){ - return element.indexOf(prefix) === 0; - }); - } - return elements.map(function(element){ - return { - value: element, - meta: "tag" - }; - }); - }; - - this.getAttributeCompetions = function(state, session, pos, prefix) { - var tagName = findTagName(session, pos); - if (!tagName) - return []; - var attributes = globalAttributes; - if (tagName in attributeMap) { - attributes = attributes.concat(attributeMap[tagName]); - } - if (prefix) { - attributes = attributes.filter(function(attribute){ - return attribute.indexOf(prefix) === 0; - }); - } - return attributes.map(function(attribute){ - return { - caption: attribute, - snippet: attribute + '="$0"', - meta: "attribute" - }; - }); - }; - -}).call(HtmlCompletions.prototype); - -exports.HtmlCompletions = HtmlCompletions; -}); - -ace.define('ace/mode/ruby', ['require', 'exports', 'module' , 'ace/lib/oop', 'ace/mode/text', 'ace/tokenizer', 'ace/mode/ruby_highlight_rules', 'ace/mode/matching_brace_outdent', 'ace/range', 'ace/mode/folding/coffee'], function(require, exports, module) { - - -var oop = require("../lib/oop"); -var TextMode = require("./text").Mode; -var Tokenizer = require("../tokenizer").Tokenizer; -var RubyHighlightRules = require("./ruby_highlight_rules").RubyHighlightRules; -var MatchingBraceOutdent = require("./matching_brace_outdent").MatchingBraceOutdent; -var Range = require("../range").Range; -var FoldMode = require("./folding/coffee").FoldMode; - -var Mode = function() { - this.HighlightRules = RubyHighlightRules; - this.$outdent = new MatchingBraceOutdent(); - this.foldingRules = new FoldMode(); -}; -oop.inherits(Mode, TextMode); - -(function() { - - - this.lineCommentStart = "#"; - - this.getNextLineIndent = function(state, line, tab) { - var indent = this.$getIndent(line); - - var tokenizedLine = this.getTokenizer().getLineTokens(line, state); - var tokens = tokenizedLine.tokens; - - if (tokens.length && tokens[tokens.length-1].type == "comment") { - return indent; - } - - if (state == "start") { - var match = line.match(/^.*[\{\(\[]\s*$/); - var startingClassOrMethod = line.match(/^\s*(class|def)\s.*$/); - var startingDoBlock = line.match(/.*do(\s*|\s+\|.*\|\s*)$/); - var startingConditional = line.match(/^\s*(if|else)\s*/) - if (match || startingClassOrMethod || startingDoBlock || startingConditional) { - indent += tab; - } - } - - return indent; - }; - - this.checkOutdent = function(state, line, input) { - return /^\s+end$/.test(line + input) || /^\s+}$/.test(line + input) || /^\s+else$/.test(line + input); - }; - - this.autoOutdent = function(state, doc, row) { - var indent = this.$getIndent(doc.getLine(row)); - var tab = doc.getTabString(); - if (indent.slice(-tab.length) == tab) - doc.remove(new Range(row, indent.length-tab.length, row, indent.length)); - }; - - this.$id = "ace/mode/ruby"; -}).call(Mode.prototype); - -exports.Mode = Mode; -}); - -ace.define('ace/mode/folding/coffee', ['require', 'exports', 'module' , 'ace/lib/oop', 'ace/mode/folding/fold_mode', 'ace/range'], function(require, exports, module) { - - -var oop = require("../../lib/oop"); -var BaseFoldMode = require("./fold_mode").FoldMode; -var Range = require("../../range").Range; - -var FoldMode = exports.FoldMode = function() {}; -oop.inherits(FoldMode, BaseFoldMode); - -(function() { - - this.getFoldWidgetRange = function(session, foldStyle, row) { - var range = this.indentationBlock(session, row); - if (range) - return range; - - var re = /\S/; - var line = session.getLine(row); - var startLevel = line.search(re); - if (startLevel == -1 || line[startLevel] != "#") - return; - - var startColumn = line.length; - var maxRow = session.getLength(); - var startRow = row; - var endRow = row; - - while (++row < maxRow) { - line = session.getLine(row); - var level = line.search(re); - - if (level == -1) - continue; - - if (line[level] != "#") - break; - - endRow = row; - } - - if (endRow > startRow) { - var endColumn = session.getLine(endRow).length; - return new Range(startRow, startColumn, endRow, endColumn); - } - }; - this.getFoldWidget = function(session, foldStyle, row) { - var line = session.getLine(row); - var indent = line.search(/\S/); - var next = session.getLine(row + 1); - var prev = session.getLine(row - 1); - var prevIndent = prev.search(/\S/); - var nextIndent = next.search(/\S/); - - if (indent == -1) { - session.foldWidgets[row - 1] = prevIndent!= -1 && prevIndent < nextIndent ? "start" : ""; - return ""; - } - if (prevIndent == -1) { - if (indent == nextIndent && line[indent] == "#" && next[indent] == "#") { - session.foldWidgets[row - 1] = ""; - session.foldWidgets[row + 1] = ""; - return "start"; - } - } else if (prevIndent == indent && line[indent] == "#" && prev[indent] == "#") { - if (session.getLine(row - 2).search(/\S/) == -1) { - session.foldWidgets[row - 1] = "start"; - session.foldWidgets[row + 1] = ""; - return ""; - } - } - - if (prevIndent!= -1 && prevIndent < indent) - session.foldWidgets[row - 1] = "start"; - else - session.foldWidgets[row - 1] = ""; - - if (indent < nextIndent) - return "start"; - else - return ""; - }; - -}).call(FoldMode.prototype); - -}); diff --git a/IDE/jsrealb-ide/ace-src-noconflict/mode-ini.js b/IDE/jsrealb-ide/ace-src-noconflict/mode-ini.js deleted file mode 100644 index e1493cbb..00000000 --- a/IDE/jsrealb-ide/ace-src-noconflict/mode-ini.js +++ /dev/null @@ -1,185 +0,0 @@ -/* ***** BEGIN LICENSE BLOCK ***** - * Distributed under the BSD license: - * - * Copyright (c) 2012, Ajax.org B.V. - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are met: - * * Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * * Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * * Neither the name of Ajax.org B.V. nor the - * names of its contributors may be used to endorse or promote products - * derived from this software without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND - * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED - * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE - * DISCLAIMED. IN NO EVENT SHALL AJAX.ORG B.V. BE LIABLE FOR ANY - * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES - * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; - * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND - * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - * - * ***** END LICENSE BLOCK ***** */ - -ace.define('ace/mode/ini', ['require', 'exports', 'module' , 'ace/lib/oop', 'ace/mode/text', 'ace/tokenizer', 'ace/mode/ini_highlight_rules', 'ace/mode/folding/ini'], function(require, exports, module) { - - -var oop = require("../lib/oop"); -var TextMode = require("./text").Mode; -var Tokenizer = require("../tokenizer").Tokenizer; -var IniHighlightRules = require("./ini_highlight_rules").IniHighlightRules; -var FoldMode = require("./folding/ini").FoldMode; - -var Mode = function() { - this.HighlightRules = IniHighlightRules; - this.foldingRules = new FoldMode(); -}; -oop.inherits(Mode, TextMode); - -(function() { - this.lineCommentStart = ";"; - this.blockComment = {start: "/*", end: "*/"}; - this.$id = "ace/mode/ini"; -}).call(Mode.prototype); - -exports.Mode = Mode; -}); - -ace.define('ace/mode/ini_highlight_rules', ['require', 'exports', 'module' , 'ace/lib/oop', 'ace/mode/text_highlight_rules'], function(require, exports, module) { - - -var oop = require("../lib/oop"); -var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; - -var escapeRe = "\\\\(?:[\\\\0abtrn;#=:]|x[a-fA-F\\d]{4})"; - -var IniHighlightRules = function() { - this.$rules = { - start: [{ - token: 'punctuation.definition.comment.ini', - regex: '#.*', - push_: [{ - token: 'comment.line.number-sign.ini', - regex: '$|^', - next: 'pop' - }, { - defaultToken: 'comment.line.number-sign.ini' - }] - }, { - token: 'punctuation.definition.comment.ini', - regex: ';.*', - push_: [{ - token: 'comment.line.semicolon.ini', - regex: '$|^', - next: 'pop' - }, { - defaultToken: 'comment.line.semicolon.ini' - }] - }, { - token: ['keyword.other.definition.ini', 'text', 'punctuation.separator.key-value.ini'], - regex: '\\b([a-zA-Z0-9_.-]+)\\b(\\s*)(=)' - }, { - token: ['punctuation.definition.entity.ini', 'constant.section.group-title.ini', 'punctuation.definition.entity.ini'], - regex: '^(\\[)(.*?)(\\])' - }, { - token: 'punctuation.definition.string.begin.ini', - regex: "'", - push: [{ - token: 'punctuation.definition.string.end.ini', - regex: "'", - next: 'pop' - }, { - token: "constant.language.escape", - regex: escapeRe - }, { - defaultToken: 'string.quoted.single.ini' - }] - }, { - token: 'punctuation.definition.string.begin.ini', - regex: '"', - push: [{ - token: "constant.language.escape", - regex: escapeRe - }, { - token: 'punctuation.definition.string.end.ini', - regex: '"', - next: 'pop' - }, { - defaultToken: 'string.quoted.double.ini' - }] - }] - }; - - this.normalizeRules(); -}; - -IniHighlightRules.metaData = { - fileTypes: ['ini', 'conf'], - keyEquivalent: '^~I', - name: 'Ini', - scopeName: 'source.ini' -}; - - -oop.inherits(IniHighlightRules, TextHighlightRules); - -exports.IniHighlightRules = IniHighlightRules; -}); - -ace.define('ace/mode/folding/ini', ['require', 'exports', 'module' , 'ace/lib/oop', 'ace/range', 'ace/mode/folding/fold_mode'], function(require, exports, module) { - - -var oop = require("../../lib/oop"); -var Range = require("../../range").Range; -var BaseFoldMode = require("./fold_mode").FoldMode; - -var FoldMode = exports.FoldMode = function() { -}; -oop.inherits(FoldMode, BaseFoldMode); - -(function() { - - this.foldingStartMarker = /^\s*\[([^\])]*)]\s*(?:$|[;#])/; - - this.getFoldWidgetRange = function(session, foldStyle, row) { - var re = this.foldingStartMarker; - var line = session.getLine(row); - - var m = line.match(re); - - if (!m) return; - - var startName = m[1] + "."; - - var startColumn = line.length; - var maxRow = session.getLength(); - var startRow = row; - var endRow = row; - - while (++row < maxRow) { - line = session.getLine(row); - if (/^\s*$/.test(line)) - continue; - m = line.match(re); - if (m && m[1].lastIndexOf(startName, 0) !== 0) - break; - - endRow = row; - } - - if (endRow > startRow) { - var endColumn = session.getLine(endRow).length; - return new Range(startRow, startColumn, endRow, endColumn); - } - }; - -}).call(FoldMode.prototype); - -}); diff --git a/IDE/jsrealb-ide/ace-src-noconflict/mode-jack.js b/IDE/jsrealb-ide/ace-src-noconflict/mode-jack.js deleted file mode 100644 index d5987f33..00000000 --- a/IDE/jsrealb-ide/ace-src-noconflict/mode-jack.js +++ /dev/null @@ -1,653 +0,0 @@ -/* ***** BEGIN LICENSE BLOCK ***** - * Distributed under the BSD license: - * - * Copyright (c) 2010, Ajax.org B.V. - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are met: - * * Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * * Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * * Neither the name of Ajax.org B.V. nor the - * names of its contributors may be used to endorse or promote products - * derived from this software without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND - * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED - * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE - * DISCLAIMED. IN NO EVENT SHALL AJAX.ORG B.V. BE LIABLE FOR ANY - * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES - * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; - * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND - * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - * - * ***** END LICENSE BLOCK ***** */ - -ace.define('ace/mode/jack', ['require', 'exports', 'module' , 'ace/lib/oop', 'ace/mode/text', 'ace/tokenizer', 'ace/mode/jack_highlight_rules', 'ace/mode/matching_brace_outdent', 'ace/mode/behaviour/cstyle', 'ace/mode/folding/cstyle'], function(require, exports, module) { - - -var oop = require("../lib/oop"); -var TextMode = require("./text").Mode; -var Tokenizer = require("../tokenizer").Tokenizer; -var HighlightRules = require("./jack_highlight_rules").JackHighlightRules; -var MatchingBraceOutdent = require("./matching_brace_outdent").MatchingBraceOutdent; -var CstyleBehaviour = require("./behaviour/cstyle").CstyleBehaviour; -var CStyleFoldMode = require("./folding/cstyle").FoldMode; - -var Mode = function() { - this.HighlightRules = HighlightRules; - this.$outdent = new MatchingBraceOutdent(); - this.$behaviour = new CstyleBehaviour(); - this.foldingRules = new CStyleFoldMode(); -}; -oop.inherits(Mode, TextMode); - -(function() { - - this.lineCommentStart = "--"; - - this.getNextLineIndent = function(state, line, tab) { - var indent = this.$getIndent(line); - - if (state == "start") { - var match = line.match(/^.*[\{\(\[]\s*$/); - if (match) { - indent += tab; - } - } - - return indent; - }; - - this.checkOutdent = function(state, line, input) { - return this.$outdent.checkOutdent(line, input); - }; - - this.autoOutdent = function(state, doc, row) { - this.$outdent.autoOutdent(doc, row); - }; - - - this.$id = "ace/mode/jack"; -}).call(Mode.prototype); - -exports.Mode = Mode; -}); - -ace.define('ace/mode/jack_highlight_rules', ['require', 'exports', 'module' , 'ace/lib/oop', 'ace/mode/text_highlight_rules'], function(require, exports, module) { - - -var oop = require("../lib/oop"); -var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; - -var JackHighlightRules = function() { - this.$rules = { - "start" : [ - { - token : "string", - regex : '"', - next : "string2" - }, { - token : "string", - regex : "'", - next : "string1" - }, { - token : "constant.numeric", // hex - regex: "-?0[xX][0-9a-fA-F]+\\b" - }, { - token : "constant.numeric", // float - regex : "(?:0|[-+]?[1-9][0-9]*)\\b" - }, { - token : "constant.binary", - regex : "<[0-9A-Fa-f][0-9A-Fa-f](\\s+[0-9A-Fa-f][0-9A-Fa-f])*>" - }, { - token : "constant.language.boolean", - regex : "(?:true|false)\\b" - }, { - token : "constant.language.null", - regex : "null\\b" - }, { - token : "storage.type", - regex: "(?:Integer|Boolean|Null|String|Buffer|Tuple|List|Object|Function|Coroutine|Form)\\b" - }, { - token : "keyword", - regex : "(?:return|abort|vars|for|delete|in|is|escape|exec|split|and|if|elif|else|while)\\b" - }, { - token : "language.builtin", - regex : "(?:lines|source|parse|read-stream|interval|substr|parseint|write|print|range|rand|inspect|bind|i-values|i-pairs|i-map|i-filter|i-chunk|i-all\\?|i-any\\?|i-collect|i-zip|i-merge|i-each)\\b" - }, { - token : "comment", - regex : "--.*$" - }, { - token : "paren.lparen", - regex : "[[({]" - }, { - token : "paren.rparen", - regex : "[\\])}]" - }, { - token : "storage.form", - regex : "@[a-z]+" - }, { - token : "constant.other.symbol", - regex : ':+[a-zA-Z_]([-]?[a-zA-Z0-9_])*[?!]?' - }, { - token : "variable", - regex : '[a-zA-Z_]([-]?[a-zA-Z0-9_])*[?!]?' - }, { - token : "keyword.operator", - regex : "\\|\\||\\^\\^|&&|!=|==|<=|<|>=|>|\\+|-|\\*|\\/|\\^|\\%|\\#|\\!" - }, { - token : "text", - regex : "\\s+" - } - ], - "string1" : [ - { - token : "constant.language.escape", - regex : /\\(?:x[0-9a-fA-F]{2}|u[0-9a-fA-F]{4}|['"\\\/bfnrt])/ - }, { - token : "string", - regex : "[^'\\\\]+" - }, { - token : "string", - regex : "'", - next : "start" - }, { - token : "string", - regex : "", - next : "start" - } - ], - "string2" : [ - { - token : "constant.language.escape", - regex : /\\(?:x[0-9a-fA-F]{2}|u[0-9a-fA-F]{4}|['"\\\/bfnrt])/ - }, { - token : "string", - regex : '[^"\\\\]+' - }, { - token : "string", - regex : '"', - next : "start" - }, { - token : "string", - regex : "", - next : "start" - } - ] - }; - -}; - -oop.inherits(JackHighlightRules, TextHighlightRules); - -exports.JackHighlightRules = JackHighlightRules; -}); - -ace.define('ace/mode/matching_brace_outdent', ['require', 'exports', 'module' , 'ace/range'], function(require, exports, module) { - - -var Range = require("../range").Range; - -var MatchingBraceOutdent = function() {}; - -(function() { - - this.checkOutdent = function(line, input) { - if (! /^\s+$/.test(line)) - return false; - - return /^\s*\}/.test(input); - }; - - this.autoOutdent = function(doc, row) { - var line = doc.getLine(row); - var match = line.match(/^(\s*\})/); - - if (!match) return 0; - - var column = match[1].length; - var openBracePos = doc.findMatchingBracket({row: row, column: column}); - - if (!openBracePos || openBracePos.row == row) return 0; - - var indent = this.$getIndent(doc.getLine(openBracePos.row)); - doc.replace(new Range(row, 0, row, column-1), indent); - }; - - this.$getIndent = function(line) { - return line.match(/^\s*/)[0]; - }; - -}).call(MatchingBraceOutdent.prototype); - -exports.MatchingBraceOutdent = MatchingBraceOutdent; -}); - -ace.define('ace/mode/behaviour/cstyle', ['require', 'exports', 'module' , 'ace/lib/oop', 'ace/mode/behaviour', 'ace/token_iterator', 'ace/lib/lang'], function(require, exports, module) { - - -var oop = require("../../lib/oop"); -var Behaviour = require("../behaviour").Behaviour; -var TokenIterator = require("../../token_iterator").TokenIterator; -var lang = require("../../lib/lang"); - -var SAFE_INSERT_IN_TOKENS = - ["text", "paren.rparen", "punctuation.operator"]; -var SAFE_INSERT_BEFORE_TOKENS = - ["text", "paren.rparen", "punctuation.operator", "comment"]; - - -var autoInsertedBrackets = 0; -var autoInsertedRow = -1; -var autoInsertedLineEnd = ""; -var maybeInsertedBrackets = 0; -var maybeInsertedRow = -1; -var maybeInsertedLineStart = ""; -var maybeInsertedLineEnd = ""; - -var CstyleBehaviour = function () { - - CstyleBehaviour.isSaneInsertion = function(editor, session) { - var cursor = editor.getCursorPosition(); - var iterator = new TokenIterator(session, cursor.row, cursor.column); - if (!this.$matchTokenType(iterator.getCurrentToken() || "text", SAFE_INSERT_IN_TOKENS)) { - var iterator2 = new TokenIterator(session, cursor.row, cursor.column + 1); - if (!this.$matchTokenType(iterator2.getCurrentToken() || "text", SAFE_INSERT_IN_TOKENS)) - return false; - } - iterator.stepForward(); - return iterator.getCurrentTokenRow() !== cursor.row || - this.$matchTokenType(iterator.getCurrentToken() || "text", SAFE_INSERT_BEFORE_TOKENS); - }; - - CstyleBehaviour.$matchTokenType = function(token, types) { - return types.indexOf(token.type || token) > -1; - }; - - CstyleBehaviour.recordAutoInsert = function(editor, session, bracket) { - var cursor = editor.getCursorPosition(); - var line = session.doc.getLine(cursor.row); - if (!this.isAutoInsertedClosing(cursor, line, autoInsertedLineEnd[0])) - autoInsertedBrackets = 0; - autoInsertedRow = cursor.row; - autoInsertedLineEnd = bracket + line.substr(cursor.column); - autoInsertedBrackets++; - }; - - CstyleBehaviour.recordMaybeInsert = function(editor, session, bracket) { - var cursor = editor.getCursorPosition(); - var line = session.doc.getLine(cursor.row); - if (!this.isMaybeInsertedClosing(cursor, line)) - maybeInsertedBrackets = 0; - maybeInsertedRow = cursor.row; - maybeInsertedLineStart = line.substr(0, cursor.column) + bracket; - maybeInsertedLineEnd = line.substr(cursor.column); - maybeInsertedBrackets++; - }; - - CstyleBehaviour.isAutoInsertedClosing = function(cursor, line, bracket) { - return autoInsertedBrackets > 0 && - cursor.row === autoInsertedRow && - bracket === autoInsertedLineEnd[0] && - line.substr(cursor.column) === autoInsertedLineEnd; - }; - - CstyleBehaviour.isMaybeInsertedClosing = function(cursor, line) { - return maybeInsertedBrackets > 0 && - cursor.row === maybeInsertedRow && - line.substr(cursor.column) === maybeInsertedLineEnd && - line.substr(0, cursor.column) == maybeInsertedLineStart; - }; - - CstyleBehaviour.popAutoInsertedClosing = function() { - autoInsertedLineEnd = autoInsertedLineEnd.substr(1); - autoInsertedBrackets--; - }; - - CstyleBehaviour.clearMaybeInsertedClosing = function() { - maybeInsertedBrackets = 0; - maybeInsertedRow = -1; - }; - - this.add("braces", "insertion", function (state, action, editor, session, text) { - var cursor = editor.getCursorPosition(); - var line = session.doc.getLine(cursor.row); - if (text == '{') { - var selection = editor.getSelectionRange(); - var selected = session.doc.getTextRange(selection); - if (selected !== "" && selected !== "{" && editor.getWrapBehavioursEnabled()) { - return { - text: '{' + selected + '}', - selection: false - }; - } else if (CstyleBehaviour.isSaneInsertion(editor, session)) { - if (/[\]\}\)]/.test(line[cursor.column]) || editor.inMultiSelectMode) { - CstyleBehaviour.recordAutoInsert(editor, session, "}"); - return { - text: '{}', - selection: [1, 1] - }; - } else { - CstyleBehaviour.recordMaybeInsert(editor, session, "{"); - return { - text: '{', - selection: [1, 1] - }; - } - } - } else if (text == '}') { - var rightChar = line.substring(cursor.column, cursor.column + 1); - if (rightChar == '}') { - var matching = session.$findOpeningBracket('}', {column: cursor.column + 1, row: cursor.row}); - if (matching !== null && CstyleBehaviour.isAutoInsertedClosing(cursor, line, text)) { - CstyleBehaviour.popAutoInsertedClosing(); - return { - text: '', - selection: [1, 1] - }; - } - } - } else if (text == "\n" || text == "\r\n") { - var closing = ""; - if (CstyleBehaviour.isMaybeInsertedClosing(cursor, line)) { - closing = lang.stringRepeat("}", maybeInsertedBrackets); - CstyleBehaviour.clearMaybeInsertedClosing(); - } - var rightChar = line.substring(cursor.column, cursor.column + 1); - if (rightChar === '}') { - var openBracePos = session.findMatchingBracket({row: cursor.row, column: cursor.column+1}, '}'); - if (!openBracePos) - return null; - var next_indent = this.$getIndent(session.getLine(openBracePos.row)); - } else if (closing) { - var next_indent = this.$getIndent(line); - } else { - return; - } - var indent = next_indent + session.getTabString(); - - return { - text: '\n' + indent + '\n' + next_indent + closing, - selection: [1, indent.length, 1, indent.length] - }; - } else { - CstyleBehaviour.clearMaybeInsertedClosing(); - } - }); - - this.add("braces", "deletion", function (state, action, editor, session, range) { - var selected = session.doc.getTextRange(range); - if (!range.isMultiLine() && selected == '{') { - var line = session.doc.getLine(range.start.row); - var rightChar = line.substring(range.end.column, range.end.column + 1); - if (rightChar == '}') { - range.end.column++; - return range; - } else { - maybeInsertedBrackets--; - } - } - }); - - this.add("parens", "insertion", function (state, action, editor, session, text) { - if (text == '(') { - var selection = editor.getSelectionRange(); - var selected = session.doc.getTextRange(selection); - if (selected !== "" && editor.getWrapBehavioursEnabled()) { - return { - text: '(' + selected + ')', - selection: false - }; - } else if (CstyleBehaviour.isSaneInsertion(editor, session)) { - CstyleBehaviour.recordAutoInsert(editor, session, ")"); - return { - text: '()', - selection: [1, 1] - }; - } - } else if (text == ')') { - var cursor = editor.getCursorPosition(); - var line = session.doc.getLine(cursor.row); - var rightChar = line.substring(cursor.column, cursor.column + 1); - if (rightChar == ')') { - var matching = session.$findOpeningBracket(')', {column: cursor.column + 1, row: cursor.row}); - if (matching !== null && CstyleBehaviour.isAutoInsertedClosing(cursor, line, text)) { - CstyleBehaviour.popAutoInsertedClosing(); - return { - text: '', - selection: [1, 1] - }; - } - } - } - }); - - this.add("parens", "deletion", function (state, action, editor, session, range) { - var selected = session.doc.getTextRange(range); - if (!range.isMultiLine() && selected == '(') { - var line = session.doc.getLine(range.start.row); - var rightChar = line.substring(range.start.column + 1, range.start.column + 2); - if (rightChar == ')') { - range.end.column++; - return range; - } - } - }); - - this.add("brackets", "insertion", function (state, action, editor, session, text) { - if (text == '[') { - var selection = editor.getSelectionRange(); - var selected = session.doc.getTextRange(selection); - if (selected !== "" && editor.getWrapBehavioursEnabled()) { - return { - text: '[' + selected + ']', - selection: false - }; - } else if (CstyleBehaviour.isSaneInsertion(editor, session)) { - CstyleBehaviour.recordAutoInsert(editor, session, "]"); - return { - text: '[]', - selection: [1, 1] - }; - } - } else if (text == ']') { - var cursor = editor.getCursorPosition(); - var line = session.doc.getLine(cursor.row); - var rightChar = line.substring(cursor.column, cursor.column + 1); - if (rightChar == ']') { - var matching = session.$findOpeningBracket(']', {column: cursor.column + 1, row: cursor.row}); - if (matching !== null && CstyleBehaviour.isAutoInsertedClosing(cursor, line, text)) { - CstyleBehaviour.popAutoInsertedClosing(); - return { - text: '', - selection: [1, 1] - }; - } - } - } - }); - - this.add("brackets", "deletion", function (state, action, editor, session, range) { - var selected = session.doc.getTextRange(range); - if (!range.isMultiLine() && selected == '[') { - var line = session.doc.getLine(range.start.row); - var rightChar = line.substring(range.start.column + 1, range.start.column + 2); - if (rightChar == ']') { - range.end.column++; - return range; - } - } - }); - - this.add("string_dquotes", "insertion", function (state, action, editor, session, text) { - if (text == '"' || text == "'") { - var quote = text; - var selection = editor.getSelectionRange(); - var selected = session.doc.getTextRange(selection); - if (selected !== "" && selected !== "'" && selected != '"' && editor.getWrapBehavioursEnabled()) { - return { - text: quote + selected + quote, - selection: false - }; - } else { - var cursor = editor.getCursorPosition(); - var line = session.doc.getLine(cursor.row); - var leftChar = line.substring(cursor.column-1, cursor.column); - if (leftChar == '\\') { - return null; - } - var tokens = session.getTokens(selection.start.row); - var col = 0, token; - var quotepos = -1; // Track whether we're inside an open quote. - - for (var x = 0; x < tokens.length; x++) { - token = tokens[x]; - if (token.type == "string") { - quotepos = -1; - } else if (quotepos < 0) { - quotepos = token.value.indexOf(quote); - } - if ((token.value.length + col) > selection.start.column) { - break; - } - col += tokens[x].value.length; - } - if (!token || (quotepos < 0 && token.type !== "comment" && (token.type !== "string" || ((selection.start.column !== token.value.length+col-1) && token.value.lastIndexOf(quote) === token.value.length-1)))) { - if (!CstyleBehaviour.isSaneInsertion(editor, session)) - return; - return { - text: quote + quote, - selection: [1,1] - }; - } else if (token && token.type === "string") { - var rightChar = line.substring(cursor.column, cursor.column + 1); - if (rightChar == quote) { - return { - text: '', - selection: [1, 1] - }; - } - } - } - } - }); - - this.add("string_dquotes", "deletion", function (state, action, editor, session, range) { - var selected = session.doc.getTextRange(range); - if (!range.isMultiLine() && (selected == '"' || selected == "'")) { - var line = session.doc.getLine(range.start.row); - var rightChar = line.substring(range.start.column + 1, range.start.column + 2); - if (rightChar == selected) { - range.end.column++; - return range; - } - } - }); - -}; - -oop.inherits(CstyleBehaviour, Behaviour); - -exports.CstyleBehaviour = CstyleBehaviour; -}); - -ace.define('ace/mode/folding/cstyle', ['require', 'exports', 'module' , 'ace/lib/oop', 'ace/range', 'ace/mode/folding/fold_mode'], function(require, exports, module) { - - -var oop = require("../../lib/oop"); -var Range = require("../../range").Range; -var BaseFoldMode = require("./fold_mode").FoldMode; - -var FoldMode = exports.FoldMode = function(commentRegex) { - if (commentRegex) { - this.foldingStartMarker = new RegExp( - this.foldingStartMarker.source.replace(/\|[^|]*?$/, "|" + commentRegex.start) - ); - this.foldingStopMarker = new RegExp( - this.foldingStopMarker.source.replace(/\|[^|]*?$/, "|" + commentRegex.end) - ); - } -}; -oop.inherits(FoldMode, BaseFoldMode); - -(function() { - - this.foldingStartMarker = /(\{|\[)[^\}\]]*$|^\s*(\/\*)/; - this.foldingStopMarker = /^[^\[\{]*(\}|\])|^[\s\*]*(\*\/)/; - - this.getFoldWidgetRange = function(session, foldStyle, row, forceMultiline) { - var line = session.getLine(row); - var match = line.match(this.foldingStartMarker); - if (match) { - var i = match.index; - - if (match[1]) - return this.openingBracketBlock(session, match[1], row, i); - - var range = session.getCommentFoldRange(row, i + match[0].length, 1); - - if (range && !range.isMultiLine()) { - if (forceMultiline) { - range = this.getSectionRange(session, row); - } else if (foldStyle != "all") - range = null; - } - - return range; - } - - if (foldStyle === "markbegin") - return; - - var match = line.match(this.foldingStopMarker); - if (match) { - var i = match.index + match[0].length; - - if (match[1]) - return this.closingBracketBlock(session, match[1], row, i); - - return session.getCommentFoldRange(row, i, -1); - } - }; - - this.getSectionRange = function(session, row) { - var line = session.getLine(row); - var startIndent = line.search(/\S/); - var startRow = row; - var startColumn = line.length; - row = row + 1; - var endRow = row; - var maxRow = session.getLength(); - while (++row < maxRow) { - line = session.getLine(row); - var indent = line.search(/\S/); - if (indent === -1) - continue; - if (startIndent > indent) - break; - var subRange = this.getFoldWidgetRange(session, "all", row); - - if (subRange) { - if (subRange.start.row <= startRow) { - break; - } else if (subRange.isMultiLine()) { - row = subRange.end.row; - } else if (startIndent == indent) { - break; - } - } - endRow = row; - } - - return new Range(startRow, startColumn, endRow, session.getLine(endRow).length); - }; - -}).call(FoldMode.prototype); - -}); diff --git a/IDE/jsrealb-ide/ace-src-noconflict/mode-jade.js b/IDE/jsrealb-ide/ace-src-noconflict/mode-jade.js deleted file mode 100644 index 69403a36..00000000 --- a/IDE/jsrealb-ide/ace-src-noconflict/mode-jade.js +++ /dev/null @@ -1,2081 +0,0 @@ -/* ***** BEGIN LICENSE BLOCK ***** - * Distributed under the BSD license: - * - * Copyright (c) 2012, Ajax.org B.V. - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are met: - * * Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * * Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * * Neither the name of Ajax.org B.V. nor the - * names of its contributors may be used to endorse or promote products - * derived from this software without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND - * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED - * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE - * DISCLAIMED. IN NO EVENT SHALL AJAX.ORG B.V. BE LIABLE FOR ANY - * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES - * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; - * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND - * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - * - * - * Contributor(s): - * - * Garen J. Torikian - * - * ***** END LICENSE BLOCK ***** */ - -ace.define('ace/mode/jade', ['require', 'exports', 'module' , 'ace/lib/oop', 'ace/mode/text', 'ace/tokenizer', 'ace/mode/jade_highlight_rules', 'ace/mode/folding/coffee'], function(require, exports, module) { - - -var oop = require("../lib/oop"); -var TextMode = require("./text").Mode; -var Tokenizer = require("../tokenizer").Tokenizer; -var JadeHighlightRules = require("./jade_highlight_rules").JadeHighlightRules; -var FoldMode = require("./folding/coffee").FoldMode; - -var Mode = function() { - this.HighlightRules = JadeHighlightRules; - - this.foldingRules = new FoldMode(); -}; -oop.inherits(Mode, TextMode); - -(function() { - this.lineCommentStart = "//"; - this.$id = "ace/mode/jade"; -}).call(Mode.prototype); - -exports.Mode = Mode; -}); - -ace.define('ace/mode/jade_highlight_rules', ['require', 'exports', 'module' , 'ace/lib/oop', 'ace/mode/text_highlight_rules', 'ace/mode/markdown_highlight_rules', 'ace/mode/scss_highlight_rules', 'ace/mode/less_highlight_rules', 'ace/mode/coffee_highlight_rules', 'ace/mode/javascript_highlight_rules'], function(require, exports, module) { - - -var oop = require("../lib/oop"); -var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; -var MarkdownHighlightRules = require("./markdown_highlight_rules").MarkdownHighlightRules; -var SassHighlightRules = require("./scss_highlight_rules").ScssHighlightRules; -var LessHighlightRules = require("./less_highlight_rules").LessHighlightRules; -var CoffeeHighlightRules = require("./coffee_highlight_rules").CoffeeHighlightRules; -var JavaScriptHighlightRules = require("./javascript_highlight_rules").JavaScriptHighlightRules; - -function mixin_embed(tag, prefix) { - return { - token : "entity.name.function.jade", - regex : "^\\s*\\:" + tag, - next : prefix + "start" - }; -} - -var JadeHighlightRules = function() { - - var escapedRe = "\\\\(?:x[0-9a-fA-F]{2}|" + // hex - "u[0-9a-fA-F]{4}|" + // unicode - "[0-2][0-7]{0,2}|" + // oct - "3[0-6][0-7]?|" + // oct - "37[0-7]?|" + // oct - "[4-7][0-7]?|" + //oct - ".)"; - - this.$rules = - { - "start": [ - { - token: "keyword.control.import.include.jade", - regex: "\\s*\\binclude\\b" - }, - { - token: "keyword.other.doctype.jade", - regex: "^!!!\\s*(?:[a-zA-Z0-9-_]+)?" - }, - { - token : "punctuation.section.comment", - regex : "^\\s*\/\/(?:\\s*[^-\\s]|\\s+\\S)(?:.*$)" - }, - { - onMatch: function(value, currentState, stack) { - stack.unshift(this.next, value.length - 2, currentState); - return "comment"; - }, - regex: /^\s*\/\//, - next: "comment_block" - }, - mixin_embed("markdown", "markdown-"), - mixin_embed("sass", "sass-"), - mixin_embed("less", "less-"), - mixin_embed("coffee", "coffee-"), - { - token: [ "storage.type.function.jade", - "entity.name.function.jade", - "punctuation.definition.parameters.begin.jade", - "variable.parameter.function.jade", - "punctuation.definition.parameters.end.jade" - ], - regex: "^(\\s*mixin)( [\\w\\-]+)(\\s*\\()(.*?)(\\))" - }, - { - token: [ "storage.type.function.jade", "entity.name.function.jade"], - regex: "^(\\s*mixin)( [\\w\\-]+)" - }, - { - token: "source.js.embedded.jade", - regex: "^\\s*(?:-|=|!=)", - next: "js-start" - }, - { - token: "string.interpolated.jade", - regex: "[#!]\\{[^\\}]+\\}" - }, - { - token: "meta.tag.any.jade", - regex: /^\s*(?!\w+\:)(?:[\w]+|(?=\.|#)])/, - next: "tag_single" - }, - { - token: "suport.type.attribute.id.jade", - regex: "#\\w+" - }, - { - token: "suport.type.attribute.class.jade", - regex: "\\.\\w+" - }, - { - token: "punctuation", - regex: "\\s*(?:\\()", - next: "tag_attributes" - } - ], - "comment_block": [ - {regex: /^\s*/, onMatch: function(value, currentState, stack) { - if (value.length <= stack[1]) { - stack.shift(); - stack.shift(); - this.next = stack.shift(); - return "text"; - } else { - this.next = ""; - return "comment"; - } - }, next: "start"}, - {defaultToken: "comment"} - ], - "tag_single": [ - { - token: "entity.other.attribute-name.class.jade", - regex: "\\.[\\w-]+" - }, - { - token: "entity.other.attribute-name.id.jade", - regex: "#[\\w-]+" - }, - { - token: ["text", "punctuation"], - regex: "($)|((?!\\.|#|=|-))", - next: "start" - } - ], - "tag_attributes": [ - { - token : "string", - regex : "'(?=.)", - next : "qstring" - }, - { - token : "string", - regex : '"(?=.)', - next : "qqstring" - }, - { - token: "entity.other.attribute-name.jade", - regex: "\\b[a-zA-Z\\-:]+" - }, - { - token: ["entity.other.attribute-name.jade", "punctuation"], - regex: "\\b([a-zA-Z:\\.-]+)(=)", - next: "attribute_strings" - }, - { - token: "punctuation", - regex: "\\)", - next: "start" - } - ], - "attribute_strings": [ - { - token : "string", - regex : "'(?=.)", - next : "qstring" - }, - { - token : "string", - regex : '"(?=.)', - next : "qqstring" - } - ], - "qqstring" : [ - { - token : "constant.language.escape", - regex : escapedRe - }, { - token : "string", - regex : '[^"\\\\]+' - }, { - token : "string", - regex : "\\\\$", - next : "qqstring" - }, { - token : "string", - regex : '"|$', - next : "tag_attributes" - } - ], - "qstring" : [ - { - token : "constant.language.escape", - regex : escapedRe - }, { - token : "string", - regex : "[^'\\\\]+" - }, { - token : "string", - regex : "\\\\$", - next : "qstring" - }, { - token : "string", - regex : "'|$", - next : "tag_attributes" - } - ] -}; - - this.embedRules(JavaScriptHighlightRules, "js-", [{ - token: "text", - regex: ".$", - next: "start" - }]); -}; - -oop.inherits(JadeHighlightRules, TextHighlightRules); - -exports.JadeHighlightRules = JadeHighlightRules; -}); - -ace.define('ace/mode/markdown_highlight_rules', ['require', 'exports', 'module' , 'ace/lib/oop', 'ace/lib/lang', 'ace/mode/text_highlight_rules', 'ace/mode/javascript_highlight_rules', 'ace/mode/xml_highlight_rules', 'ace/mode/html_highlight_rules', 'ace/mode/css_highlight_rules'], function(require, exports, module) { - - -var oop = require("../lib/oop"); -var lang = require("../lib/lang"); -var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; -var JavaScriptHighlightRules = require("./javascript_highlight_rules").JavaScriptHighlightRules; -var XmlHighlightRules = require("./xml_highlight_rules").XmlHighlightRules; -var HtmlHighlightRules = require("./html_highlight_rules").HtmlHighlightRules; -var CssHighlightRules = require("./css_highlight_rules").CssHighlightRules; - -var escaped = function(ch) { - return "(?:[^" + lang.escapeRegExp(ch) + "\\\\]|\\\\.)*"; -} - -function github_embed(tag, prefix) { - return { // Github style block - token : "support.function", - regex : "^```" + tag + "\\s*$", - push : prefix + "start" - }; -} - -var MarkdownHighlightRules = function() { - HtmlHighlightRules.call(this); - - this.$rules["start"].unshift({ - token : "empty_line", - regex : '^$', - next: "allowBlock" - }, { // h1 - token: "markup.heading.1", - regex: "^=+(?=\\s*$)" - }, { // h2 - token: "markup.heading.2", - regex: "^\\-+(?=\\s*$)" - }, { - token : function(value) { - return "markup.heading." + value.length; - }, - regex : /^#{1,6}(?=\s*[^ #]|\s+#.)/, - next : "header" - }, - github_embed("(?:javascript|js)", "jscode-"), - github_embed("xml", "xmlcode-"), - github_embed("html", "htmlcode-"), - github_embed("css", "csscode-"), - { // Github style block - token : "support.function", - regex : "^```\\s*[a-zA-Z]*(?:{.*?\\})?\\s*$", - next : "githubblock" - }, { // block quote - token : "string.blockquote", - regex : "^\\s*>\\s*(?:[*+-]|\\d+\\.)?\\s+", - next : "blockquote" - }, { // HR * - _ - token : "constant", - regex : "^ {0,2}(?:(?: ?\\* ?){3,}|(?: ?\\- ?){3,}|(?: ?\\_ ?){3,})\\s*$", - next: "allowBlock" - }, { // list - token : "markup.list", - regex : "^\\s{0,3}(?:[*+-]|\\d+\\.)\\s+", - next : "listblock-start" - }, { - include : "basic" - }); - - this.addRules({ - "basic" : [{ - token : "constant.language.escape", - regex : /\\[\\`*_{}\[\]()#+\-.!]/ - }, { // code span ` - token : "support.function", - regex : "(`+)(.*?[^`])(\\1)" - }, { // reference - token : ["text", "constant", "text", "url", "string", "text"], - regex : "^([ ]{0,3}\\[)([^\\]]+)(\\]:\\s*)([^ ]+)(\\s*(?:[\"][^\"]+[\"])?(\\s*))$" - }, { // link by reference - token : ["text", "string", "text", "constant", "text"], - regex : "(\\[)(" + escaped("]") + ")(\\]\s*\\[)("+ escaped("]") + ")(\\])" - }, { // link by url - token : ["text", "string", "text", "markup.underline", "string", "text"], - regex : "(\\[)(" + // [ - escaped("]") + // link text - ")(\\]\\()"+ // ]( - '((?:[^\\)\\s\\\\]|\\\\.|\\s(?=[^"]))*)' + // href - '(\\s*"' + escaped('"') + '"\\s*)?' + // "title" - "(\\))" // ) - }, { // strong ** __ - token : "string.strong", - regex : "([*]{2}|[_]{2}(?=\\S))(.*?\\S[*_]*)(\\1)" - }, { // emphasis * _ - token : "string.emphasis", - regex : "([*]|[_](?=\\S))(.*?\\S[*_]*)(\\1)" - }, { // - token : ["text", "url", "text"], - regex : "(<)("+ - "(?:https?|ftp|dict):[^'\">\\s]+"+ - "|"+ - "(?:mailto:)?[-.\\w]+\\@[-a-z0-9]+(?:\\.[-a-z0-9]+)*\\.[a-z]+"+ - ")(>)" - }], - "allowBlock": [ - {token : "support.function", regex : "^ {4}.+", next : "allowBlock"}, - {token : "empty", regex : "", next : "start"} - ], - - "header" : [{ - regex: "$", - next : "start" - }, { - include: "basic" - }, { - defaultToken : "heading" - } ], - - "listblock-start" : [{ - token : "support.variable", - regex : /(?:\[[ x]\])?/, - next : "listblock" - }], - - "listblock" : [ { // Lists only escape on completely blank lines. - token : "empty_line", - regex : "^$", - next : "start" - }, { // list - token : "markup.list", - regex : "^\\s{0,3}(?:[*+-]|\\d+\\.)\\s+", - next : "listblock-start" - }, { - include : "basic", noEscape: true - }, { - defaultToken : "list" //do not use markup.list to allow stling leading `*` differntly - } ], - - "blockquote" : [ { // BLockquotes only escape on blank lines. - token : "empty_line", - regex : "^\\s*$", - next : "start" - }, { // block quote - token : "string.blockquote", - regex : "^\\s*>\\s*(?:[*+-]|\\d+\\.)?\\s+", - next : "blockquote" - }, { - include : "basic", noEscape: true - }, { - defaultToken : "string.blockquote" - } ], - - "githubblock" : [ { - token : "support.function", - regex : "^```", - next : "start" - }, { - token : "support.function", - regex : ".+" - } ] - }); - - this.embedRules(JavaScriptHighlightRules, "jscode-", [{ - token : "support.function", - regex : "^```", - next : "pop" - }]); - - this.embedRules(HtmlHighlightRules, "htmlcode-", [{ - token : "support.function", - regex : "^```", - next : "pop" - }]); - - this.embedRules(CssHighlightRules, "csscode-", [{ - token : "support.function", - regex : "^```", - next : "pop" - }]); - - this.embedRules(XmlHighlightRules, "xmlcode-", [{ - token : "support.function", - regex : "^```", - next : "pop" - }]); - - this.normalizeRules(); -}; -oop.inherits(MarkdownHighlightRules, TextHighlightRules); - -exports.MarkdownHighlightRules = MarkdownHighlightRules; -}); - -ace.define('ace/mode/javascript_highlight_rules', ['require', 'exports', 'module' , 'ace/lib/oop', 'ace/mode/doc_comment_highlight_rules', 'ace/mode/text_highlight_rules'], function(require, exports, module) { - - -var oop = require("../lib/oop"); -var DocCommentHighlightRules = require("./doc_comment_highlight_rules").DocCommentHighlightRules; -var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; - -var JavaScriptHighlightRules = function() { - var keywordMapper = this.createKeywordMapper({ - "variable.language": - "Array|Boolean|Date|Function|Iterator|Number|Object|RegExp|String|Proxy|" + // Constructors - "Namespace|QName|XML|XMLList|" + // E4X - "ArrayBuffer|Float32Array|Float64Array|Int16Array|Int32Array|Int8Array|" + - "Uint16Array|Uint32Array|Uint8Array|Uint8ClampedArray|" + - "Error|EvalError|InternalError|RangeError|ReferenceError|StopIteration|" + // Errors - "SyntaxError|TypeError|URIError|" + - "decodeURI|decodeURIComponent|encodeURI|encodeURIComponent|eval|isFinite|" + // Non-constructor functions - "isNaN|parseFloat|parseInt|" + - "JSON|Math|" + // Other - "this|arguments|prototype|window|document" , // Pseudo - "keyword": - "const|yield|import|get|set|" + - "break|case|catch|continue|default|delete|do|else|finally|for|function|" + - "if|in|instanceof|new|return|switch|throw|try|typeof|let|var|while|with|debugger|" + - "__parent__|__count__|escape|unescape|with|__proto__|" + - "class|enum|extends|super|export|implements|private|public|interface|package|protected|static", - "storage.type": - "const|let|var|function", - "constant.language": - "null|Infinity|NaN|undefined", - "support.function": - "alert", - "constant.language.boolean": "true|false" - }, "identifier"); - var kwBeforeRe = "case|do|else|finally|in|instanceof|return|throw|try|typeof|yield|void"; - var identifierRe = "[a-zA-Z\\$_\u00a1-\uffff][a-zA-Z\\d\\$_\u00a1-\uffff]*\\b"; - - var escapedRe = "\\\\(?:x[0-9a-fA-F]{2}|" + // hex - "u[0-9a-fA-F]{4}|" + // unicode - "[0-2][0-7]{0,2}|" + // oct - "3[0-6][0-7]?|" + // oct - "37[0-7]?|" + // oct - "[4-7][0-7]?|" + //oct - ".)"; - - this.$rules = { - "no_regex" : [ - { - token : "comment", - regex : "\\/\\/", - next : "line_comment" - }, - DocCommentHighlightRules.getStartRule("doc-start"), - { - token : "comment", // multi line comment - regex : /\/\*/, - next : "comment" - }, { - token : "string", - regex : "'(?=.)", - next : "qstring" - }, { - token : "string", - regex : '"(?=.)', - next : "qqstring" - }, { - token : "constant.numeric", // hex - regex : /0[xX][0-9a-fA-F]+\b/ - }, { - token : "constant.numeric", // float - regex : /[+-]?\d+(?:(?:\.\d*)?(?:[eE][+-]?\d+)?)?\b/ - }, { - token : [ - "storage.type", "punctuation.operator", "support.function", - "punctuation.operator", "entity.name.function", "text","keyword.operator" - ], - regex : "(" + identifierRe + ")(\\.)(prototype)(\\.)(" + identifierRe +")(\\s*)(=)", - next: "function_arguments" - }, { - token : [ - "storage.type", "punctuation.operator", "entity.name.function", "text", - "keyword.operator", "text", "storage.type", "text", "paren.lparen" - ], - regex : "(" + identifierRe + ")(\\.)(" + identifierRe +")(\\s*)(=)(\\s*)(function)(\\s*)(\\()", - next: "function_arguments" - }, { - token : [ - "entity.name.function", "text", "keyword.operator", "text", "storage.type", - "text", "paren.lparen" - ], - regex : "(" + identifierRe +")(\\s*)(=)(\\s*)(function)(\\s*)(\\()", - next: "function_arguments" - }, { - token : [ - "storage.type", "punctuation.operator", "entity.name.function", "text", - "keyword.operator", "text", - "storage.type", "text", "entity.name.function", "text", "paren.lparen" - ], - regex : "(" + identifierRe + ")(\\.)(" + identifierRe +")(\\s*)(=)(\\s*)(function)(\\s+)(\\w+)(\\s*)(\\()", - next: "function_arguments" - }, { - token : [ - "storage.type", "text", "entity.name.function", "text", "paren.lparen" - ], - regex : "(function)(\\s+)(" + identifierRe + ")(\\s*)(\\()", - next: "function_arguments" - }, { - token : [ - "entity.name.function", "text", "punctuation.operator", - "text", "storage.type", "text", "paren.lparen" - ], - regex : "(" + identifierRe + ")(\\s*)(:)(\\s*)(function)(\\s*)(\\()", - next: "function_arguments" - }, { - token : [ - "text", "text", "storage.type", "text", "paren.lparen" - ], - regex : "(:)(\\s*)(function)(\\s*)(\\()", - next: "function_arguments" - }, { - token : "keyword", - regex : "(?:" + kwBeforeRe + ")\\b", - next : "start" - }, { - token : ["punctuation.operator", "support.function"], - regex : /(\.)(s(?:h(?:ift|ow(?:Mod(?:elessDialog|alDialog)|Help))|croll(?:X|By(?:Pages|Lines)?|Y|To)?|t(?:op|rike)|i(?:n|zeToContent|debar|gnText)|ort|u(?:p|b(?:str(?:ing)?)?)|pli(?:ce|t)|e(?:nd|t(?:Re(?:sizable|questHeader)|M(?:i(?:nutes|lliseconds)|onth)|Seconds|Ho(?:tKeys|urs)|Year|Cursor|Time(?:out)?|Interval|ZOptions|Date|UTC(?:M(?:i(?:nutes|lliseconds)|onth)|Seconds|Hours|Date|FullYear)|FullYear|Active)|arch)|qrt|lice|avePreferences|mall)|h(?:ome|andleEvent)|navigate|c(?:har(?:CodeAt|At)|o(?:s|n(?:cat|textual|firm)|mpile)|eil|lear(?:Timeout|Interval)?|a(?:ptureEvents|ll)|reate(?:StyleSheet|Popup|EventObject))|t(?:o(?:GMTString|S(?:tring|ource)|U(?:TCString|pperCase)|Lo(?:caleString|werCase))|est|a(?:n|int(?:Enabled)?))|i(?:s(?:NaN|Finite)|ndexOf|talics)|d(?:isableExternalCapture|ump|etachEvent)|u(?:n(?:shift|taint|escape|watch)|pdateCommands)|j(?:oin|avaEnabled)|p(?:o(?:p|w)|ush|lugins.refresh|a(?:ddings|rse(?:Int|Float)?)|r(?:int|ompt|eference))|e(?:scape|nableExternalCapture|val|lementFromPoint|x(?:p|ec(?:Script|Command)?))|valueOf|UTC|queryCommand(?:State|Indeterm|Enabled|Value)|f(?:i(?:nd|le(?:ModifiedDate|Size|CreatedDate|UpdatedDate)|xed)|o(?:nt(?:size|color)|rward)|loor|romCharCode)|watch|l(?:ink|o(?:ad|g)|astIndexOf)|a(?:sin|nchor|cos|t(?:tachEvent|ob|an(?:2)?)|pply|lert|b(?:s|ort))|r(?:ou(?:nd|teEvents)|e(?:size(?:By|To)|calc|turnValue|place|verse|l(?:oad|ease(?:Capture|Events)))|andom)|g(?:o|et(?:ResponseHeader|M(?:i(?:nutes|lliseconds)|onth)|Se(?:conds|lection)|Hours|Year|Time(?:zoneOffset)?|Da(?:y|te)|UTC(?:M(?:i(?:nutes|lliseconds)|onth)|Seconds|Hours|Da(?:y|te)|FullYear)|FullYear|A(?:ttention|llResponseHeaders)))|m(?:in|ove(?:B(?:y|elow)|To(?:Absolute)?|Above)|ergeAttributes|a(?:tch|rgins|x))|b(?:toa|ig|o(?:ld|rderWidths)|link|ack))\b(?=\()/ - }, { - token : ["punctuation.operator", "support.function.dom"], - regex : /(\.)(s(?:ub(?:stringData|mit)|plitText|e(?:t(?:NamedItem|Attribute(?:Node)?)|lect))|has(?:ChildNodes|Feature)|namedItem|c(?:l(?:ick|o(?:se|neNode))|reate(?:C(?:omment|DATASection|aption)|T(?:Head|extNode|Foot)|DocumentFragment|ProcessingInstruction|E(?:ntityReference|lement)|Attribute))|tabIndex|i(?:nsert(?:Row|Before|Cell|Data)|tem)|open|delete(?:Row|C(?:ell|aption)|T(?:Head|Foot)|Data)|focus|write(?:ln)?|a(?:dd|ppend(?:Child|Data))|re(?:set|place(?:Child|Data)|move(?:NamedItem|Child|Attribute(?:Node)?)?)|get(?:NamedItem|Element(?:sBy(?:Name|TagName)|ById)|Attribute(?:Node)?)|blur)\b(?=\()/ - }, { - token : ["punctuation.operator", "support.constant"], - regex : /(\.)(s(?:ystemLanguage|cr(?:ipts|ollbars|een(?:X|Y|Top|Left))|t(?:yle(?:Sheets)?|atus(?:Text|bar)?)|ibling(?:Below|Above)|ource|uffixes|e(?:curity(?:Policy)?|l(?:ection|f)))|h(?:istory|ost(?:name)?|as(?:h|Focus))|y|X(?:MLDocument|SLDocument)|n(?:ext|ame(?:space(?:s|URI)|Prop))|M(?:IN_VALUE|AX_VALUE)|c(?:haracterSet|o(?:n(?:structor|trollers)|okieEnabled|lorDepth|mp(?:onents|lete))|urrent|puClass|l(?:i(?:p(?:boardData)?|entInformation)|osed|asses)|alle(?:e|r)|rypto)|t(?:o(?:olbar|p)|ext(?:Transform|Indent|Decoration|Align)|ags)|SQRT(?:1_2|2)|i(?:n(?:ner(?:Height|Width)|put)|ds|gnoreCase)|zIndex|o(?:scpu|n(?:readystatechange|Line)|uter(?:Height|Width)|p(?:sProfile|ener)|ffscreenBuffering)|NEGATIVE_INFINITY|d(?:i(?:splay|alog(?:Height|Top|Width|Left|Arguments)|rectories)|e(?:scription|fault(?:Status|Ch(?:ecked|arset)|View)))|u(?:ser(?:Profile|Language|Agent)|n(?:iqueID|defined)|pdateInterval)|_content|p(?:ixelDepth|ort|ersonalbar|kcs11|l(?:ugins|atform)|a(?:thname|dding(?:Right|Bottom|Top|Left)|rent(?:Window|Layer)?|ge(?:X(?:Offset)?|Y(?:Offset)?))|r(?:o(?:to(?:col|type)|duct(?:Sub)?|mpter)|e(?:vious|fix)))|e(?:n(?:coding|abledPlugin)|x(?:ternal|pando)|mbeds)|v(?:isibility|endor(?:Sub)?|Linkcolor)|URLUnencoded|P(?:I|OSITIVE_INFINITY)|f(?:ilename|o(?:nt(?:Size|Family|Weight)|rmName)|rame(?:s|Element)|gColor)|E|whiteSpace|l(?:i(?:stStyleType|n(?:eHeight|kColor))|o(?:ca(?:tion(?:bar)?|lName)|wsrc)|e(?:ngth|ft(?:Context)?)|a(?:st(?:M(?:odified|atch)|Index|Paren)|yer(?:s|X)|nguage))|a(?:pp(?:MinorVersion|Name|Co(?:deName|re)|Version)|vail(?:Height|Top|Width|Left)|ll|r(?:ity|guments)|Linkcolor|bove)|r(?:ight(?:Context)?|e(?:sponse(?:XML|Text)|adyState))|global|x|m(?:imeTypes|ultiline|enubar|argin(?:Right|Bottom|Top|Left))|L(?:N(?:10|2)|OG(?:10E|2E))|b(?:o(?:ttom|rder(?:Width|RightWidth|BottomWidth|Style|Color|TopWidth|LeftWidth))|ufferDepth|elow|ackground(?:Color|Image)))\b/ - }, { - token : ["storage.type", "punctuation.operator", "support.function.firebug"], - regex : /(console)(\.)(warn|info|log|error|time|timeEnd|assert)\b/ - }, { - token : keywordMapper, - regex : identifierRe - }, { - token : "keyword.operator", - regex : /--|\+\+|[!$%&*+\-~]|===|==|=|!=|!==|<=|>=|<<=|>>=|>>>=|<>|<|>|!|&&|\|\||\?\:|\*=|%=|\+=|\-=|&=|\^=/, - next : "start" - }, { - token : "punctuation.operator", - regex : /\?|\:|\,|\;|\./, - next : "start" - }, { - token : "paren.lparen", - regex : /[\[({]/, - next : "start" - }, { - token : "paren.rparen", - regex : /[\])}]/ - }, { - token : "keyword.operator", - regex : /\/=?/, - next : "start" - }, { - token: "comment", - regex: /^#!.*$/ - } - ], - "start": [ - DocCommentHighlightRules.getStartRule("doc-start"), - { - token : "comment", // multi line comment - regex : "\\/\\*", - next : "comment_regex_allowed" - }, { - token : "comment", - regex : "\\/\\/", - next : "line_comment_regex_allowed" - }, { - token: "string.regexp", - regex: "\\/", - next: "regex" - }, { - token : "text", - regex : "\\s+|^$", - next : "start" - }, { - token: "empty", - regex: "", - next: "no_regex" - } - ], - "regex": [ - { - token: "regexp.keyword.operator", - regex: "\\\\(?:u[\\da-fA-F]{4}|x[\\da-fA-F]{2}|.)" - }, { - token: "string.regexp", - regex: "/[sxngimy]*", - next: "no_regex" - }, { - token : "invalid", - regex: /\{\d+\b,?\d*\}[+*]|[+*$^?][+*]|[$^][?]|\?{3,}/ - }, { - token : "constant.language.escape", - regex: /\(\?[:=!]|\)|\{\d+\b,?\d*\}|[+*]\?|[()$^+*?.]/ - }, { - token : "constant.language.delimiter", - regex: /\|/ - }, { - token: "constant.language.escape", - regex: /\[\^?/, - next: "regex_character_class" - }, { - token: "empty", - regex: "$", - next: "no_regex" - }, { - defaultToken: "string.regexp" - } - ], - "regex_character_class": [ - { - token: "regexp.keyword.operator", - regex: "\\\\(?:u[\\da-fA-F]{4}|x[\\da-fA-F]{2}|.)" - }, { - token: "constant.language.escape", - regex: "]", - next: "regex" - }, { - token: "constant.language.escape", - regex: "-" - }, { - token: "empty", - regex: "$", - next: "no_regex" - }, { - defaultToken: "string.regexp.charachterclass" - } - ], - "function_arguments": [ - { - token: "variable.parameter", - regex: identifierRe - }, { - token: "punctuation.operator", - regex: "[, ]+" - }, { - token: "punctuation.operator", - regex: "$" - }, { - token: "empty", - regex: "", - next: "no_regex" - } - ], - "comment_regex_allowed" : [ - {token : "comment", regex : "\\*\\/", next : "start"}, - {defaultToken : "comment"} - ], - "comment" : [ - {token : "comment", regex : "\\*\\/", next : "no_regex"}, - {defaultToken : "comment"} - ], - "line_comment_regex_allowed" : [ - {token : "comment", regex : "$|^", next : "start"}, - {defaultToken : "comment"} - ], - "line_comment" : [ - {token : "comment", regex : "$|^", next : "no_regex"}, - {defaultToken : "comment"} - ], - "qqstring" : [ - { - token : "constant.language.escape", - regex : escapedRe - }, { - token : "string", - regex : "\\\\$", - next : "qqstring" - }, { - token : "string", - regex : '"|$', - next : "no_regex" - }, { - defaultToken: "string" - } - ], - "qstring" : [ - { - token : "constant.language.escape", - regex : escapedRe - }, { - token : "string", - regex : "\\\\$", - next : "qstring" - }, { - token : "string", - regex : "'|$", - next : "no_regex" - }, { - defaultToken: "string" - } - ] - }; - - this.embedRules(DocCommentHighlightRules, "doc-", - [ DocCommentHighlightRules.getEndRule("no_regex") ]); -}; - -oop.inherits(JavaScriptHighlightRules, TextHighlightRules); - -exports.JavaScriptHighlightRules = JavaScriptHighlightRules; -}); - -ace.define('ace/mode/doc_comment_highlight_rules', ['require', 'exports', 'module' , 'ace/lib/oop', 'ace/mode/text_highlight_rules'], function(require, exports, module) { - - -var oop = require("../lib/oop"); -var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; - -var DocCommentHighlightRules = function() { - - this.$rules = { - "start" : [ { - token : "comment.doc.tag", - regex : "@[\\w\\d_]+" // TODO: fix email addresses - }, { - token : "comment.doc.tag", - regex : "\\bTODO\\b" - }, { - defaultToken : "comment.doc" - }] - }; -}; - -oop.inherits(DocCommentHighlightRules, TextHighlightRules); - -DocCommentHighlightRules.getStartRule = function(start) { - return { - token : "comment.doc", // doc comment - regex : "\\/\\*(?=\\*)", - next : start - }; -}; - -DocCommentHighlightRules.getEndRule = function (start) { - return { - token : "comment.doc", // closing comment - regex : "\\*\\/", - next : start - }; -}; - - -exports.DocCommentHighlightRules = DocCommentHighlightRules; - -}); - -ace.define('ace/mode/xml_highlight_rules', ['require', 'exports', 'module' , 'ace/lib/oop', 'ace/mode/xml_util', 'ace/mode/text_highlight_rules'], function(require, exports, module) { - - -var oop = require("../lib/oop"); -var xmlUtil = require("./xml_util"); -var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; - -var XmlHighlightRules = function(normalize) { - this.$rules = { - start : [ - {token : "punctuation.string.begin", regex : "<\\!\\[CDATA\\[", next : "cdata"}, - { - token : ["punctuation.instruction.begin", "keyword.instruction"], - regex : "(<\\?)(xml)(?=[\\s])", next : "xml_declaration" - }, - { - token : ["punctuation.instruction.begin", "keyword.instruction"], - regex : "(<\\?)([-_a-zA-Z0-9]+)", next : "instruction" - }, - {token : "comment", regex : "<\\!--", next : "comment"}, - { - token : ["punctuation.doctype.begin", "meta.tag.doctype"], - regex : "(<\\!)(DOCTYPE)(?=[\\s])", next : "doctype" - }, - {include : "tag"}, - {include : "reference"} - ], - - xml_declaration : [ - {include : "attributes"}, - {include : "instruction"} - ], - - instruction : [ - {token : "punctuation.instruction.end", regex : "\\?>", next : "start"} - ], - - doctype : [ - {include : "space"}, - {include : "string"}, - {token : "punctuation.doctype.end", regex : ">", next : "start"}, - {token : "xml-pe", regex : "[-_a-zA-Z0-9:]+"}, - {token : "punctuation.begin", regex : "\\[", push : "declarations"} - ], - - declarations : [{ - token : "text", - regex : "\\s+" - }, { - token: "punctuation.end", - regex: "]", - next: "pop" - }, { - token : ["punctuation.begin", "keyword"], - regex : "(<\\!)([-_a-zA-Z0-9]+)", - push : [{ - token : "text", - regex : "\\s+" - }, - { - token : "punctuation.end", - regex : ">", - next : "pop" - }, - {include : "string"}] - }], - - cdata : [ - {token : "string.end", regex : "\\]\\]>", next : "start"}, - {token : "text", regex : "\\s+"}, - {token : "text", regex : "(?:[^\\]]|\\](?!\\]>))+"} - ], - - comment : [ - {token : "comment", regex : "-->", next : "start"}, - {defaultToken : "comment"} - ], - - tag : [{ - token : ["meta.tag.punctuation.begin", "meta.tag.name"], - regex : "(<)((?:[-_a-zA-Z0-9]+:)?[-_a-zA-Z0-9]+)", - next: [ - {include : "attributes"}, - {token : "meta.tag.punctuation.end", regex : "/?>", next : "start"} - ] - }, { - token : ["meta.tag.punctuation.begin", "meta.tag.name"], - regex : "(", next : "start"} - ] - }], - - space : [ - {token : "text", regex : "\\s+"} - ], - - reference : [{ - token : "constant.language.escape", - regex : "(?:&#[0-9]+;)|(?:&#x[0-9a-fA-F]+;)|(?:&[a-zA-Z0-9_:\\.-]+;)" - }, { - token : "text", regex : "&" - }], - - string: [{ - token : "string", - regex : "'", - push : "qstring_inner" - }, { - token : "string", - regex : '"', - push : "qqstring_inner" - }], - - qstring_inner: [ - {token : "string", regex: "'", next: "pop"}, - {include : "reference"}, - {defaultToken : "string"} - ], - - qqstring_inner: [ - {token : "string", regex: '"', next: "pop"}, - {include : "reference"}, - {defaultToken : "string"} - ], - - attributes: [{ - token : "entity.other.attribute-name", - regex : "(?:[-_a-zA-Z0-9]+:)?[-_a-zA-Z0-9]+" - }, { - token : "keyword.operator.separator", - regex : "=" - }, { - include : "space" - }, { - include : "string" - }] - }; - - if (this.constructor === XmlHighlightRules) - this.normalizeRules(); -}; - - -(function() { - - this.embedTagRules = function(HighlightRules, prefix, tag){ - this.$rules.tag.unshift({ - token : ["meta.tag.punctuation.begin", "meta.tag.name." + tag], - regex : "(<)(" + tag + ")", - next: [ - {include : "space"}, - {include : "attributes"}, - {token : "meta.tag.punctuation.end", regex : "/?>", next : prefix + "start"} - ] - }); - - this.$rules[tag + "-end"] = [ - {include : "space"}, - {token : "meta.tag.punctuation.end", regex : ">", next: "start", - onMatch : function(value, currentState, stack) { - stack.splice(0); - return this.token; - }} - ] - - this.embedRules(HighlightRules, prefix, [{ - token: ["meta.tag.punctuation.begin", "meta.tag.name." + tag], - regex : "(" - }]); - }; - -}).call(TextHighlightRules.prototype); - -oop.inherits(XmlHighlightRules, TextHighlightRules); - -exports.XmlHighlightRules = XmlHighlightRules; -}); - -ace.define('ace/mode/xml_util', ['require', 'exports', 'module' ], function(require, exports, module) { - - -function string(state) { - return [{ - token : "string", - regex : '"', - next : state + "_qqstring" - }, { - token : "string", - regex : "'", - next : state + "_qstring" - }]; -} - -function multiLineString(quote, state) { - return [ - {token : "string", regex : quote, next : state}, - { - token : "constant.language.escape", - regex : "(?:&#[0-9]+;)|(?:&#x[0-9a-fA-F]+;)|(?:&[a-zA-Z0-9_:\\.-]+;)" - }, - {defaultToken : "string"} - ]; -} - -exports.tag = function(states, name, nextState, tagMap) { - states[name] = [{ - token : "text", - regex : "\\s+" - }, { - - token : !tagMap ? "meta.tag.tag-name" : function(value) { - if (tagMap[value]) - return "meta.tag.tag-name." + tagMap[value]; - else - return "meta.tag.tag-name"; - }, - regex : "[-_a-zA-Z0-9:]+", - next : name + "_embed_attribute_list" - }, { - token: "empty", - regex: "", - next : name + "_embed_attribute_list" - }]; - - states[name + "_qstring"] = multiLineString("'", name + "_embed_attribute_list"); - states[name + "_qqstring"] = multiLineString("\"", name + "_embed_attribute_list"); - - states[name + "_embed_attribute_list"] = [{ - token : "meta.tag.r", - regex : "/?>", - next : nextState - }, { - token : "keyword.operator", - regex : "=" - }, { - token : "entity.other.attribute-name", - regex : "[-_a-zA-Z0-9:]+" - }, { - token : "constant.numeric", // float - regex : "[+-]?\\d+(?:(?:\\.\\d*)?(?:[eE][+-]?\\d+)?)?\\b" - }, { - token : "text", - regex : "\\s+" - }].concat(string(name)); -}; - -}); - -ace.define('ace/mode/html_highlight_rules', ['require', 'exports', 'module' , 'ace/lib/oop', 'ace/lib/lang', 'ace/mode/css_highlight_rules', 'ace/mode/javascript_highlight_rules', 'ace/mode/xml_highlight_rules'], function(require, exports, module) { - - -var oop = require("../lib/oop"); -var lang = require("../lib/lang"); -var CssHighlightRules = require("./css_highlight_rules").CssHighlightRules; -var JavaScriptHighlightRules = require("./javascript_highlight_rules").JavaScriptHighlightRules; -var XmlHighlightRules = require("./xml_highlight_rules").XmlHighlightRules; - -var tagMap = lang.createMap({ - a : 'anchor', - button : 'form', - form : 'form', - img : 'image', - input : 'form', - label : 'form', - option : 'form', - script : 'script', - select : 'form', - textarea : 'form', - style : 'style', - table : 'table', - tbody : 'table', - td : 'table', - tfoot : 'table', - th : 'table', - tr : 'table' -}); - -var HtmlHighlightRules = function() { - XmlHighlightRules.call(this); - - this.addRules({ - attributes: [{ - include : "space" - }, { - token : "entity.other.attribute-name", - regex : "[-_a-zA-Z0-9:]+" - }, { - token : "keyword.operator.separator", - regex : "=", - push : [{ - include: "space" - }, { - token : "string", - regex : "[^<>='\"`\\s]+", - next : "pop" - }, { - token : "empty", - regex : "", - next : "pop" - }] - }, { - include : "string" - }], - tag: [{ - token : function(start, tag) { - var group = tagMap[tag]; - return ["meta.tag.punctuation.begin", - "meta.tag.name" + (group ? "." + group : "")]; - }, - regex : "(<)([-_a-zA-Z0-9:]+)", - next: "start_tag_stuff" - }, { - token : function(start, tag) { - var group = tagMap[tag]; - return ["meta.tag.punctuation.begin", - "meta.tag.name" + (group ? "." + group : "")]; - }, - regex : "(", next : "start"} - ], - end_tag_stuff: [ - {include : "space"}, - {token : "meta.tag.punctuation.end", regex : ">", next : "start"} - ] - }); - - this.embedTagRules(CssHighlightRules, "css-", "style"); - this.embedTagRules(JavaScriptHighlightRules, "js-", "script"); - - if (this.constructor === HtmlHighlightRules) - this.normalizeRules(); -}; - -oop.inherits(HtmlHighlightRules, XmlHighlightRules); - -exports.HtmlHighlightRules = HtmlHighlightRules; -}); - -ace.define('ace/mode/css_highlight_rules', ['require', 'exports', 'module' , 'ace/lib/oop', 'ace/lib/lang', 'ace/mode/text_highlight_rules'], function(require, exports, module) { - - -var oop = require("../lib/oop"); -var lang = require("../lib/lang"); -var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; -var supportType = exports.supportType = "animation-fill-mode|alignment-adjust|alignment-baseline|animation-delay|animation-direction|animation-duration|animation-iteration-count|animation-name|animation-play-state|animation-timing-function|animation|appearance|azimuth|backface-visibility|background-attachment|background-break|background-clip|background-color|background-image|background-origin|background-position|background-repeat|background-size|background|baseline-shift|binding|bleed|bookmark-label|bookmark-level|bookmark-state|bookmark-target|border-bottom|border-bottom-color|border-bottom-left-radius|border-bottom-right-radius|border-bottom-style|border-bottom-width|border-collapse|border-color|border-image|border-image-outset|border-image-repeat|border-image-slice|border-image-source|border-image-width|border-left|border-left-color|border-left-style|border-left-width|border-radius|border-right|border-right-color|border-right-style|border-right-width|border-spacing|border-style|border-top|border-top-color|border-top-left-radius|border-top-right-radius|border-top-style|border-top-width|border-width|border|bottom|box-align|box-decoration-break|box-direction|box-flex-group|box-flex|box-lines|box-ordinal-group|box-orient|box-pack|box-shadow|box-sizing|break-after|break-before|break-inside|caption-side|clear|clip|color-profile|color|column-count|column-fill|column-gap|column-rule|column-rule-color|column-rule-style|column-rule-width|column-span|column-width|columns|content|counter-increment|counter-reset|crop|cue-after|cue-before|cue|cursor|direction|display|dominant-baseline|drop-initial-after-adjust|drop-initial-after-align|drop-initial-before-adjust|drop-initial-before-align|drop-initial-size|drop-initial-value|elevation|empty-cells|fit|fit-position|float-offset|float|font-family|font-size|font-size-adjust|font-stretch|font-style|font-variant|font-weight|font|grid-columns|grid-rows|hanging-punctuation|height|hyphenate-after|hyphenate-before|hyphenate-character|hyphenate-lines|hyphenate-resource|hyphens|icon|image-orientation|image-rendering|image-resolution|inline-box-align|left|letter-spacing|line-height|line-stacking-ruby|line-stacking-shift|line-stacking-strategy|line-stacking|list-style-image|list-style-position|list-style-type|list-style|margin-bottom|margin-left|margin-right|margin-top|margin|mark-after|mark-before|mark|marks|marquee-direction|marquee-play-count|marquee-speed|marquee-style|max-height|max-width|min-height|min-width|move-to|nav-down|nav-index|nav-left|nav-right|nav-up|opacity|orphans|outline-color|outline-offset|outline-style|outline-width|outline|overflow-style|overflow-x|overflow-y|overflow|padding-bottom|padding-left|padding-right|padding-top|padding|page-break-after|page-break-before|page-break-inside|page-policy|page|pause-after|pause-before|pause|perspective-origin|perspective|phonemes|pitch-range|pitch|play-during|pointer-events|position|presentation-level|punctuation-trim|quotes|rendering-intent|resize|rest-after|rest-before|rest|richness|right|rotation-point|rotation|ruby-align|ruby-overhang|ruby-position|ruby-span|size|speak-header|speak-numeral|speak-punctuation|speak|speech-rate|stress|string-set|table-layout|target-name|target-new|target-position|target|text-align-last|text-align|text-decoration|text-emphasis|text-height|text-indent|text-justify|text-outline|text-shadow|text-transform|text-wrap|top|transform-origin|transform-style|transform|transition-delay|transition-duration|transition-property|transition-timing-function|transition|unicode-bidi|vertical-align|visibility|voice-balance|voice-duration|voice-family|voice-pitch-range|voice-pitch|voice-rate|voice-stress|voice-volume|volume|white-space-collapse|white-space|widows|width|word-break|word-spacing|word-wrap|z-index"; -var supportFunction = exports.supportFunction = "rgb|rgba|url|attr|counter|counters"; -var supportConstant = exports.supportConstant = "absolute|after-edge|after|all-scroll|all|alphabetic|always|antialiased|armenian|auto|avoid-column|avoid-page|avoid|balance|baseline|before-edge|before|below|bidi-override|block-line-height|block|bold|bolder|border-box|both|bottom|box|break-all|break-word|capitalize|caps-height|caption|center|central|char|circle|cjk-ideographic|clone|close-quote|col-resize|collapse|column|consider-shifts|contain|content-box|cover|crosshair|cubic-bezier|dashed|decimal-leading-zero|decimal|default|disabled|disc|disregard-shifts|distribute-all-lines|distribute-letter|distribute-space|distribute|dotted|double|e-resize|ease-in|ease-in-out|ease-out|ease|ellipsis|end|exclude-ruby|fill|fixed|georgian|glyphs|grid-height|groove|hand|hanging|hebrew|help|hidden|hiragana-iroha|hiragana|horizontal|icon|ideograph-alpha|ideograph-numeric|ideograph-parenthesis|ideograph-space|ideographic|inactive|include-ruby|inherit|initial|inline-block|inline-box|inline-line-height|inline-table|inline|inset|inside|inter-ideograph|inter-word|invert|italic|justify|katakana-iroha|katakana|keep-all|last|left|lighter|line-edge|line-through|line|linear|list-item|local|loose|lower-alpha|lower-greek|lower-latin|lower-roman|lowercase|lr-tb|ltr|mathematical|max-height|max-size|medium|menu|message-box|middle|move|n-resize|ne-resize|newspaper|no-change|no-close-quote|no-drop|no-open-quote|no-repeat|none|normal|not-allowed|nowrap|nw-resize|oblique|open-quote|outset|outside|overline|padding-box|page|pointer|pre-line|pre-wrap|pre|preserve-3d|progress|relative|repeat-x|repeat-y|repeat|replaced|reset-size|ridge|right|round|row-resize|rtl|s-resize|scroll|se-resize|separate|slice|small-caps|small-caption|solid|space|square|start|static|status-bar|step-end|step-start|steps|stretch|strict|sub|super|sw-resize|table-caption|table-cell|table-column-group|table-column|table-footer-group|table-header-group|table-row-group|table-row|table|tb-rl|text-after-edge|text-before-edge|text-bottom|text-size|text-top|text|thick|thin|transparent|underline|upper-alpha|upper-latin|upper-roman|uppercase|use-script|vertical-ideographic|vertical-text|visible|w-resize|wait|whitespace|z-index|zero"; -var supportConstantColor = exports.supportConstantColor = "aqua|black|blue|fuchsia|gray|green|lime|maroon|navy|olive|orange|purple|red|silver|teal|white|yellow"; -var supportConstantFonts = exports.supportConstantFonts = "arial|century|comic|courier|garamond|georgia|helvetica|impact|lucida|symbol|system|tahoma|times|trebuchet|utopia|verdana|webdings|sans-serif|serif|monospace"; - -var numRe = exports.numRe = "\\-?(?:(?:[0-9]+)|(?:[0-9]*\\.[0-9]+))"; -var pseudoElements = exports.pseudoElements = "(\\:+)\\b(after|before|first-letter|first-line|moz-selection|selection)\\b"; -var pseudoClasses = exports.pseudoClasses = "(:)\\b(active|checked|disabled|empty|enabled|first-child|first-of-type|focus|hover|indeterminate|invalid|last-child|last-of-type|link|not|nth-child|nth-last-child|nth-last-of-type|nth-of-type|only-child|only-of-type|required|root|target|valid|visited)\\b"; - -var CssHighlightRules = function() { - - var keywordMapper = this.createKeywordMapper({ - "support.function": supportFunction, - "support.constant": supportConstant, - "support.type": supportType, - "support.constant.color": supportConstantColor, - "support.constant.fonts": supportConstantFonts - }, "text", true); - - this.$rules = { - "start" : [{ - token : "comment", // multi line comment - regex : "\\/\\*", - push : "comment" - }, { - token: "paren.lparen", - regex: "\\{", - push: "ruleset" - }, { - token: "string", - regex: "@.*?{", - push: "media" - }, { - token: "keyword", - regex: "#[a-z0-9-_]+" - }, { - token: "variable", - regex: "\\.[a-z0-9-_]+" - }, { - token: "string", - regex: ":[a-z0-9-_]+" - }, { - token: "constant", - regex: "[a-z0-9-_]+" - }, { - caseInsensitive: true - }], - - "media" : [{ - token : "comment", // multi line comment - regex : "\\/\\*", - push : "comment" - }, { - token: "paren.lparen", - regex: "\\{", - push: "ruleset" - }, { - token: "string", - regex: "\\}", - next: "pop" - }, { - token: "keyword", - regex: "#[a-z0-9-_]+" - }, { - token: "variable", - regex: "\\.[a-z0-9-_]+" - }, { - token: "string", - regex: ":[a-z0-9-_]+" - }, { - token: "constant", - regex: "[a-z0-9-_]+" - }, { - caseInsensitive: true - }], - - "comment" : [{ - token : "comment", - regex : "\\*\\/", - next : "pop" - }, { - defaultToken : "comment" - }], - - "ruleset" : [ - { - token : "paren.rparen", - regex : "\\}", - next: "pop" - }, { - token : "comment", // multi line comment - regex : "\\/\\*", - push : "comment" - }, { - token : "string", // single line - regex : '["](?:(?:\\\\.)|(?:[^"\\\\]))*?["]' - }, { - token : "string", // single line - regex : "['](?:(?:\\\\.)|(?:[^'\\\\]))*?[']" - }, { - token : ["constant.numeric", "keyword"], - regex : "(" + numRe + ")(ch|cm|deg|em|ex|fr|gd|grad|Hz|in|kHz|mm|ms|pc|pt|px|rad|rem|s|turn|vh|vm|vw|%)" - }, { - token : "constant.numeric", - regex : numRe - }, { - token : "constant.numeric", // hex6 color - regex : "#[a-f0-9]{6}" - }, { - token : "constant.numeric", // hex3 color - regex : "#[a-f0-9]{3}" - }, { - token : ["punctuation", "entity.other.attribute-name.pseudo-element.css"], - regex : pseudoElements - }, { - token : ["punctuation", "entity.other.attribute-name.pseudo-class.css"], - regex : pseudoClasses - }, { - token : ["support.function", "string", "support.function"], - regex : "(url\\()(.*)(\\))" - }, { - token : keywordMapper, - regex : "\\-?[a-zA-Z_][a-zA-Z0-9_\\-]*" - }, { - caseInsensitive: true - }] - }; - - this.normalizeRules(); -}; - -oop.inherits(CssHighlightRules, TextHighlightRules); - -exports.CssHighlightRules = CssHighlightRules; - -}); - -ace.define('ace/mode/scss_highlight_rules', ['require', 'exports', 'module' , 'ace/lib/oop', 'ace/lib/lang', 'ace/mode/text_highlight_rules'], function(require, exports, module) { - - -var oop = require("../lib/oop"); -var lang = require("../lib/lang"); -var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; - -var ScssHighlightRules = function() { - - var properties = lang.arrayToMap( (function () { - - var browserPrefix = ("-webkit-|-moz-|-o-|-ms-|-svg-|-pie-|-khtml-").split("|"); - - var prefixProperties = ("appearance|background-clip|background-inline-policy|background-origin|" + - "background-size|binding|border-bottom-colors|border-left-colors|" + - "border-right-colors|border-top-colors|border-end|border-end-color|" + - "border-end-style|border-end-width|border-image|border-start|" + - "border-start-color|border-start-style|border-start-width|box-align|" + - "box-direction|box-flex|box-flexgroup|box-ordinal-group|box-orient|" + - "box-pack|box-sizing|column-count|column-gap|column-width|column-rule|" + - "column-rule-width|column-rule-style|column-rule-color|float-edge|" + - "font-feature-settings|font-language-override|force-broken-image-icon|" + - "image-region|margin-end|margin-start|opacity|outline|outline-color|" + - "outline-offset|outline-radius|outline-radius-bottomleft|" + - "outline-radius-bottomright|outline-radius-topleft|outline-radius-topright|" + - "outline-style|outline-width|padding-end|padding-start|stack-sizing|" + - "tab-size|text-blink|text-decoration-color|text-decoration-line|" + - "text-decoration-style|transform|transform-origin|transition|" + - "transition-delay|transition-duration|transition-property|" + - "transition-timing-function|user-focus|user-input|user-modify|user-select|" + - "window-shadow|border-radius").split("|"); - - var properties = ("azimuth|background-attachment|background-color|background-image|" + - "background-position|background-repeat|background|border-bottom-color|" + - "border-bottom-style|border-bottom-width|border-bottom|border-collapse|" + - "border-color|border-left-color|border-left-style|border-left-width|" + - "border-left|border-right-color|border-right-style|border-right-width|" + - "border-right|border-spacing|border-style|border-top-color|" + - "border-top-style|border-top-width|border-top|border-width|border|bottom|" + - "box-shadow|box-sizing|caption-side|clear|clip|color|content|counter-increment|" + - "counter-reset|cue-after|cue-before|cue|cursor|direction|display|" + - "elevation|empty-cells|float|font-family|font-size-adjust|font-size|" + - "font-stretch|font-style|font-variant|font-weight|font|height|left|" + - "letter-spacing|line-height|list-style-image|list-style-position|" + - "list-style-type|list-style|margin-bottom|margin-left|margin-right|" + - "margin-top|marker-offset|margin|marks|max-height|max-width|min-height|" + - "min-width|opacity|orphans|outline-color|" + - "outline-style|outline-width|outline|overflow|overflow-x|overflow-y|padding-bottom|" + - "padding-left|padding-right|padding-top|padding|page-break-after|" + - "page-break-before|page-break-inside|page|pause-after|pause-before|" + - "pause|pitch-range|pitch|play-during|position|quotes|richness|right|" + - "size|speak-header|speak-numeral|speak-punctuation|speech-rate|speak|" + - "stress|table-layout|text-align|text-decoration|text-indent|" + - "text-shadow|text-transform|top|unicode-bidi|vertical-align|" + - "visibility|voice-family|volume|white-space|widows|width|word-spacing|" + - "z-index").split("|"); - var ret = []; - for (var i=0, ln=browserPrefix.length; i|<=|>=|==|!=|-|%|#|\\+|\\$|\\+|\\*" - }, { - token : "paren.lparen", - regex : "[[({]" - }, { - token : "paren.rparen", - regex : "[\\])}]" - }, { - token : "text", - regex : "\\s+" - }, { - caseInsensitive: true - } - ], - "comment" : [ - { - token : "comment", // closing comment - regex : ".*?\\*\\/", - next : "start" - }, { - token : "comment", // comment spanning whole line - regex : ".+" - } - ], - "qqstring" : [ - { - token : "string", - regex : '(?:(?:\\\\.)|(?:[^"\\\\]))*?"', - next : "start" - }, { - token : "string", - regex : '.+' - } - ], - "qstring" : [ - { - token : "string", - regex : "(?:(?:\\\\.)|(?:[^'\\\\]))*?'", - next : "start" - }, { - token : "string", - regex : '.+' - } - ] - }; -}; - -oop.inherits(ScssHighlightRules, TextHighlightRules); - -exports.ScssHighlightRules = ScssHighlightRules; - -}); - -ace.define('ace/mode/less_highlight_rules', ['require', 'exports', 'module' , 'ace/lib/oop', 'ace/lib/lang', 'ace/mode/text_highlight_rules'], function(require, exports, module) { - - -var oop = require("../lib/oop"); -var lang = require("../lib/lang"); -var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; - -var LessHighlightRules = function() { - - var properties = lang.arrayToMap( (function () { - - var browserPrefix = ("-webkit-|-moz-|-o-|-ms-|-svg-|-pie-|-khtml-").split("|"); - - var prefixProperties = ("appearance|background-clip|background-inline-policy|background-origin|" + - "background-size|binding|border-bottom-colors|border-left-colors|" + - "border-right-colors|border-top-colors|border-end|border-end-color|" + - "border-end-style|border-end-width|border-image|border-start|" + - "border-start-color|border-start-style|border-start-width|box-align|" + - "box-direction|box-flex|box-flexgroup|box-ordinal-group|box-orient|" + - "box-pack|box-sizing|column-count|column-gap|column-width|column-rule|" + - "column-rule-width|column-rule-style|column-rule-color|float-edge|" + - "font-feature-settings|font-language-override|force-broken-image-icon|" + - "image-region|margin-end|margin-start|opacity|outline|outline-color|" + - "outline-offset|outline-radius|outline-radius-bottomleft|" + - "outline-radius-bottomright|outline-radius-topleft|outline-radius-topright|" + - "outline-style|outline-width|padding-end|padding-start|stack-sizing|" + - "tab-size|text-blink|text-decoration-color|text-decoration-line|" + - "text-decoration-style|transform|transform-origin|transition|" + - "transition-delay|transition-duration|transition-property|" + - "transition-timing-function|user-focus|user-input|user-modify|user-select|" + - "window-shadow|border-radius").split("|"); - - var properties = ("azimuth|background-attachment|background-color|background-image|" + - "background-position|background-repeat|background|border-bottom-color|" + - "border-bottom-style|border-bottom-width|border-bottom|border-collapse|" + - "border-color|border-left-color|border-left-style|border-left-width|" + - "border-left|border-right-color|border-right-style|border-right-width|" + - "border-right|border-spacing|border-style|border-top-color|" + - "border-top-style|border-top-width|border-top|border-width|border|" + - "bottom|box-sizing|caption-side|clear|clip|color|content|counter-increment|" + - "counter-reset|cue-after|cue-before|cue|cursor|direction|display|" + - "elevation|empty-cells|float|font-family|font-size-adjust|font-size|" + - "font-stretch|font-style|font-variant|font-weight|font|height|left|" + - "letter-spacing|line-height|list-style-image|list-style-position|" + - "list-style-type|list-style|margin-bottom|margin-left|margin-right|" + - "margin-top|marker-offset|margin|marks|max-height|max-width|min-height|" + - "min-width|opacity|orphans|outline-color|" + - "outline-style|outline-width|outline|overflow|overflow-x|overflow-y|padding-bottom|" + - "padding-left|padding-right|padding-top|padding|page-break-after|" + - "page-break-before|page-break-inside|page|pause-after|pause-before|" + - "pause|pitch-range|pitch|play-during|position|quotes|richness|right|" + - "size|speak-header|speak-numeral|speak-punctuation|speech-rate|speak|" + - "stress|table-layout|text-align|text-decoration|text-indent|" + - "text-shadow|text-transform|top|unicode-bidi|vertical-align|" + - "visibility|voice-family|volume|white-space|widows|width|word-spacing|" + - "z-index").split("|"); - var ret = []; - for (var i=0, ln=browserPrefix.length; i|<=|>=|==|!=|-|%|#|\\+|\\$|\\+|\\*" - }, { - token : "paren.lparen", - regex : "[[({]" - }, { - token : "paren.rparen", - regex : "[\\])}]" - }, { - token : "text", - regex : "\\s+" - }, { - caseInsensitive: true - } - ], - "comment" : [ - { - token : "comment", // closing comment - regex : ".*?\\*\\/", - next : "start" - }, { - token : "comment", // comment spanning whole line - regex : ".+" - } - ] - }; -}; - -oop.inherits(LessHighlightRules, TextHighlightRules); - -exports.LessHighlightRules = LessHighlightRules; - -}); - -ace.define('ace/mode/coffee_highlight_rules', ['require', 'exports', 'module' , 'ace/lib/oop', 'ace/mode/text_highlight_rules'], function(require, exports, module) { - - - var oop = require("../lib/oop"); - var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; - - oop.inherits(CoffeeHighlightRules, TextHighlightRules); - - function CoffeeHighlightRules() { - var identifier = "[$A-Za-z_\\x7f-\\uffff][$\\w\\x7f-\\uffff]*"; - - var keywords = ( - "this|throw|then|try|typeof|super|switch|return|break|by|continue|" + - "catch|class|in|instanceof|is|isnt|if|else|extends|for|own|" + - "finally|function|while|when|new|no|not|delete|debugger|do|loop|of|off|" + - "or|on|unless|until|and|yes" - ); - - var langConstant = ( - "true|false|null|undefined|NaN|Infinity" - ); - - var illegal = ( - "case|const|default|function|var|void|with|enum|export|implements|" + - "interface|let|package|private|protected|public|static|yield|" + - "__hasProp|slice|bind|indexOf" - ); - - var supportClass = ( - "Array|Boolean|Date|Function|Number|Object|RegExp|ReferenceError|String|" + - "Error|EvalError|InternalError|RangeError|ReferenceError|StopIteration|" + - "SyntaxError|TypeError|URIError|" + - "ArrayBuffer|Float32Array|Float64Array|Int16Array|Int32Array|Int8Array|" + - "Uint16Array|Uint32Array|Uint8Array|Uint8ClampedArray" - ); - - var supportFunction = ( - "Math|JSON|isNaN|isFinite|parseInt|parseFloat|encodeURI|" + - "encodeURIComponent|decodeURI|decodeURIComponent|String|" - ); - - var variableLanguage = ( - "window|arguments|prototype|document" - ); - - var keywordMapper = this.createKeywordMapper({ - "keyword": keywords, - "constant.language": langConstant, - "invalid.illegal": illegal, - "language.support.class": supportClass, - "language.support.function": supportFunction, - "variable.language": variableLanguage - }, "identifier"); - - var functionRule = { - token: ["paren.lparen", "variable.parameter", "paren.rparen", "text", "storage.type"], - regex: /(?:(\()((?:"[^")]*?"|'[^')]*?'|\/[^\/)]*?\/|[^()\"'\/])*?)(\))(\s*))?([\-=]>)/.source - }; - - var stringEscape = /\\(?:x[0-9a-fA-F]{2}|u[0-9a-fA-F]{4}|[0-2][0-7]{0,2}|3[0-6][0-7]?|37[0-7]?|[4-7][0-7]?|.)/; - - this.$rules = { - start : [ - { - token : "constant.numeric", - regex : "(?:0x[\\da-fA-F]+|(?:\\d+(?:\\.\\d+)?|\\.\\d+)(?:[eE][+-]?\\d+)?)" - }, { - stateName: "qdoc", - token : "string", regex : "'''", next : [ - {token : "string", regex : "'''", next : "start"}, - {token : "constant.language.escape", regex : stringEscape}, - {defaultToken: "string"} - ] - }, { - stateName: "qqdoc", - token : "string", - regex : '"""', - next : [ - {token : "string", regex : '"""', next : "start"}, - {token : "paren.string", regex : '#{', push : "start"}, - {token : "constant.language.escape", regex : stringEscape}, - {defaultToken: "string"} - ] - }, { - stateName: "qstring", - token : "string", regex : "'", next : [ - {token : "string", regex : "'", next : "start"}, - {token : "constant.language.escape", regex : stringEscape}, - {defaultToken: "string"} - ] - }, { - stateName: "qqstring", - token : "string.start", regex : '"', next : [ - {token : "string.end", regex : '"', next : "start"}, - {token : "paren.string", regex : '#{', push : "start"}, - {token : "constant.language.escape", regex : stringEscape}, - {defaultToken: "string"} - ] - }, { - stateName: "js", - token : "string", regex : "`", next : [ - {token : "string", regex : "`", next : "start"}, - {token : "constant.language.escape", regex : stringEscape}, - {defaultToken: "string"} - ] - }, { - regex: "[{}]", onMatch: function(val, state, stack) { - this.next = ""; - if (val == "{" && stack.length) { - stack.unshift("start", state); - return "paren"; - } - if (val == "}" && stack.length) { - stack.shift(); - this.next = stack.shift(); - if (this.next.indexOf("string") != -1) - return "paren.string"; - } - return "paren"; - } - }, { - token : "string.regex", - regex : "///", - next : "heregex" - }, { - token : "string.regex", - regex : /(?:\/(?![\s=])[^[\/\n\\]*(?:(?:\\[\s\S]|\[[^\]\n\\]*(?:\\[\s\S][^\]\n\\]*)*])[^[\/\n\\]*)*\/)(?:[imgy]{0,4})(?!\w)/ - }, { - token : "comment", - regex : "###(?!#)", - next : "comment" - }, { - token : "comment", - regex : "#.*" - }, { - token : ["punctuation.operator", "text", "identifier"], - regex : "(\\.)(\\s*)(" + illegal + ")" - }, { - token : "punctuation.operator", - regex : "\\." - }, { - token : ["keyword", "text", "language.support.class", - "text", "keyword", "text", "language.support.class"], - regex : "(class)(\\s+)(" + identifier + ")(?:(\\s+)(extends)(\\s+)(" + identifier + "))?" - }, { - token : ["entity.name.function", "text", "keyword.operator", "text"].concat(functionRule.token), - regex : "(" + identifier + ")(\\s*)([=:])(\\s*)" + functionRule.regex - }, - functionRule, - { - token : "variable", - regex : "@(?:" + identifier + ")?" - }, { - token: keywordMapper, - regex : identifier - }, { - token : "punctuation.operator", - regex : "\\,|\\." - }, { - token : "storage.type", - regex : "[\\-=]>" - }, { - token : "keyword.operator", - regex : "(?:[-+*/%<>&|^!?=]=|>>>=?|\\-\\-|\\+\\+|::|&&=|\\|\\|=|<<=|>>=|\\?\\.|\\.{2,3}|[!*+-=><])" - }, { - token : "paren.lparen", - regex : "[({[]" - }, { - token : "paren.rparen", - regex : "[\\]})]" - }, { - token : "text", - regex : "\\s+" - }], - - - heregex : [{ - token : "string.regex", - regex : '.*?///[imgy]{0,4}', - next : "start" - }, { - token : "comment.regex", - regex : "\\s+(?:#.*)?" - }, { - token : "string.regex", - regex : "\\S+" - }], - - comment : [{ - token : "comment", - regex : '###', - next : "start" - }, { - defaultToken : "comment" - }] - }; - this.normalizeRules(); - } - - exports.CoffeeHighlightRules = CoffeeHighlightRules; -}); - -ace.define('ace/mode/folding/coffee', ['require', 'exports', 'module' , 'ace/lib/oop', 'ace/mode/folding/fold_mode', 'ace/range'], function(require, exports, module) { - - -var oop = require("../../lib/oop"); -var BaseFoldMode = require("./fold_mode").FoldMode; -var Range = require("../../range").Range; - -var FoldMode = exports.FoldMode = function() {}; -oop.inherits(FoldMode, BaseFoldMode); - -(function() { - - this.getFoldWidgetRange = function(session, foldStyle, row) { - var range = this.indentationBlock(session, row); - if (range) - return range; - - var re = /\S/; - var line = session.getLine(row); - var startLevel = line.search(re); - if (startLevel == -1 || line[startLevel] != "#") - return; - - var startColumn = line.length; - var maxRow = session.getLength(); - var startRow = row; - var endRow = row; - - while (++row < maxRow) { - line = session.getLine(row); - var level = line.search(re); - - if (level == -1) - continue; - - if (line[level] != "#") - break; - - endRow = row; - } - - if (endRow > startRow) { - var endColumn = session.getLine(endRow).length; - return new Range(startRow, startColumn, endRow, endColumn); - } - }; - this.getFoldWidget = function(session, foldStyle, row) { - var line = session.getLine(row); - var indent = line.search(/\S/); - var next = session.getLine(row + 1); - var prev = session.getLine(row - 1); - var prevIndent = prev.search(/\S/); - var nextIndent = next.search(/\S/); - - if (indent == -1) { - session.foldWidgets[row - 1] = prevIndent!= -1 && prevIndent < nextIndent ? "start" : ""; - return ""; - } - if (prevIndent == -1) { - if (indent == nextIndent && line[indent] == "#" && next[indent] == "#") { - session.foldWidgets[row - 1] = ""; - session.foldWidgets[row + 1] = ""; - return "start"; - } - } else if (prevIndent == indent && line[indent] == "#" && prev[indent] == "#") { - if (session.getLine(row - 2).search(/\S/) == -1) { - session.foldWidgets[row - 1] = "start"; - session.foldWidgets[row + 1] = ""; - return ""; - } - } - - if (prevIndent!= -1 && prevIndent < indent) - session.foldWidgets[row - 1] = "start"; - else - session.foldWidgets[row - 1] = ""; - - if (indent < nextIndent) - return "start"; - else - return ""; - }; - -}).call(FoldMode.prototype); - -}); diff --git a/IDE/jsrealb-ide/ace-src-noconflict/mode-java.js b/IDE/jsrealb-ide/ace-src-noconflict/mode-java.js deleted file mode 100644 index 8d765158..00000000 --- a/IDE/jsrealb-ide/ace-src-noconflict/mode-java.js +++ /dev/null @@ -1,1053 +0,0 @@ -ace.define('ace/mode/java', ['require', 'exports', 'module' , 'ace/lib/oop', 'ace/mode/javascript', 'ace/tokenizer', 'ace/mode/java_highlight_rules'], function(require, exports, module) { - - -var oop = require("../lib/oop"); -var JavaScriptMode = require("./javascript").Mode; -var Tokenizer = require("../tokenizer").Tokenizer; -var JavaHighlightRules = require("./java_highlight_rules").JavaHighlightRules; - -var Mode = function() { - JavaScriptMode.call(this); - this.HighlightRules = JavaHighlightRules; -}; -oop.inherits(Mode, JavaScriptMode); - -(function() { - - this.createWorker = function(session) { - return null; - }; - - this.$id = "ace/mode/java"; -}).call(Mode.prototype); - -exports.Mode = Mode; -}); - -ace.define('ace/mode/javascript', ['require', 'exports', 'module' , 'ace/lib/oop', 'ace/mode/text', 'ace/tokenizer', 'ace/mode/javascript_highlight_rules', 'ace/mode/matching_brace_outdent', 'ace/range', 'ace/worker/worker_client', 'ace/mode/behaviour/cstyle', 'ace/mode/folding/cstyle'], function(require, exports, module) { - - -var oop = require("../lib/oop"); -var TextMode = require("./text").Mode; -var Tokenizer = require("../tokenizer").Tokenizer; -var JavaScriptHighlightRules = require("./javascript_highlight_rules").JavaScriptHighlightRules; -var MatchingBraceOutdent = require("./matching_brace_outdent").MatchingBraceOutdent; -var Range = require("../range").Range; -var WorkerClient = require("../worker/worker_client").WorkerClient; -var CstyleBehaviour = require("./behaviour/cstyle").CstyleBehaviour; -var CStyleFoldMode = require("./folding/cstyle").FoldMode; - -var Mode = function() { - this.HighlightRules = JavaScriptHighlightRules; - - this.$outdent = new MatchingBraceOutdent(); - this.$behaviour = new CstyleBehaviour(); - this.foldingRules = new CStyleFoldMode(); -}; -oop.inherits(Mode, TextMode); - -(function() { - - this.lineCommentStart = "//"; - this.blockComment = {start: "/*", end: "*/"}; - - this.getNextLineIndent = function(state, line, tab) { - var indent = this.$getIndent(line); - - var tokenizedLine = this.getTokenizer().getLineTokens(line, state); - var tokens = tokenizedLine.tokens; - var endState = tokenizedLine.state; - - if (tokens.length && tokens[tokens.length-1].type == "comment") { - return indent; - } - - if (state == "start" || state == "no_regex") { - var match = line.match(/^.*(?:\bcase\b.*\:|[\{\(\[])\s*$/); - if (match) { - indent += tab; - } - } else if (state == "doc-start") { - if (endState == "start" || endState == "no_regex") { - return ""; - } - var match = line.match(/^\s*(\/?)\*/); - if (match) { - if (match[1]) { - indent += " "; - } - indent += "* "; - } - } - - return indent; - }; - - this.checkOutdent = function(state, line, input) { - return this.$outdent.checkOutdent(line, input); - }; - - this.autoOutdent = function(state, doc, row) { - this.$outdent.autoOutdent(doc, row); - }; - - this.createWorker = function(session) { - var worker = new WorkerClient(["ace"], "ace/mode/javascript_worker", "JavaScriptWorker"); - worker.attachToDocument(session.getDocument()); - - worker.on("jslint", function(results) { - session.setAnnotations(results.data); - }); - - worker.on("terminate", function() { - session.clearAnnotations(); - }); - - return worker; - }; - - this.$id = "ace/mode/javascript"; -}).call(Mode.prototype); - -exports.Mode = Mode; -}); - -ace.define('ace/mode/javascript_highlight_rules', ['require', 'exports', 'module' , 'ace/lib/oop', 'ace/mode/doc_comment_highlight_rules', 'ace/mode/text_highlight_rules'], function(require, exports, module) { - - -var oop = require("../lib/oop"); -var DocCommentHighlightRules = require("./doc_comment_highlight_rules").DocCommentHighlightRules; -var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; - -var JavaScriptHighlightRules = function() { - var keywordMapper = this.createKeywordMapper({ - "variable.language": - "Array|Boolean|Date|Function|Iterator|Number|Object|RegExp|String|Proxy|" + // Constructors - "Namespace|QName|XML|XMLList|" + // E4X - "ArrayBuffer|Float32Array|Float64Array|Int16Array|Int32Array|Int8Array|" + - "Uint16Array|Uint32Array|Uint8Array|Uint8ClampedArray|" + - "Error|EvalError|InternalError|RangeError|ReferenceError|StopIteration|" + // Errors - "SyntaxError|TypeError|URIError|" + - "decodeURI|decodeURIComponent|encodeURI|encodeURIComponent|eval|isFinite|" + // Non-constructor functions - "isNaN|parseFloat|parseInt|" + - "JSON|Math|" + // Other - "this|arguments|prototype|window|document" , // Pseudo - "keyword": - "const|yield|import|get|set|" + - "break|case|catch|continue|default|delete|do|else|finally|for|function|" + - "if|in|instanceof|new|return|switch|throw|try|typeof|let|var|while|with|debugger|" + - "__parent__|__count__|escape|unescape|with|__proto__|" + - "class|enum|extends|super|export|implements|private|public|interface|package|protected|static", - "storage.type": - "const|let|var|function", - "constant.language": - "null|Infinity|NaN|undefined", - "support.function": - "alert", - "constant.language.boolean": "true|false" - }, "identifier"); - var kwBeforeRe = "case|do|else|finally|in|instanceof|return|throw|try|typeof|yield|void"; - var identifierRe = "[a-zA-Z\\$_\u00a1-\uffff][a-zA-Z\\d\\$_\u00a1-\uffff]*\\b"; - - var escapedRe = "\\\\(?:x[0-9a-fA-F]{2}|" + // hex - "u[0-9a-fA-F]{4}|" + // unicode - "[0-2][0-7]{0,2}|" + // oct - "3[0-6][0-7]?|" + // oct - "37[0-7]?|" + // oct - "[4-7][0-7]?|" + //oct - ".)"; - - this.$rules = { - "no_regex" : [ - { - token : "comment", - regex : "\\/\\/", - next : "line_comment" - }, - DocCommentHighlightRules.getStartRule("doc-start"), - { - token : "comment", // multi line comment - regex : /\/\*/, - next : "comment" - }, { - token : "string", - regex : "'(?=.)", - next : "qstring" - }, { - token : "string", - regex : '"(?=.)', - next : "qqstring" - }, { - token : "constant.numeric", // hex - regex : /0[xX][0-9a-fA-F]+\b/ - }, { - token : "constant.numeric", // float - regex : /[+-]?\d+(?:(?:\.\d*)?(?:[eE][+-]?\d+)?)?\b/ - }, { - token : [ - "storage.type", "punctuation.operator", "support.function", - "punctuation.operator", "entity.name.function", "text","keyword.operator" - ], - regex : "(" + identifierRe + ")(\\.)(prototype)(\\.)(" + identifierRe +")(\\s*)(=)", - next: "function_arguments" - }, { - token : [ - "storage.type", "punctuation.operator", "entity.name.function", "text", - "keyword.operator", "text", "storage.type", "text", "paren.lparen" - ], - regex : "(" + identifierRe + ")(\\.)(" + identifierRe +")(\\s*)(=)(\\s*)(function)(\\s*)(\\()", - next: "function_arguments" - }, { - token : [ - "entity.name.function", "text", "keyword.operator", "text", "storage.type", - "text", "paren.lparen" - ], - regex : "(" + identifierRe +")(\\s*)(=)(\\s*)(function)(\\s*)(\\()", - next: "function_arguments" - }, { - token : [ - "storage.type", "punctuation.operator", "entity.name.function", "text", - "keyword.operator", "text", - "storage.type", "text", "entity.name.function", "text", "paren.lparen" - ], - regex : "(" + identifierRe + ")(\\.)(" + identifierRe +")(\\s*)(=)(\\s*)(function)(\\s+)(\\w+)(\\s*)(\\()", - next: "function_arguments" - }, { - token : [ - "storage.type", "text", "entity.name.function", "text", "paren.lparen" - ], - regex : "(function)(\\s+)(" + identifierRe + ")(\\s*)(\\()", - next: "function_arguments" - }, { - token : [ - "entity.name.function", "text", "punctuation.operator", - "text", "storage.type", "text", "paren.lparen" - ], - regex : "(" + identifierRe + ")(\\s*)(:)(\\s*)(function)(\\s*)(\\()", - next: "function_arguments" - }, { - token : [ - "text", "text", "storage.type", "text", "paren.lparen" - ], - regex : "(:)(\\s*)(function)(\\s*)(\\()", - next: "function_arguments" - }, { - token : "keyword", - regex : "(?:" + kwBeforeRe + ")\\b", - next : "start" - }, { - token : ["punctuation.operator", "support.function"], - regex : /(\.)(s(?:h(?:ift|ow(?:Mod(?:elessDialog|alDialog)|Help))|croll(?:X|By(?:Pages|Lines)?|Y|To)?|t(?:op|rike)|i(?:n|zeToContent|debar|gnText)|ort|u(?:p|b(?:str(?:ing)?)?)|pli(?:ce|t)|e(?:nd|t(?:Re(?:sizable|questHeader)|M(?:i(?:nutes|lliseconds)|onth)|Seconds|Ho(?:tKeys|urs)|Year|Cursor|Time(?:out)?|Interval|ZOptions|Date|UTC(?:M(?:i(?:nutes|lliseconds)|onth)|Seconds|Hours|Date|FullYear)|FullYear|Active)|arch)|qrt|lice|avePreferences|mall)|h(?:ome|andleEvent)|navigate|c(?:har(?:CodeAt|At)|o(?:s|n(?:cat|textual|firm)|mpile)|eil|lear(?:Timeout|Interval)?|a(?:ptureEvents|ll)|reate(?:StyleSheet|Popup|EventObject))|t(?:o(?:GMTString|S(?:tring|ource)|U(?:TCString|pperCase)|Lo(?:caleString|werCase))|est|a(?:n|int(?:Enabled)?))|i(?:s(?:NaN|Finite)|ndexOf|talics)|d(?:isableExternalCapture|ump|etachEvent)|u(?:n(?:shift|taint|escape|watch)|pdateCommands)|j(?:oin|avaEnabled)|p(?:o(?:p|w)|ush|lugins.refresh|a(?:ddings|rse(?:Int|Float)?)|r(?:int|ompt|eference))|e(?:scape|nableExternalCapture|val|lementFromPoint|x(?:p|ec(?:Script|Command)?))|valueOf|UTC|queryCommand(?:State|Indeterm|Enabled|Value)|f(?:i(?:nd|le(?:ModifiedDate|Size|CreatedDate|UpdatedDate)|xed)|o(?:nt(?:size|color)|rward)|loor|romCharCode)|watch|l(?:ink|o(?:ad|g)|astIndexOf)|a(?:sin|nchor|cos|t(?:tachEvent|ob|an(?:2)?)|pply|lert|b(?:s|ort))|r(?:ou(?:nd|teEvents)|e(?:size(?:By|To)|calc|turnValue|place|verse|l(?:oad|ease(?:Capture|Events)))|andom)|g(?:o|et(?:ResponseHeader|M(?:i(?:nutes|lliseconds)|onth)|Se(?:conds|lection)|Hours|Year|Time(?:zoneOffset)?|Da(?:y|te)|UTC(?:M(?:i(?:nutes|lliseconds)|onth)|Seconds|Hours|Da(?:y|te)|FullYear)|FullYear|A(?:ttention|llResponseHeaders)))|m(?:in|ove(?:B(?:y|elow)|To(?:Absolute)?|Above)|ergeAttributes|a(?:tch|rgins|x))|b(?:toa|ig|o(?:ld|rderWidths)|link|ack))\b(?=\()/ - }, { - token : ["punctuation.operator", "support.function.dom"], - regex : /(\.)(s(?:ub(?:stringData|mit)|plitText|e(?:t(?:NamedItem|Attribute(?:Node)?)|lect))|has(?:ChildNodes|Feature)|namedItem|c(?:l(?:ick|o(?:se|neNode))|reate(?:C(?:omment|DATASection|aption)|T(?:Head|extNode|Foot)|DocumentFragment|ProcessingInstruction|E(?:ntityReference|lement)|Attribute))|tabIndex|i(?:nsert(?:Row|Before|Cell|Data)|tem)|open|delete(?:Row|C(?:ell|aption)|T(?:Head|Foot)|Data)|focus|write(?:ln)?|a(?:dd|ppend(?:Child|Data))|re(?:set|place(?:Child|Data)|move(?:NamedItem|Child|Attribute(?:Node)?)?)|get(?:NamedItem|Element(?:sBy(?:Name|TagName)|ById)|Attribute(?:Node)?)|blur)\b(?=\()/ - }, { - token : ["punctuation.operator", "support.constant"], - regex : /(\.)(s(?:ystemLanguage|cr(?:ipts|ollbars|een(?:X|Y|Top|Left))|t(?:yle(?:Sheets)?|atus(?:Text|bar)?)|ibling(?:Below|Above)|ource|uffixes|e(?:curity(?:Policy)?|l(?:ection|f)))|h(?:istory|ost(?:name)?|as(?:h|Focus))|y|X(?:MLDocument|SLDocument)|n(?:ext|ame(?:space(?:s|URI)|Prop))|M(?:IN_VALUE|AX_VALUE)|c(?:haracterSet|o(?:n(?:structor|trollers)|okieEnabled|lorDepth|mp(?:onents|lete))|urrent|puClass|l(?:i(?:p(?:boardData)?|entInformation)|osed|asses)|alle(?:e|r)|rypto)|t(?:o(?:olbar|p)|ext(?:Transform|Indent|Decoration|Align)|ags)|SQRT(?:1_2|2)|i(?:n(?:ner(?:Height|Width)|put)|ds|gnoreCase)|zIndex|o(?:scpu|n(?:readystatechange|Line)|uter(?:Height|Width)|p(?:sProfile|ener)|ffscreenBuffering)|NEGATIVE_INFINITY|d(?:i(?:splay|alog(?:Height|Top|Width|Left|Arguments)|rectories)|e(?:scription|fault(?:Status|Ch(?:ecked|arset)|View)))|u(?:ser(?:Profile|Language|Agent)|n(?:iqueID|defined)|pdateInterval)|_content|p(?:ixelDepth|ort|ersonalbar|kcs11|l(?:ugins|atform)|a(?:thname|dding(?:Right|Bottom|Top|Left)|rent(?:Window|Layer)?|ge(?:X(?:Offset)?|Y(?:Offset)?))|r(?:o(?:to(?:col|type)|duct(?:Sub)?|mpter)|e(?:vious|fix)))|e(?:n(?:coding|abledPlugin)|x(?:ternal|pando)|mbeds)|v(?:isibility|endor(?:Sub)?|Linkcolor)|URLUnencoded|P(?:I|OSITIVE_INFINITY)|f(?:ilename|o(?:nt(?:Size|Family|Weight)|rmName)|rame(?:s|Element)|gColor)|E|whiteSpace|l(?:i(?:stStyleType|n(?:eHeight|kColor))|o(?:ca(?:tion(?:bar)?|lName)|wsrc)|e(?:ngth|ft(?:Context)?)|a(?:st(?:M(?:odified|atch)|Index|Paren)|yer(?:s|X)|nguage))|a(?:pp(?:MinorVersion|Name|Co(?:deName|re)|Version)|vail(?:Height|Top|Width|Left)|ll|r(?:ity|guments)|Linkcolor|bove)|r(?:ight(?:Context)?|e(?:sponse(?:XML|Text)|adyState))|global|x|m(?:imeTypes|ultiline|enubar|argin(?:Right|Bottom|Top|Left))|L(?:N(?:10|2)|OG(?:10E|2E))|b(?:o(?:ttom|rder(?:Width|RightWidth|BottomWidth|Style|Color|TopWidth|LeftWidth))|ufferDepth|elow|ackground(?:Color|Image)))\b/ - }, { - token : ["storage.type", "punctuation.operator", "support.function.firebug"], - regex : /(console)(\.)(warn|info|log|error|time|timeEnd|assert)\b/ - }, { - token : keywordMapper, - regex : identifierRe - }, { - token : "keyword.operator", - regex : /--|\+\+|[!$%&*+\-~]|===|==|=|!=|!==|<=|>=|<<=|>>=|>>>=|<>|<|>|!|&&|\|\||\?\:|\*=|%=|\+=|\-=|&=|\^=/, - next : "start" - }, { - token : "punctuation.operator", - regex : /\?|\:|\,|\;|\./, - next : "start" - }, { - token : "paren.lparen", - regex : /[\[({]/, - next : "start" - }, { - token : "paren.rparen", - regex : /[\])}]/ - }, { - token : "keyword.operator", - regex : /\/=?/, - next : "start" - }, { - token: "comment", - regex: /^#!.*$/ - } - ], - "start": [ - DocCommentHighlightRules.getStartRule("doc-start"), - { - token : "comment", // multi line comment - regex : "\\/\\*", - next : "comment_regex_allowed" - }, { - token : "comment", - regex : "\\/\\/", - next : "line_comment_regex_allowed" - }, { - token: "string.regexp", - regex: "\\/", - next: "regex" - }, { - token : "text", - regex : "\\s+|^$", - next : "start" - }, { - token: "empty", - regex: "", - next: "no_regex" - } - ], - "regex": [ - { - token: "regexp.keyword.operator", - regex: "\\\\(?:u[\\da-fA-F]{4}|x[\\da-fA-F]{2}|.)" - }, { - token: "string.regexp", - regex: "/[sxngimy]*", - next: "no_regex" - }, { - token : "invalid", - regex: /\{\d+\b,?\d*\}[+*]|[+*$^?][+*]|[$^][?]|\?{3,}/ - }, { - token : "constant.language.escape", - regex: /\(\?[:=!]|\)|\{\d+\b,?\d*\}|[+*]\?|[()$^+*?.]/ - }, { - token : "constant.language.delimiter", - regex: /\|/ - }, { - token: "constant.language.escape", - regex: /\[\^?/, - next: "regex_character_class" - }, { - token: "empty", - regex: "$", - next: "no_regex" - }, { - defaultToken: "string.regexp" - } - ], - "regex_character_class": [ - { - token: "regexp.keyword.operator", - regex: "\\\\(?:u[\\da-fA-F]{4}|x[\\da-fA-F]{2}|.)" - }, { - token: "constant.language.escape", - regex: "]", - next: "regex" - }, { - token: "constant.language.escape", - regex: "-" - }, { - token: "empty", - regex: "$", - next: "no_regex" - }, { - defaultToken: "string.regexp.charachterclass" - } - ], - "function_arguments": [ - { - token: "variable.parameter", - regex: identifierRe - }, { - token: "punctuation.operator", - regex: "[, ]+" - }, { - token: "punctuation.operator", - regex: "$" - }, { - token: "empty", - regex: "", - next: "no_regex" - } - ], - "comment_regex_allowed" : [ - {token : "comment", regex : "\\*\\/", next : "start"}, - {defaultToken : "comment"} - ], - "comment" : [ - {token : "comment", regex : "\\*\\/", next : "no_regex"}, - {defaultToken : "comment"} - ], - "line_comment_regex_allowed" : [ - {token : "comment", regex : "$|^", next : "start"}, - {defaultToken : "comment"} - ], - "line_comment" : [ - {token : "comment", regex : "$|^", next : "no_regex"}, - {defaultToken : "comment"} - ], - "qqstring" : [ - { - token : "constant.language.escape", - regex : escapedRe - }, { - token : "string", - regex : "\\\\$", - next : "qqstring" - }, { - token : "string", - regex : '"|$', - next : "no_regex" - }, { - defaultToken: "string" - } - ], - "qstring" : [ - { - token : "constant.language.escape", - regex : escapedRe - }, { - token : "string", - regex : "\\\\$", - next : "qstring" - }, { - token : "string", - regex : "'|$", - next : "no_regex" - }, { - defaultToken: "string" - } - ] - }; - - this.embedRules(DocCommentHighlightRules, "doc-", - [ DocCommentHighlightRules.getEndRule("no_regex") ]); -}; - -oop.inherits(JavaScriptHighlightRules, TextHighlightRules); - -exports.JavaScriptHighlightRules = JavaScriptHighlightRules; -}); - -ace.define('ace/mode/doc_comment_highlight_rules', ['require', 'exports', 'module' , 'ace/lib/oop', 'ace/mode/text_highlight_rules'], function(require, exports, module) { - - -var oop = require("../lib/oop"); -var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; - -var DocCommentHighlightRules = function() { - - this.$rules = { - "start" : [ { - token : "comment.doc.tag", - regex : "@[\\w\\d_]+" // TODO: fix email addresses - }, { - token : "comment.doc.tag", - regex : "\\bTODO\\b" - }, { - defaultToken : "comment.doc" - }] - }; -}; - -oop.inherits(DocCommentHighlightRules, TextHighlightRules); - -DocCommentHighlightRules.getStartRule = function(start) { - return { - token : "comment.doc", // doc comment - regex : "\\/\\*(?=\\*)", - next : start - }; -}; - -DocCommentHighlightRules.getEndRule = function (start) { - return { - token : "comment.doc", // closing comment - regex : "\\*\\/", - next : start - }; -}; - - -exports.DocCommentHighlightRules = DocCommentHighlightRules; - -}); - -ace.define('ace/mode/matching_brace_outdent', ['require', 'exports', 'module' , 'ace/range'], function(require, exports, module) { - - -var Range = require("../range").Range; - -var MatchingBraceOutdent = function() {}; - -(function() { - - this.checkOutdent = function(line, input) { - if (! /^\s+$/.test(line)) - return false; - - return /^\s*\}/.test(input); - }; - - this.autoOutdent = function(doc, row) { - var line = doc.getLine(row); - var match = line.match(/^(\s*\})/); - - if (!match) return 0; - - var column = match[1].length; - var openBracePos = doc.findMatchingBracket({row: row, column: column}); - - if (!openBracePos || openBracePos.row == row) return 0; - - var indent = this.$getIndent(doc.getLine(openBracePos.row)); - doc.replace(new Range(row, 0, row, column-1), indent); - }; - - this.$getIndent = function(line) { - return line.match(/^\s*/)[0]; - }; - -}).call(MatchingBraceOutdent.prototype); - -exports.MatchingBraceOutdent = MatchingBraceOutdent; -}); - -ace.define('ace/mode/behaviour/cstyle', ['require', 'exports', 'module' , 'ace/lib/oop', 'ace/mode/behaviour', 'ace/token_iterator', 'ace/lib/lang'], function(require, exports, module) { - - -var oop = require("../../lib/oop"); -var Behaviour = require("../behaviour").Behaviour; -var TokenIterator = require("../../token_iterator").TokenIterator; -var lang = require("../../lib/lang"); - -var SAFE_INSERT_IN_TOKENS = - ["text", "paren.rparen", "punctuation.operator"]; -var SAFE_INSERT_BEFORE_TOKENS = - ["text", "paren.rparen", "punctuation.operator", "comment"]; - - -var autoInsertedBrackets = 0; -var autoInsertedRow = -1; -var autoInsertedLineEnd = ""; -var maybeInsertedBrackets = 0; -var maybeInsertedRow = -1; -var maybeInsertedLineStart = ""; -var maybeInsertedLineEnd = ""; - -var CstyleBehaviour = function () { - - CstyleBehaviour.isSaneInsertion = function(editor, session) { - var cursor = editor.getCursorPosition(); - var iterator = new TokenIterator(session, cursor.row, cursor.column); - if (!this.$matchTokenType(iterator.getCurrentToken() || "text", SAFE_INSERT_IN_TOKENS)) { - var iterator2 = new TokenIterator(session, cursor.row, cursor.column + 1); - if (!this.$matchTokenType(iterator2.getCurrentToken() || "text", SAFE_INSERT_IN_TOKENS)) - return false; - } - iterator.stepForward(); - return iterator.getCurrentTokenRow() !== cursor.row || - this.$matchTokenType(iterator.getCurrentToken() || "text", SAFE_INSERT_BEFORE_TOKENS); - }; - - CstyleBehaviour.$matchTokenType = function(token, types) { - return types.indexOf(token.type || token) > -1; - }; - - CstyleBehaviour.recordAutoInsert = function(editor, session, bracket) { - var cursor = editor.getCursorPosition(); - var line = session.doc.getLine(cursor.row); - if (!this.isAutoInsertedClosing(cursor, line, autoInsertedLineEnd[0])) - autoInsertedBrackets = 0; - autoInsertedRow = cursor.row; - autoInsertedLineEnd = bracket + line.substr(cursor.column); - autoInsertedBrackets++; - }; - - CstyleBehaviour.recordMaybeInsert = function(editor, session, bracket) { - var cursor = editor.getCursorPosition(); - var line = session.doc.getLine(cursor.row); - if (!this.isMaybeInsertedClosing(cursor, line)) - maybeInsertedBrackets = 0; - maybeInsertedRow = cursor.row; - maybeInsertedLineStart = line.substr(0, cursor.column) + bracket; - maybeInsertedLineEnd = line.substr(cursor.column); - maybeInsertedBrackets++; - }; - - CstyleBehaviour.isAutoInsertedClosing = function(cursor, line, bracket) { - return autoInsertedBrackets > 0 && - cursor.row === autoInsertedRow && - bracket === autoInsertedLineEnd[0] && - line.substr(cursor.column) === autoInsertedLineEnd; - }; - - CstyleBehaviour.isMaybeInsertedClosing = function(cursor, line) { - return maybeInsertedBrackets > 0 && - cursor.row === maybeInsertedRow && - line.substr(cursor.column) === maybeInsertedLineEnd && - line.substr(0, cursor.column) == maybeInsertedLineStart; - }; - - CstyleBehaviour.popAutoInsertedClosing = function() { - autoInsertedLineEnd = autoInsertedLineEnd.substr(1); - autoInsertedBrackets--; - }; - - CstyleBehaviour.clearMaybeInsertedClosing = function() { - maybeInsertedBrackets = 0; - maybeInsertedRow = -1; - }; - - this.add("braces", "insertion", function (state, action, editor, session, text) { - var cursor = editor.getCursorPosition(); - var line = session.doc.getLine(cursor.row); - if (text == '{') { - var selection = editor.getSelectionRange(); - var selected = session.doc.getTextRange(selection); - if (selected !== "" && selected !== "{" && editor.getWrapBehavioursEnabled()) { - return { - text: '{' + selected + '}', - selection: false - }; - } else if (CstyleBehaviour.isSaneInsertion(editor, session)) { - if (/[\]\}\)]/.test(line[cursor.column]) || editor.inMultiSelectMode) { - CstyleBehaviour.recordAutoInsert(editor, session, "}"); - return { - text: '{}', - selection: [1, 1] - }; - } else { - CstyleBehaviour.recordMaybeInsert(editor, session, "{"); - return { - text: '{', - selection: [1, 1] - }; - } - } - } else if (text == '}') { - var rightChar = line.substring(cursor.column, cursor.column + 1); - if (rightChar == '}') { - var matching = session.$findOpeningBracket('}', {column: cursor.column + 1, row: cursor.row}); - if (matching !== null && CstyleBehaviour.isAutoInsertedClosing(cursor, line, text)) { - CstyleBehaviour.popAutoInsertedClosing(); - return { - text: '', - selection: [1, 1] - }; - } - } - } else if (text == "\n" || text == "\r\n") { - var closing = ""; - if (CstyleBehaviour.isMaybeInsertedClosing(cursor, line)) { - closing = lang.stringRepeat("}", maybeInsertedBrackets); - CstyleBehaviour.clearMaybeInsertedClosing(); - } - var rightChar = line.substring(cursor.column, cursor.column + 1); - if (rightChar === '}') { - var openBracePos = session.findMatchingBracket({row: cursor.row, column: cursor.column+1}, '}'); - if (!openBracePos) - return null; - var next_indent = this.$getIndent(session.getLine(openBracePos.row)); - } else if (closing) { - var next_indent = this.$getIndent(line); - } else { - return; - } - var indent = next_indent + session.getTabString(); - - return { - text: '\n' + indent + '\n' + next_indent + closing, - selection: [1, indent.length, 1, indent.length] - }; - } else { - CstyleBehaviour.clearMaybeInsertedClosing(); - } - }); - - this.add("braces", "deletion", function (state, action, editor, session, range) { - var selected = session.doc.getTextRange(range); - if (!range.isMultiLine() && selected == '{') { - var line = session.doc.getLine(range.start.row); - var rightChar = line.substring(range.end.column, range.end.column + 1); - if (rightChar == '}') { - range.end.column++; - return range; - } else { - maybeInsertedBrackets--; - } - } - }); - - this.add("parens", "insertion", function (state, action, editor, session, text) { - if (text == '(') { - var selection = editor.getSelectionRange(); - var selected = session.doc.getTextRange(selection); - if (selected !== "" && editor.getWrapBehavioursEnabled()) { - return { - text: '(' + selected + ')', - selection: false - }; - } else if (CstyleBehaviour.isSaneInsertion(editor, session)) { - CstyleBehaviour.recordAutoInsert(editor, session, ")"); - return { - text: '()', - selection: [1, 1] - }; - } - } else if (text == ')') { - var cursor = editor.getCursorPosition(); - var line = session.doc.getLine(cursor.row); - var rightChar = line.substring(cursor.column, cursor.column + 1); - if (rightChar == ')') { - var matching = session.$findOpeningBracket(')', {column: cursor.column + 1, row: cursor.row}); - if (matching !== null && CstyleBehaviour.isAutoInsertedClosing(cursor, line, text)) { - CstyleBehaviour.popAutoInsertedClosing(); - return { - text: '', - selection: [1, 1] - }; - } - } - } - }); - - this.add("parens", "deletion", function (state, action, editor, session, range) { - var selected = session.doc.getTextRange(range); - if (!range.isMultiLine() && selected == '(') { - var line = session.doc.getLine(range.start.row); - var rightChar = line.substring(range.start.column + 1, range.start.column + 2); - if (rightChar == ')') { - range.end.column++; - return range; - } - } - }); - - this.add("brackets", "insertion", function (state, action, editor, session, text) { - if (text == '[') { - var selection = editor.getSelectionRange(); - var selected = session.doc.getTextRange(selection); - if (selected !== "" && editor.getWrapBehavioursEnabled()) { - return { - text: '[' + selected + ']', - selection: false - }; - } else if (CstyleBehaviour.isSaneInsertion(editor, session)) { - CstyleBehaviour.recordAutoInsert(editor, session, "]"); - return { - text: '[]', - selection: [1, 1] - }; - } - } else if (text == ']') { - var cursor = editor.getCursorPosition(); - var line = session.doc.getLine(cursor.row); - var rightChar = line.substring(cursor.column, cursor.column + 1); - if (rightChar == ']') { - var matching = session.$findOpeningBracket(']', {column: cursor.column + 1, row: cursor.row}); - if (matching !== null && CstyleBehaviour.isAutoInsertedClosing(cursor, line, text)) { - CstyleBehaviour.popAutoInsertedClosing(); - return { - text: '', - selection: [1, 1] - }; - } - } - } - }); - - this.add("brackets", "deletion", function (state, action, editor, session, range) { - var selected = session.doc.getTextRange(range); - if (!range.isMultiLine() && selected == '[') { - var line = session.doc.getLine(range.start.row); - var rightChar = line.substring(range.start.column + 1, range.start.column + 2); - if (rightChar == ']') { - range.end.column++; - return range; - } - } - }); - - this.add("string_dquotes", "insertion", function (state, action, editor, session, text) { - if (text == '"' || text == "'") { - var quote = text; - var selection = editor.getSelectionRange(); - var selected = session.doc.getTextRange(selection); - if (selected !== "" && selected !== "'" && selected != '"' && editor.getWrapBehavioursEnabled()) { - return { - text: quote + selected + quote, - selection: false - }; - } else { - var cursor = editor.getCursorPosition(); - var line = session.doc.getLine(cursor.row); - var leftChar = line.substring(cursor.column-1, cursor.column); - if (leftChar == '\\') { - return null; - } - var tokens = session.getTokens(selection.start.row); - var col = 0, token; - var quotepos = -1; // Track whether we're inside an open quote. - - for (var x = 0; x < tokens.length; x++) { - token = tokens[x]; - if (token.type == "string") { - quotepos = -1; - } else if (quotepos < 0) { - quotepos = token.value.indexOf(quote); - } - if ((token.value.length + col) > selection.start.column) { - break; - } - col += tokens[x].value.length; - } - if (!token || (quotepos < 0 && token.type !== "comment" && (token.type !== "string" || ((selection.start.column !== token.value.length+col-1) && token.value.lastIndexOf(quote) === token.value.length-1)))) { - if (!CstyleBehaviour.isSaneInsertion(editor, session)) - return; - return { - text: quote + quote, - selection: [1,1] - }; - } else if (token && token.type === "string") { - var rightChar = line.substring(cursor.column, cursor.column + 1); - if (rightChar == quote) { - return { - text: '', - selection: [1, 1] - }; - } - } - } - } - }); - - this.add("string_dquotes", "deletion", function (state, action, editor, session, range) { - var selected = session.doc.getTextRange(range); - if (!range.isMultiLine() && (selected == '"' || selected == "'")) { - var line = session.doc.getLine(range.start.row); - var rightChar = line.substring(range.start.column + 1, range.start.column + 2); - if (rightChar == selected) { - range.end.column++; - return range; - } - } - }); - -}; - -oop.inherits(CstyleBehaviour, Behaviour); - -exports.CstyleBehaviour = CstyleBehaviour; -}); - -ace.define('ace/mode/folding/cstyle', ['require', 'exports', 'module' , 'ace/lib/oop', 'ace/range', 'ace/mode/folding/fold_mode'], function(require, exports, module) { - - -var oop = require("../../lib/oop"); -var Range = require("../../range").Range; -var BaseFoldMode = require("./fold_mode").FoldMode; - -var FoldMode = exports.FoldMode = function(commentRegex) { - if (commentRegex) { - this.foldingStartMarker = new RegExp( - this.foldingStartMarker.source.replace(/\|[^|]*?$/, "|" + commentRegex.start) - ); - this.foldingStopMarker = new RegExp( - this.foldingStopMarker.source.replace(/\|[^|]*?$/, "|" + commentRegex.end) - ); - } -}; -oop.inherits(FoldMode, BaseFoldMode); - -(function() { - - this.foldingStartMarker = /(\{|\[)[^\}\]]*$|^\s*(\/\*)/; - this.foldingStopMarker = /^[^\[\{]*(\}|\])|^[\s\*]*(\*\/)/; - - this.getFoldWidgetRange = function(session, foldStyle, row, forceMultiline) { - var line = session.getLine(row); - var match = line.match(this.foldingStartMarker); - if (match) { - var i = match.index; - - if (match[1]) - return this.openingBracketBlock(session, match[1], row, i); - - var range = session.getCommentFoldRange(row, i + match[0].length, 1); - - if (range && !range.isMultiLine()) { - if (forceMultiline) { - range = this.getSectionRange(session, row); - } else if (foldStyle != "all") - range = null; - } - - return range; - } - - if (foldStyle === "markbegin") - return; - - var match = line.match(this.foldingStopMarker); - if (match) { - var i = match.index + match[0].length; - - if (match[1]) - return this.closingBracketBlock(session, match[1], row, i); - - return session.getCommentFoldRange(row, i, -1); - } - }; - - this.getSectionRange = function(session, row) { - var line = session.getLine(row); - var startIndent = line.search(/\S/); - var startRow = row; - var startColumn = line.length; - row = row + 1; - var endRow = row; - var maxRow = session.getLength(); - while (++row < maxRow) { - line = session.getLine(row); - var indent = line.search(/\S/); - if (indent === -1) - continue; - if (startIndent > indent) - break; - var subRange = this.getFoldWidgetRange(session, "all", row); - - if (subRange) { - if (subRange.start.row <= startRow) { - break; - } else if (subRange.isMultiLine()) { - row = subRange.end.row; - } else if (startIndent == indent) { - break; - } - } - endRow = row; - } - - return new Range(startRow, startColumn, endRow, session.getLine(endRow).length); - }; - -}).call(FoldMode.prototype); - -}); -ace.define('ace/mode/java_highlight_rules', ['require', 'exports', 'module' , 'ace/lib/oop', 'ace/mode/doc_comment_highlight_rules', 'ace/mode/text_highlight_rules'], function(require, exports, module) { - - -var oop = require("../lib/oop"); -var DocCommentHighlightRules = require("./doc_comment_highlight_rules").DocCommentHighlightRules; -var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; - -var JavaHighlightRules = function() { - var keywords = ( - "abstract|continue|for|new|switch|" + - "assert|default|goto|package|synchronized|" + - "boolean|do|if|private|this|" + - "break|double|implements|protected|throw|" + - "byte|else|import|public|throws|" + - "case|enum|instanceof|return|transient|" + - "catch|extends|int|short|try|" + - "char|final|interface|static|void|" + - "class|finally|long|strictfp|volatile|" + - "const|float|native|super|while" - ); - - var buildinConstants = ("null|Infinity|NaN|undefined"); - - - var langClasses = ( - "AbstractMethodError|AssertionError|ClassCircularityError|"+ - "ClassFormatError|Deprecated|EnumConstantNotPresentException|"+ - "ExceptionInInitializerError|IllegalAccessError|"+ - "IllegalThreadStateException|InstantiationError|InternalError|"+ - "NegativeArraySizeException|NoSuchFieldError|Override|Process|"+ - "ProcessBuilder|SecurityManager|StringIndexOutOfBoundsException|"+ - "SuppressWarnings|TypeNotPresentException|UnknownError|"+ - "UnsatisfiedLinkError|UnsupportedClassVersionError|VerifyError|"+ - "InstantiationException|IndexOutOfBoundsException|"+ - "ArrayIndexOutOfBoundsException|CloneNotSupportedException|"+ - "NoSuchFieldException|IllegalArgumentException|NumberFormatException|"+ - "SecurityException|Void|InheritableThreadLocal|IllegalStateException|"+ - "InterruptedException|NoSuchMethodException|IllegalAccessException|"+ - "UnsupportedOperationException|Enum|StrictMath|Package|Compiler|"+ - "Readable|Runtime|StringBuilder|Math|IncompatibleClassChangeError|"+ - "NoSuchMethodError|ThreadLocal|RuntimePermission|ArithmeticException|"+ - "NullPointerException|Long|Integer|Short|Byte|Double|Number|Float|"+ - "Character|Boolean|StackTraceElement|Appendable|StringBuffer|"+ - "Iterable|ThreadGroup|Runnable|Thread|IllegalMonitorStateException|"+ - "StackOverflowError|OutOfMemoryError|VirtualMachineError|"+ - "ArrayStoreException|ClassCastException|LinkageError|"+ - "NoClassDefFoundError|ClassNotFoundException|RuntimeException|"+ - "Exception|ThreadDeath|Error|Throwable|System|ClassLoader|"+ - "Cloneable|Class|CharSequence|Comparable|String|Object" - ); - - var keywordMapper = this.createKeywordMapper({ - "variable.language": "this", - "keyword": keywords, - "constant.language": buildinConstants, - "support.function": langClasses - }, "identifier"); - - this.$rules = { - "start" : [ - { - token : "comment", - regex : "\\/\\/.*$" - }, - DocCommentHighlightRules.getStartRule("doc-start"), - { - token : "comment", // multi line comment - regex : "\\/\\*", - next : "comment" - }, { - token : "string.regexp", - regex : "[/](?:(?:\\[(?:\\\\]|[^\\]])+\\])|(?:\\\\/|[^\\]/]))*[/]\\w*\\s*(?=[).,;]|$)" - }, { - token : "string", // single line - regex : '["](?:(?:\\\\.)|(?:[^"\\\\]))*?["]' - }, { - token : "string", // single line - regex : "['](?:(?:\\\\.)|(?:[^'\\\\]))*?[']" - }, { - token : "constant.numeric", // hex - regex : "0[xX][0-9a-fA-F]+\\b" - }, { - token : "constant.numeric", // float - regex : "[+-]?\\d+(?:(?:\\.\\d*)?(?:[eE][+-]?\\d+)?)?\\b" - }, { - token : "constant.language.boolean", - regex : "(?:true|false)\\b" - }, { - token : keywordMapper, - regex : "[a-zA-Z_$][a-zA-Z0-9_$]*\\b" - }, { - token : "keyword.operator", - regex : "!|\\$|%|&|\\*|\\-\\-|\\-|\\+\\+|\\+|~|===|==|=|!=|!==|<=|>=|<<=|>>=|>>>=|<>|<|>|!|&&|\\|\\||\\?\\:|\\*=|%=|\\+=|\\-=|&=|\\^=|\\b(?:in|instanceof|new|delete|typeof|void)" - }, { - token : "lparen", - regex : "[[({]" - }, { - token : "rparen", - regex : "[\\])}]" - }, { - token : "text", - regex : "\\s+" - } - ], - "comment" : [ - { - token : "comment", // closing comment - regex : ".*?\\*\\/", - next : "start" - }, { - token : "comment", // comment spanning whole line - regex : ".+" - } - ] - }; - - this.embedRules(DocCommentHighlightRules, "doc-", - [ DocCommentHighlightRules.getEndRule("start") ]); -}; - -oop.inherits(JavaHighlightRules, TextHighlightRules); - -exports.JavaHighlightRules = JavaHighlightRules; -}); diff --git a/IDE/jsrealb-ide/ace-src-noconflict/mode-javascript.js b/IDE/jsrealb-ide/ace-src-noconflict/mode-javascript.js deleted file mode 100644 index 7526979d..00000000 --- a/IDE/jsrealb-ide/ace-src-noconflict/mode-javascript.js +++ /dev/null @@ -1,936 +0,0 @@ -/* ***** BEGIN LICENSE BLOCK ***** - * Distributed under the BSD license: - * - * Copyright (c) 2010, Ajax.org B.V. - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are met: - * * Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * * Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * * Neither the name of Ajax.org B.V. nor the - * names of its contributors may be used to endorse or promote products - * derived from this software without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND - * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED - * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE - * DISCLAIMED. IN NO EVENT SHALL AJAX.ORG B.V. BE LIABLE FOR ANY - * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES - * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; - * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND - * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - * - * ***** END LICENSE BLOCK ***** */ - -ace.define('ace/mode/javascript', ['require', 'exports', 'module' , 'ace/lib/oop', 'ace/mode/text', 'ace/tokenizer', 'ace/mode/javascript_highlight_rules', 'ace/mode/matching_brace_outdent', 'ace/range', 'ace/worker/worker_client', 'ace/mode/behaviour/cstyle', 'ace/mode/folding/cstyle'], function(require, exports, module) { - - -var oop = require("../lib/oop"); -var TextMode = require("./text").Mode; -var Tokenizer = require("../tokenizer").Tokenizer; -var JavaScriptHighlightRules = require("./javascript_highlight_rules").JavaScriptHighlightRules; -var MatchingBraceOutdent = require("./matching_brace_outdent").MatchingBraceOutdent; -var Range = require("../range").Range; -var WorkerClient = require("../worker/worker_client").WorkerClient; -var CstyleBehaviour = require("./behaviour/cstyle").CstyleBehaviour; -var CStyleFoldMode = require("./folding/cstyle").FoldMode; - -var Mode = function() { - this.HighlightRules = JavaScriptHighlightRules; - - this.$outdent = new MatchingBraceOutdent(); - this.$behaviour = new CstyleBehaviour(); - this.foldingRules = new CStyleFoldMode(); -}; -oop.inherits(Mode, TextMode); - -(function() { - - this.lineCommentStart = "//"; - this.blockComment = {start: "/*", end: "*/"}; - - this.getNextLineIndent = function(state, line, tab) { - var indent = this.$getIndent(line); - - var tokenizedLine = this.getTokenizer().getLineTokens(line, state); - var tokens = tokenizedLine.tokens; - var endState = tokenizedLine.state; - - if (tokens.length && tokens[tokens.length-1].type == "comment") { - return indent; - } - - if (state == "start" || state == "no_regex") { - var match = line.match(/^.*(?:\bcase\b.*\:|[\{\(\[])\s*$/); - if (match) { - indent += tab; - } - } else if (state == "doc-start") { - if (endState == "start" || endState == "no_regex") { - return ""; - } - var match = line.match(/^\s*(\/?)\*/); - if (match) { - if (match[1]) { - indent += " "; - } - indent += "* "; - } - } - - return indent; - }; - - this.checkOutdent = function(state, line, input) { - return this.$outdent.checkOutdent(line, input); - }; - - this.autoOutdent = function(state, doc, row) { - this.$outdent.autoOutdent(doc, row); - }; - - this.createWorker = function(session) { - var worker = new WorkerClient(["ace"], "ace/mode/javascript_worker", "JavaScriptWorker"); - worker.attachToDocument(session.getDocument()); - - worker.on("jslint", function(results) { - session.setAnnotations(results.data); - }); - - worker.on("terminate", function() { - session.clearAnnotations(); - }); - - return worker; - }; - - this.$id = "ace/mode/javascript"; -}).call(Mode.prototype); - -exports.Mode = Mode; -}); - -ace.define('ace/mode/javascript_highlight_rules', ['require', 'exports', 'module' , 'ace/lib/oop', 'ace/mode/doc_comment_highlight_rules', 'ace/mode/text_highlight_rules'], function(require, exports, module) { - - -var oop = require("../lib/oop"); -var DocCommentHighlightRules = require("./doc_comment_highlight_rules").DocCommentHighlightRules; -var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; - -var JavaScriptHighlightRules = function() { - var keywordMapper = this.createKeywordMapper({ - "variable.language": - "Array|Boolean|Date|Function|Iterator|Number|Object|RegExp|String|Proxy|" + // Constructors - "Namespace|QName|XML|XMLList|" + // E4X - "ArrayBuffer|Float32Array|Float64Array|Int16Array|Int32Array|Int8Array|" + - "Uint16Array|Uint32Array|Uint8Array|Uint8ClampedArray|" + - "Error|EvalError|InternalError|RangeError|ReferenceError|StopIteration|" + // Errors - "SyntaxError|TypeError|URIError|" + - "decodeURI|decodeURIComponent|encodeURI|encodeURIComponent|eval|isFinite|" + // Non-constructor functions - "isNaN|parseFloat|parseInt|" + - "JSON|Math|" + // Other - "this|arguments|prototype|window|document" , // Pseudo - "keyword": - "const|yield|import|get|set|" + - "break|case|catch|continue|default|delete|do|else|finally|for|function|" + - "if|in|instanceof|new|return|switch|throw|try|typeof|let|var|while|with|debugger|" + - "__parent__|__count__|escape|unescape|with|__proto__|" + - "class|enum|extends|super|export|implements|private|public|interface|package|protected|static", - "storage.type": - "const|let|var|function", - "constant.language": - "null|Infinity|NaN|undefined", - "support.function": - "alert", - "constant.language.boolean": "true|false" - }, "identifier"); - var kwBeforeRe = "case|do|else|finally|in|instanceof|return|throw|try|typeof|yield|void"; - var identifierRe = "[a-zA-Z\\$_\u00a1-\uffff][a-zA-Z\\d\\$_\u00a1-\uffff]*\\b"; - - var escapedRe = "\\\\(?:x[0-9a-fA-F]{2}|" + // hex - "u[0-9a-fA-F]{4}|" + // unicode - "[0-2][0-7]{0,2}|" + // oct - "3[0-6][0-7]?|" + // oct - "37[0-7]?|" + // oct - "[4-7][0-7]?|" + //oct - ".)"; - - this.$rules = { - "no_regex" : [ - { - token : "comment", - regex : "\\/\\/", - next : "line_comment" - }, - DocCommentHighlightRules.getStartRule("doc-start"), - { - token : "comment", // multi line comment - regex : /\/\*/, - next : "comment" - }, { - token : "string", - regex : "'(?=.)", - next : "qstring" - }, { - token : "string", - regex : '"(?=.)', - next : "qqstring" - }, { - token : "constant.numeric", // hex - regex : /0[xX][0-9a-fA-F]+\b/ - }, { - token : "constant.numeric", // float - regex : /[+-]?\d+(?:(?:\.\d*)?(?:[eE][+-]?\d+)?)?\b/ - }, { - token : [ - "storage.type", "punctuation.operator", "support.function", - "punctuation.operator", "entity.name.function", "text","keyword.operator" - ], - regex : "(" + identifierRe + ")(\\.)(prototype)(\\.)(" + identifierRe +")(\\s*)(=)", - next: "function_arguments" - }, { - token : [ - "storage.type", "punctuation.operator", "entity.name.function", "text", - "keyword.operator", "text", "storage.type", "text", "paren.lparen" - ], - regex : "(" + identifierRe + ")(\\.)(" + identifierRe +")(\\s*)(=)(\\s*)(function)(\\s*)(\\()", - next: "function_arguments" - }, { - token : [ - "entity.name.function", "text", "keyword.operator", "text", "storage.type", - "text", "paren.lparen" - ], - regex : "(" + identifierRe +")(\\s*)(=)(\\s*)(function)(\\s*)(\\()", - next: "function_arguments" - }, { - token : [ - "storage.type", "punctuation.operator", "entity.name.function", "text", - "keyword.operator", "text", - "storage.type", "text", "entity.name.function", "text", "paren.lparen" - ], - regex : "(" + identifierRe + ")(\\.)(" + identifierRe +")(\\s*)(=)(\\s*)(function)(\\s+)(\\w+)(\\s*)(\\()", - next: "function_arguments" - }, { - token : [ - "storage.type", "text", "entity.name.function", "text", "paren.lparen" - ], - regex : "(function)(\\s+)(" + identifierRe + ")(\\s*)(\\()", - next: "function_arguments" - }, { - token : [ - "entity.name.function", "text", "punctuation.operator", - "text", "storage.type", "text", "paren.lparen" - ], - regex : "(" + identifierRe + ")(\\s*)(:)(\\s*)(function)(\\s*)(\\()", - next: "function_arguments" - }, { - token : [ - "text", "text", "storage.type", "text", "paren.lparen" - ], - regex : "(:)(\\s*)(function)(\\s*)(\\()", - next: "function_arguments" - }, { - token : "keyword", - regex : "(?:" + kwBeforeRe + ")\\b", - next : "start" - }, { - token : ["punctuation.operator", "support.function"], - regex : /(\.)(s(?:h(?:ift|ow(?:Mod(?:elessDialog|alDialog)|Help))|croll(?:X|By(?:Pages|Lines)?|Y|To)?|t(?:op|rike)|i(?:n|zeToContent|debar|gnText)|ort|u(?:p|b(?:str(?:ing)?)?)|pli(?:ce|t)|e(?:nd|t(?:Re(?:sizable|questHeader)|M(?:i(?:nutes|lliseconds)|onth)|Seconds|Ho(?:tKeys|urs)|Year|Cursor|Time(?:out)?|Interval|ZOptions|Date|UTC(?:M(?:i(?:nutes|lliseconds)|onth)|Seconds|Hours|Date|FullYear)|FullYear|Active)|arch)|qrt|lice|avePreferences|mall)|h(?:ome|andleEvent)|navigate|c(?:har(?:CodeAt|At)|o(?:s|n(?:cat|textual|firm)|mpile)|eil|lear(?:Timeout|Interval)?|a(?:ptureEvents|ll)|reate(?:StyleSheet|Popup|EventObject))|t(?:o(?:GMTString|S(?:tring|ource)|U(?:TCString|pperCase)|Lo(?:caleString|werCase))|est|a(?:n|int(?:Enabled)?))|i(?:s(?:NaN|Finite)|ndexOf|talics)|d(?:isableExternalCapture|ump|etachEvent)|u(?:n(?:shift|taint|escape|watch)|pdateCommands)|j(?:oin|avaEnabled)|p(?:o(?:p|w)|ush|lugins.refresh|a(?:ddings|rse(?:Int|Float)?)|r(?:int|ompt|eference))|e(?:scape|nableExternalCapture|val|lementFromPoint|x(?:p|ec(?:Script|Command)?))|valueOf|UTC|queryCommand(?:State|Indeterm|Enabled|Value)|f(?:i(?:nd|le(?:ModifiedDate|Size|CreatedDate|UpdatedDate)|xed)|o(?:nt(?:size|color)|rward)|loor|romCharCode)|watch|l(?:ink|o(?:ad|g)|astIndexOf)|a(?:sin|nchor|cos|t(?:tachEvent|ob|an(?:2)?)|pply|lert|b(?:s|ort))|r(?:ou(?:nd|teEvents)|e(?:size(?:By|To)|calc|turnValue|place|verse|l(?:oad|ease(?:Capture|Events)))|andom)|g(?:o|et(?:ResponseHeader|M(?:i(?:nutes|lliseconds)|onth)|Se(?:conds|lection)|Hours|Year|Time(?:zoneOffset)?|Da(?:y|te)|UTC(?:M(?:i(?:nutes|lliseconds)|onth)|Seconds|Hours|Da(?:y|te)|FullYear)|FullYear|A(?:ttention|llResponseHeaders)))|m(?:in|ove(?:B(?:y|elow)|To(?:Absolute)?|Above)|ergeAttributes|a(?:tch|rgins|x))|b(?:toa|ig|o(?:ld|rderWidths)|link|ack))\b(?=\()/ - }, { - token : ["punctuation.operator", "support.function.dom"], - regex : /(\.)(s(?:ub(?:stringData|mit)|plitText|e(?:t(?:NamedItem|Attribute(?:Node)?)|lect))|has(?:ChildNodes|Feature)|namedItem|c(?:l(?:ick|o(?:se|neNode))|reate(?:C(?:omment|DATASection|aption)|T(?:Head|extNode|Foot)|DocumentFragment|ProcessingInstruction|E(?:ntityReference|lement)|Attribute))|tabIndex|i(?:nsert(?:Row|Before|Cell|Data)|tem)|open|delete(?:Row|C(?:ell|aption)|T(?:Head|Foot)|Data)|focus|write(?:ln)?|a(?:dd|ppend(?:Child|Data))|re(?:set|place(?:Child|Data)|move(?:NamedItem|Child|Attribute(?:Node)?)?)|get(?:NamedItem|Element(?:sBy(?:Name|TagName)|ById)|Attribute(?:Node)?)|blur)\b(?=\()/ - }, { - token : ["punctuation.operator", "support.constant"], - regex : /(\.)(s(?:ystemLanguage|cr(?:ipts|ollbars|een(?:X|Y|Top|Left))|t(?:yle(?:Sheets)?|atus(?:Text|bar)?)|ibling(?:Below|Above)|ource|uffixes|e(?:curity(?:Policy)?|l(?:ection|f)))|h(?:istory|ost(?:name)?|as(?:h|Focus))|y|X(?:MLDocument|SLDocument)|n(?:ext|ame(?:space(?:s|URI)|Prop))|M(?:IN_VALUE|AX_VALUE)|c(?:haracterSet|o(?:n(?:structor|trollers)|okieEnabled|lorDepth|mp(?:onents|lete))|urrent|puClass|l(?:i(?:p(?:boardData)?|entInformation)|osed|asses)|alle(?:e|r)|rypto)|t(?:o(?:olbar|p)|ext(?:Transform|Indent|Decoration|Align)|ags)|SQRT(?:1_2|2)|i(?:n(?:ner(?:Height|Width)|put)|ds|gnoreCase)|zIndex|o(?:scpu|n(?:readystatechange|Line)|uter(?:Height|Width)|p(?:sProfile|ener)|ffscreenBuffering)|NEGATIVE_INFINITY|d(?:i(?:splay|alog(?:Height|Top|Width|Left|Arguments)|rectories)|e(?:scription|fault(?:Status|Ch(?:ecked|arset)|View)))|u(?:ser(?:Profile|Language|Agent)|n(?:iqueID|defined)|pdateInterval)|_content|p(?:ixelDepth|ort|ersonalbar|kcs11|l(?:ugins|atform)|a(?:thname|dding(?:Right|Bottom|Top|Left)|rent(?:Window|Layer)?|ge(?:X(?:Offset)?|Y(?:Offset)?))|r(?:o(?:to(?:col|type)|duct(?:Sub)?|mpter)|e(?:vious|fix)))|e(?:n(?:coding|abledPlugin)|x(?:ternal|pando)|mbeds)|v(?:isibility|endor(?:Sub)?|Linkcolor)|URLUnencoded|P(?:I|OSITIVE_INFINITY)|f(?:ilename|o(?:nt(?:Size|Family|Weight)|rmName)|rame(?:s|Element)|gColor)|E|whiteSpace|l(?:i(?:stStyleType|n(?:eHeight|kColor))|o(?:ca(?:tion(?:bar)?|lName)|wsrc)|e(?:ngth|ft(?:Context)?)|a(?:st(?:M(?:odified|atch)|Index|Paren)|yer(?:s|X)|nguage))|a(?:pp(?:MinorVersion|Name|Co(?:deName|re)|Version)|vail(?:Height|Top|Width|Left)|ll|r(?:ity|guments)|Linkcolor|bove)|r(?:ight(?:Context)?|e(?:sponse(?:XML|Text)|adyState))|global|x|m(?:imeTypes|ultiline|enubar|argin(?:Right|Bottom|Top|Left))|L(?:N(?:10|2)|OG(?:10E|2E))|b(?:o(?:ttom|rder(?:Width|RightWidth|BottomWidth|Style|Color|TopWidth|LeftWidth))|ufferDepth|elow|ackground(?:Color|Image)))\b/ - }, { - token : ["storage.type", "punctuation.operator", "support.function.firebug"], - regex : /(console)(\.)(warn|info|log|error|time|timeEnd|assert)\b/ - }, {// added by Guy Lapalme - token : "jsRealConstructor", - regex : /\b[A-Z][A-Za-z]*\b/ - }, { - token : keywordMapper, - regex : identifierRe - }, { - token : "keyword.operator", - regex : /--|\+\+|[!$%&*+\-~]|===|==|=|!=|!==|<=|>=|<<=|>>=|>>>=|<>|<|>|!|&&|\|\||\?\:|\*=|%=|\+=|\-=|&=|\^=/, - next : "start" - }, { - token : "punctuation.operator", - regex : /\?|\:|\,|\;|\./, - next : "start" - }, { - token : "paren.lparen", - regex : /[\[({]/, - next : "start" - }, { - token : "paren.rparen", - regex : /[\])}]/ - }, { - token : "keyword.operator", - regex : /\/=?/, - next : "start" - }, { - token: "comment", - regex: /^#!.*$/ - } - ], - "start": [ - DocCommentHighlightRules.getStartRule("doc-start"), - { - token : "comment", // multi line comment - regex : "\\/\\*", - next : "comment_regex_allowed" - }, { - token : "comment", - regex : "\\/\\/", - next : "line_comment_regex_allowed" - }, { - token: "string.regexp", - regex: "\\/", - next: "regex" - }, { - token : "text", - regex : "\\s+|^$", - next : "start" - }, { - token: "empty", - regex: "", - next: "no_regex" - } - ], - "regex": [ - { - token: "regexp.keyword.operator", - regex: "\\\\(?:u[\\da-fA-F]{4}|x[\\da-fA-F]{2}|.)" - }, { - token: "string.regexp", - regex: "/[sxngimy]*", - next: "no_regex" - }, { - token : "invalid", - regex: /\{\d+\b,?\d*\}[+*]|[+*$^?][+*]|[$^][?]|\?{3,}/ - }, { - token : "constant.language.escape", - regex: /\(\?[:=!]|\)|\{\d+\b,?\d*\}|[+*]\?|[()$^+*?.]/ - }, { - token : "constant.language.delimiter", - regex: /\|/ - }, { - token: "constant.language.escape", - regex: /\[\^?/, - next: "regex_character_class" - }, { - token: "empty", - regex: "$", - next: "no_regex" - }, { - defaultToken: "string.regexp" - } - ], - "regex_character_class": [ - { - token: "regexp.keyword.operator", - regex: "\\\\(?:u[\\da-fA-F]{4}|x[\\da-fA-F]{2}|.)" - }, { - token: "constant.language.escape", - regex: "]", - next: "regex" - }, { - token: "constant.language.escape", - regex: "-" - }, { - token: "empty", - regex: "$", - next: "no_regex" - }, { - defaultToken: "string.regexp.charachterclass" - } - ], - "function_arguments": [ - { - token: "variable.parameter", - regex: identifierRe - }, { - token: "punctuation.operator", - regex: "[, ]+" - }, { - token: "punctuation.operator", - regex: "$" - }, { - token: "empty", - regex: "", - next: "no_regex" - } - ], - "comment_regex_allowed" : [ - {token : "comment", regex : "\\*\\/", next : "start"}, - {defaultToken : "comment"} - ], - "comment" : [ - {token : "comment", regex : "\\*\\/", next : "no_regex"}, - {defaultToken : "comment"} - ], - "line_comment_regex_allowed" : [ - {token : "comment", regex : "$|^", next : "start"}, - {defaultToken : "comment"} - ], - "line_comment" : [ - {token : "comment", regex : "$|^", next : "no_regex"}, - {defaultToken : "comment"} - ], - "qqstring" : [ - { - token : "constant.language.escape", - regex : escapedRe - }, { - token : "string", - regex : "\\\\$", - next : "qqstring" - }, { - token : "string", - regex : '"|$', - next : "no_regex" - }, { - defaultToken: "string" - } - ], - "qstring" : [ - { - token : "constant.language.escape", - regex : escapedRe - }, { - token : "string", - regex : "\\\\$", - next : "qstring" - }, { - token : "string", - regex : "'|$", - next : "no_regex" - }, { - defaultToken: "string" - } - ] - }; - - this.embedRules(DocCommentHighlightRules, "doc-", - [ DocCommentHighlightRules.getEndRule("no_regex") ]); -}; - -oop.inherits(JavaScriptHighlightRules, TextHighlightRules); - -exports.JavaScriptHighlightRules = JavaScriptHighlightRules; -}); - -ace.define('ace/mode/doc_comment_highlight_rules', ['require', 'exports', 'module' , 'ace/lib/oop', 'ace/mode/text_highlight_rules'], function(require, exports, module) { - - -var oop = require("../lib/oop"); -var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; - -var DocCommentHighlightRules = function() { - - this.$rules = { - "start" : [ { - token : "comment.doc.tag", - regex : "@[\\w\\d_]+" // TODO: fix email addresses - }, { - token : "comment.doc.tag", - regex : "\\bTODO\\b" - }, { - defaultToken : "comment.doc" - }] - }; -}; - -oop.inherits(DocCommentHighlightRules, TextHighlightRules); - -DocCommentHighlightRules.getStartRule = function(start) { - return { - token : "comment.doc", // doc comment - regex : "\\/\\*(?=\\*)", - next : start - }; -}; - -DocCommentHighlightRules.getEndRule = function (start) { - return { - token : "comment.doc", // closing comment - regex : "\\*\\/", - next : start - }; -}; - - -exports.DocCommentHighlightRules = DocCommentHighlightRules; - -}); - -ace.define('ace/mode/matching_brace_outdent', ['require', 'exports', 'module' , 'ace/range'], function(require, exports, module) { - - -var Range = require("../range").Range; - -var MatchingBraceOutdent = function() {}; - -(function() { - - this.checkOutdent = function(line, input) { - if (! /^\s+$/.test(line)) - return false; - - return /^\s*\}/.test(input); - }; - - this.autoOutdent = function(doc, row) { - var line = doc.getLine(row); - var match = line.match(/^(\s*\})/); - - if (!match) return 0; - - var column = match[1].length; - var openBracePos = doc.findMatchingBracket({row: row, column: column}); - - if (!openBracePos || openBracePos.row == row) return 0; - - var indent = this.$getIndent(doc.getLine(openBracePos.row)); - doc.replace(new Range(row, 0, row, column-1), indent); - }; - - this.$getIndent = function(line) { - return line.match(/^\s*/)[0]; - }; - -}).call(MatchingBraceOutdent.prototype); - -exports.MatchingBraceOutdent = MatchingBraceOutdent; -}); - -ace.define('ace/mode/behaviour/cstyle', ['require', 'exports', 'module' , 'ace/lib/oop', 'ace/mode/behaviour', 'ace/token_iterator', 'ace/lib/lang'], function(require, exports, module) { - - -var oop = require("../../lib/oop"); -var Behaviour = require("../behaviour").Behaviour; -var TokenIterator = require("../../token_iterator").TokenIterator; -var lang = require("../../lib/lang"); - -var SAFE_INSERT_IN_TOKENS = - ["text", "paren.rparen", "punctuation.operator"]; -var SAFE_INSERT_BEFORE_TOKENS = - ["text", "paren.rparen", "punctuation.operator", "comment"]; - - -var autoInsertedBrackets = 0; -var autoInsertedRow = -1; -var autoInsertedLineEnd = ""; -var maybeInsertedBrackets = 0; -var maybeInsertedRow = -1; -var maybeInsertedLineStart = ""; -var maybeInsertedLineEnd = ""; - -var CstyleBehaviour = function () { - - CstyleBehaviour.isSaneInsertion = function(editor, session) { - var cursor = editor.getCursorPosition(); - var iterator = new TokenIterator(session, cursor.row, cursor.column); - if (!this.$matchTokenType(iterator.getCurrentToken() || "text", SAFE_INSERT_IN_TOKENS)) { - var iterator2 = new TokenIterator(session, cursor.row, cursor.column + 1); - if (!this.$matchTokenType(iterator2.getCurrentToken() || "text", SAFE_INSERT_IN_TOKENS)) - return false; - } - iterator.stepForward(); - return iterator.getCurrentTokenRow() !== cursor.row || - this.$matchTokenType(iterator.getCurrentToken() || "text", SAFE_INSERT_BEFORE_TOKENS); - }; - - CstyleBehaviour.$matchTokenType = function(token, types) { - return types.indexOf(token.type || token) > -1; - }; - - CstyleBehaviour.recordAutoInsert = function(editor, session, bracket) { - var cursor = editor.getCursorPosition(); - var line = session.doc.getLine(cursor.row); - if (!this.isAutoInsertedClosing(cursor, line, autoInsertedLineEnd[0])) - autoInsertedBrackets = 0; - autoInsertedRow = cursor.row; - autoInsertedLineEnd = bracket + line.substr(cursor.column); - autoInsertedBrackets++; - }; - - CstyleBehaviour.recordMaybeInsert = function(editor, session, bracket) { - var cursor = editor.getCursorPosition(); - var line = session.doc.getLine(cursor.row); - if (!this.isMaybeInsertedClosing(cursor, line)) - maybeInsertedBrackets = 0; - maybeInsertedRow = cursor.row; - maybeInsertedLineStart = line.substr(0, cursor.column) + bracket; - maybeInsertedLineEnd = line.substr(cursor.column); - maybeInsertedBrackets++; - }; - - CstyleBehaviour.isAutoInsertedClosing = function(cursor, line, bracket) { - return autoInsertedBrackets > 0 && - cursor.row === autoInsertedRow && - bracket === autoInsertedLineEnd[0] && - line.substr(cursor.column) === autoInsertedLineEnd; - }; - - CstyleBehaviour.isMaybeInsertedClosing = function(cursor, line) { - return maybeInsertedBrackets > 0 && - cursor.row === maybeInsertedRow && - line.substr(cursor.column) === maybeInsertedLineEnd && - line.substr(0, cursor.column) == maybeInsertedLineStart; - }; - - CstyleBehaviour.popAutoInsertedClosing = function() { - autoInsertedLineEnd = autoInsertedLineEnd.substr(1); - autoInsertedBrackets--; - }; - - CstyleBehaviour.clearMaybeInsertedClosing = function() { - maybeInsertedBrackets = 0; - maybeInsertedRow = -1; - }; - - this.add("braces", "insertion", function (state, action, editor, session, text) { - var cursor = editor.getCursorPosition(); - var line = session.doc.getLine(cursor.row); - if (text == '{') { - var selection = editor.getSelectionRange(); - var selected = session.doc.getTextRange(selection); - if (selected !== "" && selected !== "{" && editor.getWrapBehavioursEnabled()) { - return { - text: '{' + selected + '}', - selection: false - }; - } else if (CstyleBehaviour.isSaneInsertion(editor, session)) { - if (/[\]\}\)]/.test(line[cursor.column]) || editor.inMultiSelectMode) { - CstyleBehaviour.recordAutoInsert(editor, session, "}"); - return { - text: '{}', - selection: [1, 1] - }; - } else { - CstyleBehaviour.recordMaybeInsert(editor, session, "{"); - return { - text: '{', - selection: [1, 1] - }; - } - } - } else if (text == '}') { - var rightChar = line.substring(cursor.column, cursor.column + 1); - if (rightChar == '}') { - var matching = session.$findOpeningBracket('}', {column: cursor.column + 1, row: cursor.row}); - if (matching !== null && CstyleBehaviour.isAutoInsertedClosing(cursor, line, text)) { - CstyleBehaviour.popAutoInsertedClosing(); - return { - text: '', - selection: [1, 1] - }; - } - } - } else if (text == "\n" || text == "\r\n") { - var closing = ""; - if (CstyleBehaviour.isMaybeInsertedClosing(cursor, line)) { - closing = lang.stringRepeat("}", maybeInsertedBrackets); - CstyleBehaviour.clearMaybeInsertedClosing(); - } - var rightChar = line.substring(cursor.column, cursor.column + 1); - if (rightChar === '}') { - var openBracePos = session.findMatchingBracket({row: cursor.row, column: cursor.column+1}, '}'); - if (!openBracePos) - return null; - var next_indent = this.$getIndent(session.getLine(openBracePos.row)); - } else if (closing) { - var next_indent = this.$getIndent(line); - } else { - return; - } - var indent = next_indent + session.getTabString(); - - return { - text: '\n' + indent + '\n' + next_indent + closing, - selection: [1, indent.length, 1, indent.length] - }; - } else { - CstyleBehaviour.clearMaybeInsertedClosing(); - } - }); - - this.add("braces", "deletion", function (state, action, editor, session, range) { - var selected = session.doc.getTextRange(range); - if (!range.isMultiLine() && selected == '{') { - var line = session.doc.getLine(range.start.row); - var rightChar = line.substring(range.end.column, range.end.column + 1); - if (rightChar == '}') { - range.end.column++; - return range; - } else { - maybeInsertedBrackets--; - } - } - }); - - this.add("parens", "insertion", function (state, action, editor, session, text) { - if (text == '(') { - var selection = editor.getSelectionRange(); - var selected = session.doc.getTextRange(selection); - if (selected !== "" && editor.getWrapBehavioursEnabled()) { - return { - text: '(' + selected + ')', - selection: false - }; - } else if (CstyleBehaviour.isSaneInsertion(editor, session)) { - CstyleBehaviour.recordAutoInsert(editor, session, ")"); - return { - text: '()', - selection: [1, 1] - }; - } - } else if (text == ')') { - var cursor = editor.getCursorPosition(); - var line = session.doc.getLine(cursor.row); - var rightChar = line.substring(cursor.column, cursor.column + 1); - if (rightChar == ')') { - var matching = session.$findOpeningBracket(')', {column: cursor.column + 1, row: cursor.row}); - if (matching !== null && CstyleBehaviour.isAutoInsertedClosing(cursor, line, text)) { - CstyleBehaviour.popAutoInsertedClosing(); - return { - text: '', - selection: [1, 1] - }; - } - } - } - }); - - this.add("parens", "deletion", function (state, action, editor, session, range) { - var selected = session.doc.getTextRange(range); - if (!range.isMultiLine() && selected == '(') { - var line = session.doc.getLine(range.start.row); - var rightChar = line.substring(range.start.column + 1, range.start.column + 2); - if (rightChar == ')') { - range.end.column++; - return range; - } - } - }); - - this.add("brackets", "insertion", function (state, action, editor, session, text) { - if (text == '[') { - var selection = editor.getSelectionRange(); - var selected = session.doc.getTextRange(selection); - if (selected !== "" && editor.getWrapBehavioursEnabled()) { - return { - text: '[' + selected + ']', - selection: false - }; - } else if (CstyleBehaviour.isSaneInsertion(editor, session)) { - CstyleBehaviour.recordAutoInsert(editor, session, "]"); - return { - text: '[]', - selection: [1, 1] - }; - } - } else if (text == ']') { - var cursor = editor.getCursorPosition(); - var line = session.doc.getLine(cursor.row); - var rightChar = line.substring(cursor.column, cursor.column + 1); - if (rightChar == ']') { - var matching = session.$findOpeningBracket(']', {column: cursor.column + 1, row: cursor.row}); - if (matching !== null && CstyleBehaviour.isAutoInsertedClosing(cursor, line, text)) { - CstyleBehaviour.popAutoInsertedClosing(); - return { - text: '', - selection: [1, 1] - }; - } - } - } - }); - - this.add("brackets", "deletion", function (state, action, editor, session, range) { - var selected = session.doc.getTextRange(range); - if (!range.isMultiLine() && selected == '[') { - var line = session.doc.getLine(range.start.row); - var rightChar = line.substring(range.start.column + 1, range.start.column + 2); - if (rightChar == ']') { - range.end.column++; - return range; - } - } - }); - - this.add("string_dquotes", "insertion", function (state, action, editor, session, text) { - if (text == '"' || text == "'") { - var quote = text; - var selection = editor.getSelectionRange(); - var selected = session.doc.getTextRange(selection); - if (selected !== "" && selected !== "'" && selected != '"' && editor.getWrapBehavioursEnabled()) { - return { - text: quote + selected + quote, - selection: false - }; - } else { - var cursor = editor.getCursorPosition(); - var line = session.doc.getLine(cursor.row); - var leftChar = line.substring(cursor.column-1, cursor.column); - if (leftChar == '\\') { - return null; - } - var tokens = session.getTokens(selection.start.row); - var col = 0, token; - var quotepos = -1; // Track whether we're inside an open quote. - - for (var x = 0; x < tokens.length; x++) { - token = tokens[x]; - if (token.type == "string") { - quotepos = -1; - } else if (quotepos < 0) { - quotepos = token.value.indexOf(quote); - } - if ((token.value.length + col) > selection.start.column) { - break; - } - col += tokens[x].value.length; - } - if (!token || (quotepos < 0 && token.type !== "comment" && (token.type !== "string" || ((selection.start.column !== token.value.length+col-1) && token.value.lastIndexOf(quote) === token.value.length-1)))) { - if (!CstyleBehaviour.isSaneInsertion(editor, session)) - return; - return { - text: quote + quote, - selection: [1,1] - }; - } else if (token && token.type === "string") { - var rightChar = line.substring(cursor.column, cursor.column + 1); - if (rightChar == quote) { - return { - text: '', - selection: [1, 1] - }; - } - } - } - } - }); - - this.add("string_dquotes", "deletion", function (state, action, editor, session, range) { - var selected = session.doc.getTextRange(range); - if (!range.isMultiLine() && (selected == '"' || selected == "'")) { - var line = session.doc.getLine(range.start.row); - var rightChar = line.substring(range.start.column + 1, range.start.column + 2); - if (rightChar == selected) { - range.end.column++; - return range; - } - } - }); - -}; - -oop.inherits(CstyleBehaviour, Behaviour); - -exports.CstyleBehaviour = CstyleBehaviour; -}); - -ace.define('ace/mode/folding/cstyle', ['require', 'exports', 'module' , 'ace/lib/oop', 'ace/range', 'ace/mode/folding/fold_mode'], function(require, exports, module) { - - -var oop = require("../../lib/oop"); -var Range = require("../../range").Range; -var BaseFoldMode = require("./fold_mode").FoldMode; - -var FoldMode = exports.FoldMode = function(commentRegex) { - if (commentRegex) { - this.foldingStartMarker = new RegExp( - this.foldingStartMarker.source.replace(/\|[^|]*?$/, "|" + commentRegex.start) - ); - this.foldingStopMarker = new RegExp( - this.foldingStopMarker.source.replace(/\|[^|]*?$/, "|" + commentRegex.end) - ); - } -}; -oop.inherits(FoldMode, BaseFoldMode); - -(function() { - - this.foldingStartMarker = /(\{|\[)[^\}\]]*$|^\s*(\/\*)/; - this.foldingStopMarker = /^[^\[\{]*(\}|\])|^[\s\*]*(\*\/)/; - - this.getFoldWidgetRange = function(session, foldStyle, row, forceMultiline) { - var line = session.getLine(row); - var match = line.match(this.foldingStartMarker); - if (match) { - var i = match.index; - - if (match[1]) - return this.openingBracketBlock(session, match[1], row, i); - - var range = session.getCommentFoldRange(row, i + match[0].length, 1); - - if (range && !range.isMultiLine()) { - if (forceMultiline) { - range = this.getSectionRange(session, row); - } else if (foldStyle != "all") - range = null; - } - - return range; - } - - if (foldStyle === "markbegin") - return; - - var match = line.match(this.foldingStopMarker); - if (match) { - var i = match.index + match[0].length; - - if (match[1]) - return this.closingBracketBlock(session, match[1], row, i); - - return session.getCommentFoldRange(row, i, -1); - } - }; - - this.getSectionRange = function(session, row) { - var line = session.getLine(row); - var startIndent = line.search(/\S/); - var startRow = row; - var startColumn = line.length; - row = row + 1; - var endRow = row; - var maxRow = session.getLength(); - while (++row < maxRow) { - line = session.getLine(row); - var indent = line.search(/\S/); - if (indent === -1) - continue; - if (startIndent > indent) - break; - var subRange = this.getFoldWidgetRange(session, "all", row); - - if (subRange) { - if (subRange.start.row <= startRow) { - break; - } else if (subRange.isMultiLine()) { - row = subRange.end.row; - } else if (startIndent == indent) { - break; - } - } - endRow = row; - } - - return new Range(startRow, startColumn, endRow, session.getLine(endRow).length); - }; - -}).call(FoldMode.prototype); - -}); diff --git a/IDE/jsrealb-ide/ace-src-noconflict/mode-json.js b/IDE/jsrealb-ide/ace-src-noconflict/mode-json.js deleted file mode 100644 index 1972bd61..00000000 --- a/IDE/jsrealb-ide/ace-src-noconflict/mode-json.js +++ /dev/null @@ -1,625 +0,0 @@ -/* ***** BEGIN LICENSE BLOCK ***** - * Distributed under the BSD license: - * - * Copyright (c) 2010, Ajax.org B.V. - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are met: - * * Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * * Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * * Neither the name of Ajax.org B.V. nor the - * names of its contributors may be used to endorse or promote products - * derived from this software without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND - * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED - * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE - * DISCLAIMED. IN NO EVENT SHALL AJAX.ORG B.V. BE LIABLE FOR ANY - * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES - * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; - * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND - * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - * - * ***** END LICENSE BLOCK ***** */ - -ace.define('ace/mode/json', ['require', 'exports', 'module' , 'ace/lib/oop', 'ace/mode/text', 'ace/tokenizer', 'ace/mode/json_highlight_rules', 'ace/mode/matching_brace_outdent', 'ace/mode/behaviour/cstyle', 'ace/mode/folding/cstyle', 'ace/worker/worker_client'], function(require, exports, module) { - - -var oop = require("../lib/oop"); -var TextMode = require("./text").Mode; -var Tokenizer = require("../tokenizer").Tokenizer; -var HighlightRules = require("./json_highlight_rules").JsonHighlightRules; -var MatchingBraceOutdent = require("./matching_brace_outdent").MatchingBraceOutdent; -var CstyleBehaviour = require("./behaviour/cstyle").CstyleBehaviour; -var CStyleFoldMode = require("./folding/cstyle").FoldMode; -var WorkerClient = require("../worker/worker_client").WorkerClient; - -var Mode = function() { - this.HighlightRules = HighlightRules; - this.$outdent = new MatchingBraceOutdent(); - this.$behaviour = new CstyleBehaviour(); - this.foldingRules = new CStyleFoldMode(); -}; -oop.inherits(Mode, TextMode); - -(function() { - - this.getNextLineIndent = function(state, line, tab) { - var indent = this.$getIndent(line); - - if (state == "start") { - var match = line.match(/^.*[\{\(\[]\s*$/); - if (match) { - indent += tab; - } - } - - return indent; - }; - - this.checkOutdent = function(state, line, input) { - return this.$outdent.checkOutdent(line, input); - }; - - this.autoOutdent = function(state, doc, row) { - this.$outdent.autoOutdent(doc, row); - }; - - this.createWorker = function(session) { - var worker = new WorkerClient(["ace"], "ace/mode/json_worker", "JsonWorker"); - worker.attachToDocument(session.getDocument()); - - worker.on("error", function(e) { - session.setAnnotations([e.data]); - }); - - worker.on("ok", function() { - session.clearAnnotations(); - }); - - return worker; - }; - - - this.$id = "ace/mode/json"; -}).call(Mode.prototype); - -exports.Mode = Mode; -}); - -ace.define('ace/mode/json_highlight_rules', ['require', 'exports', 'module' , 'ace/lib/oop', 'ace/mode/text_highlight_rules'], function(require, exports, module) { - - -var oop = require("../lib/oop"); -var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; - -var JsonHighlightRules = function() { - this.$rules = { - "start" : [ - { - token : "variable", // single line - regex : '["](?:(?:\\\\.)|(?:[^"\\\\]))*?["]\\s*(?=:)' - }, { - token : "string", // single line - regex : '"', - next : "string" - }, { - token : "constant.numeric", // hex - regex : "0[xX][0-9a-fA-F]+\\b" - }, { - token : "constant.numeric", // float - regex : "[+-]?\\d+(?:(?:\\.\\d*)?(?:[eE][+-]?\\d+)?)?\\b" - }, { - token : "constant.language.boolean", - regex : "(?:true|false)\\b" - }, { - token : "invalid.illegal", // single quoted strings are not allowed - regex : "['](?:(?:\\\\.)|(?:[^'\\\\]))*?[']" - }, { - token : "invalid.illegal", // comments are not allowed - regex : "\\/\\/.*$" - }, { - token : "paren.lparen", - regex : "[[({]" - }, { - token : "paren.rparen", - regex : "[\\])}]" - }, { - token : "text", - regex : "\\s+" - } - ], - "string" : [ - { - token : "constant.language.escape", - regex : /\\(?:x[0-9a-fA-F]{2}|u[0-9a-fA-F]{4}|["\\\/bfnrt])/ - }, { - token : "string", - regex : '[^"\\\\]+' - }, { - token : "string", - regex : '"', - next : "start" - }, { - token : "string", - regex : "", - next : "start" - } - ] - }; - -}; - -oop.inherits(JsonHighlightRules, TextHighlightRules); - -exports.JsonHighlightRules = JsonHighlightRules; -}); - -ace.define('ace/mode/matching_brace_outdent', ['require', 'exports', 'module' , 'ace/range'], function(require, exports, module) { - - -var Range = require("../range").Range; - -var MatchingBraceOutdent = function() {}; - -(function() { - - this.checkOutdent = function(line, input) { - if (! /^\s+$/.test(line)) - return false; - - return /^\s*\}/.test(input); - }; - - this.autoOutdent = function(doc, row) { - var line = doc.getLine(row); - var match = line.match(/^(\s*\})/); - - if (!match) return 0; - - var column = match[1].length; - var openBracePos = doc.findMatchingBracket({row: row, column: column}); - - if (!openBracePos || openBracePos.row == row) return 0; - - var indent = this.$getIndent(doc.getLine(openBracePos.row)); - doc.replace(new Range(row, 0, row, column-1), indent); - }; - - this.$getIndent = function(line) { - return line.match(/^\s*/)[0]; - }; - -}).call(MatchingBraceOutdent.prototype); - -exports.MatchingBraceOutdent = MatchingBraceOutdent; -}); - -ace.define('ace/mode/behaviour/cstyle', ['require', 'exports', 'module' , 'ace/lib/oop', 'ace/mode/behaviour', 'ace/token_iterator', 'ace/lib/lang'], function(require, exports, module) { - - -var oop = require("../../lib/oop"); -var Behaviour = require("../behaviour").Behaviour; -var TokenIterator = require("../../token_iterator").TokenIterator; -var lang = require("../../lib/lang"); - -var SAFE_INSERT_IN_TOKENS = - ["text", "paren.rparen", "punctuation.operator"]; -var SAFE_INSERT_BEFORE_TOKENS = - ["text", "paren.rparen", "punctuation.operator", "comment"]; - - -var autoInsertedBrackets = 0; -var autoInsertedRow = -1; -var autoInsertedLineEnd = ""; -var maybeInsertedBrackets = 0; -var maybeInsertedRow = -1; -var maybeInsertedLineStart = ""; -var maybeInsertedLineEnd = ""; - -var CstyleBehaviour = function () { - - CstyleBehaviour.isSaneInsertion = function(editor, session) { - var cursor = editor.getCursorPosition(); - var iterator = new TokenIterator(session, cursor.row, cursor.column); - if (!this.$matchTokenType(iterator.getCurrentToken() || "text", SAFE_INSERT_IN_TOKENS)) { - var iterator2 = new TokenIterator(session, cursor.row, cursor.column + 1); - if (!this.$matchTokenType(iterator2.getCurrentToken() || "text", SAFE_INSERT_IN_TOKENS)) - return false; - } - iterator.stepForward(); - return iterator.getCurrentTokenRow() !== cursor.row || - this.$matchTokenType(iterator.getCurrentToken() || "text", SAFE_INSERT_BEFORE_TOKENS); - }; - - CstyleBehaviour.$matchTokenType = function(token, types) { - return types.indexOf(token.type || token) > -1; - }; - - CstyleBehaviour.recordAutoInsert = function(editor, session, bracket) { - var cursor = editor.getCursorPosition(); - var line = session.doc.getLine(cursor.row); - if (!this.isAutoInsertedClosing(cursor, line, autoInsertedLineEnd[0])) - autoInsertedBrackets = 0; - autoInsertedRow = cursor.row; - autoInsertedLineEnd = bracket + line.substr(cursor.column); - autoInsertedBrackets++; - }; - - CstyleBehaviour.recordMaybeInsert = function(editor, session, bracket) { - var cursor = editor.getCursorPosition(); - var line = session.doc.getLine(cursor.row); - if (!this.isMaybeInsertedClosing(cursor, line)) - maybeInsertedBrackets = 0; - maybeInsertedRow = cursor.row; - maybeInsertedLineStart = line.substr(0, cursor.column) + bracket; - maybeInsertedLineEnd = line.substr(cursor.column); - maybeInsertedBrackets++; - }; - - CstyleBehaviour.isAutoInsertedClosing = function(cursor, line, bracket) { - return autoInsertedBrackets > 0 && - cursor.row === autoInsertedRow && - bracket === autoInsertedLineEnd[0] && - line.substr(cursor.column) === autoInsertedLineEnd; - }; - - CstyleBehaviour.isMaybeInsertedClosing = function(cursor, line) { - return maybeInsertedBrackets > 0 && - cursor.row === maybeInsertedRow && - line.substr(cursor.column) === maybeInsertedLineEnd && - line.substr(0, cursor.column) == maybeInsertedLineStart; - }; - - CstyleBehaviour.popAutoInsertedClosing = function() { - autoInsertedLineEnd = autoInsertedLineEnd.substr(1); - autoInsertedBrackets--; - }; - - CstyleBehaviour.clearMaybeInsertedClosing = function() { - maybeInsertedBrackets = 0; - maybeInsertedRow = -1; - }; - - this.add("braces", "insertion", function (state, action, editor, session, text) { - var cursor = editor.getCursorPosition(); - var line = session.doc.getLine(cursor.row); - if (text == '{') { - var selection = editor.getSelectionRange(); - var selected = session.doc.getTextRange(selection); - if (selected !== "" && selected !== "{" && editor.getWrapBehavioursEnabled()) { - return { - text: '{' + selected + '}', - selection: false - }; - } else if (CstyleBehaviour.isSaneInsertion(editor, session)) { - if (/[\]\}\)]/.test(line[cursor.column]) || editor.inMultiSelectMode) { - CstyleBehaviour.recordAutoInsert(editor, session, "}"); - return { - text: '{}', - selection: [1, 1] - }; - } else { - CstyleBehaviour.recordMaybeInsert(editor, session, "{"); - return { - text: '{', - selection: [1, 1] - }; - } - } - } else if (text == '}') { - var rightChar = line.substring(cursor.column, cursor.column + 1); - if (rightChar == '}') { - var matching = session.$findOpeningBracket('}', {column: cursor.column + 1, row: cursor.row}); - if (matching !== null && CstyleBehaviour.isAutoInsertedClosing(cursor, line, text)) { - CstyleBehaviour.popAutoInsertedClosing(); - return { - text: '', - selection: [1, 1] - }; - } - } - } else if (text == "\n" || text == "\r\n") { - var closing = ""; - if (CstyleBehaviour.isMaybeInsertedClosing(cursor, line)) { - closing = lang.stringRepeat("}", maybeInsertedBrackets); - CstyleBehaviour.clearMaybeInsertedClosing(); - } - var rightChar = line.substring(cursor.column, cursor.column + 1); - if (rightChar === '}') { - var openBracePos = session.findMatchingBracket({row: cursor.row, column: cursor.column+1}, '}'); - if (!openBracePos) - return null; - var next_indent = this.$getIndent(session.getLine(openBracePos.row)); - } else if (closing) { - var next_indent = this.$getIndent(line); - } else { - return; - } - var indent = next_indent + session.getTabString(); - - return { - text: '\n' + indent + '\n' + next_indent + closing, - selection: [1, indent.length, 1, indent.length] - }; - } else { - CstyleBehaviour.clearMaybeInsertedClosing(); - } - }); - - this.add("braces", "deletion", function (state, action, editor, session, range) { - var selected = session.doc.getTextRange(range); - if (!range.isMultiLine() && selected == '{') { - var line = session.doc.getLine(range.start.row); - var rightChar = line.substring(range.end.column, range.end.column + 1); - if (rightChar == '}') { - range.end.column++; - return range; - } else { - maybeInsertedBrackets--; - } - } - }); - - this.add("parens", "insertion", function (state, action, editor, session, text) { - if (text == '(') { - var selection = editor.getSelectionRange(); - var selected = session.doc.getTextRange(selection); - if (selected !== "" && editor.getWrapBehavioursEnabled()) { - return { - text: '(' + selected + ')', - selection: false - }; - } else if (CstyleBehaviour.isSaneInsertion(editor, session)) { - CstyleBehaviour.recordAutoInsert(editor, session, ")"); - return { - text: '()', - selection: [1, 1] - }; - } - } else if (text == ')') { - var cursor = editor.getCursorPosition(); - var line = session.doc.getLine(cursor.row); - var rightChar = line.substring(cursor.column, cursor.column + 1); - if (rightChar == ')') { - var matching = session.$findOpeningBracket(')', {column: cursor.column + 1, row: cursor.row}); - if (matching !== null && CstyleBehaviour.isAutoInsertedClosing(cursor, line, text)) { - CstyleBehaviour.popAutoInsertedClosing(); - return { - text: '', - selection: [1, 1] - }; - } - } - } - }); - - this.add("parens", "deletion", function (state, action, editor, session, range) { - var selected = session.doc.getTextRange(range); - if (!range.isMultiLine() && selected == '(') { - var line = session.doc.getLine(range.start.row); - var rightChar = line.substring(range.start.column + 1, range.start.column + 2); - if (rightChar == ')') { - range.end.column++; - return range; - } - } - }); - - this.add("brackets", "insertion", function (state, action, editor, session, text) { - if (text == '[') { - var selection = editor.getSelectionRange(); - var selected = session.doc.getTextRange(selection); - if (selected !== "" && editor.getWrapBehavioursEnabled()) { - return { - text: '[' + selected + ']', - selection: false - }; - } else if (CstyleBehaviour.isSaneInsertion(editor, session)) { - CstyleBehaviour.recordAutoInsert(editor, session, "]"); - return { - text: '[]', - selection: [1, 1] - }; - } - } else if (text == ']') { - var cursor = editor.getCursorPosition(); - var line = session.doc.getLine(cursor.row); - var rightChar = line.substring(cursor.column, cursor.column + 1); - if (rightChar == ']') { - var matching = session.$findOpeningBracket(']', {column: cursor.column + 1, row: cursor.row}); - if (matching !== null && CstyleBehaviour.isAutoInsertedClosing(cursor, line, text)) { - CstyleBehaviour.popAutoInsertedClosing(); - return { - text: '', - selection: [1, 1] - }; - } - } - } - }); - - this.add("brackets", "deletion", function (state, action, editor, session, range) { - var selected = session.doc.getTextRange(range); - if (!range.isMultiLine() && selected == '[') { - var line = session.doc.getLine(range.start.row); - var rightChar = line.substring(range.start.column + 1, range.start.column + 2); - if (rightChar == ']') { - range.end.column++; - return range; - } - } - }); - - this.add("string_dquotes", "insertion", function (state, action, editor, session, text) { - if (text == '"' || text == "'") { - var quote = text; - var selection = editor.getSelectionRange(); - var selected = session.doc.getTextRange(selection); - if (selected !== "" && selected !== "'" && selected != '"' && editor.getWrapBehavioursEnabled()) { - return { - text: quote + selected + quote, - selection: false - }; - } else { - var cursor = editor.getCursorPosition(); - var line = session.doc.getLine(cursor.row); - var leftChar = line.substring(cursor.column-1, cursor.column); - if (leftChar == '\\') { - return null; - } - var tokens = session.getTokens(selection.start.row); - var col = 0, token; - var quotepos = -1; // Track whether we're inside an open quote. - - for (var x = 0; x < tokens.length; x++) { - token = tokens[x]; - if (token.type == "string") { - quotepos = -1; - } else if (quotepos < 0) { - quotepos = token.value.indexOf(quote); - } - if ((token.value.length + col) > selection.start.column) { - break; - } - col += tokens[x].value.length; - } - if (!token || (quotepos < 0 && token.type !== "comment" && (token.type !== "string" || ((selection.start.column !== token.value.length+col-1) && token.value.lastIndexOf(quote) === token.value.length-1)))) { - if (!CstyleBehaviour.isSaneInsertion(editor, session)) - return; - return { - text: quote + quote, - selection: [1,1] - }; - } else if (token && token.type === "string") { - var rightChar = line.substring(cursor.column, cursor.column + 1); - if (rightChar == quote) { - return { - text: '', - selection: [1, 1] - }; - } - } - } - } - }); - - this.add("string_dquotes", "deletion", function (state, action, editor, session, range) { - var selected = session.doc.getTextRange(range); - if (!range.isMultiLine() && (selected == '"' || selected == "'")) { - var line = session.doc.getLine(range.start.row); - var rightChar = line.substring(range.start.column + 1, range.start.column + 2); - if (rightChar == selected) { - range.end.column++; - return range; - } - } - }); - -}; - -oop.inherits(CstyleBehaviour, Behaviour); - -exports.CstyleBehaviour = CstyleBehaviour; -}); - -ace.define('ace/mode/folding/cstyle', ['require', 'exports', 'module' , 'ace/lib/oop', 'ace/range', 'ace/mode/folding/fold_mode'], function(require, exports, module) { - - -var oop = require("../../lib/oop"); -var Range = require("../../range").Range; -var BaseFoldMode = require("./fold_mode").FoldMode; - -var FoldMode = exports.FoldMode = function(commentRegex) { - if (commentRegex) { - this.foldingStartMarker = new RegExp( - this.foldingStartMarker.source.replace(/\|[^|]*?$/, "|" + commentRegex.start) - ); - this.foldingStopMarker = new RegExp( - this.foldingStopMarker.source.replace(/\|[^|]*?$/, "|" + commentRegex.end) - ); - } -}; -oop.inherits(FoldMode, BaseFoldMode); - -(function() { - - this.foldingStartMarker = /(\{|\[)[^\}\]]*$|^\s*(\/\*)/; - this.foldingStopMarker = /^[^\[\{]*(\}|\])|^[\s\*]*(\*\/)/; - - this.getFoldWidgetRange = function(session, foldStyle, row, forceMultiline) { - var line = session.getLine(row); - var match = line.match(this.foldingStartMarker); - if (match) { - var i = match.index; - - if (match[1]) - return this.openingBracketBlock(session, match[1], row, i); - - var range = session.getCommentFoldRange(row, i + match[0].length, 1); - - if (range && !range.isMultiLine()) { - if (forceMultiline) { - range = this.getSectionRange(session, row); - } else if (foldStyle != "all") - range = null; - } - - return range; - } - - if (foldStyle === "markbegin") - return; - - var match = line.match(this.foldingStopMarker); - if (match) { - var i = match.index + match[0].length; - - if (match[1]) - return this.closingBracketBlock(session, match[1], row, i); - - return session.getCommentFoldRange(row, i, -1); - } - }; - - this.getSectionRange = function(session, row) { - var line = session.getLine(row); - var startIndent = line.search(/\S/); - var startRow = row; - var startColumn = line.length; - row = row + 1; - var endRow = row; - var maxRow = session.getLength(); - while (++row < maxRow) { - line = session.getLine(row); - var indent = line.search(/\S/); - if (indent === -1) - continue; - if (startIndent > indent) - break; - var subRange = this.getFoldWidgetRange(session, "all", row); - - if (subRange) { - if (subRange.start.row <= startRow) { - break; - } else if (subRange.isMultiLine()) { - row = subRange.end.row; - } else if (startIndent == indent) { - break; - } - } - endRow = row; - } - - return new Range(startRow, startColumn, endRow, session.getLine(endRow).length); - }; - -}).call(FoldMode.prototype); - -}); diff --git a/IDE/jsrealb-ide/ace-src-noconflict/mode-jsoniq.js b/IDE/jsrealb-ide/ace-src-noconflict/mode-jsoniq.js deleted file mode 100644 index 7e8075de..00000000 --- a/IDE/jsrealb-ide/ace-src-noconflict/mode-jsoniq.js +++ /dev/null @@ -1,2761 +0,0 @@ -/* ***** BEGIN LICENSE BLOCK ***** - * Distributed under the BSD license: - * - * Copyright (c) 2010, Ajax.org B.V. - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are met: - * * Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * * Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * * Neither the name of Ajax.org B.V. nor the - * names of its contributors may be used to endorse or promote products - * derived from this software without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND - * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED - * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE - * DISCLAIMED. IN NO EVENT SHALL AJAX.ORG B.V. BE LIABLE FOR ANY - * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES - * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; - * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND - * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - * - * ***** END LICENSE BLOCK ***** */ -ace.define('ace/mode/jsoniq', ['require', 'exports', 'module' , 'ace/lib/oop', 'ace/mode/text', 'ace/mode/xquery/JSONiqLexer', 'ace/range', 'ace/mode/behaviour/xquery', 'ace/mode/folding/cstyle'], function(require, exports, module) { - - -var oop = require("../lib/oop"); -var TextMode = require("./text").Mode; -var JSONiqLexer = require("./xquery/JSONiqLexer").JSONiqLexer; -var Range = require("../range").Range; -var XQueryBehaviour = require("./behaviour/xquery").XQueryBehaviour; -var CStyleFoldMode = require("./folding/cstyle").FoldMode; - - -var Mode = function() { - this.$tokenizer = new JSONiqLexer(); - this.$behaviour = new XQueryBehaviour(); - this.foldingRules = new CStyleFoldMode(); -}; - -oop.inherits(Mode, TextMode); - -(function() { - - this.getNextLineIndent = function(state, line, tab) { - var indent = this.$getIndent(line); - var match = line.match(/\s*(?:then|else|return|[{\(]|<\w+>)\s*$/); - if (match) - indent += tab; - return indent; - }; - - this.checkOutdent = function(state, line, input) { - if (! /^\s+$/.test(line)) - return false; - - return /^\s*[\}\)]/.test(input); - }; - - this.autoOutdent = function(state, doc, row) { - var line = doc.getLine(row); - var match = line.match(/^(\s*[\}\)])/); - - if (!match) return 0; - - var column = match[1].length; - var openBracePos = doc.findMatchingBracket({row: row, column: column}); - - if (!openBracePos || openBracePos.row == row) return 0; - - var indent = this.$getIndent(doc.getLine(openBracePos.row)); - doc.replace(new Range(row, 0, row, column-1), indent); - }; - - this.toggleCommentLines = function(state, doc, startRow, endRow) { - var i, line; - var outdent = true; - var re = /^\s*\(:(.*):\)/; - - for (i=startRow; i<= endRow; i++) { - if (!re.test(doc.getLine(i))) { - outdent = false; - break; - } - } - - var range = new Range(0, 0, 0, 0); - for (i=startRow; i<= endRow; i++) { - line = doc.getLine(i); - range.start.row = i; - range.end.row = i; - range.end.column = line.length; - - doc.replace(range, outdent ? line.match(re)[1] : "(:" + line + ":)"); - } - }; - this.$id = "ace/mode/jsoniq"; -}).call(Mode.prototype); - -exports.Mode = Mode; -}); - -ace.define('ace/mode/xquery/JSONiqLexer', ['require', 'exports', 'module' , 'ace/mode/xquery/JSONiqTokenizer'], function(require, exports, module) { - - var JSONiqTokenizer = require("./JSONiqTokenizer").JSONiqTokenizer; - - var TokenHandler = function(code) { - - var input = code; - - this.tokens = []; - - this.reset = function(code) { - input = input; - this.tokens = []; - }; - - this.startNonterminal = function(name, begin) {}; - - this.endNonterminal = function(name, end) {}; - - this.terminal = function(name, begin, end) { - this.tokens.push({ - name: name, - value: input.substring(begin, end) - }); - }; - - this.whitespace = function(begin, end) { - this.tokens.push({ - name: "WS", - value: input.substring(begin, end) - }); - }; - }; - var keys = "NaN|after|allowing|ancestor|ancestor-or-self|and|append|array|as|ascending|at|attribute|base-uri|before|boundary-space|break|by|case|cast|castable|catch|child|collation|comment|constraint|construction|contains|context|continue|copy|copy-namespaces|count|decimal-format|decimal-separator|declare|default|delete|descendant|descendant-or-self|descending|digit|div|document|document-node|element|else|empty|empty-sequence|encoding|end|eq|every|except|exit|external|false|first|following|following-sibling|for|from|ft-option|function|ge|greatest|group|grouping-separator|gt|idiv|if|import|in|index|infinity|insert|instance|integrity|intersect|into|is|item|json|json-item|jsoniq|last|lax|le|least|let|loop|lt|minus-sign|mod|modify|module|namespace|namespace-node|ne|next|node|nodes|not|null|object|of|only|option|or|order|ordered|ordering|paragraphs|parent|pattern-separator|per-mille|percent|preceding|preceding-sibling|previous|processing-instruction|rename|replace|return|returning|revalidation|satisfies|schema|schema-attribute|schema-element|score|select|self|sentences|sliding|some|stable|start|strict|switch|text|then|times|to|treat|true|try|tumbling|type|typeswitch|union|unordered|updating|validate|value|variable|version|when|where|while|window|with|words|xquery|zero-digit".split("|"); - var keywords = keys.map( - function(val) { return { name: "'" + val + "'", token: "keyword" }; } - ); - - var ncnames = keys.map( - function(val) { return { name: "'" + val + "'", token: "text", next: function(stack){ stack.pop(); } }; } - ); - - var cdata = "constant.language"; - var number = "constant"; - var xmlcomment = "comment"; - var pi = "xml-pe"; - var pragma = "constant.buildin"; - - var Rules = { - start: [ - { name: "'(#'", token: pragma, next: function(stack){ stack.push("Pragma"); } }, - { name: "'(:'", token: "comment", next: function(stack){ stack.push("Comment"); } }, - { name: "'(:~'", token: "comment.doc", next: function(stack){ stack.push("CommentDoc"); } }, - { name: "''", token: xmlcomment, next: function(stack){ stack.pop(); } } - ], - CData: [ - { name: "CDataSectionContents", token: cdata }, - { name: "']]>'", token: cdata, next: function(stack){ stack.pop(); } } - ], - PI: [ - { name: "DirPIContents", token: pi }, - { name: "'?'", token: pi }, - { name: "'?>'", token: pi, next: function(stack){ stack.pop(); } } - ], - AposString: [ - { name: "''''", token: "string", next: function(stack){ stack.pop(); } }, - { name: "PredefinedEntityRef", token: "constant.language.escape" }, - { name: "CharRef", token: "constant.language.escape" }, - { name: "EscapeApos", token: "constant.language.escape" }, - { name: "AposChar", token: "string" } - ], - QuotString: [ - { name: "'\"'", token: "string", next: function(stack){ stack.pop(); } }, - { name: "PredefinedEntityRef", token: "constant.language.escape" }, - { name: "CharRef", token: "constant.language.escape" }, - { name: "EscapeQuot", token: "constant.language.escape" }, - { name: "QuotChar", token: "string" } - ] - }; - -exports.JSONiqLexer = function() { - - this.tokens = []; - - this.getLineTokens = function(line, state, row) { - state = (state === "start" || !state) ? '["start"]' : state; - var stack = JSON.parse(state); - var h = new TokenHandler(line); - var tokenizer = new JSONiqTokenizer(line, h); - var tokens = []; - - while(true) { - var currentState = stack[stack.length - 1]; - try { - - h.tokens = []; - tokenizer["parse_" + currentState](); - var info = null; - - if(h.tokens.length > 1 && h.tokens[0].name === "WS") { - tokens.push({ - type: "text", - value: h.tokens[0].value - }); - h.tokens.splice(0, 1); - } - - var token = h.tokens[0]; - var rules = Rules[currentState]; - for(var k = 0; k < rules.length; k++) { - var rule = Rules[currentState][k]; - if((typeof(rule.name) === "function" && rule.name(token)) || rule.name === token.name) { - info = rule; - break; - } - } - - if(token.name === "EOF") { break; } - if(token.value === "") { throw "Encountered empty string lexical rule."; } - - tokens.push({ - type: info === null ? "text" : (typeof(info.token) === "function" ? info.token(token.value) : info.token), - value: token.value - }); - - if(info && info.next) { - info.next(stack); - } - - } catch(e) { - if(e instanceof tokenizer.ParseException) { - var index = 0; - for(var i=0; i < tokens.length; i++) { - index += tokens[i].value.length; - } - tokens.push({ type: "text", value: line.substring(index) }); - return { - tokens: tokens, - state: JSON.stringify(["start"]) - }; - } else { - throw e; - } - } - } - - - if(this.tokens[row] !== undefined) { - var cachedLine = this.lines[row]; - var begin = sharedStart([line, cachedLine]); - var diff = cachedLine.length - line.length; - var idx = 0; - var col = 0; - for(var i = 0; i < tokens.length; i++) { - var token = tokens[i]; - for(var j = 0; j < this.tokens[row].length; j++) { - var semanticToken = this.tokens[row][j]; - if( - ((col + token.value.length) <= begin.length && semanticToken.sc === col && semanticToken.ec === (col + token.value.length)) || - (semanticToken.sc === (col + diff) && semanticToken.ec === (col + token.value.length + diff)) - ) { - idx = i; - tokens[i].type = semanticToken.type; - } - } - col += token.value.length; - } - } - - return { - tokens: tokens, - state: JSON.stringify(stack) - }; - }; - - function sharedStart(A) { - var tem1, tem2, s, A = A.slice(0).sort(); - tem1 = A[0]; - s = tem1.length; - tem2 = A.pop(); - while(s && tem2.indexOf(tem1) == -1) { - tem1 = tem1.substring(0, --s); - } - return tem1; - } -}; -}); - - ace.define('ace/mode/xquery/JSONiqTokenizer', ['require', 'exports', 'module' ], function(require, exports, module) { - var JSONiqTokenizer = exports.JSONiqTokenizer = function JSONiqTokenizer(string, parsingEventHandler) - { - init(string, parsingEventHandler); - var self = this; - - this.ParseException = function(b, e, s, o, x) - { - var - begin = b, - end = e, - state = s, - offending = o, - expected = x; - - this.getBegin = function() {return begin;}; - this.getEnd = function() {return end;}; - this.getState = function() {return state;}; - this.getExpected = function() {return expected;}; - this.getOffending = function() {return offending;}; - - this.getMessage = function() - { - return offending < 0 ? "lexical analysis failed" : "syntax error"; - }; - }; - - function init(string, parsingEventHandler) - { - eventHandler = parsingEventHandler; - input = string; - size = string.length; - reset(0, 0, 0); - } - - this.getInput = function() - { - return input; - }; - - function reset(l, b, e) - { - b0 = b; e0 = b; - l1 = l; b1 = b; e1 = e; - end = e; - eventHandler.reset(input); - } - - this.getOffendingToken = function(e) - { - var o = e.getOffending(); - return o >= 0 ? JSONiqTokenizer.TOKEN[o] : null; - }; - - this.getExpectedTokenSet = function(e) - { - var expected; - if (e.getExpected() < 0) - { - expected = JSONiqTokenizer.getTokenSet(- e.getState()); - } - else - { - expected = [JSONiqTokenizer.TOKEN[e.getExpected()]]; - } - return expected; - }; - - this.getErrorMessage = function(e) - { - var tokenSet = this.getExpectedTokenSet(e); - var found = this.getOffendingToken(e); - var prefix = input.substring(0, e.getBegin()); - var lines = prefix.split("\n"); - var line = lines.length; - var column = lines[line - 1].length + 1; - var size = e.getEnd() - e.getBegin(); - return e.getMessage() - + (found == null ? "" : ", found " + found) - + "\nwhile expecting " - + (tokenSet.length == 1 ? tokenSet[0] : ("[" + tokenSet.join(", ") + "]")) - + "\n" - + (size == 0 || found != null ? "" : "after successfully scanning " + size + " characters beginning ") - + "at line " + line + ", column " + column + ":\n..." - + input.substring(e.getBegin(), Math.min(input.length, e.getBegin() + 64)) - + "..."; - }; - - this.parse_start = function() - { - eventHandler.startNonterminal("start", e0); - lookahead1W(14); // ModuleDecl | Annotation | OptionDecl | Operator | Variable | Tag | AttrTest | - switch (l1) - { - case 55: // '' | '=' | '>' - switch (l1) - { - case 58: // '>' - shift(58); // '>' - break; - case 50: // '/>' - shift(50); // '/>' - break; - case 27: // QName - shift(27); // QName - break; - case 57: // '=' - shift(57); // '=' - break; - case 35: // '"' - shift(35); // '"' - break; - case 38: // "'" - shift(38); // "'" - break; - default: - shift(33); // EOF - } - eventHandler.endNonterminal("StartTag", e0); - }; - - this.parse_TagContent = function() - { - eventHandler.startNonterminal("TagContent", e0); - lookahead1(11); // Tag | EndTag | PredefinedEntityRef | ElementContentChar | CharRef | EOF | - switch (l1) - { - case 23: // ElementContentChar - shift(23); // ElementContentChar - break; - case 6: // Tag - shift(6); // Tag - break; - case 7: // EndTag - shift(7); // EndTag - break; - case 55: // '' - switch (l1) - { - case 11: // CDataSectionContents - shift(11); // CDataSectionContents - break; - case 64: // ']]>' - shift(64); // ']]>' - break; - default: - shift(33); // EOF - } - eventHandler.endNonterminal("CData", e0); - }; - - this.parse_XMLComment = function() - { - eventHandler.startNonterminal("XMLComment", e0); - lookahead1(0); // DirCommentContents | EOF | '-->' - switch (l1) - { - case 9: // DirCommentContents - shift(9); // DirCommentContents - break; - case 47: // '-->' - shift(47); // '-->' - break; - default: - shift(33); // EOF - } - eventHandler.endNonterminal("XMLComment", e0); - }; - - this.parse_PI = function() - { - eventHandler.startNonterminal("PI", e0); - lookahead1(3); // DirPIContents | EOF | '?' | '?>' - switch (l1) - { - case 10: // DirPIContents - shift(10); // DirPIContents - break; - case 59: // '?' - shift(59); // '?' - break; - case 60: // '?>' - shift(60); // '?>' - break; - default: - shift(33); // EOF - } - eventHandler.endNonterminal("PI", e0); - }; - - this.parse_Pragma = function() - { - eventHandler.startNonterminal("Pragma", e0); - lookahead1(2); // PragmaContents | EOF | '#' | '#)' - switch (l1) - { - case 8: // PragmaContents - shift(8); // PragmaContents - break; - case 36: // '#' - shift(36); // '#' - break; - case 37: // '#)' - shift(37); // '#)' - break; - default: - shift(33); // EOF - } - eventHandler.endNonterminal("Pragma", e0); - }; - - this.parse_Comment = function() - { - eventHandler.startNonterminal("Comment", e0); - lookahead1(4); // CommentContents | EOF | '(:' | ':)' - switch (l1) - { - case 52: // ':)' - shift(52); // ':)' - break; - case 41: // '(:' - shift(41); // '(:' - break; - case 30: // CommentContents - shift(30); // CommentContents - break; - default: - shift(33); // EOF - } - eventHandler.endNonterminal("Comment", e0); - }; - - this.parse_CommentDoc = function() - { - eventHandler.startNonterminal("CommentDoc", e0); - lookahead1(5); // DocTag | DocCommentContents | EOF | '(:' | ':)' - switch (l1) - { - case 31: // DocTag - shift(31); // DocTag - break; - case 32: // DocCommentContents - shift(32); // DocCommentContents - break; - case 52: // ':)' - shift(52); // ':)' - break; - case 41: // '(:' - shift(41); // '(:' - break; - default: - shift(33); // EOF - } - eventHandler.endNonterminal("CommentDoc", e0); - }; - - this.parse_QuotString = function() - { - eventHandler.startNonterminal("QuotString", e0); - lookahead1(6); // PredefinedEntityRef | EscapeQuot | QuotChar | CharRef | EOF | '"' - switch (l1) - { - case 18: // PredefinedEntityRef - shift(18); // PredefinedEntityRef - break; - case 29: // CharRef - shift(29); // CharRef - break; - case 19: // EscapeQuot - shift(19); // EscapeQuot - break; - case 21: // QuotChar - shift(21); // QuotChar - break; - case 35: // '"' - shift(35); // '"' - break; - default: - shift(33); // EOF - } - eventHandler.endNonterminal("QuotString", e0); - }; - - this.parse_AposString = function() - { - eventHandler.startNonterminal("AposString", e0); - lookahead1(7); // PredefinedEntityRef | EscapeApos | AposChar | CharRef | EOF | "'" - switch (l1) - { - case 18: // PredefinedEntityRef - shift(18); // PredefinedEntityRef - break; - case 29: // CharRef - shift(29); // CharRef - break; - case 20: // EscapeApos - shift(20); // EscapeApos - break; - case 22: // AposChar - shift(22); // AposChar - break; - case 38: // "'" - shift(38); // "'" - break; - default: - shift(33); // EOF - } - eventHandler.endNonterminal("AposString", e0); - }; - - this.parse_Prefix = function() - { - eventHandler.startNonterminal("Prefix", e0); - lookahead1W(13); // NCName^Token | S^WS | 'after' | 'allowing' | 'ancestor' | 'ancestor-or-self' | - whitespace(); - parse_NCName(); - eventHandler.endNonterminal("Prefix", e0); - }; - - this.parse__EQName = function() - { - eventHandler.startNonterminal("_EQName", e0); - lookahead1W(12); // EQName^Token | S^WS | 'after' | 'allowing' | 'ancestor' | 'ancestor-or-self' | - whitespace(); - parse_EQName(); - eventHandler.endNonterminal("_EQName", e0); - }; - - function parse_EQName() - { - eventHandler.startNonterminal("EQName", e0); - switch (l1) - { - case 77: // 'attribute' - shift(77); // 'attribute' - break; - case 91: // 'comment' - shift(91); // 'comment' - break; - case 115: // 'document-node' - shift(115); // 'document-node' - break; - case 116: // 'element' - shift(116); // 'element' - break; - case 119: // 'empty-sequence' - shift(119); // 'empty-sequence' - break; - case 140: // 'function' - shift(140); // 'function' - break; - case 147: // 'if' - shift(147); // 'if' - break; - case 160: // 'item' - shift(160); // 'item' - break; - case 180: // 'namespace-node' - shift(180); // 'namespace-node' - break; - case 186: // 'node' - shift(186); // 'node' - break; - case 211: // 'processing-instruction' - shift(211); // 'processing-instruction' - break; - case 221: // 'schema-attribute' - shift(221); // 'schema-attribute' - break; - case 222: // 'schema-element' - shift(222); // 'schema-element' - break; - case 238: // 'switch' - shift(238); // 'switch' - break; - case 239: // 'text' - shift(239); // 'text' - break; - case 248: // 'typeswitch' - shift(248); // 'typeswitch' - break; - default: - parse_FunctionName(); - } - eventHandler.endNonterminal("EQName", e0); - } - - function parse_FunctionName() - { - eventHandler.startNonterminal("FunctionName", e0); - switch (l1) - { - case 14: // EQName^Token - shift(14); // EQName^Token - break; - case 65: // 'after' - shift(65); // 'after' - break; - case 68: // 'ancestor' - shift(68); // 'ancestor' - break; - case 69: // 'ancestor-or-self' - shift(69); // 'ancestor-or-self' - break; - case 70: // 'and' - shift(70); // 'and' - break; - case 74: // 'as' - shift(74); // 'as' - break; - case 75: // 'ascending' - shift(75); // 'ascending' - break; - case 79: // 'before' - shift(79); // 'before' - break; - case 83: // 'case' - shift(83); // 'case' - break; - case 84: // 'cast' - shift(84); // 'cast' - break; - case 85: // 'castable' - shift(85); // 'castable' - break; - case 88: // 'child' - shift(88); // 'child' - break; - case 89: // 'collation' - shift(89); // 'collation' - break; - case 98: // 'copy' - shift(98); // 'copy' - break; - case 100: // 'count' - shift(100); // 'count' - break; - case 103: // 'declare' - shift(103); // 'declare' - break; - case 104: // 'default' - shift(104); // 'default' - break; - case 105: // 'delete' - shift(105); // 'delete' - break; - case 106: // 'descendant' - shift(106); // 'descendant' - break; - case 107: // 'descendant-or-self' - shift(107); // 'descendant-or-self' - break; - case 108: // 'descending' - shift(108); // 'descending' - break; - case 113: // 'div' - shift(113); // 'div' - break; - case 114: // 'document' - shift(114); // 'document' - break; - case 117: // 'else' - shift(117); // 'else' - break; - case 118: // 'empty' - shift(118); // 'empty' - break; - case 121: // 'end' - shift(121); // 'end' - break; - case 123: // 'eq' - shift(123); // 'eq' - break; - case 124: // 'every' - shift(124); // 'every' - break; - case 126: // 'except' - shift(126); // 'except' - break; - case 129: // 'first' - shift(129); // 'first' - break; - case 130: // 'following' - shift(130); // 'following' - break; - case 131: // 'following-sibling' - shift(131); // 'following-sibling' - break; - case 132: // 'for' - shift(132); // 'for' - break; - case 141: // 'ge' - shift(141); // 'ge' - break; - case 143: // 'group' - shift(143); // 'group' - break; - case 145: // 'gt' - shift(145); // 'gt' - break; - case 146: // 'idiv' - shift(146); // 'idiv' - break; - case 148: // 'import' - shift(148); // 'import' - break; - case 154: // 'insert' - shift(154); // 'insert' - break; - case 155: // 'instance' - shift(155); // 'instance' - break; - case 157: // 'intersect' - shift(157); // 'intersect' - break; - case 158: // 'into' - shift(158); // 'into' - break; - case 159: // 'is' - shift(159); // 'is' - break; - case 165: // 'last' - shift(165); // 'last' - break; - case 167: // 'le' - shift(167); // 'le' - break; - case 169: // 'let' - shift(169); // 'let' - break; - case 173: // 'lt' - shift(173); // 'lt' - break; - case 175: // 'mod' - shift(175); // 'mod' - break; - case 176: // 'modify' - shift(176); // 'modify' - break; - case 177: // 'module' - shift(177); // 'module' - break; - case 179: // 'namespace' - shift(179); // 'namespace' - break; - case 181: // 'ne' - shift(181); // 'ne' - break; - case 193: // 'only' - shift(193); // 'only' - break; - case 195: // 'or' - shift(195); // 'or' - break; - case 196: // 'order' - shift(196); // 'order' - break; - case 197: // 'ordered' - shift(197); // 'ordered' - break; - case 201: // 'parent' - shift(201); // 'parent' - break; - case 207: // 'preceding' - shift(207); // 'preceding' - break; - case 208: // 'preceding-sibling' - shift(208); // 'preceding-sibling' - break; - case 213: // 'rename' - shift(213); // 'rename' - break; - case 214: // 'replace' - shift(214); // 'replace' - break; - case 215: // 'return' - shift(215); // 'return' - break; - case 219: // 'satisfies' - shift(219); // 'satisfies' - break; - case 224: // 'self' - shift(224); // 'self' - break; - case 230: // 'some' - shift(230); // 'some' - break; - case 231: // 'stable' - shift(231); // 'stable' - break; - case 232: // 'start' - shift(232); // 'start' - break; - case 243: // 'to' - shift(243); // 'to' - break; - case 244: // 'treat' - shift(244); // 'treat' - break; - case 245: // 'try' - shift(245); // 'try' - break; - case 249: // 'union' - shift(249); // 'union' - break; - case 251: // 'unordered' - shift(251); // 'unordered' - break; - case 255: // 'validate' - shift(255); // 'validate' - break; - case 261: // 'where' - shift(261); // 'where' - break; - case 265: // 'with' - shift(265); // 'with' - break; - case 269: // 'xquery' - shift(269); // 'xquery' - break; - case 67: // 'allowing' - shift(67); // 'allowing' - break; - case 76: // 'at' - shift(76); // 'at' - break; - case 78: // 'base-uri' - shift(78); // 'base-uri' - break; - case 80: // 'boundary-space' - shift(80); // 'boundary-space' - break; - case 81: // 'break' - shift(81); // 'break' - break; - case 86: // 'catch' - shift(86); // 'catch' - break; - case 93: // 'construction' - shift(93); // 'construction' - break; - case 96: // 'context' - shift(96); // 'context' - break; - case 97: // 'continue' - shift(97); // 'continue' - break; - case 99: // 'copy-namespaces' - shift(99); // 'copy-namespaces' - break; - case 101: // 'decimal-format' - shift(101); // 'decimal-format' - break; - case 120: // 'encoding' - shift(120); // 'encoding' - break; - case 127: // 'exit' - shift(127); // 'exit' - break; - case 128: // 'external' - shift(128); // 'external' - break; - case 136: // 'ft-option' - shift(136); // 'ft-option' - break; - case 149: // 'in' - shift(149); // 'in' - break; - case 150: // 'index' - shift(150); // 'index' - break; - case 156: // 'integrity' - shift(156); // 'integrity' - break; - case 166: // 'lax' - shift(166); // 'lax' - break; - case 187: // 'nodes' - shift(187); // 'nodes' - break; - case 194: // 'option' - shift(194); // 'option' - break; - case 198: // 'ordering' - shift(198); // 'ordering' - break; - case 217: // 'revalidation' - shift(217); // 'revalidation' - break; - case 220: // 'schema' - shift(220); // 'schema' - break; - case 223: // 'score' - shift(223); // 'score' - break; - case 229: // 'sliding' - shift(229); // 'sliding' - break; - case 235: // 'strict' - shift(235); // 'strict' - break; - case 246: // 'tumbling' - shift(246); // 'tumbling' - break; - case 247: // 'type' - shift(247); // 'type' - break; - case 252: // 'updating' - shift(252); // 'updating' - break; - case 256: // 'value' - shift(256); // 'value' - break; - case 257: // 'variable' - shift(257); // 'variable' - break; - case 258: // 'version' - shift(258); // 'version' - break; - case 262: // 'while' - shift(262); // 'while' - break; - case 92: // 'constraint' - shift(92); // 'constraint' - break; - case 171: // 'loop' - shift(171); // 'loop' - break; - default: - shift(216); // 'returning' - } - eventHandler.endNonterminal("FunctionName", e0); - } - - function parse_NCName() - { - eventHandler.startNonterminal("NCName", e0); - switch (l1) - { - case 26: // NCName^Token - shift(26); // NCName^Token - break; - case 65: // 'after' - shift(65); // 'after' - break; - case 70: // 'and' - shift(70); // 'and' - break; - case 74: // 'as' - shift(74); // 'as' - break; - case 75: // 'ascending' - shift(75); // 'ascending' - break; - case 79: // 'before' - shift(79); // 'before' - break; - case 83: // 'case' - shift(83); // 'case' - break; - case 84: // 'cast' - shift(84); // 'cast' - break; - case 85: // 'castable' - shift(85); // 'castable' - break; - case 89: // 'collation' - shift(89); // 'collation' - break; - case 100: // 'count' - shift(100); // 'count' - break; - case 104: // 'default' - shift(104); // 'default' - break; - case 108: // 'descending' - shift(108); // 'descending' - break; - case 113: // 'div' - shift(113); // 'div' - break; - case 117: // 'else' - shift(117); // 'else' - break; - case 118: // 'empty' - shift(118); // 'empty' - break; - case 121: // 'end' - shift(121); // 'end' - break; - case 123: // 'eq' - shift(123); // 'eq' - break; - case 126: // 'except' - shift(126); // 'except' - break; - case 132: // 'for' - shift(132); // 'for' - break; - case 141: // 'ge' - shift(141); // 'ge' - break; - case 143: // 'group' - shift(143); // 'group' - break; - case 145: // 'gt' - shift(145); // 'gt' - break; - case 146: // 'idiv' - shift(146); // 'idiv' - break; - case 155: // 'instance' - shift(155); // 'instance' - break; - case 157: // 'intersect' - shift(157); // 'intersect' - break; - case 158: // 'into' - shift(158); // 'into' - break; - case 159: // 'is' - shift(159); // 'is' - break; - case 167: // 'le' - shift(167); // 'le' - break; - case 169: // 'let' - shift(169); // 'let' - break; - case 173: // 'lt' - shift(173); // 'lt' - break; - case 175: // 'mod' - shift(175); // 'mod' - break; - case 176: // 'modify' - shift(176); // 'modify' - break; - case 181: // 'ne' - shift(181); // 'ne' - break; - case 193: // 'only' - shift(193); // 'only' - break; - case 195: // 'or' - shift(195); // 'or' - break; - case 196: // 'order' - shift(196); // 'order' - break; - case 215: // 'return' - shift(215); // 'return' - break; - case 219: // 'satisfies' - shift(219); // 'satisfies' - break; - case 231: // 'stable' - shift(231); // 'stable' - break; - case 232: // 'start' - shift(232); // 'start' - break; - case 243: // 'to' - shift(243); // 'to' - break; - case 244: // 'treat' - shift(244); // 'treat' - break; - case 249: // 'union' - shift(249); // 'union' - break; - case 261: // 'where' - shift(261); // 'where' - break; - case 265: // 'with' - shift(265); // 'with' - break; - case 68: // 'ancestor' - shift(68); // 'ancestor' - break; - case 69: // 'ancestor-or-self' - shift(69); // 'ancestor-or-self' - break; - case 77: // 'attribute' - shift(77); // 'attribute' - break; - case 88: // 'child' - shift(88); // 'child' - break; - case 91: // 'comment' - shift(91); // 'comment' - break; - case 98: // 'copy' - shift(98); // 'copy' - break; - case 103: // 'declare' - shift(103); // 'declare' - break; - case 105: // 'delete' - shift(105); // 'delete' - break; - case 106: // 'descendant' - shift(106); // 'descendant' - break; - case 107: // 'descendant-or-self' - shift(107); // 'descendant-or-self' - break; - case 114: // 'document' - shift(114); // 'document' - break; - case 115: // 'document-node' - shift(115); // 'document-node' - break; - case 116: // 'element' - shift(116); // 'element' - break; - case 119: // 'empty-sequence' - shift(119); // 'empty-sequence' - break; - case 124: // 'every' - shift(124); // 'every' - break; - case 129: // 'first' - shift(129); // 'first' - break; - case 130: // 'following' - shift(130); // 'following' - break; - case 131: // 'following-sibling' - shift(131); // 'following-sibling' - break; - case 140: // 'function' - shift(140); // 'function' - break; - case 147: // 'if' - shift(147); // 'if' - break; - case 148: // 'import' - shift(148); // 'import' - break; - case 154: // 'insert' - shift(154); // 'insert' - break; - case 160: // 'item' - shift(160); // 'item' - break; - case 165: // 'last' - shift(165); // 'last' - break; - case 177: // 'module' - shift(177); // 'module' - break; - case 179: // 'namespace' - shift(179); // 'namespace' - break; - case 180: // 'namespace-node' - shift(180); // 'namespace-node' - break; - case 186: // 'node' - shift(186); // 'node' - break; - case 197: // 'ordered' - shift(197); // 'ordered' - break; - case 201: // 'parent' - shift(201); // 'parent' - break; - case 207: // 'preceding' - shift(207); // 'preceding' - break; - case 208: // 'preceding-sibling' - shift(208); // 'preceding-sibling' - break; - case 211: // 'processing-instruction' - shift(211); // 'processing-instruction' - break; - case 213: // 'rename' - shift(213); // 'rename' - break; - case 214: // 'replace' - shift(214); // 'replace' - break; - case 221: // 'schema-attribute' - shift(221); // 'schema-attribute' - break; - case 222: // 'schema-element' - shift(222); // 'schema-element' - break; - case 224: // 'self' - shift(224); // 'self' - break; - case 230: // 'some' - shift(230); // 'some' - break; - case 238: // 'switch' - shift(238); // 'switch' - break; - case 239: // 'text' - shift(239); // 'text' - break; - case 245: // 'try' - shift(245); // 'try' - break; - case 248: // 'typeswitch' - shift(248); // 'typeswitch' - break; - case 251: // 'unordered' - shift(251); // 'unordered' - break; - case 255: // 'validate' - shift(255); // 'validate' - break; - case 257: // 'variable' - shift(257); // 'variable' - break; - case 269: // 'xquery' - shift(269); // 'xquery' - break; - case 67: // 'allowing' - shift(67); // 'allowing' - break; - case 76: // 'at' - shift(76); // 'at' - break; - case 78: // 'base-uri' - shift(78); // 'base-uri' - break; - case 80: // 'boundary-space' - shift(80); // 'boundary-space' - break; - case 81: // 'break' - shift(81); // 'break' - break; - case 86: // 'catch' - shift(86); // 'catch' - break; - case 93: // 'construction' - shift(93); // 'construction' - break; - case 96: // 'context' - shift(96); // 'context' - break; - case 97: // 'continue' - shift(97); // 'continue' - break; - case 99: // 'copy-namespaces' - shift(99); // 'copy-namespaces' - break; - case 101: // 'decimal-format' - shift(101); // 'decimal-format' - break; - case 120: // 'encoding' - shift(120); // 'encoding' - break; - case 127: // 'exit' - shift(127); // 'exit' - break; - case 128: // 'external' - shift(128); // 'external' - break; - case 136: // 'ft-option' - shift(136); // 'ft-option' - break; - case 149: // 'in' - shift(149); // 'in' - break; - case 150: // 'index' - shift(150); // 'index' - break; - case 156: // 'integrity' - shift(156); // 'integrity' - break; - case 166: // 'lax' - shift(166); // 'lax' - break; - case 187: // 'nodes' - shift(187); // 'nodes' - break; - case 194: // 'option' - shift(194); // 'option' - break; - case 198: // 'ordering' - shift(198); // 'ordering' - break; - case 217: // 'revalidation' - shift(217); // 'revalidation' - break; - case 220: // 'schema' - shift(220); // 'schema' - break; - case 223: // 'score' - shift(223); // 'score' - break; - case 229: // 'sliding' - shift(229); // 'sliding' - break; - case 235: // 'strict' - shift(235); // 'strict' - break; - case 246: // 'tumbling' - shift(246); // 'tumbling' - break; - case 247: // 'type' - shift(247); // 'type' - break; - case 252: // 'updating' - shift(252); // 'updating' - break; - case 256: // 'value' - shift(256); // 'value' - break; - case 258: // 'version' - shift(258); // 'version' - break; - case 262: // 'while' - shift(262); // 'while' - break; - case 92: // 'constraint' - shift(92); // 'constraint' - break; - case 171: // 'loop' - shift(171); // 'loop' - break; - default: - shift(216); // 'returning' - } - eventHandler.endNonterminal("NCName", e0); - } - - function shift(t) - { - if (l1 == t) - { - whitespace(); - eventHandler.terminal(JSONiqTokenizer.TOKEN[l1], b1, e1 > size ? size : e1); - b0 = b1; e0 = e1; l1 = 0; - } - else - { - error(b1, e1, 0, l1, t); - } - } - - function whitespace() - { - if (e0 != b1) - { - b0 = e0; - e0 = b1; - eventHandler.whitespace(b0, e0); - } - } - - function matchW(set) - { - var code; - for (;;) - { - code = match(set); - if (code != 28) // S^WS - { - break; - } - } - return code; - } - - function lookahead1W(set) - { - if (l1 == 0) - { - l1 = matchW(set); - b1 = begin; - e1 = end; - } - } - - function lookahead1(set) - { - if (l1 == 0) - { - l1 = match(set); - b1 = begin; - e1 = end; - } - } - - function error(b, e, s, l, t) - { - throw new self.ParseException(b, e, s, l, t); - } - - var lk, b0, e0; - var l1, b1, e1; - var eventHandler; - - var input; - var size; - var begin; - var end; - - function match(tokenSetId) - { - var nonbmp = false; - begin = end; - var current = end; - var result = JSONiqTokenizer.INITIAL[tokenSetId]; - var state = 0; - - for (var code = result & 4095; code != 0; ) - { - var charclass; - var c0 = current < size ? input.charCodeAt(current) : 0; - ++current; - if (c0 < 0x80) - { - charclass = JSONiqTokenizer.MAP0[c0]; - } - else if (c0 < 0xd800) - { - var c1 = c0 >> 4; - charclass = JSONiqTokenizer.MAP1[(c0 & 15) + JSONiqTokenizer.MAP1[(c1 & 31) + JSONiqTokenizer.MAP1[c1 >> 5]]]; - } - else - { - if (c0 < 0xdc00) - { - var c1 = current < size ? input.charCodeAt(current) : 0; - if (c1 >= 0xdc00 && c1 < 0xe000) - { - ++current; - c0 = ((c0 & 0x3ff) << 10) + (c1 & 0x3ff) + 0x10000; - nonbmp = true; - } - } - var lo = 0, hi = 5; - for (var m = 3; ; m = (hi + lo) >> 1) - { - if (JSONiqTokenizer.MAP2[m] > c0) hi = m - 1; - else if (JSONiqTokenizer.MAP2[6 + m] < c0) lo = m + 1; - else {charclass = JSONiqTokenizer.MAP2[12 + m]; break;} - if (lo > hi) {charclass = 0; break;} - } - } - - state = code; - var i0 = (charclass << 12) + code - 1; - code = JSONiqTokenizer.TRANSITION[(i0 & 15) + JSONiqTokenizer.TRANSITION[i0 >> 4]]; - - if (code > 4095) - { - result = code; - code &= 4095; - end = current; - } - } - - result >>= 12; - if (result == 0) - { - end = current - 1; - var c1 = end < size ? input.charCodeAt(end) : 0; - if (c1 >= 0xdc00 && c1 < 0xe000) --end; - return error(begin, end, state, -1, -1); - } - - if (nonbmp) - { - for (var i = result >> 9; i > 0; --i) - { - --end; - var c1 = end < size ? input.charCodeAt(end) : 0; - if (c1 >= 0xdc00 && c1 < 0xe000) --end; - } - } - else - { - end -= result >> 9; - } - - return (result & 511) - 1; - } -} - -JSONiqTokenizer.getTokenSet = function(tokenSetId) -{ - var set = []; - var s = tokenSetId < 0 ? - tokenSetId : INITIAL[tokenSetId] & 4095; - for (var i = 0; i < 276; i += 32) - { - var j = i; - var i0 = (i >> 5) * 2062 + s - 1; - var i1 = i0 >> 2; - var i2 = i1 >> 2; - var f = JSONiqTokenizer.EXPECTED[(i0 & 3) + JSONiqTokenizer.EXPECTED[(i1 & 3) + JSONiqTokenizer.EXPECTED[(i2 & 3) + JSONiqTokenizer.EXPECTED[i2 >> 2]]]]; - for ( ; f != 0; f >>>= 1, ++j) - { - if ((f & 1) != 0) - { - set.push(JSONiqTokenizer.TOKEN[j]); - } - } - } - return set; -}; - -JSONiqTokenizer.MAP0 = -[ 66, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 27, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 32, 31, 31, 33, 31, 31, 31, 31, 31, 31, 34, 35, 36, 35, 31, 35, 37, 38, 39, 40, 41, 42, 43, 44, 45, 31, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 31, 61, 62, 63, 64, 35 -]; - -JSONiqTokenizer.MAP1 = -[ 108, 124, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 156, 181, 181, 181, 181, 181, 214, 215, 213, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 247, 261, 277, 293, 309, 347, 363, 379, 416, 416, 416, 408, 331, 323, 331, 323, 331, 331, 331, 331, 331, 331, 331, 331, 331, 331, 331, 331, 331, 331, 331, 331, 433, 433, 433, 433, 433, 433, 433, 316, 331, 331, 331, 331, 331, 331, 331, 331, 394, 416, 416, 417, 415, 416, 416, 331, 331, 331, 331, 331, 331, 331, 331, 331, 331, 331, 331, 331, 331, 331, 331, 331, 331, 416, 416, 416, 416, 416, 416, 416, 416, 416, 416, 416, 416, 416, 416, 416, 416, 416, 416, 416, 416, 416, 416, 416, 416, 416, 416, 416, 416, 416, 416, 416, 416, 330, 331, 331, 331, 331, 331, 331, 331, 331, 331, 331, 331, 331, 331, 331, 331, 331, 331, 331, 331, 331, 331, 331, 331, 331, 331, 331, 331, 331, 331, 331, 331, 331, 416, 66, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 27, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 35, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 32, 31, 31, 33, 31, 31, 31, 31, 31, 31, 34, 35, 36, 35, 31, 35, 37, 38, 39, 40, 41, 42, 43, 44, 45, 31, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 31, 61, 62, 63, 64, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 31, 31, 35, 35, 35, 35, 35, 35, 35, 65, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65 -]; - -JSONiqTokenizer.MAP2 = -[ 57344, 63744, 64976, 65008, 65536, 983040, 63743, 64975, 65007, 65533, 983039, 1114111, 35, 31, 35, 31, 31, 35 -]; - -JSONiqTokenizer.INITIAL = -[ 1, 2, 36867, 45060, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15 -]; - -JSONiqTokenizer.TRANSITION = -[ 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 22874, 18847, 17152, 19027, 19252, 17687, 19027, 17173, 30771, 36436, 17330, 17349, 18940, 17189, 17208, 17281, 17675, 17991, 17308, 17327, 17346, 18937, 17365, 21855, 18660, 18676, 19025, 17265, 22008, 17292, 17421, 21157, 17192, 21217, 21848, 17311, 18669, 19018, 19027, 17447, 17470, 17497, 17520, 17251, 36410, 17824, 20322, 20663, 20490, 17543, 17559, 17585, 21862, 17504, 17527, 17258, 36417, 18199, 21915, 17611, 36466, 18259, 17633, 17661, 18368, 17703, 17730, 17772, 33538, 21921, 17617, 36472, 18265, 36530, 17477, 19171, 17902, 17934, 17744, 17795, 17874, 17590, 21595, 17481, 17890, 17922, 18742, 17960, 36550, 17714, 17976, 18021, 18738, 18065, 36544, 18632, 18081, 18098, 18114, 18159, 18185, 18215, 18094, 18251, 18292, 18281, 18308, 18005, 18338, 18354, 18384, 17849, 36402, 19251, 17838, 17163, 30650, 18400, 17858, 32918, 17756, 18816, 18429, 18445, 18143, 17393, 18500, 18516, 18546, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 18590, 21686, 17152, 19027, 19252, 17687, 19027, 28677, 30771, 36436, 17330, 17349, 18940, 17189, 17208, 17281, 17675, 17991, 17308, 17327, 17346, 18937, 17365, 21855, 18660, 18676, 19025, 17265, 22008, 17292, 17421, 21157, 17192, 21217, 21848, 17311, 18669, 19018, 19027, 17447, 17470, 17497, 17520, 17251, 36410, 17824, 20322, 20663, 20490, 17543, 17559, 17585, 21862, 17504, 17527, 17258, 36417, 18199, 21915, 17611, 36466, 18259, 17633, 17661, 18368, 17703, 17730, 17772, 33538, 21921, 17617, 36472, 18265, 36530, 17477, 19171, 17902, 17934, 17744, 17795, 17874, 17590, 21595, 17481, 17890, 17922, 18742, 17960, 36550, 17714, 17976, 18021, 18738, 18065, 36544, 18632, 18081, 18098, 18114, 18159, 18185, 18215, 18094, 18251, 18292, 18281, 18308, 18005, 18338, 18354, 18384, 17849, 36402, 19251, 17838, 17163, 30650, 18400, 17858, 32918, 17756, 18816, 18429, 18445, 18143, 17393, 18500, 18516, 18546, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 20083, 18847, 18648, 19027, 19252, 21242, 19027, 17173, 30771, 36436, 17330, 17349, 18940, 17189, 17208, 17281, 17675, 17991, 17308, 17327, 17346, 18937, 18460, 21855, 18660, 18676, 19025, 17265, 22008, 17292, 17421, 21157, 17192, 21217, 21848, 17311, 18669, 19018, 19027, 17447, 32909, 17497, 17520, 17251, 36410, 17824, 20322, 20663, 20490, 17543, 17559, 17585, 21862, 17504, 17527, 17258, 36417, 21890, 21915, 17611, 36466, 18259, 17633, 17661, 18368, 17703, 17730, 17772, 33538, 21921, 17617, 36472, 18265, 36530, 17477, 19171, 17902, 17934, 17744, 17795, 17874, 17590, 21595, 17481, 19175, 17906, 18742, 17960, 36550, 17714, 17976, 18021, 18738, 18692, 18413, 18632, 18081, 18098, 18114, 18159, 18185, 18717, 18094, 18251, 18292, 18281, 18308, 18005, 18338, 18354, 18384, 17849, 36402, 19251, 17838, 17163, 30650, 18400, 17858, 32918, 17645, 18816, 18429, 18445, 18530, 17393, 18758, 18516, 18546, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 18774, 18789, 18805, 19027, 19252, 17687, 19027, 17173, 30771, 36436, 17330, 17349, 18940, 17189, 17208, 17281, 17675, 17991, 17308, 17327, 17346, 18937, 18460, 21855, 18660, 18676, 19025, 17265, 22008, 17292, 17421, 21157, 17192, 21217, 21848, 17311, 18669, 19018, 19027, 17447, 32909, 17497, 17520, 17251, 36410, 17824, 20322, 20663, 20490, 17543, 17559, 17585, 21862, 17504, 17527, 17258, 36417, 21890, 21915, 17611, 36466, 18259, 17633, 17661, 18368, 17703, 17730, 17772, 33538, 21921, 17617, 36472, 18265, 36530, 17477, 19171, 17902, 17934, 17744, 17795, 17874, 17590, 21595, 17481, 19175, 17906, 18742, 17960, 36550, 17714, 17976, 18021, 18738, 18692, 18413, 18632, 18081, 18098, 18114, 18159, 18185, 18717, 18094, 18251, 18292, 18281, 18308, 18005, 18338, 18354, 18384, 17849, 36402, 19251, 17838, 17163, 30650, 18400, 17858, 32918, 17645, 18816, 18429, 18445, 18530, 17393, 18758, 18516, 18546, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 18832, 22889, 18925, 19027, 19252, 17569, 19027, 17173, 30771, 36436, 17330, 17349, 18940, 17189, 17208, 17281, 17675, 17991, 17308, 17327, 17346, 18937, 18956, 21855, 18660, 18676, 19025, 17265, 22008, 17292, 17421, 21157, 17192, 21217, 19073, 17311, 18669, 19018, 19027, 17447, 32909, 17497, 17520, 17251, 36410, 17824, 20322, 20663, 20490, 17543, 17559, 18972, 21862, 17504, 17527, 17258, 36417, 21890, 21915, 17611, 36466, 18259, 17633, 17661, 18368, 17703, 17730, 17772, 33538, 21921, 17617, 36472, 18265, 36530, 17477, 19171, 17902, 17934, 17744, 17795, 17874, 17590, 21595, 17481, 19175, 17906, 18742, 17960, 36550, 17714, 17976, 18021, 18738, 18692, 18413, 18632, 18081, 18098, 18114, 18159, 18185, 18717, 18094, 18251, 18292, 18281, 18308, 18005, 18338, 18354, 18384, 17849, 36402, 19251, 17838, 17163, 30650, 18400, 17858, 32918, 17645, 18816, 18429, 18445, 18530, 17393, 18758, 18516, 18546, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 21818, 18847, 19006, 19027, 19252, 17687, 19027, 17173, 30771, 36436, 17330, 17349, 18940, 17189, 17208, 17281, 17675, 17991, 17308, 17327, 17346, 18937, 18460, 21855, 18660, 18676, 19025, 17265, 22008, 17292, 17421, 21157, 17192, 21217, 21848, 17311, 18669, 19018, 19027, 17447, 32909, 17497, 17520, 17251, 36410, 17824, 20322, 20663, 20490, 17543, 17559, 17585, 21862, 17504, 17527, 17258, 36417, 21890, 21915, 17611, 36466, 18259, 17633, 17661, 18368, 17703, 17730, 17772, 33538, 21921, 17617, 36472, 18265, 36530, 17477, 19171, 17902, 17934, 17744, 17795, 17874, 17590, 21595, 17481, 19175, 17906, 18742, 17960, 36550, 17714, 17976, 18021, 18738, 18692, 18413, 18632, 18081, 18098, 18114, 18159, 18185, 18717, 18094, 18251, 18292, 18281, 18308, 18005, 18338, 18354, 18384, 17849, 36402, 19251, 17838, 17163, 30650, 18400, 17858, 32918, 17645, 18816, 18429, 18445, 18530, 17393, 18758, 18516, 18546, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 21671, 18847, 19006, 19027, 19252, 17687, 19027, 17173, 30771, 36436, 17330, 17349, 18940, 17189, 17208, 17281, 17675, 17991, 17308, 17327, 17346, 18937, 18460, 21855, 18660, 18676, 19025, 17265, 22008, 17292, 17421, 21157, 17192, 21217, 21848, 17311, 18669, 19018, 19027, 17447, 32909, 17497, 17520, 17251, 36410, 17824, 20322, 20663, 20490, 17543, 17559, 17585, 21862, 17504, 17527, 17258, 36417, 21890, 21915, 17611, 36466, 18259, 17633, 17661, 18368, 17703, 17730, 17772, 33538, 21921, 17617, 36472, 18265, 36530, 17477, 19171, 17902, 17934, 17744, 17795, 17874, 17590, 21595, 17481, 19175, 17906, 18742, 17960, 36550, 17714, 17976, 18021, 18738, 18692, 18413, 18632, 18081, 18098, 18114, 18159, 18185, 18717, 18094, 18251, 18292, 18281, 18308, 18005, 18338, 18354, 18384, 17849, 36402, 19251, 17838, 17163, 30650, 18400, 17858, 32918, 17645, 18816, 18429, 18445, 18530, 17393, 18758, 18516, 18546, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 22395, 20098, 18731, 19027, 19252, 17687, 19027, 17173, 23525, 36436, 17330, 17349, 18940, 17189, 17208, 17281, 17675, 18129, 17308, 17327, 17346, 18937, 18460, 21855, 18660, 18676, 19025, 17265, 22008, 17292, 17421, 21157, 17192, 20746, 19130, 17311, 18669, 19018, 19027, 17447, 32909, 17497, 17520, 17251, 36410, 17824, 20322, 20663, 20490, 17543, 17559, 17585, 21862, 17504, 17527, 17258, 36417, 21890, 21915, 17611, 36466, 18259, 17633, 17661, 18368, 17703, 17730, 17772, 33538, 21921, 17617, 36472, 18265, 36530, 17477, 19171, 17902, 17934, 17744, 17795, 17874, 17590, 21595, 17481, 19175, 17906, 18742, 17960, 36550, 17714, 17976, 18021, 18738, 18692, 18413, 18632, 18081, 18098, 18114, 18159, 18185, 18717, 18094, 18251, 18292, 18281, 18308, 18005, 18338, 18354, 18384, 17849, 36402, 19251, 17838, 17163, 30650, 18400, 17858, 32918, 17645, 18816, 18429, 18445, 18530, 17393, 18758, 18516, 18546, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 19043, 18847, 18620, 19027, 19252, 17687, 19027, 17173, 30771, 36436, 17330, 17349, 18940, 17189, 17208, 17281, 17675, 17991, 17308, 17327, 17346, 18937, 18460, 21855, 18660, 18676, 19025, 17265, 22008, 17292, 17421, 21157, 17192, 21217, 21848, 17311, 18669, 19018, 19027, 17447, 32909, 17497, 17520, 17251, 36410, 17824, 20322, 20663, 20490, 17543, 17559, 17585, 21862, 17504, 17527, 17258, 36417, 21890, 21915, 17611, 36466, 18259, 17633, 17661, 18368, 17703, 17730, 17772, 33538, 21921, 17617, 36472, 18265, 36530, 17477, 19171, 17902, 17934, 17744, 17795, 17874, 17590, 21595, 17481, 19175, 17906, 18742, 17960, 36550, 17714, 17976, 18021, 18738, 18692, 18413, 18632, 18081, 18098, 18114, 18159, 18185, 18717, 18094, 18251, 18292, 18281, 18308, 18005, 18338, 18354, 18384, 17849, 36402, 19251, 17838, 17163, 30650, 18400, 17858, 32918, 17645, 18816, 18429, 18445, 18530, 17393, 18758, 18516, 18546, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 19100, 22410, 19006, 19027, 19252, 17687, 19027, 19084, 30771, 36436, 17330, 17349, 18940, 17189, 17208, 17281, 17675, 17991, 17308, 17327, 17346, 18937, 18460, 21855, 18660, 18676, 19025, 17265, 22008, 17292, 17421, 21157, 17192, 21217, 21848, 17311, 18669, 19018, 19027, 17447, 32909, 17497, 17520, 17251, 36410, 17824, 20322, 20663, 20490, 17543, 17559, 17585, 21862, 17504, 17527, 17258, 36417, 21890, 21915, 17611, 36466, 18259, 17633, 17661, 18368, 17703, 17730, 17772, 33538, 21921, 17617, 36472, 18265, 36530, 17477, 19171, 17902, 17934, 17744, 17795, 17874, 17590, 21595, 17481, 19175, 17906, 18742, 17960, 36550, 17714, 17976, 18021, 18738, 18692, 18413, 18632, 18081, 18098, 18114, 18159, 18185, 18717, 18094, 18251, 18292, 18281, 18308, 18005, 18338, 18354, 18384, 17849, 36402, 19251, 17838, 17163, 30650, 18400, 17858, 32918, 17645, 18816, 18429, 18445, 18530, 17393, 18758, 18516, 18546, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 21967, 21982, 19006, 19027, 19252, 17687, 19027, 18701, 30771, 36436, 17330, 17349, 18940, 17189, 17208, 17281, 17675, 17991, 17308, 17327, 17346, 18937, 18460, 21855, 18660, 18676, 19025, 17265, 22008, 17292, 17421, 21157, 17192, 21217, 21848, 17311, 18669, 19018, 19027, 17447, 32909, 17497, 17520, 17251, 36410, 17824, 20322, 20663, 20490, 17543, 17559, 17585, 21862, 17504, 17527, 17258, 36417, 21890, 21915, 17611, 36466, 18259, 17633, 17661, 18368, 17703, 17730, 17772, 33538, 21921, 17617, 36472, 18265, 36530, 17477, 19171, 17902, 17934, 17744, 17795, 17874, 17590, 21595, 17481, 19175, 17906, 18742, 17960, 36550, 17714, 17976, 18021, 18738, 18692, 18413, 18632, 18081, 18098, 18114, 18159, 18185, 18717, 18094, 18251, 18292, 18281, 18308, 18005, 18338, 18354, 18384, 17849, 36402, 19251, 17838, 17163, 30650, 18400, 17858, 32918, 17645, 18816, 18429, 18445, 18530, 17393, 18758, 18516, 18546, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 22380, 18847, 19006, 19027, 19252, 30659, 19027, 17173, 30771, 36436, 17330, 17349, 18940, 17189, 17208, 17281, 17675, 19157, 17308, 17327, 17346, 18937, 18460, 21855, 18660, 18676, 19025, 17265, 22008, 17292, 17421, 21157, 17192, 21217, 19299, 17311, 18669, 19018, 19027, 17447, 32909, 17497, 17520, 17251, 36410, 17824, 20322, 20663, 20490, 17543, 17559, 19191, 21862, 17504, 17527, 17258, 36417, 21890, 21915, 17611, 36466, 18259, 17633, 17661, 18368, 17703, 17730, 17772, 33538, 21921, 17617, 36472, 18265, 36530, 17477, 19171, 17902, 17934, 17744, 17795, 17874, 17590, 21595, 17481, 19175, 17906, 18742, 17960, 36550, 17714, 17976, 18021, 18738, 18692, 18413, 18632, 18081, 18098, 18114, 18159, 18185, 18717, 18094, 18251, 18292, 18281, 18308, 18005, 18338, 18354, 18384, 17849, 36402, 19251, 17838, 17163, 30650, 18400, 17858, 32918, 17645, 18816, 18429, 18445, 18530, 17393, 18758, 18516, 18546, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 21758, 18847, 19006, 19027, 19252, 17687, 19027, 17173, 30771, 36436, 17330, 17349, 18940, 17189, 17208, 17281, 17675, 19237, 17308, 17327, 17346, 18937, 18460, 21855, 18660, 18676, 19025, 17265, 22008, 17292, 17421, 21157, 17192, 21217, 21848, 17311, 18669, 19018, 19027, 17447, 32909, 17497, 17520, 17251, 36410, 17824, 20322, 20663, 20490, 17543, 17559, 17585, 21862, 17504, 17527, 17258, 36417, 21890, 21915, 17611, 36466, 18259, 17633, 17661, 18368, 17703, 17730, 17772, 33538, 21921, 17617, 36472, 18265, 36530, 17477, 19171, 17902, 17934, 17744, 17795, 17874, 17590, 21595, 17481, 19175, 17906, 18742, 17960, 36550, 17714, 17976, 18021, 18738, 18692, 18413, 18632, 18081, 18098, 18114, 18159, 18185, 18717, 18094, 18251, 18292, 18281, 18308, 18005, 18338, 18354, 18384, 17849, 36402, 19251, 17838, 17163, 30650, 18400, 17858, 32918, 17645, 18816, 18429, 18445, 18530, 17393, 18758, 18516, 18546, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 21626, 18847, 19006, 19027, 19252, 17687, 19027, 17173, 30771, 36436, 17330, 17349, 18940, 17189, 17208, 17281, 17675, 17991, 17308, 17327, 17346, 18937, 18460, 21855, 18660, 18676, 19025, 17265, 22008, 17292, 17421, 21157, 17192, 21217, 21848, 17311, 18669, 19018, 19027, 17447, 32909, 17497, 17520, 17251, 36410, 17824, 20322, 20663, 20490, 17543, 17559, 17585, 21862, 17504, 17527, 17258, 36417, 21890, 21915, 17611, 36466, 18259, 17633, 17661, 18368, 17703, 17730, 17772, 33538, 21921, 17617, 36472, 18265, 36530, 17477, 19171, 17902, 17934, 17744, 17795, 17874, 17590, 21595, 17481, 19175, 17906, 18742, 17960, 36550, 17714, 17976, 18021, 18738, 18692, 18413, 18632, 18081, 18098, 18114, 18159, 18185, 18717, 18094, 18251, 18292, 18281, 18308, 18005, 18338, 18354, 18384, 17849, 36402, 19251, 17838, 17163, 30650, 18400, 17858, 32918, 17645, 18816, 18429, 18445, 18530, 17393, 18758, 18516, 18546, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 19268, 19284, 19326, 18482, 27869, 30509, 24384, 31417, 23323, 18482, 19370, 18482, 18484, 27202, 19389, 27202, 27202, 19411, 24384, 34295, 24384, 24384, 25485, 18482, 18482, 18482, 18482, 18482, 25794, 27202, 27202, 27202, 27202, 28530, 19459, 24384, 24384, 24384, 24384, 24017, 18036, 24041, 18482, 18482, 18482, 18484, 19487, 27202, 27202, 27202, 27202, 19503, 35523, 19539, 24384, 24384, 24384, 19647, 18482, 35623, 18482, 18482, 23052, 27202, 19557, 27202, 27202, 30764, 23993, 24384, 19579, 24384, 24384, 26758, 18482, 18482, 19346, 27867, 27202, 27202, 19599, 17590, 23998, 24384, 24384, 19619, 25683, 18482, 18482, 28511, 27202, 27203, 23997, 19639, 19887, 28419, 18902, 18483, 19663, 27202, 24325, 35844, 19887, 30991, 19713, 19395, 19736, 22259, 19754, 22073, 19770, 35154, 19795, 19816, 19836, 19859, 25794, 34248, 24116, 19720, 19875, 30988, 23482, 30981, 28304, 19438, 27956, 19678, 27944, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 21743, 18847, 19006, 19027, 19252, 17431, 19027, 17173, 30771, 36436, 17330, 17349, 18940, 17189, 17208, 17281, 17675, 17991, 17308, 17327, 17346, 18937, 18460, 21855, 18660, 18676, 19025, 17265, 22008, 17292, 17421, 21157, 17192, 21217, 21848, 17311, 18669, 19018, 19027, 17447, 32909, 17497, 17520, 17251, 36410, 17824, 20322, 20663, 20490, 17543, 17559, 17585, 21862, 17504, 17527, 17258, 36417, 21890, 21915, 17611, 36466, 18259, 17633, 17661, 18368, 17703, 17730, 17772, 33538, 21921, 17617, 36472, 18265, 36530, 17477, 19171, 17902, 17934, 17744, 17795, 17874, 17590, 21595, 17481, 19175, 17906, 18742, 17960, 36550, 17714, 17976, 18021, 18738, 18692, 18413, 18632, 18081, 18098, 18114, 18159, 18185, 18717, 18094, 18251, 18292, 18281, 18308, 18005, 18338, 18354, 18384, 17849, 36402, 19251, 17838, 17163, 30650, 18400, 17858, 32918, 17645, 18816, 18429, 18445, 18530, 17393, 18758, 18516, 18546, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 22365, 18847, 19907, 19027, 19252, 17687, 19027, 17173, 30771, 36436, 17330, 17349, 18940, 17189, 17208, 17281, 17675, 17991, 17308, 17327, 17346, 18937, 18460, 21855, 18660, 18676, 19025, 17265, 22008, 17292, 17421, 21157, 17192, 21217, 21848, 17311, 18669, 19018, 19027, 17447, 32909, 17497, 17520, 17251, 36410, 17824, 20322, 20663, 20490, 17543, 17559, 17585, 21862, 17504, 17527, 17258, 36417, 21890, 21915, 17611, 36466, 18259, 17633, 17661, 18368, 17703, 17730, 17772, 33538, 21921, 17617, 36472, 18265, 36530, 17477, 19171, 17902, 17934, 17744, 17795, 17874, 17590, 21595, 17481, 19175, 17906, 18742, 17960, 36550, 17714, 17976, 18021, 18738, 18692, 18413, 18632, 18081, 18098, 18114, 18159, 18185, 18717, 18094, 18251, 18292, 18281, 18308, 18005, 18338, 18354, 18384, 17849, 36402, 19251, 17838, 17163, 30650, 18400, 17858, 32918, 17645, 18816, 18429, 18445, 18530, 17393, 18758, 18516, 18546, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 21641, 18847, 19326, 18482, 27869, 30544, 24384, 29176, 21442, 18482, 18482, 18482, 18484, 27202, 27202, 27202, 27202, 19935, 24384, 24384, 24384, 24384, 32316, 18482, 18482, 18482, 18482, 18482, 25794, 27202, 27202, 27202, 27202, 28530, 19965, 24384, 24384, 24384, 24384, 31473, 18475, 18482, 18482, 18482, 18482, 18484, 27202, 27202, 27202, 27202, 27202, 19988, 24384, 24384, 24384, 24384, 24384, 33654, 18482, 18482, 18482, 18482, 23052, 27202, 27202, 27202, 27202, 29523, 29939, 24384, 24384, 24384, 24384, 26114, 18482, 18482, 18482, 27867, 27202, 27202, 27202, 20017, 22934, 24384, 24384, 24384, 18481, 18482, 18482, 27202, 27202, 35771, 20047, 24385, 19887, 25677, 18482, 18483, 27202, 27202, 19738, 23870, 19887, 30991, 18484, 27202, 31802, 19425, 19466, 23052, 23296, 19847, 30990, 27868, 34251, 19859, 25794, 34248, 19856, 25793, 19779, 30988, 23482, 30981, 22080, 19438, 27956, 19678, 27944, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 20068, 19058, 20158, 20367, 20884, 17944, 20276, 20853, 25651, 20604, 20460, 20185, 20209, 17189, 17208, 17281, 17675, 20232, 20273, 20295, 20338, 22456, 20777, 20600, 21329, 20635, 20365, 20937, 21207, 17292, 17421, 21157, 17192, 21217, 22425, 20279, 25549, 22436, 20276, 20383, 18983, 20421, 20446, 21317, 21051, 20476, 20322, 20663, 20490, 17543, 17559, 17585, 22463, 20540, 19523, 20246, 20556, 20257, 20430, 20585, 20620, 20193, 20651, 17661, 18368, 17703, 17730, 17772, 19513, 20679, 20692, 22446, 21027, 21097, 18990, 21111, 20708, 20736, 17744, 17795, 17874, 17590, 25536, 20349, 20762, 20812, 20169, 20828, 21376, 17714, 17976, 18021, 18560, 20844, 20569, 25560, 20869, 20900, 18114, 18159, 20916, 20953, 21013, 21043, 21067, 18281, 21083, 18574, 21127, 21143, 21181, 20515, 20930, 20883, 20504, 21197, 21233, 21258, 20524, 20216, 17405, 21270, 21286, 21302, 20720, 20310, 21345, 21361, 21392, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 21952, 18847, 19006, 19027, 19252, 17687, 19027, 17173, 30771, 36436, 17330, 17349, 18940, 17189, 17208, 17281, 17675, 17991, 17308, 17327, 17346, 18937, 21427, 21855, 18660, 18676, 19025, 17265, 22008, 17292, 17421, 21157, 17192, 21217, 21848, 17311, 18669, 19018, 19027, 21479, 32909, 17497, 17520, 17251, 36410, 17824, 20322, 20663, 20490, 17543, 17559, 17585, 21862, 17504, 17527, 17258, 36417, 36500, 21915, 17611, 36466, 18259, 17633, 17661, 18368, 17703, 17730, 17772, 28667, 21921, 17617, 36472, 18265, 17237, 17477, 19171, 17902, 17934, 17744, 17795, 17874, 21550, 21509, 17481, 19175, 17906, 18742, 17960, 36550, 17714, 17976, 21535, 30636, 18692, 18413, 18632, 18081, 18098, 18114, 18159, 18185, 18717, 18094, 18251, 18292, 18281, 18308, 18005, 18338, 18354, 18384, 17849, 36402, 19251, 17838, 17163, 30650, 18400, 17858, 32918, 17645, 18816, 18429, 18445, 18530, 17393, 18758, 18516, 18546, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 21773, 18847, 21587, 19027, 19252, 17687, 19027, 17173, 30771, 36436, 17330, 17349, 18940, 17189, 17208, 17281, 17675, 17991, 17308, 17327, 17346, 18937, 18460, 21855, 18660, 18676, 19025, 17265, 22008, 17292, 17421, 21157, 17192, 21217, 21848, 17311, 18669, 19018, 19027, 17447, 32909, 17497, 17520, 17251, 36410, 17824, 20322, 20663, 20490, 17543, 17559, 17585, 21862, 17504, 17527, 17258, 36417, 21890, 21915, 17611, 36466, 18259, 17633, 17661, 18368, 17703, 17730, 17772, 33538, 21921, 17617, 36472, 18265, 36530, 17477, 19171, 17902, 17934, 17744, 17795, 17874, 17590, 21595, 17481, 19175, 17906, 18742, 17960, 36550, 17714, 17976, 18021, 18738, 18692, 18413, 18632, 18081, 18098, 18114, 18159, 18185, 18717, 18094, 18251, 18292, 18281, 18308, 18005, 18338, 18354, 18384, 17849, 36402, 19251, 17838, 17163, 30650, 18400, 17858, 32918, 17645, 18816, 18429, 18445, 18530, 17393, 18758, 18516, 18546, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 21611, 18847, 19006, 19027, 19252, 18169, 19027, 17173, 30771, 36436, 17330, 17349, 18940, 17189, 17208, 17281, 17675, 17991, 17308, 17327, 17346, 18937, 18460, 21855, 18660, 18676, 19025, 17265, 22008, 17292, 17421, 21157, 17192, 21217, 21848, 17311, 18669, 19018, 19027, 17447, 32909, 17497, 17520, 17251, 36410, 17824, 20322, 20663, 20490, 17543, 17559, 17585, 21862, 17504, 17527, 17258, 36417, 21890, 21915, 17611, 36466, 18259, 17633, 17661, 18368, 17703, 17730, 17772, 33538, 21921, 17617, 36472, 18265, 36530, 17477, 19171, 17902, 17934, 17744, 17795, 17874, 17590, 21595, 17481, 19175, 17906, 18742, 17960, 36550, 17714, 17976, 18021, 18738, 18692, 18413, 18632, 18081, 18098, 18114, 18159, 18185, 18717, 18094, 18251, 18292, 18281, 18308, 18005, 18338, 18354, 18384, 17849, 36402, 19251, 17838, 17163, 30650, 18400, 17858, 32918, 17645, 18816, 18429, 18445, 18530, 17393, 18758, 18516, 18546, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 21728, 19115, 21878, 19027, 19252, 17687, 19027, 19310, 30771, 36436, 17330, 17349, 18940, 17189, 17208, 17281, 17675, 17991, 17308, 17327, 17346, 18937, 17379, 21855, 18660, 18676, 19025, 17265, 22008, 17292, 17421, 21157, 17192, 21217, 21848, 17311, 18669, 19018, 19027, 17447, 21906, 17497, 17520, 17251, 36410, 17824, 20322, 20663, 20490, 17543, 17559, 17585, 21862, 17504, 17527, 17258, 36417, 18322, 21915, 17611, 36466, 18259, 17633, 17661, 18368, 17703, 17730, 17772, 33538, 21921, 17617, 36472, 18265, 36530, 17477, 19171, 17902, 17934, 17744, 17795, 17874, 17590, 21595, 17481, 19175, 17906, 18742, 17960, 36550, 17714, 17976, 18021, 18738, 18692, 18413, 18632, 18081, 18098, 18114, 18159, 18185, 18717, 18094, 18251, 18292, 18281, 18308, 18005, 18338, 18354, 18384, 17849, 36402, 19251, 17838, 17163, 30650, 18400, 17858, 32918, 17645, 18816, 18429, 18445, 18530, 17393, 18758, 18516, 18546, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 21937, 18605, 19006, 19027, 19252, 22018, 19027, 17173, 30771, 36436, 17330, 17349, 18940, 17189, 17208, 17281, 17675, 17991, 17308, 17327, 17346, 18937, 18460, 21855, 18660, 18676, 19025, 17265, 22008, 17292, 17421, 21157, 17192, 21217, 21848, 17311, 18669, 19018, 19027, 17447, 32909, 17497, 17520, 17251, 36410, 17824, 20322, 20663, 20490, 17543, 17559, 17585, 21862, 17504, 17527, 17258, 36417, 21890, 21915, 17611, 36466, 18259, 17633, 17661, 18368, 17703, 17730, 17772, 33538, 21921, 17617, 36472, 18265, 36530, 17477, 19171, 17902, 17934, 17744, 17795, 17874, 17590, 21595, 17481, 19175, 17906, 18742, 17960, 36550, 17714, 17976, 18021, 18738, 18692, 18413, 18632, 18081, 18098, 18114, 18159, 18185, 18717, 18094, 18251, 18292, 18281, 18308, 18005, 18338, 18354, 18384, 17849, 36402, 19251, 17838, 17163, 30650, 18400, 17858, 32918, 17645, 18816, 18429, 18445, 18530, 17393, 18758, 18516, 18546, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 21656, 21833, 19006, 19027, 19252, 17687, 19027, 21519, 30771, 36436, 17330, 17349, 18940, 17189, 17208, 17281, 17675, 17991, 17308, 17327, 17346, 18937, 18460, 21855, 18660, 18676, 19025, 17265, 22008, 17292, 17421, 21157, 17192, 21217, 21848, 17311, 18669, 19018, 19027, 17447, 32909, 17497, 17520, 17251, 36410, 17824, 20322, 20663, 20490, 17543, 17559, 17585, 21862, 17504, 17527, 17258, 36417, 21890, 21915, 17611, 36466, 18259, 17633, 17661, 18368, 17703, 17730, 17772, 33538, 21921, 17617, 36472, 18265, 36530, 17477, 19171, 17902, 17934, 17744, 17795, 17874, 17590, 21595, 17481, 19175, 17906, 18742, 17960, 36550, 17714, 17976, 18021, 18738, 18692, 18413, 18632, 18081, 18098, 18114, 18159, 18185, 18717, 18094, 18251, 18292, 18281, 18308, 18005, 18338, 18354, 18384, 17849, 36402, 19251, 17838, 17163, 30650, 18400, 17858, 32918, 17645, 18816, 18429, 18445, 18530, 17393, 18758, 18516, 18546, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 22305, 18847, 22034, 18482, 27869, 25325, 24384, 29176, 22062, 18482, 18482, 18482, 18484, 27202, 27202, 27202, 27202, 22096, 24384, 24384, 24384, 24384, 30621, 18482, 18482, 18482, 18482, 18482, 25794, 27202, 27202, 27202, 27202, 35010, 22148, 24384, 24384, 24384, 24384, 31473, 31659, 18482, 18482, 18482, 18482, 18484, 27202, 27202, 27202, 27202, 27202, 19503, 24384, 24384, 24384, 24384, 24384, 32253, 18482, 18482, 18482, 18482, 23052, 27202, 27202, 27202, 27202, 30764, 21406, 24384, 24384, 24384, 24384, 26114, 18482, 18482, 18482, 27867, 27202, 27202, 27202, 22171, 22934, 24384, 24384, 24384, 22228, 18482, 18482, 27202, 27202, 35771, 20047, 24385, 19887, 25677, 18482, 18483, 27202, 27202, 19738, 23870, 19887, 30991, 18484, 27202, 31802, 19425, 19466, 23052, 23296, 19847, 30990, 27868, 34251, 19859, 25794, 34248, 19856, 25793, 19779, 30988, 23482, 30981, 22080, 19438, 27956, 19678, 27944, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 22305, 18847, 22034, 18482, 27869, 25325, 24384, 29176, 22062, 18482, 18482, 18482, 18484, 27202, 27202, 27202, 27202, 22096, 24384, 24384, 24384, 24384, 30621, 18482, 18482, 18482, 18482, 18482, 25794, 27202, 27202, 27202, 27202, 35010, 22148, 24384, 24384, 24384, 24384, 31473, 31659, 18482, 18482, 18482, 18482, 18484, 27202, 27202, 27202, 27202, 27202, 19503, 24384, 24384, 24384, 24384, 24384, 31154, 18482, 18482, 18482, 18482, 23052, 27202, 27202, 27202, 27202, 30764, 21406, 24384, 24384, 24384, 24384, 26114, 18482, 18482, 18482, 27867, 27202, 27202, 27202, 22171, 22934, 24384, 24384, 24384, 18481, 18482, 18482, 27202, 27202, 35771, 20047, 24385, 19887, 25677, 18482, 18483, 27202, 27202, 19738, 23870, 19887, 30991, 18484, 27202, 31802, 19425, 19466, 23052, 23296, 19847, 30990, 27868, 34251, 19859, 25794, 34248, 19856, 25793, 19779, 30988, 23482, 30981, 22080, 19438, 27956, 19678, 27944, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 22305, 18847, 22034, 18482, 27869, 25325, 24384, 29176, 22062, 18482, 18482, 18482, 18484, 27202, 27202, 27202, 27202, 22096, 24384, 24384, 24384, 24384, 31644, 18482, 18482, 18482, 18482, 18482, 25794, 27202, 27202, 27202, 27202, 35010, 22148, 24384, 24384, 24384, 24384, 31473, 31659, 18482, 18482, 18482, 18482, 18484, 27202, 27202, 27202, 27202, 27202, 19503, 24384, 24384, 24384, 24384, 24384, 31154, 18482, 18482, 18482, 18482, 23052, 27202, 27202, 27202, 27202, 30764, 21406, 24384, 24384, 24384, 24384, 26114, 18482, 18482, 18482, 27867, 27202, 27202, 27202, 22171, 22934, 24384, 24384, 24384, 18481, 18482, 18482, 27202, 27202, 35771, 20047, 24385, 19887, 25677, 18482, 18483, 27202, 27202, 19738, 23870, 19887, 30991, 18484, 27202, 31802, 19425, 19466, 23052, 23296, 19847, 30990, 27868, 34251, 19859, 25794, 34248, 19856, 25793, 19779, 30988, 23482, 30981, 22080, 19438, 27956, 19678, 27944, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 22305, 18847, 22034, 18482, 27869, 25325, 24384, 29176, 22062, 18482, 18482, 18482, 18484, 27202, 27202, 27202, 27202, 22096, 24384, 24384, 24384, 24384, 30621, 18482, 18482, 18482, 18482, 18482, 25794, 27202, 27202, 27202, 27202, 35010, 22148, 24384, 24384, 24384, 24384, 33557, 31659, 18482, 18482, 18482, 18482, 18484, 27202, 27202, 27202, 27202, 27202, 19503, 24384, 24384, 24384, 24384, 24384, 31154, 18482, 18482, 18482, 18482, 23052, 27202, 27202, 27202, 27202, 30764, 21406, 24384, 24384, 24384, 24384, 26114, 18482, 18482, 18482, 27867, 27202, 27202, 27202, 22171, 22934, 24384, 24384, 24384, 18481, 18482, 18482, 27202, 27202, 35771, 20047, 24385, 19887, 25677, 18482, 18483, 27202, 27202, 19738, 23870, 19887, 30991, 18484, 27202, 31802, 19425, 19466, 23052, 23296, 19847, 30990, 27868, 34251, 19859, 25794, 34248, 19856, 25793, 19779, 30988, 23482, 30981, 22080, 19438, 27956, 19678, 27944, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 22305, 18847, 22034, 18482, 27869, 34068, 24384, 29176, 22062, 18482, 18482, 18482, 18484, 27202, 27202, 27202, 27202, 22245, 24384, 24384, 24384, 24384, 30621, 18482, 18482, 18482, 18482, 18482, 25794, 27202, 27202, 27202, 27202, 35010, 22148, 24384, 24384, 24384, 24384, 31473, 31659, 18482, 18482, 18482, 18482, 18484, 27202, 27202, 27202, 27202, 27202, 19503, 24384, 24384, 24384, 24384, 24384, 31154, 18482, 18482, 18482, 18482, 23052, 27202, 27202, 27202, 27202, 30764, 21406, 24384, 24384, 24384, 24384, 26114, 18482, 18482, 18482, 27867, 27202, 27202, 27202, 22171, 22934, 24384, 24384, 24384, 18481, 18482, 18482, 27202, 27202, 35771, 20047, 24385, 19887, 25677, 18482, 18483, 27202, 27202, 19738, 23870, 19887, 30991, 18484, 27202, 31802, 19425, 19466, 23052, 23296, 19847, 30990, 27868, 34251, 19859, 25794, 34248, 19856, 25793, 19779, 30988, 23482, 30981, 22080, 19438, 27956, 19678, 27944, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 22305, 18847, 22034, 18482, 27869, 25325, 24384, 29176, 22062, 18482, 18482, 18482, 18484, 27202, 27202, 27202, 27202, 22096, 24384, 24384, 24384, 24384, 18877, 18482, 18482, 18482, 18482, 18482, 25794, 27202, 27202, 27202, 27202, 35010, 22148, 24384, 24384, 24384, 24384, 24017, 31659, 18482, 18482, 18482, 18482, 18484, 27202, 27202, 27202, 27202, 27202, 19503, 24384, 24384, 24384, 24384, 24384, 19647, 18482, 18482, 18482, 18482, 23052, 27202, 27202, 27202, 27202, 30764, 23993, 24384, 24384, 24384, 24384, 26758, 18482, 18482, 18482, 27867, 27202, 27202, 27202, 17590, 23998, 24384, 24384, 24384, 18481, 18482, 18482, 27202, 27202, 27203, 23997, 24385, 19887, 25677, 18482, 18483, 27202, 27202, 19738, 23870, 19887, 30991, 18484, 27202, 31802, 19425, 19466, 23052, 23296, 19847, 30990, 27868, 34251, 19859, 25794, 34248, 19856, 25793, 19779, 30988, 23482, 30981, 22080, 19438, 27956, 19678, 27944, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 22290, 18847, 22034, 18482, 27869, 34957, 24384, 29176, 22062, 18482, 18482, 18482, 18484, 27202, 27202, 27202, 27202, 22096, 24384, 24384, 24384, 24384, 18877, 18482, 18482, 18482, 18482, 18482, 25794, 27202, 27202, 27202, 27202, 35010, 22148, 24384, 24384, 24384, 24384, 24017, 31659, 18482, 18482, 18482, 18482, 18484, 27202, 27202, 27202, 27202, 27202, 19503, 24384, 24384, 24384, 24384, 24384, 19647, 18482, 18482, 18482, 18482, 23052, 27202, 27202, 27202, 27202, 30764, 23993, 24384, 24384, 24384, 24384, 26758, 18482, 18482, 18482, 27867, 27202, 27202, 27202, 17590, 23998, 24384, 24384, 24384, 18481, 18482, 18482, 27202, 27202, 27203, 23997, 24385, 19887, 25677, 18482, 18483, 27202, 27202, 19738, 23870, 19887, 30991, 18484, 27202, 31802, 19425, 19466, 23052, 23296, 19847, 30990, 27868, 34251, 19859, 25794, 34248, 19856, 25793, 19779, 30988, 23482, 30981, 22080, 19438, 27956, 19678, 27944, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 22305, 18847, 22034, 18482, 27869, 25325, 24384, 29176, 22062, 18482, 18482, 18482, 18484, 27202, 27202, 27202, 27202, 22096, 24384, 24384, 24384, 24384, 18877, 18482, 18482, 18482, 18482, 18482, 25794, 27202, 27202, 27202, 27202, 35010, 22148, 24384, 24384, 24384, 24384, 24017, 31659, 18482, 18482, 18482, 18482, 18484, 27202, 27202, 27202, 27202, 27202, 19503, 24384, 24384, 24384, 24384, 24384, 19647, 18482, 18482, 18482, 18482, 23052, 27202, 27202, 27202, 27202, 30764, 23993, 24384, 24384, 24384, 24384, 34436, 18482, 18482, 18482, 27867, 27202, 27202, 27202, 17590, 23998, 24384, 24384, 24384, 18481, 18482, 18482, 27202, 27202, 27203, 23997, 24385, 19887, 25677, 18482, 18483, 27202, 27202, 19738, 23870, 19887, 30991, 18484, 27202, 31802, 19425, 19466, 23052, 23296, 19847, 30990, 27868, 34251, 19859, 25794, 34248, 19856, 25793, 19779, 30988, 23482, 30981, 22080, 19438, 27956, 19678, 27944, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 22320, 18847, 19006, 19027, 19252, 17687, 19027, 17173, 27077, 36436, 17330, 17349, 18940, 17189, 17208, 17281, 17675, 17991, 17308, 17327, 17346, 18937, 18460, 21855, 18660, 18676, 19025, 17265, 22008, 17292, 17421, 21157, 17192, 21217, 21848, 17311, 18669, 19018, 19027, 17447, 32909, 17497, 17520, 17251, 36410, 17824, 20322, 20663, 20490, 17543, 17559, 17585, 21862, 17504, 17527, 17258, 36417, 21890, 21915, 17611, 36466, 18259, 17633, 17661, 18368, 17703, 17730, 17772, 33538, 21921, 17617, 36472, 18265, 36530, 17477, 19171, 17902, 17934, 17744, 17795, 17874, 17590, 21595, 17481, 19175, 17906, 18742, 17960, 36550, 17714, 17976, 18021, 18738, 18692, 18413, 19919, 18081, 18098, 18114, 18159, 18185, 18717, 18094, 18251, 18292, 18281, 18308, 18005, 18338, 18354, 18384, 17849, 36402, 19251, 17838, 17163, 30650, 18400, 17858, 32918, 17645, 18816, 18429, 18445, 18530, 17393, 18758, 18516, 18546, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 21803, 18847, 19006, 19027, 19252, 17687, 19027, 17173, 30771, 36436, 17330, 17349, 18940, 17189, 17208, 17281, 17675, 17991, 17308, 17327, 17346, 18937, 18460, 21855, 18660, 18676, 19025, 17265, 22008, 17292, 17421, 21157, 17192, 21217, 21848, 17311, 18669, 19018, 19027, 17447, 32909, 17497, 17520, 17251, 36410, 17824, 20322, 20663, 20490, 17543, 17559, 17585, 21862, 17504, 17527, 17258, 36417, 21890, 21915, 17611, 36466, 18259, 17633, 17661, 18368, 17703, 17730, 17772, 33538, 21921, 17617, 36472, 18265, 36530, 17477, 19171, 17902, 17934, 17744, 17795, 17874, 17590, 21595, 17481, 19175, 17906, 18742, 17960, 36550, 17714, 17976, 18021, 18738, 18692, 18413, 18632, 18081, 18098, 18114, 18159, 18185, 18717, 18094, 18251, 18292, 18281, 18308, 18005, 18338, 18354, 18384, 17849, 36402, 19251, 17838, 17163, 30650, 18400, 17858, 32918, 17645, 18816, 18429, 18445, 18530, 17393, 18758, 18516, 18546, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 22275, 22479, 19006, 19027, 19252, 17687, 19027, 19141, 30771, 36436, 17330, 17349, 18940, 17189, 17208, 17281, 17675, 17991, 17308, 17327, 17346, 18937, 22510, 21855, 18660, 18676, 19025, 17265, 22008, 17292, 17421, 21157, 17192, 21217, 21848, 17311, 18669, 19018, 19027, 17447, 32909, 17497, 17520, 17251, 36410, 17824, 20322, 20663, 20490, 17543, 17559, 17585, 21862, 17504, 17527, 17258, 36417, 21890, 21915, 17611, 36466, 18259, 17633, 17661, 18368, 17703, 17730, 17772, 33538, 21921, 17617, 36472, 18265, 36530, 17477, 19171, 17902, 17934, 17744, 17795, 17874, 17590, 21595, 17481, 19175, 17906, 18742, 17960, 36550, 17714, 17976, 18021, 18738, 18692, 18413, 18632, 18081, 18098, 18114, 18159, 18185, 18717, 18094, 18251, 18292, 18281, 18308, 18005, 18338, 18354, 18384, 17849, 36402, 19251, 17838, 17163, 30650, 18400, 17858, 32918, 17645, 18816, 18429, 18445, 18530, 17393, 18758, 18516, 18546, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 22574, 18847, 22954, 22970, 27597, 22986, 23002, 23033, 22062, 18482, 18482, 18482, 23049, 27202, 27202, 27202, 23068, 22096, 24384, 24384, 24384, 23088, 31359, 31082, 19693, 18482, 28112, 28225, 19443, 35045, 27202, 27202, 23108, 23139, 23155, 23178, 24384, 24384, 23212, 35330, 31659, 23228, 18482, 23256, 23274, 27795, 26712, 23293, 35214, 34879, 33340, 23312, 18235, 23359, 32708, 23949, 24384, 23380, 35255, 23429, 18482, 33884, 23408, 23448, 27202, 27202, 23498, 23518, 21406, 23541, 24384, 24384, 23570, 26114, 23601, 23623, 18482, 33444, 23651, 32875, 27202, 22171, 18862, 23702, 36589, 24384, 18481, 23731, 32601, 27202, 23750, 23768, 20047, 32969, 24367, 25677, 18482, 18483, 27202, 27202, 19738, 23870, 23784, 30991, 18484, 27202, 31802, 19425, 19466, 23052, 23296, 19847, 28217, 31795, 23804, 26925, 34916, 23831, 26501, 25793, 23859, 23895, 23482, 30981, 22080, 19438, 27956, 19678, 29812, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 22589, 18847, 22034, 18482, 27869, 25325, 24384, 29176, 22062, 18482, 18482, 18482, 18484, 27202, 27202, 27202, 27202, 22096, 24384, 24384, 24384, 24384, 30621, 18482, 18482, 18482, 18482, 28902, 25794, 27202, 27202, 27202, 34019, 23914, 22148, 24384, 24384, 24384, 28393, 23930, 31659, 18482, 18482, 18482, 18482, 18484, 27202, 27202, 27202, 27202, 27202, 19503, 24384, 24384, 24384, 24384, 24384, 31154, 26591, 18482, 18482, 18482, 31585, 23965, 27202, 27202, 27202, 23986, 22185, 24014, 24384, 24384, 24384, 24033, 18482, 18482, 18482, 27867, 27202, 27202, 27202, 22171, 22934, 24384, 24384, 24384, 18481, 18482, 18482, 27202, 27202, 35771, 20047, 24385, 19887, 25677, 18482, 18483, 27202, 27202, 19738, 23870, 19887, 30991, 18484, 27202, 31802, 19425, 19466, 23052, 23296, 19847, 30990, 27868, 34251, 26504, 24057, 24107, 24132, 25793, 19779, 30988, 23482, 30981, 22080, 19438, 27956, 19678, 27944, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 22604, 18847, 22034, 19697, 27869, 24166, 24384, 24182, 24198, 26600, 18482, 18482, 18484, 24233, 24249, 27202, 27202, 22096, 24268, 24284, 24384, 24384, 30621, 19800, 35427, 35999, 32609, 18482, 25794, 24303, 28959, 23752, 27202, 35010, 22148, 24341, 32040, 26837, 24383, 31473, 31659, 18482, 18482, 18482, 24784, 18484, 27202, 27202, 27202, 27202, 24401, 19503, 24384, 24384, 24384, 24384, 20134, 31154, 18482, 18482, 18482, 27845, 23052, 27202, 27202, 33502, 27202, 30764, 21406, 24384, 24384, 22938, 24384, 26114, 18482, 36246, 18482, 27867, 27202, 24423, 27202, 22171, 22934, 24384, 24442, 24384, 36762, 28438, 18482, 34466, 34508, 35771, 24461, 24385, 24477, 25677, 18482, 36220, 27202, 27202, 24498, 30954, 23715, 30991, 18484, 27202, 31802, 19425, 19466, 23052, 23296, 24521, 30990, 27868, 34251, 30090, 23343, 24546, 19856, 25793, 19779, 30988, 23482, 26152, 22080, 19438, 29824, 24562, 27944, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 22619, 18847, 22034, 25767, 22132, 25325, 23162, 29176, 24597, 24091, 23607, 24656, 26122, 24680, 24426, 24696, 28551, 22096, 24731, 24445, 24747, 23364, 30621, 18482, 18482, 18482, 18482, 24781, 25794, 27202, 27202, 27202, 34210, 35010, 22148, 24384, 24384, 24384, 33259, 31473, 22525, 24087, 24213, 18482, 18482, 34908, 24800, 30419, 27202, 27202, 32418, 19503, 29781, 35065, 24384, 24384, 19891, 31154, 24835, 18482, 18482, 24854, 29214, 27202, 27202, 32006, 27202, 30764, 35344, 24384, 24384, 31544, 24384, 26114, 33098, 27814, 27002, 27867, 34668, 25625, 24871, 22171, 22934, 19214, 34531, 24889, 18481, 18482, 18482, 27202, 27202, 35771, 20047, 24385, 19887, 25677, 18482, 33615, 27202, 27202, 24907, 24930, 23554, 30991, 18484, 27202, 31802, 22199, 19466, 23052, 23296, 19847, 30877, 31015, 24955, 19859, 24983, 34248, 30871, 25793, 19779, 30988, 23482, 30981, 22080, 19438, 24999, 19678, 27944, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 22634, 18847, 25024, 25040, 31293, 25056, 25072, 25088, 22062, 34734, 24217, 36253, 34808, 32637, 25104, 23072, 32848, 22245, 36623, 25120, 30679, 27356, 30621, 25136, 26455, 25174, 25208, 22540, 23240, 25224, 25240, 25256, 25306, 25341, 25357, 25418, 25446, 25470, 26739, 25522, 31659, 23635, 25576, 27398, 25593, 28592, 25945, 25617, 27202, 32546, 27295, 25641, 25850, 25667, 24384, 34758, 25699, 25716, 22552, 27787, 30221, 25756, 25789, 25810, 25828, 28333, 28988, 30764, 21493, 33405, 25848, 25866, 25904, 26114, 31227, 26677, 30167, 27867, 25941, 25961, 27202, 22171, 22934, 25977, 25997, 24384, 23394, 27775, 25740, 25270, 26013, 26048, 26064, 26104, 26138, 26178, 26211, 26230, 26247, 30500, 26380, 26282, 28388, 30991, 33711, 27202, 33645, 26324, 36716, 26353, 26374, 35300, 30990, 26396, 26415, 30927, 26358, 33832, 26442, 26471, 26487, 26520, 23482, 33146, 26539, 26555, 27956, 31266, 27944, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 22649, 18847, 26576, 26189, 26616, 25325, 26643, 29176, 22062, 26669, 18482, 18482, 18484, 26693, 27202, 27202, 27202, 22096, 26728, 24384, 24384, 24384, 30621, 18482, 18482, 18482, 18482, 26782, 25794, 27202, 27202, 27202, 26258, 35010, 22148, 24384, 24384, 24384, 21571, 31473, 31659, 18482, 18482, 33949, 18482, 18484, 27202, 27202, 25812, 27202, 27202, 19503, 24384, 24384, 24384, 26800, 24384, 31154, 18482, 18482, 18482, 35570, 23052, 27202, 27202, 27202, 26817, 30764, 21406, 24384, 24384, 24384, 26836, 26114, 18482, 18482, 18482, 27867, 27202, 27202, 27202, 22171, 22934, 24384, 24384, 24384, 18481, 18482, 18482, 27202, 27202, 35771, 20047, 24385, 19887, 25677, 31882, 18483, 35699, 27202, 19738, 26853, 19887, 30991, 18484, 27202, 31802, 19425, 19466, 23052, 23296, 26913, 30990, 27868, 34251, 19859, 25794, 34248, 19856, 25793, 19779, 30988, 23482, 24967, 31061, 19438, 26953, 27663, 27944, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 22664, 18847, 26990, 18482, 27869, 25325, 24384, 29176, 22062, 18482, 18482, 18482, 18484, 27202, 27202, 27202, 27202, 22096, 24384, 24384, 24384, 24384, 23017, 18482, 18482, 18482, 18482, 18482, 25794, 27202, 27202, 27202, 27202, 35010, 27024, 24384, 24384, 24384, 24384, 24017, 31659, 18482, 18482, 27047, 18482, 18484, 27202, 27202, 27331, 27202, 27202, 27066, 24384, 24384, 29025, 24384, 24384, 19647, 18482, 18482, 18482, 18482, 23052, 27202, 27202, 27202, 27202, 30764, 23993, 24384, 24384, 24384, 24384, 26758, 18482, 18482, 33957, 27867, 27202, 27202, 27093, 17590, 23998, 24384, 24384, 27114, 27135, 36322, 27153, 27201, 27219, 28359, 18229, 34780, 34405, 27235, 35972, 27268, 27293, 27311, 36040, 33984, 20980, 31851, 21453, 30535, 27347, 32520, 27372, 23052, 23296, 19847, 30990, 27868, 34251, 19859, 25794, 34248, 19856, 25793, 19779, 30988, 23482, 30981, 22080, 26337, 30118, 19678, 27944, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 22305, 18847, 22034, 27397, 27414, 27436, 27452, 27473, 22062, 18482, 18482, 30171, 18484, 27202, 27202, 27982, 27202, 22096, 24384, 24384, 25700, 24384, 18877, 18482, 18482, 18482, 18482, 18482, 34013, 27202, 27202, 27202, 27202, 29731, 22148, 24384, 24384, 24384, 24384, 27119, 31659, 27489, 18482, 18482, 18482, 18484, 27185, 27202, 27202, 27202, 27202, 19503, 27457, 24384, 24384, 24384, 24384, 19647, 18482, 18482, 18482, 27050, 23052, 27202, 27202, 27202, 32469, 30764, 23993, 24384, 24384, 24384, 34982, 26758, 18482, 18482, 18482, 27867, 27202, 27202, 27202, 17590, 23998, 24384, 24384, 24384, 18481, 18482, 18482, 27202, 27202, 27203, 23997, 24385, 19887, 25677, 18482, 18483, 27202, 27202, 19738, 23870, 19887, 30991, 20796, 27202, 29362, 22110, 33940, 23052, 23296, 19847, 30990, 27868, 34251, 19859, 25794, 34248, 19856, 25793, 19779, 30988, 23482, 30981, 22080, 19438, 27956, 19678, 27944, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 22679, 18847, 22034, 27508, 27528, 27553, 35182, 27569, 22062, 29693, 26300, 23258, 27585, 24715, 27613, 27202, 27648, 22096, 36597, 27698, 24384, 27733, 18877, 18482, 27811, 18482, 27830, 22046, 27865, 32194, 27202, 25158, 27885, 27913, 22148, 29458, 24384, 29977, 34392, 26750, 27763, 26889, 18482, 18482, 27252, 29886, 27929, 27202, 27202, 27202, 27981, 27998, 28024, 28045, 24384, 24384, 28062, 28081, 28128, 25506, 28145, 26088, 28160, 27202, 28173, 24640, 28189, 30764, 31496, 24384, 28205, 34154, 36166, 24939, 28241, 28259, 28283, 21463, 33034, 28320, 28349, 17590, 20967, 23092, 28375, 28409, 28095, 28435, 28454, 28474, 28509, 28527, 20001, 33682, 25879, 25677, 18482, 18483, 27202, 27202, 19738, 23870, 19887, 30272, 28267, 28546, 28567, 19425, 28583, 23052, 23296, 19847, 19471, 28608, 28653, 31075, 25794, 34248, 19856, 25793, 19779, 29644, 35950, 30318, 22080, 19438, 27956, 23123, 28693, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 22305, 18847, 22034, 18482, 27869, 25325, 24384, 29176, 22062, 18482, 18482, 18482, 18484, 27202, 27202, 27202, 27202, 22096, 24384, 24384, 24384, 24384, 18877, 18482, 18482, 18482, 18482, 18482, 25794, 27202, 27202, 27202, 27202, 35010, 22148, 24384, 24384, 24384, 24384, 24017, 22494, 18482, 18482, 18482, 18482, 18484, 25283, 27202, 27202, 27202, 27202, 19503, 29397, 24384, 24384, 24384, 24384, 19647, 18482, 18482, 18482, 18482, 23052, 27202, 27202, 27202, 27202, 30764, 23993, 24384, 24384, 24384, 24384, 26758, 18482, 18482, 18482, 27867, 27202, 27202, 27202, 17590, 23998, 24384, 24384, 24384, 18481, 18482, 18482, 27202, 27202, 27203, 23997, 24385, 19887, 25677, 18482, 18483, 27202, 27202, 19738, 23870, 19887, 30991, 18484, 27202, 31802, 19425, 19466, 23052, 23296, 19847, 30990, 27868, 34251, 19859, 25794, 34248, 19856, 25793, 19779, 30988, 23482, 30981, 22080, 19438, 27956, 19678, 27944, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 22694, 18847, 28740, 28775, 28810, 28834, 28850, 28873, 28889, 24142, 28936, 31945, 36329, 25290, 28954, 27632, 28975, 29004, 24505, 29020, 25454, 29041, 23017, 27512, 29083, 29103, 30721, 18482, 23478, 29123, 24819, 27202, 29148, 28920, 27024, 29166, 23196, 24384, 29192, 35529, 31659, 18482, 18482, 25601, 32589, 29211, 27202, 27202, 31434, 30700, 29230, 27066, 24384, 24384, 24384, 29255, 29306, 19647, 18482, 33383, 18482, 18482, 23052, 27202, 29333, 27202, 27202, 30764, 23993, 35925, 24384, 24384, 24384, 27717, 36123, 18482, 18482, 29350, 29413, 27202, 35642, 17590, 21411, 29432, 24384, 25981, 18481, 33866, 18482, 27202, 26967, 27203, 23997, 32729, 19887, 25677, 18482, 26897, 27202, 27202, 29451, 23870, 24354, 30991, 18484, 27202, 31802, 19425, 19466, 23052, 23296, 19847, 30990, 27868, 31737, 19859, 25794, 34248, 19856, 29474, 29539, 29283, 29581, 29637, 22080, 32533, 29501, 19678, 27944, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 22709, 18847, 22034, 29660, 29512, 25325, 33242, 29176, 29682, 27245, 18482, 29709, 33286, 26974, 27202, 29725, 29747, 22096, 19221, 24384, 32702, 29772, 18877, 26784, 33892, 28458, 18482, 18482, 25794, 29797, 27202, 29840, 27202, 35010, 22148, 35817, 24384, 29859, 24384, 24017, 36756, 25192, 18482, 18482, 29879, 18484, 27202, 29902, 27202, 26032, 27202, 29925, 24384, 29960, 24384, 33594, 24384, 19647, 18482, 18482, 18482, 18482, 23052, 27202, 27202, 27202, 27202, 29239, 29993, 24384, 24384, 24384, 24384, 26758, 18482, 18482, 18482, 27867, 27202, 27202, 27202, 17590, 23998, 24384, 24384, 24384, 31665, 18482, 18482, 19603, 27202, 27203, 23997, 30013, 19887, 25677, 18482, 18483, 27202, 27202, 19738, 23870, 19887, 30991, 18484, 27202, 31802, 19949, 19466, 36661, 19563, 19847, 30029, 30128, 30062, 19859, 25794, 30078, 19856, 25793, 19779, 30988, 23482, 30981, 22080, 19438, 27956, 19678, 30106, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 22724, 18847, 30152, 30187, 30237, 30288, 30304, 30344, 22062, 35616, 32797, 25773, 18484, 29909, 34096, 26820, 27202, 22096, 24914, 23189, 29195, 24384, 18877, 34444, 30360, 18482, 18482, 18482, 23413, 24707, 27202, 27202, 27202, 35010, 30378, 34990, 24384, 24384, 24384, 24017, 29554, 18482, 18482, 27137, 18482, 31281, 30394, 27202, 27202, 30413, 30566, 19503, 30435, 24384, 24384, 29969, 35678, 19647, 28759, 30455, 35459, 35606, 23052, 28724, 30490, 30525, 30560, 30764, 23993, 20123, 30582, 30606, 30675, 26291, 33426, 28938, 27682, 30695, 23675, 33466, 28493, 17590, 23944, 20405, 34338, 20997, 32331, 26308, 30716, 30737, 24315, 30756, 21563, 36372, 30787, 26653, 24611, 33177, 32448, 30814, 31804, 25430, 25917, 26523, 18484, 28818, 31802, 29269, 19466, 28297, 34240, 23815, 26076, 30842, 30858, 32115, 30893, 30915, 32757, 25793, 30943, 30988, 23482, 30981, 30970, 31007, 27956, 19678, 29489, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 22739, 18847, 31031, 31047, 32397, 31098, 31114, 31170, 22062, 18482, 29565, 35577, 36725, 27202, 33216, 31186, 24407, 22096, 24384, 20142, 31202, 34301, 27748, 31218, 33388, 27166, 18482, 29087, 27277, 27202, 31251, 31309, 27202, 31328, 31344, 24384, 31375, 31391, 24384, 31410, 31659, 18482, 36130, 32801, 18482, 18484, 27202, 27202, 31433, 31450, 27202, 19503, 24384, 24384, 31470, 33588, 24384, 32977, 18482, 18482, 18482, 18482, 30038, 27202, 27202, 27202, 27202, 31489, 32244, 24384, 24384, 24384, 24384, 31512, 18482, 28755, 18482, 24634, 35732, 27202, 27202, 28637, 31538, 35788, 24384, 24384, 19337, 31986, 18482, 33208, 25316, 27203, 29997, 29863, 19887, 25677, 18482, 18483, 27202, 27202, 19738, 31560, 19887, 31601, 32369, 33316, 30136, 31629, 19972, 31681, 31726, 31753, 31781, 30046, 31820, 31847, 25794, 34282, 19856, 25793, 19779, 30988, 23482, 30981, 22080, 19438, 27956, 31867, 30252, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 22754, 18847, 22034, 18909, 30474, 31902, 24287, 31918, 31934, 32767, 35262, 27008, 29621, 34103, 19820, 29416, 33323, 22096, 27031, 30439, 29435, 28857, 29596, 18482, 18482, 18482, 31961, 18482, 25794, 27202, 27202, 35038, 27202, 35010, 22148, 24384, 24384, 29389, 24384, 24017, 31979, 18482, 26937, 18482, 18482, 18484, 27202, 31454, 32002, 27202, 27202, 32022, 24384, 33015, 32056, 24384, 24384, 33690, 18482, 18482, 33119, 18482, 23052, 27202, 27202, 27624, 27202, 29756, 32078, 24384, 24384, 34332, 24384, 26758, 18482, 18482, 18482, 27867, 27202, 27202, 27202, 36691, 23998, 24384, 24384, 24384, 18481, 18482, 18482, 27202, 27202, 27203, 23997, 24385, 19887, 25677, 18482, 18483, 27202, 27202, 19738, 23870, 19887, 30991, 18484, 27202, 31802, 31710, 22155, 33181, 24252, 32103, 30990, 27868, 34251, 19859, 25794, 34248, 30265, 25793, 19779, 30988, 23482, 30981, 22080, 19438, 27956, 19678, 27944, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 22305, 18847, 32138, 32166, 32186, 30826, 33252, 29067, 22062, 18482, 18482, 18482, 18484, 27202, 27202, 27202, 27202, 22096, 24384, 24384, 24384, 24384, 23585, 18482, 18482, 18482, 18482, 18482, 25794, 27202, 27202, 27202, 27202, 35010, 32210, 24384, 24384, 24384, 24384, 24017, 31659, 18482, 18482, 18482, 18482, 18484, 27202, 27202, 27202, 27202, 27202, 32233, 24384, 24384, 24384, 24384, 24384, 19647, 18482, 18482, 18482, 18482, 23052, 27202, 27202, 27202, 27202, 30764, 23993, 24384, 24384, 24384, 24384, 26758, 18482, 18482, 18482, 27867, 27202, 27202, 27202, 17590, 23998, 24384, 24384, 24384, 18481, 18482, 18482, 27202, 27202, 27203, 23997, 24385, 19887, 25677, 33857, 18483, 36057, 27202, 19738, 35289, 19887, 30991, 18484, 27202, 31802, 19425, 19466, 23052, 23296, 19847, 30990, 27868, 34251, 19859, 25794, 34248, 19856, 25793, 19779, 30988, 23482, 30981, 22080, 19438, 27956, 19678, 27944, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 22769, 18847, 32269, 31613, 34604, 32285, 32301, 32351, 22062, 18482, 32367, 19354, 32385, 27202, 32413, 27098, 32434, 22096, 24384, 32485, 20052, 32506, 18877, 25396, 23734, 18482, 18482, 32562, 32625, 27202, 32653, 27202, 23664, 32673, 32689, 24384, 32724, 24384, 25888, 32745, 34706, 18482, 27381, 32783, 24577, 24838, 32817, 24873, 32838, 32864, 27202, 32899, 32934, 24384, 32957, 29317, 24384, 30798, 26214, 27678, 33875, 18482, 23052, 36352, 27202, 32993, 27202, 30764, 23993, 32087, 24384, 33013, 24384, 35853, 18482, 18482, 30362, 27965, 27202, 27202, 33754, 17590, 20112, 24384, 24384, 34576, 20792, 18482, 18482, 33031, 27202, 27203, 36159, 24385, 19887, 25677, 18482, 18483, 27202, 27202, 19738, 23870, 19887, 30991, 18484, 27202, 31802, 19425, 34554, 24150, 33050, 33080, 33114, 27868, 34251, 23843, 26560, 31696, 19856, 25793, 19779, 30988, 23482, 30981, 33135, 22123, 27956, 23463, 27944, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 22784, 18847, 33162, 28106, 33197, 25325, 33232, 29176, 22062, 33275, 35433, 18482, 18484, 33302, 26399, 33339, 27202, 22096, 33356, 28065, 33404, 24384, 18877, 22229, 18482, 33421, 18482, 18482, 33442, 33460, 24811, 27202, 27202, 26627, 22148, 24758, 35190, 24384, 24384, 25925, 29611, 18482, 18482, 29290, 25186, 33482, 33501, 27202, 27202, 33518, 36276, 19503, 33554, 24384, 24384, 33573, 32490, 19647, 18482, 18482, 31235, 33610, 23052, 27202, 27202, 33631, 27202, 30764, 23993, 24384, 24384, 33670, 24384, 26862, 27492, 18482, 33706, 27867, 32883, 34639, 27202, 17590, 32036, 24765, 23788, 24384, 18481, 18482, 18482, 27202, 27202, 27203, 33727, 36097, 19887, 25677, 18482, 23334, 27202, 29150, 19738, 23870, 35357, 30328, 18484, 33748, 34675, 33770, 19466, 34050, 33824, 31831, 30990, 27868, 34251, 33848, 28913, 33908, 19856, 30469, 33973, 25385, 36033, 34000, 22080, 19438, 27956, 19678, 27944, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 22799, 18847, 34035, 32576, 34084, 34119, 34135, 34170, 34186, 32150, 36005, 31522, 31886, 34202, 34226, 34267, 29334, 34317, 34354, 34378, 34421, 26801, 18877, 26195, 29666, 25402, 18482, 35091, 25794, 34460, 34482, 34504, 25832, 35010, 22148, 34524, 34547, 34570, 19623, 24017, 36654, 35111, 24664, 18482, 32335, 34592, 31312, 34620, 34636, 27202, 34655, 34691, 28046, 34750, 34774, 24384, 33785, 19647, 34796, 32170, 34844, 24581, 33485, 26704, 34828, 34860, 35493, 29132, 36704, 33800, 35368, 32941, 34146, 26758, 34895, 18482, 18482, 34932, 34948, 27202, 32997, 17590, 29944, 34973, 24384, 36296, 25500, 30202, 35875, 35006, 35026, 26266, 20396, 31146, 35061, 35081, 35127, 24623, 28484, 27897, 19738, 35143, 35170, 26162, 28794, 35206, 35230, 33064, 35245, 23052, 23296, 29054, 30990, 27868, 34251, 19859, 25794, 34248, 24530, 25147, 35278, 31765, 35316, 33370, 22080, 19438, 27956, 24072, 28623, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 22814, 18847, 22034, 34720, 34059, 35384, 20989, 35400, 35416, 35449, 18482, 18482, 23432, 35475, 27202, 27202, 27202, 35509, 31127, 24384, 24384, 24384, 35545, 18482, 26871, 35101, 35593, 24855, 25794, 30397, 23502, 26024, 35639, 35658, 22148, 19541, 19583, 30590, 35674, 27709, 35560, 29107, 18482, 18482, 18482, 18484, 27202, 35694, 27202, 27202, 27202, 35715, 24384, 36580, 24384, 24384, 24384, 19647, 30215, 18482, 18482, 18482, 23052, 35731, 27202, 27202, 27202, 27537, 22904, 24384, 24384, 24384, 24384, 23879, 35748, 18482, 18482, 25008, 35770, 27202, 27202, 17590, 20031, 35787, 24384, 24384, 18481, 18482, 18482, 27202, 27202, 27203, 23997, 24385, 19887, 25677, 18482, 18483, 27202, 27202, 19738, 23870, 19887, 23898, 18484, 34488, 31802, 25371, 19466, 23052, 23296, 26426, 30990, 27868, 34251, 19859, 25794, 35804, 19856, 27178, 35833, 33092, 23482, 30981, 22080, 22212, 28705, 19678, 27944, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 22829, 18847, 22034, 35869, 28716, 25325, 31137, 29176, 22062, 26766, 18482, 22558, 18484, 23970, 27202, 29843, 27202, 22096, 33732, 24384, 31394, 24384, 18877, 18482, 18482, 26880, 18482, 18482, 25794, 27202, 30740, 27202, 27202, 35010, 22148, 24384, 24891, 24384, 24384, 24017, 31659, 18482, 18482, 18482, 18482, 18484, 27202, 27202, 27202, 27202, 27202, 19503, 24384, 24384, 24384, 24384, 24384, 19647, 18482, 18482, 18482, 18482, 23052, 27202, 27202, 27202, 27202, 30764, 23993, 24384, 24384, 24384, 24384, 26758, 18482, 18482, 18482, 27867, 27202, 27202, 27202, 17590, 23998, 24384, 24384, 24384, 18481, 18482, 18482, 27202, 27202, 27203, 23997, 24385, 19887, 25677, 18482, 18483, 27202, 27202, 19738, 23870, 19887, 30991, 18484, 27202, 31802, 19425, 19466, 23052, 23296, 19847, 30990, 27868, 34251, 19859, 25794, 34248, 19856, 25793, 19779, 30988, 23482, 30981, 22080, 19438, 27956, 19678, 27944, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 22844, 18847, 22034, 27849, 27869, 35891, 24384, 35907, 22062, 18482, 18482, 18482, 18484, 27202, 27202, 27202, 27202, 22096, 24384, 24384, 24384, 24384, 18877, 18482, 18482, 18482, 18482, 18482, 25794, 27202, 27202, 27202, 27202, 35010, 22148, 24384, 24384, 24384, 24384, 24017, 31575, 18482, 18482, 18482, 18482, 26231, 27202, 27202, 27202, 27202, 27202, 19503, 35923, 24384, 24384, 24384, 24384, 19647, 18482, 28129, 18482, 18482, 35941, 27202, 32822, 27202, 32657, 30764, 23993, 24384, 32217, 24384, 32062, 26758, 18482, 18482, 18482, 27867, 27202, 27202, 27202, 17590, 23998, 24384, 24384, 24384, 18481, 18482, 18482, 27202, 27202, 27203, 23997, 24385, 19887, 25677, 18482, 18483, 27202, 27202, 19738, 23870, 19887, 30991, 18484, 27202, 31802, 19425, 19466, 23052, 23296, 19847, 30990, 27868, 34251, 19859, 25794, 34248, 19856, 25793, 19779, 30988, 23482, 30981, 22080, 19438, 27956, 19678, 27944, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 22859, 18847, 22034, 35966, 34820, 25325, 33931, 29176, 35988, 18482, 23277, 18482, 36021, 27202, 27202, 36056, 36073, 22096, 24384, 24384, 36096, 33921, 18877, 18482, 18482, 18482, 18482, 18482, 25794, 27202, 27202, 27202, 27202, 35010, 22148, 24384, 24384, 24384, 24384, 24017, 36113, 18482, 25577, 18482, 18482, 18484, 27202, 27202, 27324, 27202, 27202, 36146, 24384, 24384, 34362, 24384, 24384, 19647, 28243, 18482, 18482, 18482, 23052, 30899, 27202, 27202, 27202, 23686, 23993, 33808, 24384, 24384, 24384, 26758, 18482, 18482, 18482, 27867, 27202, 27202, 27202, 17590, 23998, 24384, 24384, 24384, 18481, 18482, 18482, 27202, 27202, 27203, 23997, 24385, 19887, 25677, 18482, 18483, 27202, 27202, 19738, 23870, 19887, 30991, 18484, 27202, 31802, 19425, 19466, 23052, 23296, 19847, 30990, 27868, 34251, 19859, 25794, 34248, 19856, 25793, 19779, 30988, 23482, 30981, 22080, 19438, 27956, 19678, 27944, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 22305, 18847, 22034, 19373, 27869, 36182, 24384, 36198, 22062, 18482, 18482, 18482, 18049, 27202, 27202, 27202, 35485, 22096, 24384, 24384, 24384, 29371, 18877, 18482, 36214, 18482, 28788, 18482, 25794, 34872, 27202, 27420, 27202, 35010, 22148, 29380, 24384, 24482, 24384, 24017, 31659, 18482, 36236, 18482, 18482, 18484, 27202, 36080, 27202, 27202, 27202, 19503, 24384, 28029, 24384, 24384, 24384, 19647, 18482, 18482, 32122, 18482, 35754, 27202, 27202, 36269, 27202, 33531, 23993, 24384, 24384, 36292, 24384, 36312, 18482, 18482, 18482, 27867, 27202, 27202, 27202, 17590, 23998, 24384, 24384, 24384, 25730, 18482, 18482, 36345, 27202, 27203, 19203, 24385, 19887, 25677, 31963, 18483, 27202, 32462, 19738, 23870, 36368, 30991, 18484, 27202, 31802, 19425, 19466, 23052, 23296, 19847, 30990, 27868, 34251, 19859, 25794, 34248, 19856, 25793, 19779, 30988, 23482, 30981, 22080, 19438, 27956, 19678, 27944, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 22350, 18847, 36388, 19027, 19252, 17687, 36433, 17173, 17595, 36436, 17330, 17349, 18940, 17189, 17208, 17281, 17675, 36452, 17308, 17327, 17346, 18937, 18460, 21855, 18660, 18676, 19025, 17265, 22008, 17292, 17421, 21157, 17192, 17682, 21701, 17311, 18669, 19018, 19027, 17447, 32909, 17497, 17520, 17251, 36410, 17824, 20322, 20663, 20490, 17543, 17559, 17585, 21862, 17504, 17527, 17258, 36417, 21890, 21915, 17611, 36466, 18259, 17633, 17661, 18368, 17703, 17730, 17772, 33538, 21921, 17617, 36472, 18265, 36530, 17477, 19171, 17902, 17934, 17744, 17795, 17874, 17590, 21595, 17481, 19175, 17906, 18742, 17960, 36550, 17714, 17976, 18021, 18738, 18692, 18413, 18632, 18081, 18098, 18114, 18159, 18185, 18717, 18094, 18251, 18292, 18281, 18308, 18005, 18338, 18354, 18384, 17849, 36402, 19251, 17838, 17163, 30650, 18400, 17858, 32918, 17645, 18816, 18429, 18445, 18530, 17393, 18758, 18516, 18546, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 22335, 18847, 19006, 19027, 19252, 17687, 19027, 21712, 30771, 36436, 17330, 17349, 18940, 17189, 17208, 17281, 17675, 17991, 17308, 17327, 17346, 18937, 18460, 21855, 18660, 18676, 19025, 17265, 22008, 17292, 17421, 21157, 17192, 21217, 21848, 17311, 18669, 19018, 19027, 17447, 32909, 17497, 17520, 17251, 36410, 17824, 20322, 20663, 20490, 17543, 17559, 17585, 21862, 17504, 17527, 17258, 36417, 21890, 21915, 17611, 36466, 18259, 17633, 17661, 18368, 17703, 17730, 17772, 33538, 21921, 17617, 36472, 18265, 36530, 17477, 19171, 17902, 17934, 17744, 17795, 17874, 17590, 21595, 17481, 19175, 17906, 18742, 17960, 36550, 17714, 17976, 18021, 18738, 18692, 18413, 18632, 18081, 18098, 18114, 18159, 18185, 18717, 18094, 18251, 18292, 18281, 18308, 18005, 18338, 18354, 18384, 17849, 36402, 19251, 17838, 17163, 30650, 18400, 17858, 32918, 17645, 18816, 18429, 18445, 18530, 17393, 18758, 18516, 18546, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 21788, 18847, 36488, 19027, 19252, 17687, 19027, 17173, 17779, 36436, 17330, 17349, 18940, 17189, 17208, 17281, 17675, 17810, 17308, 17327, 17346, 18937, 18460, 21855, 18660, 18676, 19025, 17265, 22008, 17292, 17421, 21157, 17192, 21165, 21997, 17311, 18669, 19018, 19027, 17447, 32909, 17497, 17520, 17251, 36410, 17824, 20322, 20663, 20490, 17543, 17559, 17585, 21862, 17504, 17527, 17258, 36417, 21890, 21915, 17611, 36466, 18259, 17633, 17661, 18368, 17703, 17730, 17772, 33538, 21921, 17617, 36472, 18265, 36530, 17477, 19171, 17902, 17934, 17744, 17795, 17874, 17590, 21595, 17481, 19175, 17906, 18742, 17960, 36550, 17714, 17976, 18021, 18738, 18692, 18413, 18632, 18081, 18098, 18114, 18159, 18185, 18717, 18094, 18251, 18292, 18281, 18308, 18005, 18338, 18354, 18384, 17849, 36402, 19251, 17838, 17163, 30650, 18400, 17858, 32918, 17645, 18816, 18429, 18445, 18530, 17393, 18758, 18516, 18546, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 21803, 18847, 19006, 19027, 19252, 17687, 19027, 17173, 30771, 36436, 17330, 17349, 18940, 17189, 17208, 17281, 17675, 36516, 17308, 17327, 17346, 18937, 18460, 21855, 18660, 18676, 19025, 17265, 22008, 17292, 17421, 21157, 17192, 21217, 21848, 17311, 18669, 19018, 19027, 17447, 32909, 17497, 17520, 17251, 36410, 17824, 20322, 20663, 20490, 17543, 17559, 17585, 21862, 17504, 17527, 17258, 36417, 21890, 21915, 17611, 36466, 18259, 17633, 17661, 18368, 17703, 17730, 17772, 33538, 21921, 17617, 36472, 18265, 36530, 17477, 19171, 17902, 17934, 17744, 17795, 17874, 17590, 21595, 17481, 19175, 17906, 18742, 17960, 36550, 17714, 17976, 18021, 18738, 18692, 18413, 18632, 18081, 18098, 18114, 18159, 18185, 18717, 18094, 18251, 18292, 18281, 18308, 18005, 18338, 18354, 18384, 17849, 36402, 19251, 17838, 17163, 30650, 18400, 17858, 32918, 17645, 18816, 18429, 18445, 18530, 17393, 18758, 18516, 18546, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 21803, 18847, 19326, 18482, 27869, 30764, 24384, 29176, 28008, 18482, 18482, 18482, 18484, 27202, 27202, 27202, 27202, 36566, 24384, 24384, 24384, 24384, 22919, 18482, 18482, 18482, 18482, 18482, 25794, 27202, 27202, 27202, 27202, 28530, 36613, 24384, 24384, 24384, 24384, 24017, 18892, 18482, 18482, 18482, 18482, 18484, 27202, 27202, 27202, 27202, 27202, 19503, 24384, 24384, 24384, 24384, 24384, 19647, 18482, 18482, 18482, 18482, 23052, 27202, 27202, 27202, 27202, 30764, 23993, 24384, 24384, 24384, 24384, 26758, 18482, 18482, 18482, 27867, 27202, 27202, 27202, 17590, 23998, 24384, 24384, 24384, 18481, 18482, 18482, 27202, 27202, 27203, 23997, 24385, 19887, 25677, 18482, 18483, 27202, 27202, 19738, 23870, 19887, 30991, 18484, 27202, 31802, 19425, 19466, 23052, 23296, 19847, 30990, 27868, 34251, 19859, 25794, 34248, 19856, 25793, 19779, 30988, 23482, 30981, 22080, 19438, 27956, 19678, 27944, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 36639, 36677, 18731, 19027, 19252, 17687, 19027, 17454, 17595, 36436, 17330, 17349, 18940, 17189, 17208, 17281, 17675, 17223, 17308, 17327, 17346, 18937, 36741, 21855, 18660, 18676, 19025, 17265, 22008, 17292, 17421, 21157, 17192, 17682, 21701, 17311, 18669, 19018, 19027, 17447, 32909, 17497, 17520, 17251, 36410, 17824, 20322, 20663, 20490, 17543, 17559, 17585, 21862, 17504, 17527, 17258, 36417, 21890, 21915, 17611, 36466, 18259, 17633, 17661, 18368, 17703, 17730, 17772, 33538, 21921, 17617, 36472, 18265, 36530, 17477, 19171, 17902, 17934, 17744, 17795, 17874, 17590, 21595, 17481, 19175, 17906, 18742, 17960, 36550, 17714, 17976, 18021, 18738, 18692, 18413, 18632, 18081, 18098, 18114, 18159, 18185, 18717, 18094, 18251, 18292, 18281, 18308, 18005, 18338, 18354, 18384, 17849, 36402, 19251, 17838, 17163, 30650, 18400, 17858, 32918, 17645, 18816, 18429, 18445, 18530, 17393, 18758, 18516, 18546, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 0, 94242, 0, 118820, 0, 2211840, 102439, 0, 0, 106538, 98347, 0, 2158592, 2158592, 2158592, 2158592, 2158592, 2158592, 2158592, 2158592, 2482176, 2158592, 2158592, 2158592, 2158592, 2158592, 2158592, 0, 40976, 0, 18, 18, 24, 24, 27, 27, 27, 2207744, 2404352, 2412544, 2207744, 2207744, 2207744, 2207744, 2207744, 2207744, 2207744, 2207744, 2207744, 2207744, 2207744, 2207744, 2207744, 2207744, 2207744, 3104768, 2605056, 2207744, 2207744, 2207744, 2207744, 2207744, 2207744, 2678784, 2207744, 2695168, 2207744, 2703360, 2207744, 2711552, 2752512, 2207744, 0, 0, 0, 0, 0, 0, 2166784, 0, 0, 0, 0, 0, 0, 2158592, 2158592, 3170304, 3174400, 2158592, 0, 139, 0, 2158592, 2158592, 2158592, 2158592, 2158592, 2424832, 2158592, 2158592, 2158592, 2748416, 2756608, 2777088, 2801664, 2158592, 2158592, 2158592, 2863104, 2891776, 2158592, 2158592, 2158592, 2158592, 2158592, 2158592, 2158592, 2158592, 2158592, 2158592, 2158592, 3104768, 2158592, 2158592, 2158592, 2158592, 2158592, 2158592, 2207744, 2785280, 2207744, 2809856, 2207744, 2207744, 2842624, 2207744, 2207744, 2207744, 2899968, 2207744, 2207744, 2207744, 2207744, 2207744, 2207744, 2207744, 2207744, 2207744, 2207744, 2207744, 2207744, 2564096, 2207744, 2207744, 2207744, 2158592, 2404352, 2412544, 2158592, 2158592, 2158592, 2158592, 2158592, 2158592, 2158592, 2158592, 2158592, 2158592, 2158592, 2158592, 2158592, 2564096, 2158592, 2158592, 2605056, 2158592, 2158592, 2158592, 2158592, 2158592, 2158592, 2678784, 2158592, 2695168, 2158592, 2703360, 2158592, 2711552, 2752512, 2158592, 2158592, 2785280, 2158592, 2158592, 2785280, 2158592, 2809856, 2158592, 2158592, 2842624, 2158592, 2158592, 2158592, 2899968, 2158592, 2158592, 2158592, 2158592, 2158592, 2158592, 2158592, 2158592, 2158592, 18, 0, 0, 0, 0, 0, 0, 0, 2211840, 0, 0, 641, 0, 2158592, 0, 0, 0, 0, 0, 0, 0, 0, 2211840, 0, 0, 32768, 0, 2158592, 0, 2158592, 2158592, 2158592, 2383872, 2158592, 2158592, 2158592, 2158592, 3006464, 2383872, 2207744, 2207744, 2207744, 2207744, 2158877, 2158877, 2158877, 2158877, 0, 0, 0, 2158877, 2572573, 2158877, 2158877, 0, 2207744, 2207744, 2596864, 2207744, 2207744, 2207744, 2207744, 2207744, 2207744, 2641920, 2207744, 2207744, 2207744, 2207744, 2207744, 2207744, 2207744, 0, 0, 0, 0, 0, 0, 2162968, 0, 0, 3104768, 2158592, 2158592, 2158592, 2158592, 2158592, 2158592, 2158592, 2158592, 2158592, 2158592, 2158592, 2158592, 0, 0, 0, 2146304, 2146304, 2224128, 2224128, 2232320, 2232320, 2232320, 641, 0, 0, 0, 0, 0, 0, 2158592, 2158592, 2158592, 2158592, 2158592, 2158592, 2158592, 2158592, 2158592, 2531328, 2158592, 2158592, 2158592, 2158592, 2158592, 2617344, 2158592, 2158592, 2158592, 2158592, 2441216, 2445312, 2158592, 2158592, 2158592, 2158592, 2158592, 2158592, 2502656, 2158592, 2158592, 2158592, 2158592, 2158592, 2158592, 2158592, 2158592, 2580480, 2158592, 2158592, 2158592, 2158592, 2621440, 2158592, 2580480, 2158592, 2158592, 2158592, 2158592, 2621440, 2158592, 2158592, 2158592, 2158592, 2158592, 2158592, 2699264, 2158592, 2158592, 2158592, 2158592, 2158592, 2748416, 2756608, 2777088, 2801664, 2207744, 2863104, 2891776, 2207744, 2207744, 2207744, 2207744, 2207744, 2207744, 2207744, 2207744, 2207744, 2207744, 2207744, 2207744, 3018752, 2207744, 3043328, 2207744, 2207744, 2207744, 2207744, 3080192, 2207744, 2207744, 3112960, 2207744, 2207744, 2207744, 2207744, 2207744, 2207744, 2207744, 0, 0, 0, 167936, 0, 0, 2162688, 0, 0, 2207744, 2207744, 2207744, 3186688, 2207744, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2158592, 2158592, 2158592, 2404352, 2412544, 2158592, 2510848, 2158592, 2158592, 2158592, 2158592, 2158592, 2158592, 2158592, 2584576, 2158592, 2609152, 2158592, 2158592, 2629632, 2158592, 2158592, 2158592, 2686976, 2158592, 2715648, 2158592, 2158592, 3121152, 2158592, 2158592, 2158592, 3149824, 2158592, 2158592, 3170304, 3174400, 2158592, 2367488, 2207744, 2207744, 2207744, 2207744, 2158592, 2158592, 2158592, 2158592, 0, 0, 0, 2158592, 2572288, 2158592, 2158592, 0, 2207744, 2207744, 2207744, 2433024, 2207744, 2453504, 2461696, 2207744, 2207744, 2207744, 2207744, 2207744, 2207744, 2510848, 2207744, 2207744, 2207744, 2207744, 2207744, 2207744, 3096576, 2207744, 2207744, 2207744, 2207744, 2207744, 2207744, 2207744, 2207744, 2207744, 2207744, 2207744, 2207744, 0, 0, 0, 0, 0, 0, 2162688, 0, 0, 2715648, 2207744, 2207744, 2207744, 2207744, 2207744, 2207744, 2207744, 2867200, 2207744, 2904064, 2207744, 2207744, 2207744, 2207744, 2207744, 2207744, 2207744, 2207744, 2473984, 2207744, 2207744, 2494464, 2207744, 2207744, 2207744, 2523136, 2207744, 2207744, 2207744, 2207744, 3014656, 2207744, 2207744, 3051520, 2207744, 2207744, 3100672, 2207744, 2207744, 3121152, 2207744, 2207744, 2207744, 2207744, 2207744, 2531328, 2207744, 2207744, 2207744, 2207744, 2207744, 2617344, 2207744, 2207744, 2207744, 2207744, 2158592, 2158592, 2158592, 2158592, 0, 0, 0, 2158592, 2572288, 2158592, 2158592, 1508, 2207744, 3149824, 2207744, 2207744, 3170304, 3174400, 2207744, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 138, 2158592, 2158592, 2158592, 2404352, 2412544, 2707456, 2732032, 2207744, 2207744, 2207744, 2822144, 2826240, 2207744, 2895872, 2207744, 2207744, 2924544, 2207744, 2207744, 2973696, 2207744, 0, 0, 0, 0, 0, 0, 2166784, 0, 0, 0, 0, 0, 285, 2158592, 2158592, 3112960, 2158592, 2158592, 2158592, 2158592, 2158592, 2158592, 2158592, 2158592, 2158592, 3186688, 2158592, 2207744, 2207744, 2158592, 2158592, 2158592, 2158592, 2158592, 0, 0, 0, 2158592, 2158592, 2158592, 2158592, 0, 0, 2535424, 2543616, 2158592, 2158592, 2158592, 0, 0, 0, 2158592, 2158592, 2158592, 2990080, 2158592, 2158592, 2158592, 2158592, 2158592, 2158592, 2158592, 2572288, 2981888, 2207744, 2207744, 3002368, 2207744, 3047424, 3063808, 3076096, 2207744, 2207744, 2207744, 2207744, 2207744, 2207744, 2207744, 3203072, 2708960, 2732032, 2158592, 2158592, 2158592, 2822144, 2827748, 2158592, 2895872, 2158592, 2158592, 2924544, 2158592, 2158592, 2973696, 2158592, 2981888, 2158592, 2158592, 3002368, 2158592, 3047424, 3063808, 3076096, 2158592, 2158592, 2158592, 2158592, 2158592, 2158592, 2158592, 3203072, 2981888, 2158592, 2158592, 3003876, 2158592, 3047424, 3063808, 3076096, 2158592, 2158592, 2158592, 2158592, 2158592, 2158592, 2158592, 3203072, 2207744, 2207744, 2207744, 2207744, 2207744, 2424832, 2207744, 2207744, 2207744, 2207744, 2207744, 2207744, 2207744, 0, 0, 0, 172310, 279, 0, 2162688, 0, 0, 2523136, 2527232, 2158592, 2158592, 2576384, 2158592, 2158592, 2158592, 2158592, 2158592, 2158592, 2158592, 2158592, 2158592, 2158592, 2908160, 2527232, 2207744, 2207744, 2576384, 2207744, 2207744, 2207744, 2207744, 2207744, 2207744, 2207744, 2207744, 2207744, 2207744, 2908160, 2207744, 0, 0, 0, 0, 0, 0, 2166784, 0, 0, 0, 0, 0, 286, 2158592, 2158592, 0, 0, 2158592, 2158592, 2158592, 2158592, 2633728, 2658304, 0, 0, 2740224, 2744320, 0, 2834432, 2207744, 2207744, 2977792, 2207744, 2207744, 2207744, 2207744, 3039232, 2207744, 2207744, 2207744, 2207744, 2207744, 2207744, 3158016, 0, 0, 29315, 0, 0, 0, 0, 45, 45, 45, 45, 45, 933, 45, 45, 45, 45, 442, 45, 45, 45, 45, 45, 45, 45, 45, 45, 67, 67, 2494464, 2158592, 2158592, 2158592, 2524757, 2527232, 2158592, 2158592, 2576384, 2158592, 2158592, 2158592, 2158592, 2158592, 2158592, 1504, 2158592, 2498560, 2158592, 2158592, 2158592, 2158592, 2568192, 2158592, 2592768, 2625536, 2158592, 2158592, 2674688, 2736128, 2158592, 2158592, 0, 2158592, 2912256, 2158592, 2158592, 2158592, 2158592, 2158592, 2158592, 2158592, 3108864, 2158592, 2158592, 3133440, 3145728, 3153920, 2375680, 2379776, 2207744, 2207744, 2420736, 2207744, 2449408, 2207744, 2207744, 2207744, 2498560, 2207744, 2207744, 2207744, 2207744, 2568192, 2207744, 0, 0, 0, 0, 0, 0, 2166784, 0, 0, 0, 0, 0, 551, 2158592, 2158592, 2158592, 2158592, 2207744, 2506752, 2207744, 2207744, 2207744, 2207744, 2207744, 2158592, 2506752, 0, 2020, 2158592, 2592768, 2625536, 2207744, 2207744, 2674688, 2736128, 2207744, 2207744, 2207744, 2912256, 2207744, 2207744, 2207744, 2207744, 2207744, 2207744, 2207744, 20480, 0, 0, 0, 0, 0, 2162688, 20480, 0, 2207744, 3108864, 2207744, 2207744, 3133440, 3145728, 3153920, 2375680, 2379776, 2158592, 2158592, 2420736, 2158592, 2449408, 2158592, 2158592, 2158592, 2158592, 2158592, 3186688, 2158592, 0, 641, 0, 0, 0, 0, 0, 0, 2367488, 2158592, 2498560, 2158592, 2158592, 1621, 2158592, 2158592, 2568192, 2158592, 2592768, 2625536, 2158592, 2158592, 2674688, 0, 0, 0, 0, 0, 1608, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 1107, 97, 97, 1110, 97, 97, 3133440, 3145728, 3153920, 2158592, 2408448, 2416640, 2158592, 2465792, 2158592, 2158592, 2158592, 2158592, 2158592, 2158592, 2158592, 2158592, 3014656, 2158592, 2158592, 3051520, 2158592, 2158592, 3100672, 2158592, 2158592, 3121152, 2158592, 2158592, 2158592, 3149824, 2416640, 2207744, 2465792, 2207744, 2207744, 2207744, 2207744, 2207744, 2207744, 2207744, 2207744, 2633728, 2658304, 2740224, 2744320, 2834432, 2949120, 2158592, 2985984, 2158592, 2998272, 2158592, 2158592, 2158592, 3129344, 2207744, 2408448, 2949120, 2207744, 2985984, 2207744, 2998272, 2207744, 2207744, 2207744, 3129344, 2158592, 2408448, 2416640, 2158592, 2465792, 2158592, 2158592, 2158592, 2158592, 2158592, 3186688, 2158592, 0, 32768, 0, 0, 0, 0, 0, 0, 2367488, 2949120, 2158592, 2985984, 2158592, 2998272, 2158592, 2158592, 2158592, 3129344, 2158592, 2158592, 2478080, 2158592, 2158592, 2158592, 2535424, 2543616, 2158592, 2158592, 2158592, 2158592, 2158592, 2158592, 2158592, 2158592, 2158592, 3117056, 2207744, 2207744, 2478080, 2207744, 2207744, 2207744, 2207744, 2207744, 2584576, 2207744, 2609152, 2207744, 2207744, 2629632, 2207744, 2207744, 2207744, 2686976, 2207744, 2207744, 2535424, 2543616, 2207744, 2207744, 2207744, 2207744, 2207744, 2207744, 2207744, 2207744, 2207744, 3117056, 2158592, 2158592, 2478080, 2207744, 2207744, 2990080, 2207744, 2207744, 2158592, 2158592, 2482176, 2158592, 2158592, 0, 0, 0, 2158592, 2158592, 2158592, 0, 2158592, 2908160, 2158592, 2158592, 2158592, 2977792, 2158592, 2158592, 2158592, 2158592, 3039232, 2158592, 2158592, 3010560, 2207744, 2428928, 2207744, 2514944, 2207744, 2588672, 2207744, 2838528, 2207744, 2207744, 2207744, 3010560, 2158592, 2428928, 2158592, 2514944, 0, 0, 2158592, 2588672, 2158592, 0, 2838528, 2158592, 2158592, 2158592, 3010560, 2158592, 2506752, 2158592, 18, 0, 0, 0, 0, 0, 0, 0, 2211840, 0, 0, 0, 0, 2158592, 0, 0, 29315, 922, 0, 0, 0, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 67, 67, 3006464, 2383872, 0, 2020, 2158592, 2158592, 2158592, 2158592, 3006464, 2158592, 2637824, 2953216, 2158592, 2207744, 2637824, 2953216, 2207744, 0, 0, 2158592, 2637824, 2953216, 2158592, 2539520, 2158592, 2539520, 2207744, 0, 0, 2539520, 2158592, 2158592, 2158592, 2158592, 2207744, 2506752, 2207744, 2207744, 2207744, 2207744, 2207744, 2158592, 2506752, 0, 0, 2158592, 2207744, 0, 2158592, 2158592, 2207744, 0, 2158592, 2158592, 2207744, 0, 2158592, 2965504, 2965504, 2965504, 0, 0, 0, 0, 0, 2158877, 2158877, 2158877, 2158877, 2158877, 2158877, 2158877, 2158877, 2474269, 2158877, 2158877, 0, 0, 2158877, 2158877, 2158877, 2158877, 2634013, 2658589, 0, 0, 2740509, 2744605, 0, 2834717, 40976, 18, 36884, 45078, 24, 28, 90143, 94242, 118820, 102439, 106538, 98347, 118820, 118820, 118820, 40976, 18, 18, 36884, 0, 0, 0, 24, 24, 24, 27, 27, 27, 27, 90143, 0, 0, 86016, 0, 0, 2211840, 102439, 0, 0, 0, 98347, 0, 2158592, 2158592, 2158592, 2158592, 2158592, 3158016, 0, 2375680, 2379776, 2158592, 2158592, 2420736, 2158592, 2449408, 2158592, 2158592, 0, 94242, 0, 0, 0, 2211840, 102439, 0, 0, 106538, 98347, 135, 2158592, 2158592, 2158592, 2158592, 2158592, 2158592, 2564096, 2158592, 2158592, 2158592, 2158592, 2158592, 2596864, 2158592, 2158592, 2158592, 2158592, 2158592, 2158592, 2641920, 2158592, 2158592, 2158592, 2158592, 2158592, 2158592, 2158592, 2158592, 2158592, 2158592, 2781184, 2793472, 2494464, 2158592, 2158592, 2158592, 2523136, 2527232, 2158592, 2158592, 2576384, 2158592, 2158592, 2158592, 2158592, 2158592, 2158592, 0, 40976, 0, 18, 18, 24, 0, 27, 27, 0, 2158592, 2498560, 2158592, 2158592, 0, 2158592, 2158592, 2568192, 2158592, 2592768, 2625536, 2158592, 2158592, 2674688, 0, 0, 0, 0, 0, 2211840, 0, 0, 0, 0, 0, 0, 2158592, 2158592, 2158592, 2158592, 2158592, 2158592, 2158592, 2158592, 2473984, 2158592, 2158592, 2494464, 2158592, 2158592, 2158592, 3006464, 2383872, 0, 0, 2158592, 2158592, 2158592, 2158592, 3006464, 2158592, 2637824, 2953216, 2158592, 2207744, 2637824, 2953216, 40976, 18, 36884, 45078, 24, 27, 147488, 94242, 147456, 147488, 106538, 98347, 0, 0, 147456, 40976, 18, 18, 36884, 0, 45078, 0, 24, 24, 24, 27, 27, 27, 27, 0, 81920, 0, 94242, 0, 0, 0, 2211840, 0, 0, 0, 106538, 98347, 0, 2158592, 2158592, 2158592, 2158592, 2158592, 2158592, 2428928, 2158592, 2514944, 2158592, 2588672, 2158592, 2838528, 2158592, 2158592, 40976, 18, 151573, 45078, 24, 27, 90143, 94242, 0, 102439, 106538, 98347, 0, 0, 0, 40976, 18, 18, 36884, 0, 45078, 0, 24, 24, 24, 27, 27, 27, 27, 90143, 0, 0, 1315, 0, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 1487, 97, 18, 131427, 0, 0, 0, 0, 0, 0, 362, 0, 0, 365, 29315, 367, 0, 0, 29315, 0, 0, 0, 0, 45, 45, 45, 45, 45, 45, 45, 45, 45, 1663, 45, 45, 45, 45, 45, 45, 45, 45, 45, 183, 45, 45, 45, 45, 201, 45, 130, 94242, 0, 0, 0, 2211840, 102439, 0, 0, 106538, 98347, 0, 2158592, 2158592, 2158592, 2158592, 2158592, 2158592, 3096576, 2158592, 2158592, 2158592, 2158592, 2158592, 2158592, 2158592, 2158592, 2158592, 2158592, 2207744, 2207744, 2158592, 18, 0, 0, 0, 0, 0, 0, 0, 2211840, 0, 0, 0, 0, 2158592, 644, 2207744, 2207744, 2207744, 3186688, 2207744, 0, 1080, 0, 1084, 0, 1088, 0, 0, 0, 0, 0, 0, 0, 2158730, 2158730, 2158730, 2158730, 2158730, 2158730, 2158730, 2158730, 2158730, 2531466, 2158730, 2158730, 2158730, 2158730, 2158730, 2617482, 0, 94242, 0, 0, 0, 2211840, 102439, 0, 0, 106538, 98347, 0, 2158592, 2158592, 2158592, 2158592, 2158592, 2781184, 2793472, 2158592, 2818048, 2158592, 2158592, 2158592, 2158592, 2158592, 2158592, 2158592, 2158592, 2158592, 2158592, 2158592, 2158592, 2158592, 2158592, 2158592, 2158592, 40976, 18, 36884, 45078, 24, 27, 90143, 159779, 159744, 102439, 159779, 98347, 0, 0, 159744, 40976, 18, 18, 36884, 0, 45078, 0, 2224253, 172032, 2224253, 2232448, 2232448, 172032, 2232448, 90143, 0, 0, 2170880, 0, 0, 550, 829, 2158592, 2158592, 2158592, 2387968, 2158592, 2158592, 2158592, 2158592, 2158592, 2158592, 0, 40976, 0, 18, 18, 124, 124, 127, 127, 127, 40976, 18, 36884, 45078, 25, 29, 90143, 94242, 0, 102439, 106538, 98347, 0, 0, 163931, 40976, 18, 18, 36884, 0, 45078, 249856, 24, 24, 24, 27, 27, 27, 27, 90143, 0, 0, 2170880, 0, 0, 827, 0, 2158592, 2158592, 2158592, 2387968, 2158592, 2158592, 2158592, 2158592, 2158592, 2158592, 0, 40976, 0, 4243810, 4243810, 24, 24, 27, 27, 27, 2207744, 0, 0, 0, 0, 0, 0, 2166784, 0, 0, 0, 0, 57344, 286, 2158592, 2158592, 2158592, 2158592, 2707456, 2732032, 2158592, 2158592, 2158592, 2822144, 2826240, 2158592, 2895872, 2158592, 2158592, 2924544, 2158592, 2158592, 2973696, 2158592, 2207744, 2207744, 2207744, 3186688, 2207744, 0, 0, 0, 0, 0, 0, 53248, 0, 0, 0, 0, 0, 97, 97, 97, 97, 97, 1613, 97, 97, 97, 97, 97, 97, 1495, 97, 97, 97, 97, 97, 97, 97, 97, 97, 566, 97, 97, 97, 97, 97, 97, 2207744, 0, 0, 0, 0, 0, 0, 2166784, 546, 0, 0, 0, 0, 286, 2158592, 2158592, 2158592, 2207744, 2207744, 2207744, 2207744, 2207744, 2207744, 2207744, 2207744, 2207744, 2207744, 2207744, 2207744, 2207744, 2207744, 17, 18, 36884, 45078, 24, 27, 90143, 94242, 0, 102439, 106538, 98347, 0, 0, 20480, 120, 121, 18, 18, 36884, 0, 45078, 0, 24, 24, 24, 27, 27, 27, 27, 90143, 0, 0, 2170880, 0, 53248, 550, 0, 2158592, 2158592, 2158592, 2387968, 2158592, 2158592, 2158592, 2158592, 2158592, 2158592, 0, 40976, 196608, 18, 266240, 24, 24, 27, 27, 27, 0, 94242, 0, 0, 0, 38, 102439, 0, 0, 106538, 98347, 0, 45, 45, 45, 45, 45, 45, 45, 1535, 45, 45, 45, 45, 45, 45, 45, 1416, 45, 45, 45, 45, 45, 45, 45, 45, 424, 45, 45, 45, 45, 45, 45, 45, 45, 45, 405, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 199, 45, 45, 67, 67, 67, 67, 67, 491, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 1766, 67, 67, 67, 1767, 67, 24850, 24850, 12564, 12564, 0, 0, 2166784, 546, 0, 53531, 53531, 0, 286, 97, 97, 0, 0, 97, 97, 97, 97, 97, 97, 0, 0, 97, 97, 0, 97, 97, 97, 45, 45, 45, 45, 45, 45, 67, 67, 67, 67, 67, 67, 67, 67, 67, 743, 57889, 0, 2170880, 0, 0, 550, 0, 97, 97, 97, 97, 97, 97, 97, 97, 97, 45, 45, 45, 45, 45, 45, 45, 45, 1856, 45, 1858, 1859, 67, 67, 67, 1009, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 1021, 67, 67, 67, 67, 67, 25398, 0, 13112, 0, 54074, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2367773, 2158877, 2158877, 2158877, 2158877, 2158877, 2158877, 2699549, 2158877, 2158877, 2158877, 2158877, 2158877, 2748701, 2756893, 2777373, 2801949, 97, 1115, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 857, 97, 67, 67, 67, 67, 67, 1258, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 1826, 67, 97, 97, 97, 97, 97, 97, 1338, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 870, 97, 97, 67, 67, 67, 1463, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 1579, 67, 67, 97, 97, 97, 1518, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 904, 905, 97, 97, 97, 97, 1620, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 0, 921, 0, 0, 0, 0, 0, 0, 45, 1679, 67, 67, 67, 1682, 67, 67, 67, 67, 67, 67, 67, 67, 67, 1690, 67, 0, 0, 97, 97, 97, 97, 45, 45, 67, 67, 0, 0, 97, 97, 45, 45, 45, 669, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 189, 45, 45, 45, 1748, 45, 45, 45, 1749, 1750, 45, 45, 45, 45, 45, 45, 45, 45, 67, 67, 67, 67, 1959, 67, 67, 67, 67, 1768, 67, 67, 67, 67, 67, 67, 67, 67, 97, 97, 97, 97, 97, 97, 97, 97, 97, 1791, 97, 97, 97, 97, 97, 97, 97, 97, 45, 45, 45, 45, 45, 45, 1802, 67, 1817, 67, 67, 67, 67, 67, 67, 1823, 67, 67, 67, 67, 97, 97, 97, 97, 0, 0, 0, 97, 97, 97, 97, 0, 97, 97, 97, 97, 1848, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 659, 45, 45, 45, 45, 45, 45, 45, 1863, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 495, 67, 67, 67, 67, 67, 1878, 97, 97, 97, 97, 0, 0, 0, 97, 97, 97, 97, 0, 0, 97, 97, 97, 97, 97, 0, 0, 0, 97, 97, 97, 97, 97, 97, 45, 45, 45, 45, 45, 45, 45, 45, 45, 67, 67, 67, 67, 97, 97, 97, 97, 0, 0, 0, 1973, 97, 97, 97, 0, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 1165, 97, 1167, 0, 94242, 0, 0, 0, 2211840, 102439, 0, 0, 106538, 98347, 136, 2158592, 2158592, 2158592, 2158592, 2158592, 3158016, 229376, 2375680, 2379776, 2158592, 2158592, 2420736, 2158592, 2449408, 2158592, 2158592, 67, 24850, 24850, 12564, 12564, 0, 0, 280, 547, 0, 53531, 53531, 0, 286, 97, 97, 0, 0, 97, 97, 97, 97, 97, 97, 0, 0, 97, 97, 1789, 97, 57889, 547, 547, 0, 0, 550, 0, 97, 97, 97, 97, 97, 97, 97, 97, 97, 45, 45, 45, 1799, 45, 45, 45, 67, 67, 67, 67, 67, 25398, 0, 13112, 0, 54074, 0, 0, 1092, 0, 0, 0, 0, 0, 97, 97, 97, 97, 1612, 97, 97, 97, 97, 1616, 97, 1297, 1472, 0, 0, 0, 0, 1303, 1474, 0, 0, 0, 0, 1309, 1476, 0, 0, 0, 0, 97, 97, 97, 1481, 97, 97, 97, 97, 97, 97, 1488, 97, 0, 1474, 0, 1476, 0, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 607, 97, 97, 97, 97, 40976, 18, 36884, 45078, 26, 30, 90143, 94242, 0, 102439, 106538, 98347, 0, 0, 213080, 40976, 18, 36884, 45078, 24, 27, 90143, 94242, 0, 102439, 106538, 98347, 0, 0, 143448, 40976, 18, 18, 36884, 0, 45078, 0, 24, 24, 24, 27, 27, 27, 27, 0, 0, 0, 0, 97, 97, 97, 97, 1482, 97, 1483, 97, 97, 97, 97, 97, 97, 1326, 97, 97, 1329, 1330, 97, 97, 97, 97, 97, 97, 1159, 1160, 97, 97, 97, 97, 97, 97, 97, 97, 590, 97, 97, 97, 97, 97, 97, 97, 0, 94242, 0, 0, 0, 2211974, 102439, 0, 0, 106538, 98347, 0, 2158730, 2158730, 2158730, 2158730, 2158730, 2158730, 2158730, 2158730, 2474122, 2158730, 2158730, 2494602, 2158730, 2158730, 2158730, 2809994, 2158730, 2158730, 2842762, 2158730, 2158730, 2158730, 2900106, 2158730, 2158730, 2158730, 2158730, 2158730, 2158730, 2158730, 2158730, 3014794, 2158730, 2158730, 3051658, 2158730, 2158730, 3100810, 2158730, 2158730, 2158730, 2158730, 3096714, 2158730, 2158730, 2158730, 2158730, 2158730, 2158730, 2158730, 2158730, 2158730, 2158730, 2207744, 2207744, 2207744, 2207744, 2207744, 2572288, 2207744, 2207744, 2207744, 2207744, 541, 541, 543, 543, 0, 0, 2166784, 0, 548, 549, 549, 0, 286, 2158877, 2158877, 2158877, 2863389, 2892061, 2158877, 2158877, 2158877, 2158877, 2158877, 2158877, 2158877, 2158877, 2158877, 2158877, 2158877, 3186973, 2158877, 0, 0, 0, 0, 0, 0, 0, 0, 2367626, 2158877, 2404637, 2412829, 2158877, 2158877, 2158877, 2158877, 2158877, 2158877, 2158877, 2158877, 2158877, 2158877, 2158877, 2158877, 2158877, 2158877, 2158877, 2158877, 2564381, 2158877, 2158877, 2605341, 2158877, 2158877, 2158877, 2158877, 2158877, 2158877, 2679069, 2158877, 2695453, 2158877, 2703645, 2158877, 2711837, 2752797, 2158877, 0, 2158877, 2158877, 2158877, 2384010, 2158730, 2158730, 2158730, 2158730, 3006602, 2383872, 2207744, 2207744, 2207744, 2207744, 2207744, 2207744, 2207744, 2441216, 2445312, 2207744, 2207744, 2207744, 2207744, 2207744, 2207744, 2502656, 2158877, 2785565, 2158877, 2810141, 2158877, 2158877, 2842909, 2158877, 2158877, 2158877, 2900253, 2158877, 2158877, 2158877, 2158877, 2158877, 2531613, 2158877, 2158877, 2158877, 2158877, 2158877, 2617629, 2158877, 2158877, 2158877, 2158877, 2158730, 2818186, 2158730, 2158730, 2158730, 2158730, 2158730, 2158730, 2158730, 2158730, 2158730, 2158730, 2158730, 2158730, 2158730, 2158730, 2158730, 2158730, 3105053, 2158877, 2158877, 2158877, 2158877, 2158877, 2158877, 2158877, 2158877, 2158877, 2158877, 2158877, 2158877, 0, 0, 0, 0, 0, 97, 97, 97, 1611, 97, 97, 97, 97, 97, 97, 97, 1496, 97, 97, 1499, 97, 97, 97, 97, 97, 2441354, 2445450, 2158730, 2158730, 2158730, 2158730, 2158730, 2158730, 2502794, 2158730, 2158730, 2158730, 2158730, 2158730, 2158730, 2158730, 2433162, 2158730, 2453642, 2461834, 2158730, 2158730, 2158730, 2158730, 2158730, 2158730, 2580618, 2158730, 2158730, 2158730, 2158730, 2621578, 2158730, 2158730, 2158730, 2158730, 2158730, 2158730, 2699402, 2158730, 2158730, 2158730, 2158730, 2678922, 2158730, 2695306, 2158730, 2703498, 2158730, 2711690, 2752650, 2158730, 2158730, 2785418, 2158730, 2158730, 2158730, 3113098, 2158730, 2158730, 2158730, 2158730, 2158730, 2158730, 2158730, 2158730, 2158730, 3186826, 2158730, 2207744, 2207744, 2207744, 2207744, 2699264, 2207744, 2207744, 2207744, 2207744, 2207744, 2748416, 2756608, 2777088, 2801664, 2207744, 2207744, 2158877, 2158877, 2158877, 2158877, 2158877, 0, 0, 0, 2158877, 2158877, 2158877, 2158877, 0, 0, 2535709, 2543901, 2158877, 2158877, 2158877, 0, 0, 0, 2158877, 2158877, 2158877, 2990365, 2158877, 2158877, 2158730, 2158730, 2158730, 2158730, 2158730, 2572426, 2158877, 2502941, 2158877, 2158877, 2158877, 2158877, 2158877, 2158877, 2158877, 2158877, 2580765, 2158877, 2158877, 2158877, 2158877, 2621725, 2158877, 3019037, 2158877, 3043613, 2158877, 2158877, 2158877, 2158877, 3080477, 2158877, 2158877, 3113245, 2158877, 2158877, 2158877, 2158877, 0, 2158877, 2908445, 2158877, 2158877, 2158877, 2978077, 2158877, 2158877, 2158877, 2158877, 3039517, 2158877, 2158730, 2510986, 2158730, 2158730, 2158730, 2158730, 2158730, 2158730, 2158730, 2584714, 2158730, 2609290, 2158730, 2158730, 2629770, 2158730, 2158730, 2158730, 2388106, 2158730, 2158730, 2158730, 2158730, 2158730, 2158730, 2158730, 2158730, 2158730, 2158730, 2158730, 2158730, 2158730, 2605194, 2158730, 2158730, 2158730, 2158730, 2687114, 2158730, 2715786, 2158730, 2158730, 2158730, 2158730, 2158730, 2158730, 2158730, 2867338, 2158730, 2904202, 2158730, 2158730, 2158730, 2642058, 2158730, 2158730, 2158730, 2158730, 2158730, 2158730, 2158730, 2158730, 2158730, 2158730, 2781322, 2793610, 2158730, 3121290, 2158730, 2158730, 2158730, 3149962, 2158730, 2158730, 3170442, 3174538, 2158730, 2367488, 2207744, 2207744, 2207744, 2207744, 2207744, 2207744, 2207744, 2207744, 2580480, 2207744, 2207744, 2207744, 2207744, 2621440, 2207744, 2207744, 2158877, 2433309, 2158877, 2453789, 2461981, 2158877, 2158877, 2158877, 2158877, 2158877, 2158877, 2511133, 2158877, 2158877, 2158877, 2158877, 2584861, 2158877, 2609437, 2158877, 2158877, 2629917, 2158877, 2158877, 2158877, 2687261, 2158877, 2715933, 2158877, 2158730, 2158730, 2973834, 2158730, 2982026, 2158730, 2158730, 3002506, 2158730, 3047562, 3063946, 3076234, 2158730, 2158730, 2158730, 2158730, 2207744, 2506752, 2207744, 2207744, 2207744, 2207744, 2207744, 2158877, 2507037, 0, 0, 2158877, 2158730, 2158730, 2158730, 3203210, 2207744, 2207744, 2207744, 2207744, 2207744, 2424832, 2207744, 2207744, 2207744, 2207744, 2207744, 2207744, 2207744, 2207744, 2207744, 2207744, 2207744, 2207744, 0, 823, 0, 825, 2707741, 2732317, 2158877, 2158877, 2158877, 2822429, 2826525, 2158877, 2896157, 2158877, 2158877, 2924829, 2158877, 2158877, 2973981, 2158877, 18, 0, 0, 0, 0, 0, 0, 0, 2211840, 0, 0, 642, 0, 2158592, 0, 45, 1529, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 1755, 45, 67, 67, 2982173, 2158877, 2158877, 3002653, 2158877, 3047709, 3064093, 3076381, 2158877, 2158877, 2158877, 2158877, 2158877, 2158877, 2158877, 3203357, 2523274, 2527370, 2158730, 2158730, 2576522, 2158730, 2158730, 2158730, 2158730, 2158730, 2158730, 2158730, 2158730, 2158730, 2158730, 2908298, 2494749, 2158877, 2158877, 2158877, 2523421, 2527517, 2158877, 2158877, 2576669, 2158877, 2158877, 2158877, 2158877, 2158877, 2158877, 0, 40976, 0, 18, 18, 4321280, 2224253, 2232448, 4329472, 2232448, 2158730, 2498698, 2158730, 2158730, 2158730, 2158730, 2568330, 2158730, 2592906, 2625674, 2158730, 2158730, 2674826, 2736266, 2158730, 2158730, 2158730, 2207744, 2207744, 2207744, 2207744, 2207744, 2207744, 2207744, 2207744, 2207744, 2207744, 2207744, 2207744, 2207744, 2207744, 2158730, 2912394, 2158730, 2158730, 2158730, 2158730, 2158730, 2158730, 2158730, 3109002, 2158730, 2158730, 3133578, 3145866, 3154058, 2375680, 2207744, 3108864, 2207744, 2207744, 3133440, 3145728, 3153920, 2375965, 2380061, 2158877, 2158877, 2421021, 2158877, 2449693, 2158877, 2158877, 2158877, 3117341, 2158730, 2158730, 2158730, 2158730, 2158730, 2158730, 2158730, 2158730, 2158730, 2158730, 2158730, 2158730, 3104906, 2158730, 2158730, 2158730, 2158730, 2158730, 2158730, 2158877, 2498845, 2158877, 2158877, 0, 2158877, 2158877, 2568477, 2158877, 2593053, 2625821, 2158877, 2158877, 2674973, 0, 0, 0, 0, 97, 97, 1480, 97, 97, 97, 97, 97, 1485, 97, 97, 97, 0, 97, 97, 1729, 97, 1731, 97, 97, 97, 97, 97, 97, 97, 311, 97, 97, 97, 97, 97, 97, 97, 97, 1520, 97, 97, 1523, 97, 97, 1526, 97, 2736413, 2158877, 2158877, 0, 2158877, 2912541, 2158877, 2158877, 2158877, 2158877, 2158877, 2158877, 2158877, 3109149, 2158877, 2158877, 3014941, 2158877, 2158877, 3051805, 2158877, 2158877, 3100957, 2158877, 2158877, 3121437, 2158877, 2158877, 2158877, 3150109, 3133725, 3146013, 3154205, 2158730, 2408586, 2416778, 2158730, 2465930, 2158730, 2158730, 2158730, 2158730, 2158730, 2158730, 2158730, 2158730, 3018890, 2158730, 3043466, 2158730, 2158730, 2158730, 2158730, 3080330, 2633866, 2658442, 2740362, 2744458, 2834570, 2949258, 2158730, 2986122, 2158730, 2998410, 2158730, 2158730, 2158730, 3129482, 2207744, 2408448, 2949120, 2207744, 2985984, 2207744, 2998272, 2207744, 2207744, 2207744, 3129344, 2158877, 2408733, 2416925, 2158877, 2466077, 2158877, 2158877, 3170589, 3174685, 2158877, 0, 0, 0, 2158730, 2158730, 2158730, 2158730, 2158730, 2424970, 2158730, 2158730, 2158730, 2158730, 2707594, 2732170, 2158730, 2158730, 2158730, 2822282, 2826378, 2158730, 2896010, 2158730, 2158730, 2924682, 2949405, 2158877, 2986269, 2158877, 2998557, 2158877, 2158877, 2158877, 3129629, 2158730, 2158730, 2478218, 2158730, 2158730, 2158730, 2535562, 2543754, 2158730, 2158730, 2158730, 2158730, 2158730, 2158730, 2158730, 2158730, 2158730, 3117194, 2207744, 2207744, 2478080, 2207744, 2207744, 2207744, 2207744, 2781184, 2793472, 2207744, 2818048, 2207744, 2207744, 2207744, 2207744, 2207744, 2207744, 2207744, 2207744, 2207744, 2207744, 2207744, 2207744, 0, 541, 0, 543, 2207744, 2535424, 2543616, 2207744, 2207744, 2207744, 2207744, 2207744, 2207744, 2207744, 2207744, 2207744, 3117056, 2158877, 2158877, 2478365, 0, 2158877, 2158877, 2158877, 2158877, 2158877, 2158877, 2158730, 2158730, 2482314, 2158730, 2158730, 2158730, 2158730, 2158730, 2158730, 2207744, 2207744, 2207744, 2387968, 2207744, 2207744, 2207744, 2207744, 2207744, 2207744, 2207744, 2207744, 2207744, 2207744, 2207744, 2207744, 0, 542, 0, 544, 2158730, 2158730, 2158730, 2990218, 2158730, 2158730, 2207744, 2207744, 2482176, 2207744, 2207744, 2207744, 2207744, 2207744, 2207744, 2207744, 0, 0, 0, 0, 0, 0, 2162688, 135, 0, 2207744, 2207744, 2990080, 2207744, 2207744, 2158877, 2158877, 2482461, 2158877, 2158877, 0, 0, 0, 2158877, 2158877, 2158877, 2158877, 2158877, 2158730, 2429066, 2158730, 2515082, 2158730, 2588810, 2158730, 2838666, 2158730, 2158730, 2158730, 3010698, 2207744, 2428928, 2207744, 2514944, 2207744, 2588672, 2207744, 2838528, 2207744, 2207744, 2207744, 3010560, 2158877, 2429213, 2158877, 2515229, 0, 0, 2158877, 2588957, 2158877, 0, 2838813, 2158877, 2158877, 2158877, 3010845, 2158730, 2506890, 2158730, 2158730, 2158730, 2748554, 2756746, 2777226, 2801802, 2158730, 2158730, 2158730, 2863242, 2891914, 2158730, 2158730, 2158730, 2158730, 2158730, 2158730, 2564234, 2158730, 2158730, 2158730, 2158730, 2158730, 2597002, 2158730, 2158730, 2158730, 3006464, 2384157, 0, 0, 2158877, 2158877, 2158877, 2158877, 3006749, 2158730, 2637962, 2953354, 2158730, 2207744, 2637824, 2953216, 2207744, 0, 0, 2158877, 2638109, 2953501, 2158877, 2539658, 2158730, 2539520, 2207744, 0, 0, 2539805, 2158877, 2158730, 2158730, 2158730, 2977930, 2158730, 2158730, 2158730, 2158730, 3039370, 2158730, 2158730, 2158730, 2158730, 2158730, 2158730, 3158154, 2207744, 0, 2158877, 2158730, 2207744, 0, 2158877, 2158730, 2207744, 0, 2158877, 2965642, 2965504, 2965789, 0, 0, 0, 0, 1315, 0, 0, 0, 0, 97, 97, 97, 97, 97, 97, 97, 1484, 97, 97, 97, 97, 2158592, 18, 0, 122880, 0, 0, 0, 77824, 0, 2211840, 0, 0, 0, 0, 2158592, 0, 356, 0, 0, 0, 0, 0, 0, 28809, 0, 139, 45, 45, 45, 45, 45, 45, 1751, 45, 45, 45, 45, 45, 45, 45, 67, 67, 1427, 67, 67, 67, 67, 67, 1432, 67, 67, 67, 3104768, 2158592, 2158592, 2158592, 2158592, 2158592, 2158592, 2158592, 2158592, 2158592, 2158592, 2158592, 2158592, 122880, 0, 0, 0, 0, 1315, 0, 0, 0, 0, 97, 97, 97, 97, 97, 97, 1322, 550, 0, 286, 0, 2158592, 2158592, 2158592, 2158592, 2158592, 2424832, 2158592, 2158592, 2158592, 2158592, 2158592, 2158592, 0, 40976, 0, 18, 18, 24, 24, 4329472, 27, 27, 2207744, 2207744, 2977792, 2207744, 2207744, 2207744, 2207744, 3039232, 2207744, 2207744, 2207744, 2207744, 2207744, 2207744, 3158016, 542, 0, 0, 0, 542, 0, 544, 0, 0, 0, 544, 0, 550, 0, 0, 0, 0, 0, 97, 97, 1610, 97, 97, 97, 97, 97, 97, 97, 97, 898, 97, 97, 97, 97, 97, 97, 97, 0, 94242, 0, 0, 0, 2211840, 0, 0, 0, 0, 0, 0, 2158592, 2158592, 2158592, 2158592, 2158592, 2424832, 2158592, 2158592, 2158592, 2158592, 2158592, 2158592, 40976, 18, 36884, 45078, 24, 27, 90143, 94242, 237568, 102439, 106538, 98347, 0, 0, 20480, 40976, 18, 36884, 45078, 24, 27, 90143, 94242, 0, 102439, 106538, 98347, 0, 0, 192512, 40976, 18, 36884, 45078, 24, 27, 90143, 94242, 0, 102439, 106538, 98347, 0, 0, 94, 40976, 18, 36884, 45078, 24, 27, 90143, 94242, 0, 102439, 106538, 98347, 0, 0, 96, 40976, 18, 36884, 45078, 24, 27, 90143, 94242, 0, 102439, 106538, 98347, 0, 0, 12378, 40976, 18, 18, 36884, 0, 45078, 0, 24, 24, 24, 126, 126, 126, 126, 90143, 0, 0, 2170880, 0, 0, 0, 0, 2158592, 2158592, 2158592, 2387968, 2158592, 2158592, 2158592, 2158592, 2158592, 2158592, 20480, 40976, 0, 18, 18, 24, 24, 27, 27, 27, 40976, 18, 36884, 45078, 24, 27, 90143, 94242, 241664, 102439, 106538, 98347, 0, 0, 20568, 40976, 18, 36884, 45078, 24, 27, 90143, 94242, 0, 102439, 106538, 98347, 0, 0, 200797, 40976, 18, 36884, 45078, 24, 27, 90143, 94242, 0, 102439, 106538, 98347, 0, 0, 20480, 40976, 18, 36884, 45078, 24, 27, 90143, 94242, 0, 0, 0, 44, 0, 0, 20575, 40976, 18, 36884, 45078, 24, 27, 90143, 94242, 0, 41, 41, 41, 0, 0, 1126400, 40976, 18, 36884, 45078, 24, 27, 90143, 94242, 0, 102439, 106538, 98347, 0, 0, 0, 40976, 18, 36884, 45078, 24, 27, 90143, 94242, 0, 102439, 106538, 98347, 0, 0, 89, 40976, 18, 18, 36884, 0, 45078, 0, 24, 24, 24, 27, 131201, 27, 27, 90143, 0, 0, 2170880, 0, 0, 550, 0, 2158592, 2158592, 2158592, 2387968, 2158592, 2158592, 2158592, 2158592, 2158592, 2158592, 2158592, 2158592, 2158592, 2158592, 2158592, 2158592, 2441216, 2445312, 2158592, 2158592, 2158592, 2158592, 2158592, 0, 94242, 0, 0, 208896, 2211840, 102439, 0, 0, 106538, 98347, 0, 2158592, 2158592, 2158592, 2158592, 2158592, 3186688, 2158592, 0, 0, 0, 0, 0, 0, 0, 0, 2367488, 32768, 0, 0, 0, 0, 0, 0, 2158592, 2158592, 2158592, 2158592, 2158592, 2158592, 2158592, 2158592, 2158592, 2433024, 2158592, 2453504, 2461696, 2158592, 2158592, 2158592, 2158592, 2158592, 2158592, 2510848, 2158592, 2158592, 2158592, 2158592, 40976, 18, 36884, 245783, 24, 27, 90143, 94242, 0, 102439, 106538, 98347, 0, 0, 20480, 40976, 18, 36884, 45078, 24, 27, 90143, 94242, 0, 102439, 106538, 98347, 0, 0, 221184, 40976, 18, 36884, 45078, 24, 27, 90143, 94242, 0, 102439, 106538, 98347, 0, 0, 180224, 40976, 18, 18, 36884, 155648, 45078, 0, 24, 24, 217088, 27, 27, 27, 217088, 90143, 0, 0, 2170880, 0, 0, 828, 0, 2158592, 2158592, 2158592, 2387968, 2158592, 2158592, 2158592, 2158592, 2158592, 2158592, 2207744, 2207744, 2207744, 2387968, 2207744, 2207744, 2207744, 2207744, 2207744, 2207744, 2207744, 0, 0, 0, 0, 0, 0, 2162688, 233472, 0, 0, 94242, 0, 0, 0, 38, 102439, 0, 0, 106538, 98347, 28809, 45, 45, 45, 45, 45, 718, 45, 45, 45, 45, 45, 45, 45, 45, 45, 727, 131427, 0, 0, 0, 0, 362, 0, 365, 28809, 367, 139, 45, 45, 45, 45, 45, 45, 1808, 45, 45, 45, 45, 67, 67, 67, 67, 67, 67, 67, 97, 97, 0, 0, 97, 67, 24850, 24850, 12564, 12564, 0, 57889, 0, 0, 0, 53531, 53531, 367, 286, 97, 97, 0, 0, 97, 97, 97, 97, 97, 97, 0, 1788, 97, 97, 0, 97, 2024, 97, 45, 45, 45, 45, 45, 45, 67, 67, 67, 67, 67, 67, 67, 67, 235, 67, 67, 67, 67, 67, 57889, 0, 0, 54074, 54074, 550, 0, 97, 97, 97, 97, 97, 97, 97, 97, 97, 45, 1798, 45, 45, 1800, 45, 45, 0, 1472, 0, 0, 0, 0, 0, 1474, 0, 0, 0, 0, 0, 1476, 0, 0, 0, 0, 1315, 0, 0, 0, 0, 97, 97, 97, 97, 1320, 97, 97, 0, 0, 97, 97, 97, 97, 97, 97, 1787, 0, 97, 97, 0, 97, 97, 97, 45, 45, 45, 45, 2029, 45, 67, 67, 67, 67, 2033, 1527, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 663, 67, 24850, 24850, 12564, 12564, 0, 57889, 281, 0, 0, 53531, 53531, 367, 286, 97, 97, 0, 0, 97, 97, 97, 97, 1786, 97, 0, 0, 97, 97, 0, 1790, 40976, 19, 36884, 45078, 24, 27, 90143, 94242, 0, 102439, 106538, 98347, 0, 0, 262144, 40976, 18, 36884, 45078, 24, 27, 90143, 94242, 38, 102439, 106538, 98347, 46, 67, 98, 40976, 18, 36884, 45078, 24, 27, 90143, 94242, 38, 102439, 106538, 98347, 45, 67, 97, 40976, 18, 36884, 45078, 24, 27, 90143, 94242, 0, 102439, 106538, 98347, 0, 0, 258048, 40976, 18, 36884, 45078, 24, 27, 90143, 94242, 0, 102439, 106538, 98347, 0, 0, 1122423, 40976, 18, 36884, 45078, 24, 27, 90143, 94242, 0, 1114152, 1114152, 1114152, 0, 0, 1114112, 40976, 18, 36884, 45078, 24, 27, 90143, 94242, 37, 102439, 106538, 98347, 0, 0, 204800, 40976, 18, 36884, 45078, 24, 27, 90143, 94242, 0, 102439, 106538, 98347, 0, 0, 57436, 40976, 18, 36884, 45078, 24, 27, 33, 33, 0, 33, 33, 33, 0, 0, 0, 40976, 18, 18, 36884, 0, 45078, 0, 124, 124, 124, 127, 127, 127, 127, 90143, 0, 0, 2170880, 0, 0, 550, 0, 2158877, 2158877, 2158877, 2388253, 2158877, 2158877, 2158877, 2158877, 2158877, 2781469, 2793757, 2158877, 2818333, 2158877, 2158877, 2158877, 2158877, 2158877, 2158877, 2158877, 2867485, 2158877, 2904349, 2158877, 2158877, 2158877, 2158877, 2158877, 2158877, 2158877, 3096861, 2158877, 2158877, 2158877, 2158877, 2158877, 2158877, 2158877, 2158877, 2158877, 2441501, 2445597, 2158877, 2158877, 2158877, 2158877, 2158877, 40976, 122, 123, 36884, 0, 45078, 0, 24, 24, 24, 27, 27, 27, 27, 90143, 0, 921, 29315, 0, 0, 0, 0, 45, 45, 45, 45, 45, 45, 45, 45, 936, 2158592, 4243810, 0, 0, 0, 0, 0, 0, 0, 2211840, 0, 0, 0, 0, 2158592, 0, 921, 29315, 0, 0, 0, 0, 45, 45, 45, 45, 45, 45, 45, 935, 45, 45, 45, 715, 45, 45, 45, 45, 45, 45, 45, 723, 45, 45, 45, 45, 45, 1182, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 430, 45, 45, 45, 45, 45, 40976, 18, 36884, 45078, 24, 27, 90143, 94242, 38, 102439, 106538, 98347, 47, 68, 99, 40976, 18, 36884, 45078, 24, 27, 90143, 94242, 38, 102439, 106538, 98347, 48, 69, 100, 40976, 18, 36884, 45078, 24, 27, 90143, 94242, 38, 102439, 106538, 98347, 49, 70, 101, 40976, 18, 36884, 45078, 24, 27, 90143, 94242, 38, 102439, 106538, 98347, 50, 71, 102, 40976, 18, 36884, 45078, 24, 27, 90143, 94242, 38, 102439, 106538, 98347, 51, 72, 103, 40976, 18, 36884, 45078, 24, 27, 90143, 94242, 38, 102439, 106538, 98347, 52, 73, 104, 40976, 18, 36884, 45078, 24, 27, 90143, 94242, 38, 102439, 106538, 98347, 53, 74, 105, 40976, 18, 36884, 45078, 24, 27, 90143, 94242, 38, 102439, 106538, 98347, 54, 75, 106, 40976, 18, 36884, 45078, 24, 27, 90143, 94242, 38, 102439, 106538, 98347, 55, 76, 107, 40976, 18, 36884, 45078, 24, 27, 90143, 94242, 38, 102439, 106538, 98347, 56, 77, 108, 40976, 18, 36884, 45078, 24, 27, 90143, 94242, 38, 102439, 106538, 98347, 57, 78, 109, 40976, 18, 36884, 45078, 24, 27, 90143, 94242, 38, 102439, 106538, 98347, 58, 79, 110, 40976, 18, 36884, 45078, 24, 27, 90143, 94242, 38, 102439, 106538, 98347, 59, 80, 111, 40976, 18, 36884, 45078, 24, 27, 90143, 94242, 38, 102439, 106538, 98347, 60, 81, 112, 40976, 18, 36884, 45078, 24, 27, 90143, 94242, 38, 102439, 106538, 98347, 61, 82, 113, 40976, 18, 36884, 45078, 24, 27, 90143, 94242, 38, 102439, 106538, 98347, 62, 83, 114, 40976, 18, 36884, 45078, 24, 27, 90143, 94242, 38, 102439, 106538, 98347, 63, 84, 115, 40976, 18, 36884, 45078, 24, 27, 90143, 94242, 38, 102439, 106538, 98347, 64, 85, 116, 40976, 18, 36884, 45078, 24, 27, 90143, 94242, 38, 102439, 106538, 98347, 65, 86, 117, 40976, 18, 36884, 45078, 24, 27, 90143, 94242, 38, 102439, 106538, 98347, 66, 87, 118, 40976, 18, 36884, 45078, 24, 27, 90143, 94242, 118820, 102439, 106538, 98347, 118820, 118820, 118820, 40976, 18, 18, 0, 0, 45078, 0, 24, 24, 24, 27, 27, 27, 27, 90143, 0, 0, 1314, 0, 0, 0, 0, 0, 0, 97, 97, 97, 97, 97, 1321, 97, 18, 131427, 0, 0, 0, 0, 0, 0, 362, 0, 0, 365, 0, 367, 0, 0, 1315, 0, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 1360, 97, 97, 131, 94242, 0, 0, 0, 38, 102439, 0, 0, 106538, 98347, 28809, 45, 45, 45, 145, 149, 45, 45, 45, 45, 45, 174, 45, 179, 45, 185, 45, 188, 45, 45, 202, 67, 255, 67, 67, 269, 67, 67, 0, 24850, 12564, 0, 0, 0, 0, 28809, 53531, 97, 97, 97, 292, 296, 97, 97, 97, 97, 97, 321, 97, 326, 97, 332, 97, 18, 131427, 0, 0, 0, 0, 0, 0, 362, 0, 0, 365, 29315, 367, 646, 335, 97, 97, 349, 97, 97, 0, 40976, 0, 18, 18, 24, 24, 27, 27, 27, 437, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 67, 67, 67, 67, 67, 67, 67, 67, 523, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 511, 67, 67, 67, 97, 97, 97, 620, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 1501, 1502, 97, 793, 67, 67, 796, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 808, 67, 0, 0, 97, 97, 97, 97, 45, 45, 67, 67, 0, 0, 97, 97, 2052, 67, 67, 67, 67, 813, 67, 67, 67, 67, 67, 67, 67, 25398, 542, 13112, 544, 57889, 0, 0, 54074, 54074, 550, 830, 97, 97, 97, 97, 97, 97, 97, 97, 97, 315, 97, 97, 97, 97, 97, 97, 841, 97, 97, 97, 97, 97, 97, 97, 97, 97, 854, 97, 97, 97, 97, 97, 97, 589, 97, 97, 97, 97, 97, 97, 97, 97, 97, 867, 97, 97, 97, 97, 97, 97, 97, 891, 97, 97, 894, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 906, 45, 937, 45, 45, 940, 45, 45, 45, 45, 45, 45, 948, 45, 45, 45, 45, 45, 734, 735, 67, 737, 67, 738, 67, 740, 67, 67, 67, 45, 967, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 435, 45, 45, 45, 980, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 415, 45, 45, 67, 67, 1024, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 97, 97, 97, 67, 67, 67, 67, 67, 25398, 1081, 13112, 1085, 54074, 1089, 0, 0, 0, 0, 0, 0, 363, 0, 28809, 0, 139, 45, 45, 45, 45, 45, 45, 1674, 45, 45, 45, 45, 45, 45, 45, 45, 67, 1913, 67, 1914, 67, 67, 67, 1918, 67, 67, 97, 97, 97, 97, 1118, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 630, 97, 97, 97, 97, 97, 1169, 97, 97, 97, 97, 97, 0, 921, 0, 1175, 0, 0, 0, 0, 45, 45, 45, 45, 45, 45, 1534, 45, 45, 45, 45, 45, 1538, 45, 45, 45, 45, 1233, 45, 45, 45, 45, 45, 45, 67, 67, 67, 67, 67, 67, 67, 67, 742, 67, 45, 45, 1191, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 454, 67, 67, 67, 67, 1243, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 1251, 67, 0, 0, 97, 97, 97, 97, 45, 45, 67, 67, 2050, 0, 97, 97, 45, 45, 45, 732, 45, 45, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 97, 97, 67, 67, 67, 1284, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 772, 67, 67, 67, 1293, 67, 67, 67, 67, 67, 67, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 368, 2158592, 2158592, 2158592, 2404352, 2412544, 1323, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 1331, 97, 97, 97, 0, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 1737, 97, 1364, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 1373, 97, 18, 131427, 0, 0, 0, 0, 0, 0, 362, 0, 0, 365, 29315, 367, 647, 45, 45, 1387, 45, 45, 1391, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 410, 45, 45, 45, 45, 45, 1400, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 1407, 45, 45, 45, 45, 45, 941, 45, 943, 45, 45, 45, 45, 45, 45, 951, 45, 67, 1438, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 1447, 67, 67, 67, 67, 67, 67, 799, 67, 67, 67, 804, 67, 67, 67, 67, 67, 67, 67, 1443, 67, 67, 1446, 67, 67, 67, 67, 67, 67, 67, 1298, 0, 0, 0, 1304, 0, 0, 0, 1310, 97, 1491, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 1500, 97, 97, 97, 0, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 1736, 97, 45, 45, 1541, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 677, 45, 45, 67, 1581, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 791, 792, 67, 67, 67, 67, 1598, 67, 1600, 67, 67, 67, 67, 67, 67, 67, 67, 1472, 97, 97, 97, 1727, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 1513, 97, 97, 67, 67, 97, 1879, 97, 1881, 97, 0, 1884, 0, 97, 97, 97, 97, 0, 0, 97, 97, 97, 97, 97, 0, 0, 0, 1842, 97, 97, 67, 67, 67, 67, 67, 97, 97, 97, 97, 1928, 0, 0, 0, 97, 97, 97, 97, 97, 97, 45, 45, 45, 45, 45, 1903, 45, 45, 45, 67, 67, 67, 67, 97, 97, 97, 97, 1971, 0, 0, 97, 97, 97, 97, 0, 97, 97, 97, 97, 97, 97, 97, 97, 97, 0, 0, 0, 45, 45, 45, 1381, 45, 45, 45, 45, 1976, 97, 97, 97, 97, 97, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 1747, 809, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 25398, 542, 13112, 544, 97, 907, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 638, 0, 0, 0, 0, 1478, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 1150, 97, 97, 97, 97, 67, 67, 67, 67, 1244, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 477, 67, 67, 67, 67, 67, 67, 1294, 67, 67, 67, 67, 0, 0, 0, 0, 0, 0, 0, 0, 0, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 1324, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 0, 0, 0, 1374, 97, 97, 97, 97, 0, 1175, 0, 45, 45, 45, 45, 45, 45, 45, 45, 945, 45, 45, 45, 45, 45, 45, 45, 45, 1908, 45, 45, 1910, 45, 67, 67, 67, 67, 67, 67, 67, 67, 1919, 67, 0, 0, 97, 97, 97, 97, 45, 2048, 67, 2049, 0, 0, 97, 2051, 45, 45, 45, 939, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 397, 45, 45, 45, 1921, 67, 67, 1923, 67, 97, 97, 97, 97, 97, 0, 0, 0, 97, 97, 97, 97, 97, 97, 45, 45, 45, 45, 1947, 45, 1935, 0, 0, 0, 97, 1939, 97, 97, 1941, 97, 45, 45, 45, 45, 45, 45, 382, 389, 45, 45, 45, 45, 45, 45, 45, 45, 1810, 45, 45, 1812, 67, 67, 67, 67, 67, 256, 67, 67, 67, 67, 67, 0, 24850, 12564, 0, 0, 0, 0, 28809, 53531, 336, 97, 97, 97, 97, 97, 0, 40976, 0, 18, 18, 24, 24, 27, 27, 27, 131427, 0, 0, 0, 0, 362, 0, 365, 28809, 367, 139, 45, 45, 371, 373, 45, 45, 45, 955, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 413, 45, 45, 45, 457, 459, 67, 67, 67, 67, 67, 67, 67, 67, 473, 67, 478, 67, 67, 482, 67, 67, 485, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 97, 1828, 97, 554, 556, 97, 97, 97, 97, 97, 97, 97, 97, 570, 97, 575, 97, 97, 579, 97, 97, 582, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 330, 97, 97, 67, 746, 67, 67, 67, 67, 67, 67, 67, 67, 67, 758, 67, 67, 67, 67, 67, 67, 67, 1587, 67, 1589, 67, 67, 67, 67, 67, 67, 67, 97, 1706, 97, 97, 97, 1709, 97, 97, 97, 97, 97, 844, 97, 97, 97, 97, 97, 97, 97, 97, 97, 856, 97, 97, 97, 0, 97, 97, 97, 97, 97, 97, 97, 97, 1735, 97, 97, 97, 0, 97, 97, 97, 97, 97, 97, 97, 1642, 97, 1644, 97, 97, 890, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 0, 67, 67, 67, 67, 1065, 1066, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 532, 67, 67, 67, 67, 67, 67, 67, 1451, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 496, 67, 67, 97, 97, 1505, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 593, 97, 97, 0, 1474, 0, 1476, 0, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 1617, 97, 97, 1635, 0, 1637, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 885, 97, 97, 97, 97, 67, 67, 1704, 67, 67, 67, 67, 97, 97, 97, 97, 97, 97, 97, 97, 97, 565, 572, 97, 97, 97, 97, 97, 97, 97, 97, 1832, 0, 97, 97, 97, 97, 97, 0, 0, 0, 97, 97, 97, 97, 97, 97, 45, 45, 45, 1946, 45, 45, 67, 67, 67, 67, 67, 97, 1926, 97, 1927, 97, 0, 0, 0, 97, 97, 1934, 2043, 0, 0, 97, 97, 97, 2047, 45, 45, 67, 67, 0, 1832, 97, 97, 45, 45, 45, 981, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 1227, 45, 45, 45, 131427, 0, 0, 0, 0, 362, 0, 365, 28809, 367, 139, 45, 45, 372, 45, 45, 45, 45, 1661, 1662, 45, 45, 45, 45, 45, 1666, 45, 45, 45, 45, 45, 1673, 45, 1675, 45, 45, 45, 45, 45, 45, 45, 67, 1426, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 1275, 67, 67, 67, 67, 67, 45, 418, 45, 45, 420, 45, 45, 423, 45, 45, 45, 45, 45, 45, 45, 45, 959, 45, 45, 962, 45, 45, 45, 45, 458, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 483, 67, 67, 67, 67, 504, 67, 67, 506, 67, 67, 509, 67, 67, 67, 67, 67, 67, 67, 753, 67, 67, 67, 67, 67, 67, 67, 67, 467, 67, 67, 67, 67, 67, 67, 67, 555, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 580, 97, 97, 97, 97, 601, 97, 97, 603, 97, 97, 606, 97, 97, 97, 97, 97, 97, 848, 97, 97, 97, 97, 97, 97, 97, 97, 97, 1498, 97, 97, 97, 97, 97, 97, 45, 45, 714, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 989, 990, 45, 67, 67, 67, 67, 67, 1011, 67, 67, 67, 67, 1015, 67, 67, 67, 67, 67, 67, 67, 768, 67, 67, 67, 67, 67, 67, 67, 67, 769, 67, 67, 67, 67, 67, 67, 67, 45, 45, 1179, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 1003, 1004, 67, 1217, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 728, 67, 1461, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 1034, 67, 97, 1516, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 871, 97, 67, 67, 67, 1705, 67, 67, 67, 97, 97, 97, 97, 97, 97, 97, 97, 97, 567, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 1715, 97, 97, 97, 97, 97, 97, 97, 97, 97, 0, 0, 0, 45, 45, 1380, 45, 45, 45, 45, 45, 67, 67, 97, 97, 97, 97, 97, 0, 0, 0, 97, 1887, 97, 97, 0, 0, 97, 97, 97, 0, 97, 97, 97, 97, 97, 2006, 45, 45, 1907, 45, 45, 45, 45, 45, 67, 67, 67, 67, 67, 67, 67, 67, 67, 1920, 67, 97, 0, 2035, 97, 97, 97, 97, 97, 45, 45, 45, 45, 67, 67, 67, 1428, 67, 67, 67, 67, 67, 67, 1435, 67, 0, 94242, 0, 0, 0, 38, 102439, 0, 0, 106538, 98347, 28809, 45, 45, 45, 146, 45, 152, 45, 45, 165, 45, 175, 45, 180, 45, 45, 187, 190, 195, 45, 203, 254, 257, 262, 67, 270, 67, 67, 0, 24850, 12564, 0, 0, 0, 281, 28809, 53531, 97, 97, 97, 293, 97, 299, 97, 97, 312, 97, 322, 97, 327, 97, 97, 334, 337, 342, 97, 350, 97, 97, 0, 40976, 0, 18, 18, 24, 24, 27, 27, 27, 67, 484, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 499, 97, 581, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 596, 648, 45, 650, 45, 651, 45, 653, 45, 45, 45, 657, 45, 45, 45, 45, 45, 45, 1954, 67, 67, 67, 1958, 67, 67, 67, 67, 67, 67, 67, 783, 67, 67, 67, 788, 67, 67, 67, 67, 680, 45, 45, 45, 45, 45, 45, 45, 45, 688, 689, 691, 45, 45, 45, 45, 45, 983, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 947, 45, 45, 45, 45, 952, 45, 45, 698, 699, 45, 45, 702, 703, 45, 45, 45, 45, 45, 45, 45, 711, 744, 67, 67, 67, 67, 67, 67, 67, 67, 67, 757, 67, 67, 67, 67, 761, 67, 67, 67, 67, 765, 67, 767, 67, 67, 67, 67, 67, 67, 67, 67, 775, 776, 778, 67, 67, 67, 67, 67, 67, 785, 786, 67, 67, 789, 790, 67, 67, 67, 67, 67, 67, 1574, 67, 67, 67, 67, 67, 1578, 67, 67, 67, 67, 67, 67, 1012, 67, 67, 67, 67, 67, 67, 67, 67, 67, 468, 475, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 798, 67, 67, 67, 802, 67, 67, 67, 67, 67, 67, 67, 67, 1588, 67, 67, 67, 67, 67, 67, 67, 0, 24850, 12564, 0, 0, 0, 0, 28809, 53531, 67, 810, 67, 67, 67, 67, 67, 67, 67, 67, 67, 821, 25398, 542, 13112, 544, 57889, 0, 0, 54074, 54074, 550, 0, 833, 97, 835, 97, 836, 97, 838, 97, 97, 0, 0, 97, 97, 97, 1785, 97, 97, 0, 0, 97, 97, 0, 97, 97, 1979, 97, 97, 45, 45, 1983, 45, 1984, 45, 45, 45, 45, 45, 652, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 690, 45, 45, 694, 45, 45, 97, 842, 97, 97, 97, 97, 97, 97, 97, 97, 97, 855, 97, 97, 97, 97, 0, 1717, 1718, 97, 97, 97, 97, 97, 1722, 97, 0, 0, 859, 97, 97, 97, 97, 863, 97, 865, 97, 97, 97, 97, 97, 97, 97, 97, 604, 97, 97, 97, 97, 97, 97, 97, 873, 874, 876, 97, 97, 97, 97, 97, 97, 883, 884, 97, 97, 887, 888, 97, 18, 131427, 0, 0, 0, 0, 0, 0, 362, 225280, 0, 365, 0, 367, 0, 45, 45, 45, 1531, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 1199, 45, 45, 45, 45, 45, 97, 97, 908, 97, 97, 97, 97, 97, 97, 97, 97, 97, 919, 638, 0, 0, 0, 0, 2158877, 2158877, 2158877, 2158877, 2158877, 2425117, 2158877, 2158877, 2158877, 2158877, 2158877, 2158877, 2597149, 2158877, 2158877, 2158877, 2158877, 2158877, 2158877, 2642205, 2158877, 2158877, 2158877, 2158877, 2158877, 3158301, 0, 2375818, 2379914, 2158730, 2158730, 2420874, 2158730, 2449546, 2158730, 2158730, 953, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 965, 978, 45, 45, 45, 45, 45, 45, 985, 45, 45, 45, 45, 45, 45, 45, 45, 971, 45, 45, 45, 45, 45, 45, 45, 67, 67, 67, 67, 67, 1027, 67, 1029, 67, 67, 67, 67, 67, 67, 67, 67, 67, 1455, 67, 67, 67, 67, 67, 67, 67, 1077, 1078, 67, 67, 25398, 0, 13112, 0, 54074, 0, 0, 0, 0, 0, 0, 0, 0, 366, 0, 139, 2158730, 2158730, 2158730, 2404490, 2412682, 1113, 97, 97, 97, 97, 97, 97, 1121, 97, 1123, 97, 97, 97, 97, 97, 97, 0, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 1540, 1155, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 615, 1168, 97, 97, 1171, 1172, 97, 97, 0, 921, 0, 1175, 0, 0, 0, 0, 45, 45, 45, 45, 45, 1533, 45, 45, 45, 45, 45, 45, 45, 45, 45, 1559, 1561, 45, 45, 45, 1564, 45, 1566, 1567, 45, 45, 45, 1219, 45, 45, 45, 45, 45, 45, 45, 1226, 45, 45, 45, 45, 45, 168, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 427, 45, 45, 45, 45, 45, 45, 45, 1231, 45, 45, 45, 45, 45, 45, 45, 45, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 1242, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 1046, 67, 67, 1254, 67, 1256, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 806, 807, 67, 67, 97, 1336, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 1111, 97, 97, 97, 97, 97, 1351, 97, 97, 97, 1354, 97, 97, 97, 1359, 97, 97, 97, 0, 97, 97, 97, 97, 1640, 97, 97, 97, 97, 97, 97, 97, 897, 97, 97, 97, 902, 97, 97, 97, 97, 97, 97, 97, 97, 1366, 97, 97, 97, 97, 97, 97, 97, 1371, 97, 97, 97, 0, 97, 97, 97, 1730, 97, 97, 97, 97, 97, 97, 97, 97, 915, 97, 97, 97, 97, 0, 360, 0, 67, 67, 67, 1440, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 1017, 67, 1019, 67, 67, 67, 67, 67, 1453, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 1459, 97, 97, 97, 1493, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 1525, 97, 97, 97, 97, 97, 97, 1507, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 1514, 67, 67, 67, 67, 1584, 67, 67, 67, 67, 67, 1590, 67, 67, 67, 67, 67, 67, 67, 784, 67, 67, 67, 67, 67, 67, 67, 67, 1055, 67, 67, 67, 67, 1060, 67, 67, 67, 67, 67, 67, 67, 1599, 1601, 67, 67, 67, 1604, 67, 1606, 1607, 67, 1472, 0, 1474, 0, 1476, 0, 97, 97, 97, 97, 97, 97, 1614, 97, 97, 97, 97, 45, 45, 1850, 45, 45, 45, 45, 1855, 45, 45, 45, 45, 45, 1222, 45, 45, 45, 45, 45, 45, 45, 45, 45, 1229, 97, 1618, 97, 97, 97, 97, 97, 97, 97, 1625, 97, 97, 97, 97, 97, 0, 1175, 0, 45, 45, 45, 45, 45, 45, 45, 45, 447, 45, 45, 45, 45, 45, 67, 67, 1633, 97, 97, 0, 97, 97, 97, 97, 97, 97, 97, 97, 1643, 1645, 97, 97, 0, 0, 97, 97, 97, 2002, 97, 97, 97, 97, 97, 45, 45, 45, 45, 45, 1740, 45, 45, 45, 1744, 45, 45, 45, 97, 1648, 97, 1650, 1651, 97, 0, 45, 45, 45, 1654, 45, 45, 45, 45, 45, 169, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 658, 45, 45, 45, 45, 664, 45, 45, 1659, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 1187, 45, 45, 1669, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 67, 1005, 67, 67, 1681, 67, 67, 67, 67, 67, 67, 67, 1686, 67, 67, 67, 67, 67, 67, 67, 800, 67, 67, 67, 67, 67, 67, 67, 67, 67, 1603, 67, 67, 67, 67, 67, 0, 97, 97, 1713, 97, 0, 97, 97, 97, 97, 97, 97, 97, 97, 97, 0, 0, 0, 1378, 45, 45, 45, 45, 45, 45, 45, 408, 45, 45, 45, 45, 45, 45, 45, 45, 1547, 45, 1549, 45, 45, 45, 45, 45, 97, 97, 1780, 0, 97, 97, 97, 97, 97, 97, 0, 0, 97, 97, 0, 97, 97, 97, 45, 45, 2027, 2028, 45, 45, 67, 67, 2031, 2032, 67, 45, 45, 1804, 45, 45, 45, 45, 45, 45, 45, 45, 67, 67, 67, 67, 67, 67, 1917, 67, 67, 67, 67, 67, 67, 67, 1819, 67, 67, 67, 67, 67, 67, 67, 67, 97, 97, 97, 1708, 97, 97, 97, 97, 97, 45, 45, 1862, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 497, 67, 67, 67, 1877, 97, 97, 97, 97, 97, 0, 0, 0, 97, 97, 97, 97, 0, 0, 97, 97, 97, 97, 97, 1839, 0, 0, 97, 97, 97, 97, 1936, 0, 0, 97, 97, 97, 97, 97, 97, 1943, 1944, 1945, 45, 45, 45, 45, 670, 45, 45, 45, 45, 674, 45, 45, 45, 45, 678, 45, 1948, 45, 1950, 45, 45, 45, 45, 1955, 1956, 1957, 67, 67, 67, 1960, 67, 1962, 67, 67, 67, 67, 1967, 1968, 1969, 97, 0, 0, 0, 97, 97, 1974, 97, 0, 1936, 0, 97, 97, 97, 97, 97, 97, 45, 45, 45, 45, 45, 45, 45, 45, 1906, 0, 1977, 97, 97, 97, 97, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 1746, 45, 45, 45, 45, 2011, 67, 67, 2013, 67, 67, 67, 2017, 97, 97, 0, 0, 2021, 97, 8192, 97, 97, 2025, 45, 45, 45, 45, 45, 45, 67, 67, 67, 67, 67, 1916, 67, 67, 67, 67, 0, 94242, 0, 0, 0, 38, 102439, 0, 0, 106538, 98347, 28809, 45, 45, 140, 45, 45, 45, 1180, 45, 45, 45, 45, 1184, 45, 45, 45, 45, 45, 45, 45, 387, 45, 392, 45, 45, 396, 45, 45, 399, 45, 45, 67, 207, 67, 67, 67, 67, 67, 67, 236, 67, 67, 67, 67, 67, 67, 67, 817, 67, 67, 67, 67, 25398, 542, 13112, 544, 97, 97, 287, 97, 97, 97, 97, 97, 97, 316, 97, 97, 97, 97, 97, 97, 0, 45, 45, 45, 45, 45, 45, 45, 1656, 1657, 45, 376, 45, 45, 45, 45, 45, 388, 45, 45, 45, 45, 45, 45, 45, 45, 1406, 45, 45, 45, 45, 45, 45, 45, 67, 67, 67, 67, 462, 67, 67, 67, 67, 67, 474, 67, 67, 67, 67, 67, 67, 67, 1245, 67, 67, 67, 67, 67, 67, 67, 67, 1013, 67, 67, 1016, 67, 67, 67, 67, 97, 97, 97, 97, 559, 97, 97, 97, 97, 97, 571, 97, 97, 97, 97, 97, 97, 896, 97, 97, 97, 900, 97, 97, 97, 97, 97, 97, 912, 914, 97, 97, 97, 97, 97, 0, 0, 0, 45, 45, 45, 45, 45, 45, 45, 45, 391, 45, 45, 45, 45, 45, 45, 45, 45, 713, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 662, 45, 1140, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 636, 67, 67, 1283, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 513, 67, 67, 1363, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 889, 97, 97, 97, 1714, 0, 97, 97, 97, 97, 97, 97, 97, 97, 97, 0, 0, 926, 45, 45, 45, 45, 45, 45, 45, 45, 672, 45, 45, 45, 45, 45, 45, 45, 45, 686, 45, 45, 45, 45, 45, 45, 45, 45, 944, 45, 45, 45, 45, 45, 45, 45, 45, 1676, 45, 45, 45, 45, 45, 45, 67, 97, 97, 97, 1833, 0, 97, 97, 97, 97, 97, 0, 0, 0, 97, 97, 97, 97, 97, 97, 45, 45, 45, 45, 1902, 45, 45, 45, 45, 45, 957, 45, 45, 45, 45, 961, 45, 963, 45, 45, 45, 67, 97, 2034, 0, 97, 97, 97, 97, 97, 2040, 45, 45, 45, 2042, 67, 67, 67, 67, 67, 67, 1586, 67, 67, 67, 67, 67, 67, 67, 67, 67, 469, 67, 67, 67, 67, 67, 67, 132, 94242, 0, 0, 0, 38, 102439, 0, 0, 106538, 98347, 28809, 45, 45, 45, 45, 45, 1414, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 428, 45, 45, 45, 45, 45, 57889, 0, 0, 54074, 54074, 550, 831, 97, 97, 97, 97, 97, 97, 97, 97, 97, 568, 97, 97, 97, 97, 578, 97, 45, 45, 968, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 1228, 45, 45, 67, 67, 67, 67, 67, 25398, 1082, 13112, 1086, 54074, 1090, 0, 0, 0, 0, 0, 0, 364, 0, 0, 0, 139, 2158592, 2158592, 2158592, 2404352, 2412544, 67, 67, 67, 67, 1464, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 510, 67, 67, 67, 67, 97, 97, 97, 97, 1519, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 918, 97, 0, 0, 0, 0, 1528, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 976, 45, 1554, 45, 45, 45, 45, 45, 45, 45, 45, 1562, 45, 45, 1565, 45, 45, 45, 45, 683, 45, 45, 45, 687, 45, 45, 692, 45, 45, 45, 45, 45, 1953, 45, 67, 67, 67, 67, 67, 67, 67, 67, 67, 1014, 67, 67, 67, 67, 67, 67, 1568, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 0, 67, 67, 67, 67, 67, 1585, 67, 67, 67, 67, 67, 67, 67, 67, 67, 1594, 97, 97, 1649, 97, 97, 97, 0, 45, 45, 1653, 45, 45, 45, 45, 45, 45, 383, 45, 45, 45, 45, 45, 45, 45, 45, 45, 986, 45, 45, 45, 45, 45, 45, 45, 45, 1670, 45, 1672, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 67, 736, 67, 67, 67, 67, 67, 741, 67, 67, 67, 1680, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 1074, 67, 67, 67, 1692, 67, 67, 67, 67, 67, 67, 67, 1697, 67, 1699, 67, 67, 67, 67, 67, 67, 1041, 67, 67, 67, 67, 67, 67, 67, 67, 67, 1044, 67, 67, 67, 67, 67, 67, 67, 1769, 67, 67, 67, 67, 67, 67, 67, 97, 97, 97, 97, 97, 97, 97, 624, 97, 97, 97, 97, 97, 97, 634, 97, 97, 1792, 97, 97, 97, 97, 97, 97, 97, 45, 45, 45, 45, 45, 45, 45, 958, 45, 45, 45, 45, 45, 45, 964, 45, 150, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 977, 204, 45, 67, 67, 67, 217, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 787, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 271, 67, 0, 24850, 12564, 0, 0, 0, 0, 28809, 53531, 97, 97, 97, 97, 297, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 1108, 97, 97, 97, 97, 97, 97, 97, 97, 351, 97, 0, 40976, 0, 18, 18, 24, 24, 27, 27, 27, 45, 45, 938, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 1398, 45, 45, 45, 153, 45, 161, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 660, 661, 45, 45, 205, 45, 67, 67, 67, 67, 220, 67, 228, 67, 67, 67, 67, 67, 67, 67, 0, 0, 0, 1302, 0, 0, 0, 1308, 0, 67, 67, 67, 67, 67, 272, 67, 0, 24850, 12564, 0, 0, 0, 0, 28809, 53531, 97, 97, 97, 97, 352, 97, 0, 40976, 0, 18, 18, 24, 24, 27, 27, 27, 45, 439, 45, 45, 45, 45, 45, 445, 45, 45, 45, 452, 45, 45, 67, 67, 212, 216, 67, 67, 67, 67, 67, 241, 67, 246, 67, 252, 67, 67, 486, 67, 67, 67, 67, 67, 67, 67, 494, 67, 67, 67, 67, 67, 67, 67, 1272, 67, 67, 67, 67, 67, 67, 67, 67, 507, 67, 67, 67, 67, 67, 67, 67, 67, 521, 67, 67, 525, 67, 67, 67, 67, 67, 531, 67, 67, 67, 538, 67, 0, 0, 2046, 97, 97, 97, 45, 45, 67, 67, 0, 0, 97, 97, 45, 45, 45, 1192, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 1418, 45, 45, 1421, 97, 97, 583, 97, 97, 97, 97, 97, 97, 97, 591, 97, 97, 97, 97, 97, 97, 913, 97, 97, 97, 97, 97, 97, 0, 0, 0, 45, 45, 45, 45, 45, 45, 45, 1384, 97, 618, 97, 97, 622, 97, 97, 97, 97, 97, 628, 97, 97, 97, 635, 97, 18, 131427, 0, 0, 0, 639, 0, 132, 362, 0, 0, 365, 29315, 367, 0, 921, 29315, 0, 0, 0, 0, 45, 45, 45, 45, 932, 45, 45, 45, 45, 45, 1544, 45, 45, 45, 45, 45, 1550, 45, 45, 45, 45, 45, 1194, 45, 1196, 45, 45, 45, 45, 45, 45, 45, 45, 999, 45, 45, 45, 45, 45, 67, 67, 45, 45, 667, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 1408, 45, 45, 45, 696, 45, 45, 45, 701, 45, 45, 45, 45, 45, 45, 45, 45, 710, 45, 45, 45, 1220, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 194, 45, 45, 45, 729, 45, 45, 45, 45, 45, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 797, 67, 67, 67, 67, 67, 67, 805, 67, 67, 67, 67, 67, 67, 67, 1695, 67, 67, 67, 67, 67, 1700, 67, 1702, 67, 67, 67, 67, 67, 814, 816, 67, 67, 67, 67, 67, 25398, 542, 13112, 544, 67, 67, 1008, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 1020, 67, 0, 97, 45, 67, 0, 97, 45, 67, 0, 97, 45, 67, 97, 0, 0, 97, 97, 97, 97, 97, 45, 45, 45, 45, 67, 67, 67, 67, 1429, 67, 1430, 67, 67, 67, 67, 67, 1062, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 518, 1076, 67, 67, 67, 67, 25398, 0, 13112, 0, 54074, 0, 0, 0, 0, 0, 0, 0, 0, 28809, 0, 139, 45, 45, 45, 45, 45, 97, 97, 97, 97, 1102, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 1124, 97, 1126, 97, 97, 1114, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 1112, 97, 97, 1156, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 594, 97, 97, 97, 97, 1170, 97, 97, 97, 97, 0, 921, 0, 0, 0, 0, 0, 0, 45, 45, 45, 45, 1532, 45, 45, 45, 45, 1536, 45, 45, 45, 45, 45, 172, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 706, 45, 45, 709, 45, 45, 1177, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 1202, 45, 1204, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 1215, 45, 45, 45, 1232, 45, 45, 45, 45, 45, 45, 45, 67, 1237, 67, 67, 67, 67, 67, 67, 1259, 67, 67, 67, 67, 67, 67, 1264, 67, 67, 67, 1282, 67, 67, 67, 67, 67, 67, 67, 67, 67, 1289, 67, 67, 67, 1292, 97, 97, 97, 97, 1339, 97, 97, 97, 97, 97, 97, 1344, 97, 97, 97, 97, 45, 1849, 45, 1851, 45, 45, 45, 45, 45, 45, 45, 45, 721, 45, 45, 45, 45, 45, 726, 45, 1385, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 1188, 45, 45, 1401, 1402, 45, 45, 45, 45, 1405, 45, 45, 45, 45, 45, 45, 45, 45, 1752, 45, 45, 45, 45, 45, 67, 67, 1410, 45, 45, 45, 1413, 45, 1415, 45, 45, 45, 45, 45, 45, 1419, 45, 45, 45, 45, 1806, 45, 45, 45, 45, 45, 45, 67, 67, 67, 67, 67, 67, 67, 97, 97, 2019, 0, 97, 67, 67, 67, 1452, 67, 67, 67, 67, 67, 67, 67, 67, 1457, 67, 67, 67, 67, 67, 67, 1271, 67, 67, 67, 1274, 67, 67, 67, 1279, 67, 1460, 67, 1462, 67, 67, 67, 67, 67, 67, 1466, 67, 67, 67, 67, 67, 67, 67, 67, 1602, 67, 67, 1605, 67, 67, 67, 0, 97, 97, 97, 1506, 97, 97, 97, 97, 97, 97, 97, 97, 1512, 97, 97, 97, 0, 1728, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 901, 97, 97, 97, 97, 1515, 97, 1517, 97, 97, 97, 97, 97, 97, 1521, 97, 97, 97, 97, 97, 97, 0, 45, 1652, 45, 45, 45, 1655, 45, 45, 45, 45, 45, 1542, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 1552, 1553, 45, 45, 45, 1556, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 693, 45, 45, 45, 67, 67, 67, 67, 1572, 67, 67, 67, 67, 1576, 67, 67, 67, 67, 67, 67, 67, 67, 1685, 67, 67, 67, 67, 67, 67, 67, 67, 1465, 67, 67, 1468, 67, 67, 1471, 67, 67, 1582, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 1580, 67, 67, 1596, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 0, 542, 0, 544, 67, 67, 67, 67, 1759, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 533, 67, 67, 67, 67, 67, 67, 67, 1770, 67, 67, 67, 67, 67, 97, 97, 97, 97, 97, 97, 1777, 97, 97, 97, 1793, 97, 97, 97, 97, 97, 45, 45, 45, 45, 45, 45, 45, 998, 45, 45, 1001, 1002, 45, 45, 67, 67, 45, 1861, 45, 67, 67, 67, 67, 67, 67, 67, 67, 1871, 67, 1873, 1874, 67, 0, 97, 45, 67, 0, 97, 45, 67, 16384, 97, 45, 67, 97, 0, 0, 0, 1473, 0, 1082, 0, 0, 0, 1475, 0, 1086, 0, 0, 0, 1477, 1876, 67, 97, 97, 97, 97, 97, 1883, 0, 1885, 97, 97, 97, 1889, 0, 0, 0, 286, 0, 0, 0, 286, 0, 2367488, 2158592, 2158592, 2158592, 2158592, 2158592, 2158592, 0, 40976, 0, 18, 18, 24, 24, 126, 126, 126, 2053, 0, 2055, 45, 67, 0, 97, 45, 67, 0, 97, 45, 67, 97, 0, 0, 97, 97, 97, 2039, 97, 45, 45, 45, 45, 67, 67, 67, 67, 67, 226, 67, 67, 67, 67, 67, 67, 67, 67, 1246, 67, 67, 1249, 1250, 67, 67, 67, 132, 94242, 0, 0, 0, 38, 102439, 0, 0, 106538, 98347, 28809, 45, 45, 141, 45, 45, 45, 1403, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 1186, 45, 45, 1189, 45, 45, 155, 45, 45, 45, 45, 45, 45, 45, 45, 45, 191, 45, 45, 45, 45, 700, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 1753, 45, 45, 45, 67, 67, 45, 45, 67, 208, 67, 67, 67, 222, 67, 67, 67, 67, 67, 67, 67, 67, 67, 1764, 67, 67, 67, 67, 67, 67, 67, 258, 67, 67, 67, 67, 67, 0, 24850, 12564, 0, 0, 0, 0, 28809, 53531, 97, 97, 288, 97, 97, 97, 302, 97, 97, 97, 97, 97, 97, 97, 97, 97, 627, 97, 97, 97, 97, 97, 97, 338, 97, 97, 97, 97, 97, 0, 40976, 0, 18, 18, 24, 24, 27, 27, 27, 131427, 0, 0, 0, 0, 362, 0, 365, 28809, 367, 139, 45, 370, 45, 45, 45, 45, 716, 45, 45, 45, 45, 45, 722, 45, 45, 45, 45, 45, 45, 1912, 67, 67, 67, 67, 67, 67, 67, 67, 67, 819, 67, 67, 25398, 542, 13112, 544, 45, 403, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 1409, 45, 67, 67, 67, 67, 489, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 771, 67, 67, 67, 67, 520, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 534, 67, 67, 67, 67, 67, 67, 1286, 67, 67, 67, 67, 67, 67, 67, 1291, 67, 67, 24850, 24850, 12564, 12564, 0, 57889, 0, 0, 0, 53531, 53531, 367, 286, 97, 553, 97, 97, 97, 97, 586, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 1138, 97, 97, 97, 97, 617, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 631, 97, 97, 97, 0, 1834, 97, 97, 97, 97, 97, 0, 0, 0, 97, 97, 97, 97, 97, 353, 0, 40976, 0, 18, 18, 24, 24, 27, 27, 27, 45, 45, 668, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 724, 45, 45, 45, 45, 45, 682, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 949, 45, 45, 45, 67, 67, 747, 748, 67, 67, 67, 67, 755, 67, 67, 67, 67, 67, 67, 67, 0, 0, 1301, 0, 0, 0, 1307, 0, 0, 67, 794, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 1701, 67, 97, 97, 97, 845, 846, 97, 97, 97, 97, 853, 97, 97, 97, 97, 97, 97, 0, 40976, 0, 18, 18, 24, 24, 27, 27, 27, 97, 97, 892, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 610, 97, 97, 45, 992, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 67, 67, 67, 1239, 67, 67, 67, 1063, 67, 67, 67, 67, 67, 1068, 67, 67, 67, 67, 67, 67, 67, 0, 1299, 0, 0, 0, 1305, 0, 0, 0, 97, 1141, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 1152, 97, 97, 0, 0, 97, 97, 1784, 97, 97, 97, 0, 0, 97, 97, 0, 97, 1978, 97, 97, 97, 1982, 45, 45, 45, 45, 45, 45, 45, 45, 45, 972, 973, 45, 45, 45, 45, 45, 97, 97, 97, 97, 1157, 97, 97, 97, 97, 97, 1162, 97, 97, 97, 97, 97, 97, 1145, 97, 97, 97, 97, 97, 1151, 97, 97, 97, 1253, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 539, 45, 1423, 45, 45, 67, 67, 67, 67, 67, 67, 67, 1431, 67, 67, 67, 67, 67, 67, 67, 1773, 67, 97, 97, 97, 97, 97, 97, 97, 625, 97, 97, 97, 97, 97, 97, 97, 97, 850, 97, 97, 97, 97, 97, 97, 97, 97, 880, 97, 97, 97, 97, 97, 97, 97, 97, 1106, 97, 97, 97, 97, 97, 97, 97, 67, 67, 1439, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 514, 67, 67, 97, 97, 1492, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 611, 97, 97, 1703, 67, 67, 67, 67, 67, 67, 97, 97, 97, 97, 97, 97, 97, 97, 97, 852, 97, 97, 97, 97, 97, 97, 45, 1949, 45, 1951, 45, 45, 45, 67, 67, 67, 67, 67, 67, 67, 1961, 67, 0, 97, 45, 67, 0, 97, 2060, 2061, 0, 2062, 45, 67, 97, 0, 0, 2036, 97, 97, 97, 97, 45, 45, 45, 45, 67, 67, 67, 67, 67, 223, 67, 67, 237, 67, 67, 67, 67, 67, 67, 67, 1297, 0, 0, 0, 1303, 0, 0, 0, 1309, 1963, 67, 67, 67, 97, 97, 97, 97, 0, 1972, 0, 97, 97, 97, 1975, 0, 921, 29315, 0, 0, 0, 0, 45, 45, 45, 931, 45, 45, 45, 45, 45, 407, 45, 45, 45, 45, 45, 45, 45, 45, 45, 417, 45, 45, 1989, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 1996, 97, 18, 131427, 0, 0, 360, 0, 0, 0, 362, 0, 0, 365, 29315, 367, 0, 921, 29315, 0, 0, 0, 0, 45, 45, 930, 45, 45, 45, 45, 45, 45, 444, 45, 45, 45, 45, 45, 45, 45, 67, 67, 97, 97, 1998, 0, 97, 97, 97, 0, 97, 97, 97, 97, 97, 45, 45, 45, 45, 45, 45, 1985, 45, 1986, 45, 45, 45, 156, 45, 45, 170, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 675, 45, 45, 45, 45, 679, 131427, 0, 358, 0, 0, 362, 0, 365, 28809, 367, 139, 45, 45, 45, 45, 45, 381, 45, 45, 45, 45, 45, 45, 45, 45, 45, 400, 45, 45, 419, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 436, 67, 67, 67, 67, 67, 505, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 820, 67, 25398, 542, 13112, 544, 67, 67, 522, 67, 67, 67, 67, 67, 529, 67, 67, 67, 67, 67, 67, 67, 0, 1300, 0, 0, 0, 1306, 0, 0, 0, 97, 97, 619, 97, 97, 97, 97, 97, 626, 97, 97, 97, 97, 97, 97, 97, 1105, 97, 97, 97, 97, 1109, 97, 97, 97, 67, 67, 67, 67, 749, 67, 67, 67, 67, 67, 67, 67, 67, 67, 760, 67, 0, 97, 45, 67, 2058, 97, 45, 67, 0, 97, 45, 67, 97, 0, 0, 97, 97, 97, 97, 97, 45, 45, 45, 2041, 67, 67, 67, 67, 67, 780, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 516, 67, 67, 97, 97, 97, 878, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 1629, 97, 0, 45, 979, 45, 45, 45, 45, 984, 45, 45, 45, 45, 45, 45, 45, 45, 45, 1000, 45, 45, 45, 45, 67, 67, 67, 1023, 67, 67, 67, 67, 1028, 67, 67, 67, 67, 67, 67, 67, 67, 67, 470, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 25398, 0, 13112, 0, 54074, 0, 0, 0, 1094, 0, 0, 0, 1092, 1315, 0, 0, 0, 0, 97, 97, 97, 97, 97, 97, 97, 97, 97, 1486, 97, 1489, 97, 97, 97, 1117, 97, 97, 97, 97, 1122, 97, 97, 97, 97, 97, 97, 97, 1146, 97, 97, 97, 97, 97, 97, 97, 97, 881, 97, 97, 97, 886, 97, 97, 97, 1311, 0, 0, 0, 0, 0, 0, 0, 0, 97, 97, 97, 97, 97, 97, 97, 1615, 97, 97, 97, 97, 97, 1619, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 1631, 97, 97, 1847, 97, 45, 45, 45, 45, 1852, 45, 45, 45, 45, 45, 45, 45, 1235, 45, 45, 45, 67, 67, 67, 67, 67, 1868, 67, 67, 67, 1872, 67, 67, 67, 67, 67, 97, 97, 97, 97, 1882, 0, 0, 0, 97, 97, 97, 97, 0, 1891, 67, 67, 67, 67, 67, 97, 97, 97, 97, 97, 1929, 0, 0, 97, 97, 97, 97, 97, 97, 45, 1900, 45, 1901, 45, 45, 45, 1905, 45, 67, 2054, 97, 45, 67, 0, 97, 45, 67, 0, 97, 45, 67, 97, 0, 0, 97, 2037, 2038, 97, 97, 45, 45, 45, 45, 67, 67, 67, 67, 1867, 67, 67, 67, 67, 67, 67, 67, 67, 67, 1774, 97, 97, 97, 97, 97, 97, 0, 94242, 0, 0, 0, 38, 102439, 0, 0, 106538, 98347, 28809, 45, 45, 142, 45, 45, 45, 1412, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 432, 45, 45, 45, 45, 45, 157, 45, 45, 171, 45, 45, 45, 182, 45, 45, 45, 45, 200, 45, 45, 45, 1543, 45, 45, 45, 45, 45, 45, 45, 45, 1551, 45, 45, 45, 45, 1181, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 1211, 45, 45, 45, 1214, 45, 45, 45, 67, 209, 67, 67, 67, 224, 67, 67, 238, 67, 67, 67, 249, 67, 0, 97, 2056, 2057, 0, 2059, 45, 67, 0, 97, 45, 67, 97, 0, 0, 1937, 97, 97, 97, 97, 97, 97, 45, 45, 45, 45, 45, 45, 1741, 45, 45, 45, 45, 45, 45, 67, 67, 67, 267, 67, 67, 67, 0, 24850, 12564, 0, 0, 0, 0, 28809, 53531, 97, 97, 289, 97, 97, 97, 304, 97, 97, 318, 97, 97, 97, 329, 97, 97, 0, 0, 97, 97, 2001, 0, 97, 2003, 97, 97, 97, 45, 45, 45, 1739, 45, 45, 45, 1742, 45, 45, 45, 45, 45, 97, 97, 347, 97, 97, 97, 0, 40976, 0, 18, 18, 24, 24, 27, 27, 27, 45, 666, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 1420, 45, 57889, 0, 0, 54074, 54074, 550, 0, 97, 97, 97, 97, 97, 97, 97, 97, 840, 67, 1007, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 759, 67, 67, 67, 67, 67, 67, 67, 1052, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 1031, 67, 67, 67, 67, 67, 97, 97, 97, 1101, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 592, 97, 97, 97, 1190, 45, 45, 45, 45, 45, 1195, 45, 1197, 45, 45, 45, 45, 1201, 45, 45, 45, 45, 1952, 45, 45, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 250, 67, 67, 67, 1255, 67, 1257, 67, 67, 67, 67, 1261, 67, 67, 67, 67, 67, 67, 67, 67, 1696, 67, 67, 67, 67, 67, 67, 67, 0, 0, 0, 0, 0, 0, 2162688, 0, 0, 67, 67, 1267, 67, 67, 67, 67, 67, 67, 1273, 67, 67, 67, 67, 67, 67, 67, 67, 1763, 67, 67, 67, 67, 67, 67, 67, 0, 0, 0, 0, 0, 280, 94, 0, 0, 1281, 67, 67, 67, 67, 1285, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 1070, 67, 67, 67, 67, 67, 1335, 97, 1337, 97, 97, 97, 97, 1341, 97, 97, 97, 97, 97, 97, 97, 97, 882, 97, 97, 97, 97, 97, 97, 97, 1347, 97, 97, 97, 97, 97, 97, 1353, 97, 97, 97, 97, 97, 97, 1361, 97, 18, 131427, 0, 638, 0, 0, 0, 0, 362, 0, 0, 365, 29315, 367, 0, 544, 0, 550, 0, 2158592, 2158592, 2158592, 2158592, 2158592, 2158592, 2158592, 2158592, 2473984, 2158592, 2158592, 2158592, 2990080, 2158592, 2158592, 2207744, 2207744, 2482176, 2207744, 2207744, 2207744, 2207744, 2207744, 2207744, 2207744, 0, 0, 0, 0, 0, 0, 2162688, 0, 53530, 97, 97, 97, 1365, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 608, 97, 97, 97, 45, 45, 1424, 45, 1425, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 1058, 67, 67, 67, 67, 45, 1555, 45, 45, 1557, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 707, 45, 45, 45, 45, 67, 67, 1570, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 773, 67, 67, 1595, 67, 67, 1597, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 139, 2158592, 2158592, 2158592, 2404352, 2412544, 97, 97, 97, 1636, 97, 97, 97, 1639, 97, 97, 1641, 97, 97, 97, 97, 97, 97, 1173, 0, 921, 0, 0, 0, 0, 0, 0, 45, 67, 67, 67, 1693, 67, 67, 67, 67, 67, 67, 67, 1698, 67, 67, 67, 67, 67, 67, 273, 0, 24850, 12564, 0, 0, 0, 0, 28809, 53531, 1860, 45, 45, 67, 67, 1865, 67, 67, 67, 67, 1870, 67, 67, 67, 67, 1875, 67, 67, 97, 97, 1880, 97, 97, 0, 0, 0, 97, 97, 1888, 97, 0, 0, 0, 1938, 97, 97, 97, 97, 97, 45, 45, 45, 45, 45, 45, 1854, 45, 45, 45, 45, 45, 45, 45, 1909, 45, 45, 1911, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 1248, 67, 67, 67, 67, 67, 67, 1922, 67, 67, 1924, 97, 97, 97, 97, 97, 0, 0, 0, 97, 97, 97, 97, 97, 1898, 45, 45, 45, 45, 45, 45, 1904, 45, 45, 67, 67, 67, 67, 97, 97, 97, 97, 0, 0, 16384, 97, 97, 97, 97, 0, 97, 97, 97, 97, 97, 97, 97, 97, 97, 0, 1724, 2008, 2009, 45, 45, 67, 67, 67, 2014, 2015, 67, 67, 97, 97, 0, 0, 97, 97, 97, 0, 97, 97, 97, 97, 97, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 2022, 0, 2023, 97, 97, 45, 45, 45, 45, 45, 45, 67, 67, 67, 67, 67, 67, 1869, 67, 67, 67, 67, 67, 67, 0, 94242, 0, 0, 0, 38, 102439, 0, 0, 106538, 98347, 28809, 45, 45, 45, 147, 151, 154, 45, 162, 45, 45, 176, 178, 181, 45, 45, 45, 192, 196, 45, 45, 45, 45, 2012, 67, 67, 67, 67, 67, 67, 2018, 97, 0, 0, 97, 1894, 1895, 97, 1897, 97, 45, 45, 45, 45, 45, 45, 45, 45, 45, 656, 45, 45, 45, 45, 45, 45, 67, 259, 263, 67, 67, 67, 67, 0, 24850, 12564, 0, 0, 0, 0, 28809, 53531, 97, 97, 97, 294, 298, 301, 97, 309, 97, 97, 323, 325, 328, 97, 97, 97, 97, 97, 560, 97, 97, 97, 569, 97, 97, 97, 97, 97, 97, 306, 97, 97, 97, 97, 97, 97, 97, 97, 97, 1624, 97, 97, 97, 97, 97, 97, 97, 0, 921, 0, 1175, 0, 0, 0, 0, 45, 339, 343, 97, 97, 97, 97, 0, 40976, 0, 18, 18, 24, 24, 27, 27, 27, 67, 67, 503, 67, 67, 67, 67, 67, 67, 67, 67, 67, 512, 67, 67, 519, 97, 97, 600, 97, 97, 97, 97, 97, 97, 97, 97, 97, 609, 97, 97, 616, 45, 649, 45, 45, 45, 45, 45, 654, 45, 45, 45, 45, 45, 45, 45, 45, 1393, 45, 45, 45, 45, 45, 45, 45, 45, 1209, 45, 45, 45, 45, 45, 45, 45, 67, 763, 67, 67, 67, 67, 67, 67, 67, 67, 770, 67, 67, 67, 774, 67, 0, 2045, 97, 97, 97, 97, 45, 45, 67, 67, 0, 0, 97, 97, 45, 45, 45, 994, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 67, 67, 213, 67, 219, 67, 67, 232, 67, 242, 67, 247, 67, 67, 67, 779, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 1018, 67, 67, 67, 67, 811, 67, 67, 67, 67, 67, 67, 67, 67, 67, 25398, 542, 13112, 544, 57889, 0, 0, 54074, 54074, 550, 0, 97, 834, 97, 97, 97, 97, 97, 839, 97, 18, 131427, 0, 638, 0, 0, 0, 0, 362, 0, 0, 365, 29315, 367, 645, 97, 97, 861, 97, 97, 97, 97, 97, 97, 97, 97, 868, 97, 97, 97, 872, 97, 97, 877, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 613, 97, 97, 97, 97, 97, 909, 97, 97, 97, 97, 97, 97, 97, 97, 97, 0, 0, 0, 18, 18, 24, 24, 27, 27, 27, 1036, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 1047, 67, 67, 67, 1050, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 1033, 67, 67, 67, 97, 97, 1130, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 638, 0, 0, 67, 67, 67, 1295, 67, 67, 67, 0, 0, 0, 0, 0, 0, 0, 0, 0, 97, 1317, 97, 97, 97, 97, 97, 97, 1375, 97, 97, 97, 0, 0, 0, 45, 1379, 45, 45, 45, 45, 45, 45, 422, 45, 45, 45, 429, 431, 45, 45, 45, 45, 0, 1090, 0, 0, 97, 1479, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 1357, 97, 97, 97, 97, 97, 97, 97, 97, 97, 1716, 97, 97, 97, 97, 97, 97, 97, 97, 97, 1723, 0, 921, 29315, 0, 0, 0, 0, 45, 929, 45, 45, 45, 45, 45, 45, 45, 1234, 45, 45, 45, 45, 67, 67, 67, 67, 1240, 97, 97, 97, 1738, 45, 45, 45, 45, 45, 45, 45, 1743, 45, 45, 45, 45, 166, 45, 45, 45, 45, 184, 186, 45, 45, 197, 45, 45, 97, 1779, 0, 0, 97, 97, 97, 97, 97, 97, 0, 0, 97, 97, 0, 97, 18, 131427, 0, 638, 0, 0, 0, 0, 362, 0, 640, 365, 29315, 367, 0, 921, 29315, 0, 0, 0, 0, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 1539, 45, 45, 1803, 45, 45, 45, 45, 45, 1809, 45, 45, 45, 67, 67, 67, 1814, 67, 67, 67, 67, 67, 97, 97, 97, 97, 97, 0, 0, 0, 1932, 97, 97, 0, 1781, 97, 97, 97, 97, 97, 97, 0, 0, 97, 97, 0, 97, 67, 67, 67, 1818, 67, 67, 67, 67, 67, 1824, 67, 67, 67, 97, 97, 97, 97, 97, 0, 0, 0, 97, 97, 97, 97, 1890, 0, 1829, 97, 97, 0, 0, 97, 97, 1836, 97, 97, 0, 0, 0, 97, 97, 97, 97, 1981, 45, 45, 45, 45, 45, 45, 45, 45, 45, 1987, 1845, 97, 97, 97, 45, 45, 45, 45, 45, 1853, 45, 45, 45, 1857, 45, 45, 45, 67, 1864, 67, 1866, 67, 67, 67, 67, 67, 67, 67, 67, 67, 97, 97, 97, 97, 97, 97, 97, 1710, 1711, 67, 67, 97, 97, 97, 97, 97, 0, 0, 0, 1886, 97, 97, 97, 0, 0, 97, 97, 97, 97, 1838, 0, 0, 0, 97, 1843, 97, 0, 1893, 97, 97, 97, 97, 97, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 1745, 45, 45, 67, 2044, 0, 97, 97, 97, 97, 45, 45, 67, 67, 0, 0, 97, 97, 45, 45, 45, 1660, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 453, 45, 455, 67, 67, 67, 67, 268, 67, 67, 67, 0, 24850, 12564, 0, 0, 0, 0, 28809, 53531, 97, 97, 348, 97, 97, 97, 0, 40976, 0, 18, 18, 24, 24, 27, 27, 27, 131427, 0, 359, 0, 0, 362, 0, 365, 28809, 367, 139, 45, 45, 45, 45, 45, 421, 45, 45, 45, 45, 45, 45, 45, 434, 45, 45, 695, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 1667, 45, 0, 921, 29315, 0, 925, 0, 0, 45, 45, 45, 45, 45, 45, 45, 45, 45, 1548, 45, 45, 45, 45, 45, 45, 67, 1037, 67, 1039, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 1277, 67, 67, 67, 67, 67, 67, 67, 67, 25398, 0, 13112, 0, 54074, 0, 0, 0, 1095, 0, 0, 0, 1096, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 869, 97, 97, 97, 97, 97, 97, 1131, 97, 1133, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 1370, 97, 97, 97, 97, 97, 1312, 0, 0, 0, 0, 1096, 0, 0, 0, 97, 97, 97, 97, 97, 97, 97, 1327, 97, 97, 97, 97, 97, 1332, 97, 97, 97, 1830, 97, 0, 0, 97, 97, 97, 97, 97, 0, 0, 0, 97, 97, 97, 1896, 97, 97, 45, 45, 45, 45, 45, 45, 45, 45, 45, 1210, 45, 45, 45, 45, 45, 45, 133, 94242, 0, 0, 0, 38, 102439, 0, 0, 106538, 98347, 28809, 45, 45, 45, 45, 380, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 401, 45, 45, 158, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 1200, 45, 45, 45, 45, 206, 67, 67, 67, 67, 67, 225, 67, 67, 67, 67, 67, 67, 67, 67, 754, 67, 67, 67, 67, 67, 67, 67, 57889, 0, 0, 54074, 54074, 550, 832, 97, 97, 97, 97, 97, 97, 97, 97, 97, 1342, 97, 97, 97, 97, 97, 97, 67, 67, 67, 67, 67, 25398, 1083, 13112, 1087, 54074, 1091, 0, 0, 0, 0, 0, 0, 1316, 0, 831, 97, 97, 97, 97, 97, 97, 97, 1174, 921, 0, 1175, 0, 0, 0, 0, 45, 0, 94242, 0, 0, 0, 38, 102439, 0, 0, 106538, 98347, 28809, 45, 45, 45, 148, 67, 67, 264, 67, 67, 67, 67, 0, 24850, 12564, 0, 0, 0, 0, 28809, 53531, 97, 97, 97, 295, 97, 97, 97, 97, 313, 97, 97, 97, 97, 331, 333, 97, 18, 131427, 356, 638, 0, 0, 0, 0, 362, 0, 0, 365, 0, 367, 0, 45, 45, 1530, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 988, 45, 45, 45, 97, 344, 97, 97, 97, 97, 0, 40976, 0, 18, 18, 24, 24, 27, 27, 27, 402, 404, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 1756, 67, 438, 45, 45, 45, 45, 45, 45, 45, 45, 449, 450, 45, 45, 45, 67, 67, 214, 218, 221, 67, 229, 67, 67, 243, 245, 248, 67, 67, 67, 67, 67, 488, 490, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 1071, 67, 1073, 67, 67, 67, 67, 67, 524, 67, 67, 67, 67, 67, 67, 67, 67, 535, 536, 67, 67, 67, 67, 67, 67, 1683, 1684, 67, 67, 67, 67, 1688, 1689, 67, 67, 67, 67, 67, 67, 1694, 67, 67, 67, 67, 67, 67, 67, 67, 67, 1288, 67, 67, 67, 67, 67, 67, 97, 97, 97, 585, 587, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 1163, 97, 97, 97, 97, 97, 97, 97, 621, 97, 97, 97, 97, 97, 97, 97, 97, 632, 633, 97, 97, 0, 0, 97, 1783, 97, 97, 97, 97, 0, 0, 97, 97, 0, 97, 97, 97, 45, 2026, 45, 45, 45, 45, 67, 2030, 67, 67, 67, 67, 67, 67, 1053, 1054, 67, 67, 67, 67, 67, 67, 1061, 67, 712, 45, 45, 45, 717, 45, 45, 45, 45, 45, 45, 45, 45, 725, 45, 45, 45, 163, 167, 173, 177, 45, 45, 45, 45, 45, 193, 45, 45, 45, 45, 982, 45, 45, 45, 45, 45, 45, 987, 45, 45, 45, 45, 45, 1558, 45, 1560, 45, 45, 45, 45, 45, 45, 45, 45, 704, 705, 45, 45, 45, 45, 45, 45, 45, 45, 731, 45, 45, 45, 67, 67, 67, 67, 67, 739, 67, 67, 67, 67, 67, 67, 464, 67, 67, 67, 67, 67, 67, 479, 67, 67, 67, 67, 67, 764, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 1290, 67, 67, 67, 67, 67, 67, 812, 67, 67, 67, 67, 818, 67, 67, 67, 25398, 542, 13112, 544, 57889, 0, 0, 54074, 54074, 550, 0, 97, 97, 97, 97, 97, 837, 97, 97, 97, 97, 97, 602, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 1137, 97, 97, 97, 97, 97, 97, 97, 97, 97, 862, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 1627, 97, 97, 97, 0, 97, 97, 97, 97, 910, 97, 97, 97, 97, 916, 97, 97, 97, 0, 0, 0, 97, 97, 1940, 97, 97, 1942, 45, 45, 45, 45, 45, 45, 385, 45, 45, 45, 45, 395, 45, 45, 45, 45, 966, 45, 969, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 975, 45, 45, 45, 406, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 974, 45, 45, 45, 67, 67, 67, 67, 1010, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 1262, 67, 67, 67, 67, 67, 67, 67, 67, 67, 1040, 67, 1042, 67, 1045, 67, 67, 67, 67, 67, 67, 67, 527, 67, 67, 67, 67, 67, 67, 537, 67, 67, 67, 67, 67, 1051, 67, 67, 67, 67, 67, 1057, 67, 67, 67, 67, 67, 67, 67, 1454, 67, 67, 67, 67, 67, 67, 67, 67, 67, 1445, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 1079, 25398, 0, 13112, 0, 54074, 0, 0, 0, 0, 0, 0, 0, 2158592, 2158592, 2158592, 2158592, 2158592, 2158592, 2158592, 2158592, 2158592, 2207744, 2207744, 2207744, 2207744, 2207744, 2572288, 2207744, 2207744, 2207744, 1098, 97, 97, 97, 97, 97, 1104, 97, 97, 97, 97, 97, 97, 97, 97, 97, 1356, 97, 97, 97, 97, 97, 97, 1128, 97, 97, 97, 97, 97, 97, 1134, 97, 1136, 97, 1139, 97, 97, 97, 97, 97, 97, 1622, 97, 97, 97, 97, 97, 97, 97, 97, 0, 921, 0, 0, 0, 1176, 0, 646, 45, 67, 67, 67, 1268, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 1469, 67, 67, 67, 97, 1348, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 1127, 97, 67, 1569, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 1448, 1449, 67, 1816, 67, 67, 67, 67, 67, 67, 67, 67, 67, 1825, 67, 67, 1827, 97, 97, 0, 0, 1782, 97, 97, 97, 97, 97, 0, 0, 97, 97, 0, 97, 97, 97, 1831, 0, 0, 97, 97, 97, 97, 97, 0, 0, 0, 97, 97, 97, 1980, 97, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 1395, 45, 45, 45, 45, 45, 97, 1846, 97, 97, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 1212, 45, 45, 45, 45, 45, 45, 2010, 45, 67, 67, 67, 67, 67, 2016, 67, 97, 97, 0, 0, 97, 97, 97, 0, 97, 97, 97, 97, 97, 45, 45, 2007, 0, 94242, 0, 0, 0, 38, 102439, 0, 0, 106538, 98347, 28809, 45, 45, 143, 45, 45, 45, 1671, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 67, 1813, 67, 67, 1815, 45, 45, 67, 210, 67, 67, 67, 67, 67, 67, 239, 67, 67, 67, 67, 67, 67, 67, 1575, 67, 67, 67, 67, 67, 67, 67, 67, 493, 67, 67, 67, 67, 67, 67, 67, 97, 97, 290, 97, 97, 97, 97, 97, 97, 319, 97, 97, 97, 97, 97, 97, 303, 97, 97, 317, 97, 97, 97, 97, 97, 97, 305, 97, 97, 97, 97, 97, 97, 97, 97, 97, 899, 97, 97, 97, 97, 97, 97, 375, 45, 45, 45, 379, 45, 45, 390, 45, 45, 394, 45, 45, 45, 45, 45, 443, 45, 45, 45, 45, 45, 45, 45, 45, 67, 67, 67, 67, 67, 461, 67, 67, 67, 465, 67, 67, 476, 67, 67, 480, 67, 67, 67, 67, 67, 67, 1761, 67, 67, 67, 67, 67, 67, 67, 67, 67, 530, 67, 67, 67, 67, 67, 67, 500, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 1075, 97, 97, 97, 558, 97, 97, 97, 562, 97, 97, 573, 97, 97, 577, 97, 97, 0, 1999, 97, 97, 97, 0, 97, 97, 2004, 2005, 97, 45, 45, 45, 45, 1193, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 676, 45, 45, 45, 45, 597, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 1334, 45, 681, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 1396, 45, 45, 1399, 45, 45, 730, 45, 45, 45, 45, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 1434, 67, 67, 67, 67, 67, 67, 750, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 1456, 67, 67, 67, 67, 67, 45, 45, 993, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 67, 67, 1238, 67, 67, 1006, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 1280, 1048, 1049, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 1059, 67, 67, 67, 67, 67, 67, 1296, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2367488, 2158592, 2158592, 2158592, 2158592, 2158592, 2158592, 97, 97, 1100, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 638, 0, 920, 97, 97, 1142, 1143, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 1153, 97, 97, 97, 97, 97, 1144, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 1149, 97, 97, 97, 97, 1154, 45, 1218, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 1678, 45, 45, 45, 67, 67, 67, 67, 67, 1269, 67, 67, 67, 67, 67, 67, 67, 67, 1278, 67, 67, 67, 67, 67, 67, 1772, 67, 67, 97, 97, 97, 97, 97, 97, 97, 0, 921, 922, 1175, 0, 0, 0, 0, 45, 97, 97, 1349, 97, 97, 97, 97, 97, 97, 97, 97, 1358, 97, 97, 97, 97, 97, 97, 1623, 97, 97, 97, 97, 97, 97, 97, 97, 0, 921, 0, 0, 926, 0, 0, 0, 45, 45, 1411, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 1754, 45, 45, 67, 67, 1301, 0, 1307, 0, 1313, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 21054, 97, 97, 97, 97, 67, 1757, 67, 67, 67, 1760, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 1467, 67, 67, 67, 67, 67, 1778, 97, 0, 0, 97, 97, 97, 97, 97, 97, 0, 0, 97, 97, 0, 97, 97, 97, 97, 97, 1158, 97, 97, 97, 1161, 97, 97, 97, 97, 1166, 97, 97, 97, 97, 97, 1325, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 1328, 97, 97, 97, 97, 97, 97, 97, 67, 67, 67, 67, 67, 1820, 67, 1822, 67, 67, 67, 67, 67, 97, 97, 97, 97, 97, 0, 0, 0, 97, 1933, 97, 1892, 97, 97, 97, 97, 97, 97, 1899, 45, 45, 45, 45, 45, 45, 45, 45, 1664, 45, 45, 45, 45, 45, 45, 45, 45, 1546, 45, 45, 45, 45, 45, 45, 45, 45, 1208, 45, 45, 45, 45, 45, 45, 45, 45, 1224, 45, 45, 45, 45, 45, 45, 45, 45, 673, 45, 45, 45, 45, 45, 45, 45, 67, 67, 67, 67, 67, 1925, 97, 97, 97, 97, 0, 0, 0, 97, 97, 97, 97, 97, 623, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 307, 97, 97, 97, 97, 97, 97, 97, 97, 97, 1796, 97, 45, 45, 45, 45, 45, 45, 45, 970, 45, 45, 45, 45, 45, 45, 45, 45, 1417, 45, 45, 45, 45, 45, 45, 45, 67, 1964, 67, 67, 97, 97, 97, 97, 0, 0, 0, 97, 97, 97, 97, 0, 97, 97, 97, 97, 97, 97, 1721, 97, 97, 0, 0, 1997, 97, 0, 0, 2000, 97, 97, 0, 97, 97, 97, 97, 97, 45, 45, 45, 45, 733, 45, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 803, 67, 67, 67, 67, 67, 0, 94242, 0, 0, 0, 38, 102439, 0, 0, 106538, 98347, 28809, 45, 45, 144, 45, 45, 45, 1805, 45, 1807, 45, 45, 45, 45, 45, 67, 67, 67, 67, 67, 67, 231, 67, 67, 67, 67, 67, 67, 67, 0, 24850, 12564, 0, 0, 0, 281, 28809, 53531, 45, 45, 67, 211, 67, 67, 67, 67, 230, 234, 240, 244, 67, 67, 67, 67, 67, 67, 492, 67, 67, 67, 67, 67, 67, 67, 67, 67, 471, 67, 67, 67, 67, 481, 67, 67, 260, 67, 67, 67, 67, 67, 0, 24850, 12564, 0, 0, 0, 0, 28809, 53531, 97, 97, 291, 97, 97, 97, 97, 310, 314, 320, 324, 97, 97, 97, 97, 97, 97, 1367, 97, 97, 97, 97, 97, 97, 97, 97, 97, 1355, 97, 97, 97, 97, 97, 97, 1362, 340, 97, 97, 97, 97, 97, 0, 40976, 0, 18, 18, 24, 24, 27, 27, 27, 131427, 0, 0, 360, 0, 362, 0, 365, 28809, 367, 139, 369, 45, 45, 45, 374, 67, 67, 460, 67, 67, 67, 67, 466, 67, 67, 67, 67, 67, 67, 67, 67, 801, 67, 67, 67, 67, 67, 67, 67, 67, 67, 487, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 498, 67, 67, 67, 67, 67, 67, 1821, 67, 67, 67, 67, 67, 67, 97, 97, 97, 97, 97, 0, 0, 0, 97, 97, 97, 97, 0, 0, 67, 502, 67, 67, 67, 67, 67, 67, 67, 508, 67, 67, 67, 515, 517, 67, 67, 67, 67, 67, 97, 97, 97, 97, 97, 0, 0, 1931, 97, 97, 97, 97, 97, 588, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 629, 97, 97, 97, 97, 97, 67, 24850, 24850, 12564, 12564, 0, 57889, 0, 0, 0, 53531, 53531, 367, 286, 552, 97, 97, 97, 97, 97, 1352, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 1511, 97, 97, 97, 97, 97, 97, 97, 557, 97, 97, 97, 97, 563, 97, 97, 97, 97, 97, 97, 97, 97, 1135, 97, 97, 97, 97, 97, 97, 97, 97, 97, 584, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 595, 97, 97, 97, 97, 97, 895, 97, 97, 97, 97, 97, 97, 903, 97, 97, 97, 0, 97, 97, 1638, 97, 97, 97, 97, 97, 97, 97, 97, 1646, 97, 599, 97, 97, 97, 97, 97, 97, 97, 605, 97, 97, 97, 612, 614, 97, 97, 97, 97, 97, 1377, 0, 0, 45, 45, 45, 45, 45, 45, 45, 45, 655, 45, 45, 45, 45, 45, 45, 45, 745, 67, 67, 67, 67, 751, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 1577, 67, 67, 67, 67, 67, 762, 67, 67, 67, 67, 766, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 1765, 67, 67, 67, 67, 67, 777, 67, 67, 781, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 1592, 1593, 67, 67, 97, 843, 97, 97, 97, 97, 849, 97, 97, 97, 97, 97, 97, 97, 97, 97, 1510, 97, 97, 97, 97, 97, 97, 97, 860, 97, 97, 97, 97, 864, 97, 97, 97, 97, 97, 97, 97, 97, 97, 1797, 45, 45, 45, 45, 1801, 45, 97, 875, 97, 97, 879, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 1522, 97, 97, 97, 97, 97, 991, 45, 45, 45, 45, 996, 45, 45, 45, 45, 45, 45, 45, 45, 67, 67, 215, 67, 67, 67, 67, 233, 67, 67, 67, 67, 251, 253, 1022, 67, 67, 67, 1026, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 1035, 67, 67, 1038, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 1458, 67, 67, 67, 67, 67, 1064, 67, 67, 67, 1067, 67, 67, 67, 67, 1072, 67, 67, 67, 67, 67, 67, 1442, 67, 67, 67, 67, 67, 67, 67, 67, 67, 97, 97, 97, 1775, 97, 97, 97, 67, 67, 67, 67, 67, 25398, 0, 13112, 0, 54074, 0, 0, 0, 0, 1096, 0, 921, 29315, 0, 0, 0, 0, 928, 45, 45, 45, 45, 45, 934, 45, 45, 45, 164, 45, 45, 45, 45, 45, 45, 45, 45, 45, 198, 45, 45, 45, 378, 45, 45, 45, 45, 45, 45, 393, 45, 45, 45, 398, 45, 97, 97, 1116, 97, 97, 97, 1120, 97, 97, 97, 97, 97, 97, 97, 97, 97, 1147, 1148, 97, 97, 97, 97, 97, 97, 97, 1129, 97, 97, 1132, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 1626, 97, 97, 97, 97, 0, 45, 1178, 45, 45, 45, 45, 45, 45, 45, 45, 45, 1185, 45, 45, 45, 45, 441, 45, 45, 45, 45, 45, 45, 451, 45, 45, 67, 67, 67, 67, 67, 227, 67, 67, 67, 67, 67, 67, 67, 67, 1260, 67, 67, 67, 1263, 67, 67, 1265, 1203, 45, 45, 1205, 45, 1206, 45, 45, 45, 45, 45, 45, 45, 45, 45, 1216, 67, 1266, 67, 67, 67, 67, 67, 67, 67, 67, 67, 1276, 67, 67, 67, 67, 67, 67, 752, 67, 67, 67, 67, 67, 67, 67, 67, 67, 1056, 67, 67, 67, 67, 67, 67, 45, 1386, 45, 1389, 45, 45, 45, 45, 1394, 45, 45, 45, 1397, 45, 45, 45, 45, 995, 45, 997, 45, 45, 45, 45, 45, 45, 45, 67, 67, 67, 67, 1915, 67, 67, 67, 67, 67, 1422, 45, 45, 45, 67, 67, 67, 67, 67, 67, 67, 67, 67, 1433, 67, 1436, 67, 67, 67, 67, 1441, 67, 67, 67, 1444, 67, 67, 67, 67, 67, 67, 67, 0, 24851, 12565, 0, 0, 0, 0, 28809, 53532, 97, 97, 97, 97, 1494, 97, 97, 97, 1497, 97, 97, 97, 97, 97, 97, 97, 1368, 97, 97, 97, 97, 97, 97, 97, 97, 851, 97, 97, 97, 97, 97, 97, 97, 67, 67, 67, 1571, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 25398, 542, 13112, 544, 67, 67, 1583, 67, 67, 67, 67, 67, 67, 67, 67, 1591, 67, 67, 67, 67, 67, 67, 782, 67, 67, 67, 67, 67, 67, 67, 67, 67, 756, 67, 67, 67, 67, 67, 67, 97, 1634, 97, 0, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 1125, 97, 97, 97, 1647, 97, 97, 97, 97, 97, 0, 45, 45, 45, 45, 45, 45, 45, 45, 45, 719, 720, 45, 45, 45, 45, 45, 45, 45, 45, 685, 45, 45, 45, 45, 45, 45, 45, 45, 45, 942, 45, 45, 946, 45, 45, 45, 950, 45, 45, 1658, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 1668, 1712, 97, 97, 97, 0, 97, 97, 97, 97, 97, 97, 97, 97, 97, 0, 0, 1835, 97, 97, 97, 97, 0, 0, 0, 97, 97, 1844, 97, 97, 1726, 0, 97, 97, 97, 97, 97, 1732, 97, 1734, 97, 97, 97, 97, 97, 300, 97, 308, 97, 97, 97, 97, 97, 97, 97, 97, 866, 97, 97, 97, 97, 97, 97, 97, 67, 67, 67, 1758, 67, 67, 67, 1762, 67, 67, 67, 67, 67, 67, 67, 67, 1043, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 1771, 67, 67, 67, 97, 97, 97, 97, 97, 1776, 97, 97, 97, 97, 97, 1794, 97, 97, 97, 45, 45, 45, 45, 45, 45, 45, 1183, 45, 45, 45, 45, 45, 45, 45, 45, 45, 409, 45, 45, 45, 45, 45, 45, 67, 67, 67, 1966, 97, 97, 97, 1970, 0, 0, 0, 97, 97, 97, 97, 0, 97, 97, 97, 1720, 97, 97, 97, 97, 97, 0, 0, 97, 97, 97, 1837, 97, 0, 1840, 1841, 97, 97, 97, 1988, 45, 67, 67, 67, 67, 67, 67, 67, 67, 67, 1994, 1995, 67, 97, 97, 97, 97, 97, 911, 97, 97, 97, 97, 97, 97, 97, 638, 0, 0, 0, 0, 1315, 0, 0, 0, 0, 97, 97, 97, 1319, 97, 97, 97, 0, 97, 97, 97, 97, 97, 97, 1733, 97, 97, 97, 97, 97, 97, 1340, 97, 97, 97, 1343, 97, 97, 1345, 97, 1346, 67, 67, 265, 67, 67, 67, 67, 0, 24850, 12564, 0, 0, 0, 0, 28809, 53531, 97, 345, 97, 97, 97, 97, 0, 40976, 0, 18, 18, 24, 24, 27, 27, 27, 131427, 0, 0, 0, 361, 362, 0, 365, 28809, 367, 139, 45, 45, 45, 45, 45, 671, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 411, 45, 45, 414, 45, 45, 45, 45, 377, 45, 45, 45, 386, 45, 45, 45, 45, 45, 45, 45, 45, 45, 1207, 45, 45, 45, 45, 45, 45, 1213, 45, 45, 67, 67, 67, 67, 67, 463, 67, 67, 67, 472, 67, 67, 67, 67, 67, 67, 67, 528, 67, 67, 67, 67, 67, 67, 67, 67, 1287, 67, 67, 67, 67, 67, 67, 67, 540, 24850, 24850, 12564, 12564, 0, 57889, 0, 0, 0, 53531, 53531, 367, 286, 97, 97, 97, 97, 97, 1103, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 917, 97, 97, 0, 0, 0, 637, 18, 131427, 0, 0, 0, 0, 0, 0, 362, 0, 0, 365, 29315, 367, 0, 921, 29315, 0, 0, 0, 927, 45, 45, 45, 45, 45, 45, 45, 45, 45, 1223, 45, 45, 45, 45, 45, 45, 45, 45, 45, 426, 45, 45, 433, 45, 45, 45, 45, 697, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 708, 45, 45, 45, 45, 1221, 45, 45, 45, 45, 1225, 45, 45, 45, 45, 45, 45, 384, 45, 45, 45, 45, 45, 45, 45, 45, 45, 1198, 45, 45, 45, 45, 45, 45, 67, 67, 795, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 1470, 67, 67, 67, 67, 67, 67, 67, 815, 67, 67, 67, 67, 67, 67, 25398, 542, 13112, 544, 97, 97, 97, 893, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 1164, 97, 97, 97, 67, 67, 67, 1025, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 1687, 67, 67, 67, 67, 67, 67, 67, 67, 67, 25398, 0, 13112, 0, 54074, 0, 0, 0, 0, 0, 1097, 1241, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 1450, 45, 45, 1388, 45, 1390, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 1236, 67, 67, 67, 67, 67, 1437, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 1472, 1490, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 1503, 67, 67, 67, 67, 67, 97, 97, 97, 97, 97, 0, 1930, 0, 97, 97, 97, 97, 97, 847, 97, 97, 97, 97, 97, 97, 97, 97, 97, 858, 67, 67, 1965, 67, 97, 97, 97, 97, 0, 0, 0, 97, 97, 97, 97, 0, 97, 97, 1719, 97, 97, 97, 97, 97, 97, 0, 0, 0, 45, 45, 45, 45, 1382, 45, 1383, 45, 45, 45, 159, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 1563, 45, 45, 45, 45, 45, 67, 261, 67, 67, 67, 67, 67, 0, 24850, 12564, 0, 0, 0, 0, 28809, 53531, 341, 97, 97, 97, 97, 97, 0, 40976, 0, 18, 18, 24, 24, 27, 27, 27, 97, 1099, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 1333, 97, 1230, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 67, 67, 67, 67, 67, 67, 1992, 67, 1993, 67, 67, 67, 97, 97, 45, 45, 160, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 1665, 45, 45, 45, 45, 45, 131427, 357, 0, 0, 0, 362, 0, 365, 28809, 367, 139, 45, 45, 45, 45, 45, 684, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 412, 45, 45, 45, 416, 45, 45, 45, 440, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 67, 67, 1990, 67, 1991, 67, 67, 67, 67, 67, 67, 67, 97, 97, 1707, 97, 97, 97, 97, 97, 97, 501, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 1691, 67, 67, 67, 67, 67, 526, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 1030, 67, 1032, 67, 67, 67, 67, 598, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 1632, 0, 921, 29315, 923, 0, 0, 0, 45, 45, 45, 45, 45, 45, 45, 45, 45, 1392, 45, 45, 45, 45, 45, 45, 45, 45, 45, 960, 45, 45, 45, 45, 45, 45, 67, 67, 67, 67, 67, 25398, 0, 13112, 0, 54074, 0, 0, 1093, 0, 0, 0, 0, 0, 97, 1609, 97, 97, 97, 97, 97, 97, 97, 97, 97, 1369, 97, 97, 97, 1372, 97, 97, 67, 67, 266, 67, 67, 67, 67, 0, 24850, 12564, 0, 0, 0, 0, 28809, 53531, 97, 346, 97, 97, 97, 97, 0, 40976, 0, 18, 18, 24, 24, 27, 27, 27, 665, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 1677, 45, 45, 45, 45, 67, 45, 45, 954, 45, 956, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 1404, 45, 45, 45, 45, 45, 45, 45, 45, 45, 425, 45, 45, 45, 45, 45, 45, 67, 67, 67, 67, 67, 1270, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 1069, 67, 67, 67, 67, 67, 67, 97, 97, 97, 1350, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 1524, 97, 97, 97, 97, 97, 97, 97, 1376, 0, 0, 0, 45, 45, 45, 45, 45, 45, 45, 45, 1545, 45, 45, 45, 45, 45, 45, 45, 45, 45, 448, 45, 45, 45, 45, 67, 456, 67, 67, 67, 67, 67, 1573, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 1247, 67, 67, 67, 67, 67, 1252, 97, 1725, 97, 0, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 1628, 97, 1630, 0, 0, 94242, 0, 0, 0, 2211840, 0, 1118208, 0, 0, 0, 0, 2158592, 2158731, 2158592, 2158592, 2158592, 3117056, 2158592, 2158592, 2158592, 2158592, 2158592, 2158592, 2158592, 2158592, 2158592, 2158592, 2158592, 2158592, 3018752, 2158592, 3043328, 2158592, 2158592, 2158592, 2158592, 3080192, 2158592, 2158592, 3112960, 2158592, 2158592, 2158592, 2158592, 2158592, 2158878, 2158592, 2158592, 2158592, 2158592, 2158592, 2158592, 2158592, 2158592, 2158592, 2158592, 2158592, 2158592, 2158592, 2158592, 2605056, 2158592, 2158592, 2207744, 0, 542, 0, 544, 0, 0, 2166784, 0, 0, 0, 550, 0, 0, 2158592, 2158592, 2686976, 2158592, 2715648, 2158592, 2158592, 2158592, 2158592, 2158592, 2158592, 2158592, 2867200, 2158592, 2904064, 2158592, 2158592, 2158592, 2158592, 2158592, 2158592, 2158592, 0, 94242, 0, 0, 0, 2211840, 0, 0, 1130496, 0, 0, 0, 2158592, 2158592, 2158592, 2158592, 2158592, 3186688, 2158592, 0, 0, 139, 0, 0, 0, 139, 0, 2367488, 2207744, 0, 0, 0, 0, 176128, 0, 2166784, 0, 0, 0, 0, 0, 286, 2158592, 2158592, 3170304, 3174400, 2158592, 0, 0, 0, 2158592, 2158592, 2158592, 2158592, 2158592, 2424832, 2158592, 2158592, 2158592, 1508, 2158592, 2908160, 2158592, 2158592, 2158592, 2977792, 2158592, 2158592, 2158592, 2158592, 3039232, 2158592, 2158592, 2158592, 2158592, 2158592, 2158592, 3158016, 67, 24850, 24850, 12564, 12564, 0, 0, 0, 0, 0, 53531, 53531, 0, 286, 97, 97, 97, 97, 97, 1119, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 1509, 97, 97, 97, 97, 97, 97, 97, 97, 564, 97, 97, 97, 97, 97, 97, 97, 57889, 0, 0, 0, 0, 550, 0, 97, 97, 97, 97, 97, 97, 97, 97, 97, 561, 97, 97, 97, 97, 97, 97, 576, 97, 97, 139264, 139264, 139264, 139264, 139264, 139264, 139264, 139264, 139264, 139264, 139264, 139264, 0, 0, 139264, 0, 921, 29315, 0, 0, 926, 0, 45, 45, 45, 45, 45, 45, 45, 45, 45, 1811, 45, 67, 67, 67, 67, 67, 0, 2146304, 2146304, 0, 0, 0, 0, 2224128, 2224128, 2224128, 2232320, 2232320, 2232320, 2232320, 0, 0, 1301, 0, 0, 0, 0, 0, 1307, 0, 0, 0, 0, 0, 1313, 0, 0, 0, 0, 0, 0, 0, 97, 97, 1318, 97, 97, 97, 97, 97, 97, 1795, 97, 97, 45, 45, 45, 45, 45, 45, 45, 446, 45, 45, 45, 45, 45, 45, 67, 67, 2158592, 2146304, 0, 0, 0, 0, 0, 0, 0, 2211840, 0, 0, 0, 0, 2158592, 0, 921, 29315, 0, 924, 0, 0, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 1537, 45, 45, 45, 45 -]; - -JSONiqTokenizer.EXPECTED = -[ 290, 300, 304, 353, 296, 309, 305, 319, 315, 324, 328, 352, 354, 334, 338, 330, 320, 345, 349, 293, 358, 362, 341, 366, 312, 370, 374, 378, 382, 386, 390, 394, 398, 737, 402, 634, 439, 604, 634, 634, 634, 634, 408, 634, 634, 634, 404, 634, 634, 634, 457, 634, 634, 963, 634, 634, 413, 634, 634, 634, 634, 634, 634, 634, 663, 418, 422, 903, 902, 426, 431, 548, 634, 437, 521, 919, 443, 615, 409, 449, 455, 624, 731, 751, 634, 461, 465, 672, 470, 469, 474, 481, 485, 477, 489, 493, 629, 542, 497, 505, 603, 602, 991, 648, 510, 804, 634, 515, 958, 526, 525, 530, 768, 634, 546, 552, 711, 710, 593, 558, 562, 618, 566, 570, 574, 578, 582, 586, 590, 608, 612, 660, 822, 821, 634, 622, 596, 444, 628, 533, 724, 633, 640, 653, 647, 652, 536, 1008, 451, 450, 445, 657, 670, 676, 685, 689, 693, 697, 701, 704, 707, 715, 719, 798, 815, 634, 723, 762, 996, 634, 728, 969, 730, 735, 908, 634, 741, 679, 889, 511, 747, 634, 750, 755, 499, 666, 499, 501, 759, 772, 776, 780, 634, 787, 784, 797, 802, 809, 808, 427, 814, 1006, 517, 634, 519, 853, 634, 813, 850, 793, 634, 819, 826, 833, 832, 837, 843, 847, 857, 861, 863, 867, 871, 875, 879, 883, 643, 887, 539, 980, 979, 634, 893, 944, 634, 900, 896, 634, 907, 933, 506, 912, 917, 828, 433, 636, 635, 554, 961, 923, 930, 927, 937, 941, 634, 634, 634, 974, 948, 952, 985, 913, 968, 967, 743, 634, 973, 839, 634, 978, 599, 634, 984, 989, 765, 444, 995, 1000, 634, 1003, 790, 955, 1012, 681, 634, 634, 634, 634, 634, 414, 1016, 1020, 1024, 1085, 1027, 1090, 1090, 1046, 1080, 1137, 1108, 1215, 1049, 1032, 1039, 1085, 1085, 1085, 1085, 1058, 1062, 1068, 1085, 1086, 1090, 1090, 1091, 1072, 1064, 1107, 1090, 1090, 1090, 1118, 1123, 1138, 1078, 1074, 1084, 1085, 1085, 1085, 1087, 1090, 1062, 1052, 1060, 1114, 1062, 1104, 1085, 1085, 1090, 1090, 1028, 1122, 1063, 1128, 1139, 1127, 1158, 1085, 1085, 1151, 1090, 1090, 1090, 1095, 1090, 1132, 1073, 1136, 1143, 1061, 1150, 1085, 1155, 1098, 1101, 1146, 1162, 1169, 1101, 1185, 1151, 1090, 1110, 1173, 1054, 1087, 1109, 1177, 1165, 1089, 1204, 1184, 1107, 1189, 1193, 1088, 1197, 1180, 1201, 1208, 1042, 1212, 1219, 1223, 1227, 1231, 1235, 1245, 1777, 1527, 1686, 1686, 1238, 1686, 1254, 1686, 1686, 1686, 1294, 1669, 1686, 1686, 1686, 1322, 1625, 1534, 1268, 1624, 1275, 1281, 1443, 1292, 1300, 1686, 1686, 1686, 1350, 1826, 1306, 1686, 1686, 1240, 2032, 1317, 1321, 1686, 1686, 1253, 1686, 1326, 1686, 1686, 1686, 1418, 1709, 1446, 1686, 1686, 1686, 1492, 1686, 1295, 1447, 1686, 1686, 1258, 1686, 1736, 1686, 1686, 1520, 1355, 1686, 1288, 1348, 1361, 1686, 1359, 1686, 1364, 1498, 1368, 1302, 1362, 1381, 1389, 1395, 1486, 1686, 1371, 1377, 1370, 1686, 1375, 1382, 1384, 1402, 1408, 1385, 1383, 1619, 1413, 1423, 1428, 1433, 1686, 1686, 1270, 1686, 1338, 1686, 1440, 1686, 1686, 1686, 1499, 1465, 1686, 1686, 1686, 1639, 1473, 1884, 1686, 1686, 1293, 1864, 1686, 1686, 1296, 1321, 1483, 1686, 1686, 1686, 1646, 1686, 1748, 1496, 1686, 1418, 1675, 1686, 1418, 1702, 1686, 1418, 1981, 1686, 1429, 1409, 1427, 1504, 1692, 1686, 1686, 1313, 1448, 1651, 1508, 1686, 1686, 1340, 1686, 1903, 1686, 1686, 1435, 1513, 1686, 1283, 1287, 1519, 1686, 1524, 1363, 1568, 1938, 1539, 1566, 1579, 1479, 1533, 1538, 1553, 1544, 1552, 1557, 1563, 1574, 1557, 1583, 1589, 1590, 1759, 1594, 1603, 1607, 1611, 1686, 1436, 1514, 1686, 1434, 1656, 1686, 1434, 1680, 1686, 1453, 1686, 1686, 1686, 1559, 1617, 1686, 1770, 1418, 1623, 1769, 1629, 1686, 1515, 1335, 1686, 1285, 1686, 1671, 1921, 1650, 1686, 1686, 1344, 1308, 1666, 1686, 1686, 1686, 1659, 1685, 1686, 1686, 1686, 1686, 1241, 1686, 1686, 1844, 1691, 1686, 1630, 1977, 1970, 1362, 1686, 1686, 1686, 1693, 1698, 1686, 1686, 1686, 1697, 1686, 1764, 1715, 1686, 1634, 1638, 1686, 1599, 1585, 1686, 1271, 1686, 1269, 1686, 1721, 1686, 1686, 1354, 1686, 1801, 1686, 1799, 1686, 1640, 1686, 1686, 1461, 1686, 1686, 1732, 1686, 1944, 1686, 1740, 1686, 1746, 1415, 1396, 1686, 1598, 1547, 1417, 1597, 1416, 1577, 1546, 1397, 1577, 1547, 1548, 1570, 1398, 1753, 1686, 1652, 1509, 1686, 1686, 1686, 1757, 1686, 1419, 1686, 1763, 1418, 1768, 1781, 1686, 1686, 1686, 1705, 1686, 2048, 1792, 1686, 1686, 1686, 1735, 1686, 1797, 1686, 1686, 1404, 1686, 1639, 1815, 1686, 1686, 1418, 2017, 1820, 1686, 1686, 1803, 1686, 1686, 1686, 1736, 1489, 1686, 1686, 1825, 1338, 1260, 1263, 1686, 1686, 1785, 1686, 1686, 1728, 1686, 1686, 1749, 1497, 1830, 1830, 1262, 1248, 1261, 1329, 1260, 1264, 1329, 1248, 1249, 1259, 1540, 1849, 1842, 1686, 1686, 1835, 1686, 1686, 1816, 1686, 1686, 1831, 1882, 1848, 1686, 1686, 1686, 1774, 2071, 1854, 1686, 1686, 1469, 1884, 1686, 1821, 1859, 1686, 1686, 1350, 1883, 1686, 1686, 1686, 1781, 1391, 1875, 1686, 1686, 1613, 1644, 1686, 1686, 1889, 1686, 1686, 1662, 1884, 1686, 1885, 1890, 1686, 1686, 1686, 1894, 1686, 1686, 1678, 1686, 1907, 1686, 1686, 1529, 1914, 1686, 1838, 1686, 1686, 1881, 1686, 1686, 1872, 1876, 1836, 1919, 1686, 1837, 1692, 1910, 1686, 1925, 1928, 1742, 1686, 1811, 1811, 1930, 1810, 1929, 1935, 1928, 1900, 1942, 1867, 1868, 1931, 1035, 1788, 1948, 1952, 1956, 1960, 1964, 1686, 1976, 1686, 1686, 1686, 2065, 1686, 1992, 2037, 1686, 1686, 1998, 2009, 1972, 2002, 1686, 1686, 1686, 2077, 1300, 2023, 1686, 1686, 1686, 1807, 2031, 1686, 1686, 1686, 1860, 1500, 2032, 1686, 1686, 1686, 2083, 1686, 2036, 1686, 1277, 1276, 2042, 1877, 1686, 1686, 2041, 1686, 1686, 2027, 2037, 2012, 1686, 2012, 1855, 1850, 1686, 2046, 1686, 1686, 2054, 1996, 1686, 1897, 1309, 2059, 2052, 1686, 2058, 1686, 1686, 2081, 1686, 1717, 1477, 1686, 1331, 1686, 1686, 1687, 1686, 1860, 1681, 1686, 1686, 1686, 1966, 1724, 1686, 1686, 1686, 1984, 2015, 1686, 1686, 1686, 1988, 1686, 2063, 1686, 1686, 1686, 2005, 1686, 1727, 1686, 1686, 1711, 1457, 2069, 1686, 1686, 1686, 2019, 2075, 1686, 1686, 1915, 1686, 1686, 1793, 1874, 1686, 1686, 1491, 1362, 1449, 1686, 1686, 1460, 2098, 2087, 2091, 2095, 2184, 2102, 2113, 2780, 2117, 2134, 2142, 2281, 2146, 2146, 2146, 2304, 2296, 2181, 2639, 2591, 2872, 2592, 2873, 2313, 2195, 2200, 2281, 2146, 2273, 2226, 2204, 2152, 2219, 2276, 2167, 2177, 2276, 2235, 2276, 2276, 2230, 2281, 2276, 2296, 2276, 2293, 2276, 2276, 2276, 2276, 2234, 2276, 2311, 2314, 2210, 2199, 2217, 2222, 2276, 2276, 2276, 2240, 2276, 2294, 2276, 2276, 2173, 2276, 2198, 2281, 2281, 2281, 2281, 2282, 2146, 2146, 2146, 2146, 2205, 2146, 2204, 2248, 2276, 2235, 2276, 2297, 2276, 2276, 2276, 2277, 2256, 2281, 2283, 2146, 2146, 2146, 2275, 2276, 2295, 2276, 2276, 2293, 2146, 2304, 2264, 2269, 2221, 2276, 2276, 2276, 2293, 2295, 2276, 2276, 2276, 2295, 2263, 2205, 2268, 2220, 2172, 2276, 2276, 2276, 2296, 2276, 2276, 2296, 2294, 2276, 2276, 2278, 2281, 2281, 2280, 2281, 2281, 2281, 2283, 2206, 2223, 2276, 2276, 2279, 2281, 2281, 2146, 2273, 2276, 2276, 2281, 2281, 2281, 2276, 2292, 2276, 2298, 2225, 2276, 2298, 2169, 2224, 2292, 2298, 2171, 2229, 2281, 2281, 2171, 2236, 2281, 2281, 2281, 2146, 2275, 2225, 2292, 2299, 2276, 2229, 2281, 2146, 2276, 2290, 2297, 2283, 2146, 2146, 2274, 2224, 2227, 2298, 2225, 2297, 2276, 2230, 2170, 2230, 2282, 2146, 2147, 2151, 2156, 2288, 2276, 2230, 2303, 2308, 2236, 2284, 2228, 2318, 2318, 2318, 2326, 2335, 2339, 2343, 2349, 2416, 2693, 2357, 2592, 2109, 2592, 2592, 2162, 2943, 2823, 2646, 2592, 2361, 2592, 2122, 2592, 2592, 2122, 2470, 2592, 2592, 2592, 2109, 2107, 2592, 2592, 2592, 2123, 2592, 2592, 2592, 2125, 2592, 2413, 2592, 2592, 2592, 2127, 2592, 2592, 2414, 2592, 2592, 2592, 2130, 2952, 2592, 2594, 2592, 2592, 2212, 2609, 2252, 2592, 2592, 2592, 2446, 2434, 2592, 2592, 2592, 2212, 2446, 2450, 2456, 2431, 2435, 2592, 2592, 2243, 2478, 2448, 2439, 2946, 2592, 2592, 2592, 2368, 2809, 2813, 2450, 2441, 2212, 2812, 2449, 2440, 2947, 2592, 2592, 2592, 2345, 2451, 2457, 2948, 2592, 2124, 2592, 2592, 2650, 2823, 2449, 2455, 2946, 2592, 2128, 2592, 2592, 2649, 2952, 2592, 2810, 2448, 2461, 2991, 2467, 2592, 2592, 2329, 2817, 2474, 2990, 2466, 2592, 2592, 2373, 2447, 2992, 2469, 2592, 2592, 2592, 2373, 2447, 2477, 2468, 2592, 2592, 2353, 2469, 2592, 2495, 2592, 2592, 2415, 2483, 2592, 2415, 2496, 2592, 2592, 2352, 2592, 2592, 2352, 2352, 2469, 2592, 2592, 2363, 2331, 2494, 2592, 2592, 2592, 2375, 2592, 2375, 2415, 2504, 2592, 2592, 2367, 2372, 2503, 2592, 2592, 2592, 2389, 2418, 2415, 2592, 2592, 2373, 2592, 2592, 2592, 2593, 2732, 2417, 2415, 2592, 2417, 2520, 2592, 2592, 2592, 2390, 2521, 2521, 2592, 2592, 2592, 2401, 2599, 2585, 2526, 2531, 2120, 2592, 2212, 2426, 2450, 2463, 2948, 2592, 2592, 2592, 2213, 2389, 2527, 2532, 2121, 2542, 2551, 2105, 2592, 2213, 2592, 2592, 2592, 2558, 2538, 2544, 2553, 2557, 2537, 2543, 2552, 2421, 2572, 2576, 2546, 2543, 2547, 2592, 2592, 2373, 2615, 2575, 2545, 2105, 2592, 2244, 2479, 2592, 2129, 2592, 2592, 2628, 2690, 2469, 2562, 2566, 2592, 2592, 2592, 2415, 2928, 2934, 2401, 2570, 2574, 2564, 2572, 2585, 2590, 2592, 2592, 2585, 2965, 2592, 2592, 2592, 2445, 2251, 2592, 2592, 2592, 2474, 2592, 2609, 2892, 2592, 2362, 2592, 2592, 2138, 2851, 2159, 2592, 2592, 2592, 2509, 2888, 2892, 2592, 2592, 2592, 2490, 2418, 2891, 2592, 2592, 2376, 2592, 2592, 2374, 2592, 2889, 2388, 2592, 2373, 2373, 2890, 2592, 2592, 2387, 2592, 2887, 2505, 2892, 2592, 2373, 2610, 2388, 2592, 2592, 2376, 2373, 2592, 2887, 2891, 2592, 2374, 2592, 2592, 2608, 2159, 2614, 2620, 2592, 2592, 2394, 2594, 2887, 2399, 2592, 2887, 2397, 2508, 2374, 2507, 2592, 2375, 2592, 2592, 2592, 2595, 2508, 2506, 2592, 2506, 2505, 2505, 2592, 2507, 2637, 2505, 2592, 2592, 2401, 2661, 2592, 2643, 2592, 2592, 2417, 2592, 2655, 2592, 2592, 2592, 2510, 2414, 2656, 2592, 2592, 2592, 2516, 2592, 2593, 2660, 2665, 2880, 2592, 2592, 2592, 2522, 2767, 2666, 2881, 2592, 2592, 2420, 2571, 2696, 2592, 2592, 2592, 2580, 2572, 2686, 2632, 2698, 2592, 2383, 2514, 2592, 2163, 2932, 2465, 2685, 2631, 2697, 2592, 2388, 2592, 2592, 2212, 2604, 2671, 2632, 2678, 2592, 2401, 2405, 2409, 2592, 2592, 2592, 2679, 2592, 2592, 2592, 2592, 2108, 2677, 2591, 2592, 2592, 2592, 2419, 2592, 2683, 2187, 2191, 2469, 2671, 2189, 2467, 2592, 2401, 2629, 2633, 2702, 2468, 2592, 2592, 2421, 2536, 2703, 2469, 2592, 2592, 2422, 2573, 2593, 2672, 2467, 2592, 2402, 2406, 2592, 2402, 2979, 2592, 2592, 2626, 2673, 2467, 2592, 2446, 2259, 2947, 2592, 2377, 2709, 2592, 2592, 2522, 2862, 2713, 2468, 2592, 2592, 2581, 2572, 2562, 2374, 2374, 2592, 2376, 2721, 2724, 2592, 2592, 2624, 2373, 2731, 2592, 2592, 2592, 2626, 2732, 2592, 2592, 2592, 2755, 2656, 2726, 2736, 2741, 2592, 2486, 2593, 2381, 2592, 2727, 2737, 2742, 2715, 2747, 2753, 2592, 2498, 2469, 2873, 2743, 2592, 2592, 2592, 2791, 2759, 2763, 2592, 2592, 2627, 2704, 2592, 2592, 2522, 2789, 2593, 2761, 2753, 2592, 2498, 2863, 2592, 2592, 2767, 2592, 2592, 2592, 2792, 2789, 2592, 2592, 2592, 2803, 2126, 2592, 2592, 2592, 2811, 2122, 2592, 2592, 2592, 2834, 2777, 2592, 2592, 2592, 2848, 2936, 2591, 2489, 2797, 2592, 2592, 2670, 2631, 2490, 2798, 2592, 2592, 2592, 2963, 2807, 2592, 2592, 2592, 2965, 2838, 2592, 2592, 2592, 2975, 2330, 2818, 2829, 2592, 2498, 2939, 2592, 2498, 2592, 2791, 2331, 2819, 2830, 2592, 2592, 2592, 2982, 2834, 2817, 2828, 2106, 2592, 2592, 2592, 2405, 2405, 2817, 2828, 2592, 2592, 2415, 2849, 2842, 2592, 2522, 2773, 2592, 2522, 2868, 2592, 2580, 2600, 2586, 2137, 2850, 2843, 2592, 2592, 2855, 2937, 2844, 2592, 2592, 2592, 2987, 2936, 2591, 2592, 2592, 2684, 2630, 2592, 2856, 2938, 2592, 2592, 2860, 2939, 2592, 2592, 2872, 2592, 2861, 2591, 2592, 2592, 2887, 2616, 2592, 2867, 2592, 2592, 2708, 2592, 2498, 2469, 2498, 2497, 2785, 2773, 2499, 2783, 2770, 2877, 2877, 2877, 2772, 2592, 2592, 2345, 2885, 2592, 2592, 2592, 2715, 2762, 2515, 2896, 2592, 2592, 2715, 2917, 2516, 2897, 2592, 2592, 2592, 2901, 2906, 2911, 2592, 2592, 2956, 2960, 2715, 2902, 2907, 2912, 2593, 2916, 2920, 2820, 2922, 2822, 2592, 2592, 2715, 2927, 2921, 2821, 2106, 2592, 2592, 2974, 2408, 2321, 2821, 2106, 2592, 2592, 2983, 2592, 2593, 2404, 2408, 2592, 2592, 2717, 2749, 2716, 2928, 2322, 2822, 2593, 2926, 2919, 2820, 2934, 2823, 2592, 2592, 2592, 2651, 2824, 2592, 2592, 2592, 2130, 2952, 2592, 2592, 2592, 2592, 2964, 2592, 2592, 2716, 2748, 2592, 2969, 2592, 2592, 2716, 2918, 2368, 2970, 2592, 2592, 2592, 2403, 2407, 2592, 2592, 2787, 2211, 2404, 2409, 2592, 2592, 2802, 2837, 2987, 2592, 2592, 2592, 2809, 2427, 2592, 2793, 2592, 2592, 2809, 2447, 1073741824, 0x80000000, 539754496, 542375936, 402653184, 554434560, 571736064, 545521856, 268451840, 335544320, 268693630, 512, 2048, 256, 1024, 0, 1024, 0, 1073741824, 0x80000000, 0, 0, 0, 8388608, 0, 0, 1073741824, 1073741824, 0, 0x80000000, 537133056, 4194304, 1048576, 268435456, -1073741824, 0, 0, 0, 1048576, 0, 0, 0, 1572864, 0, 0, 0, 4194304, 0, 134217728, 16777216, 0, 0, 32, 64, 98304, 0, 33554432, 8388608, 192, 67108864, 67108864, 67108864, 67108864, 16, 32, 4, 0, 8192, 196608, 196608, 229376, 80, 4096, 524288, 8388608, 0, 0, 32, 128, 256, 24576, 24600, 24576, 24576, 2, 24576, 24576, 24576, 24584, 24592, 24576, 24578, 24576, 24578, 24576, 24576, 16, 512, 2048, 2048, 256, 4096, 32768, 1048576, 4194304, 67108864, 134217728, 268435456, 262144, 134217728, 0, 128, 128, 64, 16384, 16384, 16384, 67108864, 32, 32, 4, 4, 4096, 262144, 134217728, 0, 0, 0, 2, 0, 8192, 131072, 131072, 4096, 4096, 4096, 4096, 24576, 24576, 24576, 8, 8, 24576, 24576, 16384, 16384, 16384, 24576, 24584, 24576, 24576, 24576, 16384, 24576, 536870912, 262144, 0, 0, 32, 2048, 8192, 4, 4096, 4096, 4096, 786432, 8388608, 16777216, 0, 128, 16384, 16384, 16384, 32768, 65536, 2097152, 32, 32, 32, 32, 4, 4, 4, 4, 4, 4096, 67108864, 67108864, 67108864, 24576, 24576, 24576, 24576, 0, 16384, 16384, 16384, 16384, 67108864, 67108864, 8, 67108864, 24576, 8, 8, 8, 24576, 24576, 24576, 24578, 24576, 24576, 24576, 2, 2, 2, 16384, 67108864, 67108864, 67108864, 32, 67108864, 8, 8, 24576, 2048, 0x80000000, 536870912, 262144, 262144, 262144, 67108864, 8, 24576, 16384, 32768, 1048576, 4194304, 25165824, 67108864, 24576, 32770, 2, 4, 112, 512, 98304, 524288, 50, 402653186, 1049090, 1049091, 10, 66, 100925514, 10, 66, 12582914, 0, 0, -1678194207, -1678194207, -1041543218, 0, 32768, 0, 0, 32, 65536, 268435456, 1, 1, 513, 1048577, 0, 12582912, 0, 0, 0, 4, 1792, 0, 0, 0, 7, 29360128, 0, 0, 0, 8, 0, 0, 0, 12, 1, 1, 0, 0, -604102721, -604102721, 4194304, 8388608, 0, 0, 0, 31, 925600, 997981306, 997981306, 997981306, 0, 0, 2048, 8388608, 0, 0, 1, 2, 4, 32, 64, 512, 8192, 0, 0, 0, 245760, 997720064, 0, 0, 0, 32, 0, 0, 0, 3, 12, 16, 32, 8, 112, 3072, 12288, 16384, 32768, 65536, 131072, 7864320, 16777216, 973078528, 0, 0, 65536, 131072, 3670016, 4194304, 16777216, 33554432, 2, 8, 48, 2048, 8192, 16384, 32768, 65536, 131072, 524288, 131072, 524288, 3145728, 4194304, 16777216, 33554432, 65536, 131072, 2097152, 4194304, 16777216, 33554432, 134217728, 268435456, 536870912, 0, 0, 0, 1024, 0, 8, 48, 2048, 8192, 65536, 33554432, 268435456, 536870912, 65536, 268435456, 536870912, 0, 0, 32768, 0, 0, 126, 623104, 65011712, 0, 32, 65536, 536870912, 0, 0, 65536, 524288, 0, 32, 65536, 0, 0, 0, 2048, 0, 0, 0, 15482, 245760, -604102721, 0, 0, 0, 18913, 33062912, 925600, -605028352, 0, 0, 0, 65536, 31, 8096, 131072, 786432, 3145728, 3145728, 12582912, 50331648, 134217728, 268435456, 160, 256, 512, 7168, 131072, 786432, 131072, 786432, 1048576, 2097152, 12582912, 16777216, 268435456, 1073741824, 0x80000000, 12582912, 16777216, 33554432, 268435456, 1073741824, 0x80000000, 3, 12, 16, 160, 256, 7168, 786432, 1048576, 12582912, 16777216, 268435456, 1073741824, 0, 8, 16, 32, 128, 256, 512, 7168, 786432, 1048576, 2097152, 0, 1, 2, 8, 16, 7168, 786432, 1048576, 8388608, 16777216, 16777216, 1073741824, 0, 0, 0, 0, 1, 0, 0, 8, 32, 128, 256, 7168, 8, 32, 0, 3072, 0, 8, 32, 3072, 4096, 524288, 8, 32, 0, 0, 3072, 4096, 0, 2048, 524288, 8388608, 8, 2048, 0, 0, 1, 12, 256, 4096, 32768, 262144, 1048576, 4194304, 67108864, 0, 2048, 0, 2048, 2048, 1073741824, -58805985, -58805985, -58805985, 0, 0, 262144, 0, 0, 32, 4194304, 16777216, 134217728, 4382, 172032, -58982400, 0, 0, 2, 28, 256, 4096, 8192, 8192, 32768, 131072, 262144, 524288, 1, 2, 12, 256, 4096, 0, 0, 4194304, 67108864, 134217728, 805306368, 1073741824, 0, 0, 1, 2, 12, 16, 256, 4096, 1048576, 67108864, 134217728, 268435456, 0, 512, 1048576, 4194304, 201326592, 1879048192, 0, 0, 12, 256, 4096, 134217728, 268435456, 536870912, 12, 256, 268435456, 536870912, 0, 12, 256, 0, 0, 1, 32, 64, 512, 0, 0, 205236961, 205236961, 0, 0, 0, 1, 96, 640, 1, 10976, 229376, 204996608, 0, 640, 2048, 8192, 229376, 1572864, 1572864, 2097152, 201326592, 0, 0, 0, 64, 512, 2048, 229376, 1572864, 201326592, 1572864, 201326592, 0, 0, 1, 4382, 0, 1, 32, 2048, 65536, 131072, 1572864, 201326592, 131072, 1572864, 134217728, 0, 0, 524288, 524288, 0, 0, 0, -68582786, -68582786, -68582786, 0, 0, 2097152, 524288, 0, 524288, 0, 0, 65536, 131072, 1572864, 0, 0, 2, 4, 0, 0, 65011712, -134217728, 0, 0, 0, 0, 2, 4, 120, 512, -268435456, 0, 0, 0, 2, 8, 48, 64, 2048, 8192, 98304, 524288, 2097152, 4194304, 25165824, 33554432, 134217728, 268435456, 0x80000000, 0, 0, 25165824, 33554432, 134217728, 1879048192, 0x80000000, 0, 0, 4, 112, 512, 622592, 65011712, 134217728, -268435456, 16777216, 33554432, 134217728, 1610612736, 0, 0, 0, 64, 98304, 524288, 4194304, 16777216, 33554432, 0, 98304, 524288, 16777216, 33554432, 0, 65536, 524288, 33554432, 536870912, 1073741824, 0, 65536, 524288, 536870912, 1073741824, 0, 0, 65536, 524288, 536870912, 0, 524288, 0, 524288, 524288, 1048576, 2086666240, 0x80000000, 0, -1678194207, 0, 0, 0, 8, 32, 2048, 524288, 8388608, 0, 0, 33062912, 436207616, 0x80000000, 0, 0, 32, 64, 2432, 16384, 32768, 32768, 524288, 3145728, 4194304, 25165824, 25165824, 167772160, 268435456, 0x80000000, 0, 32, 64, 384, 2048, 16384, 32768, 1048576, 2097152, 4194304, 25165824, 32, 64, 128, 256, 2048, 16384, 2048, 16384, 1048576, 4194304, 16777216, 33554432, 134217728, 536870912, 1073741824, 0, 0, 2048, 16384, 4194304, 16777216, 33554432, 134217728, 805306368, 0, 0, 16777216, 134217728, 268435456, 0x80000000, 0, 622592, 622592, 622592, 8807, 8807, 434791, 0, 0, 16777216, 0, 0, 0, 7, 608, 8192, 0, 0, 0, 3, 4, 96, 512, 32, 64, 8192, 0, 0, 16777216, 134217728, 0, 0, 2, 4, 8192, 16384, 65536, 2097152, 33554432, 268435456 -]; - -JSONiqTokenizer.TOKEN = -[ - "(0)", - "ModuleDecl", - "Annotation", - "OptionDecl", - "Operator", - "Variable", - "Tag", - "EndTag", - "PragmaContents", - "DirCommentContents", - "DirPIContents", - "CDataSectionContents", - "AttrTest", - "Wildcard", - "EQName", - "IntegerLiteral", - "DecimalLiteral", - "DoubleLiteral", - "PredefinedEntityRef", - "'\"\"'", - "EscapeApos", - "QuotChar", - "AposChar", - "ElementContentChar", - "QuotAttrContentChar", - "AposAttrContentChar", - "NCName", - "QName", - "S", - "CharRef", - "CommentContents", - "DocTag", - "DocCommentContents", - "EOF", - "'!'", - "'\"'", - "'#'", - "'#)'", - "''''", - "'('", - "'(#'", - "'(:'", - "'(:~'", - "')'", - "'*'", - "'*'", - "','", - "'-->'", - "'.'", - "'/'", - "'/>'", - "':'", - "':)'", - "';'", - "'", next : "start"}, - {defaultToken : "comment"} - ], - - tag : [{ - token : ["meta.tag.punctuation.begin", "meta.tag.name"], - regex : "(<)((?:[-_a-zA-Z0-9]+:)?[-_a-zA-Z0-9]+)", - next: [ - {include : "attributes"}, - {token : "meta.tag.punctuation.end", regex : "/?>", next : "start"} - ] - }, { - token : ["meta.tag.punctuation.begin", "meta.tag.name"], - regex : "(", next : "start"} - ] - }], - - space : [ - {token : "text", regex : "\\s+"} - ], - - reference : [{ - token : "constant.language.escape", - regex : "(?:&#[0-9]+;)|(?:&#x[0-9a-fA-F]+;)|(?:&[a-zA-Z0-9_:\\.-]+;)" - }, { - token : "text", regex : "&" - }], - - string: [{ - token : "string", - regex : "'", - push : "qstring_inner" - }, { - token : "string", - regex : '"', - push : "qqstring_inner" - }], - - qstring_inner: [ - {token : "string", regex: "'", next: "pop"}, - {include : "reference"}, - {defaultToken : "string"} - ], - - qqstring_inner: [ - {token : "string", regex: '"', next: "pop"}, - {include : "reference"}, - {defaultToken : "string"} - ], - - attributes: [{ - token : "entity.other.attribute-name", - regex : "(?:[-_a-zA-Z0-9]+:)?[-_a-zA-Z0-9]+" - }, { - token : "keyword.operator.separator", - regex : "=" - }, { - include : "space" - }, { - include : "string" - }] - }; - - if (this.constructor === XmlHighlightRules) - this.normalizeRules(); -}; - - -(function() { - - this.embedTagRules = function(HighlightRules, prefix, tag){ - this.$rules.tag.unshift({ - token : ["meta.tag.punctuation.begin", "meta.tag.name." + tag], - regex : "(<)(" + tag + ")", - next: [ - {include : "space"}, - {include : "attributes"}, - {token : "meta.tag.punctuation.end", regex : "/?>", next : prefix + "start"} - ] - }); - - this.$rules[tag + "-end"] = [ - {include : "space"}, - {token : "meta.tag.punctuation.end", regex : ">", next: "start", - onMatch : function(value, currentState, stack) { - stack.splice(0); - return this.token; - }} - ] - - this.embedRules(HighlightRules, prefix, [{ - token: ["meta.tag.punctuation.begin", "meta.tag.name." + tag], - regex : "(" - }]); - }; - -}).call(TextHighlightRules.prototype); - -oop.inherits(XmlHighlightRules, TextHighlightRules); - -exports.XmlHighlightRules = XmlHighlightRules; -}); - -ace.define('ace/mode/xml_util', ['require', 'exports', 'module' ], function(require, exports, module) { - - -function string(state) { - return [{ - token : "string", - regex : '"', - next : state + "_qqstring" - }, { - token : "string", - regex : "'", - next : state + "_qstring" - }]; -} - -function multiLineString(quote, state) { - return [ - {token : "string", regex : quote, next : state}, - { - token : "constant.language.escape", - regex : "(?:&#[0-9]+;)|(?:&#x[0-9a-fA-F]+;)|(?:&[a-zA-Z0-9_:\\.-]+;)" - }, - {defaultToken : "string"} - ]; -} - -exports.tag = function(states, name, nextState, tagMap) { - states[name] = [{ - token : "text", - regex : "\\s+" - }, { - - token : !tagMap ? "meta.tag.tag-name" : function(value) { - if (tagMap[value]) - return "meta.tag.tag-name." + tagMap[value]; - else - return "meta.tag.tag-name"; - }, - regex : "[-_a-zA-Z0-9:]+", - next : name + "_embed_attribute_list" - }, { - token: "empty", - regex: "", - next : name + "_embed_attribute_list" - }]; - - states[name + "_qstring"] = multiLineString("'", name + "_embed_attribute_list"); - states[name + "_qqstring"] = multiLineString("\"", name + "_embed_attribute_list"); - - states[name + "_embed_attribute_list"] = [{ - token : "meta.tag.r", - regex : "/?>", - next : nextState - }, { - token : "keyword.operator", - regex : "=" - }, { - token : "entity.other.attribute-name", - regex : "[-_a-zA-Z0-9:]+" - }, { - token : "constant.numeric", // float - regex : "[+-]?\\d+(?:(?:\\.\\d*)?(?:[eE][+-]?\\d+)?)?\\b" - }, { - token : "text", - regex : "\\s+" - }].concat(string(name)); -}; - -}); -ace.define('ace/mode/java_highlight_rules', ['require', 'exports', 'module' , 'ace/lib/oop', 'ace/mode/doc_comment_highlight_rules', 'ace/mode/text_highlight_rules'], function(require, exports, module) { - - -var oop = require("../lib/oop"); -var DocCommentHighlightRules = require("./doc_comment_highlight_rules").DocCommentHighlightRules; -var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; - -var JavaHighlightRules = function() { - var keywords = ( - "abstract|continue|for|new|switch|" + - "assert|default|goto|package|synchronized|" + - "boolean|do|if|private|this|" + - "break|double|implements|protected|throw|" + - "byte|else|import|public|throws|" + - "case|enum|instanceof|return|transient|" + - "catch|extends|int|short|try|" + - "char|final|interface|static|void|" + - "class|finally|long|strictfp|volatile|" + - "const|float|native|super|while" - ); - - var buildinConstants = ("null|Infinity|NaN|undefined"); - - - var langClasses = ( - "AbstractMethodError|AssertionError|ClassCircularityError|"+ - "ClassFormatError|Deprecated|EnumConstantNotPresentException|"+ - "ExceptionInInitializerError|IllegalAccessError|"+ - "IllegalThreadStateException|InstantiationError|InternalError|"+ - "NegativeArraySizeException|NoSuchFieldError|Override|Process|"+ - "ProcessBuilder|SecurityManager|StringIndexOutOfBoundsException|"+ - "SuppressWarnings|TypeNotPresentException|UnknownError|"+ - "UnsatisfiedLinkError|UnsupportedClassVersionError|VerifyError|"+ - "InstantiationException|IndexOutOfBoundsException|"+ - "ArrayIndexOutOfBoundsException|CloneNotSupportedException|"+ - "NoSuchFieldException|IllegalArgumentException|NumberFormatException|"+ - "SecurityException|Void|InheritableThreadLocal|IllegalStateException|"+ - "InterruptedException|NoSuchMethodException|IllegalAccessException|"+ - "UnsupportedOperationException|Enum|StrictMath|Package|Compiler|"+ - "Readable|Runtime|StringBuilder|Math|IncompatibleClassChangeError|"+ - "NoSuchMethodError|ThreadLocal|RuntimePermission|ArithmeticException|"+ - "NullPointerException|Long|Integer|Short|Byte|Double|Number|Float|"+ - "Character|Boolean|StackTraceElement|Appendable|StringBuffer|"+ - "Iterable|ThreadGroup|Runnable|Thread|IllegalMonitorStateException|"+ - "StackOverflowError|OutOfMemoryError|VirtualMachineError|"+ - "ArrayStoreException|ClassCastException|LinkageError|"+ - "NoClassDefFoundError|ClassNotFoundException|RuntimeException|"+ - "Exception|ThreadDeath|Error|Throwable|System|ClassLoader|"+ - "Cloneable|Class|CharSequence|Comparable|String|Object" - ); - - var keywordMapper = this.createKeywordMapper({ - "variable.language": "this", - "keyword": keywords, - "constant.language": buildinConstants, - "support.function": langClasses - }, "identifier"); - - this.$rules = { - "start" : [ - { - token : "comment", - regex : "\\/\\/.*$" - }, - DocCommentHighlightRules.getStartRule("doc-start"), - { - token : "comment", // multi line comment - regex : "\\/\\*", - next : "comment" - }, { - token : "string.regexp", - regex : "[/](?:(?:\\[(?:\\\\]|[^\\]])+\\])|(?:\\\\/|[^\\]/]))*[/]\\w*\\s*(?=[).,;]|$)" - }, { - token : "string", // single line - regex : '["](?:(?:\\\\.)|(?:[^"\\\\]))*?["]' - }, { - token : "string", // single line - regex : "['](?:(?:\\\\.)|(?:[^'\\\\]))*?[']" - }, { - token : "constant.numeric", // hex - regex : "0[xX][0-9a-fA-F]+\\b" - }, { - token : "constant.numeric", // float - regex : "[+-]?\\d+(?:(?:\\.\\d*)?(?:[eE][+-]?\\d+)?)?\\b" - }, { - token : "constant.language.boolean", - regex : "(?:true|false)\\b" - }, { - token : keywordMapper, - regex : "[a-zA-Z_$][a-zA-Z0-9_$]*\\b" - }, { - token : "keyword.operator", - regex : "!|\\$|%|&|\\*|\\-\\-|\\-|\\+\\+|\\+|~|===|==|=|!=|!==|<=|>=|<<=|>>=|>>>=|<>|<|>|!|&&|\\|\\||\\?\\:|\\*=|%=|\\+=|\\-=|&=|\\^=|\\b(?:in|instanceof|new|delete|typeof|void)" - }, { - token : "lparen", - regex : "[[({]" - }, { - token : "rparen", - regex : "[\\])}]" - }, { - token : "text", - regex : "\\s+" - } - ], - "comment" : [ - { - token : "comment", // closing comment - regex : ".*?\\*\\/", - next : "start" - }, { - token : "comment", // comment spanning whole line - regex : ".+" - } - ] - }; - - this.embedRules(DocCommentHighlightRules, "doc-", - [ DocCommentHighlightRules.getEndRule("start") ]); -}; - -oop.inherits(JavaHighlightRules, TextHighlightRules); - -exports.JavaHighlightRules = JavaHighlightRules; -}); - -ace.define('ace/mode/matching_brace_outdent', ['require', 'exports', 'module' , 'ace/range'], function(require, exports, module) { - - -var Range = require("../range").Range; - -var MatchingBraceOutdent = function() {}; - -(function() { - - this.checkOutdent = function(line, input) { - if (! /^\s+$/.test(line)) - return false; - - return /^\s*\}/.test(input); - }; - - this.autoOutdent = function(doc, row) { - var line = doc.getLine(row); - var match = line.match(/^(\s*\})/); - - if (!match) return 0; - - var column = match[1].length; - var openBracePos = doc.findMatchingBracket({row: row, column: column}); - - if (!openBracePos || openBracePos.row == row) return 0; - - var indent = this.$getIndent(doc.getLine(openBracePos.row)); - doc.replace(new Range(row, 0, row, column-1), indent); - }; - - this.$getIndent = function(line) { - return line.match(/^\s*/)[0]; - }; - -}).call(MatchingBraceOutdent.prototype); - -exports.MatchingBraceOutdent = MatchingBraceOutdent; -}); - -ace.define('ace/mode/behaviour/cstyle', ['require', 'exports', 'module' , 'ace/lib/oop', 'ace/mode/behaviour', 'ace/token_iterator', 'ace/lib/lang'], function(require, exports, module) { - - -var oop = require("../../lib/oop"); -var Behaviour = require("../behaviour").Behaviour; -var TokenIterator = require("../../token_iterator").TokenIterator; -var lang = require("../../lib/lang"); - -var SAFE_INSERT_IN_TOKENS = - ["text", "paren.rparen", "punctuation.operator"]; -var SAFE_INSERT_BEFORE_TOKENS = - ["text", "paren.rparen", "punctuation.operator", "comment"]; - - -var autoInsertedBrackets = 0; -var autoInsertedRow = -1; -var autoInsertedLineEnd = ""; -var maybeInsertedBrackets = 0; -var maybeInsertedRow = -1; -var maybeInsertedLineStart = ""; -var maybeInsertedLineEnd = ""; - -var CstyleBehaviour = function () { - - CstyleBehaviour.isSaneInsertion = function(editor, session) { - var cursor = editor.getCursorPosition(); - var iterator = new TokenIterator(session, cursor.row, cursor.column); - if (!this.$matchTokenType(iterator.getCurrentToken() || "text", SAFE_INSERT_IN_TOKENS)) { - var iterator2 = new TokenIterator(session, cursor.row, cursor.column + 1); - if (!this.$matchTokenType(iterator2.getCurrentToken() || "text", SAFE_INSERT_IN_TOKENS)) - return false; - } - iterator.stepForward(); - return iterator.getCurrentTokenRow() !== cursor.row || - this.$matchTokenType(iterator.getCurrentToken() || "text", SAFE_INSERT_BEFORE_TOKENS); - }; - - CstyleBehaviour.$matchTokenType = function(token, types) { - return types.indexOf(token.type || token) > -1; - }; - - CstyleBehaviour.recordAutoInsert = function(editor, session, bracket) { - var cursor = editor.getCursorPosition(); - var line = session.doc.getLine(cursor.row); - if (!this.isAutoInsertedClosing(cursor, line, autoInsertedLineEnd[0])) - autoInsertedBrackets = 0; - autoInsertedRow = cursor.row; - autoInsertedLineEnd = bracket + line.substr(cursor.column); - autoInsertedBrackets++; - }; - - CstyleBehaviour.recordMaybeInsert = function(editor, session, bracket) { - var cursor = editor.getCursorPosition(); - var line = session.doc.getLine(cursor.row); - if (!this.isMaybeInsertedClosing(cursor, line)) - maybeInsertedBrackets = 0; - maybeInsertedRow = cursor.row; - maybeInsertedLineStart = line.substr(0, cursor.column) + bracket; - maybeInsertedLineEnd = line.substr(cursor.column); - maybeInsertedBrackets++; - }; - - CstyleBehaviour.isAutoInsertedClosing = function(cursor, line, bracket) { - return autoInsertedBrackets > 0 && - cursor.row === autoInsertedRow && - bracket === autoInsertedLineEnd[0] && - line.substr(cursor.column) === autoInsertedLineEnd; - }; - - CstyleBehaviour.isMaybeInsertedClosing = function(cursor, line) { - return maybeInsertedBrackets > 0 && - cursor.row === maybeInsertedRow && - line.substr(cursor.column) === maybeInsertedLineEnd && - line.substr(0, cursor.column) == maybeInsertedLineStart; - }; - - CstyleBehaviour.popAutoInsertedClosing = function() { - autoInsertedLineEnd = autoInsertedLineEnd.substr(1); - autoInsertedBrackets--; - }; - - CstyleBehaviour.clearMaybeInsertedClosing = function() { - maybeInsertedBrackets = 0; - maybeInsertedRow = -1; - }; - - this.add("braces", "insertion", function (state, action, editor, session, text) { - var cursor = editor.getCursorPosition(); - var line = session.doc.getLine(cursor.row); - if (text == '{') { - var selection = editor.getSelectionRange(); - var selected = session.doc.getTextRange(selection); - if (selected !== "" && selected !== "{" && editor.getWrapBehavioursEnabled()) { - return { - text: '{' + selected + '}', - selection: false - }; - } else if (CstyleBehaviour.isSaneInsertion(editor, session)) { - if (/[\]\}\)]/.test(line[cursor.column]) || editor.inMultiSelectMode) { - CstyleBehaviour.recordAutoInsert(editor, session, "}"); - return { - text: '{}', - selection: [1, 1] - }; - } else { - CstyleBehaviour.recordMaybeInsert(editor, session, "{"); - return { - text: '{', - selection: [1, 1] - }; - } - } - } else if (text == '}') { - var rightChar = line.substring(cursor.column, cursor.column + 1); - if (rightChar == '}') { - var matching = session.$findOpeningBracket('}', {column: cursor.column + 1, row: cursor.row}); - if (matching !== null && CstyleBehaviour.isAutoInsertedClosing(cursor, line, text)) { - CstyleBehaviour.popAutoInsertedClosing(); - return { - text: '', - selection: [1, 1] - }; - } - } - } else if (text == "\n" || text == "\r\n") { - var closing = ""; - if (CstyleBehaviour.isMaybeInsertedClosing(cursor, line)) { - closing = lang.stringRepeat("}", maybeInsertedBrackets); - CstyleBehaviour.clearMaybeInsertedClosing(); - } - var rightChar = line.substring(cursor.column, cursor.column + 1); - if (rightChar === '}') { - var openBracePos = session.findMatchingBracket({row: cursor.row, column: cursor.column+1}, '}'); - if (!openBracePos) - return null; - var next_indent = this.$getIndent(session.getLine(openBracePos.row)); - } else if (closing) { - var next_indent = this.$getIndent(line); - } else { - return; - } - var indent = next_indent + session.getTabString(); - - return { - text: '\n' + indent + '\n' + next_indent + closing, - selection: [1, indent.length, 1, indent.length] - }; - } else { - CstyleBehaviour.clearMaybeInsertedClosing(); - } - }); - - this.add("braces", "deletion", function (state, action, editor, session, range) { - var selected = session.doc.getTextRange(range); - if (!range.isMultiLine() && selected == '{') { - var line = session.doc.getLine(range.start.row); - var rightChar = line.substring(range.end.column, range.end.column + 1); - if (rightChar == '}') { - range.end.column++; - return range; - } else { - maybeInsertedBrackets--; - } - } - }); - - this.add("parens", "insertion", function (state, action, editor, session, text) { - if (text == '(') { - var selection = editor.getSelectionRange(); - var selected = session.doc.getTextRange(selection); - if (selected !== "" && editor.getWrapBehavioursEnabled()) { - return { - text: '(' + selected + ')', - selection: false - }; - } else if (CstyleBehaviour.isSaneInsertion(editor, session)) { - CstyleBehaviour.recordAutoInsert(editor, session, ")"); - return { - text: '()', - selection: [1, 1] - }; - } - } else if (text == ')') { - var cursor = editor.getCursorPosition(); - var line = session.doc.getLine(cursor.row); - var rightChar = line.substring(cursor.column, cursor.column + 1); - if (rightChar == ')') { - var matching = session.$findOpeningBracket(')', {column: cursor.column + 1, row: cursor.row}); - if (matching !== null && CstyleBehaviour.isAutoInsertedClosing(cursor, line, text)) { - CstyleBehaviour.popAutoInsertedClosing(); - return { - text: '', - selection: [1, 1] - }; - } - } - } - }); - - this.add("parens", "deletion", function (state, action, editor, session, range) { - var selected = session.doc.getTextRange(range); - if (!range.isMultiLine() && selected == '(') { - var line = session.doc.getLine(range.start.row); - var rightChar = line.substring(range.start.column + 1, range.start.column + 2); - if (rightChar == ')') { - range.end.column++; - return range; - } - } - }); - - this.add("brackets", "insertion", function (state, action, editor, session, text) { - if (text == '[') { - var selection = editor.getSelectionRange(); - var selected = session.doc.getTextRange(selection); - if (selected !== "" && editor.getWrapBehavioursEnabled()) { - return { - text: '[' + selected + ']', - selection: false - }; - } else if (CstyleBehaviour.isSaneInsertion(editor, session)) { - CstyleBehaviour.recordAutoInsert(editor, session, "]"); - return { - text: '[]', - selection: [1, 1] - }; - } - } else if (text == ']') { - var cursor = editor.getCursorPosition(); - var line = session.doc.getLine(cursor.row); - var rightChar = line.substring(cursor.column, cursor.column + 1); - if (rightChar == ']') { - var matching = session.$findOpeningBracket(']', {column: cursor.column + 1, row: cursor.row}); - if (matching !== null && CstyleBehaviour.isAutoInsertedClosing(cursor, line, text)) { - CstyleBehaviour.popAutoInsertedClosing(); - return { - text: '', - selection: [1, 1] - }; - } - } - } - }); - - this.add("brackets", "deletion", function (state, action, editor, session, range) { - var selected = session.doc.getTextRange(range); - if (!range.isMultiLine() && selected == '[') { - var line = session.doc.getLine(range.start.row); - var rightChar = line.substring(range.start.column + 1, range.start.column + 2); - if (rightChar == ']') { - range.end.column++; - return range; - } - } - }); - - this.add("string_dquotes", "insertion", function (state, action, editor, session, text) { - if (text == '"' || text == "'") { - var quote = text; - var selection = editor.getSelectionRange(); - var selected = session.doc.getTextRange(selection); - if (selected !== "" && selected !== "'" && selected != '"' && editor.getWrapBehavioursEnabled()) { - return { - text: quote + selected + quote, - selection: false - }; - } else { - var cursor = editor.getCursorPosition(); - var line = session.doc.getLine(cursor.row); - var leftChar = line.substring(cursor.column-1, cursor.column); - if (leftChar == '\\') { - return null; - } - var tokens = session.getTokens(selection.start.row); - var col = 0, token; - var quotepos = -1; // Track whether we're inside an open quote. - - for (var x = 0; x < tokens.length; x++) { - token = tokens[x]; - if (token.type == "string") { - quotepos = -1; - } else if (quotepos < 0) { - quotepos = token.value.indexOf(quote); - } - if ((token.value.length + col) > selection.start.column) { - break; - } - col += tokens[x].value.length; - } - if (!token || (quotepos < 0 && token.type !== "comment" && (token.type !== "string" || ((selection.start.column !== token.value.length+col-1) && token.value.lastIndexOf(quote) === token.value.length-1)))) { - if (!CstyleBehaviour.isSaneInsertion(editor, session)) - return; - return { - text: quote + quote, - selection: [1,1] - }; - } else if (token && token.type === "string") { - var rightChar = line.substring(cursor.column, cursor.column + 1); - if (rightChar == quote) { - return { - text: '', - selection: [1, 1] - }; - } - } - } - } - }); - - this.add("string_dquotes", "deletion", function (state, action, editor, session, range) { - var selected = session.doc.getTextRange(range); - if (!range.isMultiLine() && (selected == '"' || selected == "'")) { - var line = session.doc.getLine(range.start.row); - var rightChar = line.substring(range.start.column + 1, range.start.column + 2); - if (rightChar == selected) { - range.end.column++; - return range; - } - } - }); - -}; - -oop.inherits(CstyleBehaviour, Behaviour); - -exports.CstyleBehaviour = CstyleBehaviour; -}); - -ace.define('ace/mode/folding/cstyle', ['require', 'exports', 'module' , 'ace/lib/oop', 'ace/range', 'ace/mode/folding/fold_mode'], function(require, exports, module) { - - -var oop = require("../../lib/oop"); -var Range = require("../../range").Range; -var BaseFoldMode = require("./fold_mode").FoldMode; - -var FoldMode = exports.FoldMode = function(commentRegex) { - if (commentRegex) { - this.foldingStartMarker = new RegExp( - this.foldingStartMarker.source.replace(/\|[^|]*?$/, "|" + commentRegex.start) - ); - this.foldingStopMarker = new RegExp( - this.foldingStopMarker.source.replace(/\|[^|]*?$/, "|" + commentRegex.end) - ); - } -}; -oop.inherits(FoldMode, BaseFoldMode); - -(function() { - - this.foldingStartMarker = /(\{|\[)[^\}\]]*$|^\s*(\/\*)/; - this.foldingStopMarker = /^[^\[\{]*(\}|\])|^[\s\*]*(\*\/)/; - - this.getFoldWidgetRange = function(session, foldStyle, row, forceMultiline) { - var line = session.getLine(row); - var match = line.match(this.foldingStartMarker); - if (match) { - var i = match.index; - - if (match[1]) - return this.openingBracketBlock(session, match[1], row, i); - - var range = session.getCommentFoldRange(row, i + match[0].length, 1); - - if (range && !range.isMultiLine()) { - if (forceMultiline) { - range = this.getSectionRange(session, row); - } else if (foldStyle != "all") - range = null; - } - - return range; - } - - if (foldStyle === "markbegin") - return; - - var match = line.match(this.foldingStopMarker); - if (match) { - var i = match.index + match[0].length; - - if (match[1]) - return this.closingBracketBlock(session, match[1], row, i); - - return session.getCommentFoldRange(row, i, -1); - } - }; - - this.getSectionRange = function(session, row) { - var line = session.getLine(row); - var startIndent = line.search(/\S/); - var startRow = row; - var startColumn = line.length; - row = row + 1; - var endRow = row; - var maxRow = session.getLength(); - while (++row < maxRow) { - line = session.getLine(row); - var indent = line.search(/\S/); - if (indent === -1) - continue; - if (startIndent > indent) - break; - var subRange = this.getFoldWidgetRange(session, "all", row); - - if (subRange) { - if (subRange.start.row <= startRow) { - break; - } else if (subRange.isMultiLine()) { - row = subRange.end.row; - } else if (startIndent == indent) { - break; - } - } - endRow = row; - } - - return new Range(startRow, startColumn, endRow, session.getLine(endRow).length); - }; - -}).call(FoldMode.prototype); - -}); diff --git a/IDE/jsrealb-ide/ace-src-noconflict/mode-jsx.js b/IDE/jsrealb-ide/ace-src-noconflict/mode-jsx.js deleted file mode 100644 index 8db8b39d..00000000 --- a/IDE/jsrealb-ide/ace-src-noconflict/mode-jsx.js +++ /dev/null @@ -1,682 +0,0 @@ -ace.define('ace/mode/jsx', ['require', 'exports', 'module' , 'ace/lib/oop', 'ace/mode/text', 'ace/tokenizer', 'ace/mode/jsx_highlight_rules', 'ace/mode/matching_brace_outdent', 'ace/mode/behaviour/cstyle', 'ace/mode/folding/cstyle'], function(require, exports, module) { - - -var oop = require("../lib/oop"); -var TextMode = require("./text").Mode; -var Tokenizer = require("../tokenizer").Tokenizer; -var JsxHighlightRules = require("./jsx_highlight_rules").JsxHighlightRules; -var MatchingBraceOutdent = require("./matching_brace_outdent").MatchingBraceOutdent; -var CstyleBehaviour = require("./behaviour/cstyle").CstyleBehaviour; -var CStyleFoldMode = require("./folding/cstyle").FoldMode; - -function Mode() { - this.HighlightRules = JsxHighlightRules; - this.$outdent = new MatchingBraceOutdent(); - this.$behaviour = new CstyleBehaviour(); - this.foldingRules = new CStyleFoldMode(); -} -oop.inherits(Mode, TextMode); - -(function() { - - this.lineCommentStart = "//"; - this.blockComment = {start: "/*", end: "*/"}; - - this.getNextLineIndent = function(state, line, tab) { - var indent = this.$getIndent(line); - - var tokenizedLine = this.getTokenizer().getLineTokens(line, state); - var tokens = tokenizedLine.tokens; - - if (tokens.length && tokens[tokens.length-1].type == "comment") { - return indent; - } - - if (state == "start") { - var match = line.match(/^.*[\{\(\[]\s*$/); - if (match) { - indent += tab; - } - } - - return indent; - }; - - this.checkOutdent = function(state, line, input) { - return this.$outdent.checkOutdent(line, input); - }; - - this.autoOutdent = function(state, doc, row) { - this.$outdent.autoOutdent(doc, row); - }; - - this.$id = "ace/mode/jsx"; -}).call(Mode.prototype); - -exports.Mode = Mode; -}); -ace.define('ace/mode/jsx_highlight_rules', ['require', 'exports', 'module' , 'ace/lib/oop', 'ace/lib/lang', 'ace/mode/doc_comment_highlight_rules', 'ace/mode/text_highlight_rules'], function(require, exports, module) { -var oop = require("../lib/oop"); -var lang = require("../lib/lang"); -var DocCommentHighlightRules = require("./doc_comment_highlight_rules").DocCommentHighlightRules; -var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; - -var JsxHighlightRules = function() { - var keywords = lang.arrayToMap( - ("break|do|instanceof|typeof|case|else|new|var|catch|finally|return|void|continue|for|switch|default|while|function|this|" + - "if|throw|" + - "delete|in|try|" + - "class|extends|super|import|from|into|implements|interface|static|mixin|override|abstract|final|" + - "number|int|string|boolean|variant|" + - "log|assert").split("|") - ); - - var buildinConstants = lang.arrayToMap( - ("null|true|false|NaN|Infinity|__FILE__|__LINE__|undefined").split("|") - ); - - var reserved = lang.arrayToMap( - ("debugger|with|" + - "const|export|" + - "let|private|public|yield|protected|" + - "extern|native|as|operator|__fake__|__readonly__").split("|") - ); - - var identifierRe = "[a-zA-Z_][a-zA-Z0-9_]*\\b"; - - this.$rules = { - "start" : [ - { - token : "comment", - regex : "\\/\\/.*$" - }, - DocCommentHighlightRules.getStartRule("doc-start"), - { - token : "comment", // multi line comment - regex : "\\/\\*", - next : "comment" - }, { - token : "string.regexp", - regex : "[/](?:(?:\\[(?:\\\\]|[^\\]])+\\])|(?:\\\\/|[^\\]/]))*[/]\\w*\\s*(?=[).,;]|$)" - }, { - token : "string", // single line - regex : '["](?:(?:\\\\.)|(?:[^"\\\\]))*?["]' - }, { - token : "string", // single line - regex : "['](?:(?:\\\\.)|(?:[^'\\\\]))*?[']" - }, { - token : "constant.numeric", // hex - regex : "0[xX][0-9a-fA-F]+\\b" - }, { - token : "constant.numeric", // float - regex : "[+-]?\\d+(?:(?:\\.\\d*)?(?:[eE][+-]?\\d+)?)?\\b" - }, { - token : "constant.language.boolean", - regex : "(?:true|false)\\b" - }, { - token : [ - "storage.type", - "text", - "entity.name.function" - ], - regex : "(function)(\\s+)(" + identifierRe + ")" - }, { - token : function(value) { - if (value == "this") - return "variable.language"; - else if (value == "function") - return "storage.type"; - else if (keywords.hasOwnProperty(value) || reserved.hasOwnProperty(value)) - return "keyword"; - else if (buildinConstants.hasOwnProperty(value)) - return "constant.language"; - else if (/^_?[A-Z][a-zA-Z0-9_]*$/.test(value)) - return "language.support.class"; - else - return "identifier"; - }, - regex : identifierRe - }, { - token : "keyword.operator", - regex : "!|%|&|\\*|\\-\\-|\\-|\\+\\+|\\+|~|==|=|!=|<=|>=|<<=|>>=|>>>=|<>|<|>|!|&&|\\|\\||\\?\\:|\\*=|%=|\\+=|\\-=|&=|\\^=|\\b(?:in|instanceof|new|delete|typeof|void)" - }, { - token : "punctuation.operator", - regex : "\\?|\\:|\\,|\\;|\\." - }, { - token : "paren.lparen", - regex : "[[({<]" - }, { - token : "paren.rparen", - regex : "[\\])}>]" - }, { - token : "text", - regex : "\\s+" - } - ], - "comment" : [ - { - token : "comment", // closing comment - regex : ".*?\\*\\/", - next : "start" - }, { - token : "comment", // comment spanning whole line - regex : ".+" - } - ] - }; - - this.embedRules(DocCommentHighlightRules, "doc-", - [ DocCommentHighlightRules.getEndRule("start") ]); -}; - -oop.inherits(JsxHighlightRules, TextHighlightRules); - -exports.JsxHighlightRules = JsxHighlightRules; -}); - -ace.define('ace/mode/doc_comment_highlight_rules', ['require', 'exports', 'module' , 'ace/lib/oop', 'ace/mode/text_highlight_rules'], function(require, exports, module) { - - -var oop = require("../lib/oop"); -var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; - -var DocCommentHighlightRules = function() { - - this.$rules = { - "start" : [ { - token : "comment.doc.tag", - regex : "@[\\w\\d_]+" // TODO: fix email addresses - }, { - token : "comment.doc.tag", - regex : "\\bTODO\\b" - }, { - defaultToken : "comment.doc" - }] - }; -}; - -oop.inherits(DocCommentHighlightRules, TextHighlightRules); - -DocCommentHighlightRules.getStartRule = function(start) { - return { - token : "comment.doc", // doc comment - regex : "\\/\\*(?=\\*)", - next : start - }; -}; - -DocCommentHighlightRules.getEndRule = function (start) { - return { - token : "comment.doc", // closing comment - regex : "\\*\\/", - next : start - }; -}; - - -exports.DocCommentHighlightRules = DocCommentHighlightRules; - -}); - -ace.define('ace/mode/matching_brace_outdent', ['require', 'exports', 'module' , 'ace/range'], function(require, exports, module) { - - -var Range = require("../range").Range; - -var MatchingBraceOutdent = function() {}; - -(function() { - - this.checkOutdent = function(line, input) { - if (! /^\s+$/.test(line)) - return false; - - return /^\s*\}/.test(input); - }; - - this.autoOutdent = function(doc, row) { - var line = doc.getLine(row); - var match = line.match(/^(\s*\})/); - - if (!match) return 0; - - var column = match[1].length; - var openBracePos = doc.findMatchingBracket({row: row, column: column}); - - if (!openBracePos || openBracePos.row == row) return 0; - - var indent = this.$getIndent(doc.getLine(openBracePos.row)); - doc.replace(new Range(row, 0, row, column-1), indent); - }; - - this.$getIndent = function(line) { - return line.match(/^\s*/)[0]; - }; - -}).call(MatchingBraceOutdent.prototype); - -exports.MatchingBraceOutdent = MatchingBraceOutdent; -}); - -ace.define('ace/mode/behaviour/cstyle', ['require', 'exports', 'module' , 'ace/lib/oop', 'ace/mode/behaviour', 'ace/token_iterator', 'ace/lib/lang'], function(require, exports, module) { - - -var oop = require("../../lib/oop"); -var Behaviour = require("../behaviour").Behaviour; -var TokenIterator = require("../../token_iterator").TokenIterator; -var lang = require("../../lib/lang"); - -var SAFE_INSERT_IN_TOKENS = - ["text", "paren.rparen", "punctuation.operator"]; -var SAFE_INSERT_BEFORE_TOKENS = - ["text", "paren.rparen", "punctuation.operator", "comment"]; - - -var autoInsertedBrackets = 0; -var autoInsertedRow = -1; -var autoInsertedLineEnd = ""; -var maybeInsertedBrackets = 0; -var maybeInsertedRow = -1; -var maybeInsertedLineStart = ""; -var maybeInsertedLineEnd = ""; - -var CstyleBehaviour = function () { - - CstyleBehaviour.isSaneInsertion = function(editor, session) { - var cursor = editor.getCursorPosition(); - var iterator = new TokenIterator(session, cursor.row, cursor.column); - if (!this.$matchTokenType(iterator.getCurrentToken() || "text", SAFE_INSERT_IN_TOKENS)) { - var iterator2 = new TokenIterator(session, cursor.row, cursor.column + 1); - if (!this.$matchTokenType(iterator2.getCurrentToken() || "text", SAFE_INSERT_IN_TOKENS)) - return false; - } - iterator.stepForward(); - return iterator.getCurrentTokenRow() !== cursor.row || - this.$matchTokenType(iterator.getCurrentToken() || "text", SAFE_INSERT_BEFORE_TOKENS); - }; - - CstyleBehaviour.$matchTokenType = function(token, types) { - return types.indexOf(token.type || token) > -1; - }; - - CstyleBehaviour.recordAutoInsert = function(editor, session, bracket) { - var cursor = editor.getCursorPosition(); - var line = session.doc.getLine(cursor.row); - if (!this.isAutoInsertedClosing(cursor, line, autoInsertedLineEnd[0])) - autoInsertedBrackets = 0; - autoInsertedRow = cursor.row; - autoInsertedLineEnd = bracket + line.substr(cursor.column); - autoInsertedBrackets++; - }; - - CstyleBehaviour.recordMaybeInsert = function(editor, session, bracket) { - var cursor = editor.getCursorPosition(); - var line = session.doc.getLine(cursor.row); - if (!this.isMaybeInsertedClosing(cursor, line)) - maybeInsertedBrackets = 0; - maybeInsertedRow = cursor.row; - maybeInsertedLineStart = line.substr(0, cursor.column) + bracket; - maybeInsertedLineEnd = line.substr(cursor.column); - maybeInsertedBrackets++; - }; - - CstyleBehaviour.isAutoInsertedClosing = function(cursor, line, bracket) { - return autoInsertedBrackets > 0 && - cursor.row === autoInsertedRow && - bracket === autoInsertedLineEnd[0] && - line.substr(cursor.column) === autoInsertedLineEnd; - }; - - CstyleBehaviour.isMaybeInsertedClosing = function(cursor, line) { - return maybeInsertedBrackets > 0 && - cursor.row === maybeInsertedRow && - line.substr(cursor.column) === maybeInsertedLineEnd && - line.substr(0, cursor.column) == maybeInsertedLineStart; - }; - - CstyleBehaviour.popAutoInsertedClosing = function() { - autoInsertedLineEnd = autoInsertedLineEnd.substr(1); - autoInsertedBrackets--; - }; - - CstyleBehaviour.clearMaybeInsertedClosing = function() { - maybeInsertedBrackets = 0; - maybeInsertedRow = -1; - }; - - this.add("braces", "insertion", function (state, action, editor, session, text) { - var cursor = editor.getCursorPosition(); - var line = session.doc.getLine(cursor.row); - if (text == '{') { - var selection = editor.getSelectionRange(); - var selected = session.doc.getTextRange(selection); - if (selected !== "" && selected !== "{" && editor.getWrapBehavioursEnabled()) { - return { - text: '{' + selected + '}', - selection: false - }; - } else if (CstyleBehaviour.isSaneInsertion(editor, session)) { - if (/[\]\}\)]/.test(line[cursor.column]) || editor.inMultiSelectMode) { - CstyleBehaviour.recordAutoInsert(editor, session, "}"); - return { - text: '{}', - selection: [1, 1] - }; - } else { - CstyleBehaviour.recordMaybeInsert(editor, session, "{"); - return { - text: '{', - selection: [1, 1] - }; - } - } - } else if (text == '}') { - var rightChar = line.substring(cursor.column, cursor.column + 1); - if (rightChar == '}') { - var matching = session.$findOpeningBracket('}', {column: cursor.column + 1, row: cursor.row}); - if (matching !== null && CstyleBehaviour.isAutoInsertedClosing(cursor, line, text)) { - CstyleBehaviour.popAutoInsertedClosing(); - return { - text: '', - selection: [1, 1] - }; - } - } - } else if (text == "\n" || text == "\r\n") { - var closing = ""; - if (CstyleBehaviour.isMaybeInsertedClosing(cursor, line)) { - closing = lang.stringRepeat("}", maybeInsertedBrackets); - CstyleBehaviour.clearMaybeInsertedClosing(); - } - var rightChar = line.substring(cursor.column, cursor.column + 1); - if (rightChar === '}') { - var openBracePos = session.findMatchingBracket({row: cursor.row, column: cursor.column+1}, '}'); - if (!openBracePos) - return null; - var next_indent = this.$getIndent(session.getLine(openBracePos.row)); - } else if (closing) { - var next_indent = this.$getIndent(line); - } else { - return; - } - var indent = next_indent + session.getTabString(); - - return { - text: '\n' + indent + '\n' + next_indent + closing, - selection: [1, indent.length, 1, indent.length] - }; - } else { - CstyleBehaviour.clearMaybeInsertedClosing(); - } - }); - - this.add("braces", "deletion", function (state, action, editor, session, range) { - var selected = session.doc.getTextRange(range); - if (!range.isMultiLine() && selected == '{') { - var line = session.doc.getLine(range.start.row); - var rightChar = line.substring(range.end.column, range.end.column + 1); - if (rightChar == '}') { - range.end.column++; - return range; - } else { - maybeInsertedBrackets--; - } - } - }); - - this.add("parens", "insertion", function (state, action, editor, session, text) { - if (text == '(') { - var selection = editor.getSelectionRange(); - var selected = session.doc.getTextRange(selection); - if (selected !== "" && editor.getWrapBehavioursEnabled()) { - return { - text: '(' + selected + ')', - selection: false - }; - } else if (CstyleBehaviour.isSaneInsertion(editor, session)) { - CstyleBehaviour.recordAutoInsert(editor, session, ")"); - return { - text: '()', - selection: [1, 1] - }; - } - } else if (text == ')') { - var cursor = editor.getCursorPosition(); - var line = session.doc.getLine(cursor.row); - var rightChar = line.substring(cursor.column, cursor.column + 1); - if (rightChar == ')') { - var matching = session.$findOpeningBracket(')', {column: cursor.column + 1, row: cursor.row}); - if (matching !== null && CstyleBehaviour.isAutoInsertedClosing(cursor, line, text)) { - CstyleBehaviour.popAutoInsertedClosing(); - return { - text: '', - selection: [1, 1] - }; - } - } - } - }); - - this.add("parens", "deletion", function (state, action, editor, session, range) { - var selected = session.doc.getTextRange(range); - if (!range.isMultiLine() && selected == '(') { - var line = session.doc.getLine(range.start.row); - var rightChar = line.substring(range.start.column + 1, range.start.column + 2); - if (rightChar == ')') { - range.end.column++; - return range; - } - } - }); - - this.add("brackets", "insertion", function (state, action, editor, session, text) { - if (text == '[') { - var selection = editor.getSelectionRange(); - var selected = session.doc.getTextRange(selection); - if (selected !== "" && editor.getWrapBehavioursEnabled()) { - return { - text: '[' + selected + ']', - selection: false - }; - } else if (CstyleBehaviour.isSaneInsertion(editor, session)) { - CstyleBehaviour.recordAutoInsert(editor, session, "]"); - return { - text: '[]', - selection: [1, 1] - }; - } - } else if (text == ']') { - var cursor = editor.getCursorPosition(); - var line = session.doc.getLine(cursor.row); - var rightChar = line.substring(cursor.column, cursor.column + 1); - if (rightChar == ']') { - var matching = session.$findOpeningBracket(']', {column: cursor.column + 1, row: cursor.row}); - if (matching !== null && CstyleBehaviour.isAutoInsertedClosing(cursor, line, text)) { - CstyleBehaviour.popAutoInsertedClosing(); - return { - text: '', - selection: [1, 1] - }; - } - } - } - }); - - this.add("brackets", "deletion", function (state, action, editor, session, range) { - var selected = session.doc.getTextRange(range); - if (!range.isMultiLine() && selected == '[') { - var line = session.doc.getLine(range.start.row); - var rightChar = line.substring(range.start.column + 1, range.start.column + 2); - if (rightChar == ']') { - range.end.column++; - return range; - } - } - }); - - this.add("string_dquotes", "insertion", function (state, action, editor, session, text) { - if (text == '"' || text == "'") { - var quote = text; - var selection = editor.getSelectionRange(); - var selected = session.doc.getTextRange(selection); - if (selected !== "" && selected !== "'" && selected != '"' && editor.getWrapBehavioursEnabled()) { - return { - text: quote + selected + quote, - selection: false - }; - } else { - var cursor = editor.getCursorPosition(); - var line = session.doc.getLine(cursor.row); - var leftChar = line.substring(cursor.column-1, cursor.column); - if (leftChar == '\\') { - return null; - } - var tokens = session.getTokens(selection.start.row); - var col = 0, token; - var quotepos = -1; // Track whether we're inside an open quote. - - for (var x = 0; x < tokens.length; x++) { - token = tokens[x]; - if (token.type == "string") { - quotepos = -1; - } else if (quotepos < 0) { - quotepos = token.value.indexOf(quote); - } - if ((token.value.length + col) > selection.start.column) { - break; - } - col += tokens[x].value.length; - } - if (!token || (quotepos < 0 && token.type !== "comment" && (token.type !== "string" || ((selection.start.column !== token.value.length+col-1) && token.value.lastIndexOf(quote) === token.value.length-1)))) { - if (!CstyleBehaviour.isSaneInsertion(editor, session)) - return; - return { - text: quote + quote, - selection: [1,1] - }; - } else if (token && token.type === "string") { - var rightChar = line.substring(cursor.column, cursor.column + 1); - if (rightChar == quote) { - return { - text: '', - selection: [1, 1] - }; - } - } - } - } - }); - - this.add("string_dquotes", "deletion", function (state, action, editor, session, range) { - var selected = session.doc.getTextRange(range); - if (!range.isMultiLine() && (selected == '"' || selected == "'")) { - var line = session.doc.getLine(range.start.row); - var rightChar = line.substring(range.start.column + 1, range.start.column + 2); - if (rightChar == selected) { - range.end.column++; - return range; - } - } - }); - -}; - -oop.inherits(CstyleBehaviour, Behaviour); - -exports.CstyleBehaviour = CstyleBehaviour; -}); - -ace.define('ace/mode/folding/cstyle', ['require', 'exports', 'module' , 'ace/lib/oop', 'ace/range', 'ace/mode/folding/fold_mode'], function(require, exports, module) { - - -var oop = require("../../lib/oop"); -var Range = require("../../range").Range; -var BaseFoldMode = require("./fold_mode").FoldMode; - -var FoldMode = exports.FoldMode = function(commentRegex) { - if (commentRegex) { - this.foldingStartMarker = new RegExp( - this.foldingStartMarker.source.replace(/\|[^|]*?$/, "|" + commentRegex.start) - ); - this.foldingStopMarker = new RegExp( - this.foldingStopMarker.source.replace(/\|[^|]*?$/, "|" + commentRegex.end) - ); - } -}; -oop.inherits(FoldMode, BaseFoldMode); - -(function() { - - this.foldingStartMarker = /(\{|\[)[^\}\]]*$|^\s*(\/\*)/; - this.foldingStopMarker = /^[^\[\{]*(\}|\])|^[\s\*]*(\*\/)/; - - this.getFoldWidgetRange = function(session, foldStyle, row, forceMultiline) { - var line = session.getLine(row); - var match = line.match(this.foldingStartMarker); - if (match) { - var i = match.index; - - if (match[1]) - return this.openingBracketBlock(session, match[1], row, i); - - var range = session.getCommentFoldRange(row, i + match[0].length, 1); - - if (range && !range.isMultiLine()) { - if (forceMultiline) { - range = this.getSectionRange(session, row); - } else if (foldStyle != "all") - range = null; - } - - return range; - } - - if (foldStyle === "markbegin") - return; - - var match = line.match(this.foldingStopMarker); - if (match) { - var i = match.index + match[0].length; - - if (match[1]) - return this.closingBracketBlock(session, match[1], row, i); - - return session.getCommentFoldRange(row, i, -1); - } - }; - - this.getSectionRange = function(session, row) { - var line = session.getLine(row); - var startIndent = line.search(/\S/); - var startRow = row; - var startColumn = line.length; - row = row + 1; - var endRow = row; - var maxRow = session.getLength(); - while (++row < maxRow) { - line = session.getLine(row); - var indent = line.search(/\S/); - if (indent === -1) - continue; - if (startIndent > indent) - break; - var subRange = this.getFoldWidgetRange(session, "all", row); - - if (subRange) { - if (subRange.start.row <= startRow) { - break; - } else if (subRange.isMultiLine()) { - row = subRange.end.row; - } else if (startIndent == indent) { - break; - } - } - endRow = row; - } - - return new Range(startRow, startColumn, endRow, session.getLine(endRow).length); - }; - -}).call(FoldMode.prototype); - -}); diff --git a/IDE/jsrealb-ide/ace-src-noconflict/mode-julia.js b/IDE/jsrealb-ide/ace-src-noconflict/mode-julia.js deleted file mode 100644 index f37058fd..00000000 --- a/IDE/jsrealb-ide/ace-src-noconflict/mode-julia.js +++ /dev/null @@ -1,286 +0,0 @@ -/* ***** BEGIN LICENSE BLOCK ***** - * Distributed under the BSD license: - * - * Copyright (c) 2012, Ajax.org B.V. - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are met: - * * Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * * Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * * Neither the name of Ajax.org B.V. nor the - * names of its contributors may be used to endorse or promote products - * derived from this software without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND - * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED - * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE - * DISCLAIMED. IN NO EVENT SHALL AJAX.ORG B.V. BE LIABLE FOR ANY - * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES - * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; - * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND - * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - * - * - * Contributor(s): - * - * - * - * ***** END LICENSE BLOCK ***** */ - -ace.define('ace/mode/julia', ['require', 'exports', 'module' , 'ace/lib/oop', 'ace/mode/text', 'ace/tokenizer', 'ace/mode/julia_highlight_rules', 'ace/mode/folding/cstyle'], function(require, exports, module) { - - -var oop = require("../lib/oop"); -var TextMode = require("./text").Mode; -var Tokenizer = require("../tokenizer").Tokenizer; -var JuliaHighlightRules = require("./julia_highlight_rules").JuliaHighlightRules; -var FoldMode = require("./folding/cstyle").FoldMode; - -var Mode = function() { - this.HighlightRules = JuliaHighlightRules; - this.foldingRules = new FoldMode(); -}; -oop.inherits(Mode, TextMode); - -(function() { - this.lineCommentStart = "#"; - this.blockComment = ""; - this.$id = "ace/mode/julia"; -}).call(Mode.prototype); - -exports.Mode = Mode; -}); - -ace.define('ace/mode/julia_highlight_rules', ['require', 'exports', 'module' , 'ace/lib/oop', 'ace/mode/text_highlight_rules'], function(require, exports, module) { - - -var oop = require("../lib/oop"); -var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; - -var JuliaHighlightRules = function() { - - this.$rules = { start: - [ { include: '#function_decl' }, - { include: '#function_call' }, - { include: '#type_decl' }, - { include: '#keyword' }, - { include: '#operator' }, - { include: '#number' }, - { include: '#string' }, - { include: '#comment' } ], - '#bracket': - [ { token: 'keyword.bracket.julia', - regex: '\\(|\\)|\\[|\\]|\\{|\\}|,' } ], - '#comment': - [ { token: - [ 'punctuation.definition.comment.julia', - 'comment.line.number-sign.julia' ], - regex: '(#)(?!\\{)(.*$)'} ], - '#function_call': - [ { token: [ 'support.function.julia', 'text' ], - regex: '([a-zA-Z0-9_]+!?)(\\w*\\()'} ], - '#function_decl': - [ { token: [ 'keyword.other.julia', 'meta.function.julia', - 'entity.name.function.julia', 'meta.function.julia','text' ], - regex: '(function|macro)(\\s*)([a-zA-Z0-9_\\{]+!?)(\\w*)([(\\\\{])'} ], - '#keyword': - [ { token: 'keyword.other.julia', - regex: '\\b(?:function|type|immutable|macro|quote|abstract|bitstype|typealias|module|baremodule|new)\\b' }, - { token: 'keyword.control.julia', - regex: '\\b(?:if|else|elseif|while|for|in|begin|let|end|do|try|catch|finally|return|break|continue)\\b' }, - { token: 'storage.modifier.variable.julia', - regex: '\\b(?:global|local|const|export|import|importall|using)\\b' }, - { token: 'variable.macro.julia', regex: '@\\w+\\b' } ], - '#number': - [ { token: 'constant.numeric.julia', - regex: '\\b0(?:x|X)[0-9a-fA-F]*|(?:\\b[0-9]+\\.?[0-9]*|\\.[0-9]+)(?:(?:e|E)(?:\\+|-)?[0-9]*)?(?:im)?|\\bInf(?:32)?\\b|\\bNaN(?:32)?\\b|\\btrue\\b|\\bfalse\\b' } ], - '#operator': - [ { token: 'keyword.operator.update.julia', - regex: '=|:=|\\+=|-=|\\*=|/=|//=|\\.//=|\\.\\*=|\\\\=|\\.\\\\=|^=|\\.^=|%=|\\|=|&=|\\$=|<<=|>>=' }, - { token: 'keyword.operator.ternary.julia', regex: '\\?|:' }, - { token: 'keyword.operator.boolean.julia', - regex: '\\|\\||&&|!' }, - { token: 'keyword.operator.arrow.julia', regex: '->|<-|-->' }, - { token: 'keyword.operator.relation.julia', - regex: '>|<|>=|<=|==|!=|\\.>|\\.<|\\.>=|\\.>=|\\.==|\\.!=|\\.=|\\.!|<:|:>' }, - { token: 'keyword.operator.range.julia', regex: ':' }, - { token: 'keyword.operator.shift.julia', regex: '<<|>>' }, - { token: 'keyword.operator.bitwise.julia', regex: '\\||\\&|~' }, - { token: 'keyword.operator.arithmetic.julia', - regex: '\\+|-|\\*|\\.\\*|/|\\./|//|\\.//|%|\\.%|\\\\|\\.\\\\|\\^|\\.\\^' }, - { token: 'keyword.operator.isa.julia', regex: '::' }, - { token: 'keyword.operator.dots.julia', - regex: '\\.(?=[a-zA-Z])|\\.\\.+' }, - { token: 'keyword.operator.interpolation.julia', - regex: '\\$#?(?=.)' }, - { token: [ 'variable', 'keyword.operator.transposed-variable.julia' ], - regex: '(\\w+)((?:\'|\\.\')*\\.?\')' }, - { token: 'text', - regex: '\\[|\\('}, - { token: [ 'text', 'keyword.operator.transposed-matrix.julia' ], - regex: "([\\]\\)])((?:'|\\.')*\\.?')"} ], - '#string': - [ { token: 'punctuation.definition.string.begin.julia', - regex: '\'', - push: - [ { token: 'punctuation.definition.string.end.julia', - regex: '\'', - next: 'pop' }, - { include: '#string_escaped_char' }, - { defaultToken: 'string.quoted.single.julia' } ] }, - { token: 'punctuation.definition.string.begin.julia', - regex: '"', - push: - [ { token: 'punctuation.definition.string.end.julia', - regex: '"', - next: 'pop' }, - { include: '#string_escaped_char' }, - { defaultToken: 'string.quoted.double.julia' } ] }, - { token: 'punctuation.definition.string.begin.julia', - regex: '\\b\\w+"', - push: - [ { token: 'punctuation.definition.string.end.julia', - regex: '"\\w*', - next: 'pop' }, - { include: '#string_custom_escaped_char' }, - { defaultToken: 'string.quoted.custom-double.julia' } ] }, - { token: 'punctuation.definition.string.begin.julia', - regex: '`', - push: - [ { token: 'punctuation.definition.string.end.julia', - regex: '`', - next: 'pop' }, - { include: '#string_escaped_char' }, - { defaultToken: 'string.quoted.backtick.julia' } ] } ], - '#string_custom_escaped_char': [ { token: 'constant.character.escape.julia', regex: '\\\\"' } ], - '#string_escaped_char': - [ { token: 'constant.character.escape.julia', - regex: '\\\\(?:\\\\|[0-3]\\d{,2}|[4-7]\\d?|x[a-fA-F0-9]{,2}|u[a-fA-F0-9]{,4}|U[a-fA-F0-9]{,8}|.)' } ], - '#type_decl': - [ { token: - [ 'keyword.control.type.julia', - 'meta.type.julia', - 'entity.name.type.julia', - 'entity.other.inherited-class.julia', - 'punctuation.separator.inheritance.julia', - 'entity.other.inherited-class.julia' ], - regex: '(type|immutable)(\\s+)([a-zA-Z0-9_]+)(?:(\\s*)(<:)(\\s*[.a-zA-Z0-9_:]+))?' }, - { token: [ 'other.typed-variable.julia', 'support.type.julia' ], - regex: '([a-zA-Z0-9_]+)(::[a-zA-Z0-9_{}]+)' } ] } - - this.normalizeRules(); -}; - -JuliaHighlightRules.metaData = { fileTypes: [ 'jl' ], - firstLineMatch: '^#!.*\\bjulia\\s*$', - foldingStartMarker: '^\\s*(?:if|while|for|begin|function|macro|module|baremodule|type|immutable|let)\\b(?!.*\\bend\\b).*$', - foldingStopMarker: '^\\s*(?:end)\\b.*$', - name: 'Julia', - scopeName: 'source.julia' } - - -oop.inherits(JuliaHighlightRules, TextHighlightRules); - -exports.JuliaHighlightRules = JuliaHighlightRules; -}); - -ace.define('ace/mode/folding/cstyle', ['require', 'exports', 'module' , 'ace/lib/oop', 'ace/range', 'ace/mode/folding/fold_mode'], function(require, exports, module) { - - -var oop = require("../../lib/oop"); -var Range = require("../../range").Range; -var BaseFoldMode = require("./fold_mode").FoldMode; - -var FoldMode = exports.FoldMode = function(commentRegex) { - if (commentRegex) { - this.foldingStartMarker = new RegExp( - this.foldingStartMarker.source.replace(/\|[^|]*?$/, "|" + commentRegex.start) - ); - this.foldingStopMarker = new RegExp( - this.foldingStopMarker.source.replace(/\|[^|]*?$/, "|" + commentRegex.end) - ); - } -}; -oop.inherits(FoldMode, BaseFoldMode); - -(function() { - - this.foldingStartMarker = /(\{|\[)[^\}\]]*$|^\s*(\/\*)/; - this.foldingStopMarker = /^[^\[\{]*(\}|\])|^[\s\*]*(\*\/)/; - - this.getFoldWidgetRange = function(session, foldStyle, row, forceMultiline) { - var line = session.getLine(row); - var match = line.match(this.foldingStartMarker); - if (match) { - var i = match.index; - - if (match[1]) - return this.openingBracketBlock(session, match[1], row, i); - - var range = session.getCommentFoldRange(row, i + match[0].length, 1); - - if (range && !range.isMultiLine()) { - if (forceMultiline) { - range = this.getSectionRange(session, row); - } else if (foldStyle != "all") - range = null; - } - - return range; - } - - if (foldStyle === "markbegin") - return; - - var match = line.match(this.foldingStopMarker); - if (match) { - var i = match.index + match[0].length; - - if (match[1]) - return this.closingBracketBlock(session, match[1], row, i); - - return session.getCommentFoldRange(row, i, -1); - } - }; - - this.getSectionRange = function(session, row) { - var line = session.getLine(row); - var startIndent = line.search(/\S/); - var startRow = row; - var startColumn = line.length; - row = row + 1; - var endRow = row; - var maxRow = session.getLength(); - while (++row < maxRow) { - line = session.getLine(row); - var indent = line.search(/\S/); - if (indent === -1) - continue; - if (startIndent > indent) - break; - var subRange = this.getFoldWidgetRange(session, "all", row); - - if (subRange) { - if (subRange.start.row <= startRow) { - break; - } else if (subRange.isMultiLine()) { - row = subRange.end.row; - } else if (startIndent == indent) { - break; - } - } - endRow = row; - } - - return new Range(startRow, startColumn, endRow, session.getLine(endRow).length); - }; - -}).call(FoldMode.prototype); - -}); diff --git a/IDE/jsrealb-ide/ace-src-noconflict/mode-latex.js b/IDE/jsrealb-ide/ace-src-noconflict/mode-latex.js deleted file mode 100644 index 01721185..00000000 --- a/IDE/jsrealb-ide/ace-src-noconflict/mode-latex.js +++ /dev/null @@ -1,190 +0,0 @@ -ace.define('ace/mode/latex', ['require', 'exports', 'module' , 'ace/lib/oop', 'ace/mode/text', 'ace/tokenizer', 'ace/mode/latex_highlight_rules', 'ace/mode/folding/latex', 'ace/range'], function(require, exports, module) { - - -var oop = require("../lib/oop"); -var TextMode = require("./text").Mode; -var Tokenizer = require("../tokenizer").Tokenizer; -var LatexHighlightRules = require("./latex_highlight_rules").LatexHighlightRules; -var LatexFoldMode = require("./folding/latex").FoldMode; -var Range = require("../range").Range; - -var Mode = function() { - this.HighlightRules = LatexHighlightRules; - this.foldingRules = new LatexFoldMode(); -}; -oop.inherits(Mode, TextMode); - -(function() { - this.lineCommentStart = "%"; - - this.$id = "ace/mode/latex"; -}).call(Mode.prototype); - -exports.Mode = Mode; - -}); -ace.define('ace/mode/latex_highlight_rules', ['require', 'exports', 'module' , 'ace/lib/oop', 'ace/mode/text_highlight_rules'], function(require, exports, module) { - - -var oop = require("../lib/oop"); -var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; - -var LatexHighlightRules = function() { - this.$rules = { - "start" : [{ - token : "keyword", - regex : "\\\\(?:[^a-zA-Z]|[a-zA-Z]+)" - }, { - token : "lparen", - regex : "[[({]" - }, { - token : "rparen", - regex : "[\\])}]" - }, { - token : "string", - regex : "\\$(?:(?:\\\\.)|(?:[^\\$\\\\]))*?\\$" - }, { - token : "comment", - regex : "%.*$" - }] - }; -}; - -oop.inherits(LatexHighlightRules, TextHighlightRules); - -exports.LatexHighlightRules = LatexHighlightRules; - -}); - -ace.define('ace/mode/folding/latex', ['require', 'exports', 'module' , 'ace/lib/oop', 'ace/mode/folding/fold_mode', 'ace/range', 'ace/token_iterator'], function(require, exports, module) { - - -var oop = require("../../lib/oop"); -var BaseFoldMode = require("./fold_mode").FoldMode; -var Range = require("../../range").Range; -var TokenIterator = require("../../token_iterator").TokenIterator; - -var FoldMode = exports.FoldMode = function() {}; - -oop.inherits(FoldMode, BaseFoldMode); - -(function() { - - this.foldingStartMarker = /^\s*\\(begin)|(section|subsection)\b|{\s*$/; - this.foldingStopMarker = /^\s*\\(end)\b|^\s*}/; - - this.getFoldWidgetRange = function(session, foldStyle, row) { - var line = session.doc.getLine(row); - var match = this.foldingStartMarker.exec(line); - if (match) { - if (match[1]) - return this.latexBlock(session, row, match[0].length - 1); - if (match[2]) - return this.latexSection(session, row, match[0].length - 1); - - return this.openingBracketBlock(session, "{", row, match.index); - } - - var match = this.foldingStopMarker.exec(line); - if (match) { - if (match[1]) - return this.latexBlock(session, row, match[0].length - 1); - - return this.closingBracketBlock(session, "}", row, match.index + match[0].length); - } - }; - - this.latexBlock = function(session, row, column) { - var keywords = { - "\\begin": 1, - "\\end": -1 - }; - - var stream = new TokenIterator(session, row, column); - var token = stream.getCurrentToken(); - if (!token || token.type !== "keyword") - return; - - var val = token.value; - var dir = keywords[val]; - - var getType = function() { - var token = stream.stepForward(); - var type = token.type == "lparen" ?stream.stepForward().value : ""; - if (dir === -1) { - stream.stepBackward(); - if (type) - stream.stepBackward(); - } - return type; - }; - var stack = [getType()]; - var startColumn = dir === -1 ? stream.getCurrentTokenColumn() : session.getLine(row).length; - var startRow = row; - - stream.step = dir === -1 ? stream.stepBackward : stream.stepForward; - while(token = stream.step()) { - if (token.type !== "keyword") - continue; - var level = keywords[token.value]; - if (!level) - continue; - var type = getType(); - if (level === dir) - stack.unshift(type); - else if (stack.shift() !== type || !stack.length) - break; - } - - if (stack.length) - return; - - var row = stream.getCurrentTokenRow(); - if (dir === -1) - return new Range(row, session.getLine(row).length, startRow, startColumn); - stream.stepBackward(); - return new Range(startRow, startColumn, row, stream.getCurrentTokenColumn()); - }; - - this.latexSection = function(session, row, column) { - var keywords = ["\\subsection", "\\section", "\\begin", "\\end"]; - - var stream = new TokenIterator(session, row, column); - var token = stream.getCurrentToken(); - if (!token || token.type != "keyword") - return; - - var startLevel = keywords.indexOf(token.value); - var stackDepth = 0 - var endRow = row; - - while(token = stream.stepForward()) { - if (token.type !== "keyword") - continue; - var level = keywords.indexOf(token.value); - - if (level >= 2) { - if (!stackDepth) - endRow = stream.getCurrentTokenRow() - 1; - stackDepth += level == 2 ? 1 : - 1; - if (stackDepth < 0) - break - } else if (level >= startLevel) - break; - } - - if (!stackDepth) - endRow = stream.getCurrentTokenRow() - 1; - - while (endRow > row && !/\S/.test(session.getLine(endRow))) - endRow--; - - return new Range( - row, session.getLine(row).length, - endRow, session.getLine(endRow).length - ); - }; - -}).call(FoldMode.prototype); - -}); diff --git a/IDE/jsrealb-ide/ace-src-noconflict/mode-less.js b/IDE/jsrealb-ide/ace-src-noconflict/mode-less.js deleted file mode 100644 index 9c45fadf..00000000 --- a/IDE/jsrealb-ide/ace-src-noconflict/mode-less.js +++ /dev/null @@ -1,854 +0,0 @@ -/* ***** BEGIN LICENSE BLOCK ***** - * Distributed under the BSD license: - * - * Copyright (c) 2010, Ajax.org B.V. - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are met: - * * Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * * Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * * Neither the name of Ajax.org B.V. nor the - * names of its contributors may be used to endorse or promote products - * derived from this software without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND - * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED - * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE - * DISCLAIMED. IN NO EVENT SHALL AJAX.ORG B.V. BE LIABLE FOR ANY - * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES - * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; - * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND - * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - * - * ***** END LICENSE BLOCK ***** */ - -ace.define('ace/mode/less', ['require', 'exports', 'module' , 'ace/lib/oop', 'ace/mode/text', 'ace/tokenizer', 'ace/mode/less_highlight_rules', 'ace/mode/matching_brace_outdent', 'ace/mode/behaviour/css', 'ace/mode/folding/cstyle'], function(require, exports, module) { - - -var oop = require("../lib/oop"); -var TextMode = require("./text").Mode; -var Tokenizer = require("../tokenizer").Tokenizer; -var LessHighlightRules = require("./less_highlight_rules").LessHighlightRules; -var MatchingBraceOutdent = require("./matching_brace_outdent").MatchingBraceOutdent; -var CssBehaviour = require("./behaviour/css").CssBehaviour; -var CStyleFoldMode = require("./folding/cstyle").FoldMode; - -var Mode = function() { - this.HighlightRules = LessHighlightRules; - this.$outdent = new MatchingBraceOutdent(); - this.$behaviour = new CssBehaviour(); - this.foldingRules = new CStyleFoldMode(); -}; -oop.inherits(Mode, TextMode); - -(function() { - - this.lineCommentStart = "//"; - this.blockComment = {start: "/*", end: "*/"}; - - this.getNextLineIndent = function(state, line, tab) { - var indent = this.$getIndent(line); - var tokens = this.getTokenizer().getLineTokens(line, state).tokens; - if (tokens.length && tokens[tokens.length-1].type == "comment") { - return indent; - } - - var match = line.match(/^.*\{\s*$/); - if (match) { - indent += tab; - } - - return indent; - }; - - this.checkOutdent = function(state, line, input) { - return this.$outdent.checkOutdent(line, input); - }; - - this.autoOutdent = function(state, doc, row) { - this.$outdent.autoOutdent(doc, row); - }; - - this.$id = "ace/mode/less"; -}).call(Mode.prototype); - -exports.Mode = Mode; - -}); - -ace.define('ace/mode/less_highlight_rules', ['require', 'exports', 'module' , 'ace/lib/oop', 'ace/lib/lang', 'ace/mode/text_highlight_rules'], function(require, exports, module) { - - -var oop = require("../lib/oop"); -var lang = require("../lib/lang"); -var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; - -var LessHighlightRules = function() { - - var properties = lang.arrayToMap( (function () { - - var browserPrefix = ("-webkit-|-moz-|-o-|-ms-|-svg-|-pie-|-khtml-").split("|"); - - var prefixProperties = ("appearance|background-clip|background-inline-policy|background-origin|" + - "background-size|binding|border-bottom-colors|border-left-colors|" + - "border-right-colors|border-top-colors|border-end|border-end-color|" + - "border-end-style|border-end-width|border-image|border-start|" + - "border-start-color|border-start-style|border-start-width|box-align|" + - "box-direction|box-flex|box-flexgroup|box-ordinal-group|box-orient|" + - "box-pack|box-sizing|column-count|column-gap|column-width|column-rule|" + - "column-rule-width|column-rule-style|column-rule-color|float-edge|" + - "font-feature-settings|font-language-override|force-broken-image-icon|" + - "image-region|margin-end|margin-start|opacity|outline|outline-color|" + - "outline-offset|outline-radius|outline-radius-bottomleft|" + - "outline-radius-bottomright|outline-radius-topleft|outline-radius-topright|" + - "outline-style|outline-width|padding-end|padding-start|stack-sizing|" + - "tab-size|text-blink|text-decoration-color|text-decoration-line|" + - "text-decoration-style|transform|transform-origin|transition|" + - "transition-delay|transition-duration|transition-property|" + - "transition-timing-function|user-focus|user-input|user-modify|user-select|" + - "window-shadow|border-radius").split("|"); - - var properties = ("azimuth|background-attachment|background-color|background-image|" + - "background-position|background-repeat|background|border-bottom-color|" + - "border-bottom-style|border-bottom-width|border-bottom|border-collapse|" + - "border-color|border-left-color|border-left-style|border-left-width|" + - "border-left|border-right-color|border-right-style|border-right-width|" + - "border-right|border-spacing|border-style|border-top-color|" + - "border-top-style|border-top-width|border-top|border-width|border|" + - "bottom|box-sizing|caption-side|clear|clip|color|content|counter-increment|" + - "counter-reset|cue-after|cue-before|cue|cursor|direction|display|" + - "elevation|empty-cells|float|font-family|font-size-adjust|font-size|" + - "font-stretch|font-style|font-variant|font-weight|font|height|left|" + - "letter-spacing|line-height|list-style-image|list-style-position|" + - "list-style-type|list-style|margin-bottom|margin-left|margin-right|" + - "margin-top|marker-offset|margin|marks|max-height|max-width|min-height|" + - "min-width|opacity|orphans|outline-color|" + - "outline-style|outline-width|outline|overflow|overflow-x|overflow-y|padding-bottom|" + - "padding-left|padding-right|padding-top|padding|page-break-after|" + - "page-break-before|page-break-inside|page|pause-after|pause-before|" + - "pause|pitch-range|pitch|play-during|position|quotes|richness|right|" + - "size|speak-header|speak-numeral|speak-punctuation|speech-rate|speak|" + - "stress|table-layout|text-align|text-decoration|text-indent|" + - "text-shadow|text-transform|top|unicode-bidi|vertical-align|" + - "visibility|voice-family|volume|white-space|widows|width|word-spacing|" + - "z-index").split("|"); - var ret = []; - for (var i=0, ln=browserPrefix.length; i|<=|>=|==|!=|-|%|#|\\+|\\$|\\+|\\*" - }, { - token : "paren.lparen", - regex : "[[({]" - }, { - token : "paren.rparen", - regex : "[\\])}]" - }, { - token : "text", - regex : "\\s+" - }, { - caseInsensitive: true - } - ], - "comment" : [ - { - token : "comment", // closing comment - regex : ".*?\\*\\/", - next : "start" - }, { - token : "comment", // comment spanning whole line - regex : ".+" - } - ] - }; -}; - -oop.inherits(LessHighlightRules, TextHighlightRules); - -exports.LessHighlightRules = LessHighlightRules; - -}); - -ace.define('ace/mode/matching_brace_outdent', ['require', 'exports', 'module' , 'ace/range'], function(require, exports, module) { - - -var Range = require("../range").Range; - -var MatchingBraceOutdent = function() {}; - -(function() { - - this.checkOutdent = function(line, input) { - if (! /^\s+$/.test(line)) - return false; - - return /^\s*\}/.test(input); - }; - - this.autoOutdent = function(doc, row) { - var line = doc.getLine(row); - var match = line.match(/^(\s*\})/); - - if (!match) return 0; - - var column = match[1].length; - var openBracePos = doc.findMatchingBracket({row: row, column: column}); - - if (!openBracePos || openBracePos.row == row) return 0; - - var indent = this.$getIndent(doc.getLine(openBracePos.row)); - doc.replace(new Range(row, 0, row, column-1), indent); - }; - - this.$getIndent = function(line) { - return line.match(/^\s*/)[0]; - }; - -}).call(MatchingBraceOutdent.prototype); - -exports.MatchingBraceOutdent = MatchingBraceOutdent; -}); - -ace.define('ace/mode/behaviour/css', ['require', 'exports', 'module' , 'ace/lib/oop', 'ace/mode/behaviour', 'ace/mode/behaviour/cstyle', 'ace/token_iterator'], function(require, exports, module) { - - -var oop = require("../../lib/oop"); -var Behaviour = require("../behaviour").Behaviour; -var CstyleBehaviour = require("./cstyle").CstyleBehaviour; -var TokenIterator = require("../../token_iterator").TokenIterator; - -var CssBehaviour = function () { - - this.inherit(CstyleBehaviour); - - this.add("colon", "insertion", function (state, action, editor, session, text) { - if (text === ':') { - var cursor = editor.getCursorPosition(); - var iterator = new TokenIterator(session, cursor.row, cursor.column); - var token = iterator.getCurrentToken(); - if (token && token.value.match(/\s+/)) { - token = iterator.stepBackward(); - } - if (token && token.type === 'support.type') { - var line = session.doc.getLine(cursor.row); - var rightChar = line.substring(cursor.column, cursor.column + 1); - if (rightChar === ':') { - return { - text: '', - selection: [1, 1] - } - } - if (!line.substring(cursor.column).match(/^\s*;/)) { - return { - text: ':;', - selection: [1, 1] - } - } - } - } - }); - - this.add("colon", "deletion", function (state, action, editor, session, range) { - var selected = session.doc.getTextRange(range); - if (!range.isMultiLine() && selected === ':') { - var cursor = editor.getCursorPosition(); - var iterator = new TokenIterator(session, cursor.row, cursor.column); - var token = iterator.getCurrentToken(); - if (token && token.value.match(/\s+/)) { - token = iterator.stepBackward(); - } - if (token && token.type === 'support.type') { - var line = session.doc.getLine(range.start.row); - var rightChar = line.substring(range.end.column, range.end.column + 1); - if (rightChar === ';') { - range.end.column ++; - return range; - } - } - } - }); - - this.add("semicolon", "insertion", function (state, action, editor, session, text) { - if (text === ';') { - var cursor = editor.getCursorPosition(); - var line = session.doc.getLine(cursor.row); - var rightChar = line.substring(cursor.column, cursor.column + 1); - if (rightChar === ';') { - return { - text: '', - selection: [1, 1] - } - } - } - }); - -} -oop.inherits(CssBehaviour, CstyleBehaviour); - -exports.CssBehaviour = CssBehaviour; -}); - -ace.define('ace/mode/behaviour/cstyle', ['require', 'exports', 'module' , 'ace/lib/oop', 'ace/mode/behaviour', 'ace/token_iterator', 'ace/lib/lang'], function(require, exports, module) { - - -var oop = require("../../lib/oop"); -var Behaviour = require("../behaviour").Behaviour; -var TokenIterator = require("../../token_iterator").TokenIterator; -var lang = require("../../lib/lang"); - -var SAFE_INSERT_IN_TOKENS = - ["text", "paren.rparen", "punctuation.operator"]; -var SAFE_INSERT_BEFORE_TOKENS = - ["text", "paren.rparen", "punctuation.operator", "comment"]; - - -var autoInsertedBrackets = 0; -var autoInsertedRow = -1; -var autoInsertedLineEnd = ""; -var maybeInsertedBrackets = 0; -var maybeInsertedRow = -1; -var maybeInsertedLineStart = ""; -var maybeInsertedLineEnd = ""; - -var CstyleBehaviour = function () { - - CstyleBehaviour.isSaneInsertion = function(editor, session) { - var cursor = editor.getCursorPosition(); - var iterator = new TokenIterator(session, cursor.row, cursor.column); - if (!this.$matchTokenType(iterator.getCurrentToken() || "text", SAFE_INSERT_IN_TOKENS)) { - var iterator2 = new TokenIterator(session, cursor.row, cursor.column + 1); - if (!this.$matchTokenType(iterator2.getCurrentToken() || "text", SAFE_INSERT_IN_TOKENS)) - return false; - } - iterator.stepForward(); - return iterator.getCurrentTokenRow() !== cursor.row || - this.$matchTokenType(iterator.getCurrentToken() || "text", SAFE_INSERT_BEFORE_TOKENS); - }; - - CstyleBehaviour.$matchTokenType = function(token, types) { - return types.indexOf(token.type || token) > -1; - }; - - CstyleBehaviour.recordAutoInsert = function(editor, session, bracket) { - var cursor = editor.getCursorPosition(); - var line = session.doc.getLine(cursor.row); - if (!this.isAutoInsertedClosing(cursor, line, autoInsertedLineEnd[0])) - autoInsertedBrackets = 0; - autoInsertedRow = cursor.row; - autoInsertedLineEnd = bracket + line.substr(cursor.column); - autoInsertedBrackets++; - }; - - CstyleBehaviour.recordMaybeInsert = function(editor, session, bracket) { - var cursor = editor.getCursorPosition(); - var line = session.doc.getLine(cursor.row); - if (!this.isMaybeInsertedClosing(cursor, line)) - maybeInsertedBrackets = 0; - maybeInsertedRow = cursor.row; - maybeInsertedLineStart = line.substr(0, cursor.column) + bracket; - maybeInsertedLineEnd = line.substr(cursor.column); - maybeInsertedBrackets++; - }; - - CstyleBehaviour.isAutoInsertedClosing = function(cursor, line, bracket) { - return autoInsertedBrackets > 0 && - cursor.row === autoInsertedRow && - bracket === autoInsertedLineEnd[0] && - line.substr(cursor.column) === autoInsertedLineEnd; - }; - - CstyleBehaviour.isMaybeInsertedClosing = function(cursor, line) { - return maybeInsertedBrackets > 0 && - cursor.row === maybeInsertedRow && - line.substr(cursor.column) === maybeInsertedLineEnd && - line.substr(0, cursor.column) == maybeInsertedLineStart; - }; - - CstyleBehaviour.popAutoInsertedClosing = function() { - autoInsertedLineEnd = autoInsertedLineEnd.substr(1); - autoInsertedBrackets--; - }; - - CstyleBehaviour.clearMaybeInsertedClosing = function() { - maybeInsertedBrackets = 0; - maybeInsertedRow = -1; - }; - - this.add("braces", "insertion", function (state, action, editor, session, text) { - var cursor = editor.getCursorPosition(); - var line = session.doc.getLine(cursor.row); - if (text == '{') { - var selection = editor.getSelectionRange(); - var selected = session.doc.getTextRange(selection); - if (selected !== "" && selected !== "{" && editor.getWrapBehavioursEnabled()) { - return { - text: '{' + selected + '}', - selection: false - }; - } else if (CstyleBehaviour.isSaneInsertion(editor, session)) { - if (/[\]\}\)]/.test(line[cursor.column]) || editor.inMultiSelectMode) { - CstyleBehaviour.recordAutoInsert(editor, session, "}"); - return { - text: '{}', - selection: [1, 1] - }; - } else { - CstyleBehaviour.recordMaybeInsert(editor, session, "{"); - return { - text: '{', - selection: [1, 1] - }; - } - } - } else if (text == '}') { - var rightChar = line.substring(cursor.column, cursor.column + 1); - if (rightChar == '}') { - var matching = session.$findOpeningBracket('}', {column: cursor.column + 1, row: cursor.row}); - if (matching !== null && CstyleBehaviour.isAutoInsertedClosing(cursor, line, text)) { - CstyleBehaviour.popAutoInsertedClosing(); - return { - text: '', - selection: [1, 1] - }; - } - } - } else if (text == "\n" || text == "\r\n") { - var closing = ""; - if (CstyleBehaviour.isMaybeInsertedClosing(cursor, line)) { - closing = lang.stringRepeat("}", maybeInsertedBrackets); - CstyleBehaviour.clearMaybeInsertedClosing(); - } - var rightChar = line.substring(cursor.column, cursor.column + 1); - if (rightChar === '}') { - var openBracePos = session.findMatchingBracket({row: cursor.row, column: cursor.column+1}, '}'); - if (!openBracePos) - return null; - var next_indent = this.$getIndent(session.getLine(openBracePos.row)); - } else if (closing) { - var next_indent = this.$getIndent(line); - } else { - return; - } - var indent = next_indent + session.getTabString(); - - return { - text: '\n' + indent + '\n' + next_indent + closing, - selection: [1, indent.length, 1, indent.length] - }; - } else { - CstyleBehaviour.clearMaybeInsertedClosing(); - } - }); - - this.add("braces", "deletion", function (state, action, editor, session, range) { - var selected = session.doc.getTextRange(range); - if (!range.isMultiLine() && selected == '{') { - var line = session.doc.getLine(range.start.row); - var rightChar = line.substring(range.end.column, range.end.column + 1); - if (rightChar == '}') { - range.end.column++; - return range; - } else { - maybeInsertedBrackets--; - } - } - }); - - this.add("parens", "insertion", function (state, action, editor, session, text) { - if (text == '(') { - var selection = editor.getSelectionRange(); - var selected = session.doc.getTextRange(selection); - if (selected !== "" && editor.getWrapBehavioursEnabled()) { - return { - text: '(' + selected + ')', - selection: false - }; - } else if (CstyleBehaviour.isSaneInsertion(editor, session)) { - CstyleBehaviour.recordAutoInsert(editor, session, ")"); - return { - text: '()', - selection: [1, 1] - }; - } - } else if (text == ')') { - var cursor = editor.getCursorPosition(); - var line = session.doc.getLine(cursor.row); - var rightChar = line.substring(cursor.column, cursor.column + 1); - if (rightChar == ')') { - var matching = session.$findOpeningBracket(')', {column: cursor.column + 1, row: cursor.row}); - if (matching !== null && CstyleBehaviour.isAutoInsertedClosing(cursor, line, text)) { - CstyleBehaviour.popAutoInsertedClosing(); - return { - text: '', - selection: [1, 1] - }; - } - } - } - }); - - this.add("parens", "deletion", function (state, action, editor, session, range) { - var selected = session.doc.getTextRange(range); - if (!range.isMultiLine() && selected == '(') { - var line = session.doc.getLine(range.start.row); - var rightChar = line.substring(range.start.column + 1, range.start.column + 2); - if (rightChar == ')') { - range.end.column++; - return range; - } - } - }); - - this.add("brackets", "insertion", function (state, action, editor, session, text) { - if (text == '[') { - var selection = editor.getSelectionRange(); - var selected = session.doc.getTextRange(selection); - if (selected !== "" && editor.getWrapBehavioursEnabled()) { - return { - text: '[' + selected + ']', - selection: false - }; - } else if (CstyleBehaviour.isSaneInsertion(editor, session)) { - CstyleBehaviour.recordAutoInsert(editor, session, "]"); - return { - text: '[]', - selection: [1, 1] - }; - } - } else if (text == ']') { - var cursor = editor.getCursorPosition(); - var line = session.doc.getLine(cursor.row); - var rightChar = line.substring(cursor.column, cursor.column + 1); - if (rightChar == ']') { - var matching = session.$findOpeningBracket(']', {column: cursor.column + 1, row: cursor.row}); - if (matching !== null && CstyleBehaviour.isAutoInsertedClosing(cursor, line, text)) { - CstyleBehaviour.popAutoInsertedClosing(); - return { - text: '', - selection: [1, 1] - }; - } - } - } - }); - - this.add("brackets", "deletion", function (state, action, editor, session, range) { - var selected = session.doc.getTextRange(range); - if (!range.isMultiLine() && selected == '[') { - var line = session.doc.getLine(range.start.row); - var rightChar = line.substring(range.start.column + 1, range.start.column + 2); - if (rightChar == ']') { - range.end.column++; - return range; - } - } - }); - - this.add("string_dquotes", "insertion", function (state, action, editor, session, text) { - if (text == '"' || text == "'") { - var quote = text; - var selection = editor.getSelectionRange(); - var selected = session.doc.getTextRange(selection); - if (selected !== "" && selected !== "'" && selected != '"' && editor.getWrapBehavioursEnabled()) { - return { - text: quote + selected + quote, - selection: false - }; - } else { - var cursor = editor.getCursorPosition(); - var line = session.doc.getLine(cursor.row); - var leftChar = line.substring(cursor.column-1, cursor.column); - if (leftChar == '\\') { - return null; - } - var tokens = session.getTokens(selection.start.row); - var col = 0, token; - var quotepos = -1; // Track whether we're inside an open quote. - - for (var x = 0; x < tokens.length; x++) { - token = tokens[x]; - if (token.type == "string") { - quotepos = -1; - } else if (quotepos < 0) { - quotepos = token.value.indexOf(quote); - } - if ((token.value.length + col) > selection.start.column) { - break; - } - col += tokens[x].value.length; - } - if (!token || (quotepos < 0 && token.type !== "comment" && (token.type !== "string" || ((selection.start.column !== token.value.length+col-1) && token.value.lastIndexOf(quote) === token.value.length-1)))) { - if (!CstyleBehaviour.isSaneInsertion(editor, session)) - return; - return { - text: quote + quote, - selection: [1,1] - }; - } else if (token && token.type === "string") { - var rightChar = line.substring(cursor.column, cursor.column + 1); - if (rightChar == quote) { - return { - text: '', - selection: [1, 1] - }; - } - } - } - } - }); - - this.add("string_dquotes", "deletion", function (state, action, editor, session, range) { - var selected = session.doc.getTextRange(range); - if (!range.isMultiLine() && (selected == '"' || selected == "'")) { - var line = session.doc.getLine(range.start.row); - var rightChar = line.substring(range.start.column + 1, range.start.column + 2); - if (rightChar == selected) { - range.end.column++; - return range; - } - } - }); - -}; - -oop.inherits(CstyleBehaviour, Behaviour); - -exports.CstyleBehaviour = CstyleBehaviour; -}); - -ace.define('ace/mode/folding/cstyle', ['require', 'exports', 'module' , 'ace/lib/oop', 'ace/range', 'ace/mode/folding/fold_mode'], function(require, exports, module) { - - -var oop = require("../../lib/oop"); -var Range = require("../../range").Range; -var BaseFoldMode = require("./fold_mode").FoldMode; - -var FoldMode = exports.FoldMode = function(commentRegex) { - if (commentRegex) { - this.foldingStartMarker = new RegExp( - this.foldingStartMarker.source.replace(/\|[^|]*?$/, "|" + commentRegex.start) - ); - this.foldingStopMarker = new RegExp( - this.foldingStopMarker.source.replace(/\|[^|]*?$/, "|" + commentRegex.end) - ); - } -}; -oop.inherits(FoldMode, BaseFoldMode); - -(function() { - - this.foldingStartMarker = /(\{|\[)[^\}\]]*$|^\s*(\/\*)/; - this.foldingStopMarker = /^[^\[\{]*(\}|\])|^[\s\*]*(\*\/)/; - - this.getFoldWidgetRange = function(session, foldStyle, row, forceMultiline) { - var line = session.getLine(row); - var match = line.match(this.foldingStartMarker); - if (match) { - var i = match.index; - - if (match[1]) - return this.openingBracketBlock(session, match[1], row, i); - - var range = session.getCommentFoldRange(row, i + match[0].length, 1); - - if (range && !range.isMultiLine()) { - if (forceMultiline) { - range = this.getSectionRange(session, row); - } else if (foldStyle != "all") - range = null; - } - - return range; - } - - if (foldStyle === "markbegin") - return; - - var match = line.match(this.foldingStopMarker); - if (match) { - var i = match.index + match[0].length; - - if (match[1]) - return this.closingBracketBlock(session, match[1], row, i); - - return session.getCommentFoldRange(row, i, -1); - } - }; - - this.getSectionRange = function(session, row) { - var line = session.getLine(row); - var startIndent = line.search(/\S/); - var startRow = row; - var startColumn = line.length; - row = row + 1; - var endRow = row; - var maxRow = session.getLength(); - while (++row < maxRow) { - line = session.getLine(row); - var indent = line.search(/\S/); - if (indent === -1) - continue; - if (startIndent > indent) - break; - var subRange = this.getFoldWidgetRange(session, "all", row); - - if (subRange) { - if (subRange.start.row <= startRow) { - break; - } else if (subRange.isMultiLine()) { - row = subRange.end.row; - } else if (startIndent == indent) { - break; - } - } - endRow = row; - } - - return new Range(startRow, startColumn, endRow, session.getLine(endRow).length); - }; - -}).call(FoldMode.prototype); - -}); diff --git a/IDE/jsrealb-ide/ace-src-noconflict/mode-liquid.js b/IDE/jsrealb-ide/ace-src-noconflict/mode-liquid.js deleted file mode 100644 index 91decf65..00000000 --- a/IDE/jsrealb-ide/ace-src-noconflict/mode-liquid.js +++ /dev/null @@ -1,1063 +0,0 @@ -/* ***** BEGIN LICENSE BLOCK ***** - * Distributed under the BSD license: - * - * Copyright (c) 2010, Ajax.org B.V. - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are met: - * * Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * * Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * * Neither the name of Ajax.org B.V. nor the - * names of its contributors may be used to endorse or promote products - * derived from this software without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND - * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED - * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE - * DISCLAIMED. IN NO EVENT SHALL AJAX.ORG B.V. BE LIABLE FOR ANY - * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES - * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; - * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND - * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - * - * ***** END LICENSE BLOCK ***** */ - -ace.define('ace/mode/liquid', ['require', 'exports', 'module' , 'ace/lib/oop', 'ace/mode/text', 'ace/tokenizer', 'ace/mode/liquid_highlight_rules', 'ace/mode/matching_brace_outdent', 'ace/range'], function(require, exports, module) { - -var oop = require("../lib/oop"); -var TextMode = require("./text").Mode; -var Tokenizer = require("../tokenizer").Tokenizer; -var LiquidHighlightRules = require("./liquid_highlight_rules").LiquidHighlightRules; -var MatchingBraceOutdent = require("./matching_brace_outdent").MatchingBraceOutdent; -var Range = require("../range").Range; - -var Mode = function() { - this.HighlightRules = LiquidHighlightRules; - this.$outdent = new MatchingBraceOutdent(); -}; -oop.inherits(Mode, TextMode); - -(function() { - - this.blockComment = {start: ""}; - - this.getNextLineIndent = function(state, line, tab) { - var indent = this.$getIndent(line); - - var tokenizedLine = this.getTokenizer().getLineTokens(line, state); - var tokens = tokenizedLine.tokens; - var endState = tokenizedLine.state; - - if (tokens.length && tokens[tokens.length-1].type == "comment") { - return indent; - } - - if (state == "start") { - var match = line.match(/^.*[\{\(\[]\s*$/); - if (match) { - indent += tab; - } - } - - return indent; - }; - - this.checkOutdent = function(state, line, input) { - return this.$outdent.checkOutdent(line, input); - }; - - this.autoOutdent = function(state, doc, row) { - this.$outdent.autoOutdent(doc, row); - }; - - this.$id = "ace/mode/liquid"; -}).call(Mode.prototype); - -exports.Mode = Mode; -}); - -ace.define('ace/mode/liquid_highlight_rules', ['require', 'exports', 'module' , 'ace/lib/oop', 'ace/mode/text_highlight_rules', 'ace/mode/html_highlight_rules'], function(require, exports, module) { - - -var oop = require("../lib/oop"); -var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; -var HtmlHighlightRules = require("./html_highlight_rules").HtmlHighlightRules; - -var LiquidHighlightRules = function() { - HtmlHighlightRules.call(this); - var functions = ( - "date|capitalize|downcase|upcase|first|last|join|sort|map|size|escape|" + - "escape_once|strip_html|strip_newlines|newline_to_br|replace|replace_first|" + - "truncate|truncatewords|prepend|append|minus|plus|times|divided_by|split" - ); - - var keywords = ( - "capture|endcapture|case|endcase|when|comment|endcomment|" + - "cycle|for|endfor|in|reversed|if|endif|else|elsif|include|endinclude|unless|endunless|" + - "style|text|image|widget|plugin|marker|endmarker|tablerow|endtablerow" - ); - - var builtinVariables = 'forloop|tablerowloop'; - - var definitions = ("assign"); - - var keywordMapper = this.createKeywordMapper({ - "variable.language": builtinVariables, - "keyword": keywords, - "support.function": functions, - "keyword.definition": definitions - }, "identifier"); - for (var rule in this.$rules) { - this.$rules[rule].unshift({ - token : "variable", - regex : "{%", - push : "liquid-start" - }, { - token : "variable", - regex : "{{", - push : "liquid-start" - }); - } - - this.addRules({ - "liquid-start" : [{ - token: "variable", - regex: "}}", - next: "pop" - }, { - token: "variable", - regex: "%}", - next: "pop" - }, { - token : "string", // single line - regex : '["](?:(?:\\\\.)|(?:[^"\\\\]))*?["]' - }, { - token : "string", // single line - regex : "['](?:(?:\\\\.)|(?:[^'\\\\]))*?[']" - }, { - token : "constant.numeric", // hex - regex : "0[xX][0-9a-fA-F]+\\b" - }, { - token : "constant.numeric", // float - regex : "[+-]?\\d+(?:(?:\\.\\d*)?(?:[eE][+-]?\\d+)?)?\\b" - }, { - token : "constant.language.boolean", - regex : "(?:true|false)\\b" - }, { - token : keywordMapper, - regex : "[a-zA-Z_$][a-zA-Z0-9_$]*\\b" - }, { - token : "keyword.operator", - regex : "\/|\\*|\\-|\\+|=|!=|\\?\\:" - }, { - token : "paren.lparen", - regex : /[\[\({]/ - }, { - token : "paren.rparen", - regex : /[\])}]/ - }, { - token : "text", - regex : "\\s+" - }] - }); - - this.normalizeRules(); -}; -oop.inherits(LiquidHighlightRules, TextHighlightRules); - -exports.LiquidHighlightRules = LiquidHighlightRules; -}); - -ace.define('ace/mode/html_highlight_rules', ['require', 'exports', 'module' , 'ace/lib/oop', 'ace/lib/lang', 'ace/mode/css_highlight_rules', 'ace/mode/javascript_highlight_rules', 'ace/mode/xml_highlight_rules'], function(require, exports, module) { - - -var oop = require("../lib/oop"); -var lang = require("../lib/lang"); -var CssHighlightRules = require("./css_highlight_rules").CssHighlightRules; -var JavaScriptHighlightRules = require("./javascript_highlight_rules").JavaScriptHighlightRules; -var XmlHighlightRules = require("./xml_highlight_rules").XmlHighlightRules; - -var tagMap = lang.createMap({ - a : 'anchor', - button : 'form', - form : 'form', - img : 'image', - input : 'form', - label : 'form', - option : 'form', - script : 'script', - select : 'form', - textarea : 'form', - style : 'style', - table : 'table', - tbody : 'table', - td : 'table', - tfoot : 'table', - th : 'table', - tr : 'table' -}); - -var HtmlHighlightRules = function() { - XmlHighlightRules.call(this); - - this.addRules({ - attributes: [{ - include : "space" - }, { - token : "entity.other.attribute-name", - regex : "[-_a-zA-Z0-9:]+" - }, { - token : "keyword.operator.separator", - regex : "=", - push : [{ - include: "space" - }, { - token : "string", - regex : "[^<>='\"`\\s]+", - next : "pop" - }, { - token : "empty", - regex : "", - next : "pop" - }] - }, { - include : "string" - }], - tag: [{ - token : function(start, tag) { - var group = tagMap[tag]; - return ["meta.tag.punctuation.begin", - "meta.tag.name" + (group ? "." + group : "")]; - }, - regex : "(<)([-_a-zA-Z0-9:]+)", - next: "start_tag_stuff" - }, { - token : function(start, tag) { - var group = tagMap[tag]; - return ["meta.tag.punctuation.begin", - "meta.tag.name" + (group ? "." + group : "")]; - }, - regex : "(", next : "start"} - ], - end_tag_stuff: [ - {include : "space"}, - {token : "meta.tag.punctuation.end", regex : ">", next : "start"} - ] - }); - - this.embedTagRules(CssHighlightRules, "css-", "style"); - this.embedTagRules(JavaScriptHighlightRules, "js-", "script"); - - if (this.constructor === HtmlHighlightRules) - this.normalizeRules(); -}; - -oop.inherits(HtmlHighlightRules, XmlHighlightRules); - -exports.HtmlHighlightRules = HtmlHighlightRules; -}); - -ace.define('ace/mode/css_highlight_rules', ['require', 'exports', 'module' , 'ace/lib/oop', 'ace/lib/lang', 'ace/mode/text_highlight_rules'], function(require, exports, module) { - - -var oop = require("../lib/oop"); -var lang = require("../lib/lang"); -var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; -var supportType = exports.supportType = "animation-fill-mode|alignment-adjust|alignment-baseline|animation-delay|animation-direction|animation-duration|animation-iteration-count|animation-name|animation-play-state|animation-timing-function|animation|appearance|azimuth|backface-visibility|background-attachment|background-break|background-clip|background-color|background-image|background-origin|background-position|background-repeat|background-size|background|baseline-shift|binding|bleed|bookmark-label|bookmark-level|bookmark-state|bookmark-target|border-bottom|border-bottom-color|border-bottom-left-radius|border-bottom-right-radius|border-bottom-style|border-bottom-width|border-collapse|border-color|border-image|border-image-outset|border-image-repeat|border-image-slice|border-image-source|border-image-width|border-left|border-left-color|border-left-style|border-left-width|border-radius|border-right|border-right-color|border-right-style|border-right-width|border-spacing|border-style|border-top|border-top-color|border-top-left-radius|border-top-right-radius|border-top-style|border-top-width|border-width|border|bottom|box-align|box-decoration-break|box-direction|box-flex-group|box-flex|box-lines|box-ordinal-group|box-orient|box-pack|box-shadow|box-sizing|break-after|break-before|break-inside|caption-side|clear|clip|color-profile|color|column-count|column-fill|column-gap|column-rule|column-rule-color|column-rule-style|column-rule-width|column-span|column-width|columns|content|counter-increment|counter-reset|crop|cue-after|cue-before|cue|cursor|direction|display|dominant-baseline|drop-initial-after-adjust|drop-initial-after-align|drop-initial-before-adjust|drop-initial-before-align|drop-initial-size|drop-initial-value|elevation|empty-cells|fit|fit-position|float-offset|float|font-family|font-size|font-size-adjust|font-stretch|font-style|font-variant|font-weight|font|grid-columns|grid-rows|hanging-punctuation|height|hyphenate-after|hyphenate-before|hyphenate-character|hyphenate-lines|hyphenate-resource|hyphens|icon|image-orientation|image-rendering|image-resolution|inline-box-align|left|letter-spacing|line-height|line-stacking-ruby|line-stacking-shift|line-stacking-strategy|line-stacking|list-style-image|list-style-position|list-style-type|list-style|margin-bottom|margin-left|margin-right|margin-top|margin|mark-after|mark-before|mark|marks|marquee-direction|marquee-play-count|marquee-speed|marquee-style|max-height|max-width|min-height|min-width|move-to|nav-down|nav-index|nav-left|nav-right|nav-up|opacity|orphans|outline-color|outline-offset|outline-style|outline-width|outline|overflow-style|overflow-x|overflow-y|overflow|padding-bottom|padding-left|padding-right|padding-top|padding|page-break-after|page-break-before|page-break-inside|page-policy|page|pause-after|pause-before|pause|perspective-origin|perspective|phonemes|pitch-range|pitch|play-during|pointer-events|position|presentation-level|punctuation-trim|quotes|rendering-intent|resize|rest-after|rest-before|rest|richness|right|rotation-point|rotation|ruby-align|ruby-overhang|ruby-position|ruby-span|size|speak-header|speak-numeral|speak-punctuation|speak|speech-rate|stress|string-set|table-layout|target-name|target-new|target-position|target|text-align-last|text-align|text-decoration|text-emphasis|text-height|text-indent|text-justify|text-outline|text-shadow|text-transform|text-wrap|top|transform-origin|transform-style|transform|transition-delay|transition-duration|transition-property|transition-timing-function|transition|unicode-bidi|vertical-align|visibility|voice-balance|voice-duration|voice-family|voice-pitch-range|voice-pitch|voice-rate|voice-stress|voice-volume|volume|white-space-collapse|white-space|widows|width|word-break|word-spacing|word-wrap|z-index"; -var supportFunction = exports.supportFunction = "rgb|rgba|url|attr|counter|counters"; -var supportConstant = exports.supportConstant = "absolute|after-edge|after|all-scroll|all|alphabetic|always|antialiased|armenian|auto|avoid-column|avoid-page|avoid|balance|baseline|before-edge|before|below|bidi-override|block-line-height|block|bold|bolder|border-box|both|bottom|box|break-all|break-word|capitalize|caps-height|caption|center|central|char|circle|cjk-ideographic|clone|close-quote|col-resize|collapse|column|consider-shifts|contain|content-box|cover|crosshair|cubic-bezier|dashed|decimal-leading-zero|decimal|default|disabled|disc|disregard-shifts|distribute-all-lines|distribute-letter|distribute-space|distribute|dotted|double|e-resize|ease-in|ease-in-out|ease-out|ease|ellipsis|end|exclude-ruby|fill|fixed|georgian|glyphs|grid-height|groove|hand|hanging|hebrew|help|hidden|hiragana-iroha|hiragana|horizontal|icon|ideograph-alpha|ideograph-numeric|ideograph-parenthesis|ideograph-space|ideographic|inactive|include-ruby|inherit|initial|inline-block|inline-box|inline-line-height|inline-table|inline|inset|inside|inter-ideograph|inter-word|invert|italic|justify|katakana-iroha|katakana|keep-all|last|left|lighter|line-edge|line-through|line|linear|list-item|local|loose|lower-alpha|lower-greek|lower-latin|lower-roman|lowercase|lr-tb|ltr|mathematical|max-height|max-size|medium|menu|message-box|middle|move|n-resize|ne-resize|newspaper|no-change|no-close-quote|no-drop|no-open-quote|no-repeat|none|normal|not-allowed|nowrap|nw-resize|oblique|open-quote|outset|outside|overline|padding-box|page|pointer|pre-line|pre-wrap|pre|preserve-3d|progress|relative|repeat-x|repeat-y|repeat|replaced|reset-size|ridge|right|round|row-resize|rtl|s-resize|scroll|se-resize|separate|slice|small-caps|small-caption|solid|space|square|start|static|status-bar|step-end|step-start|steps|stretch|strict|sub|super|sw-resize|table-caption|table-cell|table-column-group|table-column|table-footer-group|table-header-group|table-row-group|table-row|table|tb-rl|text-after-edge|text-before-edge|text-bottom|text-size|text-top|text|thick|thin|transparent|underline|upper-alpha|upper-latin|upper-roman|uppercase|use-script|vertical-ideographic|vertical-text|visible|w-resize|wait|whitespace|z-index|zero"; -var supportConstantColor = exports.supportConstantColor = "aqua|black|blue|fuchsia|gray|green|lime|maroon|navy|olive|orange|purple|red|silver|teal|white|yellow"; -var supportConstantFonts = exports.supportConstantFonts = "arial|century|comic|courier|garamond|georgia|helvetica|impact|lucida|symbol|system|tahoma|times|trebuchet|utopia|verdana|webdings|sans-serif|serif|monospace"; - -var numRe = exports.numRe = "\\-?(?:(?:[0-9]+)|(?:[0-9]*\\.[0-9]+))"; -var pseudoElements = exports.pseudoElements = "(\\:+)\\b(after|before|first-letter|first-line|moz-selection|selection)\\b"; -var pseudoClasses = exports.pseudoClasses = "(:)\\b(active|checked|disabled|empty|enabled|first-child|first-of-type|focus|hover|indeterminate|invalid|last-child|last-of-type|link|not|nth-child|nth-last-child|nth-last-of-type|nth-of-type|only-child|only-of-type|required|root|target|valid|visited)\\b"; - -var CssHighlightRules = function() { - - var keywordMapper = this.createKeywordMapper({ - "support.function": supportFunction, - "support.constant": supportConstant, - "support.type": supportType, - "support.constant.color": supportConstantColor, - "support.constant.fonts": supportConstantFonts - }, "text", true); - - this.$rules = { - "start" : [{ - token : "comment", // multi line comment - regex : "\\/\\*", - push : "comment" - }, { - token: "paren.lparen", - regex: "\\{", - push: "ruleset" - }, { - token: "string", - regex: "@.*?{", - push: "media" - }, { - token: "keyword", - regex: "#[a-z0-9-_]+" - }, { - token: "variable", - regex: "\\.[a-z0-9-_]+" - }, { - token: "string", - regex: ":[a-z0-9-_]+" - }, { - token: "constant", - regex: "[a-z0-9-_]+" - }, { - caseInsensitive: true - }], - - "media" : [{ - token : "comment", // multi line comment - regex : "\\/\\*", - push : "comment" - }, { - token: "paren.lparen", - regex: "\\{", - push: "ruleset" - }, { - token: "string", - regex: "\\}", - next: "pop" - }, { - token: "keyword", - regex: "#[a-z0-9-_]+" - }, { - token: "variable", - regex: "\\.[a-z0-9-_]+" - }, { - token: "string", - regex: ":[a-z0-9-_]+" - }, { - token: "constant", - regex: "[a-z0-9-_]+" - }, { - caseInsensitive: true - }], - - "comment" : [{ - token : "comment", - regex : "\\*\\/", - next : "pop" - }, { - defaultToken : "comment" - }], - - "ruleset" : [ - { - token : "paren.rparen", - regex : "\\}", - next: "pop" - }, { - token : "comment", // multi line comment - regex : "\\/\\*", - push : "comment" - }, { - token : "string", // single line - regex : '["](?:(?:\\\\.)|(?:[^"\\\\]))*?["]' - }, { - token : "string", // single line - regex : "['](?:(?:\\\\.)|(?:[^'\\\\]))*?[']" - }, { - token : ["constant.numeric", "keyword"], - regex : "(" + numRe + ")(ch|cm|deg|em|ex|fr|gd|grad|Hz|in|kHz|mm|ms|pc|pt|px|rad|rem|s|turn|vh|vm|vw|%)" - }, { - token : "constant.numeric", - regex : numRe - }, { - token : "constant.numeric", // hex6 color - regex : "#[a-f0-9]{6}" - }, { - token : "constant.numeric", // hex3 color - regex : "#[a-f0-9]{3}" - }, { - token : ["punctuation", "entity.other.attribute-name.pseudo-element.css"], - regex : pseudoElements - }, { - token : ["punctuation", "entity.other.attribute-name.pseudo-class.css"], - regex : pseudoClasses - }, { - token : ["support.function", "string", "support.function"], - regex : "(url\\()(.*)(\\))" - }, { - token : keywordMapper, - regex : "\\-?[a-zA-Z_][a-zA-Z0-9_\\-]*" - }, { - caseInsensitive: true - }] - }; - - this.normalizeRules(); -}; - -oop.inherits(CssHighlightRules, TextHighlightRules); - -exports.CssHighlightRules = CssHighlightRules; - -}); - -ace.define('ace/mode/javascript_highlight_rules', ['require', 'exports', 'module' , 'ace/lib/oop', 'ace/mode/doc_comment_highlight_rules', 'ace/mode/text_highlight_rules'], function(require, exports, module) { - - -var oop = require("../lib/oop"); -var DocCommentHighlightRules = require("./doc_comment_highlight_rules").DocCommentHighlightRules; -var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; - -var JavaScriptHighlightRules = function() { - var keywordMapper = this.createKeywordMapper({ - "variable.language": - "Array|Boolean|Date|Function|Iterator|Number|Object|RegExp|String|Proxy|" + // Constructors - "Namespace|QName|XML|XMLList|" + // E4X - "ArrayBuffer|Float32Array|Float64Array|Int16Array|Int32Array|Int8Array|" + - "Uint16Array|Uint32Array|Uint8Array|Uint8ClampedArray|" + - "Error|EvalError|InternalError|RangeError|ReferenceError|StopIteration|" + // Errors - "SyntaxError|TypeError|URIError|" + - "decodeURI|decodeURIComponent|encodeURI|encodeURIComponent|eval|isFinite|" + // Non-constructor functions - "isNaN|parseFloat|parseInt|" + - "JSON|Math|" + // Other - "this|arguments|prototype|window|document" , // Pseudo - "keyword": - "const|yield|import|get|set|" + - "break|case|catch|continue|default|delete|do|else|finally|for|function|" + - "if|in|instanceof|new|return|switch|throw|try|typeof|let|var|while|with|debugger|" + - "__parent__|__count__|escape|unescape|with|__proto__|" + - "class|enum|extends|super|export|implements|private|public|interface|package|protected|static", - "storage.type": - "const|let|var|function", - "constant.language": - "null|Infinity|NaN|undefined", - "support.function": - "alert", - "constant.language.boolean": "true|false" - }, "identifier"); - var kwBeforeRe = "case|do|else|finally|in|instanceof|return|throw|try|typeof|yield|void"; - var identifierRe = "[a-zA-Z\\$_\u00a1-\uffff][a-zA-Z\\d\\$_\u00a1-\uffff]*\\b"; - - var escapedRe = "\\\\(?:x[0-9a-fA-F]{2}|" + // hex - "u[0-9a-fA-F]{4}|" + // unicode - "[0-2][0-7]{0,2}|" + // oct - "3[0-6][0-7]?|" + // oct - "37[0-7]?|" + // oct - "[4-7][0-7]?|" + //oct - ".)"; - - this.$rules = { - "no_regex" : [ - { - token : "comment", - regex : "\\/\\/", - next : "line_comment" - }, - DocCommentHighlightRules.getStartRule("doc-start"), - { - token : "comment", // multi line comment - regex : /\/\*/, - next : "comment" - }, { - token : "string", - regex : "'(?=.)", - next : "qstring" - }, { - token : "string", - regex : '"(?=.)', - next : "qqstring" - }, { - token : "constant.numeric", // hex - regex : /0[xX][0-9a-fA-F]+\b/ - }, { - token : "constant.numeric", // float - regex : /[+-]?\d+(?:(?:\.\d*)?(?:[eE][+-]?\d+)?)?\b/ - }, { - token : [ - "storage.type", "punctuation.operator", "support.function", - "punctuation.operator", "entity.name.function", "text","keyword.operator" - ], - regex : "(" + identifierRe + ")(\\.)(prototype)(\\.)(" + identifierRe +")(\\s*)(=)", - next: "function_arguments" - }, { - token : [ - "storage.type", "punctuation.operator", "entity.name.function", "text", - "keyword.operator", "text", "storage.type", "text", "paren.lparen" - ], - regex : "(" + identifierRe + ")(\\.)(" + identifierRe +")(\\s*)(=)(\\s*)(function)(\\s*)(\\()", - next: "function_arguments" - }, { - token : [ - "entity.name.function", "text", "keyword.operator", "text", "storage.type", - "text", "paren.lparen" - ], - regex : "(" + identifierRe +")(\\s*)(=)(\\s*)(function)(\\s*)(\\()", - next: "function_arguments" - }, { - token : [ - "storage.type", "punctuation.operator", "entity.name.function", "text", - "keyword.operator", "text", - "storage.type", "text", "entity.name.function", "text", "paren.lparen" - ], - regex : "(" + identifierRe + ")(\\.)(" + identifierRe +")(\\s*)(=)(\\s*)(function)(\\s+)(\\w+)(\\s*)(\\()", - next: "function_arguments" - }, { - token : [ - "storage.type", "text", "entity.name.function", "text", "paren.lparen" - ], - regex : "(function)(\\s+)(" + identifierRe + ")(\\s*)(\\()", - next: "function_arguments" - }, { - token : [ - "entity.name.function", "text", "punctuation.operator", - "text", "storage.type", "text", "paren.lparen" - ], - regex : "(" + identifierRe + ")(\\s*)(:)(\\s*)(function)(\\s*)(\\()", - next: "function_arguments" - }, { - token : [ - "text", "text", "storage.type", "text", "paren.lparen" - ], - regex : "(:)(\\s*)(function)(\\s*)(\\()", - next: "function_arguments" - }, { - token : "keyword", - regex : "(?:" + kwBeforeRe + ")\\b", - next : "start" - }, { - token : ["punctuation.operator", "support.function"], - regex : /(\.)(s(?:h(?:ift|ow(?:Mod(?:elessDialog|alDialog)|Help))|croll(?:X|By(?:Pages|Lines)?|Y|To)?|t(?:op|rike)|i(?:n|zeToContent|debar|gnText)|ort|u(?:p|b(?:str(?:ing)?)?)|pli(?:ce|t)|e(?:nd|t(?:Re(?:sizable|questHeader)|M(?:i(?:nutes|lliseconds)|onth)|Seconds|Ho(?:tKeys|urs)|Year|Cursor|Time(?:out)?|Interval|ZOptions|Date|UTC(?:M(?:i(?:nutes|lliseconds)|onth)|Seconds|Hours|Date|FullYear)|FullYear|Active)|arch)|qrt|lice|avePreferences|mall)|h(?:ome|andleEvent)|navigate|c(?:har(?:CodeAt|At)|o(?:s|n(?:cat|textual|firm)|mpile)|eil|lear(?:Timeout|Interval)?|a(?:ptureEvents|ll)|reate(?:StyleSheet|Popup|EventObject))|t(?:o(?:GMTString|S(?:tring|ource)|U(?:TCString|pperCase)|Lo(?:caleString|werCase))|est|a(?:n|int(?:Enabled)?))|i(?:s(?:NaN|Finite)|ndexOf|talics)|d(?:isableExternalCapture|ump|etachEvent)|u(?:n(?:shift|taint|escape|watch)|pdateCommands)|j(?:oin|avaEnabled)|p(?:o(?:p|w)|ush|lugins.refresh|a(?:ddings|rse(?:Int|Float)?)|r(?:int|ompt|eference))|e(?:scape|nableExternalCapture|val|lementFromPoint|x(?:p|ec(?:Script|Command)?))|valueOf|UTC|queryCommand(?:State|Indeterm|Enabled|Value)|f(?:i(?:nd|le(?:ModifiedDate|Size|CreatedDate|UpdatedDate)|xed)|o(?:nt(?:size|color)|rward)|loor|romCharCode)|watch|l(?:ink|o(?:ad|g)|astIndexOf)|a(?:sin|nchor|cos|t(?:tachEvent|ob|an(?:2)?)|pply|lert|b(?:s|ort))|r(?:ou(?:nd|teEvents)|e(?:size(?:By|To)|calc|turnValue|place|verse|l(?:oad|ease(?:Capture|Events)))|andom)|g(?:o|et(?:ResponseHeader|M(?:i(?:nutes|lliseconds)|onth)|Se(?:conds|lection)|Hours|Year|Time(?:zoneOffset)?|Da(?:y|te)|UTC(?:M(?:i(?:nutes|lliseconds)|onth)|Seconds|Hours|Da(?:y|te)|FullYear)|FullYear|A(?:ttention|llResponseHeaders)))|m(?:in|ove(?:B(?:y|elow)|To(?:Absolute)?|Above)|ergeAttributes|a(?:tch|rgins|x))|b(?:toa|ig|o(?:ld|rderWidths)|link|ack))\b(?=\()/ - }, { - token : ["punctuation.operator", "support.function.dom"], - regex : /(\.)(s(?:ub(?:stringData|mit)|plitText|e(?:t(?:NamedItem|Attribute(?:Node)?)|lect))|has(?:ChildNodes|Feature)|namedItem|c(?:l(?:ick|o(?:se|neNode))|reate(?:C(?:omment|DATASection|aption)|T(?:Head|extNode|Foot)|DocumentFragment|ProcessingInstruction|E(?:ntityReference|lement)|Attribute))|tabIndex|i(?:nsert(?:Row|Before|Cell|Data)|tem)|open|delete(?:Row|C(?:ell|aption)|T(?:Head|Foot)|Data)|focus|write(?:ln)?|a(?:dd|ppend(?:Child|Data))|re(?:set|place(?:Child|Data)|move(?:NamedItem|Child|Attribute(?:Node)?)?)|get(?:NamedItem|Element(?:sBy(?:Name|TagName)|ById)|Attribute(?:Node)?)|blur)\b(?=\()/ - }, { - token : ["punctuation.operator", "support.constant"], - regex : /(\.)(s(?:ystemLanguage|cr(?:ipts|ollbars|een(?:X|Y|Top|Left))|t(?:yle(?:Sheets)?|atus(?:Text|bar)?)|ibling(?:Below|Above)|ource|uffixes|e(?:curity(?:Policy)?|l(?:ection|f)))|h(?:istory|ost(?:name)?|as(?:h|Focus))|y|X(?:MLDocument|SLDocument)|n(?:ext|ame(?:space(?:s|URI)|Prop))|M(?:IN_VALUE|AX_VALUE)|c(?:haracterSet|o(?:n(?:structor|trollers)|okieEnabled|lorDepth|mp(?:onents|lete))|urrent|puClass|l(?:i(?:p(?:boardData)?|entInformation)|osed|asses)|alle(?:e|r)|rypto)|t(?:o(?:olbar|p)|ext(?:Transform|Indent|Decoration|Align)|ags)|SQRT(?:1_2|2)|i(?:n(?:ner(?:Height|Width)|put)|ds|gnoreCase)|zIndex|o(?:scpu|n(?:readystatechange|Line)|uter(?:Height|Width)|p(?:sProfile|ener)|ffscreenBuffering)|NEGATIVE_INFINITY|d(?:i(?:splay|alog(?:Height|Top|Width|Left|Arguments)|rectories)|e(?:scription|fault(?:Status|Ch(?:ecked|arset)|View)))|u(?:ser(?:Profile|Language|Agent)|n(?:iqueID|defined)|pdateInterval)|_content|p(?:ixelDepth|ort|ersonalbar|kcs11|l(?:ugins|atform)|a(?:thname|dding(?:Right|Bottom|Top|Left)|rent(?:Window|Layer)?|ge(?:X(?:Offset)?|Y(?:Offset)?))|r(?:o(?:to(?:col|type)|duct(?:Sub)?|mpter)|e(?:vious|fix)))|e(?:n(?:coding|abledPlugin)|x(?:ternal|pando)|mbeds)|v(?:isibility|endor(?:Sub)?|Linkcolor)|URLUnencoded|P(?:I|OSITIVE_INFINITY)|f(?:ilename|o(?:nt(?:Size|Family|Weight)|rmName)|rame(?:s|Element)|gColor)|E|whiteSpace|l(?:i(?:stStyleType|n(?:eHeight|kColor))|o(?:ca(?:tion(?:bar)?|lName)|wsrc)|e(?:ngth|ft(?:Context)?)|a(?:st(?:M(?:odified|atch)|Index|Paren)|yer(?:s|X)|nguage))|a(?:pp(?:MinorVersion|Name|Co(?:deName|re)|Version)|vail(?:Height|Top|Width|Left)|ll|r(?:ity|guments)|Linkcolor|bove)|r(?:ight(?:Context)?|e(?:sponse(?:XML|Text)|adyState))|global|x|m(?:imeTypes|ultiline|enubar|argin(?:Right|Bottom|Top|Left))|L(?:N(?:10|2)|OG(?:10E|2E))|b(?:o(?:ttom|rder(?:Width|RightWidth|BottomWidth|Style|Color|TopWidth|LeftWidth))|ufferDepth|elow|ackground(?:Color|Image)))\b/ - }, { - token : ["storage.type", "punctuation.operator", "support.function.firebug"], - regex : /(console)(\.)(warn|info|log|error|time|timeEnd|assert)\b/ - }, { - token : keywordMapper, - regex : identifierRe - }, { - token : "keyword.operator", - regex : /--|\+\+|[!$%&*+\-~]|===|==|=|!=|!==|<=|>=|<<=|>>=|>>>=|<>|<|>|!|&&|\|\||\?\:|\*=|%=|\+=|\-=|&=|\^=/, - next : "start" - }, { - token : "punctuation.operator", - regex : /\?|\:|\,|\;|\./, - next : "start" - }, { - token : "paren.lparen", - regex : /[\[({]/, - next : "start" - }, { - token : "paren.rparen", - regex : /[\])}]/ - }, { - token : "keyword.operator", - regex : /\/=?/, - next : "start" - }, { - token: "comment", - regex: /^#!.*$/ - } - ], - "start": [ - DocCommentHighlightRules.getStartRule("doc-start"), - { - token : "comment", // multi line comment - regex : "\\/\\*", - next : "comment_regex_allowed" - }, { - token : "comment", - regex : "\\/\\/", - next : "line_comment_regex_allowed" - }, { - token: "string.regexp", - regex: "\\/", - next: "regex" - }, { - token : "text", - regex : "\\s+|^$", - next : "start" - }, { - token: "empty", - regex: "", - next: "no_regex" - } - ], - "regex": [ - { - token: "regexp.keyword.operator", - regex: "\\\\(?:u[\\da-fA-F]{4}|x[\\da-fA-F]{2}|.)" - }, { - token: "string.regexp", - regex: "/[sxngimy]*", - next: "no_regex" - }, { - token : "invalid", - regex: /\{\d+\b,?\d*\}[+*]|[+*$^?][+*]|[$^][?]|\?{3,}/ - }, { - token : "constant.language.escape", - regex: /\(\?[:=!]|\)|\{\d+\b,?\d*\}|[+*]\?|[()$^+*?.]/ - }, { - token : "constant.language.delimiter", - regex: /\|/ - }, { - token: "constant.language.escape", - regex: /\[\^?/, - next: "regex_character_class" - }, { - token: "empty", - regex: "$", - next: "no_regex" - }, { - defaultToken: "string.regexp" - } - ], - "regex_character_class": [ - { - token: "regexp.keyword.operator", - regex: "\\\\(?:u[\\da-fA-F]{4}|x[\\da-fA-F]{2}|.)" - }, { - token: "constant.language.escape", - regex: "]", - next: "regex" - }, { - token: "constant.language.escape", - regex: "-" - }, { - token: "empty", - regex: "$", - next: "no_regex" - }, { - defaultToken: "string.regexp.charachterclass" - } - ], - "function_arguments": [ - { - token: "variable.parameter", - regex: identifierRe - }, { - token: "punctuation.operator", - regex: "[, ]+" - }, { - token: "punctuation.operator", - regex: "$" - }, { - token: "empty", - regex: "", - next: "no_regex" - } - ], - "comment_regex_allowed" : [ - {token : "comment", regex : "\\*\\/", next : "start"}, - {defaultToken : "comment"} - ], - "comment" : [ - {token : "comment", regex : "\\*\\/", next : "no_regex"}, - {defaultToken : "comment"} - ], - "line_comment_regex_allowed" : [ - {token : "comment", regex : "$|^", next : "start"}, - {defaultToken : "comment"} - ], - "line_comment" : [ - {token : "comment", regex : "$|^", next : "no_regex"}, - {defaultToken : "comment"} - ], - "qqstring" : [ - { - token : "constant.language.escape", - regex : escapedRe - }, { - token : "string", - regex : "\\\\$", - next : "qqstring" - }, { - token : "string", - regex : '"|$', - next : "no_regex" - }, { - defaultToken: "string" - } - ], - "qstring" : [ - { - token : "constant.language.escape", - regex : escapedRe - }, { - token : "string", - regex : "\\\\$", - next : "qstring" - }, { - token : "string", - regex : "'|$", - next : "no_regex" - }, { - defaultToken: "string" - } - ] - }; - - this.embedRules(DocCommentHighlightRules, "doc-", - [ DocCommentHighlightRules.getEndRule("no_regex") ]); -}; - -oop.inherits(JavaScriptHighlightRules, TextHighlightRules); - -exports.JavaScriptHighlightRules = JavaScriptHighlightRules; -}); - -ace.define('ace/mode/doc_comment_highlight_rules', ['require', 'exports', 'module' , 'ace/lib/oop', 'ace/mode/text_highlight_rules'], function(require, exports, module) { - - -var oop = require("../lib/oop"); -var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; - -var DocCommentHighlightRules = function() { - - this.$rules = { - "start" : [ { - token : "comment.doc.tag", - regex : "@[\\w\\d_]+" // TODO: fix email addresses - }, { - token : "comment.doc.tag", - regex : "\\bTODO\\b" - }, { - defaultToken : "comment.doc" - }] - }; -}; - -oop.inherits(DocCommentHighlightRules, TextHighlightRules); - -DocCommentHighlightRules.getStartRule = function(start) { - return { - token : "comment.doc", // doc comment - regex : "\\/\\*(?=\\*)", - next : start - }; -}; - -DocCommentHighlightRules.getEndRule = function (start) { - return { - token : "comment.doc", // closing comment - regex : "\\*\\/", - next : start - }; -}; - - -exports.DocCommentHighlightRules = DocCommentHighlightRules; - -}); - -ace.define('ace/mode/xml_highlight_rules', ['require', 'exports', 'module' , 'ace/lib/oop', 'ace/mode/xml_util', 'ace/mode/text_highlight_rules'], function(require, exports, module) { - - -var oop = require("../lib/oop"); -var xmlUtil = require("./xml_util"); -var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; - -var XmlHighlightRules = function(normalize) { - this.$rules = { - start : [ - {token : "punctuation.string.begin", regex : "<\\!\\[CDATA\\[", next : "cdata"}, - { - token : ["punctuation.instruction.begin", "keyword.instruction"], - regex : "(<\\?)(xml)(?=[\\s])", next : "xml_declaration" - }, - { - token : ["punctuation.instruction.begin", "keyword.instruction"], - regex : "(<\\?)([-_a-zA-Z0-9]+)", next : "instruction" - }, - {token : "comment", regex : "<\\!--", next : "comment"}, - { - token : ["punctuation.doctype.begin", "meta.tag.doctype"], - regex : "(<\\!)(DOCTYPE)(?=[\\s])", next : "doctype" - }, - {include : "tag"}, - {include : "reference"} - ], - - xml_declaration : [ - {include : "attributes"}, - {include : "instruction"} - ], - - instruction : [ - {token : "punctuation.instruction.end", regex : "\\?>", next : "start"} - ], - - doctype : [ - {include : "space"}, - {include : "string"}, - {token : "punctuation.doctype.end", regex : ">", next : "start"}, - {token : "xml-pe", regex : "[-_a-zA-Z0-9:]+"}, - {token : "punctuation.begin", regex : "\\[", push : "declarations"} - ], - - declarations : [{ - token : "text", - regex : "\\s+" - }, { - token: "punctuation.end", - regex: "]", - next: "pop" - }, { - token : ["punctuation.begin", "keyword"], - regex : "(<\\!)([-_a-zA-Z0-9]+)", - push : [{ - token : "text", - regex : "\\s+" - }, - { - token : "punctuation.end", - regex : ">", - next : "pop" - }, - {include : "string"}] - }], - - cdata : [ - {token : "string.end", regex : "\\]\\]>", next : "start"}, - {token : "text", regex : "\\s+"}, - {token : "text", regex : "(?:[^\\]]|\\](?!\\]>))+"} - ], - - comment : [ - {token : "comment", regex : "-->", next : "start"}, - {defaultToken : "comment"} - ], - - tag : [{ - token : ["meta.tag.punctuation.begin", "meta.tag.name"], - regex : "(<)((?:[-_a-zA-Z0-9]+:)?[-_a-zA-Z0-9]+)", - next: [ - {include : "attributes"}, - {token : "meta.tag.punctuation.end", regex : "/?>", next : "start"} - ] - }, { - token : ["meta.tag.punctuation.begin", "meta.tag.name"], - regex : "(", next : "start"} - ] - }], - - space : [ - {token : "text", regex : "\\s+"} - ], - - reference : [{ - token : "constant.language.escape", - regex : "(?:&#[0-9]+;)|(?:&#x[0-9a-fA-F]+;)|(?:&[a-zA-Z0-9_:\\.-]+;)" - }, { - token : "text", regex : "&" - }], - - string: [{ - token : "string", - regex : "'", - push : "qstring_inner" - }, { - token : "string", - regex : '"', - push : "qqstring_inner" - }], - - qstring_inner: [ - {token : "string", regex: "'", next: "pop"}, - {include : "reference"}, - {defaultToken : "string"} - ], - - qqstring_inner: [ - {token : "string", regex: '"', next: "pop"}, - {include : "reference"}, - {defaultToken : "string"} - ], - - attributes: [{ - token : "entity.other.attribute-name", - regex : "(?:[-_a-zA-Z0-9]+:)?[-_a-zA-Z0-9]+" - }, { - token : "keyword.operator.separator", - regex : "=" - }, { - include : "space" - }, { - include : "string" - }] - }; - - if (this.constructor === XmlHighlightRules) - this.normalizeRules(); -}; - - -(function() { - - this.embedTagRules = function(HighlightRules, prefix, tag){ - this.$rules.tag.unshift({ - token : ["meta.tag.punctuation.begin", "meta.tag.name." + tag], - regex : "(<)(" + tag + ")", - next: [ - {include : "space"}, - {include : "attributes"}, - {token : "meta.tag.punctuation.end", regex : "/?>", next : prefix + "start"} - ] - }); - - this.$rules[tag + "-end"] = [ - {include : "space"}, - {token : "meta.tag.punctuation.end", regex : ">", next: "start", - onMatch : function(value, currentState, stack) { - stack.splice(0); - return this.token; - }} - ] - - this.embedRules(HighlightRules, prefix, [{ - token: ["meta.tag.punctuation.begin", "meta.tag.name." + tag], - regex : "(" - }]); - }; - -}).call(TextHighlightRules.prototype); - -oop.inherits(XmlHighlightRules, TextHighlightRules); - -exports.XmlHighlightRules = XmlHighlightRules; -}); - -ace.define('ace/mode/xml_util', ['require', 'exports', 'module' ], function(require, exports, module) { - - -function string(state) { - return [{ - token : "string", - regex : '"', - next : state + "_qqstring" - }, { - token : "string", - regex : "'", - next : state + "_qstring" - }]; -} - -function multiLineString(quote, state) { - return [ - {token : "string", regex : quote, next : state}, - { - token : "constant.language.escape", - regex : "(?:&#[0-9]+;)|(?:&#x[0-9a-fA-F]+;)|(?:&[a-zA-Z0-9_:\\.-]+;)" - }, - {defaultToken : "string"} - ]; -} - -exports.tag = function(states, name, nextState, tagMap) { - states[name] = [{ - token : "text", - regex : "\\s+" - }, { - - token : !tagMap ? "meta.tag.tag-name" : function(value) { - if (tagMap[value]) - return "meta.tag.tag-name." + tagMap[value]; - else - return "meta.tag.tag-name"; - }, - regex : "[-_a-zA-Z0-9:]+", - next : name + "_embed_attribute_list" - }, { - token: "empty", - regex: "", - next : name + "_embed_attribute_list" - }]; - - states[name + "_qstring"] = multiLineString("'", name + "_embed_attribute_list"); - states[name + "_qqstring"] = multiLineString("\"", name + "_embed_attribute_list"); - - states[name + "_embed_attribute_list"] = [{ - token : "meta.tag.r", - regex : "/?>", - next : nextState - }, { - token : "keyword.operator", - regex : "=" - }, { - token : "entity.other.attribute-name", - regex : "[-_a-zA-Z0-9:]+" - }, { - token : "constant.numeric", // float - regex : "[+-]?\\d+(?:(?:\\.\\d*)?(?:[eE][+-]?\\d+)?)?\\b" - }, { - token : "text", - regex : "\\s+" - }].concat(string(name)); -}; - -}); - -ace.define('ace/mode/matching_brace_outdent', ['require', 'exports', 'module' , 'ace/range'], function(require, exports, module) { - - -var Range = require("../range").Range; - -var MatchingBraceOutdent = function() {}; - -(function() { - - this.checkOutdent = function(line, input) { - if (! /^\s+$/.test(line)) - return false; - - return /^\s*\}/.test(input); - }; - - this.autoOutdent = function(doc, row) { - var line = doc.getLine(row); - var match = line.match(/^(\s*\})/); - - if (!match) return 0; - - var column = match[1].length; - var openBracePos = doc.findMatchingBracket({row: row, column: column}); - - if (!openBracePos || openBracePos.row == row) return 0; - - var indent = this.$getIndent(doc.getLine(openBracePos.row)); - doc.replace(new Range(row, 0, row, column-1), indent); - }; - - this.$getIndent = function(line) { - return line.match(/^\s*/)[0]; - }; - -}).call(MatchingBraceOutdent.prototype); - -exports.MatchingBraceOutdent = MatchingBraceOutdent; -}); diff --git a/IDE/jsrealb-ide/ace-src-noconflict/mode-lisp.js b/IDE/jsrealb-ide/ace-src-noconflict/mode-lisp.js deleted file mode 100644 index 2d79f94a..00000000 --- a/IDE/jsrealb-ide/ace-src-noconflict/mode-lisp.js +++ /dev/null @@ -1,137 +0,0 @@ -/* ***** BEGIN LICENSE BLOCK ***** - * Distributed under the BSD license: - * - * Copyright (c) 2012, Ajax.org B.V. - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are met: - * * Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * * Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * * Neither the name of Ajax.org B.V. nor the - * names of its contributors may be used to endorse or promote products - * derived from this software without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND - * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED - * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE - * DISCLAIMED. IN NO EVENT SHALL AJAX.ORG B.V. BE LIABLE FOR ANY - * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES - * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; - * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND - * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - * - * - * ***** END LICENSE BLOCK ***** */ - -ace.define('ace/mode/lisp', ['require', 'exports', 'module' , 'ace/lib/oop', 'ace/mode/text', 'ace/tokenizer', 'ace/mode/lisp_highlight_rules'], function(require, exports, module) { - - -var oop = require("../lib/oop"); -var TextMode = require("./text").Mode; -var Tokenizer = require("../tokenizer").Tokenizer; -var LispHighlightRules = require("./lisp_highlight_rules").LispHighlightRules; - -var Mode = function() { - this.HighlightRules = LispHighlightRules; -}; -oop.inherits(Mode, TextMode); - -(function() { - - this.lineCommentStart = ";"; - - this.$id = "ace/mode/lisp"; -}).call(Mode.prototype); - -exports.Mode = Mode; -}); - - -ace.define('ace/mode/lisp_highlight_rules', ['require', 'exports', 'module' , 'ace/lib/oop', 'ace/mode/text_highlight_rules'], function(require, exports, module) { - - -var oop = require("../lib/oop"); -var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; - -var LispHighlightRules = function() { - var keywordControl = "case|do|let|loop|if|else|when"; - var keywordOperator = "eq|neq|and|or"; - var constantLanguage = "null|nil"; - var supportFunctions = "cons|car|cdr|cond|lambda|format|setq|setf|quote|eval|append|list|listp|memberp|t|load|progn"; - - var keywordMapper = this.createKeywordMapper({ - "keyword.control": keywordControl, - "keyword.operator": keywordOperator, - "constant.language": constantLanguage, - "support.function": supportFunctions - }, "identifier", true); - - this.$rules = - { - "start": [ - { - token : "comment", - regex : ";.*$" - }, - { - token: ["storage.type.function-type.lisp", "text", "entity.name.function.lisp"], - regex: "(?:\\b(?:(defun|defmethod|defmacro))\\b)(\\s+)((?:\\w|\\-|\\!|\\?)*)" - }, - { - token: ["punctuation.definition.constant.character.lisp", "constant.character.lisp"], - regex: "(#)((?:\\w|[\\\\+-=<>'\"&#])+)" - }, - { - token: ["punctuation.definition.variable.lisp", "variable.other.global.lisp", "punctuation.definition.variable.lisp"], - regex: "(\\*)(\\S*)(\\*)" - }, - { - token : "constant.numeric", // hex - regex : "0[xX][0-9a-fA-F]+(?:L|l|UL|ul|u|U|F|f|ll|LL|ull|ULL)?\\b" - }, - { - token : "constant.numeric", // float - regex : "[+-]?\\d+(?:(?:\\.\\d*)?(?:[eE][+-]?\\d+)?)?(?:L|l|UL|ul|u|U|F|f|ll|LL|ull|ULL)?\\b" - }, - { - token : keywordMapper, - regex : "[a-zA-Z_$][a-zA-Z0-9_$]*\\b" - }, - { - token : "string", - regex : '"(?=.)', - next : "qqstring" - } - ], - "qqstring": [ - { - token: "constant.character.escape.lisp", - regex: "\\\\." - }, - { - token : "string", - regex : '[^"\\\\]+' - }, { - token : "string", - regex : "\\\\$", - next : "qqstring" - }, { - token : "string", - regex : '"|$', - next : "start" - } - ] -} - -}; - -oop.inherits(LispHighlightRules, TextHighlightRules); - -exports.LispHighlightRules = LispHighlightRules; -}); diff --git a/IDE/jsrealb-ide/ace-src-noconflict/mode-livescript.js b/IDE/jsrealb-ide/ace-src-noconflict/mode-livescript.js deleted file mode 100644 index dc2cda04..00000000 --- a/IDE/jsrealb-ide/ace-src-noconflict/mode-livescript.js +++ /dev/null @@ -1,288 +0,0 @@ -ace.define('ace/mode/livescript', ['require', 'exports', 'module' , 'ace/tokenizer', 'ace/mode/matching_brace_outdent', 'ace/range', 'ace/mode/text'], function(require, exports, module) { - var identifier, LiveScriptMode, keywordend, stringfill; - identifier = '(?![\\d\\s])[$\\w\\xAA-\\uFFDC](?:(?!\\s)[$\\w\\xAA-\\uFFDC]|-[A-Za-z])*'; - exports.Mode = LiveScriptMode = (function(superclass){ - var indenter, prototype = extend$((import$(LiveScriptMode, superclass).displayName = 'LiveScriptMode', LiveScriptMode), superclass).prototype, constructor = LiveScriptMode; - function LiveScriptMode(){ - var that; - this.$tokenizer = new (require('../tokenizer')).Tokenizer(LiveScriptMode.Rules); - if (that = require('../mode/matching_brace_outdent')) { - this.$outdent = new that.MatchingBraceOutdent; - } - } - indenter = RegExp('(?:[({[=:]|[-~]>|\\b(?:e(?:lse|xport)|d(?:o|efault)|t(?:ry|hen)|finally|import(?:\\s*all)?|const|var|let|new|catch(?:\\s*' + identifier + ')?))\\s*$'); - prototype.getNextLineIndent = function(state, line, tab){ - var indent, tokens; - indent = this.$getIndent(line); - tokens = this.$tokenizer.getLineTokens(line, state).tokens; - if (!(tokens.length && tokens[tokens.length - 1].type === 'comment')) { - if (state === 'start' && indenter.test(line)) { - indent += tab; - } - } - return indent; - }; - prototype.toggleCommentLines = function(state, doc, startRow, endRow){ - var comment, range, i$, i, out, line; - comment = /^(\s*)#/; - range = new (require('../range')).Range(0, 0, 0, 0); - for (i$ = startRow; i$ <= endRow; ++i$) { - i = i$; - if (out = comment.test(line = doc.getLine(i))) { - line = line.replace(comment, '$1'); - } else { - line = line.replace(/^\s*/, '$&#'); - } - range.end.row = range.start.row = i; - range.end.column = line.length + 1; - doc.replace(range, line); - } - return 1 - out * 2; - }; - prototype.checkOutdent = function(state, line, input){ - var ref$; - return (ref$ = this.$outdent) != null ? ref$.checkOutdent(line, input) : void 8; - }; - prototype.autoOutdent = function(state, doc, row){ - var ref$; - return (ref$ = this.$outdent) != null ? ref$.autoOutdent(doc, row) : void 8; - }; - return LiveScriptMode; - }(require('../mode/text').Mode)); - keywordend = '(?![$\\w]|-[A-Za-z]|\\s*:(?![:=]))'; - stringfill = { - token: 'string', - regex: '.+' - }; - LiveScriptMode.Rules = { - start: [ - { - token: 'keyword', - regex: '(?:t(?:h(?:is|row|en)|ry|ypeof!?)|c(?:on(?:tinue|st)|a(?:se|tch)|lass)|i(?:n(?:stanceof)?|mp(?:ort(?:\\s+all)?|lements)|[fs])|d(?:e(?:fault|lete|bugger)|o)|f(?:or(?:\\s+own)?|inally|unction)|s(?:uper|witch)|e(?:lse|x(?:tends|port)|val)|a(?:nd|rguments)|n(?:ew|ot)|un(?:less|til)|w(?:hile|ith)|o[fr]|return|break|let|var|loop)' + keywordend - }, { - token: 'constant.language', - regex: '(?:true|false|yes|no|on|off|null|void|undefined)' + keywordend - }, { - token: 'invalid.illegal', - regex: '(?:p(?:ackage|r(?:ivate|otected)|ublic)|i(?:mplements|nterface)|enum|static|yield)' + keywordend - }, { - token: 'language.support.class', - regex: '(?:R(?:e(?:gExp|ferenceError)|angeError)|S(?:tring|yntaxError)|E(?:rror|valError)|Array|Boolean|Date|Function|Number|Object|TypeError|URIError)' + keywordend - }, { - token: 'language.support.function', - regex: '(?:is(?:NaN|Finite)|parse(?:Int|Float)|Math|JSON|(?:en|de)codeURI(?:Component)?)' + keywordend - }, { - token: 'variable.language', - regex: '(?:t(?:hat|il|o)|f(?:rom|allthrough)|it|by|e)' + keywordend - }, { - token: 'identifier', - regex: identifier + '\\s*:(?![:=])' - }, { - token: 'variable', - regex: identifier - }, { - token: 'keyword.operator', - regex: '(?:\\.{3}|\\s+\\?)' - }, { - token: 'keyword.variable', - regex: '(?:@+|::|\\.\\.)', - next: 'key' - }, { - token: 'keyword.operator', - regex: '\\.\\s*', - next: 'key' - }, { - token: 'string', - regex: '\\\\\\S[^\\s,;)}\\]]*' - }, { - token: 'string.doc', - regex: '\'\'\'', - next: 'qdoc' - }, { - token: 'string.doc', - regex: '"""', - next: 'qqdoc' - }, { - token: 'string', - regex: '\'', - next: 'qstring' - }, { - token: 'string', - regex: '"', - next: 'qqstring' - }, { - token: 'string', - regex: '`', - next: 'js' - }, { - token: 'string', - regex: '<\\[', - next: 'words' - }, { - token: 'string.regex', - regex: '//', - next: 'heregex' - }, { - token: 'comment.doc', - regex: '/\\*', - next: 'comment' - }, { - token: 'comment', - regex: '#.*' - }, { - token: 'string.regex', - regex: '\\/(?:[^[\\/\\n\\\\]*(?:(?:\\\\.|\\[[^\\]\\n\\\\]*(?:\\\\.[^\\]\\n\\\\]*)*\\])[^[\\/\\n\\\\]*)*)\\/[gimy$]{0,4}', - next: 'key' - }, { - token: 'constant.numeric', - regex: '(?:0x[\\da-fA-F][\\da-fA-F_]*|(?:[2-9]|[12]\\d|3[0-6])r[\\da-zA-Z][\\da-zA-Z_]*|(?:\\d[\\d_]*(?:\\.\\d[\\d_]*)?|\\.\\d[\\d_]*)(?:e[+-]?\\d[\\d_]*)?[\\w$]*)' - }, { - token: 'lparen', - regex: '[({[]' - }, { - token: 'rparen', - regex: '[)}\\]]', - next: 'key' - }, { - token: 'keyword.operator', - regex: '\\S+' - }, { - token: 'text', - regex: '\\s+' - } - ], - heregex: [ - { - token: 'string.regex', - regex: '.*?//[gimy$?]{0,4}', - next: 'start' - }, { - token: 'string.regex', - regex: '\\s*#{' - }, { - token: 'comment.regex', - regex: '\\s+(?:#.*)?' - }, { - token: 'string.regex', - regex: '\\S+' - } - ], - key: [ - { - token: 'keyword.operator', - regex: '[.?@!]+' - }, { - token: 'identifier', - regex: identifier, - next: 'start' - }, { - token: 'text', - regex: '.', - next: 'start' - } - ], - comment: [ - { - token: 'comment.doc', - regex: '.*?\\*/', - next: 'start' - }, { - token: 'comment.doc', - regex: '.+' - } - ], - qdoc: [ - { - token: 'string', - regex: ".*?'''", - next: 'key' - }, stringfill - ], - qqdoc: [ - { - token: 'string', - regex: '.*?"""', - next: 'key' - }, stringfill - ], - qstring: [ - { - token: 'string', - regex: '[^\\\\\']*(?:\\\\.[^\\\\\']*)*\'', - next: 'key' - }, stringfill - ], - qqstring: [ - { - token: 'string', - regex: '[^\\\\"]*(?:\\\\.[^\\\\"]*)*"', - next: 'key' - }, stringfill - ], - js: [ - { - token: 'string', - regex: '[^\\\\`]*(?:\\\\.[^\\\\`]*)*`', - next: 'key' - }, stringfill - ], - words: [ - { - token: 'string', - regex: '.*?\\]>', - next: 'key' - }, stringfill - ] - }; -function extend$(sub, sup){ - function fun(){} fun.prototype = (sub.superclass = sup).prototype; - (sub.prototype = new fun).constructor = sub; - if (typeof sup.extended == 'function') sup.extended(sub); - return sub; -} -function import$(obj, src){ - var own = {}.hasOwnProperty; - for (var key in src) if (own.call(src, key)) obj[key] = src[key]; - return obj; -} -}); - -ace.define('ace/mode/matching_brace_outdent', ['require', 'exports', 'module' , 'ace/range'], function(require, exports, module) { - - -var Range = require("../range").Range; - -var MatchingBraceOutdent = function() {}; - -(function() { - - this.checkOutdent = function(line, input) { - if (! /^\s+$/.test(line)) - return false; - - return /^\s*\}/.test(input); - }; - - this.autoOutdent = function(doc, row) { - var line = doc.getLine(row); - var match = line.match(/^(\s*\})/); - - if (!match) return 0; - - var column = match[1].length; - var openBracePos = doc.findMatchingBracket({row: row, column: column}); - - if (!openBracePos || openBracePos.row == row) return 0; - - var indent = this.$getIndent(doc.getLine(openBracePos.row)); - doc.replace(new Range(row, 0, row, column-1), indent); - }; - - this.$getIndent = function(line) { - return line.match(/^\s*/)[0]; - }; - -}).call(MatchingBraceOutdent.prototype); - -exports.MatchingBraceOutdent = MatchingBraceOutdent; -}); diff --git a/IDE/jsrealb-ide/ace-src-noconflict/mode-logiql.js b/IDE/jsrealb-ide/ace-src-noconflict/mode-logiql.js deleted file mode 100644 index f1ab0825..00000000 --- a/IDE/jsrealb-ide/ace-src-noconflict/mode-logiql.js +++ /dev/null @@ -1,669 +0,0 @@ -/* ***** BEGIN LICENSE BLOCK ***** - * Distributed under the BSD license: - * - * Copyright (c) 2012, Ajax.org B.V. - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are met: - * * Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * * Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * * Neither the name of Ajax.org B.V. nor the - * names of its contributors may be used to endorse or promote products - * derived from this software without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND - * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED - * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE - * DISCLAIMED. IN NO EVENT SHALL AJAX.ORG B.V. BE LIABLE FOR ANY - * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES - * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; - * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND - * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - * - * ***** END LICENSE BLOCK ***** */ - -ace.define('ace/mode/logiql', ['require', 'exports', 'module' , 'ace/lib/oop', 'ace/mode/text', 'ace/tokenizer', 'ace/mode/logiql_highlight_rules', 'ace/mode/folding/coffee', 'ace/token_iterator', 'ace/range', 'ace/mode/behaviour/cstyle', 'ace/mode/matching_brace_outdent'], function(require, exports, module) { - - -var oop = require("../lib/oop"); -var TextMode = require("./text").Mode; -var Tokenizer = require("../tokenizer").Tokenizer; -var LogiQLHighlightRules = require("./logiql_highlight_rules").LogiQLHighlightRules; -var FoldMode = require("./folding/coffee").FoldMode; -var TokenIterator = require("../token_iterator").TokenIterator; -var Range = require("../range").Range; -var CstyleBehaviour = require("./behaviour/cstyle").CstyleBehaviour; -var MatchingBraceOutdent = require("./matching_brace_outdent").MatchingBraceOutdent; - -var Mode = function() { - this.HighlightRules = LogiQLHighlightRules; - this.foldingRules = new FoldMode(); - this.$outdent = new MatchingBraceOutdent(); - this.$behaviour = new CstyleBehaviour(); -}; -oop.inherits(Mode, TextMode); - -(function() { - this.lineCommentStart = "//"; - this.blockComment = {start: "/*", end: "*/"}; - - this.getNextLineIndent = function(state, line, tab) { - var indent = this.$getIndent(line); - - var tokenizedLine = this.getTokenizer().getLineTokens(line, state); - var tokens = tokenizedLine.tokens; - var endState = tokenizedLine.state; - if (/comment|string/.test(endState)) - return indent; - if (tokens.length && tokens[tokens.length - 1].type == "comment.single") - return indent; - - var match = line.match(); - if (/(-->|<--|<-|->|{)\s*$/.test(line)) - indent += tab; - return indent; - }; - - this.checkOutdent = function(state, line, input) { - if (this.$outdent.checkOutdent(line, input)) - return true; - - if (input !== "\n" && input !== "\r\n") - return false; - - if (!/^\s+/.test(line)) - return false; - - return true; - }; - - this.autoOutdent = function(state, doc, row) { - if (this.$outdent.autoOutdent(doc, row)) - return; - var prevLine = doc.getLine(row); - var match = prevLine.match(/^\s+/); - var column = prevLine.lastIndexOf(".") + 1; - if (!match || !row || !column) return 0; - - var line = doc.getLine(row + 1); - var startRange = this.getMatching(doc, {row: row, column: column}); - if (!startRange || startRange.start.row == row) return 0; - - column = match[0].length; - var indent = this.$getIndent(doc.getLine(startRange.start.row)); - doc.replace(new Range(row + 1, 0, row + 1, column), indent); - }; - - this.getMatching = function(session, row, column) { - if (row == undefined) - row = session.selection.lead - if (typeof row == "object") { - column = row.column; - row = row.row; - } - - var startToken = session.getTokenAt(row, column); - var KW_START = "keyword.start", KW_END = "keyword.end"; - var tok; - if (!startToken) - return; - if (startToken.type == KW_START) { - var it = new TokenIterator(session, row, column); - it.step = it.stepForward; - } else if (startToken.type == KW_END) { - var it = new TokenIterator(session, row, column); - it.step = it.stepBackward; - } else - return; - - while (tok = it.step()) { - if (tok.type == KW_START || tok.type == KW_END) - break; - } - if (!tok || tok.type == startToken.type) - return; - - var col = it.getCurrentTokenColumn(); - var row = it.getCurrentTokenRow(); - return new Range(row, col, row, col + tok.value.length); - }; - this.$id = "ace/mode/logiql"; -}).call(Mode.prototype); - -exports.Mode = Mode; -}); - -ace.define('ace/mode/logiql_highlight_rules', ['require', 'exports', 'module' , 'ace/lib/oop', 'ace/mode/text_highlight_rules'], function(require, exports, module) { - - -var oop = require("../lib/oop"); -var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; - -var LogiQLHighlightRules = function() { - - this.$rules = { start: - [ { token: 'comment.block', - regex: '/\\*', - push: - [ { token: 'comment.block', regex: '\\*/', next: 'pop' }, - { defaultToken: 'comment.block' } ], - }, - { token: 'comment.single', - regex: '//.*', - }, - { token: 'constant.numeric', - regex: '\\d+(?:\\.\\d+)?(?:[eE][+-]?\\d+)?[fd]?', - }, - { token: 'string', - regex: '"', - push: - [ { token: 'string', regex: '"', next: 'pop' }, - { defaultToken: 'string' } ], - }, - { token: 'constant.language', - regex: '\\b(true|false)\\b', - }, - { token: 'entity.name.type.logicblox', - regex: '`[a-zA-Z_:]+(\\d|\\a)*\\b', - }, - { token: 'keyword.start', regex: '->', comment: 'Constraint' }, - { token: 'keyword.start', regex: '-->', comment: 'Level 1 Constraint'}, - { token: 'keyword.start', regex: '<-', comment: 'Rule' }, - { token: 'keyword.start', regex: '<--', comment: 'Level 1 Rule' }, - { token: 'keyword.end', regex: '\\.', comment: 'Terminator' }, - { token: 'keyword.other', regex: '!', comment: 'Negation' }, - { token: 'keyword.other', regex: ',', comment: 'Conjunction' }, - { token: 'keyword.other', regex: ';', comment: 'Disjunction' }, - { token: 'keyword.operator', regex: '<=|>=|!=|<|>', comment: 'Equality'}, - { token: 'keyword.other', regex: '@', comment: 'Equality' }, - { token: 'keyword.operator', regex: '\\+|-|\\*|/', comment: 'Arithmetic operations'}, - { token: 'keyword', regex: '::', comment: 'Colon colon' }, - { token: 'support.function', - regex: '\\b(agg\\s*<<)', - push: - [ { include: '$self' }, - { token: 'support.function', - regex: '>>', - next: 'pop' } ], - }, - { token: 'storage.modifier', - regex: '\\b(lang:[\\w:]*)', - }, - { token: [ 'storage.type', 'text' ], - regex: '(export|sealed|clauses|block|alias|alias_all)(\\s*\\()(?=`)', - }, - { token: 'entity.name', - regex: '[a-zA-Z_][a-zA-Z_0-9:]*(@prev|@init|@final)?(?=(\\(|\\[))', - }, - { token: 'variable.parameter', - regex: '([a-zA-Z][a-zA-Z_0-9]*|_)\\s*(?=(,|\\.|<-|->|\\)|\\]|=))', - } ] } - - this.normalizeRules(); -}; - -oop.inherits(LogiQLHighlightRules, TextHighlightRules); - -exports.LogiQLHighlightRules = LogiQLHighlightRules; -}); - -ace.define('ace/mode/folding/coffee', ['require', 'exports', 'module' , 'ace/lib/oop', 'ace/mode/folding/fold_mode', 'ace/range'], function(require, exports, module) { - - -var oop = require("../../lib/oop"); -var BaseFoldMode = require("./fold_mode").FoldMode; -var Range = require("../../range").Range; - -var FoldMode = exports.FoldMode = function() {}; -oop.inherits(FoldMode, BaseFoldMode); - -(function() { - - this.getFoldWidgetRange = function(session, foldStyle, row) { - var range = this.indentationBlock(session, row); - if (range) - return range; - - var re = /\S/; - var line = session.getLine(row); - var startLevel = line.search(re); - if (startLevel == -1 || line[startLevel] != "#") - return; - - var startColumn = line.length; - var maxRow = session.getLength(); - var startRow = row; - var endRow = row; - - while (++row < maxRow) { - line = session.getLine(row); - var level = line.search(re); - - if (level == -1) - continue; - - if (line[level] != "#") - break; - - endRow = row; - } - - if (endRow > startRow) { - var endColumn = session.getLine(endRow).length; - return new Range(startRow, startColumn, endRow, endColumn); - } - }; - this.getFoldWidget = function(session, foldStyle, row) { - var line = session.getLine(row); - var indent = line.search(/\S/); - var next = session.getLine(row + 1); - var prev = session.getLine(row - 1); - var prevIndent = prev.search(/\S/); - var nextIndent = next.search(/\S/); - - if (indent == -1) { - session.foldWidgets[row - 1] = prevIndent!= -1 && prevIndent < nextIndent ? "start" : ""; - return ""; - } - if (prevIndent == -1) { - if (indent == nextIndent && line[indent] == "#" && next[indent] == "#") { - session.foldWidgets[row - 1] = ""; - session.foldWidgets[row + 1] = ""; - return "start"; - } - } else if (prevIndent == indent && line[indent] == "#" && prev[indent] == "#") { - if (session.getLine(row - 2).search(/\S/) == -1) { - session.foldWidgets[row - 1] = "start"; - session.foldWidgets[row + 1] = ""; - return ""; - } - } - - if (prevIndent!= -1 && prevIndent < indent) - session.foldWidgets[row - 1] = "start"; - else - session.foldWidgets[row - 1] = ""; - - if (indent < nextIndent) - return "start"; - else - return ""; - }; - -}).call(FoldMode.prototype); - -}); - -ace.define('ace/mode/behaviour/cstyle', ['require', 'exports', 'module' , 'ace/lib/oop', 'ace/mode/behaviour', 'ace/token_iterator', 'ace/lib/lang'], function(require, exports, module) { - - -var oop = require("../../lib/oop"); -var Behaviour = require("../behaviour").Behaviour; -var TokenIterator = require("../../token_iterator").TokenIterator; -var lang = require("../../lib/lang"); - -var SAFE_INSERT_IN_TOKENS = - ["text", "paren.rparen", "punctuation.operator"]; -var SAFE_INSERT_BEFORE_TOKENS = - ["text", "paren.rparen", "punctuation.operator", "comment"]; - - -var autoInsertedBrackets = 0; -var autoInsertedRow = -1; -var autoInsertedLineEnd = ""; -var maybeInsertedBrackets = 0; -var maybeInsertedRow = -1; -var maybeInsertedLineStart = ""; -var maybeInsertedLineEnd = ""; - -var CstyleBehaviour = function () { - - CstyleBehaviour.isSaneInsertion = function(editor, session) { - var cursor = editor.getCursorPosition(); - var iterator = new TokenIterator(session, cursor.row, cursor.column); - if (!this.$matchTokenType(iterator.getCurrentToken() || "text", SAFE_INSERT_IN_TOKENS)) { - var iterator2 = new TokenIterator(session, cursor.row, cursor.column + 1); - if (!this.$matchTokenType(iterator2.getCurrentToken() || "text", SAFE_INSERT_IN_TOKENS)) - return false; - } - iterator.stepForward(); - return iterator.getCurrentTokenRow() !== cursor.row || - this.$matchTokenType(iterator.getCurrentToken() || "text", SAFE_INSERT_BEFORE_TOKENS); - }; - - CstyleBehaviour.$matchTokenType = function(token, types) { - return types.indexOf(token.type || token) > -1; - }; - - CstyleBehaviour.recordAutoInsert = function(editor, session, bracket) { - var cursor = editor.getCursorPosition(); - var line = session.doc.getLine(cursor.row); - if (!this.isAutoInsertedClosing(cursor, line, autoInsertedLineEnd[0])) - autoInsertedBrackets = 0; - autoInsertedRow = cursor.row; - autoInsertedLineEnd = bracket + line.substr(cursor.column); - autoInsertedBrackets++; - }; - - CstyleBehaviour.recordMaybeInsert = function(editor, session, bracket) { - var cursor = editor.getCursorPosition(); - var line = session.doc.getLine(cursor.row); - if (!this.isMaybeInsertedClosing(cursor, line)) - maybeInsertedBrackets = 0; - maybeInsertedRow = cursor.row; - maybeInsertedLineStart = line.substr(0, cursor.column) + bracket; - maybeInsertedLineEnd = line.substr(cursor.column); - maybeInsertedBrackets++; - }; - - CstyleBehaviour.isAutoInsertedClosing = function(cursor, line, bracket) { - return autoInsertedBrackets > 0 && - cursor.row === autoInsertedRow && - bracket === autoInsertedLineEnd[0] && - line.substr(cursor.column) === autoInsertedLineEnd; - }; - - CstyleBehaviour.isMaybeInsertedClosing = function(cursor, line) { - return maybeInsertedBrackets > 0 && - cursor.row === maybeInsertedRow && - line.substr(cursor.column) === maybeInsertedLineEnd && - line.substr(0, cursor.column) == maybeInsertedLineStart; - }; - - CstyleBehaviour.popAutoInsertedClosing = function() { - autoInsertedLineEnd = autoInsertedLineEnd.substr(1); - autoInsertedBrackets--; - }; - - CstyleBehaviour.clearMaybeInsertedClosing = function() { - maybeInsertedBrackets = 0; - maybeInsertedRow = -1; - }; - - this.add("braces", "insertion", function (state, action, editor, session, text) { - var cursor = editor.getCursorPosition(); - var line = session.doc.getLine(cursor.row); - if (text == '{') { - var selection = editor.getSelectionRange(); - var selected = session.doc.getTextRange(selection); - if (selected !== "" && selected !== "{" && editor.getWrapBehavioursEnabled()) { - return { - text: '{' + selected + '}', - selection: false - }; - } else if (CstyleBehaviour.isSaneInsertion(editor, session)) { - if (/[\]\}\)]/.test(line[cursor.column]) || editor.inMultiSelectMode) { - CstyleBehaviour.recordAutoInsert(editor, session, "}"); - return { - text: '{}', - selection: [1, 1] - }; - } else { - CstyleBehaviour.recordMaybeInsert(editor, session, "{"); - return { - text: '{', - selection: [1, 1] - }; - } - } - } else if (text == '}') { - var rightChar = line.substring(cursor.column, cursor.column + 1); - if (rightChar == '}') { - var matching = session.$findOpeningBracket('}', {column: cursor.column + 1, row: cursor.row}); - if (matching !== null && CstyleBehaviour.isAutoInsertedClosing(cursor, line, text)) { - CstyleBehaviour.popAutoInsertedClosing(); - return { - text: '', - selection: [1, 1] - }; - } - } - } else if (text == "\n" || text == "\r\n") { - var closing = ""; - if (CstyleBehaviour.isMaybeInsertedClosing(cursor, line)) { - closing = lang.stringRepeat("}", maybeInsertedBrackets); - CstyleBehaviour.clearMaybeInsertedClosing(); - } - var rightChar = line.substring(cursor.column, cursor.column + 1); - if (rightChar === '}') { - var openBracePos = session.findMatchingBracket({row: cursor.row, column: cursor.column+1}, '}'); - if (!openBracePos) - return null; - var next_indent = this.$getIndent(session.getLine(openBracePos.row)); - } else if (closing) { - var next_indent = this.$getIndent(line); - } else { - return; - } - var indent = next_indent + session.getTabString(); - - return { - text: '\n' + indent + '\n' + next_indent + closing, - selection: [1, indent.length, 1, indent.length] - }; - } else { - CstyleBehaviour.clearMaybeInsertedClosing(); - } - }); - - this.add("braces", "deletion", function (state, action, editor, session, range) { - var selected = session.doc.getTextRange(range); - if (!range.isMultiLine() && selected == '{') { - var line = session.doc.getLine(range.start.row); - var rightChar = line.substring(range.end.column, range.end.column + 1); - if (rightChar == '}') { - range.end.column++; - return range; - } else { - maybeInsertedBrackets--; - } - } - }); - - this.add("parens", "insertion", function (state, action, editor, session, text) { - if (text == '(') { - var selection = editor.getSelectionRange(); - var selected = session.doc.getTextRange(selection); - if (selected !== "" && editor.getWrapBehavioursEnabled()) { - return { - text: '(' + selected + ')', - selection: false - }; - } else if (CstyleBehaviour.isSaneInsertion(editor, session)) { - CstyleBehaviour.recordAutoInsert(editor, session, ")"); - return { - text: '()', - selection: [1, 1] - }; - } - } else if (text == ')') { - var cursor = editor.getCursorPosition(); - var line = session.doc.getLine(cursor.row); - var rightChar = line.substring(cursor.column, cursor.column + 1); - if (rightChar == ')') { - var matching = session.$findOpeningBracket(')', {column: cursor.column + 1, row: cursor.row}); - if (matching !== null && CstyleBehaviour.isAutoInsertedClosing(cursor, line, text)) { - CstyleBehaviour.popAutoInsertedClosing(); - return { - text: '', - selection: [1, 1] - }; - } - } - } - }); - - this.add("parens", "deletion", function (state, action, editor, session, range) { - var selected = session.doc.getTextRange(range); - if (!range.isMultiLine() && selected == '(') { - var line = session.doc.getLine(range.start.row); - var rightChar = line.substring(range.start.column + 1, range.start.column + 2); - if (rightChar == ')') { - range.end.column++; - return range; - } - } - }); - - this.add("brackets", "insertion", function (state, action, editor, session, text) { - if (text == '[') { - var selection = editor.getSelectionRange(); - var selected = session.doc.getTextRange(selection); - if (selected !== "" && editor.getWrapBehavioursEnabled()) { - return { - text: '[' + selected + ']', - selection: false - }; - } else if (CstyleBehaviour.isSaneInsertion(editor, session)) { - CstyleBehaviour.recordAutoInsert(editor, session, "]"); - return { - text: '[]', - selection: [1, 1] - }; - } - } else if (text == ']') { - var cursor = editor.getCursorPosition(); - var line = session.doc.getLine(cursor.row); - var rightChar = line.substring(cursor.column, cursor.column + 1); - if (rightChar == ']') { - var matching = session.$findOpeningBracket(']', {column: cursor.column + 1, row: cursor.row}); - if (matching !== null && CstyleBehaviour.isAutoInsertedClosing(cursor, line, text)) { - CstyleBehaviour.popAutoInsertedClosing(); - return { - text: '', - selection: [1, 1] - }; - } - } - } - }); - - this.add("brackets", "deletion", function (state, action, editor, session, range) { - var selected = session.doc.getTextRange(range); - if (!range.isMultiLine() && selected == '[') { - var line = session.doc.getLine(range.start.row); - var rightChar = line.substring(range.start.column + 1, range.start.column + 2); - if (rightChar == ']') { - range.end.column++; - return range; - } - } - }); - - this.add("string_dquotes", "insertion", function (state, action, editor, session, text) { - if (text == '"' || text == "'") { - var quote = text; - var selection = editor.getSelectionRange(); - var selected = session.doc.getTextRange(selection); - if (selected !== "" && selected !== "'" && selected != '"' && editor.getWrapBehavioursEnabled()) { - return { - text: quote + selected + quote, - selection: false - }; - } else { - var cursor = editor.getCursorPosition(); - var line = session.doc.getLine(cursor.row); - var leftChar = line.substring(cursor.column-1, cursor.column); - if (leftChar == '\\') { - return null; - } - var tokens = session.getTokens(selection.start.row); - var col = 0, token; - var quotepos = -1; // Track whether we're inside an open quote. - - for (var x = 0; x < tokens.length; x++) { - token = tokens[x]; - if (token.type == "string") { - quotepos = -1; - } else if (quotepos < 0) { - quotepos = token.value.indexOf(quote); - } - if ((token.value.length + col) > selection.start.column) { - break; - } - col += tokens[x].value.length; - } - if (!token || (quotepos < 0 && token.type !== "comment" && (token.type !== "string" || ((selection.start.column !== token.value.length+col-1) && token.value.lastIndexOf(quote) === token.value.length-1)))) { - if (!CstyleBehaviour.isSaneInsertion(editor, session)) - return; - return { - text: quote + quote, - selection: [1,1] - }; - } else if (token && token.type === "string") { - var rightChar = line.substring(cursor.column, cursor.column + 1); - if (rightChar == quote) { - return { - text: '', - selection: [1, 1] - }; - } - } - } - } - }); - - this.add("string_dquotes", "deletion", function (state, action, editor, session, range) { - var selected = session.doc.getTextRange(range); - if (!range.isMultiLine() && (selected == '"' || selected == "'")) { - var line = session.doc.getLine(range.start.row); - var rightChar = line.substring(range.start.column + 1, range.start.column + 2); - if (rightChar == selected) { - range.end.column++; - return range; - } - } - }); - -}; - -oop.inherits(CstyleBehaviour, Behaviour); - -exports.CstyleBehaviour = CstyleBehaviour; -}); - -ace.define('ace/mode/matching_brace_outdent', ['require', 'exports', 'module' , 'ace/range'], function(require, exports, module) { - - -var Range = require("../range").Range; - -var MatchingBraceOutdent = function() {}; - -(function() { - - this.checkOutdent = function(line, input) { - if (! /^\s+$/.test(line)) - return false; - - return /^\s*\}/.test(input); - }; - - this.autoOutdent = function(doc, row) { - var line = doc.getLine(row); - var match = line.match(/^(\s*\})/); - - if (!match) return 0; - - var column = match[1].length; - var openBracePos = doc.findMatchingBracket({row: row, column: column}); - - if (!openBracePos || openBracePos.row == row) return 0; - - var indent = this.$getIndent(doc.getLine(openBracePos.row)); - doc.replace(new Range(row, 0, row, column-1), indent); - }; - - this.$getIndent = function(line) { - return line.match(/^\s*/)[0]; - }; - -}).call(MatchingBraceOutdent.prototype); - -exports.MatchingBraceOutdent = MatchingBraceOutdent; -}); diff --git a/IDE/jsrealb-ide/ace-src-noconflict/mode-lsl.js b/IDE/jsrealb-ide/ace-src-noconflict/mode-lsl.js deleted file mode 100644 index fa2a9f55..00000000 --- a/IDE/jsrealb-ide/ace-src-noconflict/mode-lsl.js +++ /dev/null @@ -1,890 +0,0 @@ -/* ***** BEGIN LICENSE BLOCK ***** - * Distributed under the BSD license: - * - * Copyright (c) 2013, Ajax.org B.V. - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are met: - * * Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * * Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * * Neither the name of Ajax.org B.V. nor the - * names of its contributors may be used to endorse or promote products - * derived from this software without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND - * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED - * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE - * DISCLAIMED. IN NO EVENT SHALL AJAX.ORG B.V. BE LIABLE FOR ANY - * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES - * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; - * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND - * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - * - * ***** END LICENSE BLOCK ***** */ - -ace.define('ace/mode/lsl', ['require', 'exports', 'module' , 'ace/tokenizer', 'ace/mode/lsl_highlight_rules', 'ace/mode/matching_brace_outdent', 'ace/range', 'ace/mode/text', 'ace/mode/behaviour/cstyle', 'ace/mode/folding/cstyle', 'ace/lib/oop'], function(require, exports, module) { - - -var Tokenizer = require("../tokenizer").Tokenizer; -var Rules = require("./lsl_highlight_rules").LSLHighlightRules; -var Outdent = require("./matching_brace_outdent").MatchingBraceOutdent; -var Range = require("../range").Range; -var TextMode = require("./text").Mode; -var CstyleBehaviour = require("./behaviour/cstyle").CstyleBehaviour; -var CStyleFoldMode = require("./folding/cstyle").FoldMode; -var oop = require("../lib/oop"); - -var Mode = function() { - this.HighlightRules = Rules; - this.$outdent = new Outdent(); - this.$behaviour = new CstyleBehaviour(); - this.foldingRules = new CStyleFoldMode(); -}; -oop.inherits(Mode, TextMode); - -(function() { - - this.lineCommentStart = ["//"]; - - this.blockComment = { - start: "/*", - end: "*/" - }; - - this.getNextLineIndent = function(state, line, tab) { - var indent = this.$getIndent(line); - - var tokenizedLine = this.getTokenizer().getLineTokens(line, state); - var tokens = tokenizedLine.tokens; - var endState = tokenizedLine.state; - - if (tokens.length && tokens[tokens.length-1].type === "comment.block.lsl") { - return indent; - } - - if (state === "start") { - var match = line.match(/^.*[\{\(\[]\s*$/); - if (match) { - indent += tab; - } - } - - return indent; - }; - - this.checkOutdent = function(state, line, input) { - return this.$outdent.checkOutdent(line, input); - }; - - this.autoOutdent = function(state, doc, row) { - this.$outdent.autoOutdent(doc, row); - }; - - this.$id = "ace/mode/lsl"; -}).call(Mode.prototype); - -exports.Mode = Mode; -}); - -ace.define('ace/mode/lsl_highlight_rules', ['require', 'exports', 'module' , 'ace/lib/oop', 'ace/mode/text_highlight_rules'], function(require, exports, module) { - - -var oop = require("../lib/oop"); -var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; - -oop.inherits(LSLHighlightRules, TextHighlightRules); - -function LSLHighlightRules() { - var keywordMapper = this.createKeywordMapper({ - "constant.language.float.lsl" : "DEG_TO_RAD|PI|PI_BY_TWO|RAD_TO_DEG|SQRT2|TWO_PI", - "constant.language.integer.lsl": "ACTIVE|AGENT|AGENT_ALWAYS_RUN|AGENT_ATTACHMENTS|" + - "AGENT_AUTOPILOT|AGENT_AWAY|AGENT_BUSY|AGENT_BY_LEGACY_NAME|AGENT_BY_USERNAME|" + - "AGENT_CROUCHING|AGENT_FLYING|AGENT_IN_AIR|AGENT_LIST_PARCEL|AGENT_LIST_PARCEL_OWNER|" + - "AGENT_LIST_REGION|AGENT_MOUSELOOK|AGENT_ON_OBJECT|AGENT_SCRIPTED|AGENT_SITTING|" + - "AGENT_TYPING|AGENT_WALKING|ALL_SIDES|ANIM_ON|ATTACH_AVATAR_CENTER|ATTACH_BACK|" + - "ATTACH_BELLY|ATTACH_CHEST|ATTACH_CHIN|ATTACH_HEAD|ATTACH_HUD_BOTTOM|" + - "ATTACH_HUD_BOTTOM_LEFT|ATTACH_HUD_BOTTOM_RIGHT|ATTACH_HUD_CENTER_1|ATTACH_HUD_CENTER_2|" + - "ATTACH_HUD_TOP_CENTER|ATTACH_HUD_TOP_LEFT|ATTACH_HUD_TOP_RIGHT|ATTACH_LEAR|" + - "ATTACH_LEFT_PEC|ATTACH_LEYE|ATTACH_LFOOT|ATTACH_LHAND|ATTACH_LHIP|ATTACH_LLARM|" + - "ATTACH_LLLEG|ATTACH_LSHOULDER|ATTACH_LUARM|ATTACH_LULEG|ATTACH_MOUTH|" + - "ATTACH_NECK|ATTACH_NOSE|ATTACH_PELVIS|ATTACH_REAR|ATTACH_REYE|ATTACH_RFOOT|" + - "ATTACH_RHAND|ATTACH_RHIP|ATTACH_RIGHT_PEC|ATTACH_RLARM|ATTACH_RLLEG|" + - "ATTACH_RSHOULDER|ATTACH_RUARM|ATTACH_RULEG|AVOID_CHARACTERS|AVOID_DYNAMIC_OBSTACLES|" + - "AVOID_NONE|CAMERA_ACTIVE|CAMERA_BEHINDNESS_ANGLE|CAMERA_BEHINDNESS_LAG|" + - "CAMERA_DISTANCE|CAMERA_FOCUS|CAMERA_FOCUS_LAG|CAMERA_FOCUS_LOCKED|CAMERA_FOCUS_OFFSET|" + - "CAMERA_FOCUS_THRESHOLD|CAMERA_PITCH|CAMERA_POSITION|CAMERA_POSITION_LAG|" + - "CAMERA_POSITION_LOCKED|CAMERA_POSITION_THRESHOLD|CHANGED_ALLOWED_DROP|" + - "CHANGED_COLOR|CHANGED_INVENTORY|CHANGED_LINK|CHANGED_MEDIA|CHANGED_OWNER|" + - "CHANGED_REGION|CHANGED_REGION_START|CHANGED_SCALE|CHANGED_SHAPE|CHANGED_TELEPORT|" + - "CHANGED_TEXTURE|CHARACTER_ACCOUNT_FOR_SKIPPED_FRAMES|CHARACTER_AVOIDANCE_MODE|" + - "CHARACTER_CMD_JUMP|CHARACTER_CMD_SMOOTH_STOP|CHARACTER_CMD_STOP|CHARACTER_DESIRED_SPEED|" + - "CHARACTER_DESIRED_TURN_SPEED|CHARACTER_LENGTH|CHARACTER_MAX_ACCEL|CHARACTER_MAX_DECEL|" + - "CHARACTER_MAX_SPEED|CHARACTER_MAX_TURN_RADIUS|CHARACTER_ORIENTATION|" + - "CHARACTER_RADIUS|CHARACTER_STAY_WITHIN_PARCEL|CHARACTER_TYPE|CHARACTER_TYPE_A|" + - "CHARACTER_TYPE_B|CHARACTER_TYPE_C|CHARACTER_TYPE_D|CHARACTER_TYPE_NONE|" + - "CLICK_ACTION_BUY|CLICK_ACTION_NONE|CLICK_ACTION_OPEN|CLICK_ACTION_OPEN_MEDIA|" + - "CLICK_ACTION_PAY|CLICK_ACTION_PLAY|CLICK_ACTION_SIT|CLICK_ACTION_TOUCH|" + - "CONTENT_TYPE_ATOM|CONTENT_TYPE_FORM|CONTENT_TYPE_HTML|CONTENT_TYPE_JSON|" + - "CONTENT_TYPE_LLSD|CONTENT_TYPE_RSS|CONTENT_TYPE_TEXT|CONTENT_TYPE_XHTML|" + - "CONTENT_TYPE_XML|CONTROL_BACK|CONTROL_DOWN|CONTROL_FWD|CONTROL_LBUTTON|" + - "CONTROL_LEFT|CONTROL_ML_LBUTTON|CONTROL_RIGHT|CONTROL_ROT_LEFT|CONTROL_ROT_RIGHT|" + - "CONTROL_UP|DATA_BORN|DATA_NAME|DATA_ONLINE|DATA_PAYINFO|DATA_SIM_POS|" + - "DATA_SIM_RATING|DATA_SIM_STATUS|DEBUG_CHANNEL|DENSITY|ERR_GENERIC|ERR_MALFORMED_PARAMS|" + - "ERR_PARCEL_PERMISSIONS|ERR_RUNTIME_PERMISSIONS|ERR_THROTTLED|ESTATE_ACCESS_ALLOWED_AGENT_ADD|" + - "ESTATE_ACCESS_ALLOWED_AGENT_REMOVE|ESTATE_ACCESS_ALLOWED_GROUP_ADD|ESTATE_ACCESS_ALLOWED_GROUP_REMOVE|" + - "ESTATE_ACCESS_BANNED_AGENT_ADD|ESTATE_ACCESS_BANNED_AGENT_REMOVE|FORCE_DIRECT_PATH|" + - "FRICTION|GCNP_RADIUS|GCNP_STATIC|GRAVITY_MULTIPLIER|HORIZONTAL|HTTP_BODY_MAXLENGTH|" + - "HTTP_BODY_TRUNCATED|HTTP_CUSTOM_HEADER|HTTP_METHOD|HTTP_MIMETYPE|HTTP_PRAGMA_NO_CACHE|" + - "HTTP_VERBOSE_THROTTLE|HTTP_VERIFY_CERT|INVENTORY_ALL|INVENTORY_ANIMATION|" + - "INVENTORY_BODYPART|INVENTORY_CLOTHING|INVENTORY_GESTURE|INVENTORY_LANDMARK|" + - "INVENTORY_NONE|INVENTORY_NOTECARD|INVENTORY_OBJECT|INVENTORY_SCRIPT|" + - "INVENTORY_SOUND|INVENTORY_TEXTURE|JSON_APPEND|KFM_CMD_PAUSE|KFM_CMD_PLAY|" + - "KFM_CMD_SET_MODE|KFM_CMD_STOP|KFM_COMMAND|KFM_DATA|KFM_FORWARD|KFM_LOOP|" + - "KFM_MODE|KFM_PING_PONG|KFM_REVERSE|KFM_ROTATION|KFM_TRANSLATION|LAND_LEVEL|" + - "LAND_LOWER|LAND_NOISE|LAND_RAISE|LAND_REVERT|LAND_SMOOTH|LINK_ALL_CHILDREN|" + - "LINK_ALL_OTHERS|LINK_ROOT|LINK_SET|LINK_THIS|LIST_STAT_GEOMETRIC_MEAN|" + - "LIST_STAT_MAX|LIST_STAT_MEAN|LIST_STAT_MEDIAN|LIST_STAT_MIN|LIST_STAT_NUM_COUNT|" + - "LIST_STAT_RANGE|LIST_STAT_STD_DEV|LIST_STAT_SUM|LIST_STAT_SUM_SQUARES|" + - "LOOP|MASK_BASE|MASK_EVERYONE|MASK_GROUP|MASK_NEXT|MASK_OWNER|OBJECT_ATTACHED_POINT|" + - "OBJECT_CHARACTER_TIME|OBJECT_CREATOR|OBJECT_DESC|OBJECT_GROUP|OBJECT_NAME|" + - "OBJECT_OWNER|OBJECT_PATHFINDING_TYPE|OBJECT_PHANTOM|OBJECT_PHYSICS|OBJECT_PHYSICS_COST|" + - "OBJECT_POS|OBJECT_PRIM_EQUIVALENCE|OBJECT_RETURN_PARCEL|OBJECT_RETURN_PARCEL_OWNER|" + - "OBJECT_RETURN_REGION|OBJECT_ROOT|OBJECT_ROT|OBJECT_RUNNING_SCRIPT_COUNT|" + - "OBJECT_SCRIPT_MEMORY|OBJECT_SCRIPT_TIME|OBJECT_SERVER_COST|OBJECT_STREAMING_COST|" + - "OBJECT_TEMP_ON_REZ|OBJECT_TOTAL_SCRIPT_COUNT|OBJECT_UNKNOWN_DETAIL|OBJECT_VELOCITY|" + - "OPT_AVATAR|OPT_CHARACTER|OPT_EXCLUSION_VOLUME|OPT_LEGACY_LINKSET|OPT_MATERIAL_VOLUME|" + - "OPT_OTHER|OPT_STATIC_OBSTACLE|OPT_WALKABLE|PARCEL_COUNT_GROUP|PARCEL_COUNT_OTHER|" + - "PARCEL_COUNT_OWNER|PARCEL_COUNT_SELECTED|PARCEL_COUNT_TEMP|PARCEL_COUNT_TOTAL|" + - "PARCEL_DETAILS_AREA|PARCEL_DETAILS_DESC|PARCEL_DETAILS_GROUP|PARCEL_DETAILS_ID|" + - "PARCEL_DETAILS_NAME|PARCEL_DETAILS_OWNER|PARCEL_DETAILS_SEE_AVATARS|" + - "PARCEL_FLAG_ALLOW_ALL_OBJECT_ENTRY|PARCEL_FLAG_ALLOW_CREATE_GROUP_OBJECTS|" + - "PARCEL_FLAG_ALLOW_CREATE_OBJECTS|PARCEL_FLAG_ALLOW_DAMAGE|PARCEL_FLAG_ALLOW_FLY|" + - "PARCEL_FLAG_ALLOW_GROUP_OBJECT_ENTRY|PARCEL_FLAG_ALLOW_GROUP_SCRIPTS|" + - "PARCEL_FLAG_ALLOW_LANDMARK|PARCEL_FLAG_ALLOW_SCRIPTS|PARCEL_FLAG_ALLOW_TERRAFORM|" + - "PARCEL_FLAG_LOCAL_SOUND_ONLY|PARCEL_FLAG_RESTRICT_PUSHOBJECT|PARCEL_FLAG_USE_ACCESS_GROUP|" + - "PARCEL_FLAG_USE_ACCESS_LIST|PARCEL_FLAG_USE_BAN_LIST|PARCEL_FLAG_USE_LAND_PASS_LIST|" + - "PARCEL_MEDIA_COMMAND_AGENT|PARCEL_MEDIA_COMMAND_AUTO_ALIGN|PARCEL_MEDIA_COMMAND_DESC|" + - "PARCEL_MEDIA_COMMAND_LOOP|PARCEL_MEDIA_COMMAND_LOOP_SET|PARCEL_MEDIA_COMMAND_PAUSE|" + - "PARCEL_MEDIA_COMMAND_PLAY|PARCEL_MEDIA_COMMAND_SIZE|PARCEL_MEDIA_COMMAND_STOP|" + - "PARCEL_MEDIA_COMMAND_TEXTURE|PARCEL_MEDIA_COMMAND_TIME|PARCEL_MEDIA_COMMAND_TYPE|" + - "PARCEL_MEDIA_COMMAND_UNLOAD|PARCEL_MEDIA_COMMAND_URL|PASSIVE|PATROL_PAUSE_AT_WAYPOINTS|" + - "PAY_DEFAULT|PAY_HIDE|PAYMENT_INFO_ON_FILE|PAYMENT_INFO_USED|PERM_ALL|" + - "PERM_COPY|PERM_MODIFY|PERM_MOVE|PERM_TRANSFER|PERMISSION_ATTACH|PERMISSION_CHANGE_LINKS|" + - "PERMISSION_CONTROL_CAMERA|PERMISSION_DEBIT|PERMISSION_OVERRIDE_ANIMATIONS|" + - "PERMISSION_RETURN_OBJECTS|PERMISSION_SILENT_ESTATE_MANAGEMENT|PERMISSION_TAKE_CONTROLS|" + - "PERMISSION_TELEPORT|PERMISSION_TRACK_CAMERA|PERMISSION_TRIGGER_ANIMATION|" + - "PING_PONG|PRIM_BUMP_BARK|PRIM_BUMP_BLOBS|PRIM_BUMP_BRICKS|PRIM_BUMP_BRIGHT|" + - "PRIM_BUMP_CHECKER|PRIM_BUMP_CONCRETE|PRIM_BUMP_DARK|PRIM_BUMP_DISKS|" + - "PRIM_BUMP_GRAVEL|PRIM_BUMP_LARGETILE|PRIM_BUMP_NONE|PRIM_BUMP_SHINY|" + - "PRIM_BUMP_SIDING|PRIM_BUMP_STONE|PRIM_BUMP_STUCCO|PRIM_BUMP_SUCTION|" + - "PRIM_BUMP_TILE|PRIM_BUMP_WEAVE|PRIM_BUMP_WOOD|PRIM_COLOR|PRIM_DESC|PRIM_FLEXIBLE|" + - "PRIM_FULLBRIGHT|PRIM_GLOW|PRIM_HOLE_CIRCLE|PRIM_HOLE_DEFAULT|PRIM_HOLE_SQUARE|" + - "PRIM_HOLE_TRIANGLE|PRIM_LINK_TARGET|PRIM_MATERIAL|PRIM_MATERIAL_FLESH|" + - "PRIM_MATERIAL_GLASS|PRIM_MATERIAL_METAL|PRIM_MATERIAL_PLASTIC|PRIM_MATERIAL_RUBBER|" + - "PRIM_MATERIAL_STONE|PRIM_MATERIAL_WOOD|PRIM_MEDIA_ALT_IMAGE_ENABLE|PRIM_MEDIA_AUTO_LOOP|" + - "PRIM_MEDIA_AUTO_PLAY|PRIM_MEDIA_AUTO_SCALE|PRIM_MEDIA_AUTO_ZOOM|PRIM_MEDIA_CONTROLS|" + - "PRIM_MEDIA_CONTROLS_MINI|PRIM_MEDIA_CONTROLS_STANDARD|PRIM_MEDIA_CURRENT_URL|" + - "PRIM_MEDIA_FIRST_CLICK_INTERACT|PRIM_MEDIA_HEIGHT_PIXELS|PRIM_MEDIA_HOME_URL|" + - "PRIM_MEDIA_MAX_HEIGHT_PIXELS|PRIM_MEDIA_MAX_URL_LENGTH|PRIM_MEDIA_MAX_WHITELIST_COUNT|" + - "PRIM_MEDIA_MAX_WHITELIST_SIZE|PRIM_MEDIA_MAX_WIDTH_PIXELS|PRIM_MEDIA_PARAM_MAX|" + - "PRIM_MEDIA_PERM_ANYONE|PRIM_MEDIA_PERM_GROUP|PRIM_MEDIA_PERM_NONE|PRIM_MEDIA_PERM_OWNER|" + - "PRIM_MEDIA_PERMS_CONTROL|PRIM_MEDIA_PERMS_INTERACT|PRIM_MEDIA_WHITELIST|" + - "PRIM_MEDIA_WHITELIST_ENABLE|PRIM_MEDIA_WIDTH_PIXELS|PRIM_NAME|PRIM_OMEGA|" + - "PRIM_PHANTOM|PRIM_PHYSICS|PRIM_PHYSICS_SHAPE_CONVEX|PRIM_PHYSICS_SHAPE_NONE|" + - "PRIM_PHYSICS_SHAPE_PRIM|PRIM_PHYSICS_SHAPE_TYPE|PRIM_POINT_LIGHT|PRIM_POS_LOCAL|" + - "PRIM_POSITION|PRIM_ROT_LOCAL|PRIM_ROTATION|PRIM_SCULPT_FLAG_INVERT|PRIM_SCULPT_FLAG_MIRROR|" + - "PRIM_SCULPT_TYPE_CYLINDER|PRIM_SCULPT_TYPE_MASK|PRIM_SCULPT_TYPE_PLANE|" + - "PRIM_SCULPT_TYPE_SPHERE|PRIM_SCULPT_TYPE_TORUS|PRIM_SHINY_HIGH|PRIM_SHINY_LOW|" + - "PRIM_SHINY_MEDIUM|PRIM_SHINY_NONE|PRIM_SIZE|PRIM_SLICE|PRIM_TEMP_ON_REZ|" + - "PRIM_TEXGEN|PRIM_TEXGEN_DEFAULT|PRIM_TEXGEN_PLANAR|PRIM_TEXT|PRIM_TEXTURE|" + - "PRIM_TYPE|PRIM_TYPE_BOX|PRIM_TYPE_CYLINDER|PRIM_TYPE_PRISM|PRIM_TYPE_RING|" + - "PRIM_TYPE_SCULPT|PRIM_TYPE_SPHERE|PRIM_TYPE_TORUS|PRIM_TYPE_TUBE|PROFILE_NONE|" + - "PROFILE_SCRIPT_MEMORY|PSYS_PART_BOUNCE_MASK|PSYS_PART_EMISSIVE_MASK|" + - "PSYS_PART_END_ALPHA|PSYS_PART_END_COLOR|PSYS_PART_END_SCALE|PSYS_PART_FLAGS|" + - "PSYS_PART_FOLLOW_SRC_MASK|PSYS_PART_FOLLOW_VELOCITY_MASK|PSYS_PART_INTERP_COLOR_MASK|" + - "PSYS_PART_INTERP_SCALE_MASK|PSYS_PART_MAX_AGE|PSYS_PART_START_ALPHA|" + - "PSYS_PART_START_COLOR|PSYS_PART_START_SCALE|PSYS_PART_TARGET_LINEAR_MASK|" + - "PSYS_PART_TARGET_POS_MASK|PSYS_PART_WIND_MASK|PSYS_SRC_ACCEL|PSYS_SRC_ANGLE_BEGIN|" + - "PSYS_SRC_ANGLE_END|PSYS_SRC_BURST_PART_COUNT|PSYS_SRC_BURST_RADIUS|PSYS_SRC_BURST_RATE|" + - "PSYS_SRC_BURST_SPEED_MAX|PSYS_SRC_BURST_SPEED_MIN|PSYS_SRC_MAX_AGE|PSYS_SRC_OMEGA|" + - "PSYS_SRC_PATTERN|PSYS_SRC_PATTERN_ANGLE|PSYS_SRC_PATTERN_ANGLE_CONE|" + - "PSYS_SRC_PATTERN_ANGLE_CONE_EMPTY|PSYS_SRC_PATTERN_DROP|PSYS_SRC_PATTERN_EXPLODE|" + - "PSYS_SRC_TARGET_KEY|PSYS_SRC_TEXTURE|PU_EVADE_HIDDEN|PU_EVADE_SPOTTED|" + - "PU_FAILURE_DYNAMIC_PATHFINDING_DISABLED|PU_FAILURE_INVALID_GOAL|PU_FAILURE_INVALID_START|" + - "PU_FAILURE_NO_NAVMESH|PU_FAILURE_NO_VALID_DESTINATION|PU_FAILURE_OTHER|" + - "PU_FAILURE_PARCEL_UNREACHABLE|PU_FAILURE_TARGET_GONE|PU_FAILURE_UNREACHABLE|" + - "PU_GOAL_REACHED|PU_SLOWDOWN_DISTANCE_REACHED|PUBLIC_CHANNEL|PURSUIT_FUZZ_FACTOR|" + - "PURSUIT_GOAL_TOLERANCE|PURSUIT_INTERCEPT|PURSUIT_OFFSET|RC_DATA_FLAGS|" + - "RC_DETECT_PHANTOM|RC_GET_LINK_NUM|RC_GET_NORMAL|RC_GET_ROOT_KEY|RC_MAX_HITS|" + - "RC_REJECT_AGENTS|RC_REJECT_LAND|RC_REJECT_NONPHYSICAL|RC_REJECT_PHYSICAL|" + - "RC_REJECT_TYPES|RCERR_CAST_TIME_EXCEEDED|RCERR_SIM_PERF_LOW|RCERR_UNKNOWN|" + - "REGION_FLAG_ALLOW_DAMAGE|REGION_FLAG_ALLOW_DIRECT_TELEPORT|REGION_FLAG_BLOCK_FLY|" + - "REGION_FLAG_BLOCK_TERRAFORM|REGION_FLAG_DISABLE_COLLISIONS|REGION_FLAG_DISABLE_PHYSICS|" + - "REGION_FLAG_FIXED_SUN|REGION_FLAG_RESTRICT_PUSHOBJECT|REGION_FLAG_SANDBOX|" + - "REMOTE_DATA_CHANNEL|REMOTE_DATA_REPLY|REMOTE_DATA_REQUEST|REQUIRE_LINE_OF_SIGHT|" + - "RESTITUTION|REVERSE|ROTATE|SCALE|SCRIPTED|SIM_STAT_PCT_CHARS_STEPPED|" + - "SMOOTH|STATUS_BLOCK_GRAB|STATUS_BLOCK_GRAB_OBJECT|STATUS_BOUNDS_ERROR|" + - "STATUS_CAST_SHADOWS|STATUS_DIE_AT_EDGE|STATUS_INTERNAL_ERROR|STATUS_MALFORMED_PARAMS|" + - "STATUS_NOT_FOUND|STATUS_NOT_SUPPORTED|STATUS_OK|STATUS_PHANTOM|STATUS_PHYSICS|" + - "STATUS_RETURN_AT_EDGE|STATUS_ROTATE_X|STATUS_ROTATE_Y|STATUS_ROTATE_Z|" + - "STATUS_SANDBOX|STATUS_TYPE_MISMATCH|STATUS_WHITELIST_FAILED|STRING_TRIM|" + - "STRING_TRIM_HEAD|STRING_TRIM_TAIL|TOUCH_INVALID_FACE|TRAVERSAL_TYPE|" + - "TRAVERSAL_TYPE_FAST|TRAVERSAL_TYPE_NONE|TRAVERSAL_TYPE_SLOW|TYPE_FLOAT|" + - "TYPE_INTEGER|TYPE_INVALID|TYPE_KEY|TYPE_ROTATION|TYPE_STRING|TYPE_VECTOR|" + - "VEHICLE_ANGULAR_DEFLECTION_EFFICIENCY|VEHICLE_ANGULAR_DEFLECTION_TIMESCALE|" + - "VEHICLE_ANGULAR_FRICTION_TIMESCALE|VEHICLE_ANGULAR_MOTOR_DECAY_TIMESCALE|" + - "VEHICLE_ANGULAR_MOTOR_DIRECTION|VEHICLE_ANGULAR_MOTOR_TIMESCALE|VEHICLE_BANKING_EFFICIENCY|" + - "VEHICLE_BANKING_MIX|VEHICLE_BANKING_TIMESCALE|VEHICLE_BUOYANCY|VEHICLE_FLAG_CAMERA_DECOUPLED|" + - "VEHICLE_FLAG_HOVER_GLOBAL_HEIGHT|VEHICLE_FLAG_HOVER_TERRAIN_ONLY|VEHICLE_FLAG_HOVER_UP_ONLY|" + - "VEHICLE_FLAG_HOVER_WATER_ONLY|VEHICLE_FLAG_LIMIT_MOTOR_UP|VEHICLE_FLAG_LIMIT_ROLL_ONLY|" + - "VEHICLE_FLAG_MOUSELOOK_BANK|VEHICLE_FLAG_MOUSELOOK_STEER|VEHICLE_FLAG_NO_DEFLECTION_UP|" + - "VEHICLE_HOVER_EFFICIENCY|VEHICLE_HOVER_HEIGHT|VEHICLE_HOVER_TIMESCALE|" + - "VEHICLE_LINEAR_DEFLECTION_EFFICIENCY|VEHICLE_LINEAR_DEFLECTION_TIMESCALE|" + - "VEHICLE_LINEAR_FRICTION_TIMESCALE|VEHICLE_LINEAR_MOTOR_DECAY_TIMESCALE|" + - "VEHICLE_LINEAR_MOTOR_DIRECTION|VEHICLE_LINEAR_MOTOR_OFFSET|VEHICLE_LINEAR_MOTOR_TIMESCALE|" + - "VEHICLE_REFERENCE_FRAME|VEHICLE_TYPE_AIRPLANE|VEHICLE_TYPE_BALLOON|VEHICLE_TYPE_BOAT|" + - "VEHICLE_TYPE_CAR|VEHICLE_TYPE_NONE|VEHICLE_TYPE_SLED|VEHICLE_VERTICAL_ATTRACTION_EFFICIENCY|" + - "VEHICLE_VERTICAL_ATTRACTION_TIMESCALE|VERTICAL|WANDER_PAUSE_AT_WAYPOINTS", - "constant.language.integer.boolean.lsl" : "FALSE|TRUE", - "constant.language.quaternion.lsl" : "ZERO_ROTATION", - "constant.language.string.lsl" : "EOF|JSON_ARRAY|JSON_FALSE|JSON_INVALID|" + - "JSON_NULL|JSON_NUMBER|JSON_OBJECT|JSON_STRING|JSON_TRUE|NULL_KEY|" + - "TEXTURE_BLANK|TEXTURE_DEFAULT|TEXTURE_MEDIA|TEXTURE_PLYWOOD|" + - "TEXTURE_TRANSPARENT|URL_REQUEST_DENIED|URL_REQUEST_GRANTED", - "constant.language.vector.lsl" : "TOUCH_INVALID_TEXCOORD|TOUCH_INVALID_VECTOR|ZERO_VECTOR", - "invalid.broken.lsl": "LAND_LARGE_BRUSH|LAND_MEDIUM_BRUSH|LAND_SMALL_BRUSH", - "invalid.deprecated.lsl" : "ATTACH_LPEC|ATTACH_RPEC|CHARACTER_MAX_ANGULAR_ACCEL|" + - "CHARACTER_MAX_ANGULAR_SPEED|CHARACTER_TURN_SPEED_MULTIPLIER|DATA_RATING|" + - "PRIM_CAST_SHADOWS|PRIM_MATERIAL_LIGHT|PRIM_PHYSICS_MATERIAL|PRIM_TYPE_LEGACY|" + - "PSYS_SRC_INNERANGLE|PSYS_SRC_OUTERANGLE|VEHICLE_FLAG_NO_FLY_UP|llCloud|" + - "llGodLikeRezObject|llMakeExplosion|llMakeFire|llMakeFountain|llMakeSmoke|" + - "llRemoteDataSetRegion|llSetInventoryPermMask|llSetObjectPermMask|llSound|" + - "llSoundPreload|llXorBase64Strings|llXorBase64StringsCorrect", - "invalid.godmode.lsl": "llGodLikeRezObject|llSetInventoryPermMask|llSetObjectPermMask", - "invalid.illegal.lsl" : "print", - "invalid.unimplemented.lsl": "CHARACTER_MAX_ANGULAR_ACCEL|CHARACTER_MAX_ANGULAR_SPEED|" + - "CHARACTER_TURN_SPEED_MULTIPLIER|PERMISSION_CHANGE_JOINTS|PERMISSION_CHANGE_PERMISSIONS|" + - "PERMISSION_RELEASE_OWNERSHIP|PERMISSION_REMAP_CONTROLS|PRIM_PHYSICS_MATERIAL|PRIM_TYPE_LEGACY|" + - "PSYS_SRC_OBJ_REL_MASK|event|llCollisionSprite|llPointAt|llRefreshPrimURL|" + - "llReleaseCamera|llRemoteLoadScript|llSetPrimURL|llStopPointAt|llTakeCamera", - "keyword.control.lsl" : "do|else|for|if|jump|return|while", - "storage.type.lsl" : "float|integer|key|list|quaternion|rotation|string|vector", - "support.function.lsl": "llAbs|llAcos|llAddToLandBanList|llAddToLandPassList|" + - "llAdjustSoundVolume|llAllowInventoryDrop|llAngleBetween|llApplyImpulse|" + - "llApplyRotationalImpulse|llAsin|llAtan2|llAttachToAvatar|llAttachToAvatarTemp|" + - "llAvatarOnLinkSitTarget|llAvatarOnSitTarget|llAxes2Rot|llAxisAngle2Rot|" + - "llBase64ToInteger|llBase64ToString|llBreakAllLinks|llBreakLink|llCastRay|" + - "llCeil|llClearCameraParams|llClearLinkMedia|llClearPrimMedia|llCloseRemoteDataChannel|" + - "llCollisionFilter|llCollisionSound|llCos|llCreateCharacter|llCreateLink|" + - "llCSV2List|llDeleteCharacter|llDeleteSubList|llDeleteSubString|llDetachFromAvatar|" + - "llDetectedGrab|llDetectedGroup|llDetectedKey|llDetectedLinkNumber|llDetectedName|" + - "llDetectedOwner|llDetectedPos|llDetectedRot|llDetectedTouchBinormal|" + - "llDetectedTouchFace|llDetectedTouchNormal|llDetectedTouchPos|llDetectedTouchST|" + - "llDetectedTouchUV|llDetectedType|llDetectedVel|llDialog|llDie|llDumpList2String|" + - "llEdgeOfWorld|llEjectFromLand|llEmail|llEscapeURL|llEuler2Rot|llExecCharacterCmd|" + - "llEvade|llFabs|llFleeFrom|llFloor|llForceMouselook|llFrand|llGenerateKey|" + - "llGetAccel|llGetAgentInfo|llGetAgentLanguage|llGetAgentList|llGetAgentSize|" + - "llGetAlpha|llGetAndResetTime|llGetAnimation|llGetAnimationList|llGetAnimationOverride|" + - "llGetAttached|llGetBoundingBox|llGetCameraPos|llGetCameraRot|llGetCenterOfMass|" + - "llGetClosestNavPoint|llGetColor|llGetCreator|llGetDate|llGetDisplayName|" + - "llGetEnergy|llGetEnv|llGetForce|llGetFreeMemory|llGetFreeURLs|llGetGeometricCenter|" + - "llGetGMTclock|llGetHTTPHeader|llGetInventoryCreator|llGetInventoryKey|llGetInventoryName|" + - "llGetInventoryNumber|llGetInventoryPermMask|llGetInventoryType|llGetKey|" + - "llGetLandOwnerAt|llGetLinkKey|llGetLinkMedia|llGetLinkName|llGetLinkNumber|" + - "llGetLinkNumberOfSides|llGetLinkPrimitiveParams|llGetListEntryType|llGetListLength|" + - "llGetLocalPos|llGetLocalRot|llGetMass|llGetMassMKS|llGetMemoryLimit|" + - "llGetNextEmail|llGetNotecardLine|llGetNumberOfNotecardLines|llGetNumberOfPrims|" + - "llGetNumberOfSides|llGetObjectDesc|llGetObjectDetails|llGetObjectMass|" + - "llGetObjectName|llGetObjectPermMask|llGetObjectPrimCount|llGetOmega|" + - "llGetOwner|llGetOwnerKey|llGetParcelDetails|llGetParcelFlags|llGetParcelMaxPrims|" + - "llGetParcelMusicURL|llGetParcelPrimCount|llGetParcelPrimOwners|llGetPermissions|" + - "llGetPermissionsKey|llGetPhysicsMaterial|llGetPos|llGetPrimitiveParams|" + - "llGetPrimMediaParams|llGetRegionAgentCount|llGetRegionCorner|llGetRegionFlags|" + - "llGetRegionFPS|llGetRegionName|llGetRegionTimeDilation|llGetRootPosition|" + - "llGetRootRotation|llGetRot|llGetScale|llGetScriptName|llGetScriptState|" + - "llGetSimStats|llGetSimulatorHostname|llGetSPMaxMemory|llGetStartParameter|" + - "llGetStaticPath|llGetStatus|llGetSubString|llGetSunDirection|llGetTexture|" + - "llGetTextureOffset|llGetTextureRot|llGetTextureScale|llGetTime|llGetTimeOfDay|" + - "llGetTimestamp|llGetTorque|llGetUnixTime|llGetUsedMemory|llGetUsername|" + - "llGetVel|llGetWallclock|llGiveInventory|llGiveInventoryList|llGiveMoney|" + - "llGround|llGroundContour|llGroundNormal|llGroundRepel|llGroundSlope|" + - "llHTTPRequest|llHTTPResponse|llInsertString|llInstantMessage|llIntegerToBase64|" + - "llJson2List|llJsonGetValue|llJsonSetValue|llJsonValueType|llKey2Name|" + - "llLinkParticleSystem|llLinkSitTarget|llList2CSV|llList2Float|llList2Integer|" + - "llList2Json|llList2Key|llList2List|llList2ListStrided|llList2Rot|" + - "llList2String|llList2Vector|llListen|llListenControl|llListenRemove|" + - "llListFindList|llListInsertList|llListRandomize|llListReplaceList|llListSort|" + - "llListStatistics|llLoadURL|llLog|llLog10|llLookAt|llLoopSound|llLoopSoundMaster|" + - "llLoopSoundSlave|llManageEstateAccess|llMapDestination|llMD5String|llMessageLinked|" + - "llMinEventDelay|llModifyLand|llModPow|llMoveToTarget|llNavigateTo|llOffsetTexture|" + - "llOpenRemoteDataChannel|llOverMyLand|llOwnerSay|llParcelMediaCommandList|" + - "llParcelMediaQuery|llParseString2List|llParseStringKeepNulls|llParticleSystem|" + - "llPassCollisions|llPassTouches|llPatrolPoints|llPlaySound|llPlaySoundSlave|" + - "llPow|llPreloadSound|llPursue|llPushObject|llRegionSay|llRegionSayTo|" + - "llReleaseControls|llReleaseURL|llRemoteDataReply|llRemoteLoadScriptPin|" + - "llRemoveFromLandBanList|llRemoveFromLandPassList|llRemoveInventory|llRemoveVehicleFlags|" + - "llRequestAgentData|llRequestDisplayName|llRequestInventoryData|llRequestPermissions|" + - "llRequestSecureURL|llRequestSimulatorData|llRequestURL|llRequestUsername|" + - "llResetAnimationOverride|llResetLandBanList|llResetLandPassList|llResetOtherScript|" + - "llResetScript|llResetTime|llReturnObjectsByID|llReturnObjectsByOwner|" + - "llRezAtRoot|llRezObject|llRot2Angle|llRot2Axis|llRot2Euler|" + - "llRot2Fwd|llRot2Left|llRot2Up|llRotateTexture|llRotBetween|llRotLookAt|" + - "llRotTarget|llRotTargetRemove|llRound|llSameGroup|llSay|llScaleTexture|" + - "llScriptDanger|llScriptProfiler|llSendRemoteData|llSensor|llSensorRemove|" + - "llSensorRepeat|llSetAlpha|llSetAngularVelocity|llSetAnimationOverride|llSetBuoyancy|" + - "llSetCameraAtOffset|llSetCameraEyeOffset|llSetCameraParams|llSetClickAction|" + - "llSetColor|llSetContentType|llSetDamage|llSetForce|llSetForceAndTorque|llSetHoverHeight|" + - "llSetKeyframedMotion|llSetLinkAlpha|llSetLinkCamera|llSetLinkColor|llSetLinkMedia|" + - "llSetLinkPrimitiveParams|llSetLinkPrimitiveParamsFast|llSetLinkTexture|llSetLinkTextureAnim|" + - "llSetLocalRot|llSetMemoryLimit|llSetObjectDesc|llSetObjectName|llSetParcelMusicURL|" + - "llSetPayPrice|llSetPhysicsMaterial|llSetPos|llSetPrimitiveParams|llSetPrimMediaParams|" + - "llSetRegionPos|llSetRemoteScriptAccessPin|llSetRot|llSetScale|llSetScriptState|" + - "llSetSitText|llSetSoundQueueing|llSetSoundRadius|llSetStatus|llSetText|" + - "llSetTexture|llSetTextureAnim|llSetTimerEvent|llSetTorque|llSetTouchText|" + - "llSetVehicleFlags|llSetVehicleFloatParam|llSetVehicleRotationParam|llSetVehicleType|" + - "llSetVehicleVectorParam|llSetVelocity|llSHA1String|llShout|llSin|llSitTarget|" + - "llSleep|llSqrt|llStartAnimation|llStopAnimation|llStopHover|llStopLookAt|" + - "llStopMoveToTarget|llStopSound|llStringLength|llStringToBase64|llStringTrim|" + - "llSubStringIndex|llTakeControls|llTan|llTarget|llTargetOmega|llTargetRemove|" + - "llTeleportAgent|llTeleportAgentGlobalCoords|llTeleportAgentHome|llTextBox|" + - "llToLower|llToUpper|llTransferLindenDollars|llTriggerSound|llTriggerSoundLimited|" + - "llUnescapeURL|llUnSit|llUpdateCharacter|llVecDist|llVecMag|llVecNorm|" + - "llVolumeDetect|llWanderWithin|llWater|llWhisper|llWind|llXorBase64", - "support.function.event.lsl" : "at_rot_target|at_target|attach|changed|collision|" + - "collision_end|collision_start|control|dataserver|email|http_request|" + - "http_response|land_collision|land_collision_end|land_collision_start|" + - "link_message|listen|money|moving_end|moving_start|no_sensor|not_at_rot_target|" + - "not_at_target|object_rez|on_rez|path_update|remote_data|run_time_permissions|" + - "sensor|state_entry|state_exit|timer|touch|touch_end|touch_start|transaction_result" - }, "identifier"); - - this.$rules = { - "start" : [ - { - token : "comment.line.double-slash.lsl", - regex : "\\/\\/.*$" - }, { - token : "comment.block.lsl", - regex : "\\/\\*", - next : "comment" - }, { - token : "string.quoted.double.lsl", - start : '"', - end : '"', - next : [{ - token : "constant.language.escape.lsl", regex : /\\[tn"\\]/ - }] - }, { - token : "constant.numeric.lsl", - regex : "(0[xX][0-9a-fA-F]+|[+-]?[0-9]+(?:(?:\\.[0-9]*)?(?:[eE][+-]?[0-9]+)?)?)\\b" - }, { - token : "entity.name.state.lsl", - regex : "\\b((state)\\s+\\w+|default)\\b" - }, { - token : keywordMapper, - regex : "\\b[a-zA-Z_][a-zA-Z0-9_]*\\b" - }, { - token : "support.function.user-defined.lsl", - regex : /\b([a-zA-Z_]\w*)(?=\(.*?\))/ - }, { - token : "keyword.operator.lsl", - regex : "\\+\\+|\\-\\-|<<|>>|&&?|\\|\\|?|\\^|~|[!%<>=*+\\-\\/]=?" - }, { - token : "punctuation.operator.lsl", - regex : "\\,|\\;" - }, { - token : "paren.lparen.lsl", - regex : "[\\[\\(\\{]" - }, { - token : "paren.rparen.lsl", - regex : "[\\]\\)\\}]" - }, { - token : "text.lsl", - regex : "\\s+" - } - ], - "comment" : [ - { - token : "comment.block.lsl", - regex : ".*?\\*\\/", - next : "start" - }, { - token : "comment.block.lsl", - regex : ".+" - } - ] - }; - this.normalizeRules(); -} - -exports.LSLHighlightRules = LSLHighlightRules; -}); - -ace.define('ace/mode/matching_brace_outdent', ['require', 'exports', 'module' , 'ace/range'], function(require, exports, module) { - - -var Range = require("../range").Range; - -var MatchingBraceOutdent = function() {}; - -(function() { - - this.checkOutdent = function(line, input) { - if (! /^\s+$/.test(line)) - return false; - - return /^\s*\}/.test(input); - }; - - this.autoOutdent = function(doc, row) { - var line = doc.getLine(row); - var match = line.match(/^(\s*\})/); - - if (!match) return 0; - - var column = match[1].length; - var openBracePos = doc.findMatchingBracket({row: row, column: column}); - - if (!openBracePos || openBracePos.row == row) return 0; - - var indent = this.$getIndent(doc.getLine(openBracePos.row)); - doc.replace(new Range(row, 0, row, column-1), indent); - }; - - this.$getIndent = function(line) { - return line.match(/^\s*/)[0]; - }; - -}).call(MatchingBraceOutdent.prototype); - -exports.MatchingBraceOutdent = MatchingBraceOutdent; -}); - -ace.define('ace/mode/behaviour/cstyle', ['require', 'exports', 'module' , 'ace/lib/oop', 'ace/mode/behaviour', 'ace/token_iterator', 'ace/lib/lang'], function(require, exports, module) { - - -var oop = require("../../lib/oop"); -var Behaviour = require("../behaviour").Behaviour; -var TokenIterator = require("../../token_iterator").TokenIterator; -var lang = require("../../lib/lang"); - -var SAFE_INSERT_IN_TOKENS = - ["text", "paren.rparen", "punctuation.operator"]; -var SAFE_INSERT_BEFORE_TOKENS = - ["text", "paren.rparen", "punctuation.operator", "comment"]; - - -var autoInsertedBrackets = 0; -var autoInsertedRow = -1; -var autoInsertedLineEnd = ""; -var maybeInsertedBrackets = 0; -var maybeInsertedRow = -1; -var maybeInsertedLineStart = ""; -var maybeInsertedLineEnd = ""; - -var CstyleBehaviour = function () { - - CstyleBehaviour.isSaneInsertion = function(editor, session) { - var cursor = editor.getCursorPosition(); - var iterator = new TokenIterator(session, cursor.row, cursor.column); - if (!this.$matchTokenType(iterator.getCurrentToken() || "text", SAFE_INSERT_IN_TOKENS)) { - var iterator2 = new TokenIterator(session, cursor.row, cursor.column + 1); - if (!this.$matchTokenType(iterator2.getCurrentToken() || "text", SAFE_INSERT_IN_TOKENS)) - return false; - } - iterator.stepForward(); - return iterator.getCurrentTokenRow() !== cursor.row || - this.$matchTokenType(iterator.getCurrentToken() || "text", SAFE_INSERT_BEFORE_TOKENS); - }; - - CstyleBehaviour.$matchTokenType = function(token, types) { - return types.indexOf(token.type || token) > -1; - }; - - CstyleBehaviour.recordAutoInsert = function(editor, session, bracket) { - var cursor = editor.getCursorPosition(); - var line = session.doc.getLine(cursor.row); - if (!this.isAutoInsertedClosing(cursor, line, autoInsertedLineEnd[0])) - autoInsertedBrackets = 0; - autoInsertedRow = cursor.row; - autoInsertedLineEnd = bracket + line.substr(cursor.column); - autoInsertedBrackets++; - }; - - CstyleBehaviour.recordMaybeInsert = function(editor, session, bracket) { - var cursor = editor.getCursorPosition(); - var line = session.doc.getLine(cursor.row); - if (!this.isMaybeInsertedClosing(cursor, line)) - maybeInsertedBrackets = 0; - maybeInsertedRow = cursor.row; - maybeInsertedLineStart = line.substr(0, cursor.column) + bracket; - maybeInsertedLineEnd = line.substr(cursor.column); - maybeInsertedBrackets++; - }; - - CstyleBehaviour.isAutoInsertedClosing = function(cursor, line, bracket) { - return autoInsertedBrackets > 0 && - cursor.row === autoInsertedRow && - bracket === autoInsertedLineEnd[0] && - line.substr(cursor.column) === autoInsertedLineEnd; - }; - - CstyleBehaviour.isMaybeInsertedClosing = function(cursor, line) { - return maybeInsertedBrackets > 0 && - cursor.row === maybeInsertedRow && - line.substr(cursor.column) === maybeInsertedLineEnd && - line.substr(0, cursor.column) == maybeInsertedLineStart; - }; - - CstyleBehaviour.popAutoInsertedClosing = function() { - autoInsertedLineEnd = autoInsertedLineEnd.substr(1); - autoInsertedBrackets--; - }; - - CstyleBehaviour.clearMaybeInsertedClosing = function() { - maybeInsertedBrackets = 0; - maybeInsertedRow = -1; - }; - - this.add("braces", "insertion", function (state, action, editor, session, text) { - var cursor = editor.getCursorPosition(); - var line = session.doc.getLine(cursor.row); - if (text == '{') { - var selection = editor.getSelectionRange(); - var selected = session.doc.getTextRange(selection); - if (selected !== "" && selected !== "{" && editor.getWrapBehavioursEnabled()) { - return { - text: '{' + selected + '}', - selection: false - }; - } else if (CstyleBehaviour.isSaneInsertion(editor, session)) { - if (/[\]\}\)]/.test(line[cursor.column]) || editor.inMultiSelectMode) { - CstyleBehaviour.recordAutoInsert(editor, session, "}"); - return { - text: '{}', - selection: [1, 1] - }; - } else { - CstyleBehaviour.recordMaybeInsert(editor, session, "{"); - return { - text: '{', - selection: [1, 1] - }; - } - } - } else if (text == '}') { - var rightChar = line.substring(cursor.column, cursor.column + 1); - if (rightChar == '}') { - var matching = session.$findOpeningBracket('}', {column: cursor.column + 1, row: cursor.row}); - if (matching !== null && CstyleBehaviour.isAutoInsertedClosing(cursor, line, text)) { - CstyleBehaviour.popAutoInsertedClosing(); - return { - text: '', - selection: [1, 1] - }; - } - } - } else if (text == "\n" || text == "\r\n") { - var closing = ""; - if (CstyleBehaviour.isMaybeInsertedClosing(cursor, line)) { - closing = lang.stringRepeat("}", maybeInsertedBrackets); - CstyleBehaviour.clearMaybeInsertedClosing(); - } - var rightChar = line.substring(cursor.column, cursor.column + 1); - if (rightChar === '}') { - var openBracePos = session.findMatchingBracket({row: cursor.row, column: cursor.column+1}, '}'); - if (!openBracePos) - return null; - var next_indent = this.$getIndent(session.getLine(openBracePos.row)); - } else if (closing) { - var next_indent = this.$getIndent(line); - } else { - return; - } - var indent = next_indent + session.getTabString(); - - return { - text: '\n' + indent + '\n' + next_indent + closing, - selection: [1, indent.length, 1, indent.length] - }; - } else { - CstyleBehaviour.clearMaybeInsertedClosing(); - } - }); - - this.add("braces", "deletion", function (state, action, editor, session, range) { - var selected = session.doc.getTextRange(range); - if (!range.isMultiLine() && selected == '{') { - var line = session.doc.getLine(range.start.row); - var rightChar = line.substring(range.end.column, range.end.column + 1); - if (rightChar == '}') { - range.end.column++; - return range; - } else { - maybeInsertedBrackets--; - } - } - }); - - this.add("parens", "insertion", function (state, action, editor, session, text) { - if (text == '(') { - var selection = editor.getSelectionRange(); - var selected = session.doc.getTextRange(selection); - if (selected !== "" && editor.getWrapBehavioursEnabled()) { - return { - text: '(' + selected + ')', - selection: false - }; - } else if (CstyleBehaviour.isSaneInsertion(editor, session)) { - CstyleBehaviour.recordAutoInsert(editor, session, ")"); - return { - text: '()', - selection: [1, 1] - }; - } - } else if (text == ')') { - var cursor = editor.getCursorPosition(); - var line = session.doc.getLine(cursor.row); - var rightChar = line.substring(cursor.column, cursor.column + 1); - if (rightChar == ')') { - var matching = session.$findOpeningBracket(')', {column: cursor.column + 1, row: cursor.row}); - if (matching !== null && CstyleBehaviour.isAutoInsertedClosing(cursor, line, text)) { - CstyleBehaviour.popAutoInsertedClosing(); - return { - text: '', - selection: [1, 1] - }; - } - } - } - }); - - this.add("parens", "deletion", function (state, action, editor, session, range) { - var selected = session.doc.getTextRange(range); - if (!range.isMultiLine() && selected == '(') { - var line = session.doc.getLine(range.start.row); - var rightChar = line.substring(range.start.column + 1, range.start.column + 2); - if (rightChar == ')') { - range.end.column++; - return range; - } - } - }); - - this.add("brackets", "insertion", function (state, action, editor, session, text) { - if (text == '[') { - var selection = editor.getSelectionRange(); - var selected = session.doc.getTextRange(selection); - if (selected !== "" && editor.getWrapBehavioursEnabled()) { - return { - text: '[' + selected + ']', - selection: false - }; - } else if (CstyleBehaviour.isSaneInsertion(editor, session)) { - CstyleBehaviour.recordAutoInsert(editor, session, "]"); - return { - text: '[]', - selection: [1, 1] - }; - } - } else if (text == ']') { - var cursor = editor.getCursorPosition(); - var line = session.doc.getLine(cursor.row); - var rightChar = line.substring(cursor.column, cursor.column + 1); - if (rightChar == ']') { - var matching = session.$findOpeningBracket(']', {column: cursor.column + 1, row: cursor.row}); - if (matching !== null && CstyleBehaviour.isAutoInsertedClosing(cursor, line, text)) { - CstyleBehaviour.popAutoInsertedClosing(); - return { - text: '', - selection: [1, 1] - }; - } - } - } - }); - - this.add("brackets", "deletion", function (state, action, editor, session, range) { - var selected = session.doc.getTextRange(range); - if (!range.isMultiLine() && selected == '[') { - var line = session.doc.getLine(range.start.row); - var rightChar = line.substring(range.start.column + 1, range.start.column + 2); - if (rightChar == ']') { - range.end.column++; - return range; - } - } - }); - - this.add("string_dquotes", "insertion", function (state, action, editor, session, text) { - if (text == '"' || text == "'") { - var quote = text; - var selection = editor.getSelectionRange(); - var selected = session.doc.getTextRange(selection); - if (selected !== "" && selected !== "'" && selected != '"' && editor.getWrapBehavioursEnabled()) { - return { - text: quote + selected + quote, - selection: false - }; - } else { - var cursor = editor.getCursorPosition(); - var line = session.doc.getLine(cursor.row); - var leftChar = line.substring(cursor.column-1, cursor.column); - if (leftChar == '\\') { - return null; - } - var tokens = session.getTokens(selection.start.row); - var col = 0, token; - var quotepos = -1; // Track whether we're inside an open quote. - - for (var x = 0; x < tokens.length; x++) { - token = tokens[x]; - if (token.type == "string") { - quotepos = -1; - } else if (quotepos < 0) { - quotepos = token.value.indexOf(quote); - } - if ((token.value.length + col) > selection.start.column) { - break; - } - col += tokens[x].value.length; - } - if (!token || (quotepos < 0 && token.type !== "comment" && (token.type !== "string" || ((selection.start.column !== token.value.length+col-1) && token.value.lastIndexOf(quote) === token.value.length-1)))) { - if (!CstyleBehaviour.isSaneInsertion(editor, session)) - return; - return { - text: quote + quote, - selection: [1,1] - }; - } else if (token && token.type === "string") { - var rightChar = line.substring(cursor.column, cursor.column + 1); - if (rightChar == quote) { - return { - text: '', - selection: [1, 1] - }; - } - } - } - } - }); - - this.add("string_dquotes", "deletion", function (state, action, editor, session, range) { - var selected = session.doc.getTextRange(range); - if (!range.isMultiLine() && (selected == '"' || selected == "'")) { - var line = session.doc.getLine(range.start.row); - var rightChar = line.substring(range.start.column + 1, range.start.column + 2); - if (rightChar == selected) { - range.end.column++; - return range; - } - } - }); - -}; - -oop.inherits(CstyleBehaviour, Behaviour); - -exports.CstyleBehaviour = CstyleBehaviour; -}); - -ace.define('ace/mode/folding/cstyle', ['require', 'exports', 'module' , 'ace/lib/oop', 'ace/range', 'ace/mode/folding/fold_mode'], function(require, exports, module) { - - -var oop = require("../../lib/oop"); -var Range = require("../../range").Range; -var BaseFoldMode = require("./fold_mode").FoldMode; - -var FoldMode = exports.FoldMode = function(commentRegex) { - if (commentRegex) { - this.foldingStartMarker = new RegExp( - this.foldingStartMarker.source.replace(/\|[^|]*?$/, "|" + commentRegex.start) - ); - this.foldingStopMarker = new RegExp( - this.foldingStopMarker.source.replace(/\|[^|]*?$/, "|" + commentRegex.end) - ); - } -}; -oop.inherits(FoldMode, BaseFoldMode); - -(function() { - - this.foldingStartMarker = /(\{|\[)[^\}\]]*$|^\s*(\/\*)/; - this.foldingStopMarker = /^[^\[\{]*(\}|\])|^[\s\*]*(\*\/)/; - - this.getFoldWidgetRange = function(session, foldStyle, row, forceMultiline) { - var line = session.getLine(row); - var match = line.match(this.foldingStartMarker); - if (match) { - var i = match.index; - - if (match[1]) - return this.openingBracketBlock(session, match[1], row, i); - - var range = session.getCommentFoldRange(row, i + match[0].length, 1); - - if (range && !range.isMultiLine()) { - if (forceMultiline) { - range = this.getSectionRange(session, row); - } else if (foldStyle != "all") - range = null; - } - - return range; - } - - if (foldStyle === "markbegin") - return; - - var match = line.match(this.foldingStopMarker); - if (match) { - var i = match.index + match[0].length; - - if (match[1]) - return this.closingBracketBlock(session, match[1], row, i); - - return session.getCommentFoldRange(row, i, -1); - } - }; - - this.getSectionRange = function(session, row) { - var line = session.getLine(row); - var startIndent = line.search(/\S/); - var startRow = row; - var startColumn = line.length; - row = row + 1; - var endRow = row; - var maxRow = session.getLength(); - while (++row < maxRow) { - line = session.getLine(row); - var indent = line.search(/\S/); - if (indent === -1) - continue; - if (startIndent > indent) - break; - var subRange = this.getFoldWidgetRange(session, "all", row); - - if (subRange) { - if (subRange.start.row <= startRow) { - break; - } else if (subRange.isMultiLine()) { - row = subRange.end.row; - } else if (startIndent == indent) { - break; - } - } - endRow = row; - } - - return new Range(startRow, startColumn, endRow, session.getLine(endRow).length); - }; - -}).call(FoldMode.prototype); - -}); diff --git a/IDE/jsrealb-ide/ace-src-noconflict/mode-lua.js b/IDE/jsrealb-ide/ace-src-noconflict/mode-lua.js deleted file mode 100644 index 7ade47cf..00000000 --- a/IDE/jsrealb-ide/ace-src-noconflict/mode-lua.js +++ /dev/null @@ -1,457 +0,0 @@ -/* ***** BEGIN LICENSE BLOCK ***** - * Distributed under the BSD license: - * - * Copyright (c) 2010, Ajax.org B.V. - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are met: - * * Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * * Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * * Neither the name of Ajax.org B.V. nor the - * names of its contributors may be used to endorse or promote products - * derived from this software without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND - * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED - * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE - * DISCLAIMED. IN NO EVENT SHALL AJAX.ORG B.V. BE LIABLE FOR ANY - * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES - * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; - * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND - * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - * - * ***** END LICENSE BLOCK ***** */ - -ace.define('ace/mode/lua', ['require', 'exports', 'module' , 'ace/lib/oop', 'ace/mode/text', 'ace/tokenizer', 'ace/mode/lua_highlight_rules', 'ace/mode/folding/lua', 'ace/range', 'ace/worker/worker_client'], function(require, exports, module) { - - -var oop = require("../lib/oop"); -var TextMode = require("./text").Mode; -var Tokenizer = require("../tokenizer").Tokenizer; -var LuaHighlightRules = require("./lua_highlight_rules").LuaHighlightRules; -var LuaFoldMode = require("./folding/lua").FoldMode; -var Range = require("../range").Range; -var WorkerClient = require("../worker/worker_client").WorkerClient; - -var Mode = function() { - this.HighlightRules = LuaHighlightRules; - - this.foldingRules = new LuaFoldMode(); -}; -oop.inherits(Mode, TextMode); - -(function() { - - this.lineCommentStart = "--"; - this.blockComment = {start: "--[", end: "]--"}; - - var indentKeywords = { - "function": 1, - "then": 1, - "do": 1, - "else": 1, - "elseif": 1, - "repeat": 1, - "end": -1, - "until": -1 - }; - var outdentKeywords = [ - "else", - "elseif", - "end", - "until" - ]; - - function getNetIndentLevel(tokens) { - var level = 0; - for (var i = 0; i < tokens.length; i++) { - var token = tokens[i]; - if (token.type == "keyword") { - if (token.value in indentKeywords) { - level += indentKeywords[token.value]; - } - } else if (token.type == "paren.lparen") { - level ++; - } else if (token.type == "paren.rparen") { - level --; - } - } - if (level < 0) { - return -1; - } else if (level > 0) { - return 1; - } else { - return 0; - } - } - - this.getNextLineIndent = function(state, line, tab) { - var indent = this.$getIndent(line); - var level = 0; - - var tokenizedLine = this.getTokenizer().getLineTokens(line, state); - var tokens = tokenizedLine.tokens; - - if (state == "start") { - level = getNetIndentLevel(tokens); - } - if (level > 0) { - return indent + tab; - } else if (level < 0 && indent.substr(indent.length - tab.length) == tab) { - if (!this.checkOutdent(state, line, "\n")) { - return indent.substr(0, indent.length - tab.length); - } - } - return indent; - }; - - this.checkOutdent = function(state, line, input) { - if (input != "\n" && input != "\r" && input != "\r\n") - return false; - - if (line.match(/^\s*[\)\}\]]$/)) - return true; - - var tokens = this.getTokenizer().getLineTokens(line.trim(), state).tokens; - - if (!tokens || !tokens.length) - return false; - - return (tokens[0].type == "keyword" && outdentKeywords.indexOf(tokens[0].value) != -1); - }; - - this.autoOutdent = function(state, session, row) { - var prevLine = session.getLine(row - 1); - var prevIndent = this.$getIndent(prevLine).length; - var prevTokens = this.getTokenizer().getLineTokens(prevLine, "start").tokens; - var tabLength = session.getTabString().length; - var expectedIndent = prevIndent + tabLength * getNetIndentLevel(prevTokens); - var curIndent = this.$getIndent(session.getLine(row)).length; - if (curIndent < expectedIndent) { - return; - } - session.outdentRows(new Range(row, 0, row + 2, 0)); - }; - - this.createWorker = function(session) { - var worker = new WorkerClient(["ace"], "ace/mode/lua_worker", "Worker"); - worker.attachToDocument(session.getDocument()); - - worker.on("error", function(e) { - session.setAnnotations([e.data]); - }); - - worker.on("ok", function(e) { - session.clearAnnotations(); - }); - - return worker; - }; - - this.$id = "ace/mode/lua"; -}).call(Mode.prototype); - -exports.Mode = Mode; -}); - -ace.define('ace/mode/lua_highlight_rules', ['require', 'exports', 'module' , 'ace/lib/oop', 'ace/mode/text_highlight_rules'], function(require, exports, module) { - - -var oop = require("../lib/oop"); -var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; - -var LuaHighlightRules = function() { - - var keywords = ( - "break|do|else|elseif|end|for|function|if|in|local|repeat|"+ - "return|then|until|while|or|and|not" - ); - - var builtinConstants = ("true|false|nil|_G|_VERSION"); - - var functions = ( - "string|xpcall|package|tostring|print|os|unpack|require|"+ - "getfenv|setmetatable|next|assert|tonumber|io|rawequal|"+ - "collectgarbage|getmetatable|module|rawset|math|debug|"+ - "pcall|table|newproxy|type|coroutine|_G|select|gcinfo|"+ - "pairs|rawget|loadstring|ipairs|_VERSION|dofile|setfenv|"+ - "load|error|loadfile|"+ - - "sub|upper|len|gfind|rep|find|match|char|dump|gmatch|"+ - "reverse|byte|format|gsub|lower|preload|loadlib|loaded|"+ - "loaders|cpath|config|path|seeall|exit|setlocale|date|"+ - "getenv|difftime|remove|time|clock|tmpname|rename|execute|"+ - "lines|write|close|flush|open|output|type|read|stderr|"+ - "stdin|input|stdout|popen|tmpfile|log|max|acos|huge|"+ - "ldexp|pi|cos|tanh|pow|deg|tan|cosh|sinh|random|randomseed|"+ - "frexp|ceil|floor|rad|abs|sqrt|modf|asin|min|mod|fmod|log10|"+ - "atan2|exp|sin|atan|getupvalue|debug|sethook|getmetatable|"+ - "gethook|setmetatable|setlocal|traceback|setfenv|getinfo|"+ - "setupvalue|getlocal|getregistry|getfenv|setn|insert|getn|"+ - "foreachi|maxn|foreach|concat|sort|remove|resume|yield|"+ - "status|wrap|create|running|"+ - "__add|__sub|__mod|__unm|__concat|__lt|__index|__call|__gc|__metatable|"+ - "__mul|__div|__pow|__len|__eq|__le|__newindex|__tostring|__mode|__tonumber" - ); - - var stdLibaries = ("string|package|os|io|math|debug|table|coroutine"); - - var futureReserved = ""; - - var deprecatedIn5152 = ("setn|foreach|foreachi|gcinfo|log10|maxn"); - - var keywordMapper = this.createKeywordMapper({ - "keyword": keywords, - "support.function": functions, - "invalid.deprecated": deprecatedIn5152, - "constant.library": stdLibaries, - "constant.language": builtinConstants, - "invalid.illegal": futureReserved, - "variable.language": "this" - }, "identifier"); - - var decimalInteger = "(?:(?:[1-9]\\d*)|(?:0))"; - var hexInteger = "(?:0[xX][\\dA-Fa-f]+)"; - var integer = "(?:" + decimalInteger + "|" + hexInteger + ")"; - - var fraction = "(?:\\.\\d+)"; - var intPart = "(?:\\d+)"; - var pointFloat = "(?:(?:" + intPart + "?" + fraction + ")|(?:" + intPart + "\\.))"; - var floatNumber = "(?:" + pointFloat + ")"; - - this.$rules = { - "start" : [{ - stateName: "bracketedComment", - onMatch : function(value, currentState, stack){ - stack.unshift(this.next, value.length - 2, currentState); - return "comment"; - }, - regex : /\-\-\[=*\[/, - next : [ - { - onMatch : function(value, currentState, stack) { - if (value.length == stack[1]) { - stack.shift(); - stack.shift(); - this.next = stack.shift(); - } else { - this.next = ""; - } - return "comment"; - }, - regex : /\]=*\]/, - next : "start" - }, { - defaultToken : "comment" - } - ] - }, - - { - token : "comment", - regex : "\\-\\-.*$" - }, - { - stateName: "bracketedString", - onMatch : function(value, currentState, stack){ - stack.unshift(this.next, value.length, currentState); - return "comment"; - }, - regex : /\[=*\[/, - next : [ - { - onMatch : function(value, currentState, stack) { - if (value.length == stack[1]) { - stack.shift(); - stack.shift(); - this.next = stack.shift(); - } else { - this.next = ""; - } - return "comment"; - }, - - regex : /\]=*\]/, - next : "start" - }, { - defaultToken : "comment" - } - ] - }, - { - token : "string", // " string - regex : '"(?:[^\\\\]|\\\\.)*?"' - }, { - token : "string", // ' string - regex : "'(?:[^\\\\]|\\\\.)*?'" - }, { - token : "constant.numeric", // float - regex : floatNumber - }, { - token : "constant.numeric", // integer - regex : integer + "\\b" - }, { - token : keywordMapper, - regex : "[a-zA-Z_$][a-zA-Z0-9_$]*\\b" - }, { - token : "keyword.operator", - regex : "\\+|\\-|\\*|\\/|%|\\#|\\^|~|<|>|<=|=>|==|~=|=|\\:|\\.\\.\\.|\\.\\." - }, { - token : "paren.lparen", - regex : "[\\[\\(\\{]" - }, { - token : "paren.rparen", - regex : "[\\]\\)\\}]" - }, { - token : "text", - regex : "\\s+|\\w+" - } ] - }; - - this.normalizeRules(); -} - -oop.inherits(LuaHighlightRules, TextHighlightRules); - -exports.LuaHighlightRules = LuaHighlightRules; -}); - -ace.define('ace/mode/folding/lua', ['require', 'exports', 'module' , 'ace/lib/oop', 'ace/mode/folding/fold_mode', 'ace/range', 'ace/token_iterator'], function(require, exports, module) { - - -var oop = require("../../lib/oop"); -var BaseFoldMode = require("./fold_mode").FoldMode; -var Range = require("../../range").Range; -var TokenIterator = require("../../token_iterator").TokenIterator; - - -var FoldMode = exports.FoldMode = function() {}; - -oop.inherits(FoldMode, BaseFoldMode); - -(function() { - - this.foldingStartMarker = /\b(function|then|do|repeat)\b|{\s*$|(\[=*\[)/; - this.foldingStopMarker = /\bend\b|^\s*}|\]=*\]/; - - this.getFoldWidget = function(session, foldStyle, row) { - var line = session.getLine(row); - var isStart = this.foldingStartMarker.test(line); - var isEnd = this.foldingStopMarker.test(line); - - if (isStart && !isEnd) { - var match = line.match(this.foldingStartMarker); - if (match[1] == "then" && /\belseif\b/.test(line)) - return; - if (match[1]) { - if (session.getTokenAt(row, match.index + 1).type === "keyword") - return "start"; - } else if (match[2]) { - var type = session.bgTokenizer.getState(row) || ""; - if (type[0] == "bracketedComment" || type[0] == "bracketedString") - return "start"; - } else { - return "start"; - } - } - if (foldStyle != "markbeginend" || !isEnd || isStart && isEnd) - return ""; - - var match = line.match(this.foldingStopMarker); - if (match[0] === "end") { - if (session.getTokenAt(row, match.index + 1).type === "keyword") - return "end"; - } else if (match[0][0] === "]") { - var type = session.bgTokenizer.getState(row - 1) || ""; - if (type[0] == "bracketedComment" || type[0] == "bracketedString") - return "end"; - } else - return "end"; - }; - - this.getFoldWidgetRange = function(session, foldStyle, row) { - var line = session.doc.getLine(row); - var match = this.foldingStartMarker.exec(line); - if (match) { - if (match[1]) - return this.luaBlock(session, row, match.index + 1); - - if (match[2]) - return session.getCommentFoldRange(row, match.index + 1); - - return this.openingBracketBlock(session, "{", row, match.index); - } - - var match = this.foldingStopMarker.exec(line); - if (match) { - if (match[0] === "end") { - if (session.getTokenAt(row, match.index + 1).type === "keyword") - return this.luaBlock(session, row, match.index + 1); - } - - if (match[0][0] === "]") - return session.getCommentFoldRange(row, match.index + 1); - - return this.closingBracketBlock(session, "}", row, match.index + match[0].length); - } - }; - - this.luaBlock = function(session, row, column) { - var stream = new TokenIterator(session, row, column); - var indentKeywords = { - "function": 1, - "do": 1, - "then": 1, - "elseif": -1, - "end": -1, - "repeat": 1, - "until": -1 - }; - - var token = stream.getCurrentToken(); - if (!token || token.type != "keyword") - return; - - var val = token.value; - var stack = [val]; - var dir = indentKeywords[val]; - - if (!dir) - return; - - var startColumn = dir === -1 ? stream.getCurrentTokenColumn() : session.getLine(row).length; - var startRow = row; - - stream.step = dir === -1 ? stream.stepBackward : stream.stepForward; - while(token = stream.step()) { - if (token.type !== "keyword") - continue; - var level = dir * indentKeywords[token.value]; - - if (level > 0) { - stack.unshift(token.value); - } else if (level <= 0) { - stack.shift(); - if (!stack.length && token.value != "elseif") - break; - if (level === 0) - stack.unshift(token.value); - } - } - - var row = stream.getCurrentTokenRow(); - if (dir === -1) - return new Range(row, session.getLine(row).length, startRow, startColumn); - else - return new Range(startRow, startColumn, row, stream.getCurrentTokenColumn()); - }; - -}).call(FoldMode.prototype); - -}); diff --git a/IDE/jsrealb-ide/ace-src-noconflict/mode-luapage.js b/IDE/jsrealb-ide/ace-src-noconflict/mode-luapage.js deleted file mode 100644 index e76e9cfe..00000000 --- a/IDE/jsrealb-ide/ace-src-noconflict/mode-luapage.js +++ /dev/null @@ -1,2828 +0,0 @@ -ace.define('ace/mode/luapage', ['require', 'exports', 'module' , 'ace/lib/oop', 'ace/mode/html', 'ace/mode/lua', 'ace/tokenizer', 'ace/mode/luapage_highlight_rules'], function(require, exports, module) { - - -var oop = require("../lib/oop"); -var HtmlMode = require("./html").Mode; -var LuaMode = require("./lua").Mode; -var Tokenizer = require("../tokenizer").Tokenizer; -var LuaPageHighlightRules = require("./luapage_highlight_rules").LuaPageHighlightRules; - -var Mode = function() { - this.HighlightRules = LuaPageHighlightRules; - - this.HighlightRules = LuaPageHighlightRules; - this.createModeDelegates({ - "lua-": LuaMode - }); -}; -oop.inherits(Mode, HtmlMode); - -exports.Mode = Mode; -}); - -ace.define('ace/mode/html', ['require', 'exports', 'module' , 'ace/lib/oop', 'ace/mode/text', 'ace/mode/javascript', 'ace/mode/css', 'ace/tokenizer', 'ace/mode/html_highlight_rules', 'ace/mode/behaviour/html', 'ace/mode/folding/html', 'ace/mode/html_completions'], function(require, exports, module) { - - -var oop = require("../lib/oop"); -var TextMode = require("./text").Mode; -var JavaScriptMode = require("./javascript").Mode; -var CssMode = require("./css").Mode; -var Tokenizer = require("../tokenizer").Tokenizer; -var HtmlHighlightRules = require("./html_highlight_rules").HtmlHighlightRules; -var HtmlBehaviour = require("./behaviour/html").HtmlBehaviour; -var HtmlFoldMode = require("./folding/html").FoldMode; -var HtmlCompletions = require("./html_completions").HtmlCompletions; - -var Mode = function() { - this.HighlightRules = HtmlHighlightRules; - this.$behaviour = new HtmlBehaviour(); - this.$completer = new HtmlCompletions(); - - this.createModeDelegates({ - "js-": JavaScriptMode, - "css-": CssMode - }); - - this.foldingRules = new HtmlFoldMode(); -}; -oop.inherits(Mode, TextMode); - -(function() { - - this.blockComment = {start: ""}; - - this.getNextLineIndent = function(state, line, tab) { - return this.$getIndent(line); - }; - - this.checkOutdent = function(state, line, input) { - return false; - }; - - this.getCompletions = function(state, session, pos, prefix) { - return this.$completer.getCompletions(state, session, pos, prefix); - }; - - this.$id = "ace/mode/html"; -}).call(Mode.prototype); - -exports.Mode = Mode; -}); - -ace.define('ace/mode/javascript', ['require', 'exports', 'module' , 'ace/lib/oop', 'ace/mode/text', 'ace/tokenizer', 'ace/mode/javascript_highlight_rules', 'ace/mode/matching_brace_outdent', 'ace/range', 'ace/worker/worker_client', 'ace/mode/behaviour/cstyle', 'ace/mode/folding/cstyle'], function(require, exports, module) { - - -var oop = require("../lib/oop"); -var TextMode = require("./text").Mode; -var Tokenizer = require("../tokenizer").Tokenizer; -var JavaScriptHighlightRules = require("./javascript_highlight_rules").JavaScriptHighlightRules; -var MatchingBraceOutdent = require("./matching_brace_outdent").MatchingBraceOutdent; -var Range = require("../range").Range; -var WorkerClient = require("../worker/worker_client").WorkerClient; -var CstyleBehaviour = require("./behaviour/cstyle").CstyleBehaviour; -var CStyleFoldMode = require("./folding/cstyle").FoldMode; - -var Mode = function() { - this.HighlightRules = JavaScriptHighlightRules; - - this.$outdent = new MatchingBraceOutdent(); - this.$behaviour = new CstyleBehaviour(); - this.foldingRules = new CStyleFoldMode(); -}; -oop.inherits(Mode, TextMode); - -(function() { - - this.lineCommentStart = "//"; - this.blockComment = {start: "/*", end: "*/"}; - - this.getNextLineIndent = function(state, line, tab) { - var indent = this.$getIndent(line); - - var tokenizedLine = this.getTokenizer().getLineTokens(line, state); - var tokens = tokenizedLine.tokens; - var endState = tokenizedLine.state; - - if (tokens.length && tokens[tokens.length-1].type == "comment") { - return indent; - } - - if (state == "start" || state == "no_regex") { - var match = line.match(/^.*(?:\bcase\b.*\:|[\{\(\[])\s*$/); - if (match) { - indent += tab; - } - } else if (state == "doc-start") { - if (endState == "start" || endState == "no_regex") { - return ""; - } - var match = line.match(/^\s*(\/?)\*/); - if (match) { - if (match[1]) { - indent += " "; - } - indent += "* "; - } - } - - return indent; - }; - - this.checkOutdent = function(state, line, input) { - return this.$outdent.checkOutdent(line, input); - }; - - this.autoOutdent = function(state, doc, row) { - this.$outdent.autoOutdent(doc, row); - }; - - this.createWorker = function(session) { - var worker = new WorkerClient(["ace"], "ace/mode/javascript_worker", "JavaScriptWorker"); - worker.attachToDocument(session.getDocument()); - - worker.on("jslint", function(results) { - session.setAnnotations(results.data); - }); - - worker.on("terminate", function() { - session.clearAnnotations(); - }); - - return worker; - }; - - this.$id = "ace/mode/javascript"; -}).call(Mode.prototype); - -exports.Mode = Mode; -}); - -ace.define('ace/mode/javascript_highlight_rules', ['require', 'exports', 'module' , 'ace/lib/oop', 'ace/mode/doc_comment_highlight_rules', 'ace/mode/text_highlight_rules'], function(require, exports, module) { - - -var oop = require("../lib/oop"); -var DocCommentHighlightRules = require("./doc_comment_highlight_rules").DocCommentHighlightRules; -var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; - -var JavaScriptHighlightRules = function() { - var keywordMapper = this.createKeywordMapper({ - "variable.language": - "Array|Boolean|Date|Function|Iterator|Number|Object|RegExp|String|Proxy|" + // Constructors - "Namespace|QName|XML|XMLList|" + // E4X - "ArrayBuffer|Float32Array|Float64Array|Int16Array|Int32Array|Int8Array|" + - "Uint16Array|Uint32Array|Uint8Array|Uint8ClampedArray|" + - "Error|EvalError|InternalError|RangeError|ReferenceError|StopIteration|" + // Errors - "SyntaxError|TypeError|URIError|" + - "decodeURI|decodeURIComponent|encodeURI|encodeURIComponent|eval|isFinite|" + // Non-constructor functions - "isNaN|parseFloat|parseInt|" + - "JSON|Math|" + // Other - "this|arguments|prototype|window|document" , // Pseudo - "keyword": - "const|yield|import|get|set|" + - "break|case|catch|continue|default|delete|do|else|finally|for|function|" + - "if|in|instanceof|new|return|switch|throw|try|typeof|let|var|while|with|debugger|" + - "__parent__|__count__|escape|unescape|with|__proto__|" + - "class|enum|extends|super|export|implements|private|public|interface|package|protected|static", - "storage.type": - "const|let|var|function", - "constant.language": - "null|Infinity|NaN|undefined", - "support.function": - "alert", - "constant.language.boolean": "true|false" - }, "identifier"); - var kwBeforeRe = "case|do|else|finally|in|instanceof|return|throw|try|typeof|yield|void"; - var identifierRe = "[a-zA-Z\\$_\u00a1-\uffff][a-zA-Z\\d\\$_\u00a1-\uffff]*\\b"; - - var escapedRe = "\\\\(?:x[0-9a-fA-F]{2}|" + // hex - "u[0-9a-fA-F]{4}|" + // unicode - "[0-2][0-7]{0,2}|" + // oct - "3[0-6][0-7]?|" + // oct - "37[0-7]?|" + // oct - "[4-7][0-7]?|" + //oct - ".)"; - - this.$rules = { - "no_regex" : [ - { - token : "comment", - regex : "\\/\\/", - next : "line_comment" - }, - DocCommentHighlightRules.getStartRule("doc-start"), - { - token : "comment", // multi line comment - regex : /\/\*/, - next : "comment" - }, { - token : "string", - regex : "'(?=.)", - next : "qstring" - }, { - token : "string", - regex : '"(?=.)', - next : "qqstring" - }, { - token : "constant.numeric", // hex - regex : /0[xX][0-9a-fA-F]+\b/ - }, { - token : "constant.numeric", // float - regex : /[+-]?\d+(?:(?:\.\d*)?(?:[eE][+-]?\d+)?)?\b/ - }, { - token : [ - "storage.type", "punctuation.operator", "support.function", - "punctuation.operator", "entity.name.function", "text","keyword.operator" - ], - regex : "(" + identifierRe + ")(\\.)(prototype)(\\.)(" + identifierRe +")(\\s*)(=)", - next: "function_arguments" - }, { - token : [ - "storage.type", "punctuation.operator", "entity.name.function", "text", - "keyword.operator", "text", "storage.type", "text", "paren.lparen" - ], - regex : "(" + identifierRe + ")(\\.)(" + identifierRe +")(\\s*)(=)(\\s*)(function)(\\s*)(\\()", - next: "function_arguments" - }, { - token : [ - "entity.name.function", "text", "keyword.operator", "text", "storage.type", - "text", "paren.lparen" - ], - regex : "(" + identifierRe +")(\\s*)(=)(\\s*)(function)(\\s*)(\\()", - next: "function_arguments" - }, { - token : [ - "storage.type", "punctuation.operator", "entity.name.function", "text", - "keyword.operator", "text", - "storage.type", "text", "entity.name.function", "text", "paren.lparen" - ], - regex : "(" + identifierRe + ")(\\.)(" + identifierRe +")(\\s*)(=)(\\s*)(function)(\\s+)(\\w+)(\\s*)(\\()", - next: "function_arguments" - }, { - token : [ - "storage.type", "text", "entity.name.function", "text", "paren.lparen" - ], - regex : "(function)(\\s+)(" + identifierRe + ")(\\s*)(\\()", - next: "function_arguments" - }, { - token : [ - "entity.name.function", "text", "punctuation.operator", - "text", "storage.type", "text", "paren.lparen" - ], - regex : "(" + identifierRe + ")(\\s*)(:)(\\s*)(function)(\\s*)(\\()", - next: "function_arguments" - }, { - token : [ - "text", "text", "storage.type", "text", "paren.lparen" - ], - regex : "(:)(\\s*)(function)(\\s*)(\\()", - next: "function_arguments" - }, { - token : "keyword", - regex : "(?:" + kwBeforeRe + ")\\b", - next : "start" - }, { - token : ["punctuation.operator", "support.function"], - regex : /(\.)(s(?:h(?:ift|ow(?:Mod(?:elessDialog|alDialog)|Help))|croll(?:X|By(?:Pages|Lines)?|Y|To)?|t(?:op|rike)|i(?:n|zeToContent|debar|gnText)|ort|u(?:p|b(?:str(?:ing)?)?)|pli(?:ce|t)|e(?:nd|t(?:Re(?:sizable|questHeader)|M(?:i(?:nutes|lliseconds)|onth)|Seconds|Ho(?:tKeys|urs)|Year|Cursor|Time(?:out)?|Interval|ZOptions|Date|UTC(?:M(?:i(?:nutes|lliseconds)|onth)|Seconds|Hours|Date|FullYear)|FullYear|Active)|arch)|qrt|lice|avePreferences|mall)|h(?:ome|andleEvent)|navigate|c(?:har(?:CodeAt|At)|o(?:s|n(?:cat|textual|firm)|mpile)|eil|lear(?:Timeout|Interval)?|a(?:ptureEvents|ll)|reate(?:StyleSheet|Popup|EventObject))|t(?:o(?:GMTString|S(?:tring|ource)|U(?:TCString|pperCase)|Lo(?:caleString|werCase))|est|a(?:n|int(?:Enabled)?))|i(?:s(?:NaN|Finite)|ndexOf|talics)|d(?:isableExternalCapture|ump|etachEvent)|u(?:n(?:shift|taint|escape|watch)|pdateCommands)|j(?:oin|avaEnabled)|p(?:o(?:p|w)|ush|lugins.refresh|a(?:ddings|rse(?:Int|Float)?)|r(?:int|ompt|eference))|e(?:scape|nableExternalCapture|val|lementFromPoint|x(?:p|ec(?:Script|Command)?))|valueOf|UTC|queryCommand(?:State|Indeterm|Enabled|Value)|f(?:i(?:nd|le(?:ModifiedDate|Size|CreatedDate|UpdatedDate)|xed)|o(?:nt(?:size|color)|rward)|loor|romCharCode)|watch|l(?:ink|o(?:ad|g)|astIndexOf)|a(?:sin|nchor|cos|t(?:tachEvent|ob|an(?:2)?)|pply|lert|b(?:s|ort))|r(?:ou(?:nd|teEvents)|e(?:size(?:By|To)|calc|turnValue|place|verse|l(?:oad|ease(?:Capture|Events)))|andom)|g(?:o|et(?:ResponseHeader|M(?:i(?:nutes|lliseconds)|onth)|Se(?:conds|lection)|Hours|Year|Time(?:zoneOffset)?|Da(?:y|te)|UTC(?:M(?:i(?:nutes|lliseconds)|onth)|Seconds|Hours|Da(?:y|te)|FullYear)|FullYear|A(?:ttention|llResponseHeaders)))|m(?:in|ove(?:B(?:y|elow)|To(?:Absolute)?|Above)|ergeAttributes|a(?:tch|rgins|x))|b(?:toa|ig|o(?:ld|rderWidths)|link|ack))\b(?=\()/ - }, { - token : ["punctuation.operator", "support.function.dom"], - regex : /(\.)(s(?:ub(?:stringData|mit)|plitText|e(?:t(?:NamedItem|Attribute(?:Node)?)|lect))|has(?:ChildNodes|Feature)|namedItem|c(?:l(?:ick|o(?:se|neNode))|reate(?:C(?:omment|DATASection|aption)|T(?:Head|extNode|Foot)|DocumentFragment|ProcessingInstruction|E(?:ntityReference|lement)|Attribute))|tabIndex|i(?:nsert(?:Row|Before|Cell|Data)|tem)|open|delete(?:Row|C(?:ell|aption)|T(?:Head|Foot)|Data)|focus|write(?:ln)?|a(?:dd|ppend(?:Child|Data))|re(?:set|place(?:Child|Data)|move(?:NamedItem|Child|Attribute(?:Node)?)?)|get(?:NamedItem|Element(?:sBy(?:Name|TagName)|ById)|Attribute(?:Node)?)|blur)\b(?=\()/ - }, { - token : ["punctuation.operator", "support.constant"], - regex : /(\.)(s(?:ystemLanguage|cr(?:ipts|ollbars|een(?:X|Y|Top|Left))|t(?:yle(?:Sheets)?|atus(?:Text|bar)?)|ibling(?:Below|Above)|ource|uffixes|e(?:curity(?:Policy)?|l(?:ection|f)))|h(?:istory|ost(?:name)?|as(?:h|Focus))|y|X(?:MLDocument|SLDocument)|n(?:ext|ame(?:space(?:s|URI)|Prop))|M(?:IN_VALUE|AX_VALUE)|c(?:haracterSet|o(?:n(?:structor|trollers)|okieEnabled|lorDepth|mp(?:onents|lete))|urrent|puClass|l(?:i(?:p(?:boardData)?|entInformation)|osed|asses)|alle(?:e|r)|rypto)|t(?:o(?:olbar|p)|ext(?:Transform|Indent|Decoration|Align)|ags)|SQRT(?:1_2|2)|i(?:n(?:ner(?:Height|Width)|put)|ds|gnoreCase)|zIndex|o(?:scpu|n(?:readystatechange|Line)|uter(?:Height|Width)|p(?:sProfile|ener)|ffscreenBuffering)|NEGATIVE_INFINITY|d(?:i(?:splay|alog(?:Height|Top|Width|Left|Arguments)|rectories)|e(?:scription|fault(?:Status|Ch(?:ecked|arset)|View)))|u(?:ser(?:Profile|Language|Agent)|n(?:iqueID|defined)|pdateInterval)|_content|p(?:ixelDepth|ort|ersonalbar|kcs11|l(?:ugins|atform)|a(?:thname|dding(?:Right|Bottom|Top|Left)|rent(?:Window|Layer)?|ge(?:X(?:Offset)?|Y(?:Offset)?))|r(?:o(?:to(?:col|type)|duct(?:Sub)?|mpter)|e(?:vious|fix)))|e(?:n(?:coding|abledPlugin)|x(?:ternal|pando)|mbeds)|v(?:isibility|endor(?:Sub)?|Linkcolor)|URLUnencoded|P(?:I|OSITIVE_INFINITY)|f(?:ilename|o(?:nt(?:Size|Family|Weight)|rmName)|rame(?:s|Element)|gColor)|E|whiteSpace|l(?:i(?:stStyleType|n(?:eHeight|kColor))|o(?:ca(?:tion(?:bar)?|lName)|wsrc)|e(?:ngth|ft(?:Context)?)|a(?:st(?:M(?:odified|atch)|Index|Paren)|yer(?:s|X)|nguage))|a(?:pp(?:MinorVersion|Name|Co(?:deName|re)|Version)|vail(?:Height|Top|Width|Left)|ll|r(?:ity|guments)|Linkcolor|bove)|r(?:ight(?:Context)?|e(?:sponse(?:XML|Text)|adyState))|global|x|m(?:imeTypes|ultiline|enubar|argin(?:Right|Bottom|Top|Left))|L(?:N(?:10|2)|OG(?:10E|2E))|b(?:o(?:ttom|rder(?:Width|RightWidth|BottomWidth|Style|Color|TopWidth|LeftWidth))|ufferDepth|elow|ackground(?:Color|Image)))\b/ - }, { - token : ["storage.type", "punctuation.operator", "support.function.firebug"], - regex : /(console)(\.)(warn|info|log|error|time|timeEnd|assert)\b/ - }, { - token : keywordMapper, - regex : identifierRe - }, { - token : "keyword.operator", - regex : /--|\+\+|[!$%&*+\-~]|===|==|=|!=|!==|<=|>=|<<=|>>=|>>>=|<>|<|>|!|&&|\|\||\?\:|\*=|%=|\+=|\-=|&=|\^=/, - next : "start" - }, { - token : "punctuation.operator", - regex : /\?|\:|\,|\;|\./, - next : "start" - }, { - token : "paren.lparen", - regex : /[\[({]/, - next : "start" - }, { - token : "paren.rparen", - regex : /[\])}]/ - }, { - token : "keyword.operator", - regex : /\/=?/, - next : "start" - }, { - token: "comment", - regex: /^#!.*$/ - } - ], - "start": [ - DocCommentHighlightRules.getStartRule("doc-start"), - { - token : "comment", // multi line comment - regex : "\\/\\*", - next : "comment_regex_allowed" - }, { - token : "comment", - regex : "\\/\\/", - next : "line_comment_regex_allowed" - }, { - token: "string.regexp", - regex: "\\/", - next: "regex" - }, { - token : "text", - regex : "\\s+|^$", - next : "start" - }, { - token: "empty", - regex: "", - next: "no_regex" - } - ], - "regex": [ - { - token: "regexp.keyword.operator", - regex: "\\\\(?:u[\\da-fA-F]{4}|x[\\da-fA-F]{2}|.)" - }, { - token: "string.regexp", - regex: "/[sxngimy]*", - next: "no_regex" - }, { - token : "invalid", - regex: /\{\d+\b,?\d*\}[+*]|[+*$^?][+*]|[$^][?]|\?{3,}/ - }, { - token : "constant.language.escape", - regex: /\(\?[:=!]|\)|\{\d+\b,?\d*\}|[+*]\?|[()$^+*?.]/ - }, { - token : "constant.language.delimiter", - regex: /\|/ - }, { - token: "constant.language.escape", - regex: /\[\^?/, - next: "regex_character_class" - }, { - token: "empty", - regex: "$", - next: "no_regex" - }, { - defaultToken: "string.regexp" - } - ], - "regex_character_class": [ - { - token: "regexp.keyword.operator", - regex: "\\\\(?:u[\\da-fA-F]{4}|x[\\da-fA-F]{2}|.)" - }, { - token: "constant.language.escape", - regex: "]", - next: "regex" - }, { - token: "constant.language.escape", - regex: "-" - }, { - token: "empty", - regex: "$", - next: "no_regex" - }, { - defaultToken: "string.regexp.charachterclass" - } - ], - "function_arguments": [ - { - token: "variable.parameter", - regex: identifierRe - }, { - token: "punctuation.operator", - regex: "[, ]+" - }, { - token: "punctuation.operator", - regex: "$" - }, { - token: "empty", - regex: "", - next: "no_regex" - } - ], - "comment_regex_allowed" : [ - {token : "comment", regex : "\\*\\/", next : "start"}, - {defaultToken : "comment"} - ], - "comment" : [ - {token : "comment", regex : "\\*\\/", next : "no_regex"}, - {defaultToken : "comment"} - ], - "line_comment_regex_allowed" : [ - {token : "comment", regex : "$|^", next : "start"}, - {defaultToken : "comment"} - ], - "line_comment" : [ - {token : "comment", regex : "$|^", next : "no_regex"}, - {defaultToken : "comment"} - ], - "qqstring" : [ - { - token : "constant.language.escape", - regex : escapedRe - }, { - token : "string", - regex : "\\\\$", - next : "qqstring" - }, { - token : "string", - regex : '"|$', - next : "no_regex" - }, { - defaultToken: "string" - } - ], - "qstring" : [ - { - token : "constant.language.escape", - regex : escapedRe - }, { - token : "string", - regex : "\\\\$", - next : "qstring" - }, { - token : "string", - regex : "'|$", - next : "no_regex" - }, { - defaultToken: "string" - } - ] - }; - - this.embedRules(DocCommentHighlightRules, "doc-", - [ DocCommentHighlightRules.getEndRule("no_regex") ]); -}; - -oop.inherits(JavaScriptHighlightRules, TextHighlightRules); - -exports.JavaScriptHighlightRules = JavaScriptHighlightRules; -}); - -ace.define('ace/mode/doc_comment_highlight_rules', ['require', 'exports', 'module' , 'ace/lib/oop', 'ace/mode/text_highlight_rules'], function(require, exports, module) { - - -var oop = require("../lib/oop"); -var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; - -var DocCommentHighlightRules = function() { - - this.$rules = { - "start" : [ { - token : "comment.doc.tag", - regex : "@[\\w\\d_]+" // TODO: fix email addresses - }, { - token : "comment.doc.tag", - regex : "\\bTODO\\b" - }, { - defaultToken : "comment.doc" - }] - }; -}; - -oop.inherits(DocCommentHighlightRules, TextHighlightRules); - -DocCommentHighlightRules.getStartRule = function(start) { - return { - token : "comment.doc", // doc comment - regex : "\\/\\*(?=\\*)", - next : start - }; -}; - -DocCommentHighlightRules.getEndRule = function (start) { - return { - token : "comment.doc", // closing comment - regex : "\\*\\/", - next : start - }; -}; - - -exports.DocCommentHighlightRules = DocCommentHighlightRules; - -}); - -ace.define('ace/mode/matching_brace_outdent', ['require', 'exports', 'module' , 'ace/range'], function(require, exports, module) { - - -var Range = require("../range").Range; - -var MatchingBraceOutdent = function() {}; - -(function() { - - this.checkOutdent = function(line, input) { - if (! /^\s+$/.test(line)) - return false; - - return /^\s*\}/.test(input); - }; - - this.autoOutdent = function(doc, row) { - var line = doc.getLine(row); - var match = line.match(/^(\s*\})/); - - if (!match) return 0; - - var column = match[1].length; - var openBracePos = doc.findMatchingBracket({row: row, column: column}); - - if (!openBracePos || openBracePos.row == row) return 0; - - var indent = this.$getIndent(doc.getLine(openBracePos.row)); - doc.replace(new Range(row, 0, row, column-1), indent); - }; - - this.$getIndent = function(line) { - return line.match(/^\s*/)[0]; - }; - -}).call(MatchingBraceOutdent.prototype); - -exports.MatchingBraceOutdent = MatchingBraceOutdent; -}); - -ace.define('ace/mode/behaviour/cstyle', ['require', 'exports', 'module' , 'ace/lib/oop', 'ace/mode/behaviour', 'ace/token_iterator', 'ace/lib/lang'], function(require, exports, module) { - - -var oop = require("../../lib/oop"); -var Behaviour = require("../behaviour").Behaviour; -var TokenIterator = require("../../token_iterator").TokenIterator; -var lang = require("../../lib/lang"); - -var SAFE_INSERT_IN_TOKENS = - ["text", "paren.rparen", "punctuation.operator"]; -var SAFE_INSERT_BEFORE_TOKENS = - ["text", "paren.rparen", "punctuation.operator", "comment"]; - - -var autoInsertedBrackets = 0; -var autoInsertedRow = -1; -var autoInsertedLineEnd = ""; -var maybeInsertedBrackets = 0; -var maybeInsertedRow = -1; -var maybeInsertedLineStart = ""; -var maybeInsertedLineEnd = ""; - -var CstyleBehaviour = function () { - - CstyleBehaviour.isSaneInsertion = function(editor, session) { - var cursor = editor.getCursorPosition(); - var iterator = new TokenIterator(session, cursor.row, cursor.column); - if (!this.$matchTokenType(iterator.getCurrentToken() || "text", SAFE_INSERT_IN_TOKENS)) { - var iterator2 = new TokenIterator(session, cursor.row, cursor.column + 1); - if (!this.$matchTokenType(iterator2.getCurrentToken() || "text", SAFE_INSERT_IN_TOKENS)) - return false; - } - iterator.stepForward(); - return iterator.getCurrentTokenRow() !== cursor.row || - this.$matchTokenType(iterator.getCurrentToken() || "text", SAFE_INSERT_BEFORE_TOKENS); - }; - - CstyleBehaviour.$matchTokenType = function(token, types) { - return types.indexOf(token.type || token) > -1; - }; - - CstyleBehaviour.recordAutoInsert = function(editor, session, bracket) { - var cursor = editor.getCursorPosition(); - var line = session.doc.getLine(cursor.row); - if (!this.isAutoInsertedClosing(cursor, line, autoInsertedLineEnd[0])) - autoInsertedBrackets = 0; - autoInsertedRow = cursor.row; - autoInsertedLineEnd = bracket + line.substr(cursor.column); - autoInsertedBrackets++; - }; - - CstyleBehaviour.recordMaybeInsert = function(editor, session, bracket) { - var cursor = editor.getCursorPosition(); - var line = session.doc.getLine(cursor.row); - if (!this.isMaybeInsertedClosing(cursor, line)) - maybeInsertedBrackets = 0; - maybeInsertedRow = cursor.row; - maybeInsertedLineStart = line.substr(0, cursor.column) + bracket; - maybeInsertedLineEnd = line.substr(cursor.column); - maybeInsertedBrackets++; - }; - - CstyleBehaviour.isAutoInsertedClosing = function(cursor, line, bracket) { - return autoInsertedBrackets > 0 && - cursor.row === autoInsertedRow && - bracket === autoInsertedLineEnd[0] && - line.substr(cursor.column) === autoInsertedLineEnd; - }; - - CstyleBehaviour.isMaybeInsertedClosing = function(cursor, line) { - return maybeInsertedBrackets > 0 && - cursor.row === maybeInsertedRow && - line.substr(cursor.column) === maybeInsertedLineEnd && - line.substr(0, cursor.column) == maybeInsertedLineStart; - }; - - CstyleBehaviour.popAutoInsertedClosing = function() { - autoInsertedLineEnd = autoInsertedLineEnd.substr(1); - autoInsertedBrackets--; - }; - - CstyleBehaviour.clearMaybeInsertedClosing = function() { - maybeInsertedBrackets = 0; - maybeInsertedRow = -1; - }; - - this.add("braces", "insertion", function (state, action, editor, session, text) { - var cursor = editor.getCursorPosition(); - var line = session.doc.getLine(cursor.row); - if (text == '{') { - var selection = editor.getSelectionRange(); - var selected = session.doc.getTextRange(selection); - if (selected !== "" && selected !== "{" && editor.getWrapBehavioursEnabled()) { - return { - text: '{' + selected + '}', - selection: false - }; - } else if (CstyleBehaviour.isSaneInsertion(editor, session)) { - if (/[\]\}\)]/.test(line[cursor.column]) || editor.inMultiSelectMode) { - CstyleBehaviour.recordAutoInsert(editor, session, "}"); - return { - text: '{}', - selection: [1, 1] - }; - } else { - CstyleBehaviour.recordMaybeInsert(editor, session, "{"); - return { - text: '{', - selection: [1, 1] - }; - } - } - } else if (text == '}') { - var rightChar = line.substring(cursor.column, cursor.column + 1); - if (rightChar == '}') { - var matching = session.$findOpeningBracket('}', {column: cursor.column + 1, row: cursor.row}); - if (matching !== null && CstyleBehaviour.isAutoInsertedClosing(cursor, line, text)) { - CstyleBehaviour.popAutoInsertedClosing(); - return { - text: '', - selection: [1, 1] - }; - } - } - } else if (text == "\n" || text == "\r\n") { - var closing = ""; - if (CstyleBehaviour.isMaybeInsertedClosing(cursor, line)) { - closing = lang.stringRepeat("}", maybeInsertedBrackets); - CstyleBehaviour.clearMaybeInsertedClosing(); - } - var rightChar = line.substring(cursor.column, cursor.column + 1); - if (rightChar === '}') { - var openBracePos = session.findMatchingBracket({row: cursor.row, column: cursor.column+1}, '}'); - if (!openBracePos) - return null; - var next_indent = this.$getIndent(session.getLine(openBracePos.row)); - } else if (closing) { - var next_indent = this.$getIndent(line); - } else { - return; - } - var indent = next_indent + session.getTabString(); - - return { - text: '\n' + indent + '\n' + next_indent + closing, - selection: [1, indent.length, 1, indent.length] - }; - } else { - CstyleBehaviour.clearMaybeInsertedClosing(); - } - }); - - this.add("braces", "deletion", function (state, action, editor, session, range) { - var selected = session.doc.getTextRange(range); - if (!range.isMultiLine() && selected == '{') { - var line = session.doc.getLine(range.start.row); - var rightChar = line.substring(range.end.column, range.end.column + 1); - if (rightChar == '}') { - range.end.column++; - return range; - } else { - maybeInsertedBrackets--; - } - } - }); - - this.add("parens", "insertion", function (state, action, editor, session, text) { - if (text == '(') { - var selection = editor.getSelectionRange(); - var selected = session.doc.getTextRange(selection); - if (selected !== "" && editor.getWrapBehavioursEnabled()) { - return { - text: '(' + selected + ')', - selection: false - }; - } else if (CstyleBehaviour.isSaneInsertion(editor, session)) { - CstyleBehaviour.recordAutoInsert(editor, session, ")"); - return { - text: '()', - selection: [1, 1] - }; - } - } else if (text == ')') { - var cursor = editor.getCursorPosition(); - var line = session.doc.getLine(cursor.row); - var rightChar = line.substring(cursor.column, cursor.column + 1); - if (rightChar == ')') { - var matching = session.$findOpeningBracket(')', {column: cursor.column + 1, row: cursor.row}); - if (matching !== null && CstyleBehaviour.isAutoInsertedClosing(cursor, line, text)) { - CstyleBehaviour.popAutoInsertedClosing(); - return { - text: '', - selection: [1, 1] - }; - } - } - } - }); - - this.add("parens", "deletion", function (state, action, editor, session, range) { - var selected = session.doc.getTextRange(range); - if (!range.isMultiLine() && selected == '(') { - var line = session.doc.getLine(range.start.row); - var rightChar = line.substring(range.start.column + 1, range.start.column + 2); - if (rightChar == ')') { - range.end.column++; - return range; - } - } - }); - - this.add("brackets", "insertion", function (state, action, editor, session, text) { - if (text == '[') { - var selection = editor.getSelectionRange(); - var selected = session.doc.getTextRange(selection); - if (selected !== "" && editor.getWrapBehavioursEnabled()) { - return { - text: '[' + selected + ']', - selection: false - }; - } else if (CstyleBehaviour.isSaneInsertion(editor, session)) { - CstyleBehaviour.recordAutoInsert(editor, session, "]"); - return { - text: '[]', - selection: [1, 1] - }; - } - } else if (text == ']') { - var cursor = editor.getCursorPosition(); - var line = session.doc.getLine(cursor.row); - var rightChar = line.substring(cursor.column, cursor.column + 1); - if (rightChar == ']') { - var matching = session.$findOpeningBracket(']', {column: cursor.column + 1, row: cursor.row}); - if (matching !== null && CstyleBehaviour.isAutoInsertedClosing(cursor, line, text)) { - CstyleBehaviour.popAutoInsertedClosing(); - return { - text: '', - selection: [1, 1] - }; - } - } - } - }); - - this.add("brackets", "deletion", function (state, action, editor, session, range) { - var selected = session.doc.getTextRange(range); - if (!range.isMultiLine() && selected == '[') { - var line = session.doc.getLine(range.start.row); - var rightChar = line.substring(range.start.column + 1, range.start.column + 2); - if (rightChar == ']') { - range.end.column++; - return range; - } - } - }); - - this.add("string_dquotes", "insertion", function (state, action, editor, session, text) { - if (text == '"' || text == "'") { - var quote = text; - var selection = editor.getSelectionRange(); - var selected = session.doc.getTextRange(selection); - if (selected !== "" && selected !== "'" && selected != '"' && editor.getWrapBehavioursEnabled()) { - return { - text: quote + selected + quote, - selection: false - }; - } else { - var cursor = editor.getCursorPosition(); - var line = session.doc.getLine(cursor.row); - var leftChar = line.substring(cursor.column-1, cursor.column); - if (leftChar == '\\') { - return null; - } - var tokens = session.getTokens(selection.start.row); - var col = 0, token; - var quotepos = -1; // Track whether we're inside an open quote. - - for (var x = 0; x < tokens.length; x++) { - token = tokens[x]; - if (token.type == "string") { - quotepos = -1; - } else if (quotepos < 0) { - quotepos = token.value.indexOf(quote); - } - if ((token.value.length + col) > selection.start.column) { - break; - } - col += tokens[x].value.length; - } - if (!token || (quotepos < 0 && token.type !== "comment" && (token.type !== "string" || ((selection.start.column !== token.value.length+col-1) && token.value.lastIndexOf(quote) === token.value.length-1)))) { - if (!CstyleBehaviour.isSaneInsertion(editor, session)) - return; - return { - text: quote + quote, - selection: [1,1] - }; - } else if (token && token.type === "string") { - var rightChar = line.substring(cursor.column, cursor.column + 1); - if (rightChar == quote) { - return { - text: '', - selection: [1, 1] - }; - } - } - } - } - }); - - this.add("string_dquotes", "deletion", function (state, action, editor, session, range) { - var selected = session.doc.getTextRange(range); - if (!range.isMultiLine() && (selected == '"' || selected == "'")) { - var line = session.doc.getLine(range.start.row); - var rightChar = line.substring(range.start.column + 1, range.start.column + 2); - if (rightChar == selected) { - range.end.column++; - return range; - } - } - }); - -}; - -oop.inherits(CstyleBehaviour, Behaviour); - -exports.CstyleBehaviour = CstyleBehaviour; -}); - -ace.define('ace/mode/folding/cstyle', ['require', 'exports', 'module' , 'ace/lib/oop', 'ace/range', 'ace/mode/folding/fold_mode'], function(require, exports, module) { - - -var oop = require("../../lib/oop"); -var Range = require("../../range").Range; -var BaseFoldMode = require("./fold_mode").FoldMode; - -var FoldMode = exports.FoldMode = function(commentRegex) { - if (commentRegex) { - this.foldingStartMarker = new RegExp( - this.foldingStartMarker.source.replace(/\|[^|]*?$/, "|" + commentRegex.start) - ); - this.foldingStopMarker = new RegExp( - this.foldingStopMarker.source.replace(/\|[^|]*?$/, "|" + commentRegex.end) - ); - } -}; -oop.inherits(FoldMode, BaseFoldMode); - -(function() { - - this.foldingStartMarker = /(\{|\[)[^\}\]]*$|^\s*(\/\*)/; - this.foldingStopMarker = /^[^\[\{]*(\}|\])|^[\s\*]*(\*\/)/; - - this.getFoldWidgetRange = function(session, foldStyle, row, forceMultiline) { - var line = session.getLine(row); - var match = line.match(this.foldingStartMarker); - if (match) { - var i = match.index; - - if (match[1]) - return this.openingBracketBlock(session, match[1], row, i); - - var range = session.getCommentFoldRange(row, i + match[0].length, 1); - - if (range && !range.isMultiLine()) { - if (forceMultiline) { - range = this.getSectionRange(session, row); - } else if (foldStyle != "all") - range = null; - } - - return range; - } - - if (foldStyle === "markbegin") - return; - - var match = line.match(this.foldingStopMarker); - if (match) { - var i = match.index + match[0].length; - - if (match[1]) - return this.closingBracketBlock(session, match[1], row, i); - - return session.getCommentFoldRange(row, i, -1); - } - }; - - this.getSectionRange = function(session, row) { - var line = session.getLine(row); - var startIndent = line.search(/\S/); - var startRow = row; - var startColumn = line.length; - row = row + 1; - var endRow = row; - var maxRow = session.getLength(); - while (++row < maxRow) { - line = session.getLine(row); - var indent = line.search(/\S/); - if (indent === -1) - continue; - if (startIndent > indent) - break; - var subRange = this.getFoldWidgetRange(session, "all", row); - - if (subRange) { - if (subRange.start.row <= startRow) { - break; - } else if (subRange.isMultiLine()) { - row = subRange.end.row; - } else if (startIndent == indent) { - break; - } - } - endRow = row; - } - - return new Range(startRow, startColumn, endRow, session.getLine(endRow).length); - }; - -}).call(FoldMode.prototype); - -}); - -ace.define('ace/mode/css', ['require', 'exports', 'module' , 'ace/lib/oop', 'ace/mode/text', 'ace/tokenizer', 'ace/mode/css_highlight_rules', 'ace/mode/matching_brace_outdent', 'ace/worker/worker_client', 'ace/mode/behaviour/css', 'ace/mode/folding/cstyle'], function(require, exports, module) { - - -var oop = require("../lib/oop"); -var TextMode = require("./text").Mode; -var Tokenizer = require("../tokenizer").Tokenizer; -var CssHighlightRules = require("./css_highlight_rules").CssHighlightRules; -var MatchingBraceOutdent = require("./matching_brace_outdent").MatchingBraceOutdent; -var WorkerClient = require("../worker/worker_client").WorkerClient; -var CssBehaviour = require("./behaviour/css").CssBehaviour; -var CStyleFoldMode = require("./folding/cstyle").FoldMode; - -var Mode = function() { - this.HighlightRules = CssHighlightRules; - this.$outdent = new MatchingBraceOutdent(); - this.$behaviour = new CssBehaviour(); - this.foldingRules = new CStyleFoldMode(); -}; -oop.inherits(Mode, TextMode); - -(function() { - - this.foldingRules = "cStyle"; - this.blockComment = {start: "/*", end: "*/"}; - - this.getNextLineIndent = function(state, line, tab) { - var indent = this.$getIndent(line); - var tokens = this.getTokenizer().getLineTokens(line, state).tokens; - if (tokens.length && tokens[tokens.length-1].type == "comment") { - return indent; - } - - var match = line.match(/^.*\{\s*$/); - if (match) { - indent += tab; - } - - return indent; - }; - - this.checkOutdent = function(state, line, input) { - return this.$outdent.checkOutdent(line, input); - }; - - this.autoOutdent = function(state, doc, row) { - this.$outdent.autoOutdent(doc, row); - }; - - this.createWorker = function(session) { - var worker = new WorkerClient(["ace"], "ace/mode/css_worker", "Worker"); - worker.attachToDocument(session.getDocument()); - - worker.on("csslint", function(e) { - session.setAnnotations(e.data); - }); - - worker.on("terminate", function() { - session.clearAnnotations(); - }); - - return worker; - }; - - this.$id = "ace/mode/css"; -}).call(Mode.prototype); - -exports.Mode = Mode; - -}); - -ace.define('ace/mode/css_highlight_rules', ['require', 'exports', 'module' , 'ace/lib/oop', 'ace/lib/lang', 'ace/mode/text_highlight_rules'], function(require, exports, module) { - - -var oop = require("../lib/oop"); -var lang = require("../lib/lang"); -var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; -var supportType = exports.supportType = "animation-fill-mode|alignment-adjust|alignment-baseline|animation-delay|animation-direction|animation-duration|animation-iteration-count|animation-name|animation-play-state|animation-timing-function|animation|appearance|azimuth|backface-visibility|background-attachment|background-break|background-clip|background-color|background-image|background-origin|background-position|background-repeat|background-size|background|baseline-shift|binding|bleed|bookmark-label|bookmark-level|bookmark-state|bookmark-target|border-bottom|border-bottom-color|border-bottom-left-radius|border-bottom-right-radius|border-bottom-style|border-bottom-width|border-collapse|border-color|border-image|border-image-outset|border-image-repeat|border-image-slice|border-image-source|border-image-width|border-left|border-left-color|border-left-style|border-left-width|border-radius|border-right|border-right-color|border-right-style|border-right-width|border-spacing|border-style|border-top|border-top-color|border-top-left-radius|border-top-right-radius|border-top-style|border-top-width|border-width|border|bottom|box-align|box-decoration-break|box-direction|box-flex-group|box-flex|box-lines|box-ordinal-group|box-orient|box-pack|box-shadow|box-sizing|break-after|break-before|break-inside|caption-side|clear|clip|color-profile|color|column-count|column-fill|column-gap|column-rule|column-rule-color|column-rule-style|column-rule-width|column-span|column-width|columns|content|counter-increment|counter-reset|crop|cue-after|cue-before|cue|cursor|direction|display|dominant-baseline|drop-initial-after-adjust|drop-initial-after-align|drop-initial-before-adjust|drop-initial-before-align|drop-initial-size|drop-initial-value|elevation|empty-cells|fit|fit-position|float-offset|float|font-family|font-size|font-size-adjust|font-stretch|font-style|font-variant|font-weight|font|grid-columns|grid-rows|hanging-punctuation|height|hyphenate-after|hyphenate-before|hyphenate-character|hyphenate-lines|hyphenate-resource|hyphens|icon|image-orientation|image-rendering|image-resolution|inline-box-align|left|letter-spacing|line-height|line-stacking-ruby|line-stacking-shift|line-stacking-strategy|line-stacking|list-style-image|list-style-position|list-style-type|list-style|margin-bottom|margin-left|margin-right|margin-top|margin|mark-after|mark-before|mark|marks|marquee-direction|marquee-play-count|marquee-speed|marquee-style|max-height|max-width|min-height|min-width|move-to|nav-down|nav-index|nav-left|nav-right|nav-up|opacity|orphans|outline-color|outline-offset|outline-style|outline-width|outline|overflow-style|overflow-x|overflow-y|overflow|padding-bottom|padding-left|padding-right|padding-top|padding|page-break-after|page-break-before|page-break-inside|page-policy|page|pause-after|pause-before|pause|perspective-origin|perspective|phonemes|pitch-range|pitch|play-during|pointer-events|position|presentation-level|punctuation-trim|quotes|rendering-intent|resize|rest-after|rest-before|rest|richness|right|rotation-point|rotation|ruby-align|ruby-overhang|ruby-position|ruby-span|size|speak-header|speak-numeral|speak-punctuation|speak|speech-rate|stress|string-set|table-layout|target-name|target-new|target-position|target|text-align-last|text-align|text-decoration|text-emphasis|text-height|text-indent|text-justify|text-outline|text-shadow|text-transform|text-wrap|top|transform-origin|transform-style|transform|transition-delay|transition-duration|transition-property|transition-timing-function|transition|unicode-bidi|vertical-align|visibility|voice-balance|voice-duration|voice-family|voice-pitch-range|voice-pitch|voice-rate|voice-stress|voice-volume|volume|white-space-collapse|white-space|widows|width|word-break|word-spacing|word-wrap|z-index"; -var supportFunction = exports.supportFunction = "rgb|rgba|url|attr|counter|counters"; -var supportConstant = exports.supportConstant = "absolute|after-edge|after|all-scroll|all|alphabetic|always|antialiased|armenian|auto|avoid-column|avoid-page|avoid|balance|baseline|before-edge|before|below|bidi-override|block-line-height|block|bold|bolder|border-box|both|bottom|box|break-all|break-word|capitalize|caps-height|caption|center|central|char|circle|cjk-ideographic|clone|close-quote|col-resize|collapse|column|consider-shifts|contain|content-box|cover|crosshair|cubic-bezier|dashed|decimal-leading-zero|decimal|default|disabled|disc|disregard-shifts|distribute-all-lines|distribute-letter|distribute-space|distribute|dotted|double|e-resize|ease-in|ease-in-out|ease-out|ease|ellipsis|end|exclude-ruby|fill|fixed|georgian|glyphs|grid-height|groove|hand|hanging|hebrew|help|hidden|hiragana-iroha|hiragana|horizontal|icon|ideograph-alpha|ideograph-numeric|ideograph-parenthesis|ideograph-space|ideographic|inactive|include-ruby|inherit|initial|inline-block|inline-box|inline-line-height|inline-table|inline|inset|inside|inter-ideograph|inter-word|invert|italic|justify|katakana-iroha|katakana|keep-all|last|left|lighter|line-edge|line-through|line|linear|list-item|local|loose|lower-alpha|lower-greek|lower-latin|lower-roman|lowercase|lr-tb|ltr|mathematical|max-height|max-size|medium|menu|message-box|middle|move|n-resize|ne-resize|newspaper|no-change|no-close-quote|no-drop|no-open-quote|no-repeat|none|normal|not-allowed|nowrap|nw-resize|oblique|open-quote|outset|outside|overline|padding-box|page|pointer|pre-line|pre-wrap|pre|preserve-3d|progress|relative|repeat-x|repeat-y|repeat|replaced|reset-size|ridge|right|round|row-resize|rtl|s-resize|scroll|se-resize|separate|slice|small-caps|small-caption|solid|space|square|start|static|status-bar|step-end|step-start|steps|stretch|strict|sub|super|sw-resize|table-caption|table-cell|table-column-group|table-column|table-footer-group|table-header-group|table-row-group|table-row|table|tb-rl|text-after-edge|text-before-edge|text-bottom|text-size|text-top|text|thick|thin|transparent|underline|upper-alpha|upper-latin|upper-roman|uppercase|use-script|vertical-ideographic|vertical-text|visible|w-resize|wait|whitespace|z-index|zero"; -var supportConstantColor = exports.supportConstantColor = "aqua|black|blue|fuchsia|gray|green|lime|maroon|navy|olive|orange|purple|red|silver|teal|white|yellow"; -var supportConstantFonts = exports.supportConstantFonts = "arial|century|comic|courier|garamond|georgia|helvetica|impact|lucida|symbol|system|tahoma|times|trebuchet|utopia|verdana|webdings|sans-serif|serif|monospace"; - -var numRe = exports.numRe = "\\-?(?:(?:[0-9]+)|(?:[0-9]*\\.[0-9]+))"; -var pseudoElements = exports.pseudoElements = "(\\:+)\\b(after|before|first-letter|first-line|moz-selection|selection)\\b"; -var pseudoClasses = exports.pseudoClasses = "(:)\\b(active|checked|disabled|empty|enabled|first-child|first-of-type|focus|hover|indeterminate|invalid|last-child|last-of-type|link|not|nth-child|nth-last-child|nth-last-of-type|nth-of-type|only-child|only-of-type|required|root|target|valid|visited)\\b"; - -var CssHighlightRules = function() { - - var keywordMapper = this.createKeywordMapper({ - "support.function": supportFunction, - "support.constant": supportConstant, - "support.type": supportType, - "support.constant.color": supportConstantColor, - "support.constant.fonts": supportConstantFonts - }, "text", true); - - this.$rules = { - "start" : [{ - token : "comment", // multi line comment - regex : "\\/\\*", - push : "comment" - }, { - token: "paren.lparen", - regex: "\\{", - push: "ruleset" - }, { - token: "string", - regex: "@.*?{", - push: "media" - }, { - token: "keyword", - regex: "#[a-z0-9-_]+" - }, { - token: "variable", - regex: "\\.[a-z0-9-_]+" - }, { - token: "string", - regex: ":[a-z0-9-_]+" - }, { - token: "constant", - regex: "[a-z0-9-_]+" - }, { - caseInsensitive: true - }], - - "media" : [{ - token : "comment", // multi line comment - regex : "\\/\\*", - push : "comment" - }, { - token: "paren.lparen", - regex: "\\{", - push: "ruleset" - }, { - token: "string", - regex: "\\}", - next: "pop" - }, { - token: "keyword", - regex: "#[a-z0-9-_]+" - }, { - token: "variable", - regex: "\\.[a-z0-9-_]+" - }, { - token: "string", - regex: ":[a-z0-9-_]+" - }, { - token: "constant", - regex: "[a-z0-9-_]+" - }, { - caseInsensitive: true - }], - - "comment" : [{ - token : "comment", - regex : "\\*\\/", - next : "pop" - }, { - defaultToken : "comment" - }], - - "ruleset" : [ - { - token : "paren.rparen", - regex : "\\}", - next: "pop" - }, { - token : "comment", // multi line comment - regex : "\\/\\*", - push : "comment" - }, { - token : "string", // single line - regex : '["](?:(?:\\\\.)|(?:[^"\\\\]))*?["]' - }, { - token : "string", // single line - regex : "['](?:(?:\\\\.)|(?:[^'\\\\]))*?[']" - }, { - token : ["constant.numeric", "keyword"], - regex : "(" + numRe + ")(ch|cm|deg|em|ex|fr|gd|grad|Hz|in|kHz|mm|ms|pc|pt|px|rad|rem|s|turn|vh|vm|vw|%)" - }, { - token : "constant.numeric", - regex : numRe - }, { - token : "constant.numeric", // hex6 color - regex : "#[a-f0-9]{6}" - }, { - token : "constant.numeric", // hex3 color - regex : "#[a-f0-9]{3}" - }, { - token : ["punctuation", "entity.other.attribute-name.pseudo-element.css"], - regex : pseudoElements - }, { - token : ["punctuation", "entity.other.attribute-name.pseudo-class.css"], - regex : pseudoClasses - }, { - token : ["support.function", "string", "support.function"], - regex : "(url\\()(.*)(\\))" - }, { - token : keywordMapper, - regex : "\\-?[a-zA-Z_][a-zA-Z0-9_\\-]*" - }, { - caseInsensitive: true - }] - }; - - this.normalizeRules(); -}; - -oop.inherits(CssHighlightRules, TextHighlightRules); - -exports.CssHighlightRules = CssHighlightRules; - -}); - -ace.define('ace/mode/behaviour/css', ['require', 'exports', 'module' , 'ace/lib/oop', 'ace/mode/behaviour', 'ace/mode/behaviour/cstyle', 'ace/token_iterator'], function(require, exports, module) { - - -var oop = require("../../lib/oop"); -var Behaviour = require("../behaviour").Behaviour; -var CstyleBehaviour = require("./cstyle").CstyleBehaviour; -var TokenIterator = require("../../token_iterator").TokenIterator; - -var CssBehaviour = function () { - - this.inherit(CstyleBehaviour); - - this.add("colon", "insertion", function (state, action, editor, session, text) { - if (text === ':') { - var cursor = editor.getCursorPosition(); - var iterator = new TokenIterator(session, cursor.row, cursor.column); - var token = iterator.getCurrentToken(); - if (token && token.value.match(/\s+/)) { - token = iterator.stepBackward(); - } - if (token && token.type === 'support.type') { - var line = session.doc.getLine(cursor.row); - var rightChar = line.substring(cursor.column, cursor.column + 1); - if (rightChar === ':') { - return { - text: '', - selection: [1, 1] - } - } - if (!line.substring(cursor.column).match(/^\s*;/)) { - return { - text: ':;', - selection: [1, 1] - } - } - } - } - }); - - this.add("colon", "deletion", function (state, action, editor, session, range) { - var selected = session.doc.getTextRange(range); - if (!range.isMultiLine() && selected === ':') { - var cursor = editor.getCursorPosition(); - var iterator = new TokenIterator(session, cursor.row, cursor.column); - var token = iterator.getCurrentToken(); - if (token && token.value.match(/\s+/)) { - token = iterator.stepBackward(); - } - if (token && token.type === 'support.type') { - var line = session.doc.getLine(range.start.row); - var rightChar = line.substring(range.end.column, range.end.column + 1); - if (rightChar === ';') { - range.end.column ++; - return range; - } - } - } - }); - - this.add("semicolon", "insertion", function (state, action, editor, session, text) { - if (text === ';') { - var cursor = editor.getCursorPosition(); - var line = session.doc.getLine(cursor.row); - var rightChar = line.substring(cursor.column, cursor.column + 1); - if (rightChar === ';') { - return { - text: '', - selection: [1, 1] - } - } - } - }); - -} -oop.inherits(CssBehaviour, CstyleBehaviour); - -exports.CssBehaviour = CssBehaviour; -}); - -ace.define('ace/mode/html_highlight_rules', ['require', 'exports', 'module' , 'ace/lib/oop', 'ace/lib/lang', 'ace/mode/css_highlight_rules', 'ace/mode/javascript_highlight_rules', 'ace/mode/xml_highlight_rules'], function(require, exports, module) { - - -var oop = require("../lib/oop"); -var lang = require("../lib/lang"); -var CssHighlightRules = require("./css_highlight_rules").CssHighlightRules; -var JavaScriptHighlightRules = require("./javascript_highlight_rules").JavaScriptHighlightRules; -var XmlHighlightRules = require("./xml_highlight_rules").XmlHighlightRules; - -var tagMap = lang.createMap({ - a : 'anchor', - button : 'form', - form : 'form', - img : 'image', - input : 'form', - label : 'form', - option : 'form', - script : 'script', - select : 'form', - textarea : 'form', - style : 'style', - table : 'table', - tbody : 'table', - td : 'table', - tfoot : 'table', - th : 'table', - tr : 'table' -}); - -var HtmlHighlightRules = function() { - XmlHighlightRules.call(this); - - this.addRules({ - attributes: [{ - include : "space" - }, { - token : "entity.other.attribute-name", - regex : "[-_a-zA-Z0-9:]+" - }, { - token : "keyword.operator.separator", - regex : "=", - push : [{ - include: "space" - }, { - token : "string", - regex : "[^<>='\"`\\s]+", - next : "pop" - }, { - token : "empty", - regex : "", - next : "pop" - }] - }, { - include : "string" - }], - tag: [{ - token : function(start, tag) { - var group = tagMap[tag]; - return ["meta.tag.punctuation.begin", - "meta.tag.name" + (group ? "." + group : "")]; - }, - regex : "(<)([-_a-zA-Z0-9:]+)", - next: "start_tag_stuff" - }, { - token : function(start, tag) { - var group = tagMap[tag]; - return ["meta.tag.punctuation.begin", - "meta.tag.name" + (group ? "." + group : "")]; - }, - regex : "(", next : "start"} - ], - end_tag_stuff: [ - {include : "space"}, - {token : "meta.tag.punctuation.end", regex : ">", next : "start"} - ] - }); - - this.embedTagRules(CssHighlightRules, "css-", "style"); - this.embedTagRules(JavaScriptHighlightRules, "js-", "script"); - - if (this.constructor === HtmlHighlightRules) - this.normalizeRules(); -}; - -oop.inherits(HtmlHighlightRules, XmlHighlightRules); - -exports.HtmlHighlightRules = HtmlHighlightRules; -}); - -ace.define('ace/mode/xml_highlight_rules', ['require', 'exports', 'module' , 'ace/lib/oop', 'ace/mode/xml_util', 'ace/mode/text_highlight_rules'], function(require, exports, module) { - - -var oop = require("../lib/oop"); -var xmlUtil = require("./xml_util"); -var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; - -var XmlHighlightRules = function(normalize) { - this.$rules = { - start : [ - {token : "punctuation.string.begin", regex : "<\\!\\[CDATA\\[", next : "cdata"}, - { - token : ["punctuation.instruction.begin", "keyword.instruction"], - regex : "(<\\?)(xml)(?=[\\s])", next : "xml_declaration" - }, - { - token : ["punctuation.instruction.begin", "keyword.instruction"], - regex : "(<\\?)([-_a-zA-Z0-9]+)", next : "instruction" - }, - {token : "comment", regex : "<\\!--", next : "comment"}, - { - token : ["punctuation.doctype.begin", "meta.tag.doctype"], - regex : "(<\\!)(DOCTYPE)(?=[\\s])", next : "doctype" - }, - {include : "tag"}, - {include : "reference"} - ], - - xml_declaration : [ - {include : "attributes"}, - {include : "instruction"} - ], - - instruction : [ - {token : "punctuation.instruction.end", regex : "\\?>", next : "start"} - ], - - doctype : [ - {include : "space"}, - {include : "string"}, - {token : "punctuation.doctype.end", regex : ">", next : "start"}, - {token : "xml-pe", regex : "[-_a-zA-Z0-9:]+"}, - {token : "punctuation.begin", regex : "\\[", push : "declarations"} - ], - - declarations : [{ - token : "text", - regex : "\\s+" - }, { - token: "punctuation.end", - regex: "]", - next: "pop" - }, { - token : ["punctuation.begin", "keyword"], - regex : "(<\\!)([-_a-zA-Z0-9]+)", - push : [{ - token : "text", - regex : "\\s+" - }, - { - token : "punctuation.end", - regex : ">", - next : "pop" - }, - {include : "string"}] - }], - - cdata : [ - {token : "string.end", regex : "\\]\\]>", next : "start"}, - {token : "text", regex : "\\s+"}, - {token : "text", regex : "(?:[^\\]]|\\](?!\\]>))+"} - ], - - comment : [ - {token : "comment", regex : "-->", next : "start"}, - {defaultToken : "comment"} - ], - - tag : [{ - token : ["meta.tag.punctuation.begin", "meta.tag.name"], - regex : "(<)((?:[-_a-zA-Z0-9]+:)?[-_a-zA-Z0-9]+)", - next: [ - {include : "attributes"}, - {token : "meta.tag.punctuation.end", regex : "/?>", next : "start"} - ] - }, { - token : ["meta.tag.punctuation.begin", "meta.tag.name"], - regex : "(", next : "start"} - ] - }], - - space : [ - {token : "text", regex : "\\s+"} - ], - - reference : [{ - token : "constant.language.escape", - regex : "(?:&#[0-9]+;)|(?:&#x[0-9a-fA-F]+;)|(?:&[a-zA-Z0-9_:\\.-]+;)" - }, { - token : "text", regex : "&" - }], - - string: [{ - token : "string", - regex : "'", - push : "qstring_inner" - }, { - token : "string", - regex : '"', - push : "qqstring_inner" - }], - - qstring_inner: [ - {token : "string", regex: "'", next: "pop"}, - {include : "reference"}, - {defaultToken : "string"} - ], - - qqstring_inner: [ - {token : "string", regex: '"', next: "pop"}, - {include : "reference"}, - {defaultToken : "string"} - ], - - attributes: [{ - token : "entity.other.attribute-name", - regex : "(?:[-_a-zA-Z0-9]+:)?[-_a-zA-Z0-9]+" - }, { - token : "keyword.operator.separator", - regex : "=" - }, { - include : "space" - }, { - include : "string" - }] - }; - - if (this.constructor === XmlHighlightRules) - this.normalizeRules(); -}; - - -(function() { - - this.embedTagRules = function(HighlightRules, prefix, tag){ - this.$rules.tag.unshift({ - token : ["meta.tag.punctuation.begin", "meta.tag.name." + tag], - regex : "(<)(" + tag + ")", - next: [ - {include : "space"}, - {include : "attributes"}, - {token : "meta.tag.punctuation.end", regex : "/?>", next : prefix + "start"} - ] - }); - - this.$rules[tag + "-end"] = [ - {include : "space"}, - {token : "meta.tag.punctuation.end", regex : ">", next: "start", - onMatch : function(value, currentState, stack) { - stack.splice(0); - return this.token; - }} - ] - - this.embedRules(HighlightRules, prefix, [{ - token: ["meta.tag.punctuation.begin", "meta.tag.name." + tag], - regex : "(" - }]); - }; - -}).call(TextHighlightRules.prototype); - -oop.inherits(XmlHighlightRules, TextHighlightRules); - -exports.XmlHighlightRules = XmlHighlightRules; -}); - -ace.define('ace/mode/xml_util', ['require', 'exports', 'module' ], function(require, exports, module) { - - -function string(state) { - return [{ - token : "string", - regex : '"', - next : state + "_qqstring" - }, { - token : "string", - regex : "'", - next : state + "_qstring" - }]; -} - -function multiLineString(quote, state) { - return [ - {token : "string", regex : quote, next : state}, - { - token : "constant.language.escape", - regex : "(?:&#[0-9]+;)|(?:&#x[0-9a-fA-F]+;)|(?:&[a-zA-Z0-9_:\\.-]+;)" - }, - {defaultToken : "string"} - ]; -} - -exports.tag = function(states, name, nextState, tagMap) { - states[name] = [{ - token : "text", - regex : "\\s+" - }, { - - token : !tagMap ? "meta.tag.tag-name" : function(value) { - if (tagMap[value]) - return "meta.tag.tag-name." + tagMap[value]; - else - return "meta.tag.tag-name"; - }, - regex : "[-_a-zA-Z0-9:]+", - next : name + "_embed_attribute_list" - }, { - token: "empty", - regex: "", - next : name + "_embed_attribute_list" - }]; - - states[name + "_qstring"] = multiLineString("'", name + "_embed_attribute_list"); - states[name + "_qqstring"] = multiLineString("\"", name + "_embed_attribute_list"); - - states[name + "_embed_attribute_list"] = [{ - token : "meta.tag.r", - regex : "/?>", - next : nextState - }, { - token : "keyword.operator", - regex : "=" - }, { - token : "entity.other.attribute-name", - regex : "[-_a-zA-Z0-9:]+" - }, { - token : "constant.numeric", // float - regex : "[+-]?\\d+(?:(?:\\.\\d*)?(?:[eE][+-]?\\d+)?)?\\b" - }, { - token : "text", - regex : "\\s+" - }].concat(string(name)); -}; - -}); - -ace.define('ace/mode/behaviour/html', ['require', 'exports', 'module' , 'ace/lib/oop', 'ace/mode/behaviour/xml', 'ace/mode/behaviour/cstyle', 'ace/token_iterator'], function(require, exports, module) { - - -var oop = require("../../lib/oop"); -var XmlBehaviour = require("../behaviour/xml").XmlBehaviour; -var CstyleBehaviour = require("./cstyle").CstyleBehaviour; -var TokenIterator = require("../../token_iterator").TokenIterator; -var voidElements = ['area', 'base', 'br', 'col', 'command', 'embed', 'hr', 'img', 'input', 'keygen', 'link', 'meta', 'param', 'source', 'track', 'wbr']; - -function hasType(token, type) { - var tokenTypes = token.type.split('.'); - return type.split('.').every(function(type){ - return (tokenTypes.indexOf(type) !== -1); - }); - return hasType; -} - -var HtmlBehaviour = function () { - - this.inherit(XmlBehaviour); // Get xml behaviour - - this.add("autoclosing", "insertion", function (state, action, editor, session, text) { - if (text == '>') { - var position = editor.getCursorPosition(); - var iterator = new TokenIterator(session, position.row, position.column); - var token = iterator.getCurrentToken(); - - if (token && hasType(token, 'string') && iterator.getCurrentTokenColumn() + token.value.length > position.column) - return; - var atCursor = false; - if (!token || !hasType(token, 'meta.tag') && !(hasType(token, 'text') && token.value.match('/'))){ - do { - token = iterator.stepBackward(); - } while (token && (hasType(token, 'string') || hasType(token, 'keyword.operator') || hasType(token, 'entity.attribute-name') || hasType(token, 'text'))); - } else { - atCursor = true; - } - if (!token || !hasType(token, 'meta.tag.name') || iterator.stepBackward().value.match('/')) { - return; - } - var element = token.value; - if (atCursor){ - var element = element.substring(0, position.column - token.start); - } - if (voidElements.indexOf(element) !== -1){ - return; - } - return { - text: '>' + '', - selection: [1, 1] - } - } - }); -} -oop.inherits(HtmlBehaviour, XmlBehaviour); - -exports.HtmlBehaviour = HtmlBehaviour; -}); - -ace.define('ace/mode/behaviour/xml', ['require', 'exports', 'module' , 'ace/lib/oop', 'ace/mode/behaviour', 'ace/mode/behaviour/cstyle', 'ace/token_iterator'], function(require, exports, module) { - - -var oop = require("../../lib/oop"); -var Behaviour = require("../behaviour").Behaviour; -var CstyleBehaviour = require("./cstyle").CstyleBehaviour; -var TokenIterator = require("../../token_iterator").TokenIterator; - -function hasType(token, type) { - var tokenTypes = token.type.split('.'); - return type.split('.').every(function(type){ - return (tokenTypes.indexOf(type) !== -1); - }); - return hasType; -} - -var XmlBehaviour = function () { - - this.inherit(CstyleBehaviour, ["string_dquotes"]); // Get string behaviour - - this.add("autoclosing", "insertion", function (state, action, editor, session, text) { - if (text == '>') { - var position = editor.getCursorPosition(); - var iterator = new TokenIterator(session, position.row, position.column); - var token = iterator.getCurrentToken(); - - if (token && hasType(token, 'string') && iterator.getCurrentTokenColumn() + token.value.length > position.column) - return; - var atCursor = false; - if (!token || !hasType(token, 'meta.tag') && !(hasType(token, 'text') && token.value.match('/'))){ - do { - token = iterator.stepBackward(); - } while (token && (hasType(token, 'string') || hasType(token, 'keyword.operator') || hasType(token, 'entity.attribute-name') || hasType(token, 'text'))); - } else { - atCursor = true; - } - if (!token || !hasType(token, 'meta.tag.name') || iterator.stepBackward().value.match('/')) { - return; - } - var tag = token.value; - if (atCursor){ - var tag = tag.substring(0, position.column - token.start); - } - - return { - text: '>' + '', - selection: [1, 1] - } - } - }); - - this.add('autoindent', 'insertion', function (state, action, editor, session, text) { - if (text == "\n") { - var cursor = editor.getCursorPosition(); - var line = session.getLine(cursor.row); - var rightChars = line.substring(cursor.column, cursor.column + 2); - if (rightChars == '?)/; - this._parseTag = function(tag) { - - var match = tag.match(this.tagRe); - var column = 0; - - return { - value: tag, - match: match ? match[2] : "", - closing: match ? !!match[3] : false, - selfClosing: match ? !!match[5] || match[2] == "/>" : false, - tagName: match ? match[4] : "", - column: match[1] ? column + match[1].length : column - }; - }; - this._readTagForward = function(iterator) { - var token = iterator.getCurrentToken(); - if (!token) - return null; - - var value = ""; - var start; - - do { - if (token.type.lastIndexOf("meta.tag", 0) === 0) { - if (!start) { - var start = { - row: iterator.getCurrentTokenRow(), - column: iterator.getCurrentTokenColumn() - }; - } - value += token.value; - if (value.indexOf(">") !== -1) { - var tag = this._parseTag(value); - tag.start = start; - tag.end = { - row: iterator.getCurrentTokenRow(), - column: iterator.getCurrentTokenColumn() + token.value.length - }; - iterator.stepForward(); - return tag; - } - } - } while(token = iterator.stepForward()); - - return null; - }; - - this._readTagBackward = function(iterator) { - var token = iterator.getCurrentToken(); - if (!token) - return null; - - var value = ""; - var end; - - do { - if (token.type.lastIndexOf("meta.tag", 0) === 0) { - if (!end) { - end = { - row: iterator.getCurrentTokenRow(), - column: iterator.getCurrentTokenColumn() + token.value.length - }; - } - value = token.value + value; - if (value.indexOf("<") !== -1) { - var tag = this._parseTag(value); - tag.end = end; - tag.start = { - row: iterator.getCurrentTokenRow(), - column: iterator.getCurrentTokenColumn() - }; - iterator.stepBackward(); - return tag; - } - } - } while(token = iterator.stepBackward()); - - return null; - }; - - this._pop = function(stack, tag) { - while (stack.length) { - - var top = stack[stack.length-1]; - if (!tag || top.tagName == tag.tagName) { - return stack.pop(); - } - else if (this.voidElements[tag.tagName]) { - return; - } - else if (this.voidElements[top.tagName]) { - stack.pop(); - continue; - } else { - return null; - } - } - }; - - this.getFoldWidgetRange = function(session, foldStyle, row) { - var firstTag = this._getFirstTagInLine(session, row); - - if (!firstTag.match) - return null; - - var isBackward = firstTag.closing || firstTag.selfClosing; - var stack = []; - var tag; - - if (!isBackward) { - var iterator = new TokenIterator(session, row, firstTag.column); - var start = { - row: row, - column: firstTag.column + firstTag.tagName.length + 2 - }; - while (tag = this._readTagForward(iterator)) { - if (tag.selfClosing) { - if (!stack.length) { - tag.start.column += tag.tagName.length + 2; - tag.end.column -= 2; - return Range.fromPoints(tag.start, tag.end); - } else - continue; - } - - if (tag.closing) { - this._pop(stack, tag); - if (stack.length == 0) - return Range.fromPoints(start, tag.start); - } - else { - stack.push(tag) - } - } - } - else { - var iterator = new TokenIterator(session, row, firstTag.column + firstTag.match.length); - var end = { - row: row, - column: firstTag.column - }; - - while (tag = this._readTagBackward(iterator)) { - if (tag.selfClosing) { - if (!stack.length) { - tag.start.column += tag.tagName.length + 2; - tag.end.column -= 2; - return Range.fromPoints(tag.start, tag.end); - } else - continue; - } - - if (!tag.closing) { - this._pop(stack, tag); - if (stack.length == 0) { - tag.start.column += tag.tagName.length + 2; - return Range.fromPoints(tag.start, end); - } - } - else { - stack.push(tag) - } - } - } - - }; - -}).call(FoldMode.prototype); - -}); - -ace.define('ace/mode/html_completions', ['require', 'exports', 'module' , 'ace/token_iterator'], function(require, exports, module) { - - -var TokenIterator = require("../token_iterator").TokenIterator; - -var commonAttributes = [ - "accesskey", - "class", - "contenteditable", - "contextmenu", - "dir", - "draggable", - "dropzone", - "hidden", - "id", - "lang", - "spellcheck", - "style", - "tabindex", - "title", - "translate" -]; - -var eventAttributes = [ - "onabort", - "onblur", - "oncancel", - "oncanplay", - "oncanplaythrough", - "onchange", - "onclick", - "onclose", - "oncontextmenu", - "oncuechange", - "ondblclick", - "ondrag", - "ondragend", - "ondragenter", - "ondragleave", - "ondragover", - "ondragstart", - "ondrop", - "ondurationchange", - "onemptied", - "onended", - "onerror", - "onfocus", - "oninput", - "oninvalid", - "onkeydown", - "onkeypress", - "onkeyup", - "onload", - "onloadeddata", - "onloadedmetadata", - "onloadstart", - "onmousedown", - "onmousemove", - "onmouseout", - "onmouseover", - "onmouseup", - "onmousewheel", - "onpause", - "onplay", - "onplaying", - "onprogress", - "onratechange", - "onreset", - "onscroll", - "onseeked", - "onseeking", - "onselect", - "onshow", - "onstalled", - "onsubmit", - "onsuspend", - "ontimeupdate", - "onvolumechange", - "onwaiting" -]; - -var globalAttributes = commonAttributes.concat(eventAttributes); - -var attributeMap = { - "html": ["manifest"], - "head": [], - "title": [], - "base": ["href", "target"], - "link": ["href", "hreflang", "rel", "media", "type", "sizes"], - "meta": ["http-equiv", "name", "content", "charset"], - "style": ["type", "media", "scoped"], - "script": ["charset", "type", "src", "defer", "async"], - "noscript": ["href"], - "body": ["onafterprint", "onbeforeprint", "onbeforeunload", "onhashchange", "onmessage", "onoffline", "onpopstate", "onredo", "onresize", "onstorage", "onundo", "onunload"], - "section": [], - "nav": [], - "article": ["pubdate"], - "aside": [], - "h1": [], - "h2": [], - "h3": [], - "h4": [], - "h5": [], - "h6": [], - "header": [], - "footer": [], - "address": [], - "main": [], - "p": [], - "hr": [], - "pre": [], - "blockquote": ["cite"], - "ol": ["start", "reversed"], - "ul": [], - "li": ["value"], - "dl": [], - "dt": [], - "dd": [], - "figure": [], - "figcaption": [], - "div": [], - "a": ["href", "target", "ping", "rel", "media", "hreflang", "type"], - "em": [], - "strong": [], - "small": [], - "s": [], - "cite": [], - "q": ["cite"], - "dfn": [], - "abbr": [], - "data": [], - "time": ["datetime"], - "code": [], - "var": [], - "samp": [], - "kbd": [], - "sub": [], - "sup": [], - "i": [], - "b": [], - "u": [], - "mark": [], - "ruby": [], - "rt": [], - "rp": [], - "bdi": [], - "bdo": [], - "span": [], - "br": [], - "wbr": [], - "ins": ["cite", "datetime"], - "del": ["cite", "datetime"], - "img": ["alt", "src", "height", "width", "usemap", "ismap"], - "iframe": ["name", "src", "height", "width", "sandbox", "seamless"], - "embed": ["src", "height", "width", "type"], - "object": ["param", "data", "type", "height" , "width", "usemap", "name", "form", "classid"], - "param": ["name", "value"], - "video": ["src", "autobuffer", "autoplay", "loop", "controls", "width", "height", "poster"], - "audio": ["src", "autobuffer", "autoplay", "loop", "controls"], - "source": ["src", "type", "media"], - "track": ["kind", "src", "srclang", "label", "default"], - "canvas": ["width", "height"], - "map": ["name"], - "area": ["shape", "coords", "href", "hreflang", "alt", "target", "media", "rel", "ping", "type"], - "svg": [], - "math": [], - "table": ["summary"], - "caption": [], - "colgroup": ["span"], - "col": ["span"], - "tbody": [], - "thead": [], - "tfoot": [], - "tr": [], - "td": ["headers", "rowspan", "colspan"], - "th": ["headers", "rowspan", "colspan", "scope"], - "form": ["accept-charset", "action", "autocomplete", "enctype", "method", "name", "novalidate", "target"], - "fieldset": ["disabled", "form", "name"], - "legend": [], - "label": ["form", "for"], - "input": ["type", "accept", "alt", "autocomplete", "checked", "disabled", "form", "formaction", "formenctype", "formmethod", "formnovalidate", "formtarget", "height", "list", "max", "maxlength", "min", "multiple", "pattern", "placeholder", "readonly", "required", "size", "src", "step", "width", "files", "value"], - "button": ["autofocus", "disabled", "form", "formaction", "formenctype", "formmethod", "formnovalidate", "formtarget", "name", "value", "type"], - "select": ["autofocus", "disabled", "form", "multiple", "name", "size"], - "datalist": [], - "optgroup": ["disabled", "label"], - "option": ["disabled", "selected", "label", "value"], - "textarea": ["autofocus", "disabled", "form", "maxlength", "name", "placeholder", "readonly", "required", "rows", "cols", "wrap"], - "keygen": ["autofocus", "challenge", "disabled", "form", "keytype", "name"], - "output": ["for", "form", "name"], - "progress": ["value", "max"], - "meter": ["value", "min", "max", "low", "high", "optimum"], - "details": ["open"], - "summary": [], - "command": ["type", "label", "icon", "disabled", "checked", "radiogroup", "command"], - "menu": ["type", "label"], - "dialog": ["open"] -}; - -var allElements = Object.keys(attributeMap); - -function hasType(token, type) { - var tokenTypes = token.type.split('.'); - return type.split('.').every(function(type){ - return (tokenTypes.indexOf(type) !== -1); - }); -} - -function findTagName(session, pos) { - var iterator = new TokenIterator(session, pos.row, pos.column); - var token = iterator.getCurrentToken(); - if (!token || !hasType(token, 'tag') && !(hasType(token, 'text') && token.value.match('/'))){ - do { - token = iterator.stepBackward(); - } while (token && (hasType(token, 'string') || hasType(token, 'operator') || hasType(token, 'attribute-name') || hasType(token, 'text'))); - } - if (token && hasType(token, 'tag-name') && !iterator.stepBackward().value.match('/')) - return token.value; -} - -var HtmlCompletions = function() { - -}; - -(function() { - - this.getCompletions = function(state, session, pos, prefix) { - var token = session.getTokenAt(pos.row, pos.column); - - if (!token) - return []; - if (hasType(token, "tag-name") || (token.value == '<' && hasType(token, "text"))) - return this.getTagCompletions(state, session, pos, prefix); - if (hasType(token, 'text') || hasType(token, 'attribute-name')) - return this.getAttributeCompetions(state, session, pos, prefix); - - return []; - }; - - this.getTagCompletions = function(state, session, pos, prefix) { - var elements = allElements; - if (prefix) { - elements = elements.filter(function(element){ - return element.indexOf(prefix) === 0; - }); - } - return elements.map(function(element){ - return { - value: element, - meta: "tag" - }; - }); - }; - - this.getAttributeCompetions = function(state, session, pos, prefix) { - var tagName = findTagName(session, pos); - if (!tagName) - return []; - var attributes = globalAttributes; - if (tagName in attributeMap) { - attributes = attributes.concat(attributeMap[tagName]); - } - if (prefix) { - attributes = attributes.filter(function(attribute){ - return attribute.indexOf(prefix) === 0; - }); - } - return attributes.map(function(attribute){ - return { - caption: attribute, - snippet: attribute + '="$0"', - meta: "attribute" - }; - }); - }; - -}).call(HtmlCompletions.prototype); - -exports.HtmlCompletions = HtmlCompletions; -}); - -ace.define('ace/mode/lua', ['require', 'exports', 'module' , 'ace/lib/oop', 'ace/mode/text', 'ace/tokenizer', 'ace/mode/lua_highlight_rules', 'ace/mode/folding/lua', 'ace/range', 'ace/worker/worker_client'], function(require, exports, module) { - - -var oop = require("../lib/oop"); -var TextMode = require("./text").Mode; -var Tokenizer = require("../tokenizer").Tokenizer; -var LuaHighlightRules = require("./lua_highlight_rules").LuaHighlightRules; -var LuaFoldMode = require("./folding/lua").FoldMode; -var Range = require("../range").Range; -var WorkerClient = require("../worker/worker_client").WorkerClient; - -var Mode = function() { - this.HighlightRules = LuaHighlightRules; - - this.foldingRules = new LuaFoldMode(); -}; -oop.inherits(Mode, TextMode); - -(function() { - - this.lineCommentStart = "--"; - this.blockComment = {start: "--[", end: "]--"}; - - var indentKeywords = { - "function": 1, - "then": 1, - "do": 1, - "else": 1, - "elseif": 1, - "repeat": 1, - "end": -1, - "until": -1 - }; - var outdentKeywords = [ - "else", - "elseif", - "end", - "until" - ]; - - function getNetIndentLevel(tokens) { - var level = 0; - for (var i = 0; i < tokens.length; i++) { - var token = tokens[i]; - if (token.type == "keyword") { - if (token.value in indentKeywords) { - level += indentKeywords[token.value]; - } - } else if (token.type == "paren.lparen") { - level ++; - } else if (token.type == "paren.rparen") { - level --; - } - } - if (level < 0) { - return -1; - } else if (level > 0) { - return 1; - } else { - return 0; - } - } - - this.getNextLineIndent = function(state, line, tab) { - var indent = this.$getIndent(line); - var level = 0; - - var tokenizedLine = this.getTokenizer().getLineTokens(line, state); - var tokens = tokenizedLine.tokens; - - if (state == "start") { - level = getNetIndentLevel(tokens); - } - if (level > 0) { - return indent + tab; - } else if (level < 0 && indent.substr(indent.length - tab.length) == tab) { - if (!this.checkOutdent(state, line, "\n")) { - return indent.substr(0, indent.length - tab.length); - } - } - return indent; - }; - - this.checkOutdent = function(state, line, input) { - if (input != "\n" && input != "\r" && input != "\r\n") - return false; - - if (line.match(/^\s*[\)\}\]]$/)) - return true; - - var tokens = this.getTokenizer().getLineTokens(line.trim(), state).tokens; - - if (!tokens || !tokens.length) - return false; - - return (tokens[0].type == "keyword" && outdentKeywords.indexOf(tokens[0].value) != -1); - }; - - this.autoOutdent = function(state, session, row) { - var prevLine = session.getLine(row - 1); - var prevIndent = this.$getIndent(prevLine).length; - var prevTokens = this.getTokenizer().getLineTokens(prevLine, "start").tokens; - var tabLength = session.getTabString().length; - var expectedIndent = prevIndent + tabLength * getNetIndentLevel(prevTokens); - var curIndent = this.$getIndent(session.getLine(row)).length; - if (curIndent < expectedIndent) { - return; - } - session.outdentRows(new Range(row, 0, row + 2, 0)); - }; - - this.createWorker = function(session) { - var worker = new WorkerClient(["ace"], "ace/mode/lua_worker", "Worker"); - worker.attachToDocument(session.getDocument()); - - worker.on("error", function(e) { - session.setAnnotations([e.data]); - }); - - worker.on("ok", function(e) { - session.clearAnnotations(); - }); - - return worker; - }; - - this.$id = "ace/mode/lua"; -}).call(Mode.prototype); - -exports.Mode = Mode; -}); - -ace.define('ace/mode/lua_highlight_rules', ['require', 'exports', 'module' , 'ace/lib/oop', 'ace/mode/text_highlight_rules'], function(require, exports, module) { - - -var oop = require("../lib/oop"); -var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; - -var LuaHighlightRules = function() { - - var keywords = ( - "break|do|else|elseif|end|for|function|if|in|local|repeat|"+ - "return|then|until|while|or|and|not" - ); - - var builtinConstants = ("true|false|nil|_G|_VERSION"); - - var functions = ( - "string|xpcall|package|tostring|print|os|unpack|require|"+ - "getfenv|setmetatable|next|assert|tonumber|io|rawequal|"+ - "collectgarbage|getmetatable|module|rawset|math|debug|"+ - "pcall|table|newproxy|type|coroutine|_G|select|gcinfo|"+ - "pairs|rawget|loadstring|ipairs|_VERSION|dofile|setfenv|"+ - "load|error|loadfile|"+ - - "sub|upper|len|gfind|rep|find|match|char|dump|gmatch|"+ - "reverse|byte|format|gsub|lower|preload|loadlib|loaded|"+ - "loaders|cpath|config|path|seeall|exit|setlocale|date|"+ - "getenv|difftime|remove|time|clock|tmpname|rename|execute|"+ - "lines|write|close|flush|open|output|type|read|stderr|"+ - "stdin|input|stdout|popen|tmpfile|log|max|acos|huge|"+ - "ldexp|pi|cos|tanh|pow|deg|tan|cosh|sinh|random|randomseed|"+ - "frexp|ceil|floor|rad|abs|sqrt|modf|asin|min|mod|fmod|log10|"+ - "atan2|exp|sin|atan|getupvalue|debug|sethook|getmetatable|"+ - "gethook|setmetatable|setlocal|traceback|setfenv|getinfo|"+ - "setupvalue|getlocal|getregistry|getfenv|setn|insert|getn|"+ - "foreachi|maxn|foreach|concat|sort|remove|resume|yield|"+ - "status|wrap|create|running|"+ - "__add|__sub|__mod|__unm|__concat|__lt|__index|__call|__gc|__metatable|"+ - "__mul|__div|__pow|__len|__eq|__le|__newindex|__tostring|__mode|__tonumber" - ); - - var stdLibaries = ("string|package|os|io|math|debug|table|coroutine"); - - var futureReserved = ""; - - var deprecatedIn5152 = ("setn|foreach|foreachi|gcinfo|log10|maxn"); - - var keywordMapper = this.createKeywordMapper({ - "keyword": keywords, - "support.function": functions, - "invalid.deprecated": deprecatedIn5152, - "constant.library": stdLibaries, - "constant.language": builtinConstants, - "invalid.illegal": futureReserved, - "variable.language": "this" - }, "identifier"); - - var decimalInteger = "(?:(?:[1-9]\\d*)|(?:0))"; - var hexInteger = "(?:0[xX][\\dA-Fa-f]+)"; - var integer = "(?:" + decimalInteger + "|" + hexInteger + ")"; - - var fraction = "(?:\\.\\d+)"; - var intPart = "(?:\\d+)"; - var pointFloat = "(?:(?:" + intPart + "?" + fraction + ")|(?:" + intPart + "\\.))"; - var floatNumber = "(?:" + pointFloat + ")"; - - this.$rules = { - "start" : [{ - stateName: "bracketedComment", - onMatch : function(value, currentState, stack){ - stack.unshift(this.next, value.length - 2, currentState); - return "comment"; - }, - regex : /\-\-\[=*\[/, - next : [ - { - onMatch : function(value, currentState, stack) { - if (value.length == stack[1]) { - stack.shift(); - stack.shift(); - this.next = stack.shift(); - } else { - this.next = ""; - } - return "comment"; - }, - regex : /\]=*\]/, - next : "start" - }, { - defaultToken : "comment" - } - ] - }, - - { - token : "comment", - regex : "\\-\\-.*$" - }, - { - stateName: "bracketedString", - onMatch : function(value, currentState, stack){ - stack.unshift(this.next, value.length, currentState); - return "comment"; - }, - regex : /\[=*\[/, - next : [ - { - onMatch : function(value, currentState, stack) { - if (value.length == stack[1]) { - stack.shift(); - stack.shift(); - this.next = stack.shift(); - } else { - this.next = ""; - } - return "comment"; - }, - - regex : /\]=*\]/, - next : "start" - }, { - defaultToken : "comment" - } - ] - }, - { - token : "string", // " string - regex : '"(?:[^\\\\]|\\\\.)*?"' - }, { - token : "string", // ' string - regex : "'(?:[^\\\\]|\\\\.)*?'" - }, { - token : "constant.numeric", // float - regex : floatNumber - }, { - token : "constant.numeric", // integer - regex : integer + "\\b" - }, { - token : keywordMapper, - regex : "[a-zA-Z_$][a-zA-Z0-9_$]*\\b" - }, { - token : "keyword.operator", - regex : "\\+|\\-|\\*|\\/|%|\\#|\\^|~|<|>|<=|=>|==|~=|=|\\:|\\.\\.\\.|\\.\\." - }, { - token : "paren.lparen", - regex : "[\\[\\(\\{]" - }, { - token : "paren.rparen", - regex : "[\\]\\)\\}]" - }, { - token : "text", - regex : "\\s+|\\w+" - } ] - }; - - this.normalizeRules(); -} - -oop.inherits(LuaHighlightRules, TextHighlightRules); - -exports.LuaHighlightRules = LuaHighlightRules; -}); - -ace.define('ace/mode/folding/lua', ['require', 'exports', 'module' , 'ace/lib/oop', 'ace/mode/folding/fold_mode', 'ace/range', 'ace/token_iterator'], function(require, exports, module) { - - -var oop = require("../../lib/oop"); -var BaseFoldMode = require("./fold_mode").FoldMode; -var Range = require("../../range").Range; -var TokenIterator = require("../../token_iterator").TokenIterator; - - -var FoldMode = exports.FoldMode = function() {}; - -oop.inherits(FoldMode, BaseFoldMode); - -(function() { - - this.foldingStartMarker = /\b(function|then|do|repeat)\b|{\s*$|(\[=*\[)/; - this.foldingStopMarker = /\bend\b|^\s*}|\]=*\]/; - - this.getFoldWidget = function(session, foldStyle, row) { - var line = session.getLine(row); - var isStart = this.foldingStartMarker.test(line); - var isEnd = this.foldingStopMarker.test(line); - - if (isStart && !isEnd) { - var match = line.match(this.foldingStartMarker); - if (match[1] == "then" && /\belseif\b/.test(line)) - return; - if (match[1]) { - if (session.getTokenAt(row, match.index + 1).type === "keyword") - return "start"; - } else if (match[2]) { - var type = session.bgTokenizer.getState(row) || ""; - if (type[0] == "bracketedComment" || type[0] == "bracketedString") - return "start"; - } else { - return "start"; - } - } - if (foldStyle != "markbeginend" || !isEnd || isStart && isEnd) - return ""; - - var match = line.match(this.foldingStopMarker); - if (match[0] === "end") { - if (session.getTokenAt(row, match.index + 1).type === "keyword") - return "end"; - } else if (match[0][0] === "]") { - var type = session.bgTokenizer.getState(row - 1) || ""; - if (type[0] == "bracketedComment" || type[0] == "bracketedString") - return "end"; - } else - return "end"; - }; - - this.getFoldWidgetRange = function(session, foldStyle, row) { - var line = session.doc.getLine(row); - var match = this.foldingStartMarker.exec(line); - if (match) { - if (match[1]) - return this.luaBlock(session, row, match.index + 1); - - if (match[2]) - return session.getCommentFoldRange(row, match.index + 1); - - return this.openingBracketBlock(session, "{", row, match.index); - } - - var match = this.foldingStopMarker.exec(line); - if (match) { - if (match[0] === "end") { - if (session.getTokenAt(row, match.index + 1).type === "keyword") - return this.luaBlock(session, row, match.index + 1); - } - - if (match[0][0] === "]") - return session.getCommentFoldRange(row, match.index + 1); - - return this.closingBracketBlock(session, "}", row, match.index + match[0].length); - } - }; - - this.luaBlock = function(session, row, column) { - var stream = new TokenIterator(session, row, column); - var indentKeywords = { - "function": 1, - "do": 1, - "then": 1, - "elseif": -1, - "end": -1, - "repeat": 1, - "until": -1 - }; - - var token = stream.getCurrentToken(); - if (!token || token.type != "keyword") - return; - - var val = token.value; - var stack = [val]; - var dir = indentKeywords[val]; - - if (!dir) - return; - - var startColumn = dir === -1 ? stream.getCurrentTokenColumn() : session.getLine(row).length; - var startRow = row; - - stream.step = dir === -1 ? stream.stepBackward : stream.stepForward; - while(token = stream.step()) { - if (token.type !== "keyword") - continue; - var level = dir * indentKeywords[token.value]; - - if (level > 0) { - stack.unshift(token.value); - } else if (level <= 0) { - stack.shift(); - if (!stack.length && token.value != "elseif") - break; - if (level === 0) - stack.unshift(token.value); - } - } - - var row = stream.getCurrentTokenRow(); - if (dir === -1) - return new Range(row, session.getLine(row).length, startRow, startColumn); - else - return new Range(startRow, startColumn, row, stream.getCurrentTokenColumn()); - }; - -}).call(FoldMode.prototype); - -}); -ace.define('ace/mode/luapage_highlight_rules', ['require', 'exports', 'module' , 'ace/lib/oop', 'ace/mode/html_highlight_rules', 'ace/mode/lua_highlight_rules'], function(require, exports, module) { - - -var oop = require("../lib/oop"); -var HtmlHighlightRules = require("./html_highlight_rules").HtmlHighlightRules; -var LuaHighlightRules = require("./lua_highlight_rules").LuaHighlightRules; - -var LuaPageHighlightRules = function() { - HtmlHighlightRules.call(this); - - var startRules = [ - { - token: "keyword", - regex: "<\\%\\=?", - push: "lua-start" - }, { - token: "keyword", - regex: "<\\?lua\\=?", - push: "lua-start" - } - ]; - - var endRules = [ - { - token: "keyword", - regex: "\\%>", - next: "pop" - }, { - token: "keyword", - regex: "\\?>", - next: "pop" - } - ]; - - this.embedRules(LuaHighlightRules, "lua-", endRules, ["start"]); - - for (var key in this.$rules) - this.$rules[key].unshift.apply(this.$rules[key], startRules); - - this.normalizeRules(); -}; - -oop.inherits(LuaPageHighlightRules, HtmlHighlightRules); - -exports.LuaPageHighlightRules = LuaPageHighlightRules; - -}); \ No newline at end of file diff --git a/IDE/jsrealb-ide/ace-src-noconflict/mode-lucene.js b/IDE/jsrealb-ide/ace-src-noconflict/mode-lucene.js deleted file mode 100644 index 5fa60cf3..00000000 --- a/IDE/jsrealb-ide/ace-src-noconflict/mode-lucene.js +++ /dev/null @@ -1,64 +0,0 @@ -ace.define('ace/mode/lucene', ['require', 'exports', 'module' , 'ace/lib/oop', 'ace/mode/text', 'ace/tokenizer', 'ace/mode/lucene_highlight_rules'], function(require, exports, module) { - - -var oop = require("../lib/oop"); -var TextMode = require("./text").Mode; -var Tokenizer = require("../tokenizer").Tokenizer; -var LuceneHighlightRules = require("./lucene_highlight_rules").LuceneHighlightRules; - -var Mode = function() { - this.$tokenizer = new Tokenizer(new LuceneHighlightRules().getRules()); -}; - -oop.inherits(Mode, TextMode); - -exports.Mode = Mode; -});ace.define('ace/mode/lucene_highlight_rules', ['require', 'exports', 'module' , 'ace/lib/oop', 'ace/lib/lang', 'ace/mode/text_highlight_rules'], function(require, exports, module) { - - -var oop = require("../lib/oop"); -var lang = require("../lib/lang"); -var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; - -var LuceneHighlightRules = function() { - this.$rules = { - "start" : [ - { - token : "constant.character.negation", - regex : "[\\-]" - }, { - token : "constant.character.interro", - regex : "[\\?]" - }, { - token : "constant.character.asterisk", - regex : "[\\*]" - }, { - token: 'constant.character.proximity', - regex: '~[0-9]+\\b' - }, { - token : 'keyword.operator', - regex: '(?:AND|OR|NOT)\\b' - }, { - token : "paren.lparen", - regex : "[\\(]" - }, { - token : "paren.rparen", - regex : "[\\)]" - }, { - token : "keyword", - regex : "[\\S]+:" - }, { - token : "string", // " string - regex : '".*?"' - }, { - token : "text", - regex : "\\s+" - } - ] - }; -}; - -oop.inherits(LuceneHighlightRules, TextHighlightRules); - -exports.LuceneHighlightRules = LuceneHighlightRules; -}); diff --git a/IDE/jsrealb-ide/ace-src-noconflict/mode-makefile.js b/IDE/jsrealb-ide/ace-src-noconflict/mode-makefile.js deleted file mode 100644 index c00557b6..00000000 --- a/IDE/jsrealb-ide/ace-src-noconflict/mode-makefile.js +++ /dev/null @@ -1,332 +0,0 @@ -/* ***** BEGIN LICENSE BLOCK ***** - * Distributed under the BSD license: - * - * Copyright (c) 2012, Ajax.org B.V. - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are met: - * * Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * * Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * * Neither the name of Ajax.org B.V. nor the - * names of its contributors may be used to endorse or promote products - * derived from this software without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND - * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED - * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE - * DISCLAIMED. IN NO EVENT SHALL AJAX.ORG B.V. BE LIABLE FOR ANY - * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES - * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; - * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND - * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - * - * - * Contributor(s): - * - * - * - * ***** END LICENSE BLOCK ***** */ - -ace.define('ace/mode/makefile', ['require', 'exports', 'module' , 'ace/lib/oop', 'ace/mode/text', 'ace/tokenizer', 'ace/mode/makefile_highlight_rules', 'ace/mode/folding/coffee'], function(require, exports, module) { - - -var oop = require("../lib/oop"); -var TextMode = require("./text").Mode; -var Tokenizer = require("../tokenizer").Tokenizer; -var MakefileHighlightRules = require("./makefile_highlight_rules").MakefileHighlightRules; -var FoldMode = require("./folding/coffee").FoldMode; - -var Mode = function() { - this.HighlightRules = MakefileHighlightRules; - this.foldingRules = new FoldMode(); -}; -oop.inherits(Mode, TextMode); - -(function() { - - this.lineCommentStart = "#"; - this.$indentWithTabs = true; - - this.$id = "ace/mode/makefile"; -}).call(Mode.prototype); - -exports.Mode = Mode; -});ace.define('ace/mode/makefile_highlight_rules', ['require', 'exports', 'module' , 'ace/lib/oop', 'ace/mode/text_highlight_rules', 'ace/mode/sh_highlight_rules'], function(require, exports, module) { - - -var oop = require("../lib/oop"); -var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; - -var ShHighlightFile = require("./sh_highlight_rules"); - -var MakefileHighlightRules = function() { - - var keywordMapper = this.createKeywordMapper({ - "keyword": ShHighlightFile.reservedKeywords, - "support.function.builtin": ShHighlightFile.languageConstructs, - "invalid.deprecated": "debugger" - }, "string"); - - this.$rules = - { - "start": [ - { - token: "string.interpolated.backtick.makefile", - regex: "`", - next: "shell-start" - }, - { - token: "punctuation.definition.comment.makefile", - regex: /#(?=.)/, - next: "comment" - }, - { - token: [ "keyword.control.makefile"], - regex: "^(?:\\s*\\b)(\\-??include|ifeq|ifneq|ifdef|ifndef|else|endif|vpath|export|unexport|define|endef|override)(?:\\b)" - }, - {// ^([^\t ]+(\s[^\t ]+)*:(?!\=))\s*.* - token: ["entity.name.function.makefile", "text"], - regex: "^([^\\t ]+(?:\\s[^\\t ]+)*:)(\\s*.*)" - } - ], - "comment": [ - { - token : "punctuation.definition.comment.makefile", - regex : /.+\\/ - }, - { - token : "punctuation.definition.comment.makefile", - regex : ".+", - next : "start" - } - ], - "shell-start": [ - { - token: keywordMapper, - regex : "[a-zA-Z_$][a-zA-Z0-9_$]*\\b" - }, - { - token: "string", - regex : "\\w+" - }, - { - token : "string.interpolated.backtick.makefile", - regex : "`", - next : "start" - } - ] -} - -}; - -oop.inherits(MakefileHighlightRules, TextHighlightRules); - -exports.MakefileHighlightRules = MakefileHighlightRules; -}); - -ace.define('ace/mode/sh_highlight_rules', ['require', 'exports', 'module' , 'ace/lib/oop', 'ace/mode/text_highlight_rules'], function(require, exports, module) { - - -var oop = require("../lib/oop"); -var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; - -var reservedKeywords = exports.reservedKeywords = ( - '!|{|}|case|do|done|elif|else|'+ - 'esac|fi|for|if|in|then|until|while|'+ - '&|;|export|local|read|typeset|unset|'+ - 'elif|select|set' - ); - -var languageConstructs = exports.languageConstructs = ( - '[|]|alias|bg|bind|break|builtin|'+ - 'cd|command|compgen|complete|continue|'+ - 'dirs|disown|echo|enable|eval|exec|'+ - 'exit|fc|fg|getopts|hash|help|history|'+ - 'jobs|kill|let|logout|popd|printf|pushd|'+ - 'pwd|return|set|shift|shopt|source|'+ - 'suspend|test|times|trap|type|ulimit|'+ - 'umask|unalias|wait' -); - -var ShHighlightRules = function() { - var keywordMapper = this.createKeywordMapper({ - "keyword": reservedKeywords, - "support.function.builtin": languageConstructs, - "invalid.deprecated": "debugger" - }, "identifier"); - - var integer = "(?:(?:[1-9]\\d*)|(?:0))"; - - var fraction = "(?:\\.\\d+)"; - var intPart = "(?:\\d+)"; - var pointFloat = "(?:(?:" + intPart + "?" + fraction + ")|(?:" + intPart + "\\.))"; - var exponentFloat = "(?:(?:" + pointFloat + "|" + intPart + ")" + ")"; - var floatNumber = "(?:" + exponentFloat + "|" + pointFloat + ")"; - var fileDescriptor = "(?:&" + intPart + ")"; - - var variableName = "[a-zA-Z][a-zA-Z0-9_]*"; - var variable = "(?:(?:\\$" + variableName + ")|(?:" + variableName + "=))"; - - var builtinVariable = "(?:\\$(?:SHLVL|\\$|\\!|\\?))"; - - var func = "(?:" + variableName + "\\s*\\(\\))"; - - this.$rules = { - "start" : [{ - token : "constant", - regex : /\\./ - }, { - token : ["text", "comment"], - regex : /(^|\s)(#.*)$/ - }, { - token : "string", - regex : '"', - push : [{ - token : "constant.language.escape", - regex : /\\(?:[$abeEfnrtv\\'"]|x[a-fA-F\d]{1,2}|u[a-fA-F\d]{4}([a-fA-F\d]{4})?|c.|\d{1,3})/ - }, { - token : "constant", - regex : /\$\w+/ - }, { - token : "string", - regex : '"', - next: "pop" - }, { - defaultToken: "string" - }] - }, { - token : "variable.language", - regex : builtinVariable - }, { - token : "variable", - regex : variable - }, { - token : "support.function", - regex : func - }, { - token : "support.function", - regex : fileDescriptor - }, { - token : "string", // ' string - start : "'", end : "'" - }, { - token : "constant.numeric", // float - regex : floatNumber - }, { - token : "constant.numeric", // integer - regex : integer + "\\b" - }, { - token : keywordMapper, - regex : "[a-zA-Z_$][a-zA-Z0-9_$]*\\b" - }, { - token : "keyword.operator", - regex : "\\+|\\-|\\*|\\*\\*|\\/|\\/\\/|~|<|>|<=|=>|=|!=" - }, { - token : "paren.lparen", - regex : "[\\[\\(\\{]" - }, { - token : "paren.rparen", - regex : "[\\]\\)\\}]" - } ] - }; - - this.normalizeRules(); -}; - -oop.inherits(ShHighlightRules, TextHighlightRules); - -exports.ShHighlightRules = ShHighlightRules; -}); - -ace.define('ace/mode/folding/coffee', ['require', 'exports', 'module' , 'ace/lib/oop', 'ace/mode/folding/fold_mode', 'ace/range'], function(require, exports, module) { - - -var oop = require("../../lib/oop"); -var BaseFoldMode = require("./fold_mode").FoldMode; -var Range = require("../../range").Range; - -var FoldMode = exports.FoldMode = function() {}; -oop.inherits(FoldMode, BaseFoldMode); - -(function() { - - this.getFoldWidgetRange = function(session, foldStyle, row) { - var range = this.indentationBlock(session, row); - if (range) - return range; - - var re = /\S/; - var line = session.getLine(row); - var startLevel = line.search(re); - if (startLevel == -1 || line[startLevel] != "#") - return; - - var startColumn = line.length; - var maxRow = session.getLength(); - var startRow = row; - var endRow = row; - - while (++row < maxRow) { - line = session.getLine(row); - var level = line.search(re); - - if (level == -1) - continue; - - if (line[level] != "#") - break; - - endRow = row; - } - - if (endRow > startRow) { - var endColumn = session.getLine(endRow).length; - return new Range(startRow, startColumn, endRow, endColumn); - } - }; - this.getFoldWidget = function(session, foldStyle, row) { - var line = session.getLine(row); - var indent = line.search(/\S/); - var next = session.getLine(row + 1); - var prev = session.getLine(row - 1); - var prevIndent = prev.search(/\S/); - var nextIndent = next.search(/\S/); - - if (indent == -1) { - session.foldWidgets[row - 1] = prevIndent!= -1 && prevIndent < nextIndent ? "start" : ""; - return ""; - } - if (prevIndent == -1) { - if (indent == nextIndent && line[indent] == "#" && next[indent] == "#") { - session.foldWidgets[row - 1] = ""; - session.foldWidgets[row + 1] = ""; - return "start"; - } - } else if (prevIndent == indent && line[indent] == "#" && prev[indent] == "#") { - if (session.getLine(row - 2).search(/\S/) == -1) { - session.foldWidgets[row - 1] = "start"; - session.foldWidgets[row + 1] = ""; - return ""; - } - } - - if (prevIndent!= -1 && prevIndent < indent) - session.foldWidgets[row - 1] = "start"; - else - session.foldWidgets[row - 1] = ""; - - if (indent < nextIndent) - return "start"; - else - return ""; - }; - -}).call(FoldMode.prototype); - -}); diff --git a/IDE/jsrealb-ide/ace-src-noconflict/mode-markdown.js b/IDE/jsrealb-ide/ace-src-noconflict/mode-markdown.js deleted file mode 100644 index 553ba35b..00000000 --- a/IDE/jsrealb-ide/ace-src-noconflict/mode-markdown.js +++ /dev/null @@ -1,2724 +0,0 @@ -/* ***** BEGIN LICENSE BLOCK ***** - * Distributed under the BSD license: - * - * Copyright (c) 2010, Ajax.org B.V. - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are met: - * * Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * * Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * * Neither the name of Ajax.org B.V. nor the - * names of its contributors may be used to endorse or promote products - * derived from this software without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND - * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED - * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE - * DISCLAIMED. IN NO EVENT SHALL AJAX.ORG B.V. BE LIABLE FOR ANY - * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES - * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; - * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND - * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - * - * ***** END LICENSE BLOCK ***** */ - -ace.define('ace/mode/markdown', ['require', 'exports', 'module' , 'ace/lib/oop', 'ace/mode/text', 'ace/mode/javascript', 'ace/mode/xml', 'ace/mode/html', 'ace/tokenizer', 'ace/mode/markdown_highlight_rules', 'ace/mode/folding/markdown'], function(require, exports, module) { - - -var oop = require("../lib/oop"); -var TextMode = require("./text").Mode; -var JavaScriptMode = require("./javascript").Mode; -var XmlMode = require("./xml").Mode; -var HtmlMode = require("./html").Mode; -var Tokenizer = require("../tokenizer").Tokenizer; -var MarkdownHighlightRules = require("./markdown_highlight_rules").MarkdownHighlightRules; -var MarkdownFoldMode = require("./folding/markdown").FoldMode; - -var Mode = function() { - this.HighlightRules = MarkdownHighlightRules; - - this.createModeDelegates({ - "js-": JavaScriptMode, - "xml-": XmlMode, - "html-": HtmlMode - }); - - this.foldingRules = new MarkdownFoldMode(); -}; -oop.inherits(Mode, TextMode); - -(function() { - this.type = "text"; - this.lineCommentStart = ">"; - - this.getNextLineIndent = function(state, line, tab) { - if (state == "listblock") { - var match = /^(\s*)(?:([-+*])|(\d+)\.)(\s+)/.exec(line); - if (!match) - return ""; - var marker = match[2]; - if (!marker) - marker = parseInt(match[3], 10) + 1 + "."; - return match[1] + marker + match[4]; - } else { - return this.$getIndent(line); - } - }; - this.$id = "ace/mode/markdown"; -}).call(Mode.prototype); - -exports.Mode = Mode; -}); - -ace.define('ace/mode/javascript', ['require', 'exports', 'module' , 'ace/lib/oop', 'ace/mode/text', 'ace/tokenizer', 'ace/mode/javascript_highlight_rules', 'ace/mode/matching_brace_outdent', 'ace/range', 'ace/worker/worker_client', 'ace/mode/behaviour/cstyle', 'ace/mode/folding/cstyle'], function(require, exports, module) { - - -var oop = require("../lib/oop"); -var TextMode = require("./text").Mode; -var Tokenizer = require("../tokenizer").Tokenizer; -var JavaScriptHighlightRules = require("./javascript_highlight_rules").JavaScriptHighlightRules; -var MatchingBraceOutdent = require("./matching_brace_outdent").MatchingBraceOutdent; -var Range = require("../range").Range; -var WorkerClient = require("../worker/worker_client").WorkerClient; -var CstyleBehaviour = require("./behaviour/cstyle").CstyleBehaviour; -var CStyleFoldMode = require("./folding/cstyle").FoldMode; - -var Mode = function() { - this.HighlightRules = JavaScriptHighlightRules; - - this.$outdent = new MatchingBraceOutdent(); - this.$behaviour = new CstyleBehaviour(); - this.foldingRules = new CStyleFoldMode(); -}; -oop.inherits(Mode, TextMode); - -(function() { - - this.lineCommentStart = "//"; - this.blockComment = {start: "/*", end: "*/"}; - - this.getNextLineIndent = function(state, line, tab) { - var indent = this.$getIndent(line); - - var tokenizedLine = this.getTokenizer().getLineTokens(line, state); - var tokens = tokenizedLine.tokens; - var endState = tokenizedLine.state; - - if (tokens.length && tokens[tokens.length-1].type == "comment") { - return indent; - } - - if (state == "start" || state == "no_regex") { - var match = line.match(/^.*(?:\bcase\b.*\:|[\{\(\[])\s*$/); - if (match) { - indent += tab; - } - } else if (state == "doc-start") { - if (endState == "start" || endState == "no_regex") { - return ""; - } - var match = line.match(/^\s*(\/?)\*/); - if (match) { - if (match[1]) { - indent += " "; - } - indent += "* "; - } - } - - return indent; - }; - - this.checkOutdent = function(state, line, input) { - return this.$outdent.checkOutdent(line, input); - }; - - this.autoOutdent = function(state, doc, row) { - this.$outdent.autoOutdent(doc, row); - }; - - this.createWorker = function(session) { - var worker = new WorkerClient(["ace"], "ace/mode/javascript_worker", "JavaScriptWorker"); - worker.attachToDocument(session.getDocument()); - - worker.on("jslint", function(results) { - session.setAnnotations(results.data); - }); - - worker.on("terminate", function() { - session.clearAnnotations(); - }); - - return worker; - }; - - this.$id = "ace/mode/javascript"; -}).call(Mode.prototype); - -exports.Mode = Mode; -}); - -ace.define('ace/mode/javascript_highlight_rules', ['require', 'exports', 'module' , 'ace/lib/oop', 'ace/mode/doc_comment_highlight_rules', 'ace/mode/text_highlight_rules'], function(require, exports, module) { - - -var oop = require("../lib/oop"); -var DocCommentHighlightRules = require("./doc_comment_highlight_rules").DocCommentHighlightRules; -var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; - -var JavaScriptHighlightRules = function() { - var keywordMapper = this.createKeywordMapper({ - "variable.language": - "Array|Boolean|Date|Function|Iterator|Number|Object|RegExp|String|Proxy|" + // Constructors - "Namespace|QName|XML|XMLList|" + // E4X - "ArrayBuffer|Float32Array|Float64Array|Int16Array|Int32Array|Int8Array|" + - "Uint16Array|Uint32Array|Uint8Array|Uint8ClampedArray|" + - "Error|EvalError|InternalError|RangeError|ReferenceError|StopIteration|" + // Errors - "SyntaxError|TypeError|URIError|" + - "decodeURI|decodeURIComponent|encodeURI|encodeURIComponent|eval|isFinite|" + // Non-constructor functions - "isNaN|parseFloat|parseInt|" + - "JSON|Math|" + // Other - "this|arguments|prototype|window|document" , // Pseudo - "keyword": - "const|yield|import|get|set|" + - "break|case|catch|continue|default|delete|do|else|finally|for|function|" + - "if|in|instanceof|new|return|switch|throw|try|typeof|let|var|while|with|debugger|" + - "__parent__|__count__|escape|unescape|with|__proto__|" + - "class|enum|extends|super|export|implements|private|public|interface|package|protected|static", - "storage.type": - "const|let|var|function", - "constant.language": - "null|Infinity|NaN|undefined", - "support.function": - "alert", - "constant.language.boolean": "true|false" - }, "identifier"); - var kwBeforeRe = "case|do|else|finally|in|instanceof|return|throw|try|typeof|yield|void"; - var identifierRe = "[a-zA-Z\\$_\u00a1-\uffff][a-zA-Z\\d\\$_\u00a1-\uffff]*\\b"; - - var escapedRe = "\\\\(?:x[0-9a-fA-F]{2}|" + // hex - "u[0-9a-fA-F]{4}|" + // unicode - "[0-2][0-7]{0,2}|" + // oct - "3[0-6][0-7]?|" + // oct - "37[0-7]?|" + // oct - "[4-7][0-7]?|" + //oct - ".)"; - - this.$rules = { - "no_regex" : [ - { - token : "comment", - regex : "\\/\\/", - next : "line_comment" - }, - DocCommentHighlightRules.getStartRule("doc-start"), - { - token : "comment", // multi line comment - regex : /\/\*/, - next : "comment" - }, { - token : "string", - regex : "'(?=.)", - next : "qstring" - }, { - token : "string", - regex : '"(?=.)', - next : "qqstring" - }, { - token : "constant.numeric", // hex - regex : /0[xX][0-9a-fA-F]+\b/ - }, { - token : "constant.numeric", // float - regex : /[+-]?\d+(?:(?:\.\d*)?(?:[eE][+-]?\d+)?)?\b/ - }, { - token : [ - "storage.type", "punctuation.operator", "support.function", - "punctuation.operator", "entity.name.function", "text","keyword.operator" - ], - regex : "(" + identifierRe + ")(\\.)(prototype)(\\.)(" + identifierRe +")(\\s*)(=)", - next: "function_arguments" - }, { - token : [ - "storage.type", "punctuation.operator", "entity.name.function", "text", - "keyword.operator", "text", "storage.type", "text", "paren.lparen" - ], - regex : "(" + identifierRe + ")(\\.)(" + identifierRe +")(\\s*)(=)(\\s*)(function)(\\s*)(\\()", - next: "function_arguments" - }, { - token : [ - "entity.name.function", "text", "keyword.operator", "text", "storage.type", - "text", "paren.lparen" - ], - regex : "(" + identifierRe +")(\\s*)(=)(\\s*)(function)(\\s*)(\\()", - next: "function_arguments" - }, { - token : [ - "storage.type", "punctuation.operator", "entity.name.function", "text", - "keyword.operator", "text", - "storage.type", "text", "entity.name.function", "text", "paren.lparen" - ], - regex : "(" + identifierRe + ")(\\.)(" + identifierRe +")(\\s*)(=)(\\s*)(function)(\\s+)(\\w+)(\\s*)(\\()", - next: "function_arguments" - }, { - token : [ - "storage.type", "text", "entity.name.function", "text", "paren.lparen" - ], - regex : "(function)(\\s+)(" + identifierRe + ")(\\s*)(\\()", - next: "function_arguments" - }, { - token : [ - "entity.name.function", "text", "punctuation.operator", - "text", "storage.type", "text", "paren.lparen" - ], - regex : "(" + identifierRe + ")(\\s*)(:)(\\s*)(function)(\\s*)(\\()", - next: "function_arguments" - }, { - token : [ - "text", "text", "storage.type", "text", "paren.lparen" - ], - regex : "(:)(\\s*)(function)(\\s*)(\\()", - next: "function_arguments" - }, { - token : "keyword", - regex : "(?:" + kwBeforeRe + ")\\b", - next : "start" - }, { - token : ["punctuation.operator", "support.function"], - regex : /(\.)(s(?:h(?:ift|ow(?:Mod(?:elessDialog|alDialog)|Help))|croll(?:X|By(?:Pages|Lines)?|Y|To)?|t(?:op|rike)|i(?:n|zeToContent|debar|gnText)|ort|u(?:p|b(?:str(?:ing)?)?)|pli(?:ce|t)|e(?:nd|t(?:Re(?:sizable|questHeader)|M(?:i(?:nutes|lliseconds)|onth)|Seconds|Ho(?:tKeys|urs)|Year|Cursor|Time(?:out)?|Interval|ZOptions|Date|UTC(?:M(?:i(?:nutes|lliseconds)|onth)|Seconds|Hours|Date|FullYear)|FullYear|Active)|arch)|qrt|lice|avePreferences|mall)|h(?:ome|andleEvent)|navigate|c(?:har(?:CodeAt|At)|o(?:s|n(?:cat|textual|firm)|mpile)|eil|lear(?:Timeout|Interval)?|a(?:ptureEvents|ll)|reate(?:StyleSheet|Popup|EventObject))|t(?:o(?:GMTString|S(?:tring|ource)|U(?:TCString|pperCase)|Lo(?:caleString|werCase))|est|a(?:n|int(?:Enabled)?))|i(?:s(?:NaN|Finite)|ndexOf|talics)|d(?:isableExternalCapture|ump|etachEvent)|u(?:n(?:shift|taint|escape|watch)|pdateCommands)|j(?:oin|avaEnabled)|p(?:o(?:p|w)|ush|lugins.refresh|a(?:ddings|rse(?:Int|Float)?)|r(?:int|ompt|eference))|e(?:scape|nableExternalCapture|val|lementFromPoint|x(?:p|ec(?:Script|Command)?))|valueOf|UTC|queryCommand(?:State|Indeterm|Enabled|Value)|f(?:i(?:nd|le(?:ModifiedDate|Size|CreatedDate|UpdatedDate)|xed)|o(?:nt(?:size|color)|rward)|loor|romCharCode)|watch|l(?:ink|o(?:ad|g)|astIndexOf)|a(?:sin|nchor|cos|t(?:tachEvent|ob|an(?:2)?)|pply|lert|b(?:s|ort))|r(?:ou(?:nd|teEvents)|e(?:size(?:By|To)|calc|turnValue|place|verse|l(?:oad|ease(?:Capture|Events)))|andom)|g(?:o|et(?:ResponseHeader|M(?:i(?:nutes|lliseconds)|onth)|Se(?:conds|lection)|Hours|Year|Time(?:zoneOffset)?|Da(?:y|te)|UTC(?:M(?:i(?:nutes|lliseconds)|onth)|Seconds|Hours|Da(?:y|te)|FullYear)|FullYear|A(?:ttention|llResponseHeaders)))|m(?:in|ove(?:B(?:y|elow)|To(?:Absolute)?|Above)|ergeAttributes|a(?:tch|rgins|x))|b(?:toa|ig|o(?:ld|rderWidths)|link|ack))\b(?=\()/ - }, { - token : ["punctuation.operator", "support.function.dom"], - regex : /(\.)(s(?:ub(?:stringData|mit)|plitText|e(?:t(?:NamedItem|Attribute(?:Node)?)|lect))|has(?:ChildNodes|Feature)|namedItem|c(?:l(?:ick|o(?:se|neNode))|reate(?:C(?:omment|DATASection|aption)|T(?:Head|extNode|Foot)|DocumentFragment|ProcessingInstruction|E(?:ntityReference|lement)|Attribute))|tabIndex|i(?:nsert(?:Row|Before|Cell|Data)|tem)|open|delete(?:Row|C(?:ell|aption)|T(?:Head|Foot)|Data)|focus|write(?:ln)?|a(?:dd|ppend(?:Child|Data))|re(?:set|place(?:Child|Data)|move(?:NamedItem|Child|Attribute(?:Node)?)?)|get(?:NamedItem|Element(?:sBy(?:Name|TagName)|ById)|Attribute(?:Node)?)|blur)\b(?=\()/ - }, { - token : ["punctuation.operator", "support.constant"], - regex : /(\.)(s(?:ystemLanguage|cr(?:ipts|ollbars|een(?:X|Y|Top|Left))|t(?:yle(?:Sheets)?|atus(?:Text|bar)?)|ibling(?:Below|Above)|ource|uffixes|e(?:curity(?:Policy)?|l(?:ection|f)))|h(?:istory|ost(?:name)?|as(?:h|Focus))|y|X(?:MLDocument|SLDocument)|n(?:ext|ame(?:space(?:s|URI)|Prop))|M(?:IN_VALUE|AX_VALUE)|c(?:haracterSet|o(?:n(?:structor|trollers)|okieEnabled|lorDepth|mp(?:onents|lete))|urrent|puClass|l(?:i(?:p(?:boardData)?|entInformation)|osed|asses)|alle(?:e|r)|rypto)|t(?:o(?:olbar|p)|ext(?:Transform|Indent|Decoration|Align)|ags)|SQRT(?:1_2|2)|i(?:n(?:ner(?:Height|Width)|put)|ds|gnoreCase)|zIndex|o(?:scpu|n(?:readystatechange|Line)|uter(?:Height|Width)|p(?:sProfile|ener)|ffscreenBuffering)|NEGATIVE_INFINITY|d(?:i(?:splay|alog(?:Height|Top|Width|Left|Arguments)|rectories)|e(?:scription|fault(?:Status|Ch(?:ecked|arset)|View)))|u(?:ser(?:Profile|Language|Agent)|n(?:iqueID|defined)|pdateInterval)|_content|p(?:ixelDepth|ort|ersonalbar|kcs11|l(?:ugins|atform)|a(?:thname|dding(?:Right|Bottom|Top|Left)|rent(?:Window|Layer)?|ge(?:X(?:Offset)?|Y(?:Offset)?))|r(?:o(?:to(?:col|type)|duct(?:Sub)?|mpter)|e(?:vious|fix)))|e(?:n(?:coding|abledPlugin)|x(?:ternal|pando)|mbeds)|v(?:isibility|endor(?:Sub)?|Linkcolor)|URLUnencoded|P(?:I|OSITIVE_INFINITY)|f(?:ilename|o(?:nt(?:Size|Family|Weight)|rmName)|rame(?:s|Element)|gColor)|E|whiteSpace|l(?:i(?:stStyleType|n(?:eHeight|kColor))|o(?:ca(?:tion(?:bar)?|lName)|wsrc)|e(?:ngth|ft(?:Context)?)|a(?:st(?:M(?:odified|atch)|Index|Paren)|yer(?:s|X)|nguage))|a(?:pp(?:MinorVersion|Name|Co(?:deName|re)|Version)|vail(?:Height|Top|Width|Left)|ll|r(?:ity|guments)|Linkcolor|bove)|r(?:ight(?:Context)?|e(?:sponse(?:XML|Text)|adyState))|global|x|m(?:imeTypes|ultiline|enubar|argin(?:Right|Bottom|Top|Left))|L(?:N(?:10|2)|OG(?:10E|2E))|b(?:o(?:ttom|rder(?:Width|RightWidth|BottomWidth|Style|Color|TopWidth|LeftWidth))|ufferDepth|elow|ackground(?:Color|Image)))\b/ - }, { - token : ["storage.type", "punctuation.operator", "support.function.firebug"], - regex : /(console)(\.)(warn|info|log|error|time|timeEnd|assert)\b/ - }, { - token : keywordMapper, - regex : identifierRe - }, { - token : "keyword.operator", - regex : /--|\+\+|[!$%&*+\-~]|===|==|=|!=|!==|<=|>=|<<=|>>=|>>>=|<>|<|>|!|&&|\|\||\?\:|\*=|%=|\+=|\-=|&=|\^=/, - next : "start" - }, { - token : "punctuation.operator", - regex : /\?|\:|\,|\;|\./, - next : "start" - }, { - token : "paren.lparen", - regex : /[\[({]/, - next : "start" - }, { - token : "paren.rparen", - regex : /[\])}]/ - }, { - token : "keyword.operator", - regex : /\/=?/, - next : "start" - }, { - token: "comment", - regex: /^#!.*$/ - } - ], - "start": [ - DocCommentHighlightRules.getStartRule("doc-start"), - { - token : "comment", // multi line comment - regex : "\\/\\*", - next : "comment_regex_allowed" - }, { - token : "comment", - regex : "\\/\\/", - next : "line_comment_regex_allowed" - }, { - token: "string.regexp", - regex: "\\/", - next: "regex" - }, { - token : "text", - regex : "\\s+|^$", - next : "start" - }, { - token: "empty", - regex: "", - next: "no_regex" - } - ], - "regex": [ - { - token: "regexp.keyword.operator", - regex: "\\\\(?:u[\\da-fA-F]{4}|x[\\da-fA-F]{2}|.)" - }, { - token: "string.regexp", - regex: "/[sxngimy]*", - next: "no_regex" - }, { - token : "invalid", - regex: /\{\d+\b,?\d*\}[+*]|[+*$^?][+*]|[$^][?]|\?{3,}/ - }, { - token : "constant.language.escape", - regex: /\(\?[:=!]|\)|\{\d+\b,?\d*\}|[+*]\?|[()$^+*?.]/ - }, { - token : "constant.language.delimiter", - regex: /\|/ - }, { - token: "constant.language.escape", - regex: /\[\^?/, - next: "regex_character_class" - }, { - token: "empty", - regex: "$", - next: "no_regex" - }, { - defaultToken: "string.regexp" - } - ], - "regex_character_class": [ - { - token: "regexp.keyword.operator", - regex: "\\\\(?:u[\\da-fA-F]{4}|x[\\da-fA-F]{2}|.)" - }, { - token: "constant.language.escape", - regex: "]", - next: "regex" - }, { - token: "constant.language.escape", - regex: "-" - }, { - token: "empty", - regex: "$", - next: "no_regex" - }, { - defaultToken: "string.regexp.charachterclass" - } - ], - "function_arguments": [ - { - token: "variable.parameter", - regex: identifierRe - }, { - token: "punctuation.operator", - regex: "[, ]+" - }, { - token: "punctuation.operator", - regex: "$" - }, { - token: "empty", - regex: "", - next: "no_regex" - } - ], - "comment_regex_allowed" : [ - {token : "comment", regex : "\\*\\/", next : "start"}, - {defaultToken : "comment"} - ], - "comment" : [ - {token : "comment", regex : "\\*\\/", next : "no_regex"}, - {defaultToken : "comment"} - ], - "line_comment_regex_allowed" : [ - {token : "comment", regex : "$|^", next : "start"}, - {defaultToken : "comment"} - ], - "line_comment" : [ - {token : "comment", regex : "$|^", next : "no_regex"}, - {defaultToken : "comment"} - ], - "qqstring" : [ - { - token : "constant.language.escape", - regex : escapedRe - }, { - token : "string", - regex : "\\\\$", - next : "qqstring" - }, { - token : "string", - regex : '"|$', - next : "no_regex" - }, { - defaultToken: "string" - } - ], - "qstring" : [ - { - token : "constant.language.escape", - regex : escapedRe - }, { - token : "string", - regex : "\\\\$", - next : "qstring" - }, { - token : "string", - regex : "'|$", - next : "no_regex" - }, { - defaultToken: "string" - } - ] - }; - - this.embedRules(DocCommentHighlightRules, "doc-", - [ DocCommentHighlightRules.getEndRule("no_regex") ]); -}; - -oop.inherits(JavaScriptHighlightRules, TextHighlightRules); - -exports.JavaScriptHighlightRules = JavaScriptHighlightRules; -}); - -ace.define('ace/mode/doc_comment_highlight_rules', ['require', 'exports', 'module' , 'ace/lib/oop', 'ace/mode/text_highlight_rules'], function(require, exports, module) { - - -var oop = require("../lib/oop"); -var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; - -var DocCommentHighlightRules = function() { - - this.$rules = { - "start" : [ { - token : "comment.doc.tag", - regex : "@[\\w\\d_]+" // TODO: fix email addresses - }, { - token : "comment.doc.tag", - regex : "\\bTODO\\b" - }, { - defaultToken : "comment.doc" - }] - }; -}; - -oop.inherits(DocCommentHighlightRules, TextHighlightRules); - -DocCommentHighlightRules.getStartRule = function(start) { - return { - token : "comment.doc", // doc comment - regex : "\\/\\*(?=\\*)", - next : start - }; -}; - -DocCommentHighlightRules.getEndRule = function (start) { - return { - token : "comment.doc", // closing comment - regex : "\\*\\/", - next : start - }; -}; - - -exports.DocCommentHighlightRules = DocCommentHighlightRules; - -}); - -ace.define('ace/mode/matching_brace_outdent', ['require', 'exports', 'module' , 'ace/range'], function(require, exports, module) { - - -var Range = require("../range").Range; - -var MatchingBraceOutdent = function() {}; - -(function() { - - this.checkOutdent = function(line, input) { - if (! /^\s+$/.test(line)) - return false; - - return /^\s*\}/.test(input); - }; - - this.autoOutdent = function(doc, row) { - var line = doc.getLine(row); - var match = line.match(/^(\s*\})/); - - if (!match) return 0; - - var column = match[1].length; - var openBracePos = doc.findMatchingBracket({row: row, column: column}); - - if (!openBracePos || openBracePos.row == row) return 0; - - var indent = this.$getIndent(doc.getLine(openBracePos.row)); - doc.replace(new Range(row, 0, row, column-1), indent); - }; - - this.$getIndent = function(line) { - return line.match(/^\s*/)[0]; - }; - -}).call(MatchingBraceOutdent.prototype); - -exports.MatchingBraceOutdent = MatchingBraceOutdent; -}); - -ace.define('ace/mode/behaviour/cstyle', ['require', 'exports', 'module' , 'ace/lib/oop', 'ace/mode/behaviour', 'ace/token_iterator', 'ace/lib/lang'], function(require, exports, module) { - - -var oop = require("../../lib/oop"); -var Behaviour = require("../behaviour").Behaviour; -var TokenIterator = require("../../token_iterator").TokenIterator; -var lang = require("../../lib/lang"); - -var SAFE_INSERT_IN_TOKENS = - ["text", "paren.rparen", "punctuation.operator"]; -var SAFE_INSERT_BEFORE_TOKENS = - ["text", "paren.rparen", "punctuation.operator", "comment"]; - - -var autoInsertedBrackets = 0; -var autoInsertedRow = -1; -var autoInsertedLineEnd = ""; -var maybeInsertedBrackets = 0; -var maybeInsertedRow = -1; -var maybeInsertedLineStart = ""; -var maybeInsertedLineEnd = ""; - -var CstyleBehaviour = function () { - - CstyleBehaviour.isSaneInsertion = function(editor, session) { - var cursor = editor.getCursorPosition(); - var iterator = new TokenIterator(session, cursor.row, cursor.column); - if (!this.$matchTokenType(iterator.getCurrentToken() || "text", SAFE_INSERT_IN_TOKENS)) { - var iterator2 = new TokenIterator(session, cursor.row, cursor.column + 1); - if (!this.$matchTokenType(iterator2.getCurrentToken() || "text", SAFE_INSERT_IN_TOKENS)) - return false; - } - iterator.stepForward(); - return iterator.getCurrentTokenRow() !== cursor.row || - this.$matchTokenType(iterator.getCurrentToken() || "text", SAFE_INSERT_BEFORE_TOKENS); - }; - - CstyleBehaviour.$matchTokenType = function(token, types) { - return types.indexOf(token.type || token) > -1; - }; - - CstyleBehaviour.recordAutoInsert = function(editor, session, bracket) { - var cursor = editor.getCursorPosition(); - var line = session.doc.getLine(cursor.row); - if (!this.isAutoInsertedClosing(cursor, line, autoInsertedLineEnd[0])) - autoInsertedBrackets = 0; - autoInsertedRow = cursor.row; - autoInsertedLineEnd = bracket + line.substr(cursor.column); - autoInsertedBrackets++; - }; - - CstyleBehaviour.recordMaybeInsert = function(editor, session, bracket) { - var cursor = editor.getCursorPosition(); - var line = session.doc.getLine(cursor.row); - if (!this.isMaybeInsertedClosing(cursor, line)) - maybeInsertedBrackets = 0; - maybeInsertedRow = cursor.row; - maybeInsertedLineStart = line.substr(0, cursor.column) + bracket; - maybeInsertedLineEnd = line.substr(cursor.column); - maybeInsertedBrackets++; - }; - - CstyleBehaviour.isAutoInsertedClosing = function(cursor, line, bracket) { - return autoInsertedBrackets > 0 && - cursor.row === autoInsertedRow && - bracket === autoInsertedLineEnd[0] && - line.substr(cursor.column) === autoInsertedLineEnd; - }; - - CstyleBehaviour.isMaybeInsertedClosing = function(cursor, line) { - return maybeInsertedBrackets > 0 && - cursor.row === maybeInsertedRow && - line.substr(cursor.column) === maybeInsertedLineEnd && - line.substr(0, cursor.column) == maybeInsertedLineStart; - }; - - CstyleBehaviour.popAutoInsertedClosing = function() { - autoInsertedLineEnd = autoInsertedLineEnd.substr(1); - autoInsertedBrackets--; - }; - - CstyleBehaviour.clearMaybeInsertedClosing = function() { - maybeInsertedBrackets = 0; - maybeInsertedRow = -1; - }; - - this.add("braces", "insertion", function (state, action, editor, session, text) { - var cursor = editor.getCursorPosition(); - var line = session.doc.getLine(cursor.row); - if (text == '{') { - var selection = editor.getSelectionRange(); - var selected = session.doc.getTextRange(selection); - if (selected !== "" && selected !== "{" && editor.getWrapBehavioursEnabled()) { - return { - text: '{' + selected + '}', - selection: false - }; - } else if (CstyleBehaviour.isSaneInsertion(editor, session)) { - if (/[\]\}\)]/.test(line[cursor.column]) || editor.inMultiSelectMode) { - CstyleBehaviour.recordAutoInsert(editor, session, "}"); - return { - text: '{}', - selection: [1, 1] - }; - } else { - CstyleBehaviour.recordMaybeInsert(editor, session, "{"); - return { - text: '{', - selection: [1, 1] - }; - } - } - } else if (text == '}') { - var rightChar = line.substring(cursor.column, cursor.column + 1); - if (rightChar == '}') { - var matching = session.$findOpeningBracket('}', {column: cursor.column + 1, row: cursor.row}); - if (matching !== null && CstyleBehaviour.isAutoInsertedClosing(cursor, line, text)) { - CstyleBehaviour.popAutoInsertedClosing(); - return { - text: '', - selection: [1, 1] - }; - } - } - } else if (text == "\n" || text == "\r\n") { - var closing = ""; - if (CstyleBehaviour.isMaybeInsertedClosing(cursor, line)) { - closing = lang.stringRepeat("}", maybeInsertedBrackets); - CstyleBehaviour.clearMaybeInsertedClosing(); - } - var rightChar = line.substring(cursor.column, cursor.column + 1); - if (rightChar === '}') { - var openBracePos = session.findMatchingBracket({row: cursor.row, column: cursor.column+1}, '}'); - if (!openBracePos) - return null; - var next_indent = this.$getIndent(session.getLine(openBracePos.row)); - } else if (closing) { - var next_indent = this.$getIndent(line); - } else { - return; - } - var indent = next_indent + session.getTabString(); - - return { - text: '\n' + indent + '\n' + next_indent + closing, - selection: [1, indent.length, 1, indent.length] - }; - } else { - CstyleBehaviour.clearMaybeInsertedClosing(); - } - }); - - this.add("braces", "deletion", function (state, action, editor, session, range) { - var selected = session.doc.getTextRange(range); - if (!range.isMultiLine() && selected == '{') { - var line = session.doc.getLine(range.start.row); - var rightChar = line.substring(range.end.column, range.end.column + 1); - if (rightChar == '}') { - range.end.column++; - return range; - } else { - maybeInsertedBrackets--; - } - } - }); - - this.add("parens", "insertion", function (state, action, editor, session, text) { - if (text == '(') { - var selection = editor.getSelectionRange(); - var selected = session.doc.getTextRange(selection); - if (selected !== "" && editor.getWrapBehavioursEnabled()) { - return { - text: '(' + selected + ')', - selection: false - }; - } else if (CstyleBehaviour.isSaneInsertion(editor, session)) { - CstyleBehaviour.recordAutoInsert(editor, session, ")"); - return { - text: '()', - selection: [1, 1] - }; - } - } else if (text == ')') { - var cursor = editor.getCursorPosition(); - var line = session.doc.getLine(cursor.row); - var rightChar = line.substring(cursor.column, cursor.column + 1); - if (rightChar == ')') { - var matching = session.$findOpeningBracket(')', {column: cursor.column + 1, row: cursor.row}); - if (matching !== null && CstyleBehaviour.isAutoInsertedClosing(cursor, line, text)) { - CstyleBehaviour.popAutoInsertedClosing(); - return { - text: '', - selection: [1, 1] - }; - } - } - } - }); - - this.add("parens", "deletion", function (state, action, editor, session, range) { - var selected = session.doc.getTextRange(range); - if (!range.isMultiLine() && selected == '(') { - var line = session.doc.getLine(range.start.row); - var rightChar = line.substring(range.start.column + 1, range.start.column + 2); - if (rightChar == ')') { - range.end.column++; - return range; - } - } - }); - - this.add("brackets", "insertion", function (state, action, editor, session, text) { - if (text == '[') { - var selection = editor.getSelectionRange(); - var selected = session.doc.getTextRange(selection); - if (selected !== "" && editor.getWrapBehavioursEnabled()) { - return { - text: '[' + selected + ']', - selection: false - }; - } else if (CstyleBehaviour.isSaneInsertion(editor, session)) { - CstyleBehaviour.recordAutoInsert(editor, session, "]"); - return { - text: '[]', - selection: [1, 1] - }; - } - } else if (text == ']') { - var cursor = editor.getCursorPosition(); - var line = session.doc.getLine(cursor.row); - var rightChar = line.substring(cursor.column, cursor.column + 1); - if (rightChar == ']') { - var matching = session.$findOpeningBracket(']', {column: cursor.column + 1, row: cursor.row}); - if (matching !== null && CstyleBehaviour.isAutoInsertedClosing(cursor, line, text)) { - CstyleBehaviour.popAutoInsertedClosing(); - return { - text: '', - selection: [1, 1] - }; - } - } - } - }); - - this.add("brackets", "deletion", function (state, action, editor, session, range) { - var selected = session.doc.getTextRange(range); - if (!range.isMultiLine() && selected == '[') { - var line = session.doc.getLine(range.start.row); - var rightChar = line.substring(range.start.column + 1, range.start.column + 2); - if (rightChar == ']') { - range.end.column++; - return range; - } - } - }); - - this.add("string_dquotes", "insertion", function (state, action, editor, session, text) { - if (text == '"' || text == "'") { - var quote = text; - var selection = editor.getSelectionRange(); - var selected = session.doc.getTextRange(selection); - if (selected !== "" && selected !== "'" && selected != '"' && editor.getWrapBehavioursEnabled()) { - return { - text: quote + selected + quote, - selection: false - }; - } else { - var cursor = editor.getCursorPosition(); - var line = session.doc.getLine(cursor.row); - var leftChar = line.substring(cursor.column-1, cursor.column); - if (leftChar == '\\') { - return null; - } - var tokens = session.getTokens(selection.start.row); - var col = 0, token; - var quotepos = -1; // Track whether we're inside an open quote. - - for (var x = 0; x < tokens.length; x++) { - token = tokens[x]; - if (token.type == "string") { - quotepos = -1; - } else if (quotepos < 0) { - quotepos = token.value.indexOf(quote); - } - if ((token.value.length + col) > selection.start.column) { - break; - } - col += tokens[x].value.length; - } - if (!token || (quotepos < 0 && token.type !== "comment" && (token.type !== "string" || ((selection.start.column !== token.value.length+col-1) && token.value.lastIndexOf(quote) === token.value.length-1)))) { - if (!CstyleBehaviour.isSaneInsertion(editor, session)) - return; - return { - text: quote + quote, - selection: [1,1] - }; - } else if (token && token.type === "string") { - var rightChar = line.substring(cursor.column, cursor.column + 1); - if (rightChar == quote) { - return { - text: '', - selection: [1, 1] - }; - } - } - } - } - }); - - this.add("string_dquotes", "deletion", function (state, action, editor, session, range) { - var selected = session.doc.getTextRange(range); - if (!range.isMultiLine() && (selected == '"' || selected == "'")) { - var line = session.doc.getLine(range.start.row); - var rightChar = line.substring(range.start.column + 1, range.start.column + 2); - if (rightChar == selected) { - range.end.column++; - return range; - } - } - }); - -}; - -oop.inherits(CstyleBehaviour, Behaviour); - -exports.CstyleBehaviour = CstyleBehaviour; -}); - -ace.define('ace/mode/folding/cstyle', ['require', 'exports', 'module' , 'ace/lib/oop', 'ace/range', 'ace/mode/folding/fold_mode'], function(require, exports, module) { - - -var oop = require("../../lib/oop"); -var Range = require("../../range").Range; -var BaseFoldMode = require("./fold_mode").FoldMode; - -var FoldMode = exports.FoldMode = function(commentRegex) { - if (commentRegex) { - this.foldingStartMarker = new RegExp( - this.foldingStartMarker.source.replace(/\|[^|]*?$/, "|" + commentRegex.start) - ); - this.foldingStopMarker = new RegExp( - this.foldingStopMarker.source.replace(/\|[^|]*?$/, "|" + commentRegex.end) - ); - } -}; -oop.inherits(FoldMode, BaseFoldMode); - -(function() { - - this.foldingStartMarker = /(\{|\[)[^\}\]]*$|^\s*(\/\*)/; - this.foldingStopMarker = /^[^\[\{]*(\}|\])|^[\s\*]*(\*\/)/; - - this.getFoldWidgetRange = function(session, foldStyle, row, forceMultiline) { - var line = session.getLine(row); - var match = line.match(this.foldingStartMarker); - if (match) { - var i = match.index; - - if (match[1]) - return this.openingBracketBlock(session, match[1], row, i); - - var range = session.getCommentFoldRange(row, i + match[0].length, 1); - - if (range && !range.isMultiLine()) { - if (forceMultiline) { - range = this.getSectionRange(session, row); - } else if (foldStyle != "all") - range = null; - } - - return range; - } - - if (foldStyle === "markbegin") - return; - - var match = line.match(this.foldingStopMarker); - if (match) { - var i = match.index + match[0].length; - - if (match[1]) - return this.closingBracketBlock(session, match[1], row, i); - - return session.getCommentFoldRange(row, i, -1); - } - }; - - this.getSectionRange = function(session, row) { - var line = session.getLine(row); - var startIndent = line.search(/\S/); - var startRow = row; - var startColumn = line.length; - row = row + 1; - var endRow = row; - var maxRow = session.getLength(); - while (++row < maxRow) { - line = session.getLine(row); - var indent = line.search(/\S/); - if (indent === -1) - continue; - if (startIndent > indent) - break; - var subRange = this.getFoldWidgetRange(session, "all", row); - - if (subRange) { - if (subRange.start.row <= startRow) { - break; - } else if (subRange.isMultiLine()) { - row = subRange.end.row; - } else if (startIndent == indent) { - break; - } - } - endRow = row; - } - - return new Range(startRow, startColumn, endRow, session.getLine(endRow).length); - }; - -}).call(FoldMode.prototype); - -}); - -ace.define('ace/mode/xml', ['require', 'exports', 'module' , 'ace/lib/oop', 'ace/mode/text', 'ace/tokenizer', 'ace/mode/xml_highlight_rules', 'ace/mode/behaviour/xml', 'ace/mode/folding/xml'], function(require, exports, module) { - - -var oop = require("../lib/oop"); -var TextMode = require("./text").Mode; -var Tokenizer = require("../tokenizer").Tokenizer; -var XmlHighlightRules = require("./xml_highlight_rules").XmlHighlightRules; -var XmlBehaviour = require("./behaviour/xml").XmlBehaviour; -var XmlFoldMode = require("./folding/xml").FoldMode; - -var Mode = function() { - this.HighlightRules = XmlHighlightRules; - this.$behaviour = new XmlBehaviour(); - this.foldingRules = new XmlFoldMode(); -}; - -oop.inherits(Mode, TextMode); - -(function() { - - this.blockComment = {start: ""}; - - this.$id = "ace/mode/xml"; -}).call(Mode.prototype); - -exports.Mode = Mode; -}); - -ace.define('ace/mode/xml_highlight_rules', ['require', 'exports', 'module' , 'ace/lib/oop', 'ace/mode/xml_util', 'ace/mode/text_highlight_rules'], function(require, exports, module) { - - -var oop = require("../lib/oop"); -var xmlUtil = require("./xml_util"); -var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; - -var XmlHighlightRules = function(normalize) { - this.$rules = { - start : [ - {token : "punctuation.string.begin", regex : "<\\!\\[CDATA\\[", next : "cdata"}, - { - token : ["punctuation.instruction.begin", "keyword.instruction"], - regex : "(<\\?)(xml)(?=[\\s])", next : "xml_declaration" - }, - { - token : ["punctuation.instruction.begin", "keyword.instruction"], - regex : "(<\\?)([-_a-zA-Z0-9]+)", next : "instruction" - }, - {token : "comment", regex : "<\\!--", next : "comment"}, - { - token : ["punctuation.doctype.begin", "meta.tag.doctype"], - regex : "(<\\!)(DOCTYPE)(?=[\\s])", next : "doctype" - }, - {include : "tag"}, - {include : "reference"} - ], - - xml_declaration : [ - {include : "attributes"}, - {include : "instruction"} - ], - - instruction : [ - {token : "punctuation.instruction.end", regex : "\\?>", next : "start"} - ], - - doctype : [ - {include : "space"}, - {include : "string"}, - {token : "punctuation.doctype.end", regex : ">", next : "start"}, - {token : "xml-pe", regex : "[-_a-zA-Z0-9:]+"}, - {token : "punctuation.begin", regex : "\\[", push : "declarations"} - ], - - declarations : [{ - token : "text", - regex : "\\s+" - }, { - token: "punctuation.end", - regex: "]", - next: "pop" - }, { - token : ["punctuation.begin", "keyword"], - regex : "(<\\!)([-_a-zA-Z0-9]+)", - push : [{ - token : "text", - regex : "\\s+" - }, - { - token : "punctuation.end", - regex : ">", - next : "pop" - }, - {include : "string"}] - }], - - cdata : [ - {token : "string.end", regex : "\\]\\]>", next : "start"}, - {token : "text", regex : "\\s+"}, - {token : "text", regex : "(?:[^\\]]|\\](?!\\]>))+"} - ], - - comment : [ - {token : "comment", regex : "-->", next : "start"}, - {defaultToken : "comment"} - ], - - tag : [{ - token : ["meta.tag.punctuation.begin", "meta.tag.name"], - regex : "(<)((?:[-_a-zA-Z0-9]+:)?[-_a-zA-Z0-9]+)", - next: [ - {include : "attributes"}, - {token : "meta.tag.punctuation.end", regex : "/?>", next : "start"} - ] - }, { - token : ["meta.tag.punctuation.begin", "meta.tag.name"], - regex : "(", next : "start"} - ] - }], - - space : [ - {token : "text", regex : "\\s+"} - ], - - reference : [{ - token : "constant.language.escape", - regex : "(?:&#[0-9]+;)|(?:&#x[0-9a-fA-F]+;)|(?:&[a-zA-Z0-9_:\\.-]+;)" - }, { - token : "text", regex : "&" - }], - - string: [{ - token : "string", - regex : "'", - push : "qstring_inner" - }, { - token : "string", - regex : '"', - push : "qqstring_inner" - }], - - qstring_inner: [ - {token : "string", regex: "'", next: "pop"}, - {include : "reference"}, - {defaultToken : "string"} - ], - - qqstring_inner: [ - {token : "string", regex: '"', next: "pop"}, - {include : "reference"}, - {defaultToken : "string"} - ], - - attributes: [{ - token : "entity.other.attribute-name", - regex : "(?:[-_a-zA-Z0-9]+:)?[-_a-zA-Z0-9]+" - }, { - token : "keyword.operator.separator", - regex : "=" - }, { - include : "space" - }, { - include : "string" - }] - }; - - if (this.constructor === XmlHighlightRules) - this.normalizeRules(); -}; - - -(function() { - - this.embedTagRules = function(HighlightRules, prefix, tag){ - this.$rules.tag.unshift({ - token : ["meta.tag.punctuation.begin", "meta.tag.name." + tag], - regex : "(<)(" + tag + ")", - next: [ - {include : "space"}, - {include : "attributes"}, - {token : "meta.tag.punctuation.end", regex : "/?>", next : prefix + "start"} - ] - }); - - this.$rules[tag + "-end"] = [ - {include : "space"}, - {token : "meta.tag.punctuation.end", regex : ">", next: "start", - onMatch : function(value, currentState, stack) { - stack.splice(0); - return this.token; - }} - ] - - this.embedRules(HighlightRules, prefix, [{ - token: ["meta.tag.punctuation.begin", "meta.tag.name." + tag], - regex : "(" - }]); - }; - -}).call(TextHighlightRules.prototype); - -oop.inherits(XmlHighlightRules, TextHighlightRules); - -exports.XmlHighlightRules = XmlHighlightRules; -}); - -ace.define('ace/mode/xml_util', ['require', 'exports', 'module' ], function(require, exports, module) { - - -function string(state) { - return [{ - token : "string", - regex : '"', - next : state + "_qqstring" - }, { - token : "string", - regex : "'", - next : state + "_qstring" - }]; -} - -function multiLineString(quote, state) { - return [ - {token : "string", regex : quote, next : state}, - { - token : "constant.language.escape", - regex : "(?:&#[0-9]+;)|(?:&#x[0-9a-fA-F]+;)|(?:&[a-zA-Z0-9_:\\.-]+;)" - }, - {defaultToken : "string"} - ]; -} - -exports.tag = function(states, name, nextState, tagMap) { - states[name] = [{ - token : "text", - regex : "\\s+" - }, { - - token : !tagMap ? "meta.tag.tag-name" : function(value) { - if (tagMap[value]) - return "meta.tag.tag-name." + tagMap[value]; - else - return "meta.tag.tag-name"; - }, - regex : "[-_a-zA-Z0-9:]+", - next : name + "_embed_attribute_list" - }, { - token: "empty", - regex: "", - next : name + "_embed_attribute_list" - }]; - - states[name + "_qstring"] = multiLineString("'", name + "_embed_attribute_list"); - states[name + "_qqstring"] = multiLineString("\"", name + "_embed_attribute_list"); - - states[name + "_embed_attribute_list"] = [{ - token : "meta.tag.r", - regex : "/?>", - next : nextState - }, { - token : "keyword.operator", - regex : "=" - }, { - token : "entity.other.attribute-name", - regex : "[-_a-zA-Z0-9:]+" - }, { - token : "constant.numeric", // float - regex : "[+-]?\\d+(?:(?:\\.\\d*)?(?:[eE][+-]?\\d+)?)?\\b" - }, { - token : "text", - regex : "\\s+" - }].concat(string(name)); -}; - -}); - -ace.define('ace/mode/behaviour/xml', ['require', 'exports', 'module' , 'ace/lib/oop', 'ace/mode/behaviour', 'ace/mode/behaviour/cstyle', 'ace/token_iterator'], function(require, exports, module) { - - -var oop = require("../../lib/oop"); -var Behaviour = require("../behaviour").Behaviour; -var CstyleBehaviour = require("./cstyle").CstyleBehaviour; -var TokenIterator = require("../../token_iterator").TokenIterator; - -function hasType(token, type) { - var tokenTypes = token.type.split('.'); - return type.split('.').every(function(type){ - return (tokenTypes.indexOf(type) !== -1); - }); - return hasType; -} - -var XmlBehaviour = function () { - - this.inherit(CstyleBehaviour, ["string_dquotes"]); // Get string behaviour - - this.add("autoclosing", "insertion", function (state, action, editor, session, text) { - if (text == '>') { - var position = editor.getCursorPosition(); - var iterator = new TokenIterator(session, position.row, position.column); - var token = iterator.getCurrentToken(); - - if (token && hasType(token, 'string') && iterator.getCurrentTokenColumn() + token.value.length > position.column) - return; - var atCursor = false; - if (!token || !hasType(token, 'meta.tag') && !(hasType(token, 'text') && token.value.match('/'))){ - do { - token = iterator.stepBackward(); - } while (token && (hasType(token, 'string') || hasType(token, 'keyword.operator') || hasType(token, 'entity.attribute-name') || hasType(token, 'text'))); - } else { - atCursor = true; - } - if (!token || !hasType(token, 'meta.tag.name') || iterator.stepBackward().value.match('/')) { - return; - } - var tag = token.value; - if (atCursor){ - var tag = tag.substring(0, position.column - token.start); - } - - return { - text: '>' + '', - selection: [1, 1] - } - } - }); - - this.add('autoindent', 'insertion', function (state, action, editor, session, text) { - if (text == "\n") { - var cursor = editor.getCursorPosition(); - var line = session.getLine(cursor.row); - var rightChars = line.substring(cursor.column, cursor.column + 2); - if (rightChars == '?)/; - this._parseTag = function(tag) { - - var match = tag.match(this.tagRe); - var column = 0; - - return { - value: tag, - match: match ? match[2] : "", - closing: match ? !!match[3] : false, - selfClosing: match ? !!match[5] || match[2] == "/>" : false, - tagName: match ? match[4] : "", - column: match[1] ? column + match[1].length : column - }; - }; - this._readTagForward = function(iterator) { - var token = iterator.getCurrentToken(); - if (!token) - return null; - - var value = ""; - var start; - - do { - if (token.type.lastIndexOf("meta.tag", 0) === 0) { - if (!start) { - var start = { - row: iterator.getCurrentTokenRow(), - column: iterator.getCurrentTokenColumn() - }; - } - value += token.value; - if (value.indexOf(">") !== -1) { - var tag = this._parseTag(value); - tag.start = start; - tag.end = { - row: iterator.getCurrentTokenRow(), - column: iterator.getCurrentTokenColumn() + token.value.length - }; - iterator.stepForward(); - return tag; - } - } - } while(token = iterator.stepForward()); - - return null; - }; - - this._readTagBackward = function(iterator) { - var token = iterator.getCurrentToken(); - if (!token) - return null; - - var value = ""; - var end; - - do { - if (token.type.lastIndexOf("meta.tag", 0) === 0) { - if (!end) { - end = { - row: iterator.getCurrentTokenRow(), - column: iterator.getCurrentTokenColumn() + token.value.length - }; - } - value = token.value + value; - if (value.indexOf("<") !== -1) { - var tag = this._parseTag(value); - tag.end = end; - tag.start = { - row: iterator.getCurrentTokenRow(), - column: iterator.getCurrentTokenColumn() - }; - iterator.stepBackward(); - return tag; - } - } - } while(token = iterator.stepBackward()); - - return null; - }; - - this._pop = function(stack, tag) { - while (stack.length) { - - var top = stack[stack.length-1]; - if (!tag || top.tagName == tag.tagName) { - return stack.pop(); - } - else if (this.voidElements[tag.tagName]) { - return; - } - else if (this.voidElements[top.tagName]) { - stack.pop(); - continue; - } else { - return null; - } - } - }; - - this.getFoldWidgetRange = function(session, foldStyle, row) { - var firstTag = this._getFirstTagInLine(session, row); - - if (!firstTag.match) - return null; - - var isBackward = firstTag.closing || firstTag.selfClosing; - var stack = []; - var tag; - - if (!isBackward) { - var iterator = new TokenIterator(session, row, firstTag.column); - var start = { - row: row, - column: firstTag.column + firstTag.tagName.length + 2 - }; - while (tag = this._readTagForward(iterator)) { - if (tag.selfClosing) { - if (!stack.length) { - tag.start.column += tag.tagName.length + 2; - tag.end.column -= 2; - return Range.fromPoints(tag.start, tag.end); - } else - continue; - } - - if (tag.closing) { - this._pop(stack, tag); - if (stack.length == 0) - return Range.fromPoints(start, tag.start); - } - else { - stack.push(tag) - } - } - } - else { - var iterator = new TokenIterator(session, row, firstTag.column + firstTag.match.length); - var end = { - row: row, - column: firstTag.column - }; - - while (tag = this._readTagBackward(iterator)) { - if (tag.selfClosing) { - if (!stack.length) { - tag.start.column += tag.tagName.length + 2; - tag.end.column -= 2; - return Range.fromPoints(tag.start, tag.end); - } else - continue; - } - - if (!tag.closing) { - this._pop(stack, tag); - if (stack.length == 0) { - tag.start.column += tag.tagName.length + 2; - return Range.fromPoints(tag.start, end); - } - } - else { - stack.push(tag) - } - } - } - - }; - -}).call(FoldMode.prototype); - -}); - -ace.define('ace/mode/html', ['require', 'exports', 'module' , 'ace/lib/oop', 'ace/mode/text', 'ace/mode/javascript', 'ace/mode/css', 'ace/tokenizer', 'ace/mode/html_highlight_rules', 'ace/mode/behaviour/html', 'ace/mode/folding/html', 'ace/mode/html_completions'], function(require, exports, module) { - - -var oop = require("../lib/oop"); -var TextMode = require("./text").Mode; -var JavaScriptMode = require("./javascript").Mode; -var CssMode = require("./css").Mode; -var Tokenizer = require("../tokenizer").Tokenizer; -var HtmlHighlightRules = require("./html_highlight_rules").HtmlHighlightRules; -var HtmlBehaviour = require("./behaviour/html").HtmlBehaviour; -var HtmlFoldMode = require("./folding/html").FoldMode; -var HtmlCompletions = require("./html_completions").HtmlCompletions; - -var Mode = function() { - this.HighlightRules = HtmlHighlightRules; - this.$behaviour = new HtmlBehaviour(); - this.$completer = new HtmlCompletions(); - - this.createModeDelegates({ - "js-": JavaScriptMode, - "css-": CssMode - }); - - this.foldingRules = new HtmlFoldMode(); -}; -oop.inherits(Mode, TextMode); - -(function() { - - this.blockComment = {start: ""}; - - this.getNextLineIndent = function(state, line, tab) { - return this.$getIndent(line); - }; - - this.checkOutdent = function(state, line, input) { - return false; - }; - - this.getCompletions = function(state, session, pos, prefix) { - return this.$completer.getCompletions(state, session, pos, prefix); - }; - - this.$id = "ace/mode/html"; -}).call(Mode.prototype); - -exports.Mode = Mode; -}); - -ace.define('ace/mode/css', ['require', 'exports', 'module' , 'ace/lib/oop', 'ace/mode/text', 'ace/tokenizer', 'ace/mode/css_highlight_rules', 'ace/mode/matching_brace_outdent', 'ace/worker/worker_client', 'ace/mode/behaviour/css', 'ace/mode/folding/cstyle'], function(require, exports, module) { - - -var oop = require("../lib/oop"); -var TextMode = require("./text").Mode; -var Tokenizer = require("../tokenizer").Tokenizer; -var CssHighlightRules = require("./css_highlight_rules").CssHighlightRules; -var MatchingBraceOutdent = require("./matching_brace_outdent").MatchingBraceOutdent; -var WorkerClient = require("../worker/worker_client").WorkerClient; -var CssBehaviour = require("./behaviour/css").CssBehaviour; -var CStyleFoldMode = require("./folding/cstyle").FoldMode; - -var Mode = function() { - this.HighlightRules = CssHighlightRules; - this.$outdent = new MatchingBraceOutdent(); - this.$behaviour = new CssBehaviour(); - this.foldingRules = new CStyleFoldMode(); -}; -oop.inherits(Mode, TextMode); - -(function() { - - this.foldingRules = "cStyle"; - this.blockComment = {start: "/*", end: "*/"}; - - this.getNextLineIndent = function(state, line, tab) { - var indent = this.$getIndent(line); - var tokens = this.getTokenizer().getLineTokens(line, state).tokens; - if (tokens.length && tokens[tokens.length-1].type == "comment") { - return indent; - } - - var match = line.match(/^.*\{\s*$/); - if (match) { - indent += tab; - } - - return indent; - }; - - this.checkOutdent = function(state, line, input) { - return this.$outdent.checkOutdent(line, input); - }; - - this.autoOutdent = function(state, doc, row) { - this.$outdent.autoOutdent(doc, row); - }; - - this.createWorker = function(session) { - var worker = new WorkerClient(["ace"], "ace/mode/css_worker", "Worker"); - worker.attachToDocument(session.getDocument()); - - worker.on("csslint", function(e) { - session.setAnnotations(e.data); - }); - - worker.on("terminate", function() { - session.clearAnnotations(); - }); - - return worker; - }; - - this.$id = "ace/mode/css"; -}).call(Mode.prototype); - -exports.Mode = Mode; - -}); - -ace.define('ace/mode/css_highlight_rules', ['require', 'exports', 'module' , 'ace/lib/oop', 'ace/lib/lang', 'ace/mode/text_highlight_rules'], function(require, exports, module) { - - -var oop = require("../lib/oop"); -var lang = require("../lib/lang"); -var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; -var supportType = exports.supportType = "animation-fill-mode|alignment-adjust|alignment-baseline|animation-delay|animation-direction|animation-duration|animation-iteration-count|animation-name|animation-play-state|animation-timing-function|animation|appearance|azimuth|backface-visibility|background-attachment|background-break|background-clip|background-color|background-image|background-origin|background-position|background-repeat|background-size|background|baseline-shift|binding|bleed|bookmark-label|bookmark-level|bookmark-state|bookmark-target|border-bottom|border-bottom-color|border-bottom-left-radius|border-bottom-right-radius|border-bottom-style|border-bottom-width|border-collapse|border-color|border-image|border-image-outset|border-image-repeat|border-image-slice|border-image-source|border-image-width|border-left|border-left-color|border-left-style|border-left-width|border-radius|border-right|border-right-color|border-right-style|border-right-width|border-spacing|border-style|border-top|border-top-color|border-top-left-radius|border-top-right-radius|border-top-style|border-top-width|border-width|border|bottom|box-align|box-decoration-break|box-direction|box-flex-group|box-flex|box-lines|box-ordinal-group|box-orient|box-pack|box-shadow|box-sizing|break-after|break-before|break-inside|caption-side|clear|clip|color-profile|color|column-count|column-fill|column-gap|column-rule|column-rule-color|column-rule-style|column-rule-width|column-span|column-width|columns|content|counter-increment|counter-reset|crop|cue-after|cue-before|cue|cursor|direction|display|dominant-baseline|drop-initial-after-adjust|drop-initial-after-align|drop-initial-before-adjust|drop-initial-before-align|drop-initial-size|drop-initial-value|elevation|empty-cells|fit|fit-position|float-offset|float|font-family|font-size|font-size-adjust|font-stretch|font-style|font-variant|font-weight|font|grid-columns|grid-rows|hanging-punctuation|height|hyphenate-after|hyphenate-before|hyphenate-character|hyphenate-lines|hyphenate-resource|hyphens|icon|image-orientation|image-rendering|image-resolution|inline-box-align|left|letter-spacing|line-height|line-stacking-ruby|line-stacking-shift|line-stacking-strategy|line-stacking|list-style-image|list-style-position|list-style-type|list-style|margin-bottom|margin-left|margin-right|margin-top|margin|mark-after|mark-before|mark|marks|marquee-direction|marquee-play-count|marquee-speed|marquee-style|max-height|max-width|min-height|min-width|move-to|nav-down|nav-index|nav-left|nav-right|nav-up|opacity|orphans|outline-color|outline-offset|outline-style|outline-width|outline|overflow-style|overflow-x|overflow-y|overflow|padding-bottom|padding-left|padding-right|padding-top|padding|page-break-after|page-break-before|page-break-inside|page-policy|page|pause-after|pause-before|pause|perspective-origin|perspective|phonemes|pitch-range|pitch|play-during|pointer-events|position|presentation-level|punctuation-trim|quotes|rendering-intent|resize|rest-after|rest-before|rest|richness|right|rotation-point|rotation|ruby-align|ruby-overhang|ruby-position|ruby-span|size|speak-header|speak-numeral|speak-punctuation|speak|speech-rate|stress|string-set|table-layout|target-name|target-new|target-position|target|text-align-last|text-align|text-decoration|text-emphasis|text-height|text-indent|text-justify|text-outline|text-shadow|text-transform|text-wrap|top|transform-origin|transform-style|transform|transition-delay|transition-duration|transition-property|transition-timing-function|transition|unicode-bidi|vertical-align|visibility|voice-balance|voice-duration|voice-family|voice-pitch-range|voice-pitch|voice-rate|voice-stress|voice-volume|volume|white-space-collapse|white-space|widows|width|word-break|word-spacing|word-wrap|z-index"; -var supportFunction = exports.supportFunction = "rgb|rgba|url|attr|counter|counters"; -var supportConstant = exports.supportConstant = "absolute|after-edge|after|all-scroll|all|alphabetic|always|antialiased|armenian|auto|avoid-column|avoid-page|avoid|balance|baseline|before-edge|before|below|bidi-override|block-line-height|block|bold|bolder|border-box|both|bottom|box|break-all|break-word|capitalize|caps-height|caption|center|central|char|circle|cjk-ideographic|clone|close-quote|col-resize|collapse|column|consider-shifts|contain|content-box|cover|crosshair|cubic-bezier|dashed|decimal-leading-zero|decimal|default|disabled|disc|disregard-shifts|distribute-all-lines|distribute-letter|distribute-space|distribute|dotted|double|e-resize|ease-in|ease-in-out|ease-out|ease|ellipsis|end|exclude-ruby|fill|fixed|georgian|glyphs|grid-height|groove|hand|hanging|hebrew|help|hidden|hiragana-iroha|hiragana|horizontal|icon|ideograph-alpha|ideograph-numeric|ideograph-parenthesis|ideograph-space|ideographic|inactive|include-ruby|inherit|initial|inline-block|inline-box|inline-line-height|inline-table|inline|inset|inside|inter-ideograph|inter-word|invert|italic|justify|katakana-iroha|katakana|keep-all|last|left|lighter|line-edge|line-through|line|linear|list-item|local|loose|lower-alpha|lower-greek|lower-latin|lower-roman|lowercase|lr-tb|ltr|mathematical|max-height|max-size|medium|menu|message-box|middle|move|n-resize|ne-resize|newspaper|no-change|no-close-quote|no-drop|no-open-quote|no-repeat|none|normal|not-allowed|nowrap|nw-resize|oblique|open-quote|outset|outside|overline|padding-box|page|pointer|pre-line|pre-wrap|pre|preserve-3d|progress|relative|repeat-x|repeat-y|repeat|replaced|reset-size|ridge|right|round|row-resize|rtl|s-resize|scroll|se-resize|separate|slice|small-caps|small-caption|solid|space|square|start|static|status-bar|step-end|step-start|steps|stretch|strict|sub|super|sw-resize|table-caption|table-cell|table-column-group|table-column|table-footer-group|table-header-group|table-row-group|table-row|table|tb-rl|text-after-edge|text-before-edge|text-bottom|text-size|text-top|text|thick|thin|transparent|underline|upper-alpha|upper-latin|upper-roman|uppercase|use-script|vertical-ideographic|vertical-text|visible|w-resize|wait|whitespace|z-index|zero"; -var supportConstantColor = exports.supportConstantColor = "aqua|black|blue|fuchsia|gray|green|lime|maroon|navy|olive|orange|purple|red|silver|teal|white|yellow"; -var supportConstantFonts = exports.supportConstantFonts = "arial|century|comic|courier|garamond|georgia|helvetica|impact|lucida|symbol|system|tahoma|times|trebuchet|utopia|verdana|webdings|sans-serif|serif|monospace"; - -var numRe = exports.numRe = "\\-?(?:(?:[0-9]+)|(?:[0-9]*\\.[0-9]+))"; -var pseudoElements = exports.pseudoElements = "(\\:+)\\b(after|before|first-letter|first-line|moz-selection|selection)\\b"; -var pseudoClasses = exports.pseudoClasses = "(:)\\b(active|checked|disabled|empty|enabled|first-child|first-of-type|focus|hover|indeterminate|invalid|last-child|last-of-type|link|not|nth-child|nth-last-child|nth-last-of-type|nth-of-type|only-child|only-of-type|required|root|target|valid|visited)\\b"; - -var CssHighlightRules = function() { - - var keywordMapper = this.createKeywordMapper({ - "support.function": supportFunction, - "support.constant": supportConstant, - "support.type": supportType, - "support.constant.color": supportConstantColor, - "support.constant.fonts": supportConstantFonts - }, "text", true); - - this.$rules = { - "start" : [{ - token : "comment", // multi line comment - regex : "\\/\\*", - push : "comment" - }, { - token: "paren.lparen", - regex: "\\{", - push: "ruleset" - }, { - token: "string", - regex: "@.*?{", - push: "media" - }, { - token: "keyword", - regex: "#[a-z0-9-_]+" - }, { - token: "variable", - regex: "\\.[a-z0-9-_]+" - }, { - token: "string", - regex: ":[a-z0-9-_]+" - }, { - token: "constant", - regex: "[a-z0-9-_]+" - }, { - caseInsensitive: true - }], - - "media" : [{ - token : "comment", // multi line comment - regex : "\\/\\*", - push : "comment" - }, { - token: "paren.lparen", - regex: "\\{", - push: "ruleset" - }, { - token: "string", - regex: "\\}", - next: "pop" - }, { - token: "keyword", - regex: "#[a-z0-9-_]+" - }, { - token: "variable", - regex: "\\.[a-z0-9-_]+" - }, { - token: "string", - regex: ":[a-z0-9-_]+" - }, { - token: "constant", - regex: "[a-z0-9-_]+" - }, { - caseInsensitive: true - }], - - "comment" : [{ - token : "comment", - regex : "\\*\\/", - next : "pop" - }, { - defaultToken : "comment" - }], - - "ruleset" : [ - { - token : "paren.rparen", - regex : "\\}", - next: "pop" - }, { - token : "comment", // multi line comment - regex : "\\/\\*", - push : "comment" - }, { - token : "string", // single line - regex : '["](?:(?:\\\\.)|(?:[^"\\\\]))*?["]' - }, { - token : "string", // single line - regex : "['](?:(?:\\\\.)|(?:[^'\\\\]))*?[']" - }, { - token : ["constant.numeric", "keyword"], - regex : "(" + numRe + ")(ch|cm|deg|em|ex|fr|gd|grad|Hz|in|kHz|mm|ms|pc|pt|px|rad|rem|s|turn|vh|vm|vw|%)" - }, { - token : "constant.numeric", - regex : numRe - }, { - token : "constant.numeric", // hex6 color - regex : "#[a-f0-9]{6}" - }, { - token : "constant.numeric", // hex3 color - regex : "#[a-f0-9]{3}" - }, { - token : ["punctuation", "entity.other.attribute-name.pseudo-element.css"], - regex : pseudoElements - }, { - token : ["punctuation", "entity.other.attribute-name.pseudo-class.css"], - regex : pseudoClasses - }, { - token : ["support.function", "string", "support.function"], - regex : "(url\\()(.*)(\\))" - }, { - token : keywordMapper, - regex : "\\-?[a-zA-Z_][a-zA-Z0-9_\\-]*" - }, { - caseInsensitive: true - }] - }; - - this.normalizeRules(); -}; - -oop.inherits(CssHighlightRules, TextHighlightRules); - -exports.CssHighlightRules = CssHighlightRules; - -}); - -ace.define('ace/mode/behaviour/css', ['require', 'exports', 'module' , 'ace/lib/oop', 'ace/mode/behaviour', 'ace/mode/behaviour/cstyle', 'ace/token_iterator'], function(require, exports, module) { - - -var oop = require("../../lib/oop"); -var Behaviour = require("../behaviour").Behaviour; -var CstyleBehaviour = require("./cstyle").CstyleBehaviour; -var TokenIterator = require("../../token_iterator").TokenIterator; - -var CssBehaviour = function () { - - this.inherit(CstyleBehaviour); - - this.add("colon", "insertion", function (state, action, editor, session, text) { - if (text === ':') { - var cursor = editor.getCursorPosition(); - var iterator = new TokenIterator(session, cursor.row, cursor.column); - var token = iterator.getCurrentToken(); - if (token && token.value.match(/\s+/)) { - token = iterator.stepBackward(); - } - if (token && token.type === 'support.type') { - var line = session.doc.getLine(cursor.row); - var rightChar = line.substring(cursor.column, cursor.column + 1); - if (rightChar === ':') { - return { - text: '', - selection: [1, 1] - } - } - if (!line.substring(cursor.column).match(/^\s*;/)) { - return { - text: ':;', - selection: [1, 1] - } - } - } - } - }); - - this.add("colon", "deletion", function (state, action, editor, session, range) { - var selected = session.doc.getTextRange(range); - if (!range.isMultiLine() && selected === ':') { - var cursor = editor.getCursorPosition(); - var iterator = new TokenIterator(session, cursor.row, cursor.column); - var token = iterator.getCurrentToken(); - if (token && token.value.match(/\s+/)) { - token = iterator.stepBackward(); - } - if (token && token.type === 'support.type') { - var line = session.doc.getLine(range.start.row); - var rightChar = line.substring(range.end.column, range.end.column + 1); - if (rightChar === ';') { - range.end.column ++; - return range; - } - } - } - }); - - this.add("semicolon", "insertion", function (state, action, editor, session, text) { - if (text === ';') { - var cursor = editor.getCursorPosition(); - var line = session.doc.getLine(cursor.row); - var rightChar = line.substring(cursor.column, cursor.column + 1); - if (rightChar === ';') { - return { - text: '', - selection: [1, 1] - } - } - } - }); - -} -oop.inherits(CssBehaviour, CstyleBehaviour); - -exports.CssBehaviour = CssBehaviour; -}); - -ace.define('ace/mode/html_highlight_rules', ['require', 'exports', 'module' , 'ace/lib/oop', 'ace/lib/lang', 'ace/mode/css_highlight_rules', 'ace/mode/javascript_highlight_rules', 'ace/mode/xml_highlight_rules'], function(require, exports, module) { - - -var oop = require("../lib/oop"); -var lang = require("../lib/lang"); -var CssHighlightRules = require("./css_highlight_rules").CssHighlightRules; -var JavaScriptHighlightRules = require("./javascript_highlight_rules").JavaScriptHighlightRules; -var XmlHighlightRules = require("./xml_highlight_rules").XmlHighlightRules; - -var tagMap = lang.createMap({ - a : 'anchor', - button : 'form', - form : 'form', - img : 'image', - input : 'form', - label : 'form', - option : 'form', - script : 'script', - select : 'form', - textarea : 'form', - style : 'style', - table : 'table', - tbody : 'table', - td : 'table', - tfoot : 'table', - th : 'table', - tr : 'table' -}); - -var HtmlHighlightRules = function() { - XmlHighlightRules.call(this); - - this.addRules({ - attributes: [{ - include : "space" - }, { - token : "entity.other.attribute-name", - regex : "[-_a-zA-Z0-9:]+" - }, { - token : "keyword.operator.separator", - regex : "=", - push : [{ - include: "space" - }, { - token : "string", - regex : "[^<>='\"`\\s]+", - next : "pop" - }, { - token : "empty", - regex : "", - next : "pop" - }] - }, { - include : "string" - }], - tag: [{ - token : function(start, tag) { - var group = tagMap[tag]; - return ["meta.tag.punctuation.begin", - "meta.tag.name" + (group ? "." + group : "")]; - }, - regex : "(<)([-_a-zA-Z0-9:]+)", - next: "start_tag_stuff" - }, { - token : function(start, tag) { - var group = tagMap[tag]; - return ["meta.tag.punctuation.begin", - "meta.tag.name" + (group ? "." + group : "")]; - }, - regex : "(", next : "start"} - ], - end_tag_stuff: [ - {include : "space"}, - {token : "meta.tag.punctuation.end", regex : ">", next : "start"} - ] - }); - - this.embedTagRules(CssHighlightRules, "css-", "style"); - this.embedTagRules(JavaScriptHighlightRules, "js-", "script"); - - if (this.constructor === HtmlHighlightRules) - this.normalizeRules(); -}; - -oop.inherits(HtmlHighlightRules, XmlHighlightRules); - -exports.HtmlHighlightRules = HtmlHighlightRules; -}); - -ace.define('ace/mode/behaviour/html', ['require', 'exports', 'module' , 'ace/lib/oop', 'ace/mode/behaviour/xml', 'ace/mode/behaviour/cstyle', 'ace/token_iterator'], function(require, exports, module) { - - -var oop = require("../../lib/oop"); -var XmlBehaviour = require("../behaviour/xml").XmlBehaviour; -var CstyleBehaviour = require("./cstyle").CstyleBehaviour; -var TokenIterator = require("../../token_iterator").TokenIterator; -var voidElements = ['area', 'base', 'br', 'col', 'command', 'embed', 'hr', 'img', 'input', 'keygen', 'link', 'meta', 'param', 'source', 'track', 'wbr']; - -function hasType(token, type) { - var tokenTypes = token.type.split('.'); - return type.split('.').every(function(type){ - return (tokenTypes.indexOf(type) !== -1); - }); - return hasType; -} - -var HtmlBehaviour = function () { - - this.inherit(XmlBehaviour); // Get xml behaviour - - this.add("autoclosing", "insertion", function (state, action, editor, session, text) { - if (text == '>') { - var position = editor.getCursorPosition(); - var iterator = new TokenIterator(session, position.row, position.column); - var token = iterator.getCurrentToken(); - - if (token && hasType(token, 'string') && iterator.getCurrentTokenColumn() + token.value.length > position.column) - return; - var atCursor = false; - if (!token || !hasType(token, 'meta.tag') && !(hasType(token, 'text') && token.value.match('/'))){ - do { - token = iterator.stepBackward(); - } while (token && (hasType(token, 'string') || hasType(token, 'keyword.operator') || hasType(token, 'entity.attribute-name') || hasType(token, 'text'))); - } else { - atCursor = true; - } - if (!token || !hasType(token, 'meta.tag.name') || iterator.stepBackward().value.match('/')) { - return; - } - var element = token.value; - if (atCursor){ - var element = element.substring(0, position.column - token.start); - } - if (voidElements.indexOf(element) !== -1){ - return; - } - return { - text: '>' + '', - selection: [1, 1] - } - } - }); -} -oop.inherits(HtmlBehaviour, XmlBehaviour); - -exports.HtmlBehaviour = HtmlBehaviour; -}); - -ace.define('ace/mode/folding/html', ['require', 'exports', 'module' , 'ace/lib/oop', 'ace/mode/folding/mixed', 'ace/mode/folding/xml', 'ace/mode/folding/cstyle'], function(require, exports, module) { - - -var oop = require("../../lib/oop"); -var MixedFoldMode = require("./mixed").FoldMode; -var XmlFoldMode = require("./xml").FoldMode; -var CStyleFoldMode = require("./cstyle").FoldMode; - -var FoldMode = exports.FoldMode = function() { - MixedFoldMode.call(this, new XmlFoldMode({ - "area": 1, - "base": 1, - "br": 1, - "col": 1, - "command": 1, - "embed": 1, - "hr": 1, - "img": 1, - "input": 1, - "keygen": 1, - "link": 1, - "meta": 1, - "param": 1, - "source": 1, - "track": 1, - "wbr": 1, - "li": 1, - "dt": 1, - "dd": 1, - "p": 1, - "rt": 1, - "rp": 1, - "optgroup": 1, - "option": 1, - "colgroup": 1, - "td": 1, - "th": 1 - }), { - "js-": new CStyleFoldMode(), - "css-": new CStyleFoldMode() - }); -}; - -oop.inherits(FoldMode, MixedFoldMode); - -}); - -ace.define('ace/mode/folding/mixed', ['require', 'exports', 'module' , 'ace/lib/oop', 'ace/mode/folding/fold_mode'], function(require, exports, module) { - - -var oop = require("../../lib/oop"); -var BaseFoldMode = require("./fold_mode").FoldMode; - -var FoldMode = exports.FoldMode = function(defaultMode, subModes) { - this.defaultMode = defaultMode; - this.subModes = subModes; -}; -oop.inherits(FoldMode, BaseFoldMode); - -(function() { - - - this.$getMode = function(state) { - if (typeof state != "string") - state = state[0]; - for (var key in this.subModes) { - if (state.indexOf(key) === 0) - return this.subModes[key]; - } - return null; - }; - - this.$tryMode = function(state, session, foldStyle, row) { - var mode = this.$getMode(state); - return (mode ? mode.getFoldWidget(session, foldStyle, row) : ""); - }; - - this.getFoldWidget = function(session, foldStyle, row) { - return ( - this.$tryMode(session.getState(row-1), session, foldStyle, row) || - this.$tryMode(session.getState(row), session, foldStyle, row) || - this.defaultMode.getFoldWidget(session, foldStyle, row) - ); - }; - - this.getFoldWidgetRange = function(session, foldStyle, row) { - var mode = this.$getMode(session.getState(row-1)); - - if (!mode || !mode.getFoldWidget(session, foldStyle, row)) - mode = this.$getMode(session.getState(row)); - - if (!mode || !mode.getFoldWidget(session, foldStyle, row)) - mode = this.defaultMode; - - return mode.getFoldWidgetRange(session, foldStyle, row); - }; - -}).call(FoldMode.prototype); - -}); - -ace.define('ace/mode/html_completions', ['require', 'exports', 'module' , 'ace/token_iterator'], function(require, exports, module) { - - -var TokenIterator = require("../token_iterator").TokenIterator; - -var commonAttributes = [ - "accesskey", - "class", - "contenteditable", - "contextmenu", - "dir", - "draggable", - "dropzone", - "hidden", - "id", - "lang", - "spellcheck", - "style", - "tabindex", - "title", - "translate" -]; - -var eventAttributes = [ - "onabort", - "onblur", - "oncancel", - "oncanplay", - "oncanplaythrough", - "onchange", - "onclick", - "onclose", - "oncontextmenu", - "oncuechange", - "ondblclick", - "ondrag", - "ondragend", - "ondragenter", - "ondragleave", - "ondragover", - "ondragstart", - "ondrop", - "ondurationchange", - "onemptied", - "onended", - "onerror", - "onfocus", - "oninput", - "oninvalid", - "onkeydown", - "onkeypress", - "onkeyup", - "onload", - "onloadeddata", - "onloadedmetadata", - "onloadstart", - "onmousedown", - "onmousemove", - "onmouseout", - "onmouseover", - "onmouseup", - "onmousewheel", - "onpause", - "onplay", - "onplaying", - "onprogress", - "onratechange", - "onreset", - "onscroll", - "onseeked", - "onseeking", - "onselect", - "onshow", - "onstalled", - "onsubmit", - "onsuspend", - "ontimeupdate", - "onvolumechange", - "onwaiting" -]; - -var globalAttributes = commonAttributes.concat(eventAttributes); - -var attributeMap = { - "html": ["manifest"], - "head": [], - "title": [], - "base": ["href", "target"], - "link": ["href", "hreflang", "rel", "media", "type", "sizes"], - "meta": ["http-equiv", "name", "content", "charset"], - "style": ["type", "media", "scoped"], - "script": ["charset", "type", "src", "defer", "async"], - "noscript": ["href"], - "body": ["onafterprint", "onbeforeprint", "onbeforeunload", "onhashchange", "onmessage", "onoffline", "onpopstate", "onredo", "onresize", "onstorage", "onundo", "onunload"], - "section": [], - "nav": [], - "article": ["pubdate"], - "aside": [], - "h1": [], - "h2": [], - "h3": [], - "h4": [], - "h5": [], - "h6": [], - "header": [], - "footer": [], - "address": [], - "main": [], - "p": [], - "hr": [], - "pre": [], - "blockquote": ["cite"], - "ol": ["start", "reversed"], - "ul": [], - "li": ["value"], - "dl": [], - "dt": [], - "dd": [], - "figure": [], - "figcaption": [], - "div": [], - "a": ["href", "target", "ping", "rel", "media", "hreflang", "type"], - "em": [], - "strong": [], - "small": [], - "s": [], - "cite": [], - "q": ["cite"], - "dfn": [], - "abbr": [], - "data": [], - "time": ["datetime"], - "code": [], - "var": [], - "samp": [], - "kbd": [], - "sub": [], - "sup": [], - "i": [], - "b": [], - "u": [], - "mark": [], - "ruby": [], - "rt": [], - "rp": [], - "bdi": [], - "bdo": [], - "span": [], - "br": [], - "wbr": [], - "ins": ["cite", "datetime"], - "del": ["cite", "datetime"], - "img": ["alt", "src", "height", "width", "usemap", "ismap"], - "iframe": ["name", "src", "height", "width", "sandbox", "seamless"], - "embed": ["src", "height", "width", "type"], - "object": ["param", "data", "type", "height" , "width", "usemap", "name", "form", "classid"], - "param": ["name", "value"], - "video": ["src", "autobuffer", "autoplay", "loop", "controls", "width", "height", "poster"], - "audio": ["src", "autobuffer", "autoplay", "loop", "controls"], - "source": ["src", "type", "media"], - "track": ["kind", "src", "srclang", "label", "default"], - "canvas": ["width", "height"], - "map": ["name"], - "area": ["shape", "coords", "href", "hreflang", "alt", "target", "media", "rel", "ping", "type"], - "svg": [], - "math": [], - "table": ["summary"], - "caption": [], - "colgroup": ["span"], - "col": ["span"], - "tbody": [], - "thead": [], - "tfoot": [], - "tr": [], - "td": ["headers", "rowspan", "colspan"], - "th": ["headers", "rowspan", "colspan", "scope"], - "form": ["accept-charset", "action", "autocomplete", "enctype", "method", "name", "novalidate", "target"], - "fieldset": ["disabled", "form", "name"], - "legend": [], - "label": ["form", "for"], - "input": ["type", "accept", "alt", "autocomplete", "checked", "disabled", "form", "formaction", "formenctype", "formmethod", "formnovalidate", "formtarget", "height", "list", "max", "maxlength", "min", "multiple", "pattern", "placeholder", "readonly", "required", "size", "src", "step", "width", "files", "value"], - "button": ["autofocus", "disabled", "form", "formaction", "formenctype", "formmethod", "formnovalidate", "formtarget", "name", "value", "type"], - "select": ["autofocus", "disabled", "form", "multiple", "name", "size"], - "datalist": [], - "optgroup": ["disabled", "label"], - "option": ["disabled", "selected", "label", "value"], - "textarea": ["autofocus", "disabled", "form", "maxlength", "name", "placeholder", "readonly", "required", "rows", "cols", "wrap"], - "keygen": ["autofocus", "challenge", "disabled", "form", "keytype", "name"], - "output": ["for", "form", "name"], - "progress": ["value", "max"], - "meter": ["value", "min", "max", "low", "high", "optimum"], - "details": ["open"], - "summary": [], - "command": ["type", "label", "icon", "disabled", "checked", "radiogroup", "command"], - "menu": ["type", "label"], - "dialog": ["open"] -}; - -var allElements = Object.keys(attributeMap); - -function hasType(token, type) { - var tokenTypes = token.type.split('.'); - return type.split('.').every(function(type){ - return (tokenTypes.indexOf(type) !== -1); - }); -} - -function findTagName(session, pos) { - var iterator = new TokenIterator(session, pos.row, pos.column); - var token = iterator.getCurrentToken(); - if (!token || !hasType(token, 'tag') && !(hasType(token, 'text') && token.value.match('/'))){ - do { - token = iterator.stepBackward(); - } while (token && (hasType(token, 'string') || hasType(token, 'operator') || hasType(token, 'attribute-name') || hasType(token, 'text'))); - } - if (token && hasType(token, 'tag-name') && !iterator.stepBackward().value.match('/')) - return token.value; -} - -var HtmlCompletions = function() { - -}; - -(function() { - - this.getCompletions = function(state, session, pos, prefix) { - var token = session.getTokenAt(pos.row, pos.column); - - if (!token) - return []; - if (hasType(token, "tag-name") || (token.value == '<' && hasType(token, "text"))) - return this.getTagCompletions(state, session, pos, prefix); - if (hasType(token, 'text') || hasType(token, 'attribute-name')) - return this.getAttributeCompetions(state, session, pos, prefix); - - return []; - }; - - this.getTagCompletions = function(state, session, pos, prefix) { - var elements = allElements; - if (prefix) { - elements = elements.filter(function(element){ - return element.indexOf(prefix) === 0; - }); - } - return elements.map(function(element){ - return { - value: element, - meta: "tag" - }; - }); - }; - - this.getAttributeCompetions = function(state, session, pos, prefix) { - var tagName = findTagName(session, pos); - if (!tagName) - return []; - var attributes = globalAttributes; - if (tagName in attributeMap) { - attributes = attributes.concat(attributeMap[tagName]); - } - if (prefix) { - attributes = attributes.filter(function(attribute){ - return attribute.indexOf(prefix) === 0; - }); - } - return attributes.map(function(attribute){ - return { - caption: attribute, - snippet: attribute + '="$0"', - meta: "attribute" - }; - }); - }; - -}).call(HtmlCompletions.prototype); - -exports.HtmlCompletions = HtmlCompletions; -}); - -ace.define('ace/mode/markdown_highlight_rules', ['require', 'exports', 'module' , 'ace/lib/oop', 'ace/lib/lang', 'ace/mode/text_highlight_rules', 'ace/mode/javascript_highlight_rules', 'ace/mode/xml_highlight_rules', 'ace/mode/html_highlight_rules', 'ace/mode/css_highlight_rules'], function(require, exports, module) { - - -var oop = require("../lib/oop"); -var lang = require("../lib/lang"); -var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; -var JavaScriptHighlightRules = require("./javascript_highlight_rules").JavaScriptHighlightRules; -var XmlHighlightRules = require("./xml_highlight_rules").XmlHighlightRules; -var HtmlHighlightRules = require("./html_highlight_rules").HtmlHighlightRules; -var CssHighlightRules = require("./css_highlight_rules").CssHighlightRules; - -var escaped = function(ch) { - return "(?:[^" + lang.escapeRegExp(ch) + "\\\\]|\\\\.)*"; -} - -function github_embed(tag, prefix) { - return { // Github style block - token : "support.function", - regex : "^```" + tag + "\\s*$", - push : prefix + "start" - }; -} - -var MarkdownHighlightRules = function() { - HtmlHighlightRules.call(this); - - this.$rules["start"].unshift({ - token : "empty_line", - regex : '^$', - next: "allowBlock" - }, { // h1 - token: "markup.heading.1", - regex: "^=+(?=\\s*$)" - }, { // h2 - token: "markup.heading.2", - regex: "^\\-+(?=\\s*$)" - }, { - token : function(value) { - return "markup.heading." + value.length; - }, - regex : /^#{1,6}(?=\s*[^ #]|\s+#.)/, - next : "header" - }, - github_embed("(?:javascript|js)", "jscode-"), - github_embed("xml", "xmlcode-"), - github_embed("html", "htmlcode-"), - github_embed("css", "csscode-"), - { // Github style block - token : "support.function", - regex : "^```\\s*[a-zA-Z]*(?:{.*?\\})?\\s*$", - next : "githubblock" - }, { // block quote - token : "string.blockquote", - regex : "^\\s*>\\s*(?:[*+-]|\\d+\\.)?\\s+", - next : "blockquote" - }, { // HR * - _ - token : "constant", - regex : "^ {0,2}(?:(?: ?\\* ?){3,}|(?: ?\\- ?){3,}|(?: ?\\_ ?){3,})\\s*$", - next: "allowBlock" - }, { // list - token : "markup.list", - regex : "^\\s{0,3}(?:[*+-]|\\d+\\.)\\s+", - next : "listblock-start" - }, { - include : "basic" - }); - - this.addRules({ - "basic" : [{ - token : "constant.language.escape", - regex : /\\[\\`*_{}\[\]()#+\-.!]/ - }, { // code span ` - token : "support.function", - regex : "(`+)(.*?[^`])(\\1)" - }, { // reference - token : ["text", "constant", "text", "url", "string", "text"], - regex : "^([ ]{0,3}\\[)([^\\]]+)(\\]:\\s*)([^ ]+)(\\s*(?:[\"][^\"]+[\"])?(\\s*))$" - }, { // link by reference - token : ["text", "string", "text", "constant", "text"], - regex : "(\\[)(" + escaped("]") + ")(\\]\s*\\[)("+ escaped("]") + ")(\\])" - }, { // link by url - token : ["text", "string", "text", "markup.underline", "string", "text"], - regex : "(\\[)(" + // [ - escaped("]") + // link text - ")(\\]\\()"+ // ]( - '((?:[^\\)\\s\\\\]|\\\\.|\\s(?=[^"]))*)' + // href - '(\\s*"' + escaped('"') + '"\\s*)?' + // "title" - "(\\))" // ) - }, { // strong ** __ - token : "string.strong", - regex : "([*]{2}|[_]{2}(?=\\S))(.*?\\S[*_]*)(\\1)" - }, { // emphasis * _ - token : "string.emphasis", - regex : "([*]|[_](?=\\S))(.*?\\S[*_]*)(\\1)" - }, { // - token : ["text", "url", "text"], - regex : "(<)("+ - "(?:https?|ftp|dict):[^'\">\\s]+"+ - "|"+ - "(?:mailto:)?[-.\\w]+\\@[-a-z0-9]+(?:\\.[-a-z0-9]+)*\\.[a-z]+"+ - ")(>)" - }], - "allowBlock": [ - {token : "support.function", regex : "^ {4}.+", next : "allowBlock"}, - {token : "empty", regex : "", next : "start"} - ], - - "header" : [{ - regex: "$", - next : "start" - }, { - include: "basic" - }, { - defaultToken : "heading" - } ], - - "listblock-start" : [{ - token : "support.variable", - regex : /(?:\[[ x]\])?/, - next : "listblock" - }], - - "listblock" : [ { // Lists only escape on completely blank lines. - token : "empty_line", - regex : "^$", - next : "start" - }, { // list - token : "markup.list", - regex : "^\\s{0,3}(?:[*+-]|\\d+\\.)\\s+", - next : "listblock-start" - }, { - include : "basic", noEscape: true - }, { - defaultToken : "list" //do not use markup.list to allow stling leading `*` differntly - } ], - - "blockquote" : [ { // BLockquotes only escape on blank lines. - token : "empty_line", - regex : "^\\s*$", - next : "start" - }, { // block quote - token : "string.blockquote", - regex : "^\\s*>\\s*(?:[*+-]|\\d+\\.)?\\s+", - next : "blockquote" - }, { - include : "basic", noEscape: true - }, { - defaultToken : "string.blockquote" - } ], - - "githubblock" : [ { - token : "support.function", - regex : "^```", - next : "start" - }, { - token : "support.function", - regex : ".+" - } ] - }); - - this.embedRules(JavaScriptHighlightRules, "jscode-", [{ - token : "support.function", - regex : "^```", - next : "pop" - }]); - - this.embedRules(HtmlHighlightRules, "htmlcode-", [{ - token : "support.function", - regex : "^```", - next : "pop" - }]); - - this.embedRules(CssHighlightRules, "csscode-", [{ - token : "support.function", - regex : "^```", - next : "pop" - }]); - - this.embedRules(XmlHighlightRules, "xmlcode-", [{ - token : "support.function", - regex : "^```", - next : "pop" - }]); - - this.normalizeRules(); -}; -oop.inherits(MarkdownHighlightRules, TextHighlightRules); - -exports.MarkdownHighlightRules = MarkdownHighlightRules; -}); - -ace.define('ace/mode/folding/markdown', ['require', 'exports', 'module' , 'ace/lib/oop', 'ace/mode/folding/fold_mode', 'ace/range'], function(require, exports, module) { - - -var oop = require("../../lib/oop"); -var BaseFoldMode = require("./fold_mode").FoldMode; -var Range = require("../../range").Range; - -var FoldMode = exports.FoldMode = function() {}; -oop.inherits(FoldMode, BaseFoldMode); - -(function() { - this.foldingStartMarker = /^(?:[=-]+\s*$|#{1,6} |`{3})/; - - this.getFoldWidget = function(session, foldStyle, row) { - var line = session.getLine(row); - if (!this.foldingStartMarker.test(line)) - return ""; - - if (line[0] == "`") { - if (session.bgTokenizer.getState(row) == "start") - return "end"; - return "start"; - } - - return "start"; - }; - - this.getFoldWidgetRange = function(session, foldStyle, row) { - var line = session.getLine(row); - var startColumn = line.length; - var maxRow = session.getLength(); - var startRow = row; - var endRow = row; - if (!line.match(this.foldingStartMarker)) - return; - - if (line[0] == "`") { - if (session.bgTokenizer.getState(row) !== "start") { - while (++row < maxRow) { - line = session.getLine(row); - if (line[0] == "`" & line.substring(0, 3) == "```") - break; - } - return new Range(startRow, startColumn, row, 0); - } else { - while (row -- > 0) { - line = session.getLine(row); - if (line[0] == "`" & line.substring(0, 3) == "```") - break; - } - return new Range(row, line.length, startRow, 0); - } - } - - var token; - function isHeading(row) { - token = session.getTokens(row)[0]; - return token && token.type.lastIndexOf(heading, 0) === 0; - } - - var heading = "markup.heading"; - function getLevel() { - var ch = token.value[0]; - if (ch == "=") return 6; - if (ch == "-") return 5; - return 7 - token.value.search(/[^#]/); - } - - if (isHeading(row)) { - var startHeadingLevel = getLevel(); - while (++row < maxRow) { - if (!isHeading(row)) - continue; - var level = getLevel(); - if (level >= startHeadingLevel) - break; - } - - endRow = row - (!token || ["=", "-"].indexOf(token.value[0]) == -1 ? 1 : 2); - - if (endRow > startRow) { - while (endRow > startRow && /^\s*$/.test(session.getLine(endRow))) - endRow--; - } - - if (endRow > startRow) { - var endColumn = session.getLine(endRow).length; - return new Range(startRow, startColumn, endRow, endColumn); - } - } - }; - -}).call(FoldMode.prototype); - -}); diff --git a/IDE/jsrealb-ide/ace-src-noconflict/mode-matlab.js b/IDE/jsrealb-ide/ace-src-noconflict/mode-matlab.js deleted file mode 100644 index ebc598b2..00000000 --- a/IDE/jsrealb-ide/ace-src-noconflict/mode-matlab.js +++ /dev/null @@ -1,230 +0,0 @@ -/* ***** BEGIN LICENSE BLOCK ***** - * Distributed under the BSD license: - * - * Copyright (c) 2010, Ajax.org B.V. - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are met: - * * Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * * Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * * Neither the name of Ajax.org B.V. nor the - * names of its contributors may be used to endorse or promote products - * derived from this software without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND - * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED - * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE - * DISCLAIMED. IN NO EVENT SHALL AJAX.ORG B.V. BE LIABLE FOR ANY - * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES - * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; - * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND - * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - * - * ***** END LICENSE BLOCK ***** */ - -ace.define('ace/mode/matlab', ['require', 'exports', 'module' , 'ace/lib/oop', 'ace/mode/text', 'ace/tokenizer', 'ace/mode/matlab_highlight_rules', 'ace/range'], function(require, exports, module) { - - -var oop = require("../lib/oop"); -var TextMode = require("./text").Mode; -var Tokenizer = require("../tokenizer").Tokenizer; -var MatlabHighlightRules = require("./matlab_highlight_rules").MatlabHighlightRules; -var Range = require("../range").Range; - -var Mode = function() { - this.HighlightRules = MatlabHighlightRules; -}; -oop.inherits(Mode, TextMode); - -(function() { - - this.lineCommentStart = "%"; - this.blockComment = {start: "%{", end: "%}"}; - - this.$id = "ace/mode/matlab"; -}).call(Mode.prototype); - -exports.Mode = Mode; - -}); - -ace.define('ace/mode/matlab_highlight_rules', ['require', 'exports', 'module' , 'ace/lib/oop', 'ace/mode/text_highlight_rules'], function(require, exports, module) { - - -var oop = require("../lib/oop"); -var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; - -var MatlabHighlightRules = function() { - -var keywords = ( - "break|case|catch|classdef|continue|else|elseif|end|for|function|global|if|otherwise|parfor|persistent|return|spmd|switch|try|while" - ); - - var builtinConstants = ( - "true|false|inf|Inf|nan|NaN|eps|pi|ans|nargin|nargout|varargin|varargout" - ); - - var builtinFunctions = ( - "abs|accumarray|acos(?:d|h)?|acot(?:d|h)?|acsc(?:d|h)?|actxcontrol(?:list|select)?|actxGetRunningServer|actxserver|addlistener|addpath|addpref|addtodate|"+ - "airy|align|alim|all|allchild|alpha|alphamap|amd|ancestor|and|angle|annotation|any|area|arrayfun|asec(?:d|h)?|asin(?:d|h)?|assert|assignin|atan(?:2|d|h)?|" + - "audiodevinfo|audioplayer|audiorecorder|aufinfo|auread|autumn|auwrite|avifile|aviinfo|aviread|axes|axis|balance|bar(?:3|3h|h)?|base2dec|beep|BeginInvoke|bench|"+ - "bessel(?:h|i|j|k|y)|beta|betainc|betaincinv|betaln|bicg|bicgstab|bicgstabl|bin2dec|bitand|bitcmp|bitget|bitmax|bitnot|bitor|bitset|bitshift|bitxor|blanks|blkdiag|"+ - "bone|box|brighten|brush|bsxfun|builddocsearchdb|builtin|bvp4c|bvp5c|bvpget|bvpinit|bvpset|bvpxtend|calendar|calllib|callSoapService|camdolly|cameratoolbar|camlight|"+ - "camlookat|camorbit|campan|campos|camproj|camroll|camtarget|camup|camva|camzoom|cart2pol|cart2sph|cast|cat|caxis|cd|cdf2rdf|cdfepoch|cdfinfo|cdflib(?:\.(?:close|closeVar|"+ - "computeEpoch|computeEpoch16|create|createAttr|createVar|delete|deleteAttr|deleteAttrEntry|deleteAttrgEntry|deleteVar|deleteVarRecords|epoch16Breakdown|epochBreakdown|getAttrEntry|"+ - "getAttrgEntry|getAttrMaxEntry|getAttrMaxgEntry|getAttrName|getAttrNum|getAttrScope|getCacheSize|getChecksum|getCompression|getCompressionCacheSize|getConstantNames|"+ - "getConstantValue|getCopyright|getFileBackward|getFormat|getLibraryCopyright|getLibraryVersion|getMajority|getName|getNumAttrEntries|getNumAttrgEntries|getNumAttributes|"+ - "getNumgAttributes|getReadOnlyMode|getStageCacheSize|getValidate|getVarAllocRecords|getVarBlockingFactor|getVarCacheSize|getVarCompression|getVarData|getVarMaxAllocRecNum|"+ - "getVarMaxWrittenRecNum|getVarName|getVarNum|getVarNumRecsWritten|getVarPadValue|getVarRecordData|getVarReservePercent|getVarsMaxWrittenRecNum|getVarSparseRecords|getVersion|"+ - "hyperGetVarData|hyperPutVarData|inquire|inquireAttr|inquireAttrEntry|inquireAttrgEntry|inquireVar|open|putAttrEntry|putAttrgEntry|putVarData|putVarRecordData|renameAttr|"+ - "renameVar|setCacheSize|setChecksum|setCompression|setCompressionCacheSize|setFileBackward|setFormat|setMajority|setReadOnlyMode|setStageCacheSize|setValidate|"+ - "setVarAllocBlockRecords|setVarBlockingFactor|setVarCacheSize|setVarCompression|setVarInitialRecs|setVarPadValue|SetVarReservePercent|setVarsCacheSize|setVarSparseRecords))?|"+ - "cdfread|cdfwrite|ceil|cell2mat|cell2struct|celldisp|cellfun|cellplot|cellstr|cgs|checkcode|checkin|checkout|chol|cholinc|cholupdate|circshift|cla|clabel|class|clc|clear|"+ - "clearvars|clf|clipboard|clock|close|closereq|cmopts|cmpermute|cmunique|colamd|colon|colorbar|colordef|colormap|colormapeditor|colperm|Combine|comet|comet3|commandhistory|"+ - "commandwindow|compan|compass|complex|computer|cond|condeig|condest|coneplot|conj|containers\.Map|contour(?:3|c|f|slice)?|contrast|conv|conv2|convhull|convhulln|convn|cool|"+ - "copper|copyfile|copyobj|corrcoef|cos(?:d|h)?|cot(?:d|h)?|cov|cplxpair|cputime|createClassFromWsdl|createSoapMessage|cross|csc(?:d|h)?|csvread|csvwrite|ctranspose|cumprod|"+ - "cumsum|cumtrapz|curl|customverctrl|cylinder|daqread|daspect|datacursormode|datatipinfo|date|datenum|datestr|datetick|datevec|dbclear|dbcont|dbdown|dblquad|dbmex|dbquit|"+ - "dbstack|dbstatus|dbstep|dbstop|dbtype|dbup|dde23|ddeget|ddesd|ddeset|deal|deblank|dec2base|dec2bin|dec2hex|decic|deconv|del2|delaunay|delaunay3|delaunayn|DelaunayTri|delete|"+ - "demo|depdir|depfun|det|detrend|deval|diag|dialog|diary|diff|diffuse|dir|disp|display|dither|divergence|dlmread|dlmwrite|dmperm|doc|docsearch|dos|dot|dragrect|drawnow|dsearch|"+ - "dsearchn|dynamicprops|echo|echodemo|edit|eig|eigs|ellipj|ellipke|ellipsoid|empty|enableNETfromNetworkDrive|enableservice|EndInvoke|enumeration|eomday|eq|erf|erfc|erfcinv|"+ - "erfcx|erfinv|error|errorbar|errordlg|etime|etree|etreeplot|eval|evalc|evalin|event\.(?:EventData|listener|PropertyEvent|proplistener)|exifread|exist|exit|exp|expint|expm|"+ - "expm1|export2wsdlg|eye|ezcontour|ezcontourf|ezmesh|ezmeshc|ezplot|ezplot3|ezpolar|ezsurf|ezsurfc|factor|factorial|fclose|feather|feature|feof|ferror|feval|fft|fft2|fftn|"+ - "fftshift|fftw|fgetl|fgets|fieldnames|figure|figurepalette|fileattrib|filebrowser|filemarker|fileparts|fileread|filesep|fill|fill3|filter|filter2|find|findall|findfigs|"+ - "findobj|findstr|finish|fitsdisp|fitsinfo|fitsread|fitswrite|fix|flag|flipdim|fliplr|flipud|floor|flow|fminbnd|fminsearch|fopen|format|fplot|fprintf|frame2im|fread|freqspace|"+ - "frewind|fscanf|fseek|ftell|FTP|full|fullfile|func2str|functions|funm|fwrite|fzero|gallery|gamma|gammainc|gammaincinv|gammaln|gca|gcbf|gcbo|gcd|gcf|gco|ge|genpath|genvarname|"+ - "get|getappdata|getenv|getfield|getframe|getpixelposition|getpref|ginput|gmres|gplot|grabcode|gradient|gray|graymon|grid|griddata(?:3|n)?|griddedInterpolant|gsvd|gt|gtext|"+ - "guidata|guide|guihandles|gunzip|gzip|h5create|h5disp|h5info|h5read|h5readatt|h5write|h5writeatt|hadamard|handle|hankel|hdf|hdf5|hdf5info|hdf5read|hdf5write|hdfinfo|"+ - "hdfread|hdftool|help|helpbrowser|helpdesk|helpdlg|helpwin|hess|hex2dec|hex2num|hgexport|hggroup|hgload|hgsave|hgsetget|hgtransform|hidden|hilb|hist|histc|hold|home|horzcat|"+ - "hostid|hot|hsv|hsv2rgb|hypot|ichol|idivide|ifft|ifft2|ifftn|ifftshift|ilu|im2frame|im2java|imag|image|imagesc|imapprox|imfinfo|imformats|import|importdata|imread|imwrite|"+ - "ind2rgb|ind2sub|inferiorto|info|inline|inmem|inpolygon|input|inputdlg|inputname|inputParser|inspect|instrcallback|instrfind|instrfindall|int2str|integral(?:2|3)?|interp(?:1|"+ - "1q|2|3|ft|n)|interpstreamspeed|intersect|intmax|intmin|inv|invhilb|ipermute|isa|isappdata|iscell|iscellstr|ischar|iscolumn|isdir|isempty|isequal|isequaln|isequalwithequalnans|"+ - "isfield|isfinite|isfloat|isglobal|ishandle|ishghandle|ishold|isinf|isinteger|isjava|iskeyword|isletter|islogical|ismac|ismatrix|ismember|ismethod|isnan|isnumeric|isobject|"+ - "isocaps|isocolors|isonormals|isosurface|ispc|ispref|isprime|isprop|isreal|isrow|isscalar|issorted|isspace|issparse|isstr|isstrprop|isstruct|isstudent|isunix|isvarname|"+ - "isvector|javaaddpath|javaArray|javachk|javaclasspath|javacomponent|javaMethod|javaMethodEDT|javaObject|javaObjectEDT|javarmpath|jet|keyboard|kron|lasterr|lasterror|"+ - "lastwarn|lcm|ldivide|ldl|le|legend|legendre|length|libfunctions|libfunctionsview|libisloaded|libpointer|libstruct|license|light|lightangle|lighting|lin2mu|line|lines|"+ - "linkaxes|linkdata|linkprop|linsolve|linspace|listdlg|listfonts|load|loadlibrary|loadobj|log|log10|log1p|log2|loglog|logm|logspace|lookfor|lower|ls|lscov|lsqnonneg|lsqr|"+ - "lt|lu|luinc|magic|makehgtform|mat2cell|mat2str|material|matfile|matlab\.io\.MatFile|matlab\.mixin\.(?:Copyable|Heterogeneous(?:\.getDefaultScalarElement)?)|matlabrc|"+ - "matlabroot|max|maxNumCompThreads|mean|median|membrane|memmapfile|memory|menu|mesh|meshc|meshgrid|meshz|meta\.(?:class(?:\.fromName)?|DynamicProperty|EnumeratedValue|event|"+ - "MetaData|method|package(?:\.(?:fromName|getAllPackages))?|property)|metaclass|methods|methodsview|mex(?:\.getCompilerConfigurations)?|MException|mexext|mfilename|min|minres|"+ - "minus|mislocked|mkdir|mkpp|mldivide|mlint|mlintrpt|mlock|mmfileinfo|mmreader|mod|mode|more|move|movefile|movegui|movie|movie2avi|mpower|mrdivide|msgbox|mtimes|mu2lin|"+ - "multibandread|multibandwrite|munlock|namelengthmax|nargchk|narginchk|nargoutchk|native2unicode|nccreate|ncdisp|nchoosek|ncinfo|ncread|ncreadatt|ncwrite|ncwriteatt|"+ - "ncwriteschema|ndgrid|ndims|ne|NET(?:\.(?:addAssembly|Assembly|convertArray|createArray|createGeneric|disableAutoRelease|enableAutoRelease|GenericClass|invokeGenericMethod|"+ - "NetException|setStaticProperty))?|netcdf\.(?:abort|close|copyAtt|create|defDim|defGrp|defVar|defVarChunking|defVarDeflate|defVarFill|defVarFletcher32|delAtt|endDef|getAtt|"+ - "getChunkCache|getConstant|getConstantNames|getVar|inq|inqAtt|inqAttID|inqAttName|inqDim|inqDimID|inqDimIDs|inqFormat|inqGrpName|inqGrpNameFull|inqGrpParent|inqGrps|"+ - "inqLibVers|inqNcid|inqUnlimDims|inqVar|inqVarChunking|inqVarDeflate|inqVarFill|inqVarFletcher32|inqVarID|inqVarIDs|open|putAtt|putVar|reDef|renameAtt|renameDim|renameVar|"+ - "setChunkCache|setDefaultFormat|setFill|sync)|newplot|nextpow2|nnz|noanimate|nonzeros|norm|normest|not|notebook|now|nthroot|null|num2cell|num2hex|num2str|numel|nzmax|"+ - "ode(?:113|15i|15s|23|23s|23t|23tb|45)|odeget|odeset|odextend|onCleanup|ones|open|openfig|opengl|openvar|optimget|optimset|or|ordeig|orderfields|ordqz|ordschur|orient|"+ - "orth|pack|padecoef|pagesetupdlg|pan|pareto|parseSoapResponse|pascal|patch|path|path2rc|pathsep|pathtool|pause|pbaspect|pcg|pchip|pcode|pcolor|pdepe|pdeval|peaks|perl|perms|"+ - "permute|pie|pink|pinv|planerot|playshow|plot|plot3|plotbrowser|plotedit|plotmatrix|plottools|plotyy|plus|pol2cart|polar|poly|polyarea|polyder|polyeig|polyfit|polyint|polyval|"+ - "polyvalm|pow2|power|ppval|prefdir|preferences|primes|print|printdlg|printopt|printpreview|prod|profile|profsave|propedit|propertyeditor|psi|publish|PutCharArray|PutFullMatrix|"+ - "PutWorkspaceData|pwd|qhull|qmr|qr|qrdelete|qrinsert|qrupdate|quad|quad2d|quadgk|quadl|quadv|questdlg|quit|quiver|quiver3|qz|rand|randi|randn|randperm|RandStream(?:\.(?:create|"+ - "getDefaultStream|getGlobalStream|list|setDefaultStream|setGlobalStream))?|rank|rat|rats|rbbox|rcond|rdivide|readasync|real|reallog|realmax|realmin|realpow|realsqrt|record|"+ - "rectangle|rectint|recycle|reducepatch|reducevolume|refresh|refreshdata|regexp|regexpi|regexprep|regexptranslate|rehash|rem|Remove|RemoveAll|repmat|reset|reshape|residue|"+ - "restoredefaultpath|rethrow|rgb2hsv|rgb2ind|rgbplot|ribbon|rmappdata|rmdir|rmfield|rmpath|rmpref|rng|roots|rose|rosser|rot90|rotate|rotate3d|round|rref|rsf2csf|run|save|saveas|"+ - "saveobj|savepath|scatter|scatter3|schur|sec|secd|sech|selectmoveresize|semilogx|semilogy|sendmail|serial|set|setappdata|setdiff|setenv|setfield|setpixelposition|setpref|setstr|"+ - "setxor|shading|shg|shiftdim|showplottool|shrinkfaces|sign|sin(?:d|h)?|size|slice|smooth3|snapnow|sort|sortrows|sound|soundsc|spalloc|spaugment|spconvert|spdiags|specular|speye|"+ - "spfun|sph2cart|sphere|spinmap|spline|spones|spparms|sprand|sprandn|sprandsym|sprank|spring|sprintf|spy|sqrt|sqrtm|squeeze|ss2tf|sscanf|stairs|startup|std|stem|stem3|stopasync|"+ - "str2double|str2func|str2mat|str2num|strcat|strcmp|strcmpi|stream2|stream3|streamline|streamparticles|streamribbon|streamslice|streamtube|strfind|strjust|strmatch|strncmp|"+ - "strncmpi|strread|strrep|strtok|strtrim|struct2cell|structfun|strvcat|sub2ind|subplot|subsasgn|subsindex|subspace|subsref|substruct|subvolume|sum|summer|superclasses|superiorto|"+ - "support|surf|surf2patch|surface|surfc|surfl|surfnorm|svd|svds|swapbytes|symamd|symbfact|symmlq|symrcm|symvar|system|tan(?:d|h)?|tar|tempdir|tempname|tetramesh|texlabel|text|"+ - "textread|textscan|textwrap|tfqmr|throw|tic|Tiff(?:\.(?:getTagNames|getVersion))?|timer|timerfind|timerfindall|times|timeseries|title|toc|todatenum|toeplitz|toolboxdir|trace|"+ - "transpose|trapz|treelayout|treeplot|tril|trimesh|triplequad|triplot|TriRep|TriScatteredInterp|trisurf|triu|tscollection|tsearch|tsearchn|tstool|type|typecast|uibuttongroup|"+ - "uicontextmenu|uicontrol|uigetdir|uigetfile|uigetpref|uiimport|uimenu|uiopen|uipanel|uipushtool|uiputfile|uiresume|uisave|uisetcolor|uisetfont|uisetpref|uistack|uitable|"+ - "uitoggletool|uitoolbar|uiwait|uminus|undocheckout|unicode2native|union|unique|unix|unloadlibrary|unmesh|unmkpp|untar|unwrap|unzip|uplus|upper|urlread|urlwrite|usejava|"+ - "userpath|validateattributes|validatestring|vander|var|vectorize|ver|verctrl|verLessThan|version|vertcat|VideoReader(?:\.isPlatformSupported)?|VideoWriter(?:\.getProfiles)?|"+ - "view|viewmtx|visdiff|volumebounds|voronoi|voronoin|wait|waitbar|waitfor|waitforbuttonpress|warndlg|warning|waterfall|wavfinfo|wavplay|wavread|wavrecord|wavwrite|web|weekday|"+ - "what|whatsnew|which|whitebg|who|whos|wilkinson|winopen|winqueryreg|winter|wk1finfo|wk1read|wk1write|workspace|xlabel|xlim|xlsfinfo|xlsread|xlswrite|xmlread|xmlwrite|xor|xslt|"+ - "ylabel|ylim|zeros|zip|zlabel|zlim|zoom|addedvarplot|andrewsplot|anova(?:1|2|n)|ansaribradley|aoctool|barttest|bbdesign|beta(?:cdf|fit|inv|like|pdf|rnd|stat)|bino(?:cdf|fit|inv|"+ - "pdf|rnd|stat)|biplot|bootci|bootstrp|boxplot|candexch|candgen|canoncorr|capability|capaplot|caseread|casewrite|categorical|ccdesign|cdfplot|chi2(?:cdf|gof|inv|pdf|rnd|stat)|"+ - "cholcov|Classification(?:BaggedEnsemble|Discriminant(?:\.(?:fit|make|template))?|Ensemble|KNN(?:\.(?:fit|template))?|PartitionedEnsemble|PartitionedModel|Tree(?:\.(?:fit|"+ - "template))?)|classify|classregtree|cluster|clusterdata|cmdscale|combnk|Compact(?:Classification(?:Discriminant|Ensemble|Tree)|Regression(?:Ensemble|Tree)|TreeBagger)|confusionmat|"+ - "controlchart|controlrules|cophenet|copula(?:cdf|fit|param|pdf|rnd|stat)|cordexch|corr|corrcov|coxphfit|createns|crosstab|crossval|cvpartition|datasample|dataset|daugment|dcovary|"+ - "dendrogram|dfittool|disttool|dummyvar|dwtest|ecdf|ecdfhist|ev(?:cdf|fit|inv|like|pdf|rnd|stat)|ExhaustiveSearcher|exp(?:cdf|fit|inv|like|pdf|rnd|stat)|factoran|fcdf|ff2n|finv|"+ - "fitdist|fitensemble|fpdf|fracfact|fracfactgen|friedman|frnd|fstat|fsurfht|fullfact|gagerr|gam(?:cdf|fit|inv|like|pdf|rnd|stat)|GeneralizedLinearModel(?:\.fit)?|geo(?:cdf|inv|mean|"+ - "pdf|rnd|stat)|gev(?:cdf|fit|inv|like|pdf|rnd|stat)|gline|glmfit|glmval|glyphplot|gmdistribution(?:\.fit)?|gname|gp(?:cdf|fit|inv|like|pdf|rnd|stat)|gplotmatrix|grp2idx|grpstats|"+ - "gscatter|haltonset|harmmean|hist3|histfit|hmm(?:decode|estimate|generate|train|viterbi)|hougen|hyge(?:cdf|inv|pdf|rnd|stat)|icdf|inconsistent|interactionplot|invpred|iqr|iwishrnd|"+ - "jackknife|jbtest|johnsrnd|KDTreeSearcher|kmeans|knnsearch|kruskalwallis|ksdensity|kstest|kstest2|kurtosis|lasso|lassoglm|lassoPlot|leverage|lhsdesign|lhsnorm|lillietest|"+ - "LinearModel(?:\.fit)?|linhyptest|linkage|logn(?:cdf|fit|inv|like|pdf|rnd|stat)|lsline|mad|mahal|maineffectsplot|manova1|manovacluster|mdscale|mhsample|mle|mlecov|mnpdf|"+ - "mnrfit|mnrnd|mnrval|moment|multcompare|multivarichart|mvn(?:cdf|pdf|rnd)|mvregress|mvregresslike|mvt(?:cdf|pdf|rnd)|NaiveBayes(?:\.fit)?|nan(?:cov|max|mean|median|min|std|"+ - "sum|var)|nbin(?:cdf|fit|inv|pdf|rnd|stat)|ncf(?:cdf|inv|pdf|rnd|stat)|nct(?:cdf|inv|pdf|rnd|stat)|ncx2(?:cdf|inv|pdf|rnd|stat)|NeighborSearcher|nlinfit|nlintool|nlmefit|nlmefitsa|"+ - "nlparci|nlpredci|nnmf|nominal|NonLinearModel(?:\.fit)?|norm(?:cdf|fit|inv|like|pdf|rnd|stat)|normplot|normspec|ordinal|outlierMeasure|parallelcoords|paretotails|partialcorr|"+ - "pcacov|pcares|pdf|pdist|pdist2|pearsrnd|perfcurve|perms|piecewisedistribution|plsregress|poiss(?:cdf|fit|inv|pdf|rnd|tat)|polyconf|polytool|prctile|princomp|ProbDist(?:Kernel|"+ - "Parametric|UnivKernel|UnivParam)?|probplot|procrustes|qqplot|qrandset|qrandstream|quantile|randg|random|randsample|randtool|range|rangesearch|ranksum|rayl(?:cdf|fit|inv|pdf|"+ - "rnd|stat)|rcoplot|refcurve|refline|regress|Regression(?:BaggedEnsemble|Ensemble|PartitionedEnsemble|PartitionedModel|Tree(?:\.(?:fit|template))?)|regstats|relieff|ridge|"+ - "robustdemo|robustfit|rotatefactors|rowexch|rsmdemo|rstool|runstest|sampsizepwr|scatterhist|sequentialfs|signrank|signtest|silhouette|skewness|slicesample|sobolset|squareform|"+ - "statget|statset|stepwise|stepwisefit|surfht|tabulate|tblread|tblwrite|tcdf|tdfread|tiedrank|tinv|tpdf|TreeBagger|treedisp|treefit|treeprune|treetest|treeval|trimmean|trnd|tstat|"+ - "ttest|ttest2|unid(?:cdf|inv|pdf|rnd|stat)|unif(?:cdf|inv|it|pdf|rnd|stat)|vartest(?:2|n)?|wbl(?:cdf|fit|inv|like|pdf|rnd|stat)|wblplot|wishrnd|x2fx|xptread|zscore|ztest"+ - "adapthisteq|analyze75info|analyze75read|applycform|applylut|axes2pix|bestblk|blockproc|bwarea|bwareaopen|bwboundaries|bwconncomp|bwconvhull|bwdist|bwdistgeodesic|bweuler|"+ - "bwhitmiss|bwlabel|bwlabeln|bwmorph|bwpack|bwperim|bwselect|bwtraceboundary|bwulterode|bwunpack|checkerboard|col2im|colfilt|conndef|convmtx2|corner|cornermetric|corr2|cp2tform|"+ - "cpcorr|cpselect|cpstruct2pairs|dct2|dctmtx|deconvblind|deconvlucy|deconvreg|deconvwnr|decorrstretch|demosaic|dicom(?:anon|dict|info|lookup|read|uid|write)|edge|edgetaper|entropy|"+ - "entropyfilt|fan2para|fanbeam|findbounds|fliptform|freqz2|fsamp2|fspecial|ftrans2|fwind1|fwind2|getheight|getimage|getimagemodel|getline|getneighbors|getnhood|getpts|"+ - "getrangefromclass|getrect|getsequence|gray2ind|graycomatrix|graycoprops|graydist|grayslice|graythresh|hdrread|hdrwrite|histeq|hough|houghlines|houghpeaks|iccfind|iccread|"+ - "iccroot|iccwrite|idct2|ifanbeam|im2bw|im2col|im2double|im2int16|im2java2d|im2single|im2uint16|im2uint8|imabsdiff|imadd|imadjust|ImageAdapter|imageinfo|imagemodel|imapplymatrix|"+ - "imattributes|imbothat|imclearborder|imclose|imcolormaptool|imcomplement|imcontour|imcontrast|imcrop|imdilate|imdisplayrange|imdistline|imdivide|imellipse|imerode|imextendedmax|"+ - "imextendedmin|imfill|imfilter|imfindcircles|imfreehand|imfuse|imgca|imgcf|imgetfile|imhandles|imhist|imhmax|imhmin|imimposemin|imlincomb|imline|immagbox|immovie|immultiply|imnoise|"+ - "imopen|imoverview|imoverviewpanel|impixel|impixelinfo|impixelinfoval|impixelregion|impixelregionpanel|implay|impoint|impoly|impositionrect|improfile|imputfile|impyramid|"+ - "imreconstruct|imrect|imregconfig|imregionalmax|imregionalmin|imregister|imresize|imroi|imrotate|imsave|imscrollpanel|imshow|imshowpair|imsubtract|imtool|imtophat|imtransform|"+ - "imview|ind2gray|ind2rgb|interfileinfo|interfileread|intlut|ippl|iptaddcallback|iptcheckconn|iptcheckhandle|iptcheckinput|iptcheckmap|iptchecknargin|iptcheckstrs|iptdemos|iptgetapi|"+ - "iptGetPointerBehavior|iptgetpref|ipticondir|iptnum2ordinal|iptPointerManager|iptprefs|iptremovecallback|iptSetPointerBehavior|iptsetpref|iptwindowalign|iradon|isbw|isflat|isgray|"+ - "isicc|isind|isnitf|isrgb|isrset|lab2double|lab2uint16|lab2uint8|label2rgb|labelmatrix|makecform|makeConstrainToRectFcn|makehdr|makelut|makeresampler|maketform|mat2gray|mean2|"+ - "medfilt2|montage|nitfinfo|nitfread|nlfilter|normxcorr2|ntsc2rgb|openrset|ordfilt2|otf2psf|padarray|para2fan|phantom|poly2mask|psf2otf|qtdecomp|qtgetblk|qtsetblk|radon|rangefilt|"+ - "reflect|regionprops|registration\.metric\.(?:MattesMutualInformation|MeanSquares)|registration\.optimizer\.(?:OnePlusOneEvolutionary|RegularStepGradientDescent)|rgb2gray|"+ - "rgb2ntsc|rgb2ycbcr|roicolor|roifill|roifilt2|roipoly|rsetwrite|std2|stdfilt|strel|stretchlim|subimage|tformarray|tformfwd|tforminv|tonemap|translate|truesize|uintlut|viscircles|"+ - "warp|watershed|whitepoint|wiener2|xyz2double|xyz2uint16|ycbcr2rgb|bintprog|color|fgoalattain|fminbnd|fmincon|fminimax|fminsearch|fminunc|fseminf|fsolve|fzero|fzmult|gangstr|ktrlink|"+ - "linprog|lsqcurvefit|lsqlin|lsqnonlin|lsqnonneg|optimget|optimset|optimtool|quadprog" - ); - var storageType = ( - "cell|struct|char|double|single|logical|u?int(?:8|16|32|64)|sparse" - ); - var keywordMapper = this.createKeywordMapper({ - "storage.type": storageType, - "support.function": builtinFunctions, - "keyword": keywords, - "constant.language": builtinConstants - }, "identifier", true); - - this.$rules = { - "start" : [ { - token : "comment", - regex : "^%[^\r\n]*" - }, { - token : "string", // " string - regex : '".*?"' - }, { - token : "string", // ' string - regex : "'.*?'" - }, { - token : "constant.numeric", // float - regex : "[+-]?\\d+(?:(?:\\.\\d*)?(?:[eE][+-]?\\d+)?)?\\b" - }, { - token : keywordMapper, - regex : "[a-zA-Z_$][a-zA-Z0-9_$]*\\b" - }, { - token : "keyword.operator", - regex : "\\+|\\-|\\/|\\/\\/|%|<@>|@>|<@|&|\\^|~|<|>|<=|=>|==|!=|<>|=" - }, { - token : "punctuation.operator", - regex : "\\?|\\:|\\,|\\;|\\." - }, { - token : "paren.lparen", - regex : "[\\(]" - }, { - token : "paren.rparen", - regex : "[\\)]" - }, { - token : "text", - regex : "\\s+" - } ] - }; -}; - -oop.inherits(MatlabHighlightRules, TextHighlightRules); - -exports.MatlabHighlightRules = MatlabHighlightRules; -}); \ No newline at end of file diff --git a/IDE/jsrealb-ide/ace-src-noconflict/mode-mel.js b/IDE/jsrealb-ide/ace-src-noconflict/mode-mel.js deleted file mode 100644 index 83f041db..00000000 --- a/IDE/jsrealb-ide/ace-src-noconflict/mode-mel.js +++ /dev/null @@ -1,570 +0,0 @@ -/* ***** BEGIN LICENSE BLOCK ***** - * Distributed under the BSD license: - * - * Copyright (c) 2012, Ajax.org B.V. - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are met: - * * Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * * Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * * Neither the name of Ajax.org B.V. nor the - * names of its contributors may be used to endorse or promote products - * derived from this software without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND - * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED - * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE - * DISCLAIMED. IN NO EVENT SHALL AJAX.ORG B.V. BE LIABLE FOR ANY - * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES - * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; - * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND - * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - * - * ***** END LICENSE BLOCK ***** */ - -ace.define('ace/mode/mel', ['require', 'exports', 'module' , 'ace/lib/oop', 'ace/mode/text', 'ace/tokenizer', 'ace/mode/mel_highlight_rules', 'ace/mode/behaviour/cstyle', 'ace/mode/folding/cstyle'], function(require, exports, module) { - - -var oop = require("../lib/oop"); -var TextMode = require("./text").Mode; -var Tokenizer = require("../tokenizer").Tokenizer; -var MELHighlightRules = require("./mel_highlight_rules").MELHighlightRules; -var CstyleBehaviour = require("./behaviour/cstyle").CstyleBehaviour; -var CStyleFoldMode = require("./folding/cstyle").FoldMode; - -var Mode = function() { - this.HighlightRules = MELHighlightRules; - this.$behaviour = new CstyleBehaviour(); - this.foldingRules = new CStyleFoldMode(); -}; -oop.inherits(Mode, TextMode); - -(function() { - - this.lineCommentStart = "//"; - this.blockComment = {start: "/*", end: "*/"}; - -}).call(Mode.prototype); - -exports.Mode = Mode; - -}); - -ace.define('ace/mode/mel_highlight_rules', ['require', 'exports', 'module' , 'ace/lib/oop', 'ace/mode/text_highlight_rules'], function(require, exports, module) { - - -var oop = require("../lib/oop"); -var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; - -var MELHighlightRules = function() { - - this.$rules = { start: - [ { caseInsensitive: true, - token: 'storage.type.mel', - regex: '\\b(matrix|string|vector|float|int|void)\\b' }, - { caseInsensitive: true, - token: 'support.function.mel', - regex: '\\b((s(h(ow(ManipCtx|S(hadingGroupAttrEditor|electionInTitle)|H(idden|elp)|Window)|el(f(Button|TabLayout|Layout)|lField)|ading(GeometryRelCtx|Node|Connection|LightRelCtx))|y(s(tem|File)|mbol(Button|CheckBox))|nap(shot|Mode|2to2 |TogetherCtx|Key)|c(ulpt|ene(UIReplacement|Editor)|ale(BrushBrightness |Constraint|Key(Ctx)?)?|r(ipt(Node|Ctx|Table|edPanel(Type)?|Job|EditorInfo)|oll(Field|Layout))|mh)|t(itch(Surface(Points)?|AndExplodeShell )|a(ckTrace|rt(sWith |String ))|r(cmp|i(ng(ToStringArray |Array(Remove(Duplicates | )|C(ount |atenate )|ToString |Intersector))|p )|oke))|i(n(gleProfileBirailSurface)?|ze|gn|mplify)|o(u(nd(Control)?|rce)|ft(Mod(Ctx)?)?|rt)|u(perCtx|rface(S(haderList|ampler))?|b(st(itute(Geometry|AllString )?|ring)|d(M(irror|a(tchTopology|p(SewMove|Cut)))|iv(Crease|DisplaySmoothness)?|C(ollapse|leanTopology)|T(o(Blind|Poly)|ransferUVsToCache)|DuplicateAndConnect|EditUV|ListComponentConversion|AutoProjection)))|p(h(ere|rand)|otLight(PreviewPort)?|aceLocator|r(ing|eadSheetEditor))|e(t(s|MenuMode|Sta(te |rtupMessage|mpDensity )|NodeTypeFlag|ConstraintRestPosition |ToolTo|In(putDeviceMapping|finity)|D(ynamic|efaultShadingGroup|rivenKeyframe)|UITemplate|P(ar(ticleAttr|ent)|roject )|E(scapeCtx|dit(or|Ctx))|Key(Ctx|frame|Path)|F(ocus|luidAttr)|Attr(Mapping)?)|parator|ed|l(ect(Mode|ionConnection|Context|Type|edNodes|Pr(iority|ef)|Key(Ctx)?)?|LoadSettings)|archPathArray )|kin(Cluster|Percent)|q(uareSurface|rt)|w(itchTable|atchDisplayPort)|a(ve(Menu|Shelf|ToolSettings|I(nitialState|mage)|Pref(s|Objects)|Fluid|A(ttrPreset |llShelves))|mpleImage)|rtContext|mooth(step|Curve|TangentSurface))|h(sv_to_rgb|yp(ot|er(Graph|Shade|Panel))|i(tTest|de|lite)|ot(Box|key(Check)?)|ud(Button|Slider(Button)?)|e(lp(Line)?|adsUpDisplay|rmite)|wRe(nder(Load)?|flectionMap)|ard(enPointCurve|ware(RenderPanel)?))|n(o(nLinear|ise|de(Type|IconButton|Outliner|Preset)|rmal(ize |Constraint))|urbs(Boolean|S(elect|quare)|C(opyUVSet|ube)|To(Subdiv|Poly(gonsPref)?)|Plane|ViewDirectionVector )|ew(ton|PanelItems)|ame(space(Info)?|Command|Field))|c(h(oice|dir|eck(Box(Grp)?|DefaultRenderGlobals)|a(n(nelBox|geSubdiv(Region|ComponentDisplayLevel))|racter(Map|OutlineEditor)?))|y(cleCheck|linder)|tx(Completion|Traverse|EditMode|Abort)|irc(ularFillet|le)|o(s|n(str(uctionHistory|ain(Value)?)|nect(ionInfo|Control|Dynamic|Joint|Attr)|t(extInfo|rol)|dition|e|vert(SolidTx|Tessellation|Unit|FromOldLayers |Lightmap)|firmDialog)|py(SkinWeights|Key|Flexor|Array )|l(or(Slider(Grp|ButtonGrp)|Index(SliderGrp)?|Editor|AtPoint)?|umnLayout|lision)|arsenSubdivSelectionList|m(p(onentEditor|utePolysetVolume |actHairSystem )|mand(Port|Echo|Line)))|u(tKey|r(ve(MoveEPCtx|SketchCtx|CVCtx|Intersect|OnSurface|E(ditorCtx|PCtx)|AddPtCtx)?|rent(Ctx|Time(Ctx)?|Unit)))|p(GetSolverAttr|Button|S(olver(Types)?|e(t(SolverAttr|Edit)|am))|C(o(nstraint|llision)|ache)|Tool|P(anel|roperty))|eil|l(ip(Schedule(rOutliner)?|TrimBefore |Editor(CurrentTimeCtx)?)?|ose(Surface|Curve)|uster|ear(Cache)?|amp)|a(n(CreateManip|vas)|tch(Quiet)?|pitalizeString |mera(View)?)|r(oss(Product )?|eate(RenderLayer|MotionField |SubdivRegion|N(ode|ewShelf )|D(isplayLayer|rawCtx)|Editor))|md(Shell|FileOutput))|M(R(ender(ShadowData|Callback|Data|Util|View|Line(Array)?)|ampAttribute)|G(eometryData|lobal)|M(odelMessage|essage|a(nipData|t(erial|rix)))|BoundingBox|S(yntax|ceneMessage|t(atus|ring(Array)?)|imple|pace|elect(ion(Mask|List)|Info)|watchRender(Register|Base))|H(ardwareRenderer|WShaderSwatchGenerator)|NodeMessage|C(o(nditionMessage|lor(Array)?|m(putation|mand(Result|Message)))|ursor|loth(Material|S(ystem|olverRegister)|Con(straint|trol)|Triangle|Particle|Edge|Force)|allbackIdArray)|T(ypeId|ime(r(Message)?|Array)?|oolsInfo|esselationParams|r(imBoundaryArray|ansformationMatrix))|I(ntArray|t(Geometry|Mesh(Polygon|Edge|Vertex|FaceVertex)|S(urfaceCV|electionList)|CurveCV|Instancer|eratorType|D(ependency(Graph|Nodes)|ag)|Keyframe)|k(System|HandleGroup)|mage)|3dView|Object(SetMessage|Handle|Array)?|D(G(M(odifier|essage)|Context)|ynSwept(Triangle|Line)|istance|oubleArray|evice(State|Channel)|a(ta(Block|Handle)|g(M(odifier|essage)|Path(Array)?))|raw(Request(Queue)?|Info|Data|ProcedureBase))|U(serEventMessage|i(nt(Array|64Array)|Message))|P(o(int(Array)?|lyMessage)|lug(Array)?|rogressWindow|x(G(eometry(Iterator|Data)|lBuffer)|M(idiInputDevice|odelEditorCommand|anipContainer)|S(urfaceShape(UI)?|pringNode|electionContext)|HwShaderNode|Node|Co(ntext(Command)?|m(ponentShape|mand))|T(oolCommand|ransform(ationMatrix)?)|IkSolver(Node)?|3dModelView|ObjectSet|D(eformerNode|ata|ragAndDropBehavior)|PolyT(weakUVCommand|rg)|EmitterNode|F(i(eldNode|leTranslator)|luidEmitterNode)|LocatorNode))|E(ulerRotation|vent(Message)?)|ayatomr|Vector(Array)?|Quaternion|F(n(R(otateManip|eflectShader|adialField)|G(e(nericAttribute|ometry(Data|Filter))|ravityField)|M(otionPath|es(sageAttribute|h(Data)?)|a(nip3D|trix(Data|Attribute)))|B(l(innShader|endShapeDeformer)|ase)|S(caleManip|t(ateManip|ring(Data|ArrayData))|ingleIndexedComponent|ubd(Names|Data)?|p(hereData|otLight)|et|kinCluster)|HikEffector|N(on(ExtendedLight|AmbientLight)|u(rbs(Surface(Data)?|Curve(Data)?)|meric(Data|Attribute))|ewtonField)|C(haracter|ircleSweepManip|ompo(nent(ListData)?|undAttribute)|urveSegmentManip|lip|amera)|T(ypedAttribute|oggleManip|urbulenceField|r(ipleIndexedComponent|ansform))|I(ntArrayData|k(Solver|Handle|Joint|Effector))|D(ynSweptGeometryData|i(s(cManip|tanceManip)|rection(Manip|alLight))|ouble(IndexedComponent|ArrayData)|ependencyNode|a(ta|gNode)|ragField)|U(ni(tAttribute|formField)|Int64ArrayData)|P(hong(Shader|EShader)|oint(On(SurfaceManip|CurveManip)|Light|ArrayData)|fxGeometry|lugin(Data)?|arti(cleSystem|tion))|E(numAttribute|xpression)|V(o(lume(Light|AxisField)|rtexField)|ectorArrayData)|KeyframeDelta(Move|B(lockAddRemove|reakdown)|Scale|Tangent|InfType|Weighted|AddRemove)?|F(ield|luid|reePointTriadManip)|W(ireDeformer|eightGeometryFilter)|L(ight(DataAttribute)?|a(yeredShader|ttice(D(eformer|ata))?|mbertShader))|A(ni(sotropyShader|mCurve)|ttribute|irField|r(eaLight|rayAttrsData)|mbientLight))?|ile(IO|Object)|eedbackLine|loat(Matrix|Point(Array)?|Vector(Array)?|Array))|L(i(ghtLinks|brary)|ockMessage)|A(n(im(Message|C(ontrol|urveC(hange|lipboard(Item(Array)?)?))|Util)|gle)|ttribute(Spec(Array)?|Index)|r(rayData(Builder|Handle)|g(Database|Parser|List))))|t(hreePointArcCtx|ime(Control|Port|rX)|o(ol(Button|HasOptions|Collection|Dropped|PropertyWindow)|NativePath |upper|kenize(List )?|l(ower|erance)|rus|ggle(WindowVisibility|Axis)?)|u(rbulence|mble(Ctx)?)|ex(RotateContext|M(oveContext|anipContext)|t(ScrollList|Curves|ure(HairColor |DisplacePlane |PlacementContext|Window)|ToShelf |Field(Grp|ButtonGrp)?)?|S(caleContext|electContext|mudgeUVContext)|WinToolCtx)|woPointArcCtx|a(n(gentConstraint)?|bLayout)|r(im|unc(ate(HairCache|FluidCache))?|a(ns(formLimits|lator)|c(e|k(Ctx)?))))|i(s(olateSelect|Connected|True|Dirty|ParentOf |Valid(String |ObjectName |UiName )|AnimCurve )|n(s(tance(r)?|ert(Joint(Ctx)?|K(not(Surface|Curve)|eyCtx)))|heritTransform|t(S(crollBar|lider(Grp)?)|er(sect|nalVar|ToUI )|Field(Grp)?))|conText(Radio(Button|Collection)|Button|StaticLabel|CheckBox)|temFilter(Render|Type|Attr)?|prEngine|k(S(ystem(Info)?|olver|plineHandleCtx)|Handle(Ctx|DisplayScale)?|fkDisplayMethod)|m(portComposerCurves |fPlugins|age))|o(ceanNurbsPreviewPlane |utliner(Panel|Editor)|p(tion(Menu(Grp)?|Var)|en(GLExtension|MayaPref))|verrideModifier|ffset(Surface|Curve(OnSurface)?)|r(ientConstraint|bit(Ctx)?)|b(soleteProc |j(ect(Center|Type(UI)?|Layer )|Exists)))|d(yn(RelEd(itor|Panel)|Globals|C(ontrol|ache)|P(a(intEditor|rticleCtx)|ref)|Exp(ort|ression)|amicLoad)|i(s(connect(Joint|Attr)|tanceDim(Context|ension)|pla(y(RGBColor|S(tats|urface|moothness)|C(olor|ull)|Pref|LevelOfDetail|Affected)|cementToPoly)|kCache|able)|r(name |ect(ionalLight|KeyCtx)|map)|mWhen)|o(cServer|Blur|t(Product )?|ubleProfileBirailSurface|peSheetEditor|lly(Ctx)?)|uplicate(Surface|Curve)?|e(tach(Surface|Curve|DeviceAttr)|vice(Panel|Editor)|f(ine(DataServer|VirtualDevice)|ormer|ault(Navigation|LightListCheckBox))|l(ete(Sh(elfTab |adingGroupsAndMaterials )|U(nusedBrushes |I)|Attr)?|randstr)|g_to_rad)|agPose|r(opoffLocator|ag(gerContext)?)|g(timer|dirty|Info|eval))|CBG |u(serCtx|n(t(angleUV|rim)|i(t|form)|do(Info)?|loadPlugin|assignInputDevice|group)|iTemplate|p(dateAE |Axis)|v(Snapshot|Link))|joint(C(tx|luster)|DisplayScale|Lattice)?|p(sd(ChannelOutliner|TextureFile|E(ditTextureFile|xport))|close|i(c(ture|kWalk)|xelMove)|o(se|int(MatrixMult |C(onstraint|urveConstraint)|On(Surface|Curve)|Position|Light)|p(upMenu|en)|w|l(y(Reduce|GeoSampler|M(irrorFace|ove(UV|Edge|Vertex|Facet(UV)?)|erge(UV|Edge(Ctx)?|Vertex|Facet(Ctx)?)|ap(Sew(Move)?|Cut|Del))|B(oolOp|evel|l(indData|endColor))|S(traightenUVBorder|oftEdge|u(perCtx|bdivide(Edge|Facet))|p(her(icalProjection|e)|lit(Ring|Ctx|Edge|Vertex)?)|e(tToFaceNormal|parate|wEdge|lect(Constraint(Monitor)?|EditCtx))|mooth)|Normal(izeUV|PerVertex)?|C(hipOff|ylind(er|ricalProjection)|o(ne|pyUV|l(or(BlindData|Set|PerVertex)|lapse(Edge|Facet)))|u(t(Ctx)?|be)|l(ipboard|oseBorder)|acheMonitor|rea(seEdge|teFacet(Ctx)?))|T(o(Subdiv|rus)|r(iangulate|ansfer))|In(stallAction|fo)|Options|D(uplicate(Edge|AndConnect)|el(Edge|Vertex|Facet))|U(nite|VSet)|P(yramid|oke|lan(e|arProjection)|r(ism|ojection))|E(ditUV|valuate|xtrude(Edge|Facet))|Qu(eryBlindData|ad)|F(orceUV|lip(UV|Edge))|WedgeFace|L(istComponentConversion|ayoutUV)|A(utoProjection|ppend(Vertex|FacetCtx)?|verage(Normal|Vertex)))|eVectorConstraint))|utenv|er(cent|formanceOptions)|fxstrokes|wd|l(uginInfo|a(y(b(last|ackOptions))?|n(e|arSrf)))|a(steKey|ne(l(History|Configuration)?|Layout)|thAnimation|irBlend|use|lettePort|r(ti(cle(RenderInfo|Instancer|Exists)?|tion)|ent(Constraint)?|am(Dim(Context|ension)|Locator)))|r(int|o(j(ect(ion(Manip|Context)|Curve|Tangent)|FileViewer)|pMo(dCtx|ve)|gress(Bar|Window)|mptDialog)|eloadRefEd))|e(n(codeString|d(sWith |String )|v|ableDevice)|dit(RenderLayer(Globals|Members)|or(Template)?|DisplayLayer(Globals|Members)|AttrLimits )|v(ent|al(Deferred|Echo)?)|quivalent(Tol | )|ffector|r(f|ror)|x(clusiveLightCheckBox|t(end(Surface|Curve)|rude)|ists|p(ortComposerCurves |ression(EditorListen)?)?|ec(uteForEachObject )?|actWorldBoundingBox)|mit(ter)?)|v(i(sor|ew(Set|HeadOn|2dToolCtx|C(lipPlane|amera)|Place|Fit|LookAt))|o(lumeAxis|rtex)|e(ctorize|rifyCmd )|alidateShelfName )|key(Tangent|frame(Region(MoveKeyCtx|S(caleKeyCtx|e(tKeyCtx|lectKeyCtx))|CurrentTimeCtx|TrackCtx|InsertKeyCtx|D(irectKeyCtx|ollyCtx))|Stats|Outliner)?)|qu(it|erySubdiv)|f(c(heck|lose)|i(nd(RelatedSkinCluster |MenuItem |er|Keyframe|AllIntersections )|tBspline|l(ter(StudioImport|Curve|Expand)?|e(BrowserDialog|test|Info|Dialog|Extension )?|letCurve)|rstParentOf )|o(ntDialog|pen|rmLayout)|print|eof|flush|write|l(o(or|w|at(S(crollBar|lider(Grp|ButtonGrp|2)?)|Eq |Field(Grp)?))|u(shUndo|id(CacheInfo|Emitter|VoxelInfo))|exor)|r(omNativePath |e(eFormFillet|wind|ad)|ameLayout)|get(word|line)|mod)|w(hatIs|i(ndow(Pref)?|re(Context)?)|orkspace|ebBrowser(Prefs)?|a(itCursor|rning)|ri(nkle(Context)?|teTake))|l(s(T(hroughFilter|ype )|UI)?|i(st(Relatives|MenuAnnotation |Sets|History|NodeTypes|C(onnections|ameras)|Transforms |InputDevice(s|Buttons|Axes)|erEditor|DeviceAttachments|Unselected |A(nimatable|ttr))|n(step|eIntersection )|ght(link|List(Panel|Editor)?))|o(ckNode|okThru|ft|ad(NewShelf |P(lugin|refObjects)|Fluid)|g)|a(ssoContext|y(out|er(Button|ed(ShaderPort|TexturePort)))|ttice(DeformKeyCtx)?|unch(ImageEditor)?))|a(ssign(Command|InputDevice)|n(notate|im(C(one|urveEditor)|Display|View)|gle(Between)?)|tt(ach(Surface|Curve|DeviceAttr)|r(ibute(Menu|Info|Exists|Query)|NavigationControlGrp|Co(ntrolGrp|lorSliderGrp|mpatibility)|PresetEditWin|EnumOptionMenu(Grp)?|Field(Grp|SliderGrp)))|i(r|mConstraint)|d(d(NewShelfTab|Dynamic|PP|Attr(ibuteEditorNodeHelp)?)|vanceToNextDrivenKey)|uto(Place|Keyframe)|pp(endStringArray|l(y(Take|AttrPreset)|icationName))|ffect(s|edNet)|l(i(as(Attr)?|gn(Surface|C(tx|urve))?)|lViewFit)|r(c(len|Len(DimContext|gthDimension))|t(BuildPaintMenu|Se(tPaintCtx|lectCtx)|3dPaintCtx|UserPaintCtx|PuttyCtx|FluidAttrCtx|Attr(SkinPaintCtx|Ctx|PaintVertexCtx))|rayMapper)|mbientLight|b(s|out))|r(igid(Body|Solver)|o(t(at(ionInterpolation|e))?|otOf |undConstantRadius|w(ColumnLayout|Layout)|ll(Ctx)?)|un(up|TimeCommand)|e(s(olutionNode|et(Tool|AE )|ampleFluid)|hash|n(der(GlobalsNode|Manip|ThumbnailUpdate|Info|er|Partition|QualityNode|Window(SelectContext|Editor)|LayerButton)?|ame(SelectionList |UI|Attr)?)|cord(Device|Attr)|target|order(Deformers)?|do|v(olve|erse(Surface|Curve))|quires|f(ineSubdivSelectionList|erence(Edit|Query)?|resh(AE )?)|loadImage|adTake|root|move(MultiInstance|Joint)|build(Surface|Curve))|a(n(d(state|omizeFollicles )?|geControl)|d(i(o(MenuItemCollection|Button(Grp)?|Collection)|al)|_to_deg)|mpColorPort)|gb_to_hsv)|g(o(toBindPose |al)|e(t(M(odifiers|ayaPanelTypes )|Classification|InputDeviceRange|pid|env|DefaultBrush|Pa(nel|rticleAttr)|F(ileList|luidAttr)|A(ttr|pplicationVersionAsFloat ))|ometryConstraint)|l(Render(Editor)?|obalStitch)|a(uss|mma)|r(id(Layout)?|oup(ObjectsByName )?|a(dientControl(NoAttr)?|ph(SelectContext|TrackCtx|DollyCtx)|vity|bColor))|match)|x(pmPicker|form|bmLangPathList )|m(i(n(imizeApp)?|rrorJoint)|o(del(CurrentTimeCtx|Panel|Editor)|use|v(In|e(IKtoFK |VertexAlongDirection|KeyCtx)?|Out))|u(te|ltiProfileBirailSurface)|e(ssageLine|nu(BarLayout|Item(ToShelf )?|Editor)?|mory)|a(nip(Rotate(Context|LimitsCtx)|Move(Context|LimitsCtx)|Scale(Context|LimitsCtx)|Options)|tch|ke(Roll |SingleSurface|TubeOn |Identity|Paintable|bot|Live)|rker|g|x))|b(in(Membership|d(Skin|Pose))|o(neLattice|undary|x(ZoomCtx|DollyCtx))|u(tton(Manip)?|ild(BookmarkMenu|KeyframeMenu)|fferCurve)|e(ssel|vel(Plus)?)|l(indDataType|end(Shape(Panel|Editor)?|2|TwoAttr))|a(sename(Ex | )|tchRender|ke(Results|Simulation|Clip|PartialHistory|FluidShading )))))\\b' }, - { caseInsensitive: true, - token: 'support.constant.mel', - regex: '\\b(s(h(ellTessellate|a(d(ing(Map|Engine)|erGlow)|pe))|n(ow|apshot(Shape)?)|c(ulpt|aleConstraint|ript)|t(yleCurve|itch(Srf|AsNurbsShell)|u(cco|dioClearCoat)|encil|roke(Globals)?)|i(ngleShadingSwitch|mpleVolumeShader)|o(ftMod(Manip|Handle)?|lidFractal)|u(rface(Sha(der|pe)|Info|EdManip|VarGroup|Luminance)|b(Surface|d(M(odifier(UV|World)?|ap(SewMove|Cut|pingManip))|B(lindData|ase)|iv(ReverseFaces|SurfaceVarGroup|Co(llapse|mponentId)|To(Nurbs|Poly))?|HierBlind|CleanTopology|Tweak(UV)?|P(lanarProj|rojManip)|LayoutUV|A(ddTopology|utoProj))|Curve))|p(BirailSrf|otLight|ring)|e(tRange|lectionListOperator)|k(inCluster|etchPlane)|quareSrf|ampler(Info)?|m(ooth(Curve|TangentSrf)|ear))|h(svToRgb|yper(GraphInfo|View|Layout)|ik(Solver|Handle|Effector)|oldMatrix|eightField|w(Re(nderGlobals|flectionMap)|Shader)|a(ir(System|Constraint|TubeShader)|rd(enPoint|wareRenderGlobals)))|n(o(n(ExtendedLightShapeNode|Linear|AmbientLightShapeNode)|ise|rmalConstraint)|urbs(Surface|Curve|T(oSubdiv(Proc)?|essellate)|DimShape)|e(twork|wtonField))|c(h(o(ice|oser)|ecker|aracter(Map|Offset)?)|o(n(straint|tr(olPoint|ast)|dition)|py(ColorSet|UVSet))|urve(Range|Shape|Normalizer(Linear|Angle)?|In(tersect|fo)|VarGroup|From(Mesh(CoM|Edge)?|Su(rface(Bnd|CoS|Iso)?|bdiv(Edge|Face)?)))|l(ip(Scheduler|Library)|o(se(stPointOnSurface|Surface|Curve)|th|ud)|uster(Handle)?|amp)|amera(View)?|r(eate(BPManip|ColorSet|UVSet)|ater))|t(ime(ToUnitConversion|Function)?|oo(nLineAttributes|lDrawManip)|urbulenceField|ex(BaseDeformManip|ture(BakeSet|2d|ToGeom|3d|Env)|SmudgeUVManip|LatticeDeformManip)|weak|angentConstraint|r(i(pleShadingSwitch|m(WithBoundaries)?)|ansform(Geometry)?))|i(n(s(tancer|ertKnot(Surface|Curve))|tersectSurface)|k(RPsolver|MCsolver|S(ystem|olver|Csolver|plineSolver)|Handle|PASolver|Effector)|m(plicit(Box|Sphere|Cone)|agePlane))|o(cean(Shader)?|pticalFX|ffset(Surface|C(os|urve))|ldBlindDataBase|rient(Constraint|ationMarker)|bject(RenderFilter|MultiFilter|BinFilter|S(criptFilter|et)|NameFilter|TypeFilter|Filter|AttrFilter))|d(yn(Globals|Base)|i(s(tance(Between|DimShape)|pla(yLayer(Manager)?|cementShader)|kCache)|rect(ionalLight|edDisc)|mensionShape)|o(ubleShadingSwitch|f)|pBirailSrf|e(tach(Surface|Curve)|pendNode|f(orm(Bend|S(ine|quash)|Twist|ableShape|F(unc|lare)|Wave)|ault(RenderUtilityList|ShaderList|TextureList|LightList))|lete(Co(lorSet|mponent)|UVSet))|ag(Node|Pose)|r(opoffLocator|agField))|u(seBackground|n(trim|i(t(Conversion|ToTimeConversion)|formField)|known(Transform|Dag)?)|vChooser)|j(iggle|oint(Cluster|Ffd|Lattice)?)|p(sdFileTex|hong(E)?|o(s(tProcessList|itionMarker)|int(MatrixMult|Constraint|On(SurfaceInfo|CurveInfo)|Emitter|Light)|l(y(Reduce|M(irror|o(difier(UV|World)?|ve(UV|Edge|Vertex|Face(tUV)?))|erge(UV|Edge|Vert|Face)|ap(Sew(Move)?|Cut|Del))|B(oolOp|evel|lindData|ase)|S(traightenUVBorder|oftEdge|ubd(Edge|Face)|p(h(ere|Proj)|lit(Ring|Edge|Vert)?)|e(parate|wEdge)|mooth(Proxy|Face)?)|Normal(izeUV|PerVertex)?|C(hipOff|yl(inder|Proj)|o(ne|pyUV|l(orPerVertex|lapse(Edge|F)))|u(t(Manip(Container)?)?|be)|loseBorder|rea(seEdge|t(or|eFace)))|T(o(Subdiv|rus)|weak(UV)?|r(iangulate|ansfer))|OptUvs|D(uplicateEdge|el(Edge|Vertex|Facet))|Unite|P(yramid|oke(Manip)?|lan(e|arProj)|r(i(sm|mitive)|oj))|Extrude(Edge|Vertex|Face)|VertexNormalManip|Quad|Flip(UV|Edge)|WedgeFace|LayoutUV|A(utoProj|ppend(Vertex)?|verageVertex))|eVectorConstraint))|fx(Geometry|Hair|Toon)|l(usMinusAverage|a(n(e|arTrimSurface)|ce(2dTexture|3dTexture)))|a(ssMatrix|irBlend|r(ti(cle(SamplerInfo|C(olorMapper|loud)|TranspMapper|IncandMapper|AgeMapper)?|tion)|ent(Constraint|Tessellate)|amDimension))|r(imitive|o(ject(ion|Curve|Tangent)|xyManager)))|e(n(tity|v(Ball|ironmentFog|S(phere|ky)|C(hrome|ube)|Fog))|x(t(end(Surface|Curve)|rude)|p(lodeNurbsShell|ression)))|v(iewManip|o(lume(Shader|Noise|Fog|Light|AxisField)|rtexField)|e(ctor(RenderGlobals|Product)|rtexBakeSet))|quadShadingSwitch|f(i(tBspline|eld|l(ter(Resample|Simplify|ClosestSample|Euler)?|e|letCurve))|o(urByFourMatrix|llicle)|urPointOn(MeshInfo|Subd)|f(BlendSrf(Obsolete)?|d|FilletSrf)|l(ow|uid(S(hape|liceManip)|Texture(2D|3D)|Emitter)|exorShape)|ra(ctal|meCache))|w(tAddMatrix|ire|ood|eightGeometryFilter|ater|rap)|l(ight(Info|Fog|Li(st|nker))?|o(cator|okAt|d(Group|Thresholds)|ft)|uminance|ea(stSquaresModifier|ther)|a(yered(Shader|Texture)|ttice|mbert))|a(n(notationShape|i(sotropic|m(Blend(InOut)?|C(urve(T(T|U|L|A)|U(T|U|L|A))?|lip)))|gleBetween)|tt(ach(Surface|Curve)|rHierarchyTest)|i(rField|mConstraint)|dd(Matrix|DoubleLinear)|udio|vg(SurfacePoints|NurbsSurfacePoints|Curves)|lign(Manip|Surface|Curve)|r(cLengthDimension|tAttrPaintTest|eaLight|rayMapper)|mbientLight|bstractBase(NurbsConversion|Create))|r(igid(Body|Solver|Constraint)|o(ck|undConstantRadius)|e(s(olution|ultCurve(TimeTo(Time|Unitless|Linear|Angular))?)|nder(Rect|Globals(List)?|Box|Sphere|Cone|Quality|L(ight|ayer(Manager)?))|cord|v(olve(dPrimitive)?|erse(Surface|Curve)?)|f(erence|lect)|map(Hsv|Color|Value)|build(Surface|Curve))|a(dialField|mp(Shader)?)|gbToHsv|bfSrf)|g(uide|eo(Connect(or|able)|metry(Shape|Constraint|VarGroup|Filter))|lobal(Stitch|CacheControl)|ammaCorrect|r(id|oup(Id|Parts)|a(nite|vityField)))|Fur(Globals|Description|Feedback|Attractors)|xformManip|m(o(tionPath|untain|vie)|u(te|lt(Matrix|i(plyDivide|listerLight)|DoubleLinear))|pBirailSrf|e(sh(VarGroup)?|ntalray(Texture|IblShape))|a(terialInfo|ke(Group|Nurb(sSquare|Sphere|C(ylinder|ircle|one|ube)|Torus|Plane)|CircularArc|T(hreePointCircularArc|extCurves|woPointCircularArc))|rble))|b(irailSrf|o(neLattice|olean|undary(Base)?)|u(lge|mp(2d|3d))|evel(Plus)?|l(in(n|dDataTemplate)|end(Shape|Color(s|Sets)|TwoAttr|Device|Weighted)?)|a(se(GeometryVarGroup|ShadingSwitch|Lattice)|keSet)|r(ownian|ush)))\\b' }, - { caseInsensitive: true, - token: 'keyword.control.mel', - regex: '\\b(if|in|else|for|while|break|continue|case|default|do|switch|return|switch|case|source|catch|alias)\\b' }, - { token: 'keyword.other.mel', regex: '\\b(global)\\b' }, - { caseInsensitive: true, - token: 'constant.language.mel', - regex: '\\b(null|undefined)\\b' }, - { token: 'constant.numeric.mel', - regex: '\\b((0(x|X)[0-9a-fA-F]*)|(([0-9]+\\.?[0-9]*)|(\\.[0-9]+))((e|E)(\\+|-)?[0-9]+)?)(L|l|UL|ul|u|U|F|f)?\\b' }, - { token: 'punctuation.definition.string.begin.mel', - regex: '"', - push: - [ { token: 'constant.character.escape.mel', regex: '\\\\.' }, - { token: 'punctuation.definition.string.end.mel', - regex: '"', - next: 'pop' }, - { defaultToken: 'string.quoted.double.mel' } ] }, - - { token: [ 'variable.other.mel', 'punctuation.definition.variable.mel' ], - regex: '(\\$)([a-zA-Z_\\x7f-\\xff][a-zA-Z0-9_\\x7f-\\xff]*?\\b)' }, - - { token: 'punctuation.definition.string.begin.mel', - regex: '\'', - push: - [ { token: 'constant.character.escape.mel', regex: '\\\\.' }, - { token: 'punctuation.definition.string.end.mel', - regex: '\'', - next: 'pop' }, - { defaultToken: 'string.quoted.single.mel' } ] }, - - { token: 'constant.language.mel', - regex: '\\b(false|true|yes|no|on|off)\\b' }, - - { token: 'punctuation.definition.comment.mel', - regex: '/\\*', - push: - [ { token: 'punctuation.definition.comment.mel', - regex: '\\*/', - next: 'pop' }, - { defaultToken: 'comment.block.mel' } ] }, - - { token: [ 'comment.line.double-slash.mel', 'punctuation.definition.comment.mel' ], - regex: '(//)(.*$\\n?)' }, - - { caseInsensitive: true, - token: 'keyword.operator.mel', - regex: '\\b(instanceof)\\b' }, - { token: 'keyword.operator.symbolic.mel', - regex: '[-\\!\\%\\&\\*\\+\\=\\/\\?\\:]' }, - - { token: [ 'meta.preprocessor.mel', 'punctuation.definition.preprocessor.mel' ], - regex: '(^[ \\t]*)((?:#)[a-zA-Z]+)' }, - - { token: [ 'meta.function.mel', 'keyword.other.mel', 'storage.type.mel', 'entity.name.function.mel', 'punctuation.section.function.mel' ], - regex: '((?:global\\s*)?proc)\\s*(\\w+\\s*\\[?\\]?\\s+|\\s+)([A-Za-z_][A-Za-z0-9_\\.]*)(\\s*(\\())', - push: - [ { include: '$self' }, - { token: 'punctuation.section.function.mel', - regex: '\\)', - next: 'pop' }, - { defaultToken: 'meta.function.mel' } ] } - - ] } - - this.normalizeRules(); -}; - -oop.inherits(MELHighlightRules, TextHighlightRules); - -exports.MELHighlightRules = MELHighlightRules; -}); - -ace.define('ace/mode/behaviour/cstyle', ['require', 'exports', 'module' , 'ace/lib/oop', 'ace/mode/behaviour', 'ace/token_iterator', 'ace/lib/lang'], function(require, exports, module) { - - -var oop = require("../../lib/oop"); -var Behaviour = require("../behaviour").Behaviour; -var TokenIterator = require("../../token_iterator").TokenIterator; -var lang = require("../../lib/lang"); - -var SAFE_INSERT_IN_TOKENS = - ["text", "paren.rparen", "punctuation.operator"]; -var SAFE_INSERT_BEFORE_TOKENS = - ["text", "paren.rparen", "punctuation.operator", "comment"]; - - -var autoInsertedBrackets = 0; -var autoInsertedRow = -1; -var autoInsertedLineEnd = ""; -var maybeInsertedBrackets = 0; -var maybeInsertedRow = -1; -var maybeInsertedLineStart = ""; -var maybeInsertedLineEnd = ""; - -var CstyleBehaviour = function () { - - CstyleBehaviour.isSaneInsertion = function(editor, session) { - var cursor = editor.getCursorPosition(); - var iterator = new TokenIterator(session, cursor.row, cursor.column); - if (!this.$matchTokenType(iterator.getCurrentToken() || "text", SAFE_INSERT_IN_TOKENS)) { - var iterator2 = new TokenIterator(session, cursor.row, cursor.column + 1); - if (!this.$matchTokenType(iterator2.getCurrentToken() || "text", SAFE_INSERT_IN_TOKENS)) - return false; - } - iterator.stepForward(); - return iterator.getCurrentTokenRow() !== cursor.row || - this.$matchTokenType(iterator.getCurrentToken() || "text", SAFE_INSERT_BEFORE_TOKENS); - }; - - CstyleBehaviour.$matchTokenType = function(token, types) { - return types.indexOf(token.type || token) > -1; - }; - - CstyleBehaviour.recordAutoInsert = function(editor, session, bracket) { - var cursor = editor.getCursorPosition(); - var line = session.doc.getLine(cursor.row); - if (!this.isAutoInsertedClosing(cursor, line, autoInsertedLineEnd[0])) - autoInsertedBrackets = 0; - autoInsertedRow = cursor.row; - autoInsertedLineEnd = bracket + line.substr(cursor.column); - autoInsertedBrackets++; - }; - - CstyleBehaviour.recordMaybeInsert = function(editor, session, bracket) { - var cursor = editor.getCursorPosition(); - var line = session.doc.getLine(cursor.row); - if (!this.isMaybeInsertedClosing(cursor, line)) - maybeInsertedBrackets = 0; - maybeInsertedRow = cursor.row; - maybeInsertedLineStart = line.substr(0, cursor.column) + bracket; - maybeInsertedLineEnd = line.substr(cursor.column); - maybeInsertedBrackets++; - }; - - CstyleBehaviour.isAutoInsertedClosing = function(cursor, line, bracket) { - return autoInsertedBrackets > 0 && - cursor.row === autoInsertedRow && - bracket === autoInsertedLineEnd[0] && - line.substr(cursor.column) === autoInsertedLineEnd; - }; - - CstyleBehaviour.isMaybeInsertedClosing = function(cursor, line) { - return maybeInsertedBrackets > 0 && - cursor.row === maybeInsertedRow && - line.substr(cursor.column) === maybeInsertedLineEnd && - line.substr(0, cursor.column) == maybeInsertedLineStart; - }; - - CstyleBehaviour.popAutoInsertedClosing = function() { - autoInsertedLineEnd = autoInsertedLineEnd.substr(1); - autoInsertedBrackets--; - }; - - CstyleBehaviour.clearMaybeInsertedClosing = function() { - maybeInsertedBrackets = 0; - maybeInsertedRow = -1; - }; - - this.add("braces", "insertion", function (state, action, editor, session, text) { - var cursor = editor.getCursorPosition(); - var line = session.doc.getLine(cursor.row); - if (text == '{') { - var selection = editor.getSelectionRange(); - var selected = session.doc.getTextRange(selection); - if (selected !== "" && selected !== "{" && editor.getWrapBehavioursEnabled()) { - return { - text: '{' + selected + '}', - selection: false - }; - } else if (CstyleBehaviour.isSaneInsertion(editor, session)) { - if (/[\]\}\)]/.test(line[cursor.column]) || editor.inMultiSelectMode) { - CstyleBehaviour.recordAutoInsert(editor, session, "}"); - return { - text: '{}', - selection: [1, 1] - }; - } else { - CstyleBehaviour.recordMaybeInsert(editor, session, "{"); - return { - text: '{', - selection: [1, 1] - }; - } - } - } else if (text == '}') { - var rightChar = line.substring(cursor.column, cursor.column + 1); - if (rightChar == '}') { - var matching = session.$findOpeningBracket('}', {column: cursor.column + 1, row: cursor.row}); - if (matching !== null && CstyleBehaviour.isAutoInsertedClosing(cursor, line, text)) { - CstyleBehaviour.popAutoInsertedClosing(); - return { - text: '', - selection: [1, 1] - }; - } - } - } else if (text == "\n" || text == "\r\n") { - var closing = ""; - if (CstyleBehaviour.isMaybeInsertedClosing(cursor, line)) { - closing = lang.stringRepeat("}", maybeInsertedBrackets); - CstyleBehaviour.clearMaybeInsertedClosing(); - } - var rightChar = line.substring(cursor.column, cursor.column + 1); - if (rightChar === '}') { - var openBracePos = session.findMatchingBracket({row: cursor.row, column: cursor.column+1}, '}'); - if (!openBracePos) - return null; - var next_indent = this.$getIndent(session.getLine(openBracePos.row)); - } else if (closing) { - var next_indent = this.$getIndent(line); - } else { - return; - } - var indent = next_indent + session.getTabString(); - - return { - text: '\n' + indent + '\n' + next_indent + closing, - selection: [1, indent.length, 1, indent.length] - }; - } else { - CstyleBehaviour.clearMaybeInsertedClosing(); - } - }); - - this.add("braces", "deletion", function (state, action, editor, session, range) { - var selected = session.doc.getTextRange(range); - if (!range.isMultiLine() && selected == '{') { - var line = session.doc.getLine(range.start.row); - var rightChar = line.substring(range.end.column, range.end.column + 1); - if (rightChar == '}') { - range.end.column++; - return range; - } else { - maybeInsertedBrackets--; - } - } - }); - - this.add("parens", "insertion", function (state, action, editor, session, text) { - if (text == '(') { - var selection = editor.getSelectionRange(); - var selected = session.doc.getTextRange(selection); - if (selected !== "" && editor.getWrapBehavioursEnabled()) { - return { - text: '(' + selected + ')', - selection: false - }; - } else if (CstyleBehaviour.isSaneInsertion(editor, session)) { - CstyleBehaviour.recordAutoInsert(editor, session, ")"); - return { - text: '()', - selection: [1, 1] - }; - } - } else if (text == ')') { - var cursor = editor.getCursorPosition(); - var line = session.doc.getLine(cursor.row); - var rightChar = line.substring(cursor.column, cursor.column + 1); - if (rightChar == ')') { - var matching = session.$findOpeningBracket(')', {column: cursor.column + 1, row: cursor.row}); - if (matching !== null && CstyleBehaviour.isAutoInsertedClosing(cursor, line, text)) { - CstyleBehaviour.popAutoInsertedClosing(); - return { - text: '', - selection: [1, 1] - }; - } - } - } - }); - - this.add("parens", "deletion", function (state, action, editor, session, range) { - var selected = session.doc.getTextRange(range); - if (!range.isMultiLine() && selected == '(') { - var line = session.doc.getLine(range.start.row); - var rightChar = line.substring(range.start.column + 1, range.start.column + 2); - if (rightChar == ')') { - range.end.column++; - return range; - } - } - }); - - this.add("brackets", "insertion", function (state, action, editor, session, text) { - if (text == '[') { - var selection = editor.getSelectionRange(); - var selected = session.doc.getTextRange(selection); - if (selected !== "" && editor.getWrapBehavioursEnabled()) { - return { - text: '[' + selected + ']', - selection: false - }; - } else if (CstyleBehaviour.isSaneInsertion(editor, session)) { - CstyleBehaviour.recordAutoInsert(editor, session, "]"); - return { - text: '[]', - selection: [1, 1] - }; - } - } else if (text == ']') { - var cursor = editor.getCursorPosition(); - var line = session.doc.getLine(cursor.row); - var rightChar = line.substring(cursor.column, cursor.column + 1); - if (rightChar == ']') { - var matching = session.$findOpeningBracket(']', {column: cursor.column + 1, row: cursor.row}); - if (matching !== null && CstyleBehaviour.isAutoInsertedClosing(cursor, line, text)) { - CstyleBehaviour.popAutoInsertedClosing(); - return { - text: '', - selection: [1, 1] - }; - } - } - } - }); - - this.add("brackets", "deletion", function (state, action, editor, session, range) { - var selected = session.doc.getTextRange(range); - if (!range.isMultiLine() && selected == '[') { - var line = session.doc.getLine(range.start.row); - var rightChar = line.substring(range.start.column + 1, range.start.column + 2); - if (rightChar == ']') { - range.end.column++; - return range; - } - } - }); - - this.add("string_dquotes", "insertion", function (state, action, editor, session, text) { - if (text == '"' || text == "'") { - var quote = text; - var selection = editor.getSelectionRange(); - var selected = session.doc.getTextRange(selection); - if (selected !== "" && selected !== "'" && selected != '"' && editor.getWrapBehavioursEnabled()) { - return { - text: quote + selected + quote, - selection: false - }; - } else { - var cursor = editor.getCursorPosition(); - var line = session.doc.getLine(cursor.row); - var leftChar = line.substring(cursor.column-1, cursor.column); - if (leftChar == '\\') { - return null; - } - var tokens = session.getTokens(selection.start.row); - var col = 0, token; - var quotepos = -1; // Track whether we're inside an open quote. - - for (var x = 0; x < tokens.length; x++) { - token = tokens[x]; - if (token.type == "string") { - quotepos = -1; - } else if (quotepos < 0) { - quotepos = token.value.indexOf(quote); - } - if ((token.value.length + col) > selection.start.column) { - break; - } - col += tokens[x].value.length; - } - if (!token || (quotepos < 0 && token.type !== "comment" && (token.type !== "string" || ((selection.start.column !== token.value.length+col-1) && token.value.lastIndexOf(quote) === token.value.length-1)))) { - if (!CstyleBehaviour.isSaneInsertion(editor, session)) - return; - return { - text: quote + quote, - selection: [1,1] - }; - } else if (token && token.type === "string") { - var rightChar = line.substring(cursor.column, cursor.column + 1); - if (rightChar == quote) { - return { - text: '', - selection: [1, 1] - }; - } - } - } - } - }); - - this.add("string_dquotes", "deletion", function (state, action, editor, session, range) { - var selected = session.doc.getTextRange(range); - if (!range.isMultiLine() && (selected == '"' || selected == "'")) { - var line = session.doc.getLine(range.start.row); - var rightChar = line.substring(range.start.column + 1, range.start.column + 2); - if (rightChar == selected) { - range.end.column++; - return range; - } - } - }); - -}; - -oop.inherits(CstyleBehaviour, Behaviour); - -exports.CstyleBehaviour = CstyleBehaviour; -}); - -ace.define('ace/mode/folding/cstyle', ['require', 'exports', 'module' , 'ace/lib/oop', 'ace/range', 'ace/mode/folding/fold_mode'], function(require, exports, module) { - - -var oop = require("../../lib/oop"); -var Range = require("../../range").Range; -var BaseFoldMode = require("./fold_mode").FoldMode; - -var FoldMode = exports.FoldMode = function(commentRegex) { - if (commentRegex) { - this.foldingStartMarker = new RegExp( - this.foldingStartMarker.source.replace(/\|[^|]*?$/, "|" + commentRegex.start) - ); - this.foldingStopMarker = new RegExp( - this.foldingStopMarker.source.replace(/\|[^|]*?$/, "|" + commentRegex.end) - ); - } -}; -oop.inherits(FoldMode, BaseFoldMode); - -(function() { - - this.foldingStartMarker = /(\{|\[)[^\}\]]*$|^\s*(\/\*)/; - this.foldingStopMarker = /^[^\[\{]*(\}|\])|^[\s\*]*(\*\/)/; - - this.getFoldWidgetRange = function(session, foldStyle, row, forceMultiline) { - var line = session.getLine(row); - var match = line.match(this.foldingStartMarker); - if (match) { - var i = match.index; - - if (match[1]) - return this.openingBracketBlock(session, match[1], row, i); - - var range = session.getCommentFoldRange(row, i + match[0].length, 1); - - if (range && !range.isMultiLine()) { - if (forceMultiline) { - range = this.getSectionRange(session, row); - } else if (foldStyle != "all") - range = null; - } - - return range; - } - - if (foldStyle === "markbegin") - return; - - var match = line.match(this.foldingStopMarker); - if (match) { - var i = match.index + match[0].length; - - if (match[1]) - return this.closingBracketBlock(session, match[1], row, i); - - return session.getCommentFoldRange(row, i, -1); - } - }; - - this.getSectionRange = function(session, row) { - var line = session.getLine(row); - var startIndent = line.search(/\S/); - var startRow = row; - var startColumn = line.length; - row = row + 1; - var endRow = row; - var maxRow = session.getLength(); - while (++row < maxRow) { - line = session.getLine(row); - var indent = line.search(/\S/); - if (indent === -1) - continue; - if (startIndent > indent) - break; - var subRange = this.getFoldWidgetRange(session, "all", row); - - if (subRange) { - if (subRange.start.row <= startRow) { - break; - } else if (subRange.isMultiLine()) { - row = subRange.end.row; - } else if (startIndent == indent) { - break; - } - } - endRow = row; - } - - return new Range(startRow, startColumn, endRow, session.getLine(endRow).length); - }; - -}).call(FoldMode.prototype); - -}); diff --git a/IDE/jsrealb-ide/ace-src-noconflict/mode-mushcode.js b/IDE/jsrealb-ide/ace-src-noconflict/mode-mushcode.js deleted file mode 100644 index 63e4c5a9..00000000 --- a/IDE/jsrealb-ide/ace-src-noconflict/mode-mushcode.js +++ /dev/null @@ -1,705 +0,0 @@ -/* ***** BEGIN LICENSE BLOCK ***** - * Distributed under the BSD license: - * - * Copyright (c) 2010, Ajax.org B.V. - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are met: - * * Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * * Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * * Neither the name of Ajax.org B.V. nor the - * names of its contributors may be used to endorse or promote products - * derived from this software without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND - * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED - * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE - * DISCLAIMED. IN NO EVENT SHALL AJAX.ORG B.V. BE LIABLE FOR ANY - * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES - * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; - * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND - * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - * - * ***** END LICENSE BLOCK ***** */ - -ace.define('ace/mode/mushcode', ['require', 'exports', 'module' , 'ace/lib/oop', 'ace/mode/text', 'ace/tokenizer', 'ace/mode/mushcode_high_rules', 'ace/mode/folding/pythonic', 'ace/range'], function(require, exports, module) { - - -var oop = require("../lib/oop"); -var TextMode = require("./text").Mode; -var Tokenizer = require("../tokenizer").Tokenizer; -var MushCodeRules = require("./mushcode_high_rules").MushCodeRules; -var PythonFoldMode = require("./folding/pythonic").FoldMode; -var Range = require("../range").Range; - -var Mode = function() { - this.HighlightRules = MushCodeRules; - this.foldingRules = new PythonFoldMode("\\:"); -}; -oop.inherits(Mode, TextMode); - -(function() { - - this.lineCommentStart = "#"; - - this.getNextLineIndent = function(state, line, tab) { - var indent = this.$getIndent(line); - - var tokenizedLine = this.getTokenizer().getLineTokens(line, state); - var tokens = tokenizedLine.tokens; - - if (tokens.length && tokens[tokens.length-1].type == "comment") { - return indent; - } - - if (state == "start") { - var match = line.match(/^.*[\{\(\[\:]\s*$/); - if (match) { - indent += tab; - } - } - - return indent; - }; - - var outdents = { - "pass": 1, - "return": 1, - "raise": 1, - "break": 1, - "continue": 1 - }; - - this.checkOutdent = function(state, line, input) { - if (input !== "\r\n" && input !== "\r" && input !== "\n") - return false; - - var tokens = this.getTokenizer().getLineTokens(line.trim(), state).tokens; - - if (!tokens) - return false; - do { - var last = tokens.pop(); - } while (last && (last.type == "comment" || (last.type == "text" && last.value.match(/^\s+$/)))); - - if (!last) - return false; - - return (last.type == "keyword" && outdents[last.value]); - }; - - this.autoOutdent = function(state, doc, row) { - - row += 1; - var indent = this.$getIndent(doc.getLine(row)); - var tab = doc.getTabString(); - if (indent.slice(-tab.length) == tab) - doc.remove(new Range(row, indent.length-tab.length, row, indent.length)); - }; - - this.$id = "ace/mode/mushcode"; -}).call(Mode.prototype); - -exports.Mode = Mode; -}); - -ace.define('ace/mode/mushcode_high_rules', ['require', 'exports', 'module' , 'ace/lib/oop', 'ace/mode/text_highlight_rules'], function(require, exports, module) { - - -var oop = require("../lib/oop"); -var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; - -var MushCodeRules = function() { - - - var keywords = ( - "@if|"+ - "@ifelse|"+ - "@switch|"+ - "@halt|"+ - "@dolist|"+ - "@create|"+ - "@scent|"+ - "@sound|"+ - "@touch|"+ - "@ataste|"+ - "@osound|"+ - "@ahear|"+ - "@aahear|"+ - "@amhear|"+ - "@otouch|"+ - "@otaste|"+ - "@drop|"+ - "@odrop|"+ - "@adrop|"+ - "@dropfail|"+ - "@odropfail|"+ - "@smell|"+ - "@oemit|"+ - "@emit|"+ - "@pemit|"+ - "@parent|"+ - "@clone|"+ - "@taste|"+ - "whisper|"+ - "page|"+ - "say|"+ - "pose|"+ - "semipose|"+ - "teach|"+ - "touch|"+ - "taste|"+ - "smell|"+ - "listen|"+ - "look|"+ - "move|"+ - "go|"+ - "home|"+ - "follow|"+ - "unfollow|"+ - "desert|"+ - "dismiss|"+ - "@tel" - ); - - var builtinConstants = ( - "=#0" - ); - - var builtinFunctions = ( - "default|"+ - "edefault|"+ - "eval|"+ - "get_eval|"+ - "get|"+ - "grep|"+ - "grepi|"+ - "hasattr|"+ - "hasattrp|"+ - "hasattrval|"+ - "hasattrpval|"+ - "lattr|"+ - "nattr|"+ - "poss|"+ - "udefault|"+ - "ufun|"+ - "u|"+ - "v|"+ - "uldefault|"+ - "xget|"+ - "zfun|"+ - "band|"+ - "bnand|"+ - "bnot|"+ - "bor|"+ - "bxor|"+ - "shl|"+ - "shr|"+ - "and|"+ - "cand|"+ - "cor|"+ - "eq|"+ - "gt|"+ - "gte|"+ - "lt|"+ - "lte|"+ - "nand|"+ - "neq|"+ - "nor|"+ - "not|"+ - "or|"+ - "t|"+ - "xor|"+ - "con|"+ - "entrances|"+ - "exit|"+ - "followers|"+ - "home|"+ - "lcon|"+ - "lexits|"+ - "loc|"+ - "locate|"+ - "lparent|"+ - "lsearch|"+ - "next|"+ - "num|"+ - "owner|"+ - "parent|"+ - "pmatch|"+ - "rloc|"+ - "rnum|"+ - "room|"+ - "where|"+ - "zone|"+ - "worn|"+ - "held|"+ - "carried|"+ - "acos|"+ - "asin|"+ - "atan|"+ - "ceil|"+ - "cos|"+ - "e|"+ - "exp|"+ - "fdiv|"+ - "fmod|"+ - "floor|"+ - "log|"+ - "ln|"+ - "pi|"+ - "power|"+ - "round|"+ - "sin|"+ - "sqrt|"+ - "tan|"+ - "aposs|"+ - "andflags|"+ - "conn|"+ - "commandssent|"+ - "controls|"+ - "doing|"+ - "elock|"+ - "findable|"+ - "flags|"+ - "fullname|"+ - "hasflag|"+ - "haspower|"+ - "hastype|"+ - "hidden|"+ - "idle|"+ - "isbaker|"+ - "lock|"+ - "lstats|"+ - "money|"+ - "who|"+ - "name|"+ - "nearby|"+ - "obj|"+ - "objflags|"+ - "photo|"+ - "poll|"+ - "powers|"+ - "pendingtext|"+ - "receivedtext|"+ - "restarts|"+ - "restarttime|"+ - "subj|"+ - "shortestpath|"+ - "tmoney|"+ - "type|"+ - "visible|"+ - "cat|"+ - "element|"+ - "elements|"+ - "extract|"+ - "filter|"+ - "filterbool|"+ - "first|"+ - "foreach|"+ - "fold|"+ - "grab|"+ - "graball|"+ - "index|"+ - "insert|"+ - "itemize|"+ - "items|"+ - "iter|"+ - "last|"+ - "ldelete|"+ - "map|"+ - "match|"+ - "matchall|"+ - "member|"+ - "mix|"+ - "munge|"+ - "pick|"+ - "remove|"+ - "replace|"+ - "rest|"+ - "revwords|"+ - "setdiff|"+ - "setinter|"+ - "setunion|"+ - "shuffle|"+ - "sort|"+ - "sortby|"+ - "splice|"+ - "step|"+ - "wordpos|"+ - "words|"+ - "add|"+ - "lmath|"+ - "max|"+ - "mean|"+ - "median|"+ - "min|"+ - "mul|"+ - "percent|"+ - "sign|"+ - "stddev|"+ - "sub|"+ - "val|"+ - "bound|"+ - "abs|"+ - "inc|"+ - "dec|"+ - "dist2d|"+ - "dist3d|"+ - "div|"+ - "floordiv|"+ - "mod|"+ - "modulo|"+ - "remainder|"+ - "vadd|"+ - "vdim|"+ - "vdot|"+ - "vmag|"+ - "vmax|"+ - "vmin|"+ - "vmul|"+ - "vsub|"+ - "vunit|"+ - "regedit|"+ - "regeditall|"+ - "regeditalli|"+ - "regediti|"+ - "regmatch|"+ - "regmatchi|"+ - "regrab|"+ - "regraball|"+ - "regraballi|"+ - "regrabi|"+ - "regrep|"+ - "regrepi|"+ - "after|"+ - "alphamin|"+ - "alphamax|"+ - "art|"+ - "before|"+ - "brackets|"+ - "capstr|"+ - "case|"+ - "caseall|"+ - "center|"+ - "containsfansi|"+ - "comp|"+ - "decompose|"+ - "decrypt|"+ - "delete|"+ - "edit|"+ - "encrypt|"+ - "escape|"+ - "if|"+ - "ifelse|"+ - "lcstr|"+ - "left|"+ - "lit|"+ - "ljust|"+ - "merge|"+ - "mid|"+ - "ostrlen|"+ - "pos|"+ - "repeat|"+ - "reverse|"+ - "right|"+ - "rjust|"+ - "scramble|"+ - "secure|"+ - "space|"+ - "spellnum|"+ - "squish|"+ - "strcat|"+ - "strmatch|"+ - "strinsert|"+ - "stripansi|"+ - "stripfansi|"+ - "strlen|"+ - "switch|"+ - "switchall|"+ - "table|"+ - "tr|"+ - "trim|"+ - "ucstr|"+ - "unsafe|"+ - "wrap|"+ - "ctitle|"+ - "cwho|"+ - "channels|"+ - "clock|"+ - "cflags|"+ - "ilev|"+ - "itext|"+ - "inum|"+ - "convsecs|"+ - "convutcsecs|"+ - "convtime|"+ - "ctime|"+ - "etimefmt|"+ - "isdaylight|"+ - "mtime|"+ - "secs|"+ - "msecs|"+ - "starttime|"+ - "time|"+ - "timefmt|"+ - "timestring|"+ - "utctime|"+ - "atrlock|"+ - "clone|"+ - "create|"+ - "cook|"+ - "dig|"+ - "emit|"+ - "lemit|"+ - "link|"+ - "oemit|"+ - "open|"+ - "pemit|"+ - "remit|"+ - "set|"+ - "tel|"+ - "wipe|"+ - "zemit|"+ - "fbcreate|"+ - "fbdestroy|"+ - "fbwrite|"+ - "fbclear|"+ - "fbcopy|"+ - "fbcopyto|"+ - "fbclip|"+ - "fbdump|"+ - "fbflush|"+ - "fbhset|"+ - "fblist|"+ - "fbstats|"+ - "qentries|"+ - "qentry|"+ - "play|"+ - "ansi|"+ - "break|"+ - "c|"+ - "asc|"+ - "die|"+ - "isdbref|"+ - "isint|"+ - "isnum|"+ - "isletters|"+ - "linecoords|"+ - "localize|"+ - "lnum|"+ - "nameshort|"+ - "null|"+ - "objeval|"+ - "r|"+ - "rand|"+ - "s|"+ - "setq|"+ - "setr|"+ - "soundex|"+ - "soundslike|"+ - "valid|"+ - "vchart|"+ - "vchart2|"+ - "vlabel|"+ - "@@|"+ - "bakerdays|"+ - "bodybuild|"+ - "box|"+ - "capall|"+ - "catalog|"+ - "children|"+ - "ctrailer|"+ - "darttime|"+ - "debt|"+ - "detailbar|"+ - "exploredroom|"+ - "fansitoansi|"+ - "fansitoxansi|"+ - "fullbar|"+ - "halfbar|"+ - "isdarted|"+ - "isnewbie|"+ - "isword|"+ - "lambda|"+ - "lobjects|"+ - "lplayers|"+ - "lthings|"+ - "lvexits|"+ - "lvobjects|"+ - "lvplayers|"+ - "lvthings|"+ - "newswrap|"+ - "numsuffix|"+ - "playerson|"+ - "playersthisweek|"+ - "randomad|"+ - "randword|"+ - "realrandword|"+ - "replacechr|"+ - "second|"+ - "splitamount|"+ - "strlenall|"+ - "text|"+ - "third|"+ - "tofansi|"+ - "totalac|"+ - "unique|"+ - "getaddressroom|"+ - "listpropertycomm|"+ - "listpropertyres|"+ - "lotowner|"+ - "lotrating|"+ - "lotratingcount|"+ - "lotvalue|"+ - "boughtproduct|"+ - "companyabb|"+ - "companyicon|"+ - "companylist|"+ - "companyname|"+ - "companyowners|"+ - "companyvalue|"+ - "employees|"+ - "invested|"+ - "productlist|"+ - "productname|"+ - "productowners|"+ - "productrating|"+ - "productratingcount|"+ - "productsoldat|"+ - "producttype|"+ - "ratedproduct|"+ - "soldproduct|"+ - "topproducts|"+ - "totalspentonproduct|"+ - "totalstock|"+ - "transfermoney|"+ - "uniquebuyercount|"+ - "uniqueproductsbought|"+ - "validcompany|"+ - "deletepicture|"+ - "fbsave|"+ - "getpicturesecurity|"+ - "haspicture|"+ - "listpictures|"+ - "picturesize|"+ - "replacecolor|"+ - "rgbtocolor|"+ - "savepicture|"+ - "setpicturesecurity|"+ - "showpicture|"+ - "piechart|"+ - "piechartlabel|"+ - "createmaze|"+ - "drawmaze|"+ - "drawwireframe" - ); - var keywordMapper = this.createKeywordMapper({ - "invalid.deprecated": "debugger", - "support.function": builtinFunctions, - "constant.language": builtinConstants, - "keyword": keywords - }, "identifier"); - - var strPre = "(?:r|u|ur|R|U|UR|Ur|uR)?"; - - var decimalInteger = "(?:(?:[1-9]\\d*)|(?:0))"; - var octInteger = "(?:0[oO]?[0-7]+)"; - var hexInteger = "(?:0[xX][\\dA-Fa-f]+)"; - var binInteger = "(?:0[bB][01]+)"; - var integer = "(?:" + decimalInteger + "|" + octInteger + "|" + hexInteger + "|" + binInteger + ")"; - - var exponent = "(?:[eE][+-]?\\d+)"; - var fraction = "(?:\\.\\d+)"; - var intPart = "(?:\\d+)"; - var pointFloat = "(?:(?:" + intPart + "?" + fraction + ")|(?:" + intPart + "\\.))"; - var exponentFloat = "(?:(?:" + pointFloat + "|" + intPart + ")" + exponent + ")"; - var floatNumber = "(?:" + exponentFloat + "|" + pointFloat + ")"; - - this.$rules = { - "start" : [ - { - token : "variable", // mush substitution register - regex : "%[0-9]{1}" - }, - { - token : "variable", // mush substitution register - regex : "%q[0-9A-Za-z]{1}" - }, - { - token : "variable", // mush special character register - regex : "%[a-zA-Z]{1}" - }, - { - token: "variable.language", - regex: "%[a-z0-9-_]+" - }, - { - token : "constant.numeric", // imaginary - regex : "(?:" + floatNumber + "|\\d+)[jJ]\\b" - }, { - token : "constant.numeric", // float - regex : floatNumber - }, { - token : "constant.numeric", // long integer - regex : integer + "[lL]\\b" - }, { - token : "constant.numeric", // integer - regex : integer + "\\b" - }, { - token : keywordMapper, - regex : "[a-zA-Z_$][a-zA-Z0-9_$]*\\b" - }, { - token : "keyword.operator", - regex : "\\+|\\-|\\*|\\*\\*|\\/|\\/\\/|#|%|<<|>>|\\||\\^|~|<|>|<=|=>|==|!=|<>|=" - }, { - token : "paren.lparen", - regex : "[\\[\\(\\{]" - }, { - token : "paren.rparen", - regex : "[\\]\\)\\}]" - }, { - token : "text", - regex : "\\s+" - } ] - }; -}; - -oop.inherits(MushCodeRules, TextHighlightRules); - -exports.MushCodeRules = MushCodeRules; -}); - -ace.define('ace/mode/folding/pythonic', ['require', 'exports', 'module' , 'ace/lib/oop', 'ace/mode/folding/fold_mode'], function(require, exports, module) { - - -var oop = require("../../lib/oop"); -var BaseFoldMode = require("./fold_mode").FoldMode; - -var FoldMode = exports.FoldMode = function(markers) { - this.foldingStartMarker = new RegExp("([\\[{])(?:\\s*)$|(" + markers + ")(?:\\s*)(?:#.*)?$"); -}; -oop.inherits(FoldMode, BaseFoldMode); - -(function() { - - this.getFoldWidgetRange = function(session, foldStyle, row) { - var line = session.getLine(row); - var match = line.match(this.foldingStartMarker); - if (match) { - if (match[1]) - return this.openingBracketBlock(session, match[1], row, match.index); - if (match[2]) - return this.indentationBlock(session, row, match.index + match[2].length); - return this.indentationBlock(session, row); - } - } - -}).call(FoldMode.prototype); - -}); diff --git a/IDE/jsrealb-ide/ace-src-noconflict/mode-mushcode_high_rules.js b/IDE/jsrealb-ide/ace-src-noconflict/mode-mushcode_high_rules.js deleted file mode 100644 index 4639c98f..00000000 --- a/IDE/jsrealb-ide/ace-src-noconflict/mode-mushcode_high_rules.js +++ /dev/null @@ -1,569 +0,0 @@ -/* - * MUSHCodeMode - */ - -ace.define('ace/mode/mushcode_high_rules', ['require', 'exports', 'module' , 'ace/lib/oop', 'ace/mode/text_highlight_rules'], function(require, exports, module) { - - -var oop = require("../lib/oop"); -var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; - -var MushCodeRules = function() { - - - var keywords = ( - "@if|"+ - "@ifelse|"+ - "@switch|"+ - "@halt|"+ - "@dolist|"+ - "@create|"+ - "@scent|"+ - "@sound|"+ - "@touch|"+ - "@ataste|"+ - "@osound|"+ - "@ahear|"+ - "@aahear|"+ - "@amhear|"+ - "@otouch|"+ - "@otaste|"+ - "@drop|"+ - "@odrop|"+ - "@adrop|"+ - "@dropfail|"+ - "@odropfail|"+ - "@smell|"+ - "@oemit|"+ - "@emit|"+ - "@pemit|"+ - "@parent|"+ - "@clone|"+ - "@taste|"+ - "whisper|"+ - "page|"+ - "say|"+ - "pose|"+ - "semipose|"+ - "teach|"+ - "touch|"+ - "taste|"+ - "smell|"+ - "listen|"+ - "look|"+ - "move|"+ - "go|"+ - "home|"+ - "follow|"+ - "unfollow|"+ - "desert|"+ - "dismiss|"+ - "@tel" - ); - - var builtinConstants = ( - "=#0" - ); - - var builtinFunctions = ( - "default|"+ - "edefault|"+ - "eval|"+ - "get_eval|"+ - "get|"+ - "grep|"+ - "grepi|"+ - "hasattr|"+ - "hasattrp|"+ - "hasattrval|"+ - "hasattrpval|"+ - "lattr|"+ - "nattr|"+ - "poss|"+ - "udefault|"+ - "ufun|"+ - "u|"+ - "v|"+ - "uldefault|"+ - "xget|"+ - "zfun|"+ - "band|"+ - "bnand|"+ - "bnot|"+ - "bor|"+ - "bxor|"+ - "shl|"+ - "shr|"+ - "and|"+ - "cand|"+ - "cor|"+ - "eq|"+ - "gt|"+ - "gte|"+ - "lt|"+ - "lte|"+ - "nand|"+ - "neq|"+ - "nor|"+ - "not|"+ - "or|"+ - "t|"+ - "xor|"+ - "con|"+ - "entrances|"+ - "exit|"+ - "followers|"+ - "home|"+ - "lcon|"+ - "lexits|"+ - "loc|"+ - "locate|"+ - "lparent|"+ - "lsearch|"+ - "next|"+ - "num|"+ - "owner|"+ - "parent|"+ - "pmatch|"+ - "rloc|"+ - "rnum|"+ - "room|"+ - "where|"+ - "zone|"+ - "worn|"+ - "held|"+ - "carried|"+ - "acos|"+ - "asin|"+ - "atan|"+ - "ceil|"+ - "cos|"+ - "e|"+ - "exp|"+ - "fdiv|"+ - "fmod|"+ - "floor|"+ - "log|"+ - "ln|"+ - "pi|"+ - "power|"+ - "round|"+ - "sin|"+ - "sqrt|"+ - "tan|"+ - "aposs|"+ - "andflags|"+ - "conn|"+ - "commandssent|"+ - "controls|"+ - "doing|"+ - "elock|"+ - "findable|"+ - "flags|"+ - "fullname|"+ - "hasflag|"+ - "haspower|"+ - "hastype|"+ - "hidden|"+ - "idle|"+ - "isbaker|"+ - "lock|"+ - "lstats|"+ - "money|"+ - "who|"+ - "name|"+ - "nearby|"+ - "obj|"+ - "objflags|"+ - "photo|"+ - "poll|"+ - "powers|"+ - "pendingtext|"+ - "receivedtext|"+ - "restarts|"+ - "restarttime|"+ - "subj|"+ - "shortestpath|"+ - "tmoney|"+ - "type|"+ - "visible|"+ - "cat|"+ - "element|"+ - "elements|"+ - "extract|"+ - "filter|"+ - "filterbool|"+ - "first|"+ - "foreach|"+ - "fold|"+ - "grab|"+ - "graball|"+ - "index|"+ - "insert|"+ - "itemize|"+ - "items|"+ - "iter|"+ - "last|"+ - "ldelete|"+ - "map|"+ - "match|"+ - "matchall|"+ - "member|"+ - "mix|"+ - "munge|"+ - "pick|"+ - "remove|"+ - "replace|"+ - "rest|"+ - "revwords|"+ - "setdiff|"+ - "setinter|"+ - "setunion|"+ - "shuffle|"+ - "sort|"+ - "sortby|"+ - "splice|"+ - "step|"+ - "wordpos|"+ - "words|"+ - "add|"+ - "lmath|"+ - "max|"+ - "mean|"+ - "median|"+ - "min|"+ - "mul|"+ - "percent|"+ - "sign|"+ - "stddev|"+ - "sub|"+ - "val|"+ - "bound|"+ - "abs|"+ - "inc|"+ - "dec|"+ - "dist2d|"+ - "dist3d|"+ - "div|"+ - "floordiv|"+ - "mod|"+ - "modulo|"+ - "remainder|"+ - "vadd|"+ - "vdim|"+ - "vdot|"+ - "vmag|"+ - "vmax|"+ - "vmin|"+ - "vmul|"+ - "vsub|"+ - "vunit|"+ - "regedit|"+ - "regeditall|"+ - "regeditalli|"+ - "regediti|"+ - "regmatch|"+ - "regmatchi|"+ - "regrab|"+ - "regraball|"+ - "regraballi|"+ - "regrabi|"+ - "regrep|"+ - "regrepi|"+ - "after|"+ - "alphamin|"+ - "alphamax|"+ - "art|"+ - "before|"+ - "brackets|"+ - "capstr|"+ - "case|"+ - "caseall|"+ - "center|"+ - "containsfansi|"+ - "comp|"+ - "decompose|"+ - "decrypt|"+ - "delete|"+ - "edit|"+ - "encrypt|"+ - "escape|"+ - "if|"+ - "ifelse|"+ - "lcstr|"+ - "left|"+ - "lit|"+ - "ljust|"+ - "merge|"+ - "mid|"+ - "ostrlen|"+ - "pos|"+ - "repeat|"+ - "reverse|"+ - "right|"+ - "rjust|"+ - "scramble|"+ - "secure|"+ - "space|"+ - "spellnum|"+ - "squish|"+ - "strcat|"+ - "strmatch|"+ - "strinsert|"+ - "stripansi|"+ - "stripfansi|"+ - "strlen|"+ - "switch|"+ - "switchall|"+ - "table|"+ - "tr|"+ - "trim|"+ - "ucstr|"+ - "unsafe|"+ - "wrap|"+ - "ctitle|"+ - "cwho|"+ - "channels|"+ - "clock|"+ - "cflags|"+ - "ilev|"+ - "itext|"+ - "inum|"+ - "convsecs|"+ - "convutcsecs|"+ - "convtime|"+ - "ctime|"+ - "etimefmt|"+ - "isdaylight|"+ - "mtime|"+ - "secs|"+ - "msecs|"+ - "starttime|"+ - "time|"+ - "timefmt|"+ - "timestring|"+ - "utctime|"+ - "atrlock|"+ - "clone|"+ - "create|"+ - "cook|"+ - "dig|"+ - "emit|"+ - "lemit|"+ - "link|"+ - "oemit|"+ - "open|"+ - "pemit|"+ - "remit|"+ - "set|"+ - "tel|"+ - "wipe|"+ - "zemit|"+ - "fbcreate|"+ - "fbdestroy|"+ - "fbwrite|"+ - "fbclear|"+ - "fbcopy|"+ - "fbcopyto|"+ - "fbclip|"+ - "fbdump|"+ - "fbflush|"+ - "fbhset|"+ - "fblist|"+ - "fbstats|"+ - "qentries|"+ - "qentry|"+ - "play|"+ - "ansi|"+ - "break|"+ - "c|"+ - "asc|"+ - "die|"+ - "isdbref|"+ - "isint|"+ - "isnum|"+ - "isletters|"+ - "linecoords|"+ - "localize|"+ - "lnum|"+ - "nameshort|"+ - "null|"+ - "objeval|"+ - "r|"+ - "rand|"+ - "s|"+ - "setq|"+ - "setr|"+ - "soundex|"+ - "soundslike|"+ - "valid|"+ - "vchart|"+ - "vchart2|"+ - "vlabel|"+ - "@@|"+ - "bakerdays|"+ - "bodybuild|"+ - "box|"+ - "capall|"+ - "catalog|"+ - "children|"+ - "ctrailer|"+ - "darttime|"+ - "debt|"+ - "detailbar|"+ - "exploredroom|"+ - "fansitoansi|"+ - "fansitoxansi|"+ - "fullbar|"+ - "halfbar|"+ - "isdarted|"+ - "isnewbie|"+ - "isword|"+ - "lambda|"+ - "lobjects|"+ - "lplayers|"+ - "lthings|"+ - "lvexits|"+ - "lvobjects|"+ - "lvplayers|"+ - "lvthings|"+ - "newswrap|"+ - "numsuffix|"+ - "playerson|"+ - "playersthisweek|"+ - "randomad|"+ - "randword|"+ - "realrandword|"+ - "replacechr|"+ - "second|"+ - "splitamount|"+ - "strlenall|"+ - "text|"+ - "third|"+ - "tofansi|"+ - "totalac|"+ - "unique|"+ - "getaddressroom|"+ - "listpropertycomm|"+ - "listpropertyres|"+ - "lotowner|"+ - "lotrating|"+ - "lotratingcount|"+ - "lotvalue|"+ - "boughtproduct|"+ - "companyabb|"+ - "companyicon|"+ - "companylist|"+ - "companyname|"+ - "companyowners|"+ - "companyvalue|"+ - "employees|"+ - "invested|"+ - "productlist|"+ - "productname|"+ - "productowners|"+ - "productrating|"+ - "productratingcount|"+ - "productsoldat|"+ - "producttype|"+ - "ratedproduct|"+ - "soldproduct|"+ - "topproducts|"+ - "totalspentonproduct|"+ - "totalstock|"+ - "transfermoney|"+ - "uniquebuyercount|"+ - "uniqueproductsbought|"+ - "validcompany|"+ - "deletepicture|"+ - "fbsave|"+ - "getpicturesecurity|"+ - "haspicture|"+ - "listpictures|"+ - "picturesize|"+ - "replacecolor|"+ - "rgbtocolor|"+ - "savepicture|"+ - "setpicturesecurity|"+ - "showpicture|"+ - "piechart|"+ - "piechartlabel|"+ - "createmaze|"+ - "drawmaze|"+ - "drawwireframe" - ); - var keywordMapper = this.createKeywordMapper({ - "invalid.deprecated": "debugger", - "support.function": builtinFunctions, - "constant.language": builtinConstants, - "keyword": keywords - }, "identifier"); - - var strPre = "(?:r|u|ur|R|U|UR|Ur|uR)?"; - - var decimalInteger = "(?:(?:[1-9]\\d*)|(?:0))"; - var octInteger = "(?:0[oO]?[0-7]+)"; - var hexInteger = "(?:0[xX][\\dA-Fa-f]+)"; - var binInteger = "(?:0[bB][01]+)"; - var integer = "(?:" + decimalInteger + "|" + octInteger + "|" + hexInteger + "|" + binInteger + ")"; - - var exponent = "(?:[eE][+-]?\\d+)"; - var fraction = "(?:\\.\\d+)"; - var intPart = "(?:\\d+)"; - var pointFloat = "(?:(?:" + intPart + "?" + fraction + ")|(?:" + intPart + "\\.))"; - var exponentFloat = "(?:(?:" + pointFloat + "|" + intPart + ")" + exponent + ")"; - var floatNumber = "(?:" + exponentFloat + "|" + pointFloat + ")"; - - this.$rules = { - "start" : [ - { - token : "variable", // mush substitution register - regex : "%[0-9]{1}" - }, - { - token : "variable", // mush substitution register - regex : "%q[0-9A-Za-z]{1}" - }, - { - token : "variable", // mush special character register - regex : "%[a-zA-Z]{1}" - }, - { - token: "variable.language", - regex: "%[a-z0-9-_]+" - }, - { - token : "constant.numeric", // imaginary - regex : "(?:" + floatNumber + "|\\d+)[jJ]\\b" - }, { - token : "constant.numeric", // float - regex : floatNumber - }, { - token : "constant.numeric", // long integer - regex : integer + "[lL]\\b" - }, { - token : "constant.numeric", // integer - regex : integer + "\\b" - }, { - token : keywordMapper, - regex : "[a-zA-Z_$][a-zA-Z0-9_$]*\\b" - }, { - token : "keyword.operator", - regex : "\\+|\\-|\\*|\\*\\*|\\/|\\/\\/|#|%|<<|>>|\\||\\^|~|<|>|<=|=>|==|!=|<>|=" - }, { - token : "paren.lparen", - regex : "[\\[\\(\\{]" - }, { - token : "paren.rparen", - regex : "[\\]\\)\\}]" - }, { - token : "text", - regex : "\\s+" - } ] - }; -}; - -oop.inherits(MushCodeRules, TextHighlightRules); - -exports.MushCodeRules = MushCodeRules; -}); diff --git a/IDE/jsrealb-ide/ace-src-noconflict/mode-mysql.js b/IDE/jsrealb-ide/ace-src-noconflict/mode-mysql.js deleted file mode 100644 index 03ccfedd..00000000 --- a/IDE/jsrealb-ide/ace-src-noconflict/mode-mysql.js +++ /dev/null @@ -1,185 +0,0 @@ -/* ***** BEGIN LICENSE BLOCK ***** - * Distributed under the BSD license: - * - * Copyright (c) 2010, Ajax.org B.V. - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are met: - * * Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * * Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * * Neither the name of Ajax.org B.V. nor the - * names of its contributors may be used to endorse or promote products - * derived from this software without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND - * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED - * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE - * DISCLAIMED. IN NO EVENT SHALL AJAX.ORG B.V. BE LIABLE FOR ANY - * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES - * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; - * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND - * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - * - * ***** END LICENSE BLOCK ***** */ - -ace.define('ace/mode/mysql', ['require', 'exports', 'module' , 'ace/lib/oop', 'ace/mode/text', 'ace/tokenizer', 'ace/mode/mysql_highlight_rules', 'ace/range'], function(require, exports, module) { - -var oop = require("../lib/oop"); -var TextMode = require("../mode/text").Mode; -var Tokenizer = require("../tokenizer").Tokenizer; -var MysqlHighlightRules = require("./mysql_highlight_rules").MysqlHighlightRules; -var Range = require("../range").Range; - -var Mode = function() { - this.HighlightRules = MysqlHighlightRules; -}; -oop.inherits(Mode, TextMode); - -(function() { - this.lineCommentStart = ["--", "#"]; // todo space - this.blockComment = {start: "/*", end: "*/"}; - - this.$id = "ace/mode/mysql"; -}).call(Mode.prototype); - -exports.Mode = Mode; -}); - -ace.define('ace/mode/mysql_highlight_rules', ['require', 'exports', 'module' , 'ace/lib/oop', 'ace/lib/lang', 'ace/mode/doc_comment_highlight_rules', 'ace/mode/text_highlight_rules'], function(require, exports, module) { - -var oop = require("../lib/oop"); -var lang = require("../lib/lang"); -var DocCommentHighlightRules = require("./doc_comment_highlight_rules").DocCommentHighlightRules; -var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; - -var MysqlHighlightRules = function() { - - var mySqlKeywords = /*sql*/ "alter|and|as|asc|between|count|create|delete|desc|distinct|drop|from|having|in|insert|into|is|join|like|not|on|or|order|select|set|table|union|update|values|where" + "|accessible|action|add|after|algorithm|all|analyze|asensitive|at|authors|auto_increment|autocommit|avg|avg_row_length|before|binary|binlog|both|btree|cache|call|cascade|cascaded|case|catalog_name|chain|change|changed|character|check|checkpoint|checksum|class_origin|client_statistics|close|coalesce|code|collate|collation|collations|column|columns|comment|commit|committed|completion|concurrent|condition|connection|consistent|constraint|contains|continue|contributors|convert|cross|current_date|current_time|current_timestamp|current_user|cursor|data|database|databases|day_hour|day_microsecond|day_minute|day_second|deallocate|dec|declare|default|delay_key_write|delayed|delimiter|des_key_file|describe|deterministic|dev_pop|dev_samp|deviance|directory|disable|discard|distinctrow|div|dual|dumpfile|each|elseif|enable|enclosed|end|ends|engine|engines|enum|errors|escape|escaped|even|event|events|every|execute|exists|exit|explain|extended|fast|fetch|field|fields|first|flush|for|force|foreign|found_rows|full|fulltext|function|general|global|grant|grants|group|groupby_concat|handler|hash|help|high_priority|hosts|hour_microsecond|hour_minute|hour_second|if|ignore|ignore_server_ids|import|index|index_statistics|infile|inner|innodb|inout|insensitive|insert_method|install|interval|invoker|isolation|iterate|key|keys|kill|language|last|leading|leave|left|level|limit|linear|lines|list|load|local|localtime|localtimestamp|lock|logs|low_priority|master|master_heartbeat_period|master_ssl_verify_server_cert|masters|match|max|max_rows|maxvalue|message_text|middleint|migrate|min|min_rows|minute_microsecond|minute_second|mod|mode|modifies|modify|mutex|mysql_errno|natural|next|no|no_write_to_binlog|offline|offset|one|online|open|optimize|option|optionally|out|outer|outfile|pack_keys|parser|partition|partitions|password|phase|plugin|plugins|prepare|preserve|prev|primary|privileges|procedure|processlist|profile|profiles|purge|query|quick|range|read|read_write|reads|real|rebuild|recover|references|regexp|relaylog|release|remove|rename|reorganize|repair|repeatable|replace|require|resignal|restrict|resume|return|returns|revoke|right|rlike|rollback|rollup|row|row_format|rtree|savepoint|schedule|schema|schema_name|schemas|second_microsecond|security|sensitive|separator|serializable|server|session|share|show|signal|slave|slow|smallint|snapshot|soname|spatial|specific|sql|sql_big_result|sql_buffer_result|sql_cache|sql_calc_found_rows|sql_no_cache|sql_small_result|sqlexception|sqlstate|sqlwarning|ssl|start|starting|starts|status|std|stddev|stddev_pop|stddev_samp|storage|straight_join|subclass_origin|sum|suspend|table_name|table_statistics|tables|tablespace|temporary|terminated|to|trailing|transaction|trigger|triggers|truncate|uncommitted|undo|uninstall|unique|unlock|upgrade|usage|use|use_frm|user|user_resources|user_statistics|using|utc_date|utc_time|utc_timestamp|value|variables|varying|view|views|warnings|when|while|with|work|write|xa|xor|year_month|zerofill|begin|do|then|else|loop|repeat"; - var builtins = "by|bool|boolean|bit|blob|decimal|double|enum|float|long|longblob|longtext|medium|mediumblob|mediumint|mediumtext|time|timestamp|tinyblob|tinyint|tinytext|text|bigint|int|int1|int2|int3|int4|int8|integer|float|float4|float8|double|char|varbinary|varchar|varcharacter|precision|date|datetime|year|unsigned|signed|numeric" - var variable = "charset|clear|connect|edit|ego|exit|go|help|nopager|notee|nowarning|pager|print|prompt|quit|rehash|source|status|system|tee" - - var keywordMapper = this.createKeywordMapper({ - "support.function": builtins, - "keyword": mySqlKeywords, - "constant": "false|true|null|unknown|date|time|timestamp|ODBCdotTable|zerolessFloat", - "variable.language": variable - }, "identifier", true); - - - function string(rule) { - var start = rule.start; - var escapeSeq = rule.escape; - return { - token: "string.start", - regex: start, - next: [ - {token: "constant.language.escape", regex: escapeSeq}, - {token: "string.end", next: "start", regex: start}, - {defaultToken: "string"} - ] - }; - } - - this.$rules = { - "start" : [ { - token : "comment", regex : "(?:-- |#).*$" - }, - string({start: '"', escape: /\\[0'"bnrtZ\\%_]?/}), - string({start: "'", escape: /\\[0'"bnrtZ\\%_]?/}), - DocCommentHighlightRules.getStartRule("doc-start"), - { - token : "comment", // multi line comment - regex : /\/\*/, - next : "comment" - }, { - token : "constant.numeric", // hex - regex : /0[xX][0-9a-fA-F]+|[xX]'[0-9a-fA-F]+'|0[bB][01]+|[bB]'[01]+'/ - }, { - token : "constant.numeric", // float - regex : "[+-]?\\d+(?:(?:\\.\\d*)?(?:[eE][+-]?\\d+)?)?\\b" - }, { - token : keywordMapper, - regex : "[a-zA-Z_$][a-zA-Z0-9_$]*\\b" - }, { - token : "constant.class", - regex : "@@?[a-zA-Z_$][a-zA-Z0-9_$]*\\b" - }, { - token : "constant.buildin", - regex : "`[^`]*`" - }, { - token : "keyword.operator", - regex : "\\+|\\-|\\/|\\/\\/|%|<@>|@>|<@|&|\\^|~|<|>|<=|=>|==|!=|<>|=" - }, { - token : "paren.lparen", - regex : "[\\(]" - }, { - token : "paren.rparen", - regex : "[\\)]" - }, { - token : "text", - regex : "\\s+" - } ], - "comment" : [ - {token : "comment", regex : "\\*\\/", next : "start"}, - {defaultToken : "comment"} - ] - }; - - this.embedRules(DocCommentHighlightRules, "doc-", [ DocCommentHighlightRules.getEndRule("start") ]); - this.normalizeRules(); -}; - -oop.inherits(MysqlHighlightRules, TextHighlightRules); - -exports.MysqlHighlightRules = MysqlHighlightRules; -}); - -ace.define('ace/mode/doc_comment_highlight_rules', ['require', 'exports', 'module' , 'ace/lib/oop', 'ace/mode/text_highlight_rules'], function(require, exports, module) { - - -var oop = require("../lib/oop"); -var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; - -var DocCommentHighlightRules = function() { - - this.$rules = { - "start" : [ { - token : "comment.doc.tag", - regex : "@[\\w\\d_]+" // TODO: fix email addresses - }, { - token : "comment.doc.tag", - regex : "\\bTODO\\b" - }, { - defaultToken : "comment.doc" - }] - }; -}; - -oop.inherits(DocCommentHighlightRules, TextHighlightRules); - -DocCommentHighlightRules.getStartRule = function(start) { - return { - token : "comment.doc", // doc comment - regex : "\\/\\*(?=\\*)", - next : start - }; -}; - -DocCommentHighlightRules.getEndRule = function (start) { - return { - token : "comment.doc", // closing comment - regex : "\\*\\/", - next : start - }; -}; - - -exports.DocCommentHighlightRules = DocCommentHighlightRules; - -}); diff --git a/IDE/jsrealb-ide/ace-src-noconflict/mode-nix.js b/IDE/jsrealb-ide/ace-src-noconflict/mode-nix.js deleted file mode 100644 index a71d875e..00000000 --- a/IDE/jsrealb-ide/ace-src-noconflict/mode-nix.js +++ /dev/null @@ -1,935 +0,0 @@ -/* ***** BEGIN LICENSE BLOCK ***** - * Distributed under the BSD license: - * - * Copyright (c) 2012, Ajax.org B.V. - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are met: - * * Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * * Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * * Neither the name of Ajax.org B.V. nor the - * names of its contributors may be used to endorse or promote products - * derived from this software without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND - * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED - * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE - * DISCLAIMED. IN NO EVENT SHALL AJAX.ORG B.V. BE LIABLE FOR ANY - * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES - * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; - * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND - * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - * - * - * Contributor(s): - * - * Zef Hemel - * - * ***** END LICENSE BLOCK ***** */ - -ace.define('ace/mode/nix', ['require', 'exports', 'module' , 'ace/lib/oop', 'ace/mode/c_cpp', 'ace/tokenizer', 'ace/mode/nix_highlight_rules', 'ace/mode/folding/cstyle'], function(require, exports, module) { - - -var oop = require("../lib/oop"); -var CMode = require("./c_cpp").Mode; -var Tokenizer = require("../tokenizer").Tokenizer; -var NixHighlightRules = require("./nix_highlight_rules").NixHighlightRules; -var CStyleFoldMode = require("./folding/cstyle").FoldMode; - -var Mode = function() { - CMode.call(this); - this.HighlightRules = NixHighlightRules; - this.foldingRules = new CStyleFoldMode(); -}; -oop.inherits(Mode, CMode); - -(function() { - this.lineCommentStart = "#"; - this.blockComment = {start: "/*", end: "*/"}; - this.$id = "ace/mode/nix"; -}).call(Mode.prototype); - -exports.Mode = Mode; -}); - -ace.define('ace/mode/c_cpp', ['require', 'exports', 'module' , 'ace/lib/oop', 'ace/mode/text', 'ace/tokenizer', 'ace/mode/c_cpp_highlight_rules', 'ace/mode/matching_brace_outdent', 'ace/range', 'ace/mode/behaviour/cstyle', 'ace/mode/folding/cstyle'], function(require, exports, module) { - - -var oop = require("../lib/oop"); -var TextMode = require("./text").Mode; -var Tokenizer = require("../tokenizer").Tokenizer; -var c_cppHighlightRules = require("./c_cpp_highlight_rules").c_cppHighlightRules; -var MatchingBraceOutdent = require("./matching_brace_outdent").MatchingBraceOutdent; -var Range = require("../range").Range; -var CstyleBehaviour = require("./behaviour/cstyle").CstyleBehaviour; -var CStyleFoldMode = require("./folding/cstyle").FoldMode; - -var Mode = function() { - this.HighlightRules = c_cppHighlightRules; - - this.$outdent = new MatchingBraceOutdent(); - this.$behaviour = new CstyleBehaviour(); - - this.foldingRules = new CStyleFoldMode(); -}; -oop.inherits(Mode, TextMode); - -(function() { - - this.lineCommentStart = "//"; - this.blockComment = {start: "/*", end: "*/"}; - - this.getNextLineIndent = function(state, line, tab) { - var indent = this.$getIndent(line); - - var tokenizedLine = this.getTokenizer().getLineTokens(line, state); - var tokens = tokenizedLine.tokens; - var endState = tokenizedLine.state; - - if (tokens.length && tokens[tokens.length-1].type == "comment") { - return indent; - } - - if (state == "start") { - var match = line.match(/^.*[\{\(\[]\s*$/); - if (match) { - indent += tab; - } - } else if (state == "doc-start") { - if (endState == "start") { - return ""; - } - var match = line.match(/^\s*(\/?)\*/); - if (match) { - if (match[1]) { - indent += " "; - } - indent += "* "; - } - } - - return indent; - }; - - this.checkOutdent = function(state, line, input) { - return this.$outdent.checkOutdent(line, input); - }; - - this.autoOutdent = function(state, doc, row) { - this.$outdent.autoOutdent(doc, row); - }; - - this.$id = "ace/mode/c_cpp"; -}).call(Mode.prototype); - -exports.Mode = Mode; -}); -ace.define('ace/mode/c_cpp_highlight_rules', ['require', 'exports', 'module' , 'ace/lib/oop', 'ace/mode/doc_comment_highlight_rules', 'ace/mode/text_highlight_rules'], function(require, exports, module) { - - -var oop = require("../lib/oop"); -var DocCommentHighlightRules = require("./doc_comment_highlight_rules").DocCommentHighlightRules; -var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; -var cFunctions = exports.cFunctions = "\\s*\\bhypot(?:f|l)?|s(?:scanf|ystem|nprintf|ca(?:nf|lb(?:n(?:f|l)?|ln(?:f|l)?))|i(?:n(?:h(?:f|l)?|f|l)?|gn(?:al|bit))|tr(?:s(?:tr|pn)|nc(?:py|at|mp)|c(?:spn|hr|oll|py|at|mp)|to(?:imax|d|u(?:l(?:l)?|max)|k|f|l(?:d|l)?)|error|pbrk|ftime|len|rchr|xfrm)|printf|et(?:jmp|vbuf|locale|buf)|qrt(?:f|l)?|w(?:scanf|printf)|rand)|n(?:e(?:arbyint(?:f|l)?|xt(?:toward(?:f|l)?|after(?:f|l)?))|an(?:f|l)?)|c(?:s(?:in(?:h(?:f|l)?|f|l)?|qrt(?:f|l)?)|cos(?:h(?:f)?|f|l)?|imag(?:f|l)?|t(?:ime|an(?:h(?:f|l)?|f|l)?)|o(?:s(?:h(?:f|l)?|f|l)?|nj(?:f|l)?|pysign(?:f|l)?)|p(?:ow(?:f|l)?|roj(?:f|l)?)|e(?:il(?:f|l)?|xp(?:f|l)?)|l(?:o(?:ck|g(?:f|l)?)|earerr)|a(?:sin(?:h(?:f|l)?|f|l)?|cos(?:h(?:f|l)?|f|l)?|tan(?:h(?:f|l)?|f|l)?|lloc|rg(?:f|l)?|bs(?:f|l)?)|real(?:f|l)?|brt(?:f|l)?)|t(?:ime|o(?:upper|lower)|an(?:h(?:f|l)?|f|l)?|runc(?:f|l)?|gamma(?:f|l)?|mp(?:nam|file))|i(?:s(?:space|n(?:ormal|an)|cntrl|inf|digit|u(?:nordered|pper)|p(?:unct|rint)|finite|w(?:space|c(?:ntrl|type)|digit|upper|p(?:unct|rint)|lower|al(?:num|pha)|graph|xdigit|blank)|l(?:ower|ess(?:equal|greater)?)|al(?:num|pha)|gr(?:eater(?:equal)?|aph)|xdigit|blank)|logb(?:f|l)?|max(?:div|abs))|di(?:v|fftime)|_Exit|unget(?:c|wc)|p(?:ow(?:f|l)?|ut(?:s|c(?:har)?|wc(?:har)?)|error|rintf)|e(?:rf(?:c(?:f|l)?|f|l)?|x(?:it|p(?:2(?:f|l)?|f|l|m1(?:f|l)?)?))|v(?:s(?:scanf|nprintf|canf|printf|w(?:scanf|printf))|printf|f(?:scanf|printf|w(?:scanf|printf))|w(?:scanf|printf)|a_(?:start|copy|end|arg))|qsort|f(?:s(?:canf|e(?:tpos|ek))|close|tell|open|dim(?:f|l)?|p(?:classify|ut(?:s|c|w(?:s|c))|rintf)|e(?:holdexcept|set(?:e(?:nv|xceptflag)|round)|clearexcept|testexcept|of|updateenv|r(?:aiseexcept|ror)|get(?:e(?:nv|xceptflag)|round))|flush|w(?:scanf|ide|printf|rite)|loor(?:f|l)?|abs(?:f|l)?|get(?:s|c|pos|w(?:s|c))|re(?:open|e|ad|xp(?:f|l)?)|m(?:in(?:f|l)?|od(?:f|l)?|a(?:f|l|x(?:f|l)?)?))|l(?:d(?:iv|exp(?:f|l)?)|o(?:ngjmp|cal(?:time|econv)|g(?:1(?:p(?:f|l)?|0(?:f|l)?)|2(?:f|l)?|f|l|b(?:f|l)?)?)|abs|l(?:div|abs|r(?:int(?:f|l)?|ound(?:f|l)?))|r(?:int(?:f|l)?|ound(?:f|l)?)|gamma(?:f|l)?)|w(?:scanf|c(?:s(?:s(?:tr|pn)|nc(?:py|at|mp)|c(?:spn|hr|oll|py|at|mp)|to(?:imax|d|u(?:l(?:l)?|max)|k|f|l(?:d|l)?|mbs)|pbrk|ftime|len|r(?:chr|tombs)|xfrm)|to(?:b|mb)|rtomb)|printf|mem(?:set|c(?:hr|py|mp)|move))|a(?:s(?:sert|ctime|in(?:h(?:f|l)?|f|l)?)|cos(?:h(?:f|l)?|f|l)?|t(?:o(?:i|f|l(?:l)?)|exit|an(?:h(?:f|l)?|2(?:f|l)?|f|l)?)|b(?:s|ort))|g(?:et(?:s|c(?:har)?|env|wc(?:har)?)|mtime)|r(?:int(?:f|l)?|ound(?:f|l)?|e(?:name|alloc|wind|m(?:ove|quo(?:f|l)?|ainder(?:f|l)?))|a(?:nd|ise))|b(?:search|towc)|m(?:odf(?:f|l)?|em(?:set|c(?:hr|py|mp)|move)|ktime|alloc|b(?:s(?:init|towcs|rtowcs)|towc|len|r(?:towc|len)))\\b" - -var c_cppHighlightRules = function() { - - var keywordControls = ( - "break|case|continue|default|do|else|for|goto|if|_Pragma|" + - "return|switch|while|catch|operator|try|throw|using" - ); - - var storageType = ( - "asm|__asm__|auto|bool|_Bool|char|_Complex|double|enum|float|" + - "_Imaginary|int|long|short|signed|struct|typedef|union|unsigned|void|" + - "class|wchar_t|template" - ); - - var storageModifiers = ( - "const|extern|register|restrict|static|volatile|inline|private:|" + - "protected:|public:|friend|explicit|virtual|export|mutable|typename" - ); - - var keywordOperators = ( - "and|and_eq|bitand|bitor|compl|not|not_eq|or|or_eq|typeid|xor|xor_eq" + - "const_cast|dynamic_cast|reinterpret_cast|static_cast|sizeof|namespace" - ); - - var builtinConstants = ( - "NULL|true|false|TRUE|FALSE" - ); - - var keywordMapper = this.$keywords = this.createKeywordMapper({ - "keyword.control" : keywordControls, - "storage.type" : storageType, - "storage.modifier" : storageModifiers, - "keyword.operator" : keywordOperators, - "variable.language": "this", - "constant.language": builtinConstants - }, "identifier"); - - var identifierRe = "[a-zA-Z\\$_\u00a1-\uffff][a-zA-Z\d\\$_\u00a1-\uffff]*\\b"; - - this.$rules = { - "start" : [ - { - token : "comment", - regex : "\\/\\/.*$" - }, - DocCommentHighlightRules.getStartRule("doc-start"), - { - token : "comment", // multi line comment - regex : "\\/\\*", - next : "comment" - }, { - token : "string", // single line - regex : '["](?:(?:\\\\.)|(?:[^"\\\\]))*?["]' - }, { - token : "string", // multi line string start - regex : '["].*\\\\$', - next : "qqstring" - }, { - token : "string", // single line - regex : "['](?:(?:\\\\.)|(?:[^'\\\\]))*?[']" - }, { - token : "string", // multi line string start - regex : "['].*\\\\$", - next : "qstring" - }, { - token : "constant.numeric", // hex - regex : "0[xX][0-9a-fA-F]+(L|l|UL|ul|u|U|F|f|ll|LL|ull|ULL)?\\b" - }, { - token : "constant.numeric", // float - regex : "[+-]?\\d+(?:(?:\\.\\d*)?(?:[eE][+-]?\\d+)?)?(L|l|UL|ul|u|U|F|f|ll|LL|ull|ULL)?\\b" - }, { - token : "keyword", // pre-compiler directives - regex : "#\\s*(?:include|import|pragma|line|define|undef|if|ifdef|else|elif|ifndef)\\b", - next : "directive" - }, { - token : "keyword", // special case pre-compiler directive - regex : "(?:#\\s*endif)\\b" - }, { - token : "support.function.C99.c", - regex : cFunctions - }, { - token : keywordMapper, - regex : "[a-zA-Z_$][a-zA-Z0-9_$]*\\b" - }, { - token : "keyword.operator", - regex : "!|\\$|%|&|\\*|\\-\\-|\\-|\\+\\+|\\+|~|==|=|!=|<=|>=|<<=|>>=|>>>=|<>|<|>|!|&&|\\|\\||\\?\\:|\\*=|%=|\\+=|\\-=|&=|\\^=|\\b(?:in|new|delete|typeof|void)" - }, { - token : "punctuation.operator", - regex : "\\?|\\:|\\,|\\;|\\." - }, { - token : "paren.lparen", - regex : "[[({]" - }, { - token : "paren.rparen", - regex : "[\\])}]" - }, { - token : "text", - regex : "\\s+" - } - ], - "comment" : [ - { - token : "comment", // closing comment - regex : ".*?\\*\\/", - next : "start" - }, { - token : "comment", // comment spanning whole line - regex : ".+" - } - ], - "qqstring" : [ - { - token : "string", - regex : '(?:(?:\\\\.)|(?:[^"\\\\]))*?"', - next : "start" - }, { - token : "string", - regex : '.+' - } - ], - "qstring" : [ - { - token : "string", - regex : "(?:(?:\\\\.)|(?:[^'\\\\]))*?'", - next : "start" - }, { - token : "string", - regex : '.+' - } - ], - "directive" : [ - { - token : "constant.other.multiline", - regex : /\\/ - }, - { - token : "constant.other.multiline", - regex : /.*\\/ - }, - { - token : "constant.other", - regex : "\\s*<.+?>", - next : "start" - }, - { - token : "constant.other", // single line - regex : '\\s*["](?:(?:\\\\.)|(?:[^"\\\\]))*?["]', - next : "start" - }, - { - token : "constant.other", // single line - regex : "\\s*['](?:(?:\\\\.)|(?:[^'\\\\]))*?[']", - next : "start" - }, - { - token : "constant.other", - regex : /[^\\\/]+/, - next : "start" - } - ] - }; - - this.embedRules(DocCommentHighlightRules, "doc-", - [ DocCommentHighlightRules.getEndRule("start") ]); -}; - -oop.inherits(c_cppHighlightRules, TextHighlightRules); - -exports.c_cppHighlightRules = c_cppHighlightRules; -}); - -ace.define('ace/mode/doc_comment_highlight_rules', ['require', 'exports', 'module' , 'ace/lib/oop', 'ace/mode/text_highlight_rules'], function(require, exports, module) { - - -var oop = require("../lib/oop"); -var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; - -var DocCommentHighlightRules = function() { - - this.$rules = { - "start" : [ { - token : "comment.doc.tag", - regex : "@[\\w\\d_]+" // TODO: fix email addresses - }, { - token : "comment.doc.tag", - regex : "\\bTODO\\b" - }, { - defaultToken : "comment.doc" - }] - }; -}; - -oop.inherits(DocCommentHighlightRules, TextHighlightRules); - -DocCommentHighlightRules.getStartRule = function(start) { - return { - token : "comment.doc", // doc comment - regex : "\\/\\*(?=\\*)", - next : start - }; -}; - -DocCommentHighlightRules.getEndRule = function (start) { - return { - token : "comment.doc", // closing comment - regex : "\\*\\/", - next : start - }; -}; - - -exports.DocCommentHighlightRules = DocCommentHighlightRules; - -}); - -ace.define('ace/mode/matching_brace_outdent', ['require', 'exports', 'module' , 'ace/range'], function(require, exports, module) { - - -var Range = require("../range").Range; - -var MatchingBraceOutdent = function() {}; - -(function() { - - this.checkOutdent = function(line, input) { - if (! /^\s+$/.test(line)) - return false; - - return /^\s*\}/.test(input); - }; - - this.autoOutdent = function(doc, row) { - var line = doc.getLine(row); - var match = line.match(/^(\s*\})/); - - if (!match) return 0; - - var column = match[1].length; - var openBracePos = doc.findMatchingBracket({row: row, column: column}); - - if (!openBracePos || openBracePos.row == row) return 0; - - var indent = this.$getIndent(doc.getLine(openBracePos.row)); - doc.replace(new Range(row, 0, row, column-1), indent); - }; - - this.$getIndent = function(line) { - return line.match(/^\s*/)[0]; - }; - -}).call(MatchingBraceOutdent.prototype); - -exports.MatchingBraceOutdent = MatchingBraceOutdent; -}); - -ace.define('ace/mode/behaviour/cstyle', ['require', 'exports', 'module' , 'ace/lib/oop', 'ace/mode/behaviour', 'ace/token_iterator', 'ace/lib/lang'], function(require, exports, module) { - - -var oop = require("../../lib/oop"); -var Behaviour = require("../behaviour").Behaviour; -var TokenIterator = require("../../token_iterator").TokenIterator; -var lang = require("../../lib/lang"); - -var SAFE_INSERT_IN_TOKENS = - ["text", "paren.rparen", "punctuation.operator"]; -var SAFE_INSERT_BEFORE_TOKENS = - ["text", "paren.rparen", "punctuation.operator", "comment"]; - - -var autoInsertedBrackets = 0; -var autoInsertedRow = -1; -var autoInsertedLineEnd = ""; -var maybeInsertedBrackets = 0; -var maybeInsertedRow = -1; -var maybeInsertedLineStart = ""; -var maybeInsertedLineEnd = ""; - -var CstyleBehaviour = function () { - - CstyleBehaviour.isSaneInsertion = function(editor, session) { - var cursor = editor.getCursorPosition(); - var iterator = new TokenIterator(session, cursor.row, cursor.column); - if (!this.$matchTokenType(iterator.getCurrentToken() || "text", SAFE_INSERT_IN_TOKENS)) { - var iterator2 = new TokenIterator(session, cursor.row, cursor.column + 1); - if (!this.$matchTokenType(iterator2.getCurrentToken() || "text", SAFE_INSERT_IN_TOKENS)) - return false; - } - iterator.stepForward(); - return iterator.getCurrentTokenRow() !== cursor.row || - this.$matchTokenType(iterator.getCurrentToken() || "text", SAFE_INSERT_BEFORE_TOKENS); - }; - - CstyleBehaviour.$matchTokenType = function(token, types) { - return types.indexOf(token.type || token) > -1; - }; - - CstyleBehaviour.recordAutoInsert = function(editor, session, bracket) { - var cursor = editor.getCursorPosition(); - var line = session.doc.getLine(cursor.row); - if (!this.isAutoInsertedClosing(cursor, line, autoInsertedLineEnd[0])) - autoInsertedBrackets = 0; - autoInsertedRow = cursor.row; - autoInsertedLineEnd = bracket + line.substr(cursor.column); - autoInsertedBrackets++; - }; - - CstyleBehaviour.recordMaybeInsert = function(editor, session, bracket) { - var cursor = editor.getCursorPosition(); - var line = session.doc.getLine(cursor.row); - if (!this.isMaybeInsertedClosing(cursor, line)) - maybeInsertedBrackets = 0; - maybeInsertedRow = cursor.row; - maybeInsertedLineStart = line.substr(0, cursor.column) + bracket; - maybeInsertedLineEnd = line.substr(cursor.column); - maybeInsertedBrackets++; - }; - - CstyleBehaviour.isAutoInsertedClosing = function(cursor, line, bracket) { - return autoInsertedBrackets > 0 && - cursor.row === autoInsertedRow && - bracket === autoInsertedLineEnd[0] && - line.substr(cursor.column) === autoInsertedLineEnd; - }; - - CstyleBehaviour.isMaybeInsertedClosing = function(cursor, line) { - return maybeInsertedBrackets > 0 && - cursor.row === maybeInsertedRow && - line.substr(cursor.column) === maybeInsertedLineEnd && - line.substr(0, cursor.column) == maybeInsertedLineStart; - }; - - CstyleBehaviour.popAutoInsertedClosing = function() { - autoInsertedLineEnd = autoInsertedLineEnd.substr(1); - autoInsertedBrackets--; - }; - - CstyleBehaviour.clearMaybeInsertedClosing = function() { - maybeInsertedBrackets = 0; - maybeInsertedRow = -1; - }; - - this.add("braces", "insertion", function (state, action, editor, session, text) { - var cursor = editor.getCursorPosition(); - var line = session.doc.getLine(cursor.row); - if (text == '{') { - var selection = editor.getSelectionRange(); - var selected = session.doc.getTextRange(selection); - if (selected !== "" && selected !== "{" && editor.getWrapBehavioursEnabled()) { - return { - text: '{' + selected + '}', - selection: false - }; - } else if (CstyleBehaviour.isSaneInsertion(editor, session)) { - if (/[\]\}\)]/.test(line[cursor.column]) || editor.inMultiSelectMode) { - CstyleBehaviour.recordAutoInsert(editor, session, "}"); - return { - text: '{}', - selection: [1, 1] - }; - } else { - CstyleBehaviour.recordMaybeInsert(editor, session, "{"); - return { - text: '{', - selection: [1, 1] - }; - } - } - } else if (text == '}') { - var rightChar = line.substring(cursor.column, cursor.column + 1); - if (rightChar == '}') { - var matching = session.$findOpeningBracket('}', {column: cursor.column + 1, row: cursor.row}); - if (matching !== null && CstyleBehaviour.isAutoInsertedClosing(cursor, line, text)) { - CstyleBehaviour.popAutoInsertedClosing(); - return { - text: '', - selection: [1, 1] - }; - } - } - } else if (text == "\n" || text == "\r\n") { - var closing = ""; - if (CstyleBehaviour.isMaybeInsertedClosing(cursor, line)) { - closing = lang.stringRepeat("}", maybeInsertedBrackets); - CstyleBehaviour.clearMaybeInsertedClosing(); - } - var rightChar = line.substring(cursor.column, cursor.column + 1); - if (rightChar === '}') { - var openBracePos = session.findMatchingBracket({row: cursor.row, column: cursor.column+1}, '}'); - if (!openBracePos) - return null; - var next_indent = this.$getIndent(session.getLine(openBracePos.row)); - } else if (closing) { - var next_indent = this.$getIndent(line); - } else { - return; - } - var indent = next_indent + session.getTabString(); - - return { - text: '\n' + indent + '\n' + next_indent + closing, - selection: [1, indent.length, 1, indent.length] - }; - } else { - CstyleBehaviour.clearMaybeInsertedClosing(); - } - }); - - this.add("braces", "deletion", function (state, action, editor, session, range) { - var selected = session.doc.getTextRange(range); - if (!range.isMultiLine() && selected == '{') { - var line = session.doc.getLine(range.start.row); - var rightChar = line.substring(range.end.column, range.end.column + 1); - if (rightChar == '}') { - range.end.column++; - return range; - } else { - maybeInsertedBrackets--; - } - } - }); - - this.add("parens", "insertion", function (state, action, editor, session, text) { - if (text == '(') { - var selection = editor.getSelectionRange(); - var selected = session.doc.getTextRange(selection); - if (selected !== "" && editor.getWrapBehavioursEnabled()) { - return { - text: '(' + selected + ')', - selection: false - }; - } else if (CstyleBehaviour.isSaneInsertion(editor, session)) { - CstyleBehaviour.recordAutoInsert(editor, session, ")"); - return { - text: '()', - selection: [1, 1] - }; - } - } else if (text == ')') { - var cursor = editor.getCursorPosition(); - var line = session.doc.getLine(cursor.row); - var rightChar = line.substring(cursor.column, cursor.column + 1); - if (rightChar == ')') { - var matching = session.$findOpeningBracket(')', {column: cursor.column + 1, row: cursor.row}); - if (matching !== null && CstyleBehaviour.isAutoInsertedClosing(cursor, line, text)) { - CstyleBehaviour.popAutoInsertedClosing(); - return { - text: '', - selection: [1, 1] - }; - } - } - } - }); - - this.add("parens", "deletion", function (state, action, editor, session, range) { - var selected = session.doc.getTextRange(range); - if (!range.isMultiLine() && selected == '(') { - var line = session.doc.getLine(range.start.row); - var rightChar = line.substring(range.start.column + 1, range.start.column + 2); - if (rightChar == ')') { - range.end.column++; - return range; - } - } - }); - - this.add("brackets", "insertion", function (state, action, editor, session, text) { - if (text == '[') { - var selection = editor.getSelectionRange(); - var selected = session.doc.getTextRange(selection); - if (selected !== "" && editor.getWrapBehavioursEnabled()) { - return { - text: '[' + selected + ']', - selection: false - }; - } else if (CstyleBehaviour.isSaneInsertion(editor, session)) { - CstyleBehaviour.recordAutoInsert(editor, session, "]"); - return { - text: '[]', - selection: [1, 1] - }; - } - } else if (text == ']') { - var cursor = editor.getCursorPosition(); - var line = session.doc.getLine(cursor.row); - var rightChar = line.substring(cursor.column, cursor.column + 1); - if (rightChar == ']') { - var matching = session.$findOpeningBracket(']', {column: cursor.column + 1, row: cursor.row}); - if (matching !== null && CstyleBehaviour.isAutoInsertedClosing(cursor, line, text)) { - CstyleBehaviour.popAutoInsertedClosing(); - return { - text: '', - selection: [1, 1] - }; - } - } - } - }); - - this.add("brackets", "deletion", function (state, action, editor, session, range) { - var selected = session.doc.getTextRange(range); - if (!range.isMultiLine() && selected == '[') { - var line = session.doc.getLine(range.start.row); - var rightChar = line.substring(range.start.column + 1, range.start.column + 2); - if (rightChar == ']') { - range.end.column++; - return range; - } - } - }); - - this.add("string_dquotes", "insertion", function (state, action, editor, session, text) { - if (text == '"' || text == "'") { - var quote = text; - var selection = editor.getSelectionRange(); - var selected = session.doc.getTextRange(selection); - if (selected !== "" && selected !== "'" && selected != '"' && editor.getWrapBehavioursEnabled()) { - return { - text: quote + selected + quote, - selection: false - }; - } else { - var cursor = editor.getCursorPosition(); - var line = session.doc.getLine(cursor.row); - var leftChar = line.substring(cursor.column-1, cursor.column); - if (leftChar == '\\') { - return null; - } - var tokens = session.getTokens(selection.start.row); - var col = 0, token; - var quotepos = -1; // Track whether we're inside an open quote. - - for (var x = 0; x < tokens.length; x++) { - token = tokens[x]; - if (token.type == "string") { - quotepos = -1; - } else if (quotepos < 0) { - quotepos = token.value.indexOf(quote); - } - if ((token.value.length + col) > selection.start.column) { - break; - } - col += tokens[x].value.length; - } - if (!token || (quotepos < 0 && token.type !== "comment" && (token.type !== "string" || ((selection.start.column !== token.value.length+col-1) && token.value.lastIndexOf(quote) === token.value.length-1)))) { - if (!CstyleBehaviour.isSaneInsertion(editor, session)) - return; - return { - text: quote + quote, - selection: [1,1] - }; - } else if (token && token.type === "string") { - var rightChar = line.substring(cursor.column, cursor.column + 1); - if (rightChar == quote) { - return { - text: '', - selection: [1, 1] - }; - } - } - } - } - }); - - this.add("string_dquotes", "deletion", function (state, action, editor, session, range) { - var selected = session.doc.getTextRange(range); - if (!range.isMultiLine() && (selected == '"' || selected == "'")) { - var line = session.doc.getLine(range.start.row); - var rightChar = line.substring(range.start.column + 1, range.start.column + 2); - if (rightChar == selected) { - range.end.column++; - return range; - } - } - }); - -}; - -oop.inherits(CstyleBehaviour, Behaviour); - -exports.CstyleBehaviour = CstyleBehaviour; -}); - -ace.define('ace/mode/folding/cstyle', ['require', 'exports', 'module' , 'ace/lib/oop', 'ace/range', 'ace/mode/folding/fold_mode'], function(require, exports, module) { - - -var oop = require("../../lib/oop"); -var Range = require("../../range").Range; -var BaseFoldMode = require("./fold_mode").FoldMode; - -var FoldMode = exports.FoldMode = function(commentRegex) { - if (commentRegex) { - this.foldingStartMarker = new RegExp( - this.foldingStartMarker.source.replace(/\|[^|]*?$/, "|" + commentRegex.start) - ); - this.foldingStopMarker = new RegExp( - this.foldingStopMarker.source.replace(/\|[^|]*?$/, "|" + commentRegex.end) - ); - } -}; -oop.inherits(FoldMode, BaseFoldMode); - -(function() { - - this.foldingStartMarker = /(\{|\[)[^\}\]]*$|^\s*(\/\*)/; - this.foldingStopMarker = /^[^\[\{]*(\}|\])|^[\s\*]*(\*\/)/; - - this.getFoldWidgetRange = function(session, foldStyle, row, forceMultiline) { - var line = session.getLine(row); - var match = line.match(this.foldingStartMarker); - if (match) { - var i = match.index; - - if (match[1]) - return this.openingBracketBlock(session, match[1], row, i); - - var range = session.getCommentFoldRange(row, i + match[0].length, 1); - - if (range && !range.isMultiLine()) { - if (forceMultiline) { - range = this.getSectionRange(session, row); - } else if (foldStyle != "all") - range = null; - } - - return range; - } - - if (foldStyle === "markbegin") - return; - - var match = line.match(this.foldingStopMarker); - if (match) { - var i = match.index + match[0].length; - - if (match[1]) - return this.closingBracketBlock(session, match[1], row, i); - - return session.getCommentFoldRange(row, i, -1); - } - }; - - this.getSectionRange = function(session, row) { - var line = session.getLine(row); - var startIndent = line.search(/\S/); - var startRow = row; - var startColumn = line.length; - row = row + 1; - var endRow = row; - var maxRow = session.getLength(); - while (++row < maxRow) { - line = session.getLine(row); - var indent = line.search(/\S/); - if (indent === -1) - continue; - if (startIndent > indent) - break; - var subRange = this.getFoldWidgetRange(session, "all", row); - - if (subRange) { - if (subRange.start.row <= startRow) { - break; - } else if (subRange.isMultiLine()) { - row = subRange.end.row; - } else if (startIndent == indent) { - break; - } - } - endRow = row; - } - - return new Range(startRow, startColumn, endRow, session.getLine(endRow).length); - }; - -}).call(FoldMode.prototype); - -}); -ace.define('ace/mode/nix_highlight_rules', ['require', 'exports', 'module' , 'ace/lib/oop', 'ace/mode/text_highlight_rules'], function(require, exports, module) { - - - var oop = require("../lib/oop"); - var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; - - var NixHighlightRules = function() { - - var constantLanguage = "true|false"; - var keywordControl = "with|import|if|else|then|inherit"; - var keywordDeclaration = "let|in|rec"; - - var keywordMapper = this.createKeywordMapper({ - "constant.language.nix": constantLanguage, - "keyword.control.nix": keywordControl, - "keyword.declaration.nix": keywordDeclaration - }, "identifier"); - - this.$rules = { - "start": [{ - token: "comment", - regex: /#.*$/ - }, { - token: "comment", - regex: /\/\*/, - next: "comment" - }, { - token: "constant", - regex: "<[^>]+>" - }, { - regex: "(==|!=|<=?|>=?)", - token: ["keyword.operator.comparison.nix"] - }, { - regex: "((?:[+*/%-]|\\~)=)", - token: ["keyword.operator.assignment.arithmetic.nix"] - }, { - regex: "=", - token: "keyword.operator.assignment.nix" - }, { - token: "string", - regex: "''", - next: "qqdoc" - }, { - token: "string", - regex: "'", - next: "qstring" - }, { - token: "string", - regex: '"', - push: "qqstring" - }, { - token: "constant.numeric", // hex - regex: "0[xX][0-9a-fA-F]+\\b" - }, { - token: "constant.numeric", // float - regex: "[+-]?\\d+(?:(?:\\.\\d*)?(?:[eE][+-]?\\d+)?)?\\b" - }, { - token: keywordMapper, - regex: "[a-zA-Z_$][a-zA-Z0-9_$]*\\b" - }, { - regex: "}", - token: function(val, start, stack) { - return stack[1] && stack[1].charAt(0) == "q" ? "constant.language.escape" : "text"; - }, - next: "pop" - }], - "comment": [{ - token: "comment", // closing comment - regex: ".*?\\*\\/", - next: "start" - }, { - token: "comment", // comment spanning whole line - regex: ".+" - }], - "qqdoc": [ - { - token: "constant.language.escape", - regex: /\$\{/, - push: "start" - }, { - token: "string", - regex: "''", - next: "pop" - }, { - defaultToken: "string" - }], - "qqstring": [ - { - token: "constant.language.escape", - regex: /\$\{/, - push: "start" - }, { - token: "string", - regex: '"', - next: "pop" - }, { - defaultToken: "string" - }], - "qstring": [ - { - token: "constant.language.escape", - regex: /\$\{/, - push: "start" - }, { - token: "string", - regex: "'", - next: "pop" - }, { - defaultToken: "string" - }] - }; - - this.normalizeRules(); - }; - - oop.inherits(NixHighlightRules, TextHighlightRules); - - exports.NixHighlightRules = NixHighlightRules; -}); \ No newline at end of file diff --git a/IDE/jsrealb-ide/ace-src-noconflict/mode-objectivec.js b/IDE/jsrealb-ide/ace-src-noconflict/mode-objectivec.js deleted file mode 100644 index bf5f4cf3..00000000 --- a/IDE/jsrealb-ide/ace-src-noconflict/mode-objectivec.js +++ /dev/null @@ -1,699 +0,0 @@ -/* ***** BEGIN LICENSE BLOCK ***** - * Distributed under the BSD license: - * - * Copyright (c) 2012, Ajax.org B.V. - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are met: - * * Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * * Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * * Neither the name of Ajax.org B.V. nor the - * names of its contributors may be used to endorse or promote products - * derived from this software without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND - * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED - * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE - * DISCLAIMED. IN NO EVENT SHALL AJAX.ORG B.V. BE LIABLE FOR ANY - * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES - * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; - * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND - * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - * - * - * Contributor(s): - * - * - * - * ***** END LICENSE BLOCK ***** */ - -ace.define('ace/mode/objectivec', ['require', 'exports', 'module' , 'ace/lib/oop', 'ace/mode/text', 'ace/tokenizer', 'ace/mode/objectivec_highlight_rules', 'ace/mode/folding/cstyle'], function(require, exports, module) { - - -var oop = require("../lib/oop"); -var TextMode = require("./text").Mode; -var Tokenizer = require("../tokenizer").Tokenizer; -var ObjectiveCHighlightRules = require("./objectivec_highlight_rules").ObjectiveCHighlightRules; -var CStyleFoldMode = require("./folding/cstyle").FoldMode; - -var Mode = function() { - this.HighlightRules = ObjectiveCHighlightRules; - this.foldingRules = new CStyleFoldMode(); -}; -oop.inherits(Mode, TextMode); - -(function() { - this.lineCommentStart = "//"; - this.blockComment = {start: "/*", end: "*/"}; - this.$id = "ace/mode/objectivec"; -}).call(Mode.prototype); - -exports.Mode = Mode; -});ace.define('ace/mode/objectivec_highlight_rules', ['require', 'exports', 'module' , 'ace/lib/oop', 'ace/mode/doc_comment_highlight_rules', 'ace/mode/c_cpp_highlight_rules'], function(require, exports, module) { - - -var oop = require("../lib/oop"); -var DocCommentHighlightRules = require("./doc_comment_highlight_rules").DocCommentHighlightRules; -var C_Highlight_File = require("./c_cpp_highlight_rules"); -var CHighlightRules = C_Highlight_File.c_cppHighlightRules; - -var ObjectiveCHighlightRules = function() { - - var escapedConstRe = "\\\\(?:[abefnrtv'\"?\\\\]|" + - "[0-3]\\d{1,2}|" + - "[4-7]\\d?|" + - "222|" + - "x[a-zA-Z0-9]+)"; - - var specialVariables = [{ - regex: "\\b_cmd\\b", - token: "variable.other.selector.objc" - }, { - regex: "\\b(?:self|super)\\b", - token: "variable.language.objc" - } - ]; - - var cObj = new CHighlightRules(); - var cRules = cObj.getRules(); - - this.$rules = { - "start": [ - { - token : "comment", - regex : "\\/\\/.*$" - }, - DocCommentHighlightRules.getStartRule("doc-start"), - { - token : "comment", // multi line comment - regex : "\\/\\*", - next : "comment" - }, - { - token: [ "storage.type.objc", "punctuation.definition.storage.type.objc", - "entity.name.type.objc", "text", "entity.other.inherited-class.objc" - ], - regex: "(@)(interface|protocol)(?!.+;)(\\s+[A-Za-z_][A-Za-z0-9_]*)(\\s*:\\s*)([A-Za-z]+)" - }, - { - token: [ "storage.type.objc" ], - regex: "(@end)" - }, - { - token: [ "storage.type.objc", "entity.name.type.objc", - "entity.other.inherited-class.objc" - ], - regex: "(@implementation)(\\s+[A-Za-z_][A-Za-z0-9_]*)(\\s*?::\\s*(?:[A-Za-z][A-Za-z0-9]*))?" - }, - { - token: "string.begin.objc", - regex: '@"', - next: "constant_NSString" - }, - { - token: "storage.type.objc", - regex: "\\bid\\s*<", - next: "protocol_list" - }, - { - token: "keyword.control.macro.objc", - regex: "\\bNS_DURING|NS_HANDLER|NS_ENDHANDLER\\b" - }, - { - token: ["punctuation.definition.keyword.objc", "keyword.control.exception.objc"], - regex: "(@)(try|catch|finally|throw)\\b" - }, - { - token: ["punctuation.definition.keyword.objc", "keyword.other.objc"], - regex: "(@)(defs|encode)\\b" - }, - { - token: ["storage.type.id.objc", "text"], - regex: "(\\bid\\b)(\\s|\\n)?" - }, - { - token: "storage.type.objc", - regex: "\\bIBOutlet|IBAction|BOOL|SEL|id|unichar|IMP|Class\\b" - }, - { - token: [ "punctuation.definition.storage.type.objc", "storage.type.objc"], - regex: "(@)(class|protocol)\\b" - }, - { - token: [ "punctuation.definition.storage.type.objc", "punctuation"], - regex: "(@selector)(\\s*\\()", - next: "selectors" - }, - { - token: [ "punctuation.definition.storage.modifier.objc", "storage.modifier.objc"], - regex: "(@)(synchronized|public|private|protected|package)\\b" - }, - { - token: "constant.language.objc", - regex: "\\bYES|NO|Nil|nil\\b" - }, - { - token: "support.variable.foundation", - regex: "\\bNSApp\\b" - }, - { - token: [ "support.function.cocoa.leopard"], - regex: "(?:\\b)(NS(?:Rect(?:ToCGRect|FromCGRect)|MakeCollectable|S(?:tringFromProtocol|ize(?:ToCGSize|FromCGSize))|Draw(?:NinePartImage|ThreePartImage)|P(?:oint(?:ToCGPoint|FromCGPoint)|rotocolFromString)|EventMaskFromType|Value))(?:\\b)" - }, - { - token: ["support.function.cocoa"], - regex: "(?:\\b)(NS(?:R(?:ound(?:DownToMultipleOfPageSize|UpToMultipleOfPageSize)|un(?:CriticalAlertPanel(?:RelativeToWindow)?|InformationalAlertPanel(?:RelativeToWindow)?|AlertPanel(?:RelativeToWindow)?)|e(?:set(?:MapTable|HashTable)|c(?:ycleZone|t(?:Clip(?:List)?|F(?:ill(?:UsingOperation|List(?:UsingOperation|With(?:Grays|Colors(?:UsingOperation)?))?)?|romString))|ordAllocationEvent)|turnAddress|leaseAlertPanel|a(?:dPixel|l(?:MemoryAvailable|locateCollectable))|gisterServicesProvider)|angeFromString)|Get(?:SizeAndAlignment|CriticalAlertPanel|InformationalAlertPanel|UncaughtExceptionHandler|FileType(?:s)?|WindowServerMemory|AlertPanel)|M(?:i(?:n(?:X|Y)|d(?:X|Y))|ouseInRect|a(?:p(?:Remove|Get|Member|Insert(?:IfAbsent|KnownAbsent)?)|ke(?:R(?:ect|ange)|Size|Point)|x(?:Range|X|Y)))|B(?:itsPer(?:SampleFromDepth|PixelFromDepth)|e(?:stDepth|ep|gin(?:CriticalAlertSheet|InformationalAlertSheet|AlertSheet)))|S(?:ho(?:uldRetainWithZone|w(?:sServicesMenuItem|AnimationEffect))|tringFrom(?:R(?:ect|ange)|MapTable|S(?:ize|elector)|HashTable|Class|Point)|izeFromString|e(?:t(?:ShowsServicesMenuItem|ZoneName|UncaughtExceptionHandler|FocusRingStyle)|lectorFromString|archPathForDirectoriesInDomains)|wap(?:Big(?:ShortToHost|IntToHost|DoubleToHost|FloatToHost|Long(?:ToHost|LongToHost))|Short|Host(?:ShortTo(?:Big|Little)|IntTo(?:Big|Little)|DoubleTo(?:Big|Little)|FloatTo(?:Big|Little)|Long(?:To(?:Big|Little)|LongTo(?:Big|Little)))|Int|Double|Float|L(?:ittle(?:ShortToHost|IntToHost|DoubleToHost|FloatToHost|Long(?:ToHost|LongToHost))|ong(?:Long)?)))|H(?:ighlightRect|o(?:stByteOrder|meDirectory(?:ForUser)?)|eight|ash(?:Remove|Get|Insert(?:IfAbsent|KnownAbsent)?)|FSType(?:CodeFromFileType|OfFile))|N(?:umberOfColorComponents|ext(?:MapEnumeratorPair|HashEnumeratorItem))|C(?:o(?:n(?:tainsRect|vert(?:GlyphsToPackedGlyphs|Swapped(?:DoubleToHost|FloatToHost)|Host(?:DoubleToSwapped|FloatToSwapped)))|unt(?:MapTable|HashTable|Frames|Windows(?:ForContext)?)|py(?:M(?:emoryPages|apTableWithZone)|Bits|HashTableWithZone|Object)|lorSpaceFromDepth|mpare(?:MapTables|HashTables))|lassFromString|reate(?:MapTable(?:WithZone)?|HashTable(?:WithZone)?|Zone|File(?:namePboardType|ContentsPboardType)))|TemporaryDirectory|I(?:s(?:ControllerMarker|EmptyRect|FreedObject)|n(?:setRect|crementExtraRefCount|te(?:r(?:sect(?:sRect|ionR(?:ect|ange))|faceStyleForKey)|gralRect)))|Zone(?:Realloc|Malloc|Name|Calloc|Fr(?:omPointer|ee))|O(?:penStepRootDirectory|ffsetRect)|D(?:i(?:sableScreenUpdates|videRect)|ottedFrameRect|e(?:c(?:imal(?:Round|Multiply|S(?:tring|ubtract)|Normalize|Co(?:py|mpa(?:ct|re))|IsNotANumber|Divide|Power|Add)|rementExtraRefCountWasZero)|faultMallocZone|allocate(?:MemoryPages|Object))|raw(?:Gr(?:oove|ayBezel)|B(?:itmap|utton)|ColorTiledRects|TiledRects|DarkBezel|W(?:hiteBezel|indowBackground)|LightBezel))|U(?:serName|n(?:ionR(?:ect|ange)|registerServicesProvider)|pdateDynamicServices)|Java(?:Bundle(?:Setup|Cleanup)|Setup(?:VirtualMachine)?|Needs(?:ToLoadClasses|VirtualMachine)|ClassesF(?:orBundle|romPath)|ObjectNamedInPath|ProvidesClasses)|P(?:oint(?:InRect|FromString)|erformService|lanarFromDepth|ageSize)|E(?:n(?:d(?:MapTableEnumeration|HashTableEnumeration)|umerate(?:MapTable|HashTable)|ableScreenUpdates)|qual(?:R(?:ects|anges)|Sizes|Points)|raseRect|xtraRefCount)|F(?:ileTypeForHFSTypeCode|ullUserName|r(?:ee(?:MapTable|HashTable)|ame(?:Rect(?:WithWidth(?:UsingOperation)?)?|Address)))|Wi(?:ndowList(?:ForContext)?|dth)|Lo(?:cationInRange|g(?:v|PageSize)?)|A(?:ccessibility(?:R(?:oleDescription(?:ForUIElement)?|aiseBadArgumentException)|Unignored(?:Children(?:ForOnlyChild)?|Descendant|Ancestor)|PostNotification|ActionDescription)|pplication(?:Main|Load)|vailableWindowDepths|ll(?:MapTable(?:Values|Keys)|HashTableObjects|ocate(?:MemoryPages|Collectable|Object)))))(?:\\b)" - }, - { - token: ["support.class.cocoa.leopard"], - regex: "(?:\\b)(NS(?:RuleEditor|G(?:arbageCollector|radient)|MapTable|HashTable|Co(?:ndition|llectionView(?:Item)?)|T(?:oolbarItemGroup|extInputClient|r(?:eeNode|ackingArea))|InvocationOperation|Operation(?:Queue)?|D(?:ictionaryController|ockTile)|P(?:ointer(?:Functions|Array)|athC(?:o(?:ntrol(?:Delegate)?|mponentCell)|ell(?:Delegate)?)|r(?:intPanelAccessorizing|edicateEditor(?:RowTemplate)?))|ViewController|FastEnumeration|Animat(?:ionContext|ablePropertyContainer)))(?:\\b)" - }, - { - token: ["support.class.cocoa"], - regex: "(?:\\b)(NS(?:R(?:u(?:nLoop|ler(?:Marker|View))|e(?:sponder|cursiveLock|lativeSpecifier)|an(?:domSpecifier|geSpecifier))|G(?:etCommand|lyph(?:Generator|Storage|Info)|raphicsContext)|XML(?:Node|D(?:ocument|TD(?:Node)?)|Parser|Element)|M(?:iddleSpecifier|ov(?:ie(?:View)?|eCommand)|utable(?:S(?:tring|et)|C(?:haracterSet|opying)|IndexSet|D(?:ictionary|ata)|URLRequest|ParagraphStyle|A(?:ttributedString|rray))|e(?:ssagePort(?:NameServer)?|nu(?:Item(?:Cell)?|View)?|t(?:hodSignature|adata(?:Item|Query(?:ResultGroup|AttributeValueTuple)?)))|a(?:ch(?:BootstrapServer|Port)|trix))|B(?:itmapImageRep|ox|u(?:ndle|tton(?:Cell)?)|ezierPath|rowser(?:Cell)?)|S(?:hadow|c(?:anner|r(?:ipt(?:SuiteRegistry|C(?:o(?:ercionHandler|mmand(?:Description)?)|lassDescription)|ObjectSpecifier|ExecutionContext|WhoseTest)|oll(?:er|View)|een))|t(?:epper(?:Cell)?|atus(?:Bar|Item)|r(?:ing|eam))|imple(?:HorizontalTypesetter|CString)|o(?:cketPort(?:NameServer)?|und|rtDescriptor)|p(?:e(?:cifierTest|ech(?:Recognizer|Synthesizer)|ll(?:Server|Checker))|litView)|e(?:cureTextField(?:Cell)?|t(?:Command)?|archField(?:Cell)?|rializer|gmentedC(?:ontrol|ell))|lider(?:Cell)?|avePanel)|H(?:ost|TTP(?:Cookie(?:Storage)?|URLResponse)|elpManager)|N(?:ib(?:Con(?:nector|trolConnector)|OutletConnector)?|otification(?:Center|Queue)?|u(?:ll|mber(?:Formatter)?)|etService(?:Browser)?|ameSpecifier)|C(?:ha(?:ngeSpelling|racterSet)|o(?:n(?:stantString|nection|trol(?:ler)?|ditionLock)|d(?:ing|er)|unt(?:Command|edSet)|pying|lor(?:Space|P(?:ick(?:ing(?:Custom|Default)|er)|anel)|Well|List)?|m(?:p(?:oundPredicate|arisonPredicate)|boBox(?:Cell)?))|u(?:stomImageRep|rsor)|IImageRep|ell|l(?:ipView|o(?:seCommand|neCommand)|assDescription)|a(?:ched(?:ImageRep|URLResponse)|lendar(?:Date)?)|reateCommand)|T(?:hread|ypesetter|ime(?:Zone|r)|o(?:olbar(?:Item(?:Validations)?)?|kenField(?:Cell)?)|ext(?:Block|Storage|Container|Tab(?:le(?:Block)?)?|Input|View|Field(?:Cell)?|List|Attachment(?:Cell)?)?|a(?:sk|b(?:le(?:Header(?:Cell|View)|Column|View)|View(?:Item)?))|reeController)|I(?:n(?:dex(?:S(?:pecifier|et)|Path)|put(?:Manager|S(?:tream|erv(?:iceProvider|er(?:MouseTracker)?)))|vocation)|gnoreMisspelledWords|mage(?:Rep|Cell|View)?)|O(?:ut(?:putStream|lineView)|pen(?:GL(?:Context|Pixel(?:Buffer|Format)|View)|Panel)|bj(?:CTypeSerializationCallBack|ect(?:Controller)?))|D(?:i(?:st(?:antObject(?:Request)?|ributed(?:NotificationCenter|Lock))|ctionary|rectoryEnumerator)|ocument(?:Controller)?|e(?:serializer|cimalNumber(?:Behaviors|Handler)?|leteCommand)|at(?:e(?:Components|Picker(?:Cell)?|Formatter)?|a)|ra(?:wer|ggingInfo))|U(?:ser(?:InterfaceValidations|Defaults(?:Controller)?)|RL(?:Re(?:sponse|quest)|Handle(?:Client)?|C(?:onnection|ache|redential(?:Storage)?)|Download(?:Delegate)?|Prot(?:ocol(?:Client)?|ectionSpace)|AuthenticationChallenge(?:Sender)?)?|n(?:iqueIDSpecifier|doManager|archiver))|P(?:ipe|o(?:sitionalSpecifier|pUpButton(?:Cell)?|rt(?:Message|NameServer|Coder)?)|ICTImageRep|ersistentDocument|DFImageRep|a(?:steboard|nel|ragraphStyle|geLayout)|r(?:int(?:Info|er|Operation|Panel)|o(?:cessInfo|tocolChecker|perty(?:Specifier|ListSerialization)|gressIndicator|xy)|edicate))|E(?:numerator|vent|PSImageRep|rror|x(?:ception|istsCommand|pression))|V(?:iew(?:Animation)?|al(?:idated(?:ToobarItem|UserInterfaceItem)|ue(?:Transformer)?))|Keyed(?:Unarchiver|Archiver)|Qui(?:ckDrawView|tCommand)|F(?:ile(?:Manager|Handle|Wrapper)|o(?:nt(?:Manager|Descriptor|Panel)?|rm(?:Cell|atter)))|W(?:hoseSpecifier|indow(?:Controller)?|orkspace)|L(?:o(?:c(?:k(?:ing)?|ale)|gicalTest)|evelIndicator(?:Cell)?|ayoutManager)|A(?:ssertionHandler|nimation|ctionCell|ttributedString|utoreleasePool|TSTypesetter|ppl(?:ication|e(?:Script|Event(?:Manager|Descriptor)))|ffineTransform|lert|r(?:chiver|ray(?:Controller)?))))(?:\\b)" - }, - { - token: ["support.type.cocoa.leopard"], - regex: "(?:\\b)(NS(?:R(?:u(?:nLoop|ler(?:Marker|View))|e(?:sponder|cursiveLock|lativeSpecifier)|an(?:domSpecifier|geSpecifier))|G(?:etCommand|lyph(?:Generator|Storage|Info)|raphicsContext)|XML(?:Node|D(?:ocument|TD(?:Node)?)|Parser|Element)|M(?:iddleSpecifier|ov(?:ie(?:View)?|eCommand)|utable(?:S(?:tring|et)|C(?:haracterSet|opying)|IndexSet|D(?:ictionary|ata)|URLRequest|ParagraphStyle|A(?:ttributedString|rray))|e(?:ssagePort(?:NameServer)?|nu(?:Item(?:Cell)?|View)?|t(?:hodSignature|adata(?:Item|Query(?:ResultGroup|AttributeValueTuple)?)))|a(?:ch(?:BootstrapServer|Port)|trix))|B(?:itmapImageRep|ox|u(?:ndle|tton(?:Cell)?)|ezierPath|rowser(?:Cell)?)|S(?:hadow|c(?:anner|r(?:ipt(?:SuiteRegistry|C(?:o(?:ercionHandler|mmand(?:Description)?)|lassDescription)|ObjectSpecifier|ExecutionContext|WhoseTest)|oll(?:er|View)|een))|t(?:epper(?:Cell)?|atus(?:Bar|Item)|r(?:ing|eam))|imple(?:HorizontalTypesetter|CString)|o(?:cketPort(?:NameServer)?|und|rtDescriptor)|p(?:e(?:cifierTest|ech(?:Recognizer|Synthesizer)|ll(?:Server|Checker))|litView)|e(?:cureTextField(?:Cell)?|t(?:Command)?|archField(?:Cell)?|rializer|gmentedC(?:ontrol|ell))|lider(?:Cell)?|avePanel)|H(?:ost|TTP(?:Cookie(?:Storage)?|URLResponse)|elpManager)|N(?:ib(?:Con(?:nector|trolConnector)|OutletConnector)?|otification(?:Center|Queue)?|u(?:ll|mber(?:Formatter)?)|etService(?:Browser)?|ameSpecifier)|C(?:ha(?:ngeSpelling|racterSet)|o(?:n(?:stantString|nection|trol(?:ler)?|ditionLock)|d(?:ing|er)|unt(?:Command|edSet)|pying|lor(?:Space|P(?:ick(?:ing(?:Custom|Default)|er)|anel)|Well|List)?|m(?:p(?:oundPredicate|arisonPredicate)|boBox(?:Cell)?))|u(?:stomImageRep|rsor)|IImageRep|ell|l(?:ipView|o(?:seCommand|neCommand)|assDescription)|a(?:ched(?:ImageRep|URLResponse)|lendar(?:Date)?)|reateCommand)|T(?:hread|ypesetter|ime(?:Zone|r)|o(?:olbar(?:Item(?:Validations)?)?|kenField(?:Cell)?)|ext(?:Block|Storage|Container|Tab(?:le(?:Block)?)?|Input|View|Field(?:Cell)?|List|Attachment(?:Cell)?)?|a(?:sk|b(?:le(?:Header(?:Cell|View)|Column|View)|View(?:Item)?))|reeController)|I(?:n(?:dex(?:S(?:pecifier|et)|Path)|put(?:Manager|S(?:tream|erv(?:iceProvider|er(?:MouseTracker)?)))|vocation)|gnoreMisspelledWords|mage(?:Rep|Cell|View)?)|O(?:ut(?:putStream|lineView)|pen(?:GL(?:Context|Pixel(?:Buffer|Format)|View)|Panel)|bj(?:CTypeSerializationCallBack|ect(?:Controller)?))|D(?:i(?:st(?:antObject(?:Request)?|ributed(?:NotificationCenter|Lock))|ctionary|rectoryEnumerator)|ocument(?:Controller)?|e(?:serializer|cimalNumber(?:Behaviors|Handler)?|leteCommand)|at(?:e(?:Components|Picker(?:Cell)?|Formatter)?|a)|ra(?:wer|ggingInfo))|U(?:ser(?:InterfaceValidations|Defaults(?:Controller)?)|RL(?:Re(?:sponse|quest)|Handle(?:Client)?|C(?:onnection|ache|redential(?:Storage)?)|Download(?:Delegate)?|Prot(?:ocol(?:Client)?|ectionSpace)|AuthenticationChallenge(?:Sender)?)?|n(?:iqueIDSpecifier|doManager|archiver))|P(?:ipe|o(?:sitionalSpecifier|pUpButton(?:Cell)?|rt(?:Message|NameServer|Coder)?)|ICTImageRep|ersistentDocument|DFImageRep|a(?:steboard|nel|ragraphStyle|geLayout)|r(?:int(?:Info|er|Operation|Panel)|o(?:cessInfo|tocolChecker|perty(?:Specifier|ListSerialization)|gressIndicator|xy)|edicate))|E(?:numerator|vent|PSImageRep|rror|x(?:ception|istsCommand|pression))|V(?:iew(?:Animation)?|al(?:idated(?:ToobarItem|UserInterfaceItem)|ue(?:Transformer)?))|Keyed(?:Unarchiver|Archiver)|Qui(?:ckDrawView|tCommand)|F(?:ile(?:Manager|Handle|Wrapper)|o(?:nt(?:Manager|Descriptor|Panel)?|rm(?:Cell|atter)))|W(?:hoseSpecifier|indow(?:Controller)?|orkspace)|L(?:o(?:c(?:k(?:ing)?|ale)|gicalTest)|evelIndicator(?:Cell)?|ayoutManager)|A(?:ssertionHandler|nimation|ctionCell|ttributedString|utoreleasePool|TSTypesetter|ppl(?:ication|e(?:Script|Event(?:Manager|Descriptor)))|ffineTransform|lert|r(?:chiver|ray(?:Controller)?))))(?:\\b)" - }, - { - token: ["support.class.quartz"], - regex: "(?:\\b)(C(?:I(?:Sampler|Co(?:ntext|lor)|Image(?:Accumulator)?|PlugIn(?:Registration)?|Vector|Kernel|Filter(?:Generator|Shape)?)|A(?:Renderer|MediaTiming(?:Function)?|BasicAnimation|ScrollLayer|Constraint(?:LayoutManager)?|T(?:iledLayer|extLayer|rans(?:ition|action))|OpenGLLayer|PropertyAnimation|KeyframeAnimation|Layer|A(?:nimation(?:Group)?|ction))))(?:\\b)" - }, - { - token: ["support.type.quartz"], - regex: "(?:\\b)(C(?:G(?:Float|Point|Size|Rect)|IFormat|AConstraintAttribute))(?:\\b)" - }, - { - token: ["support.type.cocoa"], - regex: "(?:\\b)(NS(?:R(?:ect(?:Edge)?|ange)|G(?:lyph(?:Relation|LayoutMode)?|radientType)|M(?:odalSession|a(?:trixMode|p(?:Table|Enumerator)))|B(?:itmapImageFileType|orderType|uttonType|ezelStyle|ackingStoreType|rowserColumnResizingType)|S(?:cr(?:oll(?:er(?:Part|Arrow)|ArrowPosition)|eenAuxiliaryOpaque)|tringEncoding|ize|ocketNativeHandle|election(?:Granularity|Direction|Affinity)|wapped(?:Double|Float)|aveOperationType)|Ha(?:sh(?:Table|Enumerator)|ndler(?:2)?)|C(?:o(?:ntrol(?:Size|Tint)|mp(?:ositingOperation|arisonResult))|ell(?:State|Type|ImagePosition|Attribute))|T(?:hreadPrivate|ypesetterGlyphInfo|i(?:ckMarkPosition|tlePosition|meInterval)|o(?:ol(?:TipTag|bar(?:SizeMode|DisplayMode))|kenStyle)|IFFCompression|ext(?:TabType|Alignment)|ab(?:State|leViewDropOperation|ViewType)|rackingRectTag)|ImageInterpolation|Zone|OpenGL(?:ContextAuxiliary|PixelFormatAuxiliary)|D(?:ocumentChangeType|atePickerElementFlags|ra(?:werState|gOperation))|UsableScrollerParts|P(?:oint|r(?:intingPageOrder|ogressIndicator(?:Style|Th(?:ickness|readInfo))))|EventType|KeyValueObservingOptions|Fo(?:nt(?:SymbolicTraits|TraitMask|Action)|cusRingType)|W(?:indow(?:OrderingMode|Depth)|orkspace(?:IconCreationOptions|LaunchOptions)|ritingDirection)|L(?:ineBreakMode|ayout(?:Status|Direction))|A(?:nimation(?:Progress|Effect)|ppl(?:ication(?:TerminateReply|DelegateReply|PrintReply)|eEventManagerSuspensionID)|ffineTransformStruct|lertStyle)))(?:\\b)" - }, - { - token: ["support.constant.cocoa"], - regex: "(?:\\b)(NS(?:NotFound|Ordered(?:Ascending|Descending|Same)))(?:\\b)" - }, - { - token: ["support.constant.notification.cocoa.leopard"], - regex: "(?:\\b)(NS(?:MenuDidBeginTracking|ViewDidUpdateTrackingAreas)?Notification)(?:\\b)" - }, - { - token: ["support.constant.notification.cocoa"], - regex: "(?:\\b)(NS(?:Menu(?:Did(?:RemoveItem|SendAction|ChangeItem|EndTracking|AddItem)|WillSendAction)|S(?:ystemColorsDidChange|plitView(?:DidResizeSubviews|WillResizeSubviews))|C(?:o(?:nt(?:extHelpModeDid(?:Deactivate|Activate)|rolT(?:intDidChange|extDid(?:BeginEditing|Change|EndEditing)))|lor(?:PanelColorDidChange|ListDidChange)|mboBox(?:Selection(?:IsChanging|DidChange)|Will(?:Dismiss|PopUp)))|lassDescriptionNeededForClass)|T(?:oolbar(?:DidRemoveItem|WillAddItem)|ext(?:Storage(?:DidProcessEditing|WillProcessEditing)|Did(?:BeginEditing|Change|EndEditing)|View(?:DidChange(?:Selection|TypingAttributes)|WillChangeNotifyingTextView))|ableView(?:Selection(?:IsChanging|DidChange)|ColumnDid(?:Resize|Move)))|ImageRepRegistryDidChange|OutlineView(?:Selection(?:IsChanging|DidChange)|ColumnDid(?:Resize|Move)|Item(?:Did(?:Collapse|Expand)|Will(?:Collapse|Expand)))|Drawer(?:Did(?:Close|Open)|Will(?:Close|Open))|PopUpButton(?:CellWillPopUp|WillPopUp)|View(?:GlobalFrameDidChange|BoundsDidChange|F(?:ocusDidChange|rameDidChange))|FontSetChanged|W(?:indow(?:Did(?:Resi(?:ze|gn(?:Main|Key))|M(?:iniaturize|ove)|Become(?:Main|Key)|ChangeScreen(?:|Profile)|Deminiaturize|Update|E(?:ndSheet|xpose))|Will(?:M(?:iniaturize|ove)|BeginSheet|Close))|orkspace(?:SessionDid(?:ResignActive|BecomeActive)|Did(?:Mount|TerminateApplication|Unmount|PerformFileOperation|Wake|LaunchApplication)|Will(?:Sleep|Unmount|PowerOff|LaunchApplication)))|A(?:ntialiasThresholdChanged|ppl(?:ication(?:Did(?:ResignActive|BecomeActive|Hide|ChangeScreenParameters|U(?:nhide|pdate)|FinishLaunching)|Will(?:ResignActive|BecomeActive|Hide|Terminate|U(?:nhide|pdate)|FinishLaunching))|eEventManagerWillProcessFirstEvent)))Notification)(?:\\b)" - }, - { - token: ["support.constant.cocoa.leopard"], - regex: "(?:\\b)(NS(?:RuleEditor(?:RowType(?:Simple|Compound)|NestingMode(?:Si(?:ngle|mple)|Compound|List))|GradientDraws(?:BeforeStartingLocation|AfterEndingLocation)|M(?:inusSetExpressionType|a(?:chPortDeallocate(?:ReceiveRight|SendRight|None)|pTable(?:StrongMemory|CopyIn|ZeroingWeakMemory|ObjectPointerPersonality)))|B(?:oxCustom|undleExecutableArchitecture(?:X86|I386|PPC(?:64)?)|etweenPredicateOperatorType|ackgroundStyle(?:Raised|Dark|L(?:ight|owered)))|S(?:tring(?:DrawingTruncatesLastVisibleLine|EncodingConversion(?:ExternalRepresentation|AllowLossy))|ubqueryExpressionType|p(?:e(?:ech(?:SentenceBoundary|ImmediateBoundary|WordBoundary)|llingState(?:GrammarFlag|SpellingFlag))|litViewDividerStyleThi(?:n|ck))|e(?:rvice(?:RequestTimedOutError|M(?:iscellaneousError|alformedServiceDictionaryError)|InvalidPasteboardDataError|ErrorM(?:inimum|aximum)|Application(?:NotFoundError|LaunchFailedError))|gmentStyle(?:Round(?:Rect|ed)|SmallSquare|Capsule|Textured(?:Rounded|Square)|Automatic)))|H(?:UDWindowMask|ashTable(?:StrongMemory|CopyIn|ZeroingWeakMemory|ObjectPointerPersonality))|N(?:oModeColorPanel|etServiceNoAutoRename)|C(?:hangeRedone|o(?:ntainsPredicateOperatorType|l(?:orRenderingIntent(?:RelativeColorimetric|Saturation|Default|Perceptual|AbsoluteColorimetric)|lectorDisabledOption))|ellHit(?:None|ContentArea|TrackableArea|EditableTextArea))|T(?:imeZoneNameStyle(?:S(?:hort(?:Standard|DaylightSaving)|tandard)|DaylightSaving)|extFieldDatePickerStyle|ableViewSelectionHighlightStyle(?:Regular|SourceList)|racking(?:Mouse(?:Moved|EnteredAndExited)|CursorUpdate|InVisibleRect|EnabledDuringMouseDrag|A(?:ssumeInside|ctive(?:In(?:KeyWindow|ActiveApp)|WhenFirstResponder|Always))))|I(?:n(?:tersectSetExpressionType|dexedColorSpaceModel)|mageScale(?:None|Proportionally(?:Down|UpOrDown)|AxesIndependently))|Ope(?:nGLPFAAllowOfflineRenderers|rationQueue(?:DefaultMaxConcurrentOperationCount|Priority(?:High|Normal|Very(?:High|Low)|Low)))|D(?:iacriticInsensitiveSearch|ownloadsDirectory)|U(?:nionSetExpressionType|TF(?:16(?:BigEndianStringEncoding|StringEncoding|LittleEndianStringEncoding)|32(?:BigEndianStringEncoding|StringEncoding|LittleEndianStringEncoding)))|P(?:ointerFunctions(?:Ma(?:chVirtualMemory|llocMemory)|Str(?:ongMemory|uctPersonality)|C(?:StringPersonality|opyIn)|IntegerPersonality|ZeroingWeakMemory|O(?:paque(?:Memory|Personality)|bjectP(?:ointerPersonality|ersonality)))|at(?:hStyle(?:Standard|NavigationBar|PopUp)|ternColorSpaceModel)|rintPanelShows(?:Scaling|Copies|Orientation|P(?:a(?:perSize|ge(?:Range|SetupAccessory))|review)))|Executable(?:RuntimeMismatchError|NotLoadableError|ErrorM(?:inimum|aximum)|L(?:inkError|oadError)|ArchitectureMismatchError)|KeyValueObservingOption(?:Initial|Prior)|F(?:i(?:ndPanelSubstringMatchType(?:StartsWith|Contains|EndsWith|FullWord)|leRead(?:TooLargeError|UnknownStringEncodingError))|orcedOrderingSearch)|Wi(?:ndow(?:BackingLocation(?:MainMemory|Default|VideoMemory)|Sharing(?:Read(?:Only|Write)|None)|CollectionBehavior(?:MoveToActiveSpace|CanJoinAllSpaces|Default))|dthInsensitiveSearch)|AggregateExpressionType))(?:\\b)" - }, - { - token: ["support.constant.cocoa"], - regex: "(?:\\b)(NS(?:R(?:GB(?:ModeColorPanel|ColorSpaceModel)|ight(?:Mouse(?:D(?:own(?:Mask)?|ragged(?:Mask)?)|Up(?:Mask)?)|T(?:ext(?:Movement|Alignment)|ab(?:sBezelBorder|StopType))|ArrowFunctionKey)|ound(?:RectBezelStyle|Bankers|ed(?:BezelStyle|TokenStyle|DisclosureBezelStyle)|Down|Up|Plain|Line(?:CapStyle|JoinStyle))|un(?:StoppedResponse|ContinuesResponse|AbortedResponse)|e(?:s(?:izableWindowMask|et(?:CursorRectsRunLoopOrdering|FunctionKey))|ce(?:ssedBezelStyle|iver(?:sCantHandleCommandScriptError|EvaluationScriptError))|turnTextMovement|doFunctionKey|quiredArgumentsMissingScriptError|l(?:evancyLevelIndicatorStyle|ative(?:Before|After))|gular(?:SquareBezelStyle|ControlSize)|moveTraitFontAction)|a(?:n(?:domSubelement|geDateMode)|tingLevelIndicatorStyle|dio(?:ModeMatrix|Button)))|G(?:IFFileType|lyph(?:Below|Inscribe(?:B(?:elow|ase)|Over(?:strike|Below)|Above)|Layout(?:WithPrevious|A(?:tAPoint|gainstAPoint))|A(?:ttribute(?:BidiLevel|Soft|Inscribe|Elastic)|bove))|r(?:ooveBorder|eaterThan(?:Comparison|OrEqualTo(?:Comparison|PredicateOperatorType)|PredicateOperatorType)|a(?:y(?:ModeColorPanel|ColorSpaceModel)|dient(?:None|Con(?:cave(?:Strong|Weak)|vex(?:Strong|Weak)))|phiteControlTint)))|XML(?:N(?:o(?:tationDeclarationKind|de(?:CompactEmptyElement|IsCDATA|OptionsNone|Use(?:SingleQuotes|DoubleQuotes)|Pre(?:serve(?:NamespaceOrder|C(?:haracterReferences|DATA)|DTD|Prefixes|E(?:ntities|mptyElements)|Quotes|Whitespace|A(?:ttributeOrder|ll))|ttyPrint)|ExpandEmptyElement))|amespaceKind)|CommentKind|TextKind|InvalidKind|D(?:ocument(?:X(?:MLKind|HTMLKind|Include)|HTMLKind|T(?:idy(?:XML|HTML)|extKind)|IncludeContentTypeDeclaration|Validate|Kind)|TDKind)|P(?:arser(?:GTRequiredError|XMLDeclNot(?:StartedError|FinishedError)|Mi(?:splaced(?:XMLDeclarationError|CDATAEndStringError)|xedContentDeclNot(?:StartedError|FinishedError))|S(?:t(?:andaloneValueError|ringNot(?:StartedError|ClosedError))|paceRequiredError|eparatorRequiredError)|N(?:MTOKENRequiredError|o(?:t(?:ationNot(?:StartedError|FinishedError)|WellBalancedError)|DTDError)|amespaceDeclarationError|AMERequiredError)|C(?:haracterRef(?:In(?:DTDError|PrologError|EpilogError)|AtEOFError)|o(?:nditionalSectionNot(?:StartedError|FinishedError)|mment(?:NotFinishedError|ContainsDoubleHyphenError))|DATANotFinishedError)|TagNameMismatchError|In(?:ternalError|valid(?:HexCharacterRefError|C(?:haracter(?:RefError|InEntityError|Error)|onditionalSectionError)|DecimalCharacterRefError|URIError|Encoding(?:NameError|Error)))|OutOfMemoryError|D(?:ocumentStartError|elegateAbortedParseError|OCTYPEDeclNotFinishedError)|U(?:RI(?:RequiredError|FragmentError)|n(?:declaredEntityError|parsedEntityError|knownEncodingError|finishedTagError))|P(?:CDATARequiredError|ublicIdentifierRequiredError|arsedEntityRef(?:MissingSemiError|NoNameError|In(?:Internal(?:SubsetError|Error)|PrologError|EpilogError)|AtEOFError)|r(?:ocessingInstructionNot(?:StartedError|FinishedError)|ematureDocumentEndError))|E(?:n(?:codingNotSupportedError|tity(?:Ref(?:In(?:DTDError|PrologError|EpilogError)|erence(?:MissingSemiError|WithoutNameError)|LoopError|AtEOFError)|BoundaryError|Not(?:StartedError|FinishedError)|Is(?:ParameterError|ExternalError)|ValueRequiredError))|qualExpectedError|lementContentDeclNot(?:StartedError|FinishedError)|xt(?:ernalS(?:tandaloneEntityError|ubsetNotFinishedError)|raContentError)|mptyDocumentError)|L(?:iteralNot(?:StartedError|FinishedError)|T(?:RequiredError|SlashRequiredError)|essThanSymbolInAttributeError)|Attribute(?:RedefinedError|HasNoValueError|Not(?:StartedError|FinishedError)|ListNot(?:StartedError|FinishedError)))|rocessingInstructionKind)|E(?:ntity(?:GeneralKind|DeclarationKind|UnparsedKind|P(?:ar(?:sedKind|ameterKind)|redefined))|lement(?:Declaration(?:MixedKind|UndefinedKind|E(?:lementKind|mptyKind)|Kind|AnyKind)|Kind))|Attribute(?:N(?:MToken(?:sKind|Kind)|otationKind)|CDATAKind|ID(?:Ref(?:sKind|Kind)|Kind)|DeclarationKind|En(?:tit(?:yKind|iesKind)|umerationKind)|Kind))|M(?:i(?:n(?:XEdge|iaturizableWindowMask|YEdge|uteCalendarUnit)|terLineJoinStyle|ddleSubelement|xedState)|o(?:nthCalendarUnit|deSwitchFunctionKey|use(?:Moved(?:Mask)?|E(?:ntered(?:Mask)?|ventSubtype|xited(?:Mask)?))|veToBezierPathElement|mentary(?:ChangeButton|Push(?:Button|InButton)|Light(?:Button)?))|enuFunctionKey|a(?:c(?:intoshInterfaceStyle|OSRomanStringEncoding)|tchesPredicateOperatorType|ppedRead|x(?:XEdge|YEdge))|ACHOperatingSystem)|B(?:MPFileType|o(?:ttomTabsBezelBorder|ldFontMask|rderlessWindowMask|x(?:Se(?:condary|parator)|OldStyle|Primary))|uttLineCapStyle|e(?:zelBorder|velLineJoinStyle|low(?:Bottom|Top)|gin(?:sWith(?:Comparison|PredicateOperatorType)|FunctionKey))|lueControlTint|ack(?:spaceCharacter|tabTextMovement|ingStore(?:Retained|Buffered|Nonretained)|TabCharacter|wardsSearch|groundTab)|r(?:owser(?:NoColumnResizing|UserColumnResizing|AutoColumnResizing)|eakFunctionKey))|S(?:h(?:ift(?:JISStringEncoding|KeyMask)|ow(?:ControlGlyphs|InvisibleGlyphs)|adowlessSquareBezelStyle)|y(?:s(?:ReqFunctionKey|tem(?:D(?:omainMask|efined(?:Mask)?)|FunctionKey))|mbolStringEncoding)|c(?:a(?:nnedOption|le(?:None|ToFit|Proportionally))|r(?:oll(?:er(?:NoPart|Increment(?:Page|Line|Arrow)|Decrement(?:Page|Line|Arrow)|Knob(?:Slot)?|Arrows(?:M(?:inEnd|axEnd)|None|DefaultSetting))|Wheel(?:Mask)?|LockFunctionKey)|eenChangedEventType))|t(?:opFunctionKey|r(?:ingDrawing(?:OneShot|DisableScreenFontSubstitution|Uses(?:DeviceMetrics|FontLeading|LineFragmentOrigin))|eam(?:Status(?:Reading|NotOpen|Closed|Open(?:ing)?|Error|Writing|AtEnd)|Event(?:Has(?:BytesAvailable|SpaceAvailable)|None|OpenCompleted|E(?:ndEncountered|rrorOccurred)))))|i(?:ngle(?:DateMode|UnderlineStyle)|ze(?:DownFontAction|UpFontAction))|olarisOperatingSystem|unOSOperatingSystem|pecialPageOrder|e(?:condCalendarUnit|lect(?:By(?:Character|Paragraph|Word)|i(?:ng(?:Next|Previous)|onAffinity(?:Downstream|Upstream))|edTab|FunctionKey)|gmentSwitchTracking(?:Momentary|Select(?:One|Any)))|quareLineCapStyle|witchButton|ave(?:ToOperation|Op(?:tions(?:Yes|No|Ask)|eration)|AsOperation)|mall(?:SquareBezelStyle|C(?:ontrolSize|apsFontMask)|IconButtonBezelStyle))|H(?:ighlightModeMatrix|SBModeColorPanel|o(?:ur(?:Minute(?:SecondDatePickerElementFlag|DatePickerElementFlag)|CalendarUnit)|rizontalRuler|meFunctionKey)|TTPCookieAcceptPolicy(?:Never|OnlyFromMainDocumentDomain|Always)|e(?:lp(?:ButtonBezelStyle|KeyMask|FunctionKey)|avierFontAction)|PUXOperatingSystem)|Year(?:MonthDa(?:yDatePickerElementFlag|tePickerElementFlag)|CalendarUnit)|N(?:o(?:n(?:StandardCharacterSetFontMask|ZeroWindingRule|activatingPanelMask|LossyASCIIStringEncoding)|Border|t(?:ification(?:SuspensionBehavior(?:Hold|Coalesce|D(?:eliverImmediately|rop))|NoCoalescing|CoalescingOn(?:Sender|Name)|DeliverImmediately|PostToAllSessions)|PredicateType|EqualToPredicateOperatorType)|S(?:cr(?:iptError|ollerParts)|ubelement|pecifierError)|CellMask|T(?:itle|opLevelContainersSpecifierError|abs(?:BezelBorder|NoBorder|LineBorder))|I(?:nterfaceStyle|mage)|UnderlineStyle|FontChangeAction)|u(?:ll(?:Glyph|CellType)|m(?:eric(?:Search|PadKeyMask)|berFormatter(?:Round(?:Half(?:Down|Up|Even)|Ceiling|Down|Up|Floor)|Behavior(?:10|Default)|S(?:cientificStyle|pellOutStyle)|NoStyle|CurrencyStyle|DecimalStyle|P(?:ercentStyle|ad(?:Before(?:Suffix|Prefix)|After(?:Suffix|Prefix))))))|e(?:t(?:Services(?:BadArgumentError|NotFoundError|C(?:ollisionError|ancelledError)|TimeoutError|InvalidError|UnknownError|ActivityInProgress)|workDomainMask)|wlineCharacter|xt(?:StepInterfaceStyle|FunctionKey))|EXTSTEPStringEncoding|a(?:t(?:iveShortGlyphPacking|uralTextAlignment)|rrowFontMask))|C(?:hange(?:ReadOtherContents|GrayCell(?:Mask)?|BackgroundCell(?:Mask)?|Cleared|Done|Undone|Autosaved)|MYK(?:ModeColorPanel|ColorSpaceModel)|ircular(?:BezelStyle|Slider)|o(?:n(?:stantValueExpressionType|t(?:inuousCapacityLevelIndicatorStyle|entsCellMask|ain(?:sComparison|erSpecifierError)|rol(?:Glyph|KeyMask))|densedFontMask)|lor(?:Panel(?:RGBModeMask|GrayModeMask|HSBModeMask|C(?:MYKModeMask|olorListModeMask|ustomPaletteModeMask|rayonModeMask)|WheelModeMask|AllModesMask)|ListModeColorPanel)|reServiceDirectory|m(?:p(?:osite(?:XOR|Source(?:In|O(?:ut|ver)|Atop)|Highlight|C(?:opy|lear)|Destination(?:In|O(?:ut|ver)|Atop)|Plus(?:Darker|Lighter))|ressedFontMask)|mandKeyMask))|u(?:stom(?:SelectorPredicateOperatorType|PaletteModeColorPanel)|r(?:sor(?:Update(?:Mask)?|PointingDevice)|veToBezierPathElement))|e(?:nterT(?:extAlignment|abStopType)|ll(?:State|H(?:ighlighted|as(?:Image(?:Horizontal|OnLeftOrBottom)|OverlappingImage))|ChangesContents|Is(?:Bordered|InsetButton)|Disabled|Editable|LightsBy(?:Gray|Background|Contents)|AllowsMixedState))|l(?:ipPagination|o(?:s(?:ePathBezierPathElement|ableWindowMask)|ckAndCalendarDatePickerStyle)|ear(?:ControlTint|DisplayFunctionKey|LineFunctionKey))|a(?:seInsensitive(?:Search|PredicateOption)|n(?:notCreateScriptCommandError|cel(?:Button|TextMovement))|chesDirectory|lculation(?:NoError|Overflow|DivideByZero|Underflow|LossOfPrecision)|rriageReturnCharacter)|r(?:itical(?:Request|AlertStyle)|ayonModeColorPanel))|T(?:hick(?:SquareBezelStyle|erSquareBezelStyle)|ypesetter(?:Behavior|HorizontalTabAction|ContainerBreakAction|ZeroAdvancementAction|OriginalBehavior|ParagraphBreakAction|WhitespaceAction|L(?:ineBreakAction|atestBehavior))|i(?:ckMark(?:Right|Below|Left|Above)|tledWindowMask|meZoneDatePickerElementFlag)|o(?:olbarItemVisibilityPriority(?:Standard|High|User|Low)|pTabsBezelBorder|ggleButton)|IFF(?:Compression(?:N(?:one|EXT)|CCITTFAX(?:3|4)|OldJPEG|JPEG|PackBits|LZW)|FileType)|e(?:rminate(?:Now|Cancel|Later)|xt(?:Read(?:InapplicableDocumentTypeError|WriteErrorM(?:inimum|aximum))|Block(?:M(?:i(?:nimum(?:Height|Width)|ddleAlignment)|a(?:rgin|ximum(?:Height|Width)))|B(?:o(?:ttomAlignment|rder)|aselineAlignment)|Height|TopAlignment|P(?:ercentageValueType|adding)|Width|AbsoluteValueType)|StorageEdited(?:Characters|Attributes)|CellType|ured(?:RoundedBezelStyle|BackgroundWindowMask|SquareBezelStyle)|Table(?:FixedLayoutAlgorithm|AutomaticLayoutAlgorithm)|Field(?:RoundedBezel|SquareBezel|AndStepperDatePickerStyle)|WriteInapplicableDocumentTypeError|ListPrependEnclosingMarker))|woByteGlyphPacking|ab(?:Character|TextMovement|le(?:tP(?:oint(?:Mask|EventSubtype)?|roximity(?:Mask|EventSubtype)?)|Column(?:NoResizing|UserResizingMask|AutoresizingMask)|View(?:ReverseSequentialColumnAutoresizingStyle|GridNone|S(?:olid(?:HorizontalGridLineMask|VerticalGridLineMask)|equentialColumnAutoresizingStyle)|NoColumnAutoresizing|UniformColumnAutoresizingStyle|FirstColumnOnlyAutoresizingStyle|LastColumnOnlyAutoresizingStyle)))|rackModeMatrix)|I(?:n(?:sert(?:CharFunctionKey|FunctionKey|LineFunctionKey)|t(?:Type|ernalS(?:criptError|pecifierError))|dexSubelement|validIndexSpecifierError|formational(?:Request|AlertStyle)|PredicateOperatorType)|talicFontMask|SO(?:2022JPStringEncoding|Latin(?:1StringEncoding|2StringEncoding))|dentityMappingCharacterCollection|llegalTextMovement|mage(?:R(?:ight|ep(?:MatchesDevice|LoadStatus(?:ReadingHeader|Completed|InvalidData|Un(?:expectedEOF|knownType)|WillNeedAllData)))|Below|C(?:ellType|ache(?:BySize|Never|Default|Always))|Interpolation(?:High|None|Default|Low)|O(?:nly|verlaps)|Frame(?:Gr(?:oove|ayBezel)|Button|None|Photo)|L(?:oadStatus(?:ReadError|C(?:ompleted|ancelled)|InvalidData|UnexpectedEOF)|eft)|A(?:lign(?:Right|Bottom(?:Right|Left)?|Center|Top(?:Right|Left)?|Left)|bove)))|O(?:n(?:State|eByteGlyphPacking|OffButton|lyScrollerArrows)|ther(?:Mouse(?:D(?:own(?:Mask)?|ragged(?:Mask)?)|Up(?:Mask)?)|TextMovement)|SF1OperatingSystem|pe(?:n(?:GL(?:GO(?:Re(?:setLibrary|tainRenderers)|ClearFormatCache|FormatCacheSize)|PFA(?:R(?:obust|endererID)|M(?:inimumPolicy|ulti(?:sample|Screen)|PSafe|aximumPolicy)|BackingStore|S(?:creenMask|te(?:ncilSize|reo)|ingleRenderer|upersample|ample(?:s|Buffers|Alpha))|NoRecovery|C(?:o(?:lor(?:Size|Float)|mpliant)|losestPolicy)|OffScreen|D(?:oubleBuffer|epthSize)|PixelBuffer|VirtualScreenCount|FullScreen|Window|A(?:cc(?:umSize|elerated)|ux(?:Buffers|DepthStencil)|l(?:phaSize|lRenderers))))|StepUnicodeReservedBase)|rationNotSupportedForKeyS(?:criptError|pecifierError))|ffState|KButton|rPredicateType|bjC(?:B(?:itfield|oolType)|S(?:hortType|tr(?:ingType|uctType)|electorType)|NoType|CharType|ObjectType|DoubleType|UnionType|PointerType|VoidType|FloatType|Long(?:Type|longType)|ArrayType))|D(?:i(?:s(?:c(?:losureBezelStyle|reteCapacityLevelIndicatorStyle)|playWindowRunLoopOrdering)|acriticInsensitivePredicateOption|rect(?:Selection|PredicateModifier))|o(?:c(?:ModalWindowMask|ument(?:Directory|ationDirectory))|ubleType|wn(?:TextMovement|ArrowFunctionKey))|e(?:s(?:cendingPageOrder|ktopDirectory)|cimalTabStopType|v(?:ice(?:NColorSpaceModel|IndependentModifierFlagsMask)|eloper(?:Directory|ApplicationDirectory))|fault(?:ControlTint|TokenStyle)|lete(?:Char(?:acter|FunctionKey)|FunctionKey|LineFunctionKey)|moApplicationDirectory)|a(?:yCalendarUnit|teFormatter(?:MediumStyle|Behavior(?:10|Default)|ShortStyle|NoStyle|FullStyle|LongStyle))|ra(?:wer(?:Clos(?:ingState|edState)|Open(?:ingState|State))|gOperation(?:Generic|Move|None|Copy|Delete|Private|Every|Link|All)))|U(?:ser(?:CancelledError|D(?:irectory|omainMask)|FunctionKey)|RL(?:Handle(?:NotLoaded|Load(?:Succeeded|InProgress|Failed))|CredentialPersistence(?:None|Permanent|ForSession))|n(?:scaledWindowMask|cachedRead|i(?:codeStringEncoding|talicFontMask|fiedTitleAndToolbarWindowMask)|d(?:o(?:CloseGroupingRunLoopOrdering|FunctionKey)|e(?:finedDateComponent|rline(?:Style(?:Single|None|Thick|Double)|Pattern(?:Solid|D(?:ot|ash(?:Dot(?:Dot)?)?)))))|known(?:ColorSpaceModel|P(?:ointingDevice|ageOrder)|KeyS(?:criptError|pecifierError))|boldFontMask)|tilityWindowMask|TF8StringEncoding|p(?:dateWindowsRunLoopOrdering|TextMovement|ArrowFunctionKey))|J(?:ustifiedTextAlignment|PEG(?:2000FileType|FileType)|apaneseEUC(?:GlyphPacking|StringEncoding))|P(?:o(?:s(?:t(?:Now|erFontMask|WhenIdle|ASAP)|iti(?:on(?:Replace|Be(?:fore|ginning)|End|After)|ve(?:IntType|DoubleType|FloatType)))|pUp(?:NoArrow|ArrowAt(?:Bottom|Center))|werOffEventType|rtraitOrientation)|NGFileType|ush(?:InCell(?:Mask)?|OnPushOffButton)|e(?:n(?:TipMask|UpperSideMask|PointingDevice|LowerSideMask)|riodic(?:Mask)?)|P(?:S(?:caleField|tatus(?:Title|Field)|aveButton)|N(?:ote(?:Title|Field)|ame(?:Title|Field))|CopiesField|TitleField|ImageButton|OptionsButton|P(?:a(?:perFeedButton|ge(?:Range(?:To|From)|ChoiceMatrix))|reviewButton)|LayoutButton)|lainTextTokenStyle|a(?:useFunctionKey|ragraphSeparatorCharacter|ge(?:DownFunctionKey|UpFunctionKey))|r(?:int(?:ing(?:ReplyLater|Success|Cancelled|Failure)|ScreenFunctionKey|erTable(?:NotFound|OK|Error)|FunctionKey)|o(?:p(?:ertyList(?:XMLFormat|MutableContainers(?:AndLeaves)?|BinaryFormat|Immutable|OpenStepFormat)|rietaryStringEncoding)|gressIndicator(?:BarStyle|SpinningStyle|Preferred(?:SmallThickness|Thickness|LargeThickness|AquaThickness)))|e(?:ssedTab|vFunctionKey))|L(?:HeightForm|CancelButton|TitleField|ImageButton|O(?:KButton|rientationMatrix)|UnitsButton|PaperNameButton|WidthForm))|E(?:n(?:terCharacter|d(?:sWith(?:Comparison|PredicateOperatorType)|FunctionKey))|v(?:e(?:nOddWindingRule|rySubelement)|aluatedObjectExpressionType)|qualTo(?:Comparison|PredicateOperatorType)|ra(?:serPointingDevice|CalendarUnit|DatePickerElementFlag)|x(?:clude(?:10|QuickDrawElementsIconCreationOption)|pandedFontMask|ecuteFunctionKey))|V(?:i(?:ew(?:M(?:in(?:XMargin|YMargin)|ax(?:XMargin|YMargin))|HeightSizable|NotSizable|WidthSizable)|aPanelFontAction)|erticalRuler|a(?:lidationErrorM(?:inimum|aximum)|riableExpressionType))|Key(?:SpecifierEvaluationScriptError|Down(?:Mask)?|Up(?:Mask)?|PathExpressionType|Value(?:MinusSetMutation|SetSetMutation|Change(?:Re(?:placement|moval)|Setting|Insertion)|IntersectSetMutation|ObservingOption(?:New|Old)|UnionSetMutation|ValidationError))|QTMovie(?:NormalPlayback|Looping(?:BackAndForthPlayback|Playback))|F(?:1(?:1FunctionKey|7FunctionKey|2FunctionKey|8FunctionKey|3FunctionKey|9FunctionKey|4FunctionKey|5FunctionKey|FunctionKey|0FunctionKey|6FunctionKey)|7FunctionKey|i(?:nd(?:PanelAction(?:Replace(?:A(?:ndFind|ll(?:InSelection)?))?|S(?:howFindPanel|e(?:tFindString|lectAll(?:InSelection)?))|Next|Previous)|FunctionKey)|tPagination|le(?:Read(?:No(?:SuchFileError|PermissionError)|CorruptFileError|In(?:validFileNameError|applicableStringEncodingError)|Un(?:supportedSchemeError|knownError))|HandlingPanel(?:CancelButton|OKButton)|NoSuchFileError|ErrorM(?:inimum|aximum)|Write(?:NoPermissionError|In(?:validFileNameError|applicableStringEncodingError)|OutOfSpaceError|Un(?:supportedSchemeError|knownError))|LockingError)|xedPitchFontMask)|2(?:1FunctionKey|7FunctionKey|2FunctionKey|8FunctionKey|3FunctionKey|9FunctionKey|4FunctionKey|5FunctionKey|FunctionKey|0FunctionKey|6FunctionKey)|o(?:nt(?:Mo(?:noSpaceTrait|dernSerifsClass)|BoldTrait|S(?:ymbolicClass|criptsClass|labSerifsClass|ansSerifClass)|C(?:o(?:ndensedTrait|llectionApplicationOnlyMask)|larendonSerifsClass)|TransitionalSerifsClass|I(?:ntegerAdvancementsRenderingMode|talicTrait)|O(?:ldStyleSerifsClass|rnamentalsClass)|DefaultRenderingMode|U(?:nknownClass|IOptimizedTrait)|Panel(?:S(?:hadowEffectModeMask|t(?:andardModesMask|rikethroughEffectModeMask)|izeModeMask)|CollectionModeMask|TextColorEffectModeMask|DocumentColorEffectModeMask|UnderlineEffectModeMask|FaceModeMask|All(?:ModesMask|EffectsModeMask))|ExpandedTrait|VerticalTrait|F(?:amilyClassMask|reeformSerifsClass)|Antialiased(?:RenderingMode|IntegerAdvancementsRenderingMode))|cusRing(?:Below|Type(?:None|Default|Exterior)|Only|Above)|urByteGlyphPacking|rm(?:attingError(?:M(?:inimum|aximum))?|FeedCharacter))|8FunctionKey|unction(?:ExpressionType|KeyMask)|3(?:1FunctionKey|2FunctionKey|3FunctionKey|4FunctionKey|5FunctionKey|FunctionKey|0FunctionKey)|9FunctionKey|4FunctionKey|P(?:RevertButton|S(?:ize(?:Title|Field)|etButton)|CurrentField|Preview(?:Button|Field))|l(?:oat(?:ingPointSamplesBitmapFormat|Type)|agsChanged(?:Mask)?)|axButton|5FunctionKey|6FunctionKey)|W(?:heelModeColorPanel|indow(?:s(?:NTOperatingSystem|CP125(?:1StringEncoding|2StringEncoding|3StringEncoding|4StringEncoding|0StringEncoding)|95(?:InterfaceStyle|OperatingSystem))|M(?:iniaturizeButton|ovedEventType)|Below|CloseButton|ToolbarButton|ZoomButton|Out|DocumentIconButton|ExposedEventType|Above)|orkspaceLaunch(?:NewInstance|InhibitingBackgroundOnly|Default|PreferringClassic|WithoutA(?:ctivation|ddingToRecents)|A(?:sync|nd(?:Hide(?:Others)?|Print)|llowingClassicStartup))|eek(?:day(?:CalendarUnit|OrdinalCalendarUnit)|CalendarUnit)|a(?:ntsBidiLevels|rningAlertStyle)|r(?:itingDirection(?:RightToLeft|Natural|LeftToRight)|apCalendarComponents))|L(?:i(?:stModeMatrix|ne(?:Moves(?:Right|Down|Up|Left)|B(?:order|reakBy(?:C(?:harWrapping|lipping)|Truncating(?:Middle|Head|Tail)|WordWrapping))|S(?:eparatorCharacter|weep(?:Right|Down|Up|Left))|ToBezierPathElement|DoesntMove|arSlider)|teralSearch|kePredicateOperatorType|ghterFontAction|braryDirectory)|ocalDomainMask|e(?:ssThan(?:Comparison|OrEqualTo(?:Comparison|PredicateOperatorType)|PredicateOperatorType)|ft(?:Mouse(?:D(?:own(?:Mask)?|ragged(?:Mask)?)|Up(?:Mask)?)|T(?:ext(?:Movement|Alignment)|ab(?:sBezelBorder|StopType))|ArrowFunctionKey))|a(?:yout(?:RightToLeft|NotDone|CantFit|OutOfGlyphs|Done|LeftToRight)|ndscapeOrientation)|ABColorSpaceModel)|A(?:sc(?:iiWithDoubleByteEUCGlyphPacking|endingPageOrder)|n(?:y(?:Type|PredicateModifier|EventMask)|choredSearch|imation(?:Blocking|Nonblocking(?:Threaded)?|E(?:ffect(?:DisappearingItemDefault|Poof)|ase(?:In(?:Out)?|Out))|Linear)|dPredicateType)|t(?:Bottom|tachmentCharacter|omicWrite|Top)|SCIIStringEncoding|d(?:obe(?:GB1CharacterCollection|CNS1CharacterCollection|Japan(?:1CharacterCollection|2CharacterCollection)|Korea1CharacterCollection)|dTraitFontAction|minApplicationDirectory)|uto(?:saveOperation|Pagination)|pp(?:lication(?:SupportDirectory|D(?:irectory|e(?:fined(?:Mask)?|legateReply(?:Success|Cancel|Failure)|activatedEventType))|ActivatedEventType)|KitDefined(?:Mask)?)|l(?:ternateKeyMask|pha(?:ShiftKeyMask|NonpremultipliedBitmapFormat|FirstBitmapFormat)|ert(?:SecondButtonReturn|ThirdButtonReturn|OtherReturn|DefaultReturn|ErrorReturn|FirstButtonReturn|AlternateReturn)|l(?:ScrollerParts|DomainsMask|PredicateModifier|LibrariesDirectory|ApplicationsDirectory))|rgument(?:sWrongScriptError|EvaluationScriptError)|bove(?:Bottom|Top)|WTEventType)))(?:\\b)" - }, - { - token: "support.function.C99.c", - regex: C_Highlight_File.cFunctions - }, - { - token : cObj.getKeywords(), - regex : "[a-zA-Z_$][a-zA-Z0-9_$]*\\b" - }, - { - token: "punctuation.section.scope.begin.objc", - regex: "\\[", - next: "bracketed_content" - }, - { - token: "meta.function.objc", - regex: "^(?:-|\\+)\\s*" - } - ], - "constant_NSString": [ - { - token: "constant.character.escape.objc", - regex: escapedConstRe - }, - { - token: "invalid.illegal.unknown-escape.objc", - regex: "\\\\." - }, - { - token: "string", - regex: '[^"\\\\]+' - }, - { - token: "punctuation.definition.string.end", - regex: "\"", - next: "start" - } - ], - "protocol_list": [ - { - token: "punctuation.section.scope.end.objc", - regex: ">", - next: "start" - }, - { - token: "support.other.protocol.objc", - regex: "\bNS(?:GlyphStorage|M(?:utableCopying|enuItem)|C(?:hangeSpelling|o(?:ding|pying|lorPicking(?:Custom|Default)))|T(?:oolbarItemValidations|ext(?:Input|AttachmentCell))|I(?:nputServ(?:iceProvider|erMouseTracker)|gnoreMisspelledWords)|Obj(?:CTypeSerializationCallBack|ect)|D(?:ecimalNumberBehaviors|raggingInfo)|U(?:serInterfaceValidations|RL(?:HandleClient|DownloadDelegate|ProtocolClient|AuthenticationChallengeSender))|Validated(?:ToobarItem|UserInterfaceItem)|Locking)\b" - } - ], - "selectors": [ - { - token: "support.function.any-method.name-of-parameter.objc", - regex: "\\b(?:[a-zA-Z_:][\\w]*)+" - }, - { - token: "punctuation", - regex: "\\)", - next: "start" - } - ], - "bracketed_content": [ - { - token: "punctuation.section.scope.end.objc", - regex: "\]", - next: "start" - }, - { - token: ["support.function.any-method.objc"], - regex: "(?:predicateWithFormat:| NSPredicate predicateWithFormat:)", - next: "start" - }, - { - token: "support.function.any-method.objc", - regex: "\\w+(?::|(?=\]))", - next: "start" - } - ], - "bracketed_strings": [ - { - token: "punctuation.section.scope.end.objc", - regex: "\]", - next: "start" - }, - { - token: "keyword.operator.logical.predicate.cocoa", - regex: "\\b(?:AND|OR|NOT|IN)\\b" - }, - { - token: ["invalid.illegal.unknown-method.objc", "punctuation.separator.arguments.objc"], - regex: "\\b(\w+)(:)" - }, - { - regex: "\\b(?:ALL|ANY|SOME|NONE)\\b", - token: "constant.language.predicate.cocoa" - }, - { - regex: "\\b(?:NULL|NIL|SELF|TRUE|YES|FALSE|NO|FIRST|LAST|SIZE)\\b", - token: "constant.language.predicate.cocoa" - }, - { - regex: "\\b(?:MATCHES|CONTAINS|BEGINSWITH|ENDSWITH|BETWEEN)\\b", - token: "keyword.operator.comparison.predicate.cocoa" - }, - { - regex: "\\bC(?:ASEINSENSITIVE|I)\\b", - token: "keyword.other.modifier.predicate.cocoa" - }, - { - regex: "\\b(?:ANYKEY|SUBQUERY|CAST|TRUEPREDICATE|FALSEPREDICATE)\\b", - token: "keyword.other.predicate.cocoa" - }, - { - regex: escapedConstRe, - token: "constant.character.escape.objc" - }, - { - regex: "\\\\.", - token: "invalid.illegal.unknown-escape.objc" - }, - { - token: "string", - regex: '[^"\\\\]' - }, - { - token: "punctuation.definition.string.end.objc", - regex: "\"", - next: "predicates" - } - ], - "comment" : [ - { - token : "comment", // closing comment - regex : ".*?\\*\\/", - next : "start" - }, { - token : "comment", // comment spanning whole line - regex : ".+" - } - ], - "methods" : [ - { - token : "meta.function.objc", - regex : "(?=\\{|#)|;", - next : "start" - } - ] -} - for (var r in cRules) { - if (this.$rules[r]) { - if (this.$rules[r].push) - this.$rules[r].push.apply(this.$rules[r], cRules[r]); - } else { - this.$rules[r] = cRules[r]; - } - } - - this.$rules.bracketed_content = this.$rules.bracketed_content.concat( - this.$rules.start, specialVariables - ); - - this.embedRules(DocCommentHighlightRules, "doc-", - [ DocCommentHighlightRules.getEndRule("start") ]); -}; - -oop.inherits(ObjectiveCHighlightRules, CHighlightRules); - -exports.ObjectiveCHighlightRules = ObjectiveCHighlightRules; -}); - -ace.define('ace/mode/doc_comment_highlight_rules', ['require', 'exports', 'module' , 'ace/lib/oop', 'ace/mode/text_highlight_rules'], function(require, exports, module) { - - -var oop = require("../lib/oop"); -var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; - -var DocCommentHighlightRules = function() { - - this.$rules = { - "start" : [ { - token : "comment.doc.tag", - regex : "@[\\w\\d_]+" // TODO: fix email addresses - }, { - token : "comment.doc.tag", - regex : "\\bTODO\\b" - }, { - defaultToken : "comment.doc" - }] - }; -}; - -oop.inherits(DocCommentHighlightRules, TextHighlightRules); - -DocCommentHighlightRules.getStartRule = function(start) { - return { - token : "comment.doc", // doc comment - regex : "\\/\\*(?=\\*)", - next : start - }; -}; - -DocCommentHighlightRules.getEndRule = function (start) { - return { - token : "comment.doc", // closing comment - regex : "\\*\\/", - next : start - }; -}; - - -exports.DocCommentHighlightRules = DocCommentHighlightRules; - -}); -ace.define('ace/mode/c_cpp_highlight_rules', ['require', 'exports', 'module' , 'ace/lib/oop', 'ace/mode/doc_comment_highlight_rules', 'ace/mode/text_highlight_rules'], function(require, exports, module) { - - -var oop = require("../lib/oop"); -var DocCommentHighlightRules = require("./doc_comment_highlight_rules").DocCommentHighlightRules; -var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; -var cFunctions = exports.cFunctions = "\\s*\\bhypot(?:f|l)?|s(?:scanf|ystem|nprintf|ca(?:nf|lb(?:n(?:f|l)?|ln(?:f|l)?))|i(?:n(?:h(?:f|l)?|f|l)?|gn(?:al|bit))|tr(?:s(?:tr|pn)|nc(?:py|at|mp)|c(?:spn|hr|oll|py|at|mp)|to(?:imax|d|u(?:l(?:l)?|max)|k|f|l(?:d|l)?)|error|pbrk|ftime|len|rchr|xfrm)|printf|et(?:jmp|vbuf|locale|buf)|qrt(?:f|l)?|w(?:scanf|printf)|rand)|n(?:e(?:arbyint(?:f|l)?|xt(?:toward(?:f|l)?|after(?:f|l)?))|an(?:f|l)?)|c(?:s(?:in(?:h(?:f|l)?|f|l)?|qrt(?:f|l)?)|cos(?:h(?:f)?|f|l)?|imag(?:f|l)?|t(?:ime|an(?:h(?:f|l)?|f|l)?)|o(?:s(?:h(?:f|l)?|f|l)?|nj(?:f|l)?|pysign(?:f|l)?)|p(?:ow(?:f|l)?|roj(?:f|l)?)|e(?:il(?:f|l)?|xp(?:f|l)?)|l(?:o(?:ck|g(?:f|l)?)|earerr)|a(?:sin(?:h(?:f|l)?|f|l)?|cos(?:h(?:f|l)?|f|l)?|tan(?:h(?:f|l)?|f|l)?|lloc|rg(?:f|l)?|bs(?:f|l)?)|real(?:f|l)?|brt(?:f|l)?)|t(?:ime|o(?:upper|lower)|an(?:h(?:f|l)?|f|l)?|runc(?:f|l)?|gamma(?:f|l)?|mp(?:nam|file))|i(?:s(?:space|n(?:ormal|an)|cntrl|inf|digit|u(?:nordered|pper)|p(?:unct|rint)|finite|w(?:space|c(?:ntrl|type)|digit|upper|p(?:unct|rint)|lower|al(?:num|pha)|graph|xdigit|blank)|l(?:ower|ess(?:equal|greater)?)|al(?:num|pha)|gr(?:eater(?:equal)?|aph)|xdigit|blank)|logb(?:f|l)?|max(?:div|abs))|di(?:v|fftime)|_Exit|unget(?:c|wc)|p(?:ow(?:f|l)?|ut(?:s|c(?:har)?|wc(?:har)?)|error|rintf)|e(?:rf(?:c(?:f|l)?|f|l)?|x(?:it|p(?:2(?:f|l)?|f|l|m1(?:f|l)?)?))|v(?:s(?:scanf|nprintf|canf|printf|w(?:scanf|printf))|printf|f(?:scanf|printf|w(?:scanf|printf))|w(?:scanf|printf)|a_(?:start|copy|end|arg))|qsort|f(?:s(?:canf|e(?:tpos|ek))|close|tell|open|dim(?:f|l)?|p(?:classify|ut(?:s|c|w(?:s|c))|rintf)|e(?:holdexcept|set(?:e(?:nv|xceptflag)|round)|clearexcept|testexcept|of|updateenv|r(?:aiseexcept|ror)|get(?:e(?:nv|xceptflag)|round))|flush|w(?:scanf|ide|printf|rite)|loor(?:f|l)?|abs(?:f|l)?|get(?:s|c|pos|w(?:s|c))|re(?:open|e|ad|xp(?:f|l)?)|m(?:in(?:f|l)?|od(?:f|l)?|a(?:f|l|x(?:f|l)?)?))|l(?:d(?:iv|exp(?:f|l)?)|o(?:ngjmp|cal(?:time|econv)|g(?:1(?:p(?:f|l)?|0(?:f|l)?)|2(?:f|l)?|f|l|b(?:f|l)?)?)|abs|l(?:div|abs|r(?:int(?:f|l)?|ound(?:f|l)?))|r(?:int(?:f|l)?|ound(?:f|l)?)|gamma(?:f|l)?)|w(?:scanf|c(?:s(?:s(?:tr|pn)|nc(?:py|at|mp)|c(?:spn|hr|oll|py|at|mp)|to(?:imax|d|u(?:l(?:l)?|max)|k|f|l(?:d|l)?|mbs)|pbrk|ftime|len|r(?:chr|tombs)|xfrm)|to(?:b|mb)|rtomb)|printf|mem(?:set|c(?:hr|py|mp)|move))|a(?:s(?:sert|ctime|in(?:h(?:f|l)?|f|l)?)|cos(?:h(?:f|l)?|f|l)?|t(?:o(?:i|f|l(?:l)?)|exit|an(?:h(?:f|l)?|2(?:f|l)?|f|l)?)|b(?:s|ort))|g(?:et(?:s|c(?:har)?|env|wc(?:har)?)|mtime)|r(?:int(?:f|l)?|ound(?:f|l)?|e(?:name|alloc|wind|m(?:ove|quo(?:f|l)?|ainder(?:f|l)?))|a(?:nd|ise))|b(?:search|towc)|m(?:odf(?:f|l)?|em(?:set|c(?:hr|py|mp)|move)|ktime|alloc|b(?:s(?:init|towcs|rtowcs)|towc|len|r(?:towc|len)))\\b" - -var c_cppHighlightRules = function() { - - var keywordControls = ( - "break|case|continue|default|do|else|for|goto|if|_Pragma|" + - "return|switch|while|catch|operator|try|throw|using" - ); - - var storageType = ( - "asm|__asm__|auto|bool|_Bool|char|_Complex|double|enum|float|" + - "_Imaginary|int|long|short|signed|struct|typedef|union|unsigned|void|" + - "class|wchar_t|template" - ); - - var storageModifiers = ( - "const|extern|register|restrict|static|volatile|inline|private:|" + - "protected:|public:|friend|explicit|virtual|export|mutable|typename" - ); - - var keywordOperators = ( - "and|and_eq|bitand|bitor|compl|not|not_eq|or|or_eq|typeid|xor|xor_eq" + - "const_cast|dynamic_cast|reinterpret_cast|static_cast|sizeof|namespace" - ); - - var builtinConstants = ( - "NULL|true|false|TRUE|FALSE" - ); - - var keywordMapper = this.$keywords = this.createKeywordMapper({ - "keyword.control" : keywordControls, - "storage.type" : storageType, - "storage.modifier" : storageModifiers, - "keyword.operator" : keywordOperators, - "variable.language": "this", - "constant.language": builtinConstants - }, "identifier"); - - var identifierRe = "[a-zA-Z\\$_\u00a1-\uffff][a-zA-Z\d\\$_\u00a1-\uffff]*\\b"; - - this.$rules = { - "start" : [ - { - token : "comment", - regex : "\\/\\/.*$" - }, - DocCommentHighlightRules.getStartRule("doc-start"), - { - token : "comment", // multi line comment - regex : "\\/\\*", - next : "comment" - }, { - token : "string", // single line - regex : '["](?:(?:\\\\.)|(?:[^"\\\\]))*?["]' - }, { - token : "string", // multi line string start - regex : '["].*\\\\$', - next : "qqstring" - }, { - token : "string", // single line - regex : "['](?:(?:\\\\.)|(?:[^'\\\\]))*?[']" - }, { - token : "string", // multi line string start - regex : "['].*\\\\$", - next : "qstring" - }, { - token : "constant.numeric", // hex - regex : "0[xX][0-9a-fA-F]+(L|l|UL|ul|u|U|F|f|ll|LL|ull|ULL)?\\b" - }, { - token : "constant.numeric", // float - regex : "[+-]?\\d+(?:(?:\\.\\d*)?(?:[eE][+-]?\\d+)?)?(L|l|UL|ul|u|U|F|f|ll|LL|ull|ULL)?\\b" - }, { - token : "keyword", // pre-compiler directives - regex : "#\\s*(?:include|import|pragma|line|define|undef|if|ifdef|else|elif|ifndef)\\b", - next : "directive" - }, { - token : "keyword", // special case pre-compiler directive - regex : "(?:#\\s*endif)\\b" - }, { - token : "support.function.C99.c", - regex : cFunctions - }, { - token : keywordMapper, - regex : "[a-zA-Z_$][a-zA-Z0-9_$]*\\b" - }, { - token : "keyword.operator", - regex : "!|\\$|%|&|\\*|\\-\\-|\\-|\\+\\+|\\+|~|==|=|!=|<=|>=|<<=|>>=|>>>=|<>|<|>|!|&&|\\|\\||\\?\\:|\\*=|%=|\\+=|\\-=|&=|\\^=|\\b(?:in|new|delete|typeof|void)" - }, { - token : "punctuation.operator", - regex : "\\?|\\:|\\,|\\;|\\." - }, { - token : "paren.lparen", - regex : "[[({]" - }, { - token : "paren.rparen", - regex : "[\\])}]" - }, { - token : "text", - regex : "\\s+" - } - ], - "comment" : [ - { - token : "comment", // closing comment - regex : ".*?\\*\\/", - next : "start" - }, { - token : "comment", // comment spanning whole line - regex : ".+" - } - ], - "qqstring" : [ - { - token : "string", - regex : '(?:(?:\\\\.)|(?:[^"\\\\]))*?"', - next : "start" - }, { - token : "string", - regex : '.+' - } - ], - "qstring" : [ - { - token : "string", - regex : "(?:(?:\\\\.)|(?:[^'\\\\]))*?'", - next : "start" - }, { - token : "string", - regex : '.+' - } - ], - "directive" : [ - { - token : "constant.other.multiline", - regex : /\\/ - }, - { - token : "constant.other.multiline", - regex : /.*\\/ - }, - { - token : "constant.other", - regex : "\\s*<.+?>", - next : "start" - }, - { - token : "constant.other", // single line - regex : '\\s*["](?:(?:\\\\.)|(?:[^"\\\\]))*?["]', - next : "start" - }, - { - token : "constant.other", // single line - regex : "\\s*['](?:(?:\\\\.)|(?:[^'\\\\]))*?[']", - next : "start" - }, - { - token : "constant.other", - regex : /[^\\\/]+/, - next : "start" - } - ] - }; - - this.embedRules(DocCommentHighlightRules, "doc-", - [ DocCommentHighlightRules.getEndRule("start") ]); -}; - -oop.inherits(c_cppHighlightRules, TextHighlightRules); - -exports.c_cppHighlightRules = c_cppHighlightRules; -}); - -ace.define('ace/mode/folding/cstyle', ['require', 'exports', 'module' , 'ace/lib/oop', 'ace/range', 'ace/mode/folding/fold_mode'], function(require, exports, module) { - - -var oop = require("../../lib/oop"); -var Range = require("../../range").Range; -var BaseFoldMode = require("./fold_mode").FoldMode; - -var FoldMode = exports.FoldMode = function(commentRegex) { - if (commentRegex) { - this.foldingStartMarker = new RegExp( - this.foldingStartMarker.source.replace(/\|[^|]*?$/, "|" + commentRegex.start) - ); - this.foldingStopMarker = new RegExp( - this.foldingStopMarker.source.replace(/\|[^|]*?$/, "|" + commentRegex.end) - ); - } -}; -oop.inherits(FoldMode, BaseFoldMode); - -(function() { - - this.foldingStartMarker = /(\{|\[)[^\}\]]*$|^\s*(\/\*)/; - this.foldingStopMarker = /^[^\[\{]*(\}|\])|^[\s\*]*(\*\/)/; - - this.getFoldWidgetRange = function(session, foldStyle, row, forceMultiline) { - var line = session.getLine(row); - var match = line.match(this.foldingStartMarker); - if (match) { - var i = match.index; - - if (match[1]) - return this.openingBracketBlock(session, match[1], row, i); - - var range = session.getCommentFoldRange(row, i + match[0].length, 1); - - if (range && !range.isMultiLine()) { - if (forceMultiline) { - range = this.getSectionRange(session, row); - } else if (foldStyle != "all") - range = null; - } - - return range; - } - - if (foldStyle === "markbegin") - return; - - var match = line.match(this.foldingStopMarker); - if (match) { - var i = match.index + match[0].length; - - if (match[1]) - return this.closingBracketBlock(session, match[1], row, i); - - return session.getCommentFoldRange(row, i, -1); - } - }; - - this.getSectionRange = function(session, row) { - var line = session.getLine(row); - var startIndent = line.search(/\S/); - var startRow = row; - var startColumn = line.length; - row = row + 1; - var endRow = row; - var maxRow = session.getLength(); - while (++row < maxRow) { - line = session.getLine(row); - var indent = line.search(/\S/); - if (indent === -1) - continue; - if (startIndent > indent) - break; - var subRange = this.getFoldWidgetRange(session, "all", row); - - if (subRange) { - if (subRange.start.row <= startRow) { - break; - } else if (subRange.isMultiLine()) { - row = subRange.end.row; - } else if (startIndent == indent) { - break; - } - } - endRow = row; - } - - return new Range(startRow, startColumn, endRow, session.getLine(endRow).length); - }; - -}).call(FoldMode.prototype); - -}); diff --git a/IDE/jsrealb-ide/ace-src-noconflict/mode-ocaml.js b/IDE/jsrealb-ide/ace-src-noconflict/mode-ocaml.js deleted file mode 100644 index 551c8017..00000000 --- a/IDE/jsrealb-ide/ace-src-noconflict/mode-ocaml.js +++ /dev/null @@ -1,445 +0,0 @@ -/* ***** BEGIN LICENSE BLOCK ***** - * Distributed under the BSD license: - * - * Copyright (c) 2010, Ajax.org B.V. - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are met: - * * Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * * Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * * Neither the name of Ajax.org B.V. nor the - * names of its contributors may be used to endorse or promote products - * derived from this software without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND - * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED - * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE - * DISCLAIMED. IN NO EVENT SHALL AJAX.ORG B.V. BE LIABLE FOR ANY - * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES - * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; - * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND - * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - * - * ***** END LICENSE BLOCK ***** */ - -ace.define('ace/mode/ocaml', ['require', 'exports', 'module' , 'ace/lib/oop', 'ace/mode/text', 'ace/tokenizer', 'ace/mode/ocaml_highlight_rules', 'ace/mode/matching_brace_outdent', 'ace/range'], function(require, exports, module) { - - -var oop = require("../lib/oop"); -var TextMode = require("./text").Mode; -var Tokenizer = require("../tokenizer").Tokenizer; -var OcamlHighlightRules = require("./ocaml_highlight_rules").OcamlHighlightRules; -var MatchingBraceOutdent = require("./matching_brace_outdent").MatchingBraceOutdent; -var Range = require("../range").Range; - -var Mode = function() { - this.HighlightRules = OcamlHighlightRules; - - this.$outdent = new MatchingBraceOutdent(); -}; -oop.inherits(Mode, TextMode); - -var indenter = /(?:[({[=:]|[-=]>|\b(?:else|try|with))\s*$/; - -(function() { - - this.toggleCommentLines = function(state, doc, startRow, endRow) { - var i, line; - var outdent = true; - var re = /^\s*\(\*(.*)\*\)/; - - for (i=startRow; i<= endRow; i++) { - if (!re.test(doc.getLine(i))) { - outdent = false; - break; - } - } - - var range = new Range(0, 0, 0, 0); - for (i=startRow; i<= endRow; i++) { - line = doc.getLine(i); - range.start.row = i; - range.end.row = i; - range.end.column = line.length; - - doc.replace(range, outdent ? line.match(re)[1] : "(*" + line + "*)"); - } - }; - - this.getNextLineIndent = function(state, line, tab) { - var indent = this.$getIndent(line); - var tokens = this.getTokenizer().getLineTokens(line, state).tokens; - - if (!(tokens.length && tokens[tokens.length - 1].type === 'comment') && - state === 'start' && indenter.test(line)) - indent += tab; - return indent; - }; - - this.checkOutdent = function(state, line, input) { - return this.$outdent.checkOutdent(line, input); - }; - - this.autoOutdent = function(state, doc, row) { - this.$outdent.autoOutdent(doc, row); - }; - - this.$id = "ace/mode/ocaml"; -}).call(Mode.prototype); - -exports.Mode = Mode; -}); - -ace.define('ace/mode/ocaml_highlight_rules', ['require', 'exports', 'module' , 'ace/lib/oop', 'ace/mode/text_highlight_rules'], function(require, exports, module) { - - -var oop = require("../lib/oop"); -var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; - -var OcamlHighlightRules = function() { - - var keywords = ( - "and|as|assert|begin|class|constraint|do|done|downto|else|end|" + - "exception|external|for|fun|function|functor|if|in|include|" + - "inherit|initializer|lazy|let|match|method|module|mutable|new|" + - "object|of|open|or|private|rec|sig|struct|then|to|try|type|val|" + - "virtual|when|while|with" - ); - - var builtinConstants = ("true|false"); - - var builtinFunctions = ( - "abs|abs_big_int|abs_float|abs_num|abstract_tag|accept|access|acos|add|" + - "add_available_units|add_big_int|add_buffer|add_channel|add_char|" + - "add_initializer|add_int_big_int|add_interfaces|add_num|add_string|" + - "add_substitute|add_substring|alarm|allocated_bytes|allow_only|" + - "allow_unsafe_modules|always|append|appname_get|appname_set|" + - "approx_num_exp|approx_num_fix|arg|argv|arith_status|array|" + - "array1_of_genarray|array2_of_genarray|array3_of_genarray|asin|asr|" + - "assoc|assq|at_exit|atan|atan2|auto_synchronize|background|basename|" + - "beginning_of_input|big_int_of_int|big_int_of_num|big_int_of_string|bind|" + - "bind_class|bind_tag|bits|bits_of_float|black|blit|blit_image|blue|bool|" + - "bool_of_string|bounded_full_split|bounded_split|bounded_split_delim|" + - "bprintf|break|broadcast|bscanf|button_down|c_layout|capitalize|cardinal|" + - "cardinal|catch|catch_break|ceil|ceiling_num|channel|char|char_of_int|" + - "chdir|check|check_suffix|chmod|choose|chop_extension|chop_suffix|chown|" + - "chown|chr|chroot|classify_float|clear|clear_available_units|" + - "clear_close_on_exec|clear_graph|clear_nonblock|clear_parser|" + - "close|close|closeTk|close_box|close_graph|close_in|close_in_noerr|" + - "close_out|close_out_noerr|close_process|close_process|" + - "close_process_full|close_process_in|close_process_out|close_subwindow|" + - "close_tag|close_tbox|closedir|closedir|closure_tag|code|combine|" + - "combine|combine|command|compact|compare|compare_big_int|compare_num|" + - "complex32|complex64|concat|conj|connect|contains|contains_from|contents|" + - "copy|cos|cosh|count|count|counters|create|create_alarm|create_image|" + - "create_matrix|create_matrix|create_matrix|create_object|" + - "create_object_and_run_initializers|create_object_opt|create_process|" + - "create_process|create_process_env|create_process_env|create_table|" + - "current|current_dir_name|current_point|current_x|current_y|curveto|" + - "custom_tag|cyan|data_size|decr|decr_num|default_available_units|delay|" + - "delete_alarm|descr_of_in_channel|descr_of_out_channel|destroy|diff|dim|" + - "dim1|dim2|dim3|dims|dirname|display_mode|div|div_big_int|div_num|" + - "double_array_tag|double_tag|draw_arc|draw_char|draw_circle|draw_ellipse|" + - "draw_image|draw_poly|draw_poly_line|draw_rect|draw_segments|draw_string|" + - "dummy_pos|dummy_table|dump_image|dup|dup2|elements|empty|end_of_input|" + - "environment|eprintf|epsilon_float|eq_big_int|eq_num|equal|err_formatter|" + - "error_message|escaped|establish_server|executable_name|execv|execve|execvp|" + - "execvpe|exists|exists2|exit|exp|failwith|fast_sort|fchmod|fchown|field|" + - "file|file_exists|fill|fill_arc|fill_circle|fill_ellipse|fill_poly|fill_rect|" + - "filter|final_tag|finalise|find|find_all|first_chars|firstkey|flatten|" + - "float|float32|float64|float_of_big_int|float_of_bits|float_of_int|" + - "float_of_num|float_of_string|floor|floor_num|flush|flush_all|flush_input|" + - "flush_str_formatter|fold|fold_left|fold_left2|fold_right|fold_right2|" + - "for_all|for_all2|force|force_newline|force_val|foreground|fork|" + - "format_of_string|formatter_of_buffer|formatter_of_out_channel|" + - "fortran_layout|forward_tag|fprintf|frexp|from|from_channel|from_file|" + - "from_file_bin|from_function|from_string|fscanf|fst|fstat|ftruncate|" + - "full_init|full_major|full_split|gcd_big_int|ge_big_int|ge_num|" + - "genarray_of_array1|genarray_of_array2|genarray_of_array3|get|" + - "get_all_formatter_output_functions|get_approx_printing|get_copy|" + - "get_ellipsis_text|get_error_when_null_denominator|get_floating_precision|" + - "get_formatter_output_functions|get_formatter_tag_functions|get_image|" + - "get_margin|get_mark_tags|get_max_boxes|get_max_indent|get_method|" + - "get_method_label|get_normalize_ratio|get_normalize_ratio_when_printing|" + - "get_print_tags|get_state|get_variable|getcwd|getegid|getegid|getenv|" + - "getenv|getenv|geteuid|geteuid|getgid|getgid|getgrgid|getgrgid|getgrnam|" + - "getgrnam|getgroups|gethostbyaddr|gethostbyname|gethostname|getitimer|" + - "getlogin|getpeername|getpid|getppid|getprotobyname|getprotobynumber|" + - "getpwnam|getpwuid|getservbyname|getservbyport|getsockname|getsockopt|" + - "getsockopt_float|getsockopt_int|getsockopt_optint|gettimeofday|getuid|" + - "global_replace|global_substitute|gmtime|green|grid|group_beginning|" + - "group_end|gt_big_int|gt_num|guard|handle_unix_error|hash|hash_param|" + - "hd|header_size|i|id|ignore|in_channel_length|in_channel_of_descr|incr|" + - "incr_num|index|index_from|inet_addr_any|inet_addr_of_string|infinity|" + - "infix_tag|init|init_class|input|input_binary_int|input_byte|input_char|" + - "input_line|input_value|int|int16_signed|int16_unsigned|int32|int64|" + - "int8_signed|int8_unsigned|int_of_big_int|int_of_char|int_of_float|" + - "int_of_num|int_of_string|integer_num|inter|interactive|inv|invalid_arg|" + - "is_block|is_empty|is_implicit|is_int|is_int_big_int|is_integer_num|" + - "is_relative|iter|iter2|iteri|join|junk|key_pressed|kill|kind|kprintf|" + - "kscanf|land|last_chars|layout|lazy_from_fun|lazy_from_val|lazy_is_val|" + - "lazy_tag|ldexp|le_big_int|le_num|length|lexeme|lexeme_char|lexeme_end|" + - "lexeme_end_p|lexeme_start|lexeme_start_p|lineto|link|list|listen|lnot|" + - "loadfile|loadfile_private|localtime|lock|lockf|log|log10|logand|lognot|" + - "logor|logxor|lor|lower_window|lowercase|lseek|lsl|lsr|lstat|lt_big_int|" + - "lt_num|lxor|magenta|magic|mainLoop|major|major_slice|make|make_formatter|" + - "make_image|make_lexer|make_matrix|make_self_init|map|map2|map_file|mapi|" + - "marshal|match_beginning|match_end|matched_group|matched_string|max|" + - "max_array_length|max_big_int|max_elt|max_float|max_int|max_num|" + - "max_string_length|mem|mem_assoc|mem_assq|memq|merge|min|min_big_int|" + - "min_elt|min_float|min_int|min_num|minor|minus_big_int|minus_num|" + - "minus_one|mkdir|mkfifo|mktime|mod|mod_big_int|mod_float|mod_num|modf|" + - "mouse_pos|moveto|mul|mult_big_int|mult_int_big_int|mult_num|nan|narrow|" + - "nat_of_num|nativeint|neg|neg_infinity|new_block|new_channel|new_method|" + - "new_variable|next|nextkey|nice|nice|no_scan_tag|norm|norm2|not|npeek|" + - "nth|nth_dim|num_digits_big_int|num_dims|num_of_big_int|num_of_int|" + - "num_of_nat|num_of_ratio|num_of_string|O|obj|object_tag|ocaml_version|" + - "of_array|of_channel|of_float|of_int|of_int32|of_list|of_nativeint|" + - "of_string|one|openTk|open_box|open_connection|open_graph|open_hbox|" + - "open_hovbox|open_hvbox|open_in|open_in_bin|open_in_gen|open_out|" + - "open_out_bin|open_out_gen|open_process|open_process_full|open_process_in|" + - "open_process_out|open_subwindow|open_tag|open_tbox|open_temp_file|" + - "open_vbox|opendbm|opendir|openfile|or|os_type|out_channel_length|" + - "out_channel_of_descr|output|output_binary_int|output_buffer|output_byte|" + - "output_char|output_string|output_value|over_max_boxes|pack|params|" + - "parent_dir_name|parse|parse_argv|partition|pause|peek|pipe|pixels|" + - "place|plot|plots|point_color|polar|poll|pop|pos_in|pos_out|pow|" + - "power_big_int_positive_big_int|power_big_int_positive_int|" + - "power_int_positive_big_int|power_int_positive_int|power_num|" + - "pp_close_box|pp_close_tag|pp_close_tbox|pp_force_newline|" + - "pp_get_all_formatter_output_functions|pp_get_ellipsis_text|" + - "pp_get_formatter_output_functions|pp_get_formatter_tag_functions|" + - "pp_get_margin|pp_get_mark_tags|pp_get_max_boxes|pp_get_max_indent|" + - "pp_get_print_tags|pp_open_box|pp_open_hbox|pp_open_hovbox|pp_open_hvbox|" + - "pp_open_tag|pp_open_tbox|pp_open_vbox|pp_over_max_boxes|pp_print_as|" + - "pp_print_bool|pp_print_break|pp_print_char|pp_print_cut|pp_print_float|" + - "pp_print_flush|pp_print_if_newline|pp_print_int|pp_print_newline|" + - "pp_print_space|pp_print_string|pp_print_tab|pp_print_tbreak|" + - "pp_set_all_formatter_output_functions|pp_set_ellipsis_text|" + - "pp_set_formatter_out_channel|pp_set_formatter_output_functions|" + - "pp_set_formatter_tag_functions|pp_set_margin|pp_set_mark_tags|" + - "pp_set_max_boxes|pp_set_max_indent|pp_set_print_tags|pp_set_tab|" + - "pp_set_tags|pred|pred_big_int|pred_num|prerr_char|prerr_endline|" + - "prerr_float|prerr_int|prerr_newline|prerr_string|print|print_as|" + - "print_bool|print_break|print_char|print_cut|print_endline|print_float|" + - "print_flush|print_if_newline|print_int|print_newline|print_space|" + - "print_stat|print_string|print_tab|print_tbreak|printf|prohibit|" + - "public_method_label|push|putenv|quo_num|quomod_big_int|quote|raise|" + - "raise_window|ratio_of_num|rcontains_from|read|read_float|read_int|" + - "read_key|read_line|readdir|readdir|readlink|really_input|receive|recv|" + - "recvfrom|red|ref|regexp|regexp_case_fold|regexp_string|" + - "regexp_string_case_fold|register|register_exception|rem|remember_mode|" + - "remove|remove_assoc|remove_assq|rename|replace|replace_first|" + - "replace_matched|repr|reset|reshape|reshape_1|reshape_2|reshape_3|rev|" + - "rev_append|rev_map|rev_map2|rewinddir|rgb|rhs_end|rhs_end_pos|rhs_start|" + - "rhs_start_pos|rindex|rindex_from|rlineto|rmdir|rmoveto|round_num|" + - "run_initializers|run_initializers_opt|scanf|search_backward|" + - "search_forward|seek_in|seek_out|select|self|self_init|send|sendto|set|" + - "set_all_formatter_output_functions|set_approx_printing|" + - "set_binary_mode_in|set_binary_mode_out|set_close_on_exec|" + - "set_close_on_exec|set_color|set_ellipsis_text|" + - "set_error_when_null_denominator|set_field|set_floating_precision|" + - "set_font|set_formatter_out_channel|set_formatter_output_functions|" + - "set_formatter_tag_functions|set_line_width|set_margin|set_mark_tags|" + - "set_max_boxes|set_max_indent|set_method|set_nonblock|set_nonblock|" + - "set_normalize_ratio|set_normalize_ratio_when_printing|set_print_tags|" + - "set_signal|set_state|set_tab|set_tag|set_tags|set_text_size|" + - "set_window_title|setgid|setgid|setitimer|setitimer|setsid|setsid|" + - "setsockopt|setsockopt|setsockopt_float|setsockopt_float|setsockopt_int|" + - "setsockopt_int|setsockopt_optint|setsockopt_optint|setuid|setuid|" + - "shift_left|shift_left|shift_left|shift_right|shift_right|shift_right|" + - "shift_right_logical|shift_right_logical|shift_right_logical|show_buckets|" + - "shutdown|shutdown|shutdown_connection|shutdown_connection|sigabrt|" + - "sigalrm|sigchld|sigcont|sigfpe|sighup|sigill|sigint|sigkill|sign_big_int|" + - "sign_num|signal|signal|sigpending|sigpending|sigpipe|sigprocmask|" + - "sigprocmask|sigprof|sigquit|sigsegv|sigstop|sigsuspend|sigsuspend|" + - "sigterm|sigtstp|sigttin|sigttou|sigusr1|sigusr2|sigvtalrm|sin|singleton|" + - "sinh|size|size|size_x|size_y|sleep|sleep|sleep|slice_left|slice_left|" + - "slice_left_1|slice_left_2|slice_right|slice_right|slice_right_1|" + - "slice_right_2|snd|socket|socket|socket|socketpair|socketpair|sort|sound|" + - "split|split_delim|sprintf|sprintf|sqrt|sqrt|sqrt_big_int|square_big_int|" + - "square_num|sscanf|stable_sort|stable_sort|stable_sort|stable_sort|stable_sort|" + - "stable_sort|stat|stat|stat|stat|stat|stats|stats|std_formatter|stdbuf|" + - "stderr|stderr|stderr|stdib|stdin|stdin|stdin|stdout|stdout|stdout|" + - "str_formatter|string|string_after|string_before|string_match|" + - "string_of_big_int|string_of_bool|string_of_float|string_of_format|" + - "string_of_inet_addr|string_of_inet_addr|string_of_int|string_of_num|" + - "string_partial_match|string_tag|sub|sub|sub_big_int|sub_left|sub_num|" + - "sub_right|subset|subset|substitute_first|substring|succ|succ|" + - "succ|succ|succ_big_int|succ_num|symbol_end|symbol_end_pos|symbol_start|" + - "symbol_start_pos|symlink|symlink|sync|synchronize|system|system|system|" + - "tag|take|tan|tanh|tcdrain|tcdrain|tcflow|tcflow|tcflush|tcflush|" + - "tcgetattr|tcgetattr|tcsendbreak|tcsendbreak|tcsetattr|tcsetattr|" + - "temp_file|text_size|time|time|time|timed_read|timed_write|times|times|" + - "tl|tl|tl|to_buffer|to_channel|to_float|to_hex|to_int|to_int32|to_list|" + - "to_list|to_list|to_nativeint|to_string|to_string|to_string|to_string|" + - "to_string|top|top|total_size|transfer|transp|truncate|truncate|truncate|" + - "truncate|truncate|truncate|try_lock|umask|umask|uncapitalize|uncapitalize|" + - "uncapitalize|union|union|unit_big_int|unlink|unlink|unlock|unmarshal|" + - "unsafe_blit|unsafe_fill|unsafe_get|unsafe_get|unsafe_set|unsafe_set|" + - "update|uppercase|uppercase|uppercase|uppercase|usage|utimes|utimes|wait|" + - "wait|wait|wait|wait_next_event|wait_pid|wait_read|wait_signal|" + - "wait_timed_read|wait_timed_write|wait_write|waitpid|white|" + - "widen|window_id|word_size|wrap|wrap_abort|write|yellow|yield|zero|zero_big_int|" + - - "Arg|Arith_status|Array|Array1|Array2|Array3|ArrayLabels|Big_int|Bigarray|" + - "Buffer|Callback|CamlinternalOO|Char|Complex|Condition|Dbm|Digest|Dynlink|" + - "Event|Filename|Format|Gc|Genarray|Genlex|Graphics|GraphicsX11|Hashtbl|" + - "Int32|Int64|LargeFile|Lazy|Lexing|List|ListLabels|Make|Map|Marshal|" + - "MoreLabels|Mutex|Nativeint|Num|Obj|Oo|Parsing|Pervasives|Printexc|" + - "Printf|Queue|Random|Scanf|Scanning|Set|Sort|Stack|State|StdLabels|Str|" + - "Stream|String|StringLabels|Sys|Thread|ThreadUnix|Tk|Unix|UnixLabels|Weak" - ); - - var keywordMapper = this.createKeywordMapper({ - "variable.language": "this", - "keyword": keywords, - "constant.language": builtinConstants, - "support.function": builtinFunctions - }, "identifier"); - - var decimalInteger = "(?:(?:[1-9]\\d*)|(?:0))"; - var octInteger = "(?:0[oO]?[0-7]+)"; - var hexInteger = "(?:0[xX][\\dA-Fa-f]+)"; - var binInteger = "(?:0[bB][01]+)"; - var integer = "(?:" + decimalInteger + "|" + octInteger + "|" + hexInteger + "|" + binInteger + ")"; - - var exponent = "(?:[eE][+-]?\\d+)"; - var fraction = "(?:\\.\\d+)"; - var intPart = "(?:\\d+)"; - var pointFloat = "(?:(?:" + intPart + "?" + fraction + ")|(?:" + intPart + "\\.))"; - var exponentFloat = "(?:(?:" + pointFloat + "|" + intPart + ")" + exponent + ")"; - var floatNumber = "(?:" + exponentFloat + "|" + pointFloat + ")"; - - this.$rules = { - "start" : [ - { - token : "comment", - regex : '\\(\\*.*?\\*\\)\\s*?$' - }, - { - token : "comment", - regex : '\\(\\*.*', - next : "comment" - }, - { - token : "string", // single line - regex : '["](?:(?:\\\\.)|(?:[^"\\\\]))*?["]' - }, - { - token : "string", // single char - regex : "'.'" - }, - { - token : "string", // " string - regex : '"', - next : "qstring" - }, - { - token : "constant.numeric", // imaginary - regex : "(?:" + floatNumber + "|\\d+)[jJ]\\b" - }, - { - token : "constant.numeric", // float - regex : floatNumber - }, - { - token : "constant.numeric", // integer - regex : integer + "\\b" - }, - { - token : keywordMapper, - regex : "[a-zA-Z_$][a-zA-Z0-9_$]*\\b" - }, - { - token : "keyword.operator", - regex : "\\+\\.|\\-\\.|\\*\\.|\\/\\.|#|;;|\\+|\\-|\\*|\\*\\*\\/|\\/\\/|%|<<|>>|&|\\||\\^|~|<|>|<=|=>|==|!=|<>|<-|=" - }, - { - token : "paren.lparen", - regex : "[[({]" - }, - { - token : "paren.rparen", - regex : "[\\])}]" - }, - { - token : "text", - regex : "\\s+" - } - ], - "comment" : [ - { - token : "comment", // closing comment - regex : ".*?\\*\\)", - next : "start" - }, - { - token : "comment", // comment spanning whole line - regex : ".+" - } - ], - - "qstring" : [ - { - token : "string", - regex : '"', - next : "start" - }, { - token : "string", - regex : '.+' - } - ] - }; -}; - -oop.inherits(OcamlHighlightRules, TextHighlightRules); - -exports.OcamlHighlightRules = OcamlHighlightRules; -}); - -ace.define('ace/mode/matching_brace_outdent', ['require', 'exports', 'module' , 'ace/range'], function(require, exports, module) { - - -var Range = require("../range").Range; - -var MatchingBraceOutdent = function() {}; - -(function() { - - this.checkOutdent = function(line, input) { - if (! /^\s+$/.test(line)) - return false; - - return /^\s*\}/.test(input); - }; - - this.autoOutdent = function(doc, row) { - var line = doc.getLine(row); - var match = line.match(/^(\s*\})/); - - if (!match) return 0; - - var column = match[1].length; - var openBracePos = doc.findMatchingBracket({row: row, column: column}); - - if (!openBracePos || openBracePos.row == row) return 0; - - var indent = this.$getIndent(doc.getLine(openBracePos.row)); - doc.replace(new Range(row, 0, row, column-1), indent); - }; - - this.$getIndent = function(line) { - return line.match(/^\s*/)[0]; - }; - -}).call(MatchingBraceOutdent.prototype); - -exports.MatchingBraceOutdent = MatchingBraceOutdent; -}); diff --git a/IDE/jsrealb-ide/ace-src-noconflict/mode-pascal.js b/IDE/jsrealb-ide/ace-src-noconflict/mode-pascal.js deleted file mode 100644 index d386ae35..00000000 --- a/IDE/jsrealb-ide/ace-src-noconflict/mode-pascal.js +++ /dev/null @@ -1,233 +0,0 @@ -/* ***** BEGIN LICENSE BLOCK ***** - * Distributed under the BSD license: - * - * Copyright (c) 2012, Ajax.org B.V. - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are met: - * * Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * * Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * * Neither the name of Ajax.org B.V. nor the - * names of its contributors may be used to endorse or promote products - * derived from this software without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND - * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED - * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE - * DISCLAIMED. IN NO EVENT SHALL AJAX.ORG B.V. BE LIABLE FOR ANY - * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES - * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; - * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND - * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - * - * - * Contributor(s): - * - * - * - * ***** END LICENSE BLOCK ***** */ - -ace.define('ace/mode/pascal', ['require', 'exports', 'module' , 'ace/lib/oop', 'ace/mode/text', 'ace/tokenizer', 'ace/mode/pascal_highlight_rules', 'ace/mode/folding/coffee'], function(require, exports, module) { - - -var oop = require("../lib/oop"); -var TextMode = require("./text").Mode; -var Tokenizer = require("../tokenizer").Tokenizer; -var PascalHighlightRules = require("./pascal_highlight_rules").PascalHighlightRules; -var FoldMode = require("./folding/coffee").FoldMode; - -var Mode = function() { - this.HighlightRules = PascalHighlightRules; - this.foldingRules = new FoldMode(); -}; -oop.inherits(Mode, TextMode); - -(function() { - - this.lineCommentStart = ["--", "//"]; - this.blockComment = [ - {start: "(*", end: "*)"}, - {start: "{", end: "}"} - ]; - - this.$id = "ace/mode/pascal"; -}).call(Mode.prototype); - -exports.Mode = Mode; -}); - -ace.define('ace/mode/pascal_highlight_rules', ['require', 'exports', 'module' , 'ace/lib/oop', 'ace/mode/text_highlight_rules'], function(require, exports, module) { - - -var oop = require("../lib/oop"); -var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; - -var PascalHighlightRules = function() { - - this.$rules = { start: - [ { caseInsensitive: true, - token: 'keyword.control.pascal', - regex: '\\b(?:(absolute|abstract|all|and|and_then|array|as|asm|attribute|begin|bindable|case|class|const|constructor|destructor|div|do|do|else|end|except|export|exports|external|far|file|finalization|finally|for|forward|goto|if|implementation|import|in|inherited|initialization|interface|interrupt|is|label|library|mod|module|name|near|nil|not|object|of|only|operator|or|or_else|otherwise|packed|pow|private|program|property|protected|public|published|qualified|record|repeat|resident|restricted|segment|set|shl|shr|then|to|try|type|unit|until|uses|value|var|view|virtual|while|with|xor))\\b' }, - { caseInsensitive: true, - token: - [ 'variable.pascal', "text", - 'storage.type.prototype.pascal', - 'entity.name.function.prototype.pascal' ], - regex: '\\b(function|procedure)(\\s+)(\\w+)(\\.\\w+)?(?=(?:\\(.*?\\))?;\\s*(?:attribute|forward|external))' }, - { caseInsensitive: true, - token: - [ 'variable.pascal', "text", - 'storage.type.function.pascal', - 'entity.name.function.pascal' ], - regex: '\\b(function|procedure)(\\s+)(\\w+)(\\.\\w+)?' }, - { token: 'constant.numeric.pascal', - regex: '\\b((0(x|X)[0-9a-fA-F]*)|(([0-9]+\\.?[0-9]*)|(\\.[0-9]+))((e|E)(\\+|-)?[0-9]+)?)(L|l|UL|ul|u|U|F|f|ll|LL|ull|ULL)?\\b' }, - { token: 'punctuation.definition.comment.pascal', - regex: '--.*$', - push_: - [ { token: 'comment.line.double-dash.pascal.one', - regex: '$', - next: 'pop' }, - { defaultToken: 'comment.line.double-dash.pascal.one' } ] }, - { token: 'punctuation.definition.comment.pascal', - regex: '//.*$', - push_: - [ { token: 'comment.line.double-slash.pascal.two', - regex: '$', - next: 'pop' }, - { defaultToken: 'comment.line.double-slash.pascal.two' } ] }, - { token: 'punctuation.definition.comment.pascal', - regex: '\\(\\*', - push: - [ { token: 'punctuation.definition.comment.pascal', - regex: '\\*\\)', - next: 'pop' }, - { defaultToken: 'comment.block.pascal.one' } ] }, - { token: 'punctuation.definition.comment.pascal', - regex: '\\{', - push: - [ { token: 'punctuation.definition.comment.pascal', - regex: '\\}', - next: 'pop' }, - { defaultToken: 'comment.block.pascal.two' } ] }, - { token: 'punctuation.definition.string.begin.pascal', - regex: '"', - push: - [ { token: 'constant.character.escape.pascal', regex: '\\\\.' }, - { token: 'punctuation.definition.string.end.pascal', - regex: '"', - next: 'pop' }, - { defaultToken: 'string.quoted.double.pascal' } ], - }, - { token: 'punctuation.definition.string.begin.pascal', - regex: '\'', - push: - [ { token: 'constant.character.escape.apostrophe.pascal', - regex: '\'\'' }, - { token: 'punctuation.definition.string.end.pascal', - regex: '\'', - next: 'pop' }, - { defaultToken: 'string.quoted.single.pascal' } ] }, - { token: 'keyword.operator', - regex: '[+\\-;,/*%]|:=|=' } ] } - - this.normalizeRules(); -}; - -oop.inherits(PascalHighlightRules, TextHighlightRules); - -exports.PascalHighlightRules = PascalHighlightRules; -}); - -ace.define('ace/mode/folding/coffee', ['require', 'exports', 'module' , 'ace/lib/oop', 'ace/mode/folding/fold_mode', 'ace/range'], function(require, exports, module) { - - -var oop = require("../../lib/oop"); -var BaseFoldMode = require("./fold_mode").FoldMode; -var Range = require("../../range").Range; - -var FoldMode = exports.FoldMode = function() {}; -oop.inherits(FoldMode, BaseFoldMode); - -(function() { - - this.getFoldWidgetRange = function(session, foldStyle, row) { - var range = this.indentationBlock(session, row); - if (range) - return range; - - var re = /\S/; - var line = session.getLine(row); - var startLevel = line.search(re); - if (startLevel == -1 || line[startLevel] != "#") - return; - - var startColumn = line.length; - var maxRow = session.getLength(); - var startRow = row; - var endRow = row; - - while (++row < maxRow) { - line = session.getLine(row); - var level = line.search(re); - - if (level == -1) - continue; - - if (line[level] != "#") - break; - - endRow = row; - } - - if (endRow > startRow) { - var endColumn = session.getLine(endRow).length; - return new Range(startRow, startColumn, endRow, endColumn); - } - }; - this.getFoldWidget = function(session, foldStyle, row) { - var line = session.getLine(row); - var indent = line.search(/\S/); - var next = session.getLine(row + 1); - var prev = session.getLine(row - 1); - var prevIndent = prev.search(/\S/); - var nextIndent = next.search(/\S/); - - if (indent == -1) { - session.foldWidgets[row - 1] = prevIndent!= -1 && prevIndent < nextIndent ? "start" : ""; - return ""; - } - if (prevIndent == -1) { - if (indent == nextIndent && line[indent] == "#" && next[indent] == "#") { - session.foldWidgets[row - 1] = ""; - session.foldWidgets[row + 1] = ""; - return "start"; - } - } else if (prevIndent == indent && line[indent] == "#" && prev[indent] == "#") { - if (session.getLine(row - 2).search(/\S/) == -1) { - session.foldWidgets[row - 1] = "start"; - session.foldWidgets[row + 1] = ""; - return ""; - } - } - - if (prevIndent!= -1 && prevIndent < indent) - session.foldWidgets[row - 1] = "start"; - else - session.foldWidgets[row - 1] = ""; - - if (indent < nextIndent) - return "start"; - else - return ""; - }; - -}).call(FoldMode.prototype); - -}); diff --git a/IDE/jsrealb-ide/ace-src-noconflict/mode-perl.js b/IDE/jsrealb-ide/ace-src-noconflict/mode-perl.js deleted file mode 100644 index 12756fcc..00000000 --- a/IDE/jsrealb-ide/ace-src-noconflict/mode-perl.js +++ /dev/null @@ -1,359 +0,0 @@ -/* ***** BEGIN LICENSE BLOCK ***** - * Distributed under the BSD license: - * - * Copyright (c) 2010, Ajax.org B.V. - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are met: - * * Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * * Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * * Neither the name of Ajax.org B.V. nor the - * names of its contributors may be used to endorse or promote products - * derived from this software without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND - * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED - * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE - * DISCLAIMED. IN NO EVENT SHALL AJAX.ORG B.V. BE LIABLE FOR ANY - * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES - * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; - * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND - * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - * - * ***** END LICENSE BLOCK ***** */ - -ace.define('ace/mode/perl', ['require', 'exports', 'module' , 'ace/lib/oop', 'ace/mode/text', 'ace/tokenizer', 'ace/mode/perl_highlight_rules', 'ace/mode/matching_brace_outdent', 'ace/range', 'ace/mode/folding/cstyle'], function(require, exports, module) { - - -var oop = require("../lib/oop"); -var TextMode = require("./text").Mode; -var Tokenizer = require("../tokenizer").Tokenizer; -var PerlHighlightRules = require("./perl_highlight_rules").PerlHighlightRules; -var MatchingBraceOutdent = require("./matching_brace_outdent").MatchingBraceOutdent; -var Range = require("../range").Range; -var CStyleFoldMode = require("./folding/cstyle").FoldMode; - -var Mode = function() { - this.HighlightRules = PerlHighlightRules; - - this.$outdent = new MatchingBraceOutdent(); - this.foldingRules = new CStyleFoldMode({start: "^=(begin|item)\\b", end: "^=(cut)\\b"}); -}; -oop.inherits(Mode, TextMode); - -(function() { - - this.lineCommentStart = "#"; - this.blockComment = [ - {start: "=begin", end: "=cut"}, - {start: "=item", end: "=cut"} - ]; - - - this.getNextLineIndent = function(state, line, tab) { - var indent = this.$getIndent(line); - - var tokenizedLine = this.getTokenizer().getLineTokens(line, state); - var tokens = tokenizedLine.tokens; - - if (tokens.length && tokens[tokens.length-1].type == "comment") { - return indent; - } - - if (state == "start") { - var match = line.match(/^.*[\{\(\[\:]\s*$/); - if (match) { - indent += tab; - } - } - - return indent; - }; - - this.checkOutdent = function(state, line, input) { - return this.$outdent.checkOutdent(line, input); - }; - - this.autoOutdent = function(state, doc, row) { - this.$outdent.autoOutdent(doc, row); - }; - - this.$id = "ace/mode/perl"; -}).call(Mode.prototype); - -exports.Mode = Mode; -}); - -ace.define('ace/mode/perl_highlight_rules', ['require', 'exports', 'module' , 'ace/lib/oop', 'ace/mode/text_highlight_rules'], function(require, exports, module) { - - -var oop = require("../lib/oop"); -var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; - -var PerlHighlightRules = function() { - - var keywords = ( - "base|constant|continue|else|elsif|for|foreach|format|goto|if|last|local|my|next|" + - "no|package|parent|redo|require|scalar|sub|unless|until|while|use|vars" - ); - - var buildinConstants = ("ARGV|ENV|INC|SIG"); - - var builtinFunctions = ( - "getprotobynumber|getprotobyname|getservbyname|gethostbyaddr|" + - "gethostbyname|getservbyport|getnetbyaddr|getnetbyname|getsockname|" + - "getpeername|setpriority|getprotoent|setprotoent|getpriority|" + - "endprotoent|getservent|setservent|endservent|sethostent|socketpair|" + - "getsockopt|gethostent|endhostent|setsockopt|setnetent|quotemeta|" + - "localtime|prototype|getnetent|endnetent|rewinddir|wantarray|getpwuid|" + - "closedir|getlogin|readlink|endgrent|getgrgid|getgrnam|shmwrite|" + - "shutdown|readline|endpwent|setgrent|readpipe|formline|truncate|" + - "dbmclose|syswrite|setpwent|getpwnam|getgrent|getpwent|ucfirst|sysread|" + - "setpgrp|shmread|sysseek|sysopen|telldir|defined|opendir|connect|" + - "lcfirst|getppid|binmode|syscall|sprintf|getpgrp|readdir|seekdir|" + - "waitpid|reverse|unshift|symlink|dbmopen|semget|msgrcv|rename|listen|" + - "chroot|msgsnd|shmctl|accept|unpack|exists|fileno|shmget|system|" + - "unlink|printf|gmtime|msgctl|semctl|values|rindex|substr|splice|" + - "length|msgget|select|socket|return|caller|delete|alarm|ioctl|index|" + - "undef|lstat|times|srand|chown|fcntl|close|write|umask|rmdir|study|" + - "sleep|chomp|untie|print|utime|mkdir|atan2|split|crypt|flock|chmod|" + - "BEGIN|bless|chdir|semop|shift|reset|link|stat|chop|grep|fork|dump|" + - "join|open|tell|pipe|exit|glob|warn|each|bind|sort|pack|eval|push|" + - "keys|getc|kill|seek|sqrt|send|wait|rand|tied|read|time|exec|recv|" + - "eof|chr|int|ord|exp|pos|pop|sin|log|abs|oct|hex|tie|cos|vec|END|ref|" + - "map|die|uc|lc|do" - ); - - var keywordMapper = this.createKeywordMapper({ - "keyword": keywords, - "constant.language": buildinConstants, - "support.function": builtinFunctions - }, "identifier"); - - this.$rules = { - "start" : [ - { - token : "comment.doc", - regex : "^=(?:begin|item)\\b", - next : "block_comment" - }, { - token : "string.regexp", - regex : "[/](?:(?:\\[(?:\\\\]|[^\\]])+\\])|(?:\\\\/|[^\\]/]))*[/]\\w*\\s*(?=[).,;]|$)" - }, { - token : "string", // single line - regex : '["](?:(?:\\\\.)|(?:[^"\\\\]))*?["]' - }, { - token : "string", // multi line string start - regex : '["].*\\\\$', - next : "qqstring" - }, { - token : "string", // single line - regex : "['](?:(?:\\\\.)|(?:[^'\\\\]))*?[']" - }, { - token : "string", // multi line string start - regex : "['].*\\\\$", - next : "qstring" - }, { - token : "constant.numeric", // hex - regex : "0x[0-9a-fA-F]+\\b" - }, { - token : "constant.numeric", // float - regex : "[+-]?\\d+(?:(?:\\.\\d*)?(?:[eE][+-]?\\d+)?)?\\b" - }, { - token : keywordMapper, - regex : "[a-zA-Z_$][a-zA-Z0-9_$]*\\b" - }, { - token : "keyword.operator", - regex : "%#|\\$#|\\.\\.\\.|\\|\\|=|>>=|<<=|<=>|&&=|=>|!~|\\^=|&=|\\|=|\\.=|x=|%=|\\/=|\\*=|\\-=|\\+=|=~|\\*\\*|\\-\\-|\\.\\.|\\|\\||&&|\\+\\+|\\->|!=|==|>=|<=|>>|<<|,|=|\\?\\:|\\^|\\||x|%|\\/|\\*|<|&|\\\\|~|!|>|\\.|\\-|\\+|\\-C|\\-b|\\-S|\\-u|\\-t|\\-p|\\-l|\\-d|\\-f|\\-g|\\-s|\\-z|\\-k|\\-e|\\-O|\\-T|\\-B|\\-M|\\-A|\\-X|\\-W|\\-c|\\-R|\\-o|\\-x|\\-w|\\-r|\\b(?:and|cmp|eq|ge|gt|le|lt|ne|not|or|xor)" - }, { - token : "comment", - regex : "#.*$" - }, { - token : "lparen", - regex : "[[({]" - }, { - token : "rparen", - regex : "[\\])}]" - }, { - token : "text", - regex : "\\s+" - } - ], - "qqstring" : [ - { - token : "string", - regex : '(?:(?:\\\\.)|(?:[^"\\\\]))*?"', - next : "start" - }, { - token : "string", - regex : '.+' - } - ], - "qstring" : [ - { - token : "string", - regex : "(?:(?:\\\\.)|(?:[^'\\\\]))*?'", - next : "start" - }, { - token : "string", - regex : '.+' - } - ], - "block_comment": [ - { - token: "comment.doc", - regex: "^=cut\\b", - next: "start" - }, - { - defaultToken: "comment.doc" - } - ] - }; -}; - -oop.inherits(PerlHighlightRules, TextHighlightRules); - -exports.PerlHighlightRules = PerlHighlightRules; -}); - -ace.define('ace/mode/matching_brace_outdent', ['require', 'exports', 'module' , 'ace/range'], function(require, exports, module) { - - -var Range = require("../range").Range; - -var MatchingBraceOutdent = function() {}; - -(function() { - - this.checkOutdent = function(line, input) { - if (! /^\s+$/.test(line)) - return false; - - return /^\s*\}/.test(input); - }; - - this.autoOutdent = function(doc, row) { - var line = doc.getLine(row); - var match = line.match(/^(\s*\})/); - - if (!match) return 0; - - var column = match[1].length; - var openBracePos = doc.findMatchingBracket({row: row, column: column}); - - if (!openBracePos || openBracePos.row == row) return 0; - - var indent = this.$getIndent(doc.getLine(openBracePos.row)); - doc.replace(new Range(row, 0, row, column-1), indent); - }; - - this.$getIndent = function(line) { - return line.match(/^\s*/)[0]; - }; - -}).call(MatchingBraceOutdent.prototype); - -exports.MatchingBraceOutdent = MatchingBraceOutdent; -}); - -ace.define('ace/mode/folding/cstyle', ['require', 'exports', 'module' , 'ace/lib/oop', 'ace/range', 'ace/mode/folding/fold_mode'], function(require, exports, module) { - - -var oop = require("../../lib/oop"); -var Range = require("../../range").Range; -var BaseFoldMode = require("./fold_mode").FoldMode; - -var FoldMode = exports.FoldMode = function(commentRegex) { - if (commentRegex) { - this.foldingStartMarker = new RegExp( - this.foldingStartMarker.source.replace(/\|[^|]*?$/, "|" + commentRegex.start) - ); - this.foldingStopMarker = new RegExp( - this.foldingStopMarker.source.replace(/\|[^|]*?$/, "|" + commentRegex.end) - ); - } -}; -oop.inherits(FoldMode, BaseFoldMode); - -(function() { - - this.foldingStartMarker = /(\{|\[)[^\}\]]*$|^\s*(\/\*)/; - this.foldingStopMarker = /^[^\[\{]*(\}|\])|^[\s\*]*(\*\/)/; - - this.getFoldWidgetRange = function(session, foldStyle, row, forceMultiline) { - var line = session.getLine(row); - var match = line.match(this.foldingStartMarker); - if (match) { - var i = match.index; - - if (match[1]) - return this.openingBracketBlock(session, match[1], row, i); - - var range = session.getCommentFoldRange(row, i + match[0].length, 1); - - if (range && !range.isMultiLine()) { - if (forceMultiline) { - range = this.getSectionRange(session, row); - } else if (foldStyle != "all") - range = null; - } - - return range; - } - - if (foldStyle === "markbegin") - return; - - var match = line.match(this.foldingStopMarker); - if (match) { - var i = match.index + match[0].length; - - if (match[1]) - return this.closingBracketBlock(session, match[1], row, i); - - return session.getCommentFoldRange(row, i, -1); - } - }; - - this.getSectionRange = function(session, row) { - var line = session.getLine(row); - var startIndent = line.search(/\S/); - var startRow = row; - var startColumn = line.length; - row = row + 1; - var endRow = row; - var maxRow = session.getLength(); - while (++row < maxRow) { - line = session.getLine(row); - var indent = line.search(/\S/); - if (indent === -1) - continue; - if (startIndent > indent) - break; - var subRange = this.getFoldWidgetRange(session, "all", row); - - if (subRange) { - if (subRange.start.row <= startRow) { - break; - } else if (subRange.isMultiLine()) { - row = subRange.end.row; - } else if (startIndent == indent) { - break; - } - } - endRow = row; - } - - return new Range(startRow, startColumn, endRow, session.getLine(endRow).length); - }; - -}).call(FoldMode.prototype); - -}); diff --git a/IDE/jsrealb-ide/ace-src-noconflict/mode-pgsql.js b/IDE/jsrealb-ide/ace-src-noconflict/mode-pgsql.js deleted file mode 100644 index 7a941d59..00000000 --- a/IDE/jsrealb-ide/ace-src-noconflict/mode-pgsql.js +++ /dev/null @@ -1,1356 +0,0 @@ -/* ***** BEGIN LICENSE BLOCK ***** - * Distributed under the BSD license: - * - * Copyright (c) 2010, Ajax.org B.V. - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are met: - * * Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * * Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * * Neither the name of Ajax.org B.V. nor the - * names of its contributors may be used to endorse or promote products - * derived from this software without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND - * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED - * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE - * DISCLAIMED. IN NO EVENT SHALL AJAX.ORG B.V. BE LIABLE FOR ANY - * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES - * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; - * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND - * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - * - * ***** END LICENSE BLOCK ***** */ - -ace.define('ace/mode/pgsql', ['require', 'exports', 'module' , 'ace/lib/oop', 'ace/mode/text', 'ace/tokenizer', 'ace/mode/pgsql_highlight_rules', 'ace/range'], function(require, exports, module) { - -var oop = require("../lib/oop"); -var TextMode = require("../mode/text").Mode; -var Tokenizer = require("../tokenizer").Tokenizer; -var PgsqlHighlightRules = require("./pgsql_highlight_rules").PgsqlHighlightRules; -var Range = require("../range").Range; - -var Mode = function() { - this.HighlightRules = PgsqlHighlightRules; -}; -oop.inherits(Mode, TextMode); - -(function() { - this.lineCommentStart = "--"; - this.blockComment = {start: "/*", end: "*/"}; - - this.getNextLineIndent = function(state, line, tab) { - if (state == "start" || state == "keyword.statementEnd") { - return ""; - } else { - return this.$getIndent(line); // Keep whatever indent the previous line has - } - } - - this.$id = "ace/mode/pgsql"; -}).call(Mode.prototype); - -exports.Mode = Mode; -}); - -ace.define('ace/mode/pgsql_highlight_rules', ['require', 'exports', 'module' , 'ace/lib/oop', 'ace/lib/lang', 'ace/mode/doc_comment_highlight_rules', 'ace/mode/text_highlight_rules', 'ace/mode/perl_highlight_rules', 'ace/mode/python_highlight_rules', 'ace/mode/json_highlight_rules', 'ace/mode/javascript_highlight_rules'], function(require, exports, module) { - -var oop = require("../lib/oop"); -var lang = require("../lib/lang"); -var DocCommentHighlightRules = require("./doc_comment_highlight_rules").DocCommentHighlightRules; -var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; -var PerlHighlightRules = require("./perl_highlight_rules").PerlHighlightRules; -var PythonHighlightRules = require("./python_highlight_rules").PythonHighlightRules; -var JsonHighlightRules = require("./json_highlight_rules").JsonHighlightRules; -var JavaScriptHighlightRules = require("./javascript_highlight_rules").JavaScriptHighlightRules; - -var PgsqlHighlightRules = function() { - var keywords = ( - "abort|absolute|abstime|access|aclitem|action|add|admin|after|aggregate|all|also|alter|always|" + - "analyse|analyze|and|any|anyarray|anyelement|anyenum|anynonarray|anyrange|array|as|asc|" + - "assertion|assignment|asymmetric|at|attribute|authorization|backward|before|begin|between|" + - "bigint|binary|bit|bool|boolean|both|box|bpchar|by|bytea|cache|called|cascade|cascaded|case|cast|" + - "catalog|chain|char|character|characteristics|check|checkpoint|cid|cidr|circle|class|close|" + - "cluster|coalesce|collate|collation|column|comment|comments|commit|committed|concurrently|" + - "configuration|connection|constraint|constraints|content|continue|conversion|copy|cost|" + - "create|cross|cstring|csv|current|current_catalog|current_date|current_role|" + - "current_schema|current_time|current_timestamp|current_user|cursor|cycle|data|database|" + - "date|daterange|day|deallocate|dec|decimal|declare|default|defaults|deferrable|deferred|" + - "definer|delete|delimiter|delimiters|desc|dictionary|disable|discard|distinct|do|document|" + - "domain|double|drop|each|else|enable|encoding|encrypted|end|enum|escape|event|event_trigger|" + - "except|exclude|excluding|exclusive|execute|exists|explain|extension|external|extract|false|" + - "family|fdw_handler|fetch|first|float|float4|float8|following|for|force|foreign|forward|" + - "freeze|from|full|function|functions|global|grant|granted|greatest|group|gtsvector|handler|" + - "having|header|hold|hour|identity|if|ilike|immediate|immutable|implicit|in|including|" + - "increment|index|indexes|inet|inherit|inherits|initially|inline|inner|inout|input|" + - "insensitive|insert|instead|int|int2|int2vector|int4|int4range|int8|int8range|integer|" + - "internal|intersect|interval|into|invoker|is|isnull|isolation|join|json|key|label|language|" + - "language_handler|large|last|lateral|lc_collate|lc_ctype|leading|leakproof|least|left|level|" + - "like|limit|line|listen|load|local|localtime|localtimestamp|location|lock|lseg|macaddr|" + - "mapping|match|materialized|maxvalue|minute|minvalue|mode|money|month|move|name|names|" + - "national|natural|nchar|next|no|none|not|nothing|notify|notnull|nowait|null|nullif|nulls|" + - "numeric|numrange|object|of|off|offset|oid|oids|oidvector|on|only|opaque|operator|option|" + - "options|or|order|out|outer|over|overlaps|overlay|owned|owner|parser|partial|partition|passing|" + - "password|path|pg_attribute|pg_auth_members|pg_authid|pg_class|pg_database|pg_node_tree|" + - "pg_proc|pg_type|placing|plans|point|polygon|position|preceding|precision|prepare|prepared|" + - "preserve|primary|prior|privileges|procedural|procedure|program|quote|range|read|real|" + - "reassign|recheck|record|recursive|ref|refcursor|references|refresh|regclass|regconfig|" + - "regdictionary|regoper|regoperator|regproc|regprocedure|regtype|reindex|relative|release|" + - "reltime|rename|repeatable|replace|replica|reset|restart|restrict|returning|returns|revoke|" + - "right|role|rollback|row|rows|rule|savepoint|schema|scroll|search|second|security|select|" + - "sequence|sequences|serializable|server|session|session_user|set|setof|share|show|similar|" + - "simple|smallint|smgr|snapshot|some|stable|standalone|start|statement|statistics|stdin|" + - "stdout|storage|strict|strip|substring|symmetric|sysid|system|table|tables|tablespace|temp|" + - "template|temporary|text|then|tid|time|timestamp|timestamptz|timetz|tinterval|to|trailing|" + - "transaction|treat|trigger|trim|true|truncate|trusted|tsquery|tsrange|tstzrange|tsvector|" + - "txid_snapshot|type|types|unbounded|uncommitted|unencrypted|union|unique|unknown|unlisten|" + - "unlogged|until|update|user|using|uuid|vacuum|valid|validate|validator|value|values|varbit|" + - "varchar|variadic|varying|verbose|version|view|void|volatile|when|where|whitespace|window|" + - "with|without|work|wrapper|write|xid|xml|xmlattributes|xmlconcat|xmlelement|xmlexists|" + - "xmlforest|xmlparse|xmlpi|xmlroot|xmlserialize|year|yes|zone" - ); - - - var builtinFunctions = ( - "RI_FKey_cascade_del|RI_FKey_cascade_upd|RI_FKey_check_ins|RI_FKey_check_upd|" + - "RI_FKey_noaction_del|RI_FKey_noaction_upd|RI_FKey_restrict_del|RI_FKey_restrict_upd|" + - "RI_FKey_setdefault_del|RI_FKey_setdefault_upd|RI_FKey_setnull_del|" + - "RI_FKey_setnull_upd|abbrev|abs|abstime|abstimeeq|abstimege|abstimegt|abstimein|abstimele|" + - "abstimelt|abstimene|abstimeout|abstimerecv|abstimesend|aclcontains|acldefault|" + - "aclexplode|aclinsert|aclitemeq|aclitemin|aclitemout|aclremove|acos|age|any_in|any_out|" + - "anyarray_in|anyarray_out|anyarray_recv|anyarray_send|anyelement_in|anyelement_out|" + - "anyenum_in|anyenum_out|anynonarray_in|anynonarray_out|anyrange_in|anyrange_out|" + - "anytextcat|area|areajoinsel|areasel|array_agg|array_agg_finalfn|array_agg_transfn|" + - "array_append|array_cat|array_dims|array_eq|array_fill|array_ge|array_gt|array_in|" + - "array_larger|array_le|array_length|array_lower|array_lt|array_ndims|array_ne|array_out|" + - "array_prepend|array_recv|array_remove|array_replace|array_send|array_smaller|" + - "array_to_json|array_to_string|array_typanalyze|array_upper|arraycontained|" + - "arraycontains|arraycontjoinsel|arraycontsel|arrayoverlap|ascii|ascii_to_mic|" + - "ascii_to_utf8|asin|atan|atan2|avg|big5_to_euc_tw|big5_to_mic|big5_to_utf8|bit_and|bit_in|" + - "bit_length|bit_or|bit_out|bit_recv|bit_send|bitand|bitcat|bitcmp|biteq|bitge|bitgt|bitle|" + - "bitlt|bitne|bitnot|bitor|bitshiftleft|bitshiftright|bittypmodin|bittypmodout|bitxor|bool|" + - "bool_and|bool_or|booland_statefunc|booleq|boolge|boolgt|boolin|boolle|boollt|boolne|" + - "boolor_statefunc|boolout|boolrecv|boolsend|box|box_above|box_above_eq|box_add|box_below|" + - "box_below_eq|box_center|box_contain|box_contain_pt|box_contained|box_distance|box_div|" + - "box_eq|box_ge|box_gt|box_in|box_intersect|box_le|box_left|box_lt|box_mul|box_out|" + - "box_overabove|box_overbelow|box_overlap|box_overleft|box_overright|box_recv|box_right|" + - "box_same|box_send|box_sub|bpchar_larger|bpchar_pattern_ge|bpchar_pattern_gt|" + - "bpchar_pattern_le|bpchar_pattern_lt|bpchar_smaller|bpcharcmp|bpchareq|bpcharge|" + - "bpchargt|bpchariclike|bpcharicnlike|bpcharicregexeq|bpcharicregexne|bpcharin|bpcharle|" + - "bpcharlike|bpcharlt|bpcharne|bpcharnlike|bpcharout|bpcharrecv|bpcharregexeq|" + - "bpcharregexne|bpcharsend|bpchartypmodin|bpchartypmodout|broadcast|btabstimecmp|" + - "btarraycmp|btbeginscan|btboolcmp|btbpchar_pattern_cmp|btbuild|btbuildempty|" + - "btbulkdelete|btcanreturn|btcharcmp|btcostestimate|btendscan|btfloat48cmp|btfloat4cmp|" + - "btfloat4sortsupport|btfloat84cmp|btfloat8cmp|btfloat8sortsupport|btgetbitmap|" + - "btgettuple|btinsert|btint24cmp|btint28cmp|btint2cmp|btint2sortsupport|btint42cmp|" + - "btint48cmp|btint4cmp|btint4sortsupport|btint82cmp|btint84cmp|btint8cmp|" + - "btint8sortsupport|btmarkpos|btnamecmp|btnamesortsupport|btoidcmp|btoidsortsupport|" + - "btoidvectorcmp|btoptions|btrecordcmp|btreltimecmp|btrescan|btrestrpos|btrim|" + - "bttext_pattern_cmp|bttextcmp|bttidcmp|bttintervalcmp|btvacuumcleanup|" + - "bytea_string_agg_finalfn|bytea_string_agg_transfn|byteacat|byteacmp|byteaeq|byteage|" + - "byteagt|byteain|byteale|bytealike|bytealt|byteane|byteanlike|byteaout|bytearecv|byteasend|" + - "cash_cmp|cash_div_cash|cash_div_flt4|cash_div_flt8|cash_div_int2|cash_div_int4|cash_eq|" + - "cash_ge|cash_gt|cash_in|cash_le|cash_lt|cash_mi|cash_mul_flt4|cash_mul_flt8|" + - "cash_mul_int2|cash_mul_int4|cash_ne|cash_out|cash_pl|cash_recv|cash_send|cash_words|" + - "cashlarger|cashsmaller|cbrt|ceil|ceiling|center|char|char_length|character_length|chareq|" + - "charge|chargt|charin|charle|charlt|charne|charout|charrecv|charsend|chr|cideq|cidin|cidout|" + - "cidr|cidr_in|cidr_out|cidr_recv|cidr_send|cidrecv|cidsend|circle|circle_above|" + - "circle_add_pt|circle_below|circle_center|circle_contain|circle_contain_pt|" + - "circle_contained|circle_distance|circle_div_pt|circle_eq|circle_ge|circle_gt|circle_in|" + - "circle_le|circle_left|circle_lt|circle_mul_pt|circle_ne|circle_out|circle_overabove|" + - "circle_overbelow|circle_overlap|circle_overleft|circle_overright|circle_recv|" + - "circle_right|circle_same|circle_send|circle_sub_pt|clock_timestamp|close_lb|close_ls|" + - "close_lseg|close_pb|close_pl|close_ps|close_sb|close_sl|col_description|concat|concat_ws|" + - "contjoinsel|contsel|convert|convert_from|convert_to|corr|cos|cot|count|covar_pop|" + - "covar_samp|cstring_in|cstring_out|cstring_recv|cstring_send|cume_dist|current_database|" + - "current_query|current_schema|current_schemas|current_setting|current_user|currtid|" + - "currtid2|currval|cursor_to_xml|cursor_to_xmlschema|database_to_xml|" + - "database_to_xml_and_xmlschema|database_to_xmlschema|date|date_cmp|date_cmp_timestamp|" + - "date_cmp_timestamptz|date_eq|date_eq_timestamp|date_eq_timestamptz|date_ge|" + - "date_ge_timestamp|date_ge_timestamptz|date_gt|date_gt_timestamp|date_gt_timestamptz|" + - "date_in|date_larger|date_le|date_le_timestamp|date_le_timestamptz|date_lt|" + - "date_lt_timestamp|date_lt_timestamptz|date_mi|date_mi_interval|date_mii|date_ne|" + - "date_ne_timestamp|date_ne_timestamptz|date_out|date_part|date_pl_interval|date_pli|" + - "date_recv|date_send|date_smaller|date_sortsupport|date_trunc|daterange|" + - "daterange_canonical|daterange_subdiff|datetime_pl|datetimetz_pl|dcbrt|decode|degrees|" + - "dense_rank|dexp|diagonal|diameter|dispell_init|dispell_lexize|dist_cpoly|dist_lb|dist_pb|" + - "dist_pc|dist_pl|dist_ppath|dist_ps|dist_sb|dist_sl|div|dlog1|dlog10|domain_in|domain_recv|" + - "dpow|dround|dsimple_init|dsimple_lexize|dsnowball_init|dsnowball_lexize|dsqrt|" + - "dsynonym_init|dsynonym_lexize|dtrunc|elem_contained_by_range|encode|enum_cmp|enum_eq|" + - "enum_first|enum_ge|enum_gt|enum_in|enum_larger|enum_last|enum_le|enum_lt|enum_ne|enum_out|" + - "enum_range|enum_recv|enum_send|enum_smaller|eqjoinsel|eqsel|euc_cn_to_mic|" + - "euc_cn_to_utf8|euc_jis_2004_to_shift_jis_2004|euc_jis_2004_to_utf8|euc_jp_to_mic|" + - "euc_jp_to_sjis|euc_jp_to_utf8|euc_kr_to_mic|euc_kr_to_utf8|euc_tw_to_big5|" + - "euc_tw_to_mic|euc_tw_to_utf8|event_trigger_in|event_trigger_out|every|exp|factorial|" + - "family|fdw_handler_in|fdw_handler_out|first_value|float4|float48div|float48eq|float48ge|" + - "float48gt|float48le|float48lt|float48mi|float48mul|float48ne|float48pl|float4_accum|" + - "float4abs|float4div|float4eq|float4ge|float4gt|float4in|float4larger|float4le|float4lt|" + - "float4mi|float4mul|float4ne|float4out|float4pl|float4recv|float4send|float4smaller|" + - "float4um|float4up|float8|float84div|float84eq|float84ge|float84gt|float84le|float84lt|" + - "float84mi|float84mul|float84ne|float84pl|float8_accum|float8_avg|float8_corr|" + - "float8_covar_pop|float8_covar_samp|float8_regr_accum|float8_regr_avgx|" + - "float8_regr_avgy|float8_regr_intercept|float8_regr_r2|float8_regr_slope|" + - "float8_regr_sxx|float8_regr_sxy|float8_regr_syy|float8_stddev_pop|float8_stddev_samp|" + - "float8_var_pop|float8_var_samp|float8abs|float8div|float8eq|float8ge|float8gt|float8in|" + - "float8larger|float8le|float8lt|float8mi|float8mul|float8ne|float8out|float8pl|float8recv|" + - "float8send|float8smaller|float8um|float8up|floor|flt4_mul_cash|flt8_mul_cash|" + - "fmgr_c_validator|fmgr_internal_validator|fmgr_sql_validator|format|format_type|" + - "gb18030_to_utf8|gbk_to_utf8|generate_series|generate_subscripts|get_bit|get_byte|" + - "get_current_ts_config|getdatabaseencoding|getpgusername|gin_cmp_prefix|" + - "gin_cmp_tslexeme|gin_extract_tsquery|gin_extract_tsvector|gin_tsquery_consistent|" + - "ginarrayconsistent|ginarrayextract|ginbeginscan|ginbuild|ginbuildempty|ginbulkdelete|" + - "gincostestimate|ginendscan|gingetbitmap|gininsert|ginmarkpos|ginoptions|" + - "ginqueryarrayextract|ginrescan|ginrestrpos|ginvacuumcleanup|gist_box_compress|" + - "gist_box_consistent|gist_box_decompress|gist_box_penalty|gist_box_picksplit|" + - "gist_box_same|gist_box_union|gist_circle_compress|gist_circle_consistent|" + - "gist_point_compress|gist_point_consistent|gist_point_distance|gist_poly_compress|" + - "gist_poly_consistent|gistbeginscan|gistbuild|gistbuildempty|gistbulkdelete|" + - "gistcostestimate|gistendscan|gistgetbitmap|gistgettuple|gistinsert|gistmarkpos|" + - "gistoptions|gistrescan|gistrestrpos|gistvacuumcleanup|gtsquery_compress|" + - "gtsquery_consistent|gtsquery_decompress|gtsquery_penalty|gtsquery_picksplit|" + - "gtsquery_same|gtsquery_union|gtsvector_compress|gtsvector_consistent|" + - "gtsvector_decompress|gtsvector_penalty|gtsvector_picksplit|gtsvector_same|" + - "gtsvector_union|gtsvectorin|gtsvectorout|has_any_column_privilege|" + - "has_column_privilege|has_database_privilege|has_foreign_data_wrapper_privilege|" + - "has_function_privilege|has_language_privilege|has_schema_privilege|" + - "has_sequence_privilege|has_server_privilege|has_table_privilege|" + - "has_tablespace_privilege|has_type_privilege|hash_aclitem|hash_array|hash_numeric|" + - "hash_range|hashbeginscan|hashbpchar|hashbuild|hashbuildempty|hashbulkdelete|hashchar|" + - "hashcostestimate|hashendscan|hashenum|hashfloat4|hashfloat8|hashgetbitmap|hashgettuple|" + - "hashinet|hashinsert|hashint2|hashint2vector|hashint4|hashint8|hashmacaddr|hashmarkpos|" + - "hashname|hashoid|hashoidvector|hashoptions|hashrescan|hashrestrpos|hashtext|" + - "hashvacuumcleanup|hashvarlena|height|host|hostmask|iclikejoinsel|iclikesel|" + - "icnlikejoinsel|icnlikesel|icregexeqjoinsel|icregexeqsel|icregexnejoinsel|icregexnesel|" + - "inet_client_addr|inet_client_port|inet_in|inet_out|inet_recv|inet_send|" + - "inet_server_addr|inet_server_port|inetand|inetmi|inetmi_int8|inetnot|inetor|inetpl|" + - "initcap|int2|int24div|int24eq|int24ge|int24gt|int24le|int24lt|int24mi|int24mul|int24ne|" + - "int24pl|int28div|int28eq|int28ge|int28gt|int28le|int28lt|int28mi|int28mul|int28ne|int28pl|" + - "int2_accum|int2_avg_accum|int2_mul_cash|int2_sum|int2abs|int2and|int2div|int2eq|int2ge|" + - "int2gt|int2in|int2larger|int2le|int2lt|int2mi|int2mod|int2mul|int2ne|int2not|int2or|int2out|" + - "int2pl|int2recv|int2send|int2shl|int2shr|int2smaller|int2um|int2up|int2vectoreq|" + - "int2vectorin|int2vectorout|int2vectorrecv|int2vectorsend|int2xor|int4|int42div|int42eq|" + - "int42ge|int42gt|int42le|int42lt|int42mi|int42mul|int42ne|int42pl|int48div|int48eq|int48ge|" + - "int48gt|int48le|int48lt|int48mi|int48mul|int48ne|int48pl|int4_accum|int4_avg_accum|" + - "int4_mul_cash|int4_sum|int4abs|int4and|int4div|int4eq|int4ge|int4gt|int4in|int4inc|" + - "int4larger|int4le|int4lt|int4mi|int4mod|int4mul|int4ne|int4not|int4or|int4out|int4pl|" + - "int4range|int4range_canonical|int4range_subdiff|int4recv|int4send|int4shl|int4shr|" + - "int4smaller|int4um|int4up|int4xor|int8|int82div|int82eq|int82ge|int82gt|int82le|int82lt|" + - "int82mi|int82mul|int82ne|int82pl|int84div|int84eq|int84ge|int84gt|int84le|int84lt|int84mi|" + - "int84mul|int84ne|int84pl|int8_accum|int8_avg|int8_avg_accum|int8_sum|int8abs|int8and|" + - "int8div|int8eq|int8ge|int8gt|int8in|int8inc|int8inc_any|int8inc_float8_float8|int8larger|" + - "int8le|int8lt|int8mi|int8mod|int8mul|int8ne|int8not|int8or|int8out|int8pl|int8pl_inet|" + - "int8range|int8range_canonical|int8range_subdiff|int8recv|int8send|int8shl|int8shr|" + - "int8smaller|int8um|int8up|int8xor|integer_pl_date|inter_lb|inter_sb|inter_sl|internal_in|" + - "internal_out|interval_accum|interval_avg|interval_cmp|interval_div|interval_eq|" + - "interval_ge|interval_gt|interval_hash|interval_in|interval_larger|interval_le|" + - "interval_lt|interval_mi|interval_mul|interval_ne|interval_out|interval_pl|" + - "interval_pl_date|interval_pl_time|interval_pl_timestamp|interval_pl_timestamptz|" + - "interval_pl_timetz|interval_recv|interval_send|interval_smaller|interval_transform|" + - "interval_um|intervaltypmodin|intervaltypmodout|intinterval|isclosed|isempty|isfinite|" + - "ishorizontal|iso8859_1_to_utf8|iso8859_to_utf8|iso_to_koi8r|iso_to_mic|iso_to_win1251|" + - "iso_to_win866|isopen|isparallel|isperp|isvertical|johab_to_utf8|json_agg|" + - "json_agg_finalfn|json_agg_transfn|json_array_element|json_array_element_text|" + - "json_array_elements|json_array_length|json_each|json_each_text|json_extract_path|" + - "json_extract_path_op|json_extract_path_text|json_extract_path_text_op|json_in|" + - "json_object_field|json_object_field_text|json_object_keys|json_out|" + - "json_populate_record|json_populate_recordset|json_recv|json_send|justify_days|" + - "justify_hours|justify_interval|koi8r_to_iso|koi8r_to_mic|koi8r_to_utf8|" + - "koi8r_to_win1251|koi8r_to_win866|koi8u_to_utf8|lag|language_handler_in|" + - "language_handler_out|last_value|lastval|latin1_to_mic|latin2_to_mic|latin2_to_win1250|" + - "latin3_to_mic|latin4_to_mic|lead|left|length|like|like_escape|likejoinsel|likesel|line|" + - "line_distance|line_eq|line_horizontal|line_in|line_interpt|line_intersect|line_out|" + - "line_parallel|line_perp|line_recv|line_send|line_vertical|ln|lo_close|lo_creat|lo_create|" + - "lo_export|lo_import|lo_lseek|lo_lseek64|lo_open|lo_tell|lo_tell64|lo_truncate|" + - "lo_truncate64|lo_unlink|log|loread|lower|lower_inc|lower_inf|lowrite|lpad|lseg|lseg_center|" + - "lseg_distance|lseg_eq|lseg_ge|lseg_gt|lseg_horizontal|lseg_in|lseg_interpt|" + - "lseg_intersect|lseg_le|lseg_length|lseg_lt|lseg_ne|lseg_out|lseg_parallel|lseg_perp|" + - "lseg_recv|lseg_send|lseg_vertical|ltrim|macaddr_and|macaddr_cmp|macaddr_eq|macaddr_ge|" + - "macaddr_gt|macaddr_in|macaddr_le|macaddr_lt|macaddr_ne|macaddr_not|macaddr_or|" + - "macaddr_out|macaddr_recv|macaddr_send|makeaclitem|masklen|max|md5|mic_to_ascii|" + - "mic_to_big5|mic_to_euc_cn|mic_to_euc_jp|mic_to_euc_kr|mic_to_euc_tw|mic_to_iso|" + - "mic_to_koi8r|mic_to_latin1|mic_to_latin2|mic_to_latin3|mic_to_latin4|mic_to_sjis|" + - "mic_to_win1250|mic_to_win1251|mic_to_win866|min|mktinterval|mod|money|mul_d_interval|" + - "name|nameeq|namege|namegt|nameiclike|nameicnlike|nameicregexeq|nameicregexne|namein|" + - "namele|namelike|namelt|namene|namenlike|nameout|namerecv|nameregexeq|nameregexne|namesend|" + - "neqjoinsel|neqsel|netmask|network|network_cmp|network_eq|network_ge|network_gt|" + - "network_le|network_lt|network_ne|network_sub|network_subeq|network_sup|network_supeq|" + - "nextval|nlikejoinsel|nlikesel|notlike|now|npoints|nth_value|ntile|numeric_abs|" + - "numeric_accum|numeric_add|numeric_avg|numeric_avg_accum|numeric_cmp|numeric_div|" + - "numeric_div_trunc|numeric_eq|numeric_exp|numeric_fac|numeric_ge|numeric_gt|numeric_in|" + - "numeric_inc|numeric_larger|numeric_le|numeric_ln|numeric_log|numeric_lt|numeric_mod|" + - "numeric_mul|numeric_ne|numeric_out|numeric_power|numeric_recv|numeric_send|" + - "numeric_smaller|numeric_sqrt|numeric_stddev_pop|numeric_stddev_samp|numeric_sub|" + - "numeric_transform|numeric_uminus|numeric_uplus|numeric_var_pop|numeric_var_samp|" + - "numerictypmodin|numerictypmodout|numnode|numrange|numrange_subdiff|obj_description|" + - "octet_length|oid|oideq|oidge|oidgt|oidin|oidlarger|oidle|oidlt|oidne|oidout|oidrecv|oidsend|" + - "oidsmaller|oidvectoreq|oidvectorge|oidvectorgt|oidvectorin|oidvectorle|oidvectorlt|" + - "oidvectorne|oidvectorout|oidvectorrecv|oidvectorsend|oidvectortypes|on_pb|on_pl|" + - "on_ppath|on_ps|on_sb|on_sl|opaque_in|opaque_out|overlaps|overlay|path|path_add|path_add_pt|" + - "path_center|path_contain_pt|path_distance|path_div_pt|path_in|path_inter|path_length|" + - "path_mul_pt|path_n_eq|path_n_ge|path_n_gt|path_n_le|path_n_lt|path_npoints|path_out|" + - "path_recv|path_send|path_sub_pt|pclose|percent_rank|pg_advisory_lock|" + - "pg_advisory_lock_shared|pg_advisory_unlock|pg_advisory_unlock_all|" + - "pg_advisory_unlock_shared|pg_advisory_xact_lock|pg_advisory_xact_lock_shared|" + - "pg_available_extension_versions|pg_available_extensions|pg_backend_pid|" + - "pg_backup_start_time|pg_cancel_backend|pg_char_to_encoding|pg_client_encoding|" + - "pg_collation_for|pg_collation_is_visible|pg_column_is_updatable|pg_column_size|" + - "pg_conf_load_time|pg_conversion_is_visible|pg_create_restore_point|" + - "pg_current_xlog_insert_location|pg_current_xlog_location|pg_cursor|pg_database_size|" + - "pg_describe_object|pg_encoding_max_length|pg_encoding_to_char|" + - "pg_event_trigger_dropped_objects|pg_export_snapshot|pg_extension_config_dump|" + - "pg_extension_update_paths|pg_function_is_visible|pg_get_constraintdef|pg_get_expr|" + - "pg_get_function_arguments|pg_get_function_identity_arguments|" + - "pg_get_function_result|pg_get_functiondef|pg_get_indexdef|pg_get_keywords|" + - "pg_get_multixact_members|pg_get_ruledef|pg_get_serial_sequence|pg_get_triggerdef|" + - "pg_get_userbyid|pg_get_viewdef|pg_has_role|pg_identify_object|pg_indexes_size|" + - "pg_is_in_backup|pg_is_in_recovery|pg_is_other_temp_schema|pg_is_xlog_replay_paused|" + - "pg_last_xact_replay_timestamp|pg_last_xlog_receive_location|" + - "pg_last_xlog_replay_location|pg_listening_channels|pg_lock_status|pg_ls_dir|" + - "pg_my_temp_schema|pg_node_tree_in|pg_node_tree_out|pg_node_tree_recv|" + - "pg_node_tree_send|pg_notify|pg_opclass_is_visible|pg_operator_is_visible|" + - "pg_opfamily_is_visible|pg_options_to_table|pg_postmaster_start_time|" + - "pg_prepared_statement|pg_prepared_xact|pg_read_binary_file|pg_read_file|" + - "pg_relation_filenode|pg_relation_filepath|pg_relation_is_updatable|pg_relation_size|" + - "pg_reload_conf|pg_rotate_logfile|pg_sequence_parameters|pg_show_all_settings|" + - "pg_size_pretty|pg_sleep|pg_start_backup|pg_stat_clear_snapshot|pg_stat_file|" + - "pg_stat_get_activity|pg_stat_get_analyze_count|pg_stat_get_autoanalyze_count|" + - "pg_stat_get_autovacuum_count|pg_stat_get_backend_activity|" + - "pg_stat_get_backend_activity_start|pg_stat_get_backend_client_addr|" + - "pg_stat_get_backend_client_port|pg_stat_get_backend_dbid|pg_stat_get_backend_idset|" + - "pg_stat_get_backend_pid|pg_stat_get_backend_start|pg_stat_get_backend_userid|" + - "pg_stat_get_backend_waiting|pg_stat_get_backend_xact_start|" + - "pg_stat_get_bgwriter_buf_written_checkpoints|" + - "pg_stat_get_bgwriter_buf_written_clean|pg_stat_get_bgwriter_maxwritten_clean|" + - "pg_stat_get_bgwriter_requested_checkpoints|pg_stat_get_bgwriter_stat_reset_time|" + - "pg_stat_get_bgwriter_timed_checkpoints|pg_stat_get_blocks_fetched|" + - "pg_stat_get_blocks_hit|pg_stat_get_buf_alloc|pg_stat_get_buf_fsync_backend|" + - "pg_stat_get_buf_written_backend|pg_stat_get_checkpoint_sync_time|" + - "pg_stat_get_checkpoint_write_time|pg_stat_get_db_blk_read_time|" + - "pg_stat_get_db_blk_write_time|pg_stat_get_db_blocks_fetched|" + - "pg_stat_get_db_blocks_hit|pg_stat_get_db_conflict_all|" + - "pg_stat_get_db_conflict_bufferpin|pg_stat_get_db_conflict_lock|" + - "pg_stat_get_db_conflict_snapshot|pg_stat_get_db_conflict_startup_deadlock|" + - "pg_stat_get_db_conflict_tablespace|pg_stat_get_db_deadlocks|" + - "pg_stat_get_db_numbackends|pg_stat_get_db_stat_reset_time|" + - "pg_stat_get_db_temp_bytes|pg_stat_get_db_temp_files|pg_stat_get_db_tuples_deleted|" + - "pg_stat_get_db_tuples_fetched|pg_stat_get_db_tuples_inserted|" + - "pg_stat_get_db_tuples_returned|pg_stat_get_db_tuples_updated|" + - "pg_stat_get_db_xact_commit|pg_stat_get_db_xact_rollback|pg_stat_get_dead_tuples|" + - "pg_stat_get_function_calls|pg_stat_get_function_self_time|" + - "pg_stat_get_function_total_time|pg_stat_get_last_analyze_time|" + - "pg_stat_get_last_autoanalyze_time|pg_stat_get_last_autovacuum_time|" + - "pg_stat_get_last_vacuum_time|pg_stat_get_live_tuples|pg_stat_get_numscans|" + - "pg_stat_get_tuples_deleted|pg_stat_get_tuples_fetched|" + - "pg_stat_get_tuples_hot_updated|pg_stat_get_tuples_inserted|" + - "pg_stat_get_tuples_returned|pg_stat_get_tuples_updated|pg_stat_get_vacuum_count|" + - "pg_stat_get_wal_senders|pg_stat_get_xact_blocks_fetched|" + - "pg_stat_get_xact_blocks_hit|pg_stat_get_xact_function_calls|" + - "pg_stat_get_xact_function_self_time|pg_stat_get_xact_function_total_time|" + - "pg_stat_get_xact_numscans|pg_stat_get_xact_tuples_deleted|" + - "pg_stat_get_xact_tuples_fetched|pg_stat_get_xact_tuples_hot_updated|" + - "pg_stat_get_xact_tuples_inserted|pg_stat_get_xact_tuples_returned|" + - "pg_stat_get_xact_tuples_updated|pg_stat_reset|pg_stat_reset_shared|" + - "pg_stat_reset_single_function_counters|pg_stat_reset_single_table_counters|" + - "pg_stop_backup|pg_switch_xlog|pg_table_is_visible|pg_table_size|" + - "pg_tablespace_databases|pg_tablespace_location|pg_tablespace_size|" + - "pg_terminate_backend|pg_timezone_abbrevs|pg_timezone_names|pg_total_relation_size|" + - "pg_trigger_depth|pg_try_advisory_lock|pg_try_advisory_lock_shared|" + - "pg_try_advisory_xact_lock|pg_try_advisory_xact_lock_shared|pg_ts_config_is_visible|" + - "pg_ts_dict_is_visible|pg_ts_parser_is_visible|pg_ts_template_is_visible|" + - "pg_type_is_visible|pg_typeof|pg_xlog_location_diff|pg_xlog_replay_pause|" + - "pg_xlog_replay_resume|pg_xlogfile_name|pg_xlogfile_name_offset|pi|plainto_tsquery|" + - "plpgsql_call_handler|plpgsql_inline_handler|plpgsql_validator|point|point_above|" + - "point_add|point_below|point_distance|point_div|point_eq|point_horiz|point_in|point_left|" + - "point_mul|point_ne|point_out|point_recv|point_right|point_send|point_sub|point_vert|" + - "poly_above|poly_below|poly_center|poly_contain|poly_contain_pt|poly_contained|" + - "poly_distance|poly_in|poly_left|poly_npoints|poly_out|poly_overabove|poly_overbelow|" + - "poly_overlap|poly_overleft|poly_overright|poly_recv|poly_right|poly_same|poly_send|" + - "polygon|popen|position|positionjoinsel|positionsel|postgresql_fdw_validator|pow|power|" + - "prsd_end|prsd_headline|prsd_lextype|prsd_nexttoken|prsd_start|pt_contained_circle|" + - "pt_contained_poly|query_to_xml|query_to_xml_and_xmlschema|query_to_xmlschema|" + - "querytree|quote_ident|quote_literal|quote_nullable|radians|radius|random|range_adjacent|" + - "range_after|range_before|range_cmp|range_contained_by|range_contains|" + - "range_contains_elem|range_eq|range_ge|range_gist_compress|range_gist_consistent|" + - "range_gist_decompress|range_gist_penalty|range_gist_picksplit|range_gist_same|" + - "range_gist_union|range_gt|range_in|range_intersect|range_le|range_lt|range_minus|" + - "range_ne|range_out|range_overlaps|range_overleft|range_overright|range_recv|range_send|" + - "range_typanalyze|range_union|rangesel|rank|record_eq|record_ge|record_gt|record_in|" + - "record_le|record_lt|record_ne|record_out|record_recv|record_send|regclass|regclassin|" + - "regclassout|regclassrecv|regclasssend|regconfigin|regconfigout|regconfigrecv|" + - "regconfigsend|regdictionaryin|regdictionaryout|regdictionaryrecv|regdictionarysend|" + - "regexeqjoinsel|regexeqsel|regexnejoinsel|regexnesel|regexp_matches|regexp_replace|" + - "regexp_split_to_array|regexp_split_to_table|regoperatorin|regoperatorout|" + - "regoperatorrecv|regoperatorsend|regoperin|regoperout|regoperrecv|regopersend|" + - "regprocedurein|regprocedureout|regprocedurerecv|regproceduresend|regprocin|regprocout|" + - "regprocrecv|regprocsend|regr_avgx|regr_avgy|regr_count|regr_intercept|regr_r2|" + - "regr_slope|regr_sxx|regr_sxy|regr_syy|regtypein|regtypeout|regtyperecv|regtypesend|" + - "reltime|reltimeeq|reltimege|reltimegt|reltimein|reltimele|reltimelt|reltimene|reltimeout|" + - "reltimerecv|reltimesend|repeat|replace|reverse|right|round|row_number|row_to_json|rpad|" + - "rtrim|scalargtjoinsel|scalargtsel|scalarltjoinsel|scalarltsel|schema_to_xml|" + - "schema_to_xml_and_xmlschema|schema_to_xmlschema|session_user|set_bit|set_byte|" + - "set_config|set_masklen|setseed|setval|setweight|shell_in|shell_out|" + - "shift_jis_2004_to_euc_jis_2004|shift_jis_2004_to_utf8|shobj_description|sign|" + - "similar_escape|sin|sjis_to_euc_jp|sjis_to_mic|sjis_to_utf8|slope|smgreq|smgrin|smgrne|" + - "smgrout|spg_kd_choose|spg_kd_config|spg_kd_inner_consistent|spg_kd_picksplit|" + - "spg_quad_choose|spg_quad_config|spg_quad_inner_consistent|spg_quad_leaf_consistent|" + - "spg_quad_picksplit|spg_range_quad_choose|spg_range_quad_config|" + - "spg_range_quad_inner_consistent|spg_range_quad_leaf_consistent|" + - "spg_range_quad_picksplit|spg_text_choose|spg_text_config|spg_text_inner_consistent|" + - "spg_text_leaf_consistent|spg_text_picksplit|spgbeginscan|spgbuild|spgbuildempty|" + - "spgbulkdelete|spgcanreturn|spgcostestimate|spgendscan|spggetbitmap|spggettuple|" + - "spginsert|spgmarkpos|spgoptions|spgrescan|spgrestrpos|spgvacuumcleanup|split_part|sqrt|" + - "statement_timestamp|stddev|stddev_pop|stddev_samp|string_agg|string_agg_finalfn|" + - "string_agg_transfn|string_to_array|strip|strpos|substr|substring|sum|" + - "suppress_redundant_updates_trigger|table_to_xml|table_to_xml_and_xmlschema|" + - "table_to_xmlschema|tan|text|text_ge|text_gt|text_larger|text_le|text_lt|text_pattern_ge|" + - "text_pattern_gt|text_pattern_le|text_pattern_lt|text_smaller|textanycat|textcat|texteq|" + - "texticlike|texticnlike|texticregexeq|texticregexne|textin|textlen|textlike|textne|" + - "textnlike|textout|textrecv|textregexeq|textregexne|textsend|thesaurus_init|" + - "thesaurus_lexize|tideq|tidge|tidgt|tidin|tidlarger|tidle|tidlt|tidne|tidout|tidrecv|tidsend|" + - "tidsmaller|time_cmp|time_eq|time_ge|time_gt|time_hash|time_in|time_larger|time_le|time_lt|" + - "time_mi_interval|time_mi_time|time_ne|time_out|time_pl_interval|time_recv|time_send|" + - "time_smaller|time_transform|timedate_pl|timemi|timenow|timeofday|timepl|timestamp_cmp|" + - "timestamp_cmp_date|timestamp_cmp_timestamptz|timestamp_eq|timestamp_eq_date|" + - "timestamp_eq_timestamptz|timestamp_ge|timestamp_ge_date|timestamp_ge_timestamptz|" + - "timestamp_gt|timestamp_gt_date|timestamp_gt_timestamptz|timestamp_hash|timestamp_in|" + - "timestamp_larger|timestamp_le|timestamp_le_date|timestamp_le_timestamptz|" + - "timestamp_lt|timestamp_lt_date|timestamp_lt_timestamptz|timestamp_mi|" + - "timestamp_mi_interval|timestamp_ne|timestamp_ne_date|timestamp_ne_timestamptz|" + - "timestamp_out|timestamp_pl_interval|timestamp_recv|timestamp_send|timestamp_smaller|" + - "timestamp_sortsupport|timestamp_transform|timestamptypmodin|timestamptypmodout|" + - "timestamptz_cmp|timestamptz_cmp_date|timestamptz_cmp_timestamp|timestamptz_eq|" + - "timestamptz_eq_date|timestamptz_eq_timestamp|timestamptz_ge|timestamptz_ge_date|" + - "timestamptz_ge_timestamp|timestamptz_gt|timestamptz_gt_date|" + - "timestamptz_gt_timestamp|timestamptz_in|timestamptz_larger|timestamptz_le|" + - "timestamptz_le_date|timestamptz_le_timestamp|timestamptz_lt|timestamptz_lt_date|" + - "timestamptz_lt_timestamp|timestamptz_mi|timestamptz_mi_interval|timestamptz_ne|" + - "timestamptz_ne_date|timestamptz_ne_timestamp|timestamptz_out|" + - "timestamptz_pl_interval|timestamptz_recv|timestamptz_send|timestamptz_smaller|" + - "timestamptztypmodin|timestamptztypmodout|timetypmodin|timetypmodout|timetz_cmp|" + - "timetz_eq|timetz_ge|timetz_gt|timetz_hash|timetz_in|timetz_larger|timetz_le|timetz_lt|" + - "timetz_mi_interval|timetz_ne|timetz_out|timetz_pl_interval|timetz_recv|timetz_send|" + - "timetz_smaller|timetzdate_pl|timetztypmodin|timetztypmodout|timezone|tinterval|" + - "tintervalct|tintervalend|tintervaleq|tintervalge|tintervalgt|tintervalin|tintervalle|" + - "tintervalleneq|tintervallenge|tintervallengt|tintervallenle|tintervallenlt|" + - "tintervallenne|tintervallt|tintervalne|tintervalout|tintervalov|tintervalrecv|" + - "tintervalrel|tintervalsame|tintervalsend|tintervalstart|to_ascii|to_char|to_date|to_hex|" + - "to_json|to_number|to_timestamp|to_tsquery|to_tsvector|transaction_timestamp|translate|" + - "trigger_in|trigger_out|trunc|ts_debug|ts_headline|ts_lexize|ts_match_qv|ts_match_tq|" + - "ts_match_tt|ts_match_vq|ts_parse|ts_rank|ts_rank_cd|ts_rewrite|ts_stat|ts_token_type|" + - "ts_typanalyze|tsmatchjoinsel|tsmatchsel|tsq_mcontained|tsq_mcontains|tsquery_and|" + - "tsquery_cmp|tsquery_eq|tsquery_ge|tsquery_gt|tsquery_le|tsquery_lt|tsquery_ne|" + - "tsquery_not|tsquery_or|tsqueryin|tsqueryout|tsqueryrecv|tsquerysend|tsrange|" + - "tsrange_subdiff|tstzrange|tstzrange_subdiff|tsvector_cmp|tsvector_concat|tsvector_eq|" + - "tsvector_ge|tsvector_gt|tsvector_le|tsvector_lt|tsvector_ne|tsvector_update_trigger|" + - "tsvector_update_trigger_column|tsvectorin|tsvectorout|tsvectorrecv|tsvectorsend|" + - "txid_current|txid_current_snapshot|txid_snapshot_in|txid_snapshot_out|" + - "txid_snapshot_recv|txid_snapshot_send|txid_snapshot_xip|txid_snapshot_xmax|" + - "txid_snapshot_xmin|txid_visible_in_snapshot|uhc_to_utf8|unique_key_recheck|unknownin|" + - "unknownout|unknownrecv|unknownsend|unnest|upper|upper_inc|upper_inf|utf8_to_ascii|" + - "utf8_to_big5|utf8_to_euc_cn|utf8_to_euc_jis_2004|utf8_to_euc_jp|utf8_to_euc_kr|" + - "utf8_to_euc_tw|utf8_to_gb18030|utf8_to_gbk|utf8_to_iso8859|utf8_to_iso8859_1|" + - "utf8_to_johab|utf8_to_koi8r|utf8_to_koi8u|utf8_to_shift_jis_2004|utf8_to_sjis|" + - "utf8_to_uhc|utf8_to_win|uuid_cmp|uuid_eq|uuid_ge|uuid_gt|uuid_hash|uuid_in|uuid_le|" + - "uuid_lt|uuid_ne|uuid_out|uuid_recv|uuid_send|var_pop|var_samp|varbit_in|varbit_out|" + - "varbit_recv|varbit_send|varbit_transform|varbitcmp|varbiteq|varbitge|varbitgt|varbitle|" + - "varbitlt|varbitne|varbittypmodin|varbittypmodout|varchar_transform|varcharin|" + - "varcharout|varcharrecv|varcharsend|varchartypmodin|varchartypmodout|variance|version|" + - "void_in|void_out|void_recv|void_send|width|width_bucket|win1250_to_latin2|" + - "win1250_to_mic|win1251_to_iso|win1251_to_koi8r|win1251_to_mic|win1251_to_win866|" + - "win866_to_iso|win866_to_koi8r|win866_to_mic|win866_to_win1251|win_to_utf8|xideq|" + - "xideqint4|xidin|xidout|xidrecv|xidsend|xml|xml_in|xml_is_well_formed|" + - "xml_is_well_formed_content|xml_is_well_formed_document|xml_out|xml_recv|xml_send|" + - "xmlagg|xmlcomment|xmlconcat2|xmlexists|xmlvalidate|xpath|xpath_exists" - ); - - var keywordMapper = this.createKeywordMapper({ - "support.function": builtinFunctions, - "keyword": keywords - }, "identifier", true); - - - var sqlRules = [{ - token : "string", // single line string -- assume dollar strings if multi-line for now - regex : "['](?:(?:\\\\.)|(?:[^'\\\\]))*?[']" - }, { - token : "variable.language", // pg identifier - regex : '".*?"' - }, { - token : "constant.numeric", // float - regex : "[+-]?\\d+(?:(?:\\.\\d*)?(?:[eE][+-]?\\d+)?)?\\b" - }, { - token : keywordMapper, - regex : "[a-zA-Z_][a-zA-Z0-9_$]*\\b" // TODO - Unicode in identifiers - }, { - token : "keyword.operator", - regex : "!|!!|!~|!~\\*|!~~|!~~\\*|#|##|#<|#<=|#<>|#=|#>|#>=|%|\\&|\\&\\&|\\&<|\\&<\\||\\&>|\\*|\\+|" + - "\\-|/|<|<#>|<\\->|<<|<<=|<<\\||<=|<>|<\\?>|<@|<\\^|=|>|>=|>>|>>=|>\\^|\\?#|\\?\\-|\\?\\-\\||" + - "\\?\\||\\?\\|\\||@|@\\-@|@>|@@|@@@|\\^|\\||\\|\\&>|\\|/|\\|>>|\\|\\||\\|\\|/|~|~\\*|~<=~|~<~|" + - "~=|~>=~|~>~|~~|~~\\*" - }, { - token : "paren.lparen", - regex : "[\\(]" - }, { - token : "paren.rparen", - regex : "[\\)]" - }, { - token : "text", - regex : "\\s+" - } - ]; - - - this.$rules = { - "start" : [{ - token : "comment", - regex : "--.*$" - }, - DocCommentHighlightRules.getStartRule("doc-start"), - { - token : "comment", // multi-line comment - regex : "\\/\\*", - next : "comment" - },{ - token : "keyword.statementBegin", - regex : "^[a-zA-Z]+", // Could enumerate starting keywords but this allows things to work when new statements are added. - next : "statement" - },{ - token : "support.buildin", // psql directive - regex : "^\\\\[\\S]+.*$" - } - ], - - "statement" : [{ - token : "comment", - regex : "--.*$" - }, { - token : "comment", // multi-line comment - regex : "\\/\\*", - next : "commentStatement" - }, { - token : "statementEnd", - regex : ";", - next : "start" - }, { - token : "string", - regex : "\\$perl\\$", - next : "perl-start" - }, { - token : "string", - regex : "\\$python\\$", - next : "python-start" - }, { - token : "string", - regex : "\\$json\\$", - next : "json-start" - }, { - token : "string", - regex : "\\$(js|javascript)\\$", - next : "javascript-start" - }, { - token : "string", - regex : "\\$[\\w_0-9]*\\$$", // dollar quote at the end of a line - next : "dollarSql" - }, { - token : "string", - regex : "\\$[\\w_0-9]*\\$", - next : "dollarStatementString" - } - ].concat(sqlRules), - - "dollarSql" : [{ - token : "comment", - regex : "--.*$" - }, { - token : "comment", // multi-line comment - regex : "\\/\\*", - next : "commentDollarSql" - }, { - token : "string", // end quoting with dollar at the start of a line - regex : "^\\$[\\w_0-9]*\\$", - next : "statement" - }, { - token : "string", - regex : "\\$[\\w_0-9]*\\$", - next : "dollarSqlString" - } - ].concat(sqlRules), - - "comment" : [{ - token : "comment", // closing comment - regex : ".*?\\*\\/", - next : "start" - }, { - token : "comment", // comment spanning whole line - regex : ".+" - } - ], - - "commentStatement" : [{ - token : "comment", // closing comment - regex : ".*?\\*\\/", - next : "statement" - }, { - token : "comment", // comment spanning whole line - regex : ".+" - } - ], - - "commentDollarSql" : [{ - token : "comment", // closing comment - regex : ".*?\\*\\/", - next : "dollarSql" - }, { - token : "comment", // comment spanning whole line - regex : ".+" - } - ], - - "dollarStatementString" : [{ - token : "string", // closing dollarstring - regex : ".*?\\$[\\w_0-9]*\\$", - next : "statement" - }, { - token : "string", // dollarstring spanning whole line - regex : ".+" - } - ], - - "dollarSqlString" : [{ - token : "string", // closing dollarstring - regex : ".*?\\$[\\w_0-9]*\\$", - next : "dollarSql" - }, { - token : "string", // dollarstring spanning whole line - regex : ".+" - } - ] - }; - - this.embedRules(DocCommentHighlightRules, "doc-", [ DocCommentHighlightRules.getEndRule("start") ]); - this.embedRules(PerlHighlightRules, "perl-", [{token : "string", regex : "\\$perl\\$", next : "statement"}]); - this.embedRules(PythonHighlightRules, "python-", [{token : "string", regex : "\\$python\\$", next : "statement"}]); - this.embedRules(JsonHighlightRules, "json-", [{token : "string", regex : "\\$json\\$", next : "statement"}]); - this.embedRules(JavaScriptHighlightRules, "javascript-", [{token : "string", regex : "\\$(js|javascript)\\$", next : "statement"}]); -}; - -oop.inherits(PgsqlHighlightRules, TextHighlightRules); - -exports.PgsqlHighlightRules = PgsqlHighlightRules; -}); - -ace.define('ace/mode/doc_comment_highlight_rules', ['require', 'exports', 'module' , 'ace/lib/oop', 'ace/mode/text_highlight_rules'], function(require, exports, module) { - - -var oop = require("../lib/oop"); -var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; - -var DocCommentHighlightRules = function() { - - this.$rules = { - "start" : [ { - token : "comment.doc.tag", - regex : "@[\\w\\d_]+" // TODO: fix email addresses - }, { - token : "comment.doc.tag", - regex : "\\bTODO\\b" - }, { - defaultToken : "comment.doc" - }] - }; -}; - -oop.inherits(DocCommentHighlightRules, TextHighlightRules); - -DocCommentHighlightRules.getStartRule = function(start) { - return { - token : "comment.doc", // doc comment - regex : "\\/\\*(?=\\*)", - next : start - }; -}; - -DocCommentHighlightRules.getEndRule = function (start) { - return { - token : "comment.doc", // closing comment - regex : "\\*\\/", - next : start - }; -}; - - -exports.DocCommentHighlightRules = DocCommentHighlightRules; - -}); - -ace.define('ace/mode/perl_highlight_rules', ['require', 'exports', 'module' , 'ace/lib/oop', 'ace/mode/text_highlight_rules'], function(require, exports, module) { - - -var oop = require("../lib/oop"); -var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; - -var PerlHighlightRules = function() { - - var keywords = ( - "base|constant|continue|else|elsif|for|foreach|format|goto|if|last|local|my|next|" + - "no|package|parent|redo|require|scalar|sub|unless|until|while|use|vars" - ); - - var buildinConstants = ("ARGV|ENV|INC|SIG"); - - var builtinFunctions = ( - "getprotobynumber|getprotobyname|getservbyname|gethostbyaddr|" + - "gethostbyname|getservbyport|getnetbyaddr|getnetbyname|getsockname|" + - "getpeername|setpriority|getprotoent|setprotoent|getpriority|" + - "endprotoent|getservent|setservent|endservent|sethostent|socketpair|" + - "getsockopt|gethostent|endhostent|setsockopt|setnetent|quotemeta|" + - "localtime|prototype|getnetent|endnetent|rewinddir|wantarray|getpwuid|" + - "closedir|getlogin|readlink|endgrent|getgrgid|getgrnam|shmwrite|" + - "shutdown|readline|endpwent|setgrent|readpipe|formline|truncate|" + - "dbmclose|syswrite|setpwent|getpwnam|getgrent|getpwent|ucfirst|sysread|" + - "setpgrp|shmread|sysseek|sysopen|telldir|defined|opendir|connect|" + - "lcfirst|getppid|binmode|syscall|sprintf|getpgrp|readdir|seekdir|" + - "waitpid|reverse|unshift|symlink|dbmopen|semget|msgrcv|rename|listen|" + - "chroot|msgsnd|shmctl|accept|unpack|exists|fileno|shmget|system|" + - "unlink|printf|gmtime|msgctl|semctl|values|rindex|substr|splice|" + - "length|msgget|select|socket|return|caller|delete|alarm|ioctl|index|" + - "undef|lstat|times|srand|chown|fcntl|close|write|umask|rmdir|study|" + - "sleep|chomp|untie|print|utime|mkdir|atan2|split|crypt|flock|chmod|" + - "BEGIN|bless|chdir|semop|shift|reset|link|stat|chop|grep|fork|dump|" + - "join|open|tell|pipe|exit|glob|warn|each|bind|sort|pack|eval|push|" + - "keys|getc|kill|seek|sqrt|send|wait|rand|tied|read|time|exec|recv|" + - "eof|chr|int|ord|exp|pos|pop|sin|log|abs|oct|hex|tie|cos|vec|END|ref|" + - "map|die|uc|lc|do" - ); - - var keywordMapper = this.createKeywordMapper({ - "keyword": keywords, - "constant.language": buildinConstants, - "support.function": builtinFunctions - }, "identifier"); - - this.$rules = { - "start" : [ - { - token : "comment.doc", - regex : "^=(?:begin|item)\\b", - next : "block_comment" - }, { - token : "string.regexp", - regex : "[/](?:(?:\\[(?:\\\\]|[^\\]])+\\])|(?:\\\\/|[^\\]/]))*[/]\\w*\\s*(?=[).,;]|$)" - }, { - token : "string", // single line - regex : '["](?:(?:\\\\.)|(?:[^"\\\\]))*?["]' - }, { - token : "string", // multi line string start - regex : '["].*\\\\$', - next : "qqstring" - }, { - token : "string", // single line - regex : "['](?:(?:\\\\.)|(?:[^'\\\\]))*?[']" - }, { - token : "string", // multi line string start - regex : "['].*\\\\$", - next : "qstring" - }, { - token : "constant.numeric", // hex - regex : "0x[0-9a-fA-F]+\\b" - }, { - token : "constant.numeric", // float - regex : "[+-]?\\d+(?:(?:\\.\\d*)?(?:[eE][+-]?\\d+)?)?\\b" - }, { - token : keywordMapper, - regex : "[a-zA-Z_$][a-zA-Z0-9_$]*\\b" - }, { - token : "keyword.operator", - regex : "%#|\\$#|\\.\\.\\.|\\|\\|=|>>=|<<=|<=>|&&=|=>|!~|\\^=|&=|\\|=|\\.=|x=|%=|\\/=|\\*=|\\-=|\\+=|=~|\\*\\*|\\-\\-|\\.\\.|\\|\\||&&|\\+\\+|\\->|!=|==|>=|<=|>>|<<|,|=|\\?\\:|\\^|\\||x|%|\\/|\\*|<|&|\\\\|~|!|>|\\.|\\-|\\+|\\-C|\\-b|\\-S|\\-u|\\-t|\\-p|\\-l|\\-d|\\-f|\\-g|\\-s|\\-z|\\-k|\\-e|\\-O|\\-T|\\-B|\\-M|\\-A|\\-X|\\-W|\\-c|\\-R|\\-o|\\-x|\\-w|\\-r|\\b(?:and|cmp|eq|ge|gt|le|lt|ne|not|or|xor)" - }, { - token : "comment", - regex : "#.*$" - }, { - token : "lparen", - regex : "[[({]" - }, { - token : "rparen", - regex : "[\\])}]" - }, { - token : "text", - regex : "\\s+" - } - ], - "qqstring" : [ - { - token : "string", - regex : '(?:(?:\\\\.)|(?:[^"\\\\]))*?"', - next : "start" - }, { - token : "string", - regex : '.+' - } - ], - "qstring" : [ - { - token : "string", - regex : "(?:(?:\\\\.)|(?:[^'\\\\]))*?'", - next : "start" - }, { - token : "string", - regex : '.+' - } - ], - "block_comment": [ - { - token: "comment.doc", - regex: "^=cut\\b", - next: "start" - }, - { - defaultToken: "comment.doc" - } - ] - }; -}; - -oop.inherits(PerlHighlightRules, TextHighlightRules); - -exports.PerlHighlightRules = PerlHighlightRules; -}); - -ace.define('ace/mode/python_highlight_rules', ['require', 'exports', 'module' , 'ace/lib/oop', 'ace/mode/text_highlight_rules'], function(require, exports, module) { - - -var oop = require("../lib/oop"); -var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; - -var PythonHighlightRules = function() { - - var keywords = ( - "and|as|assert|break|class|continue|def|del|elif|else|except|exec|" + - "finally|for|from|global|if|import|in|is|lambda|not|or|pass|print|" + - "raise|return|try|while|with|yield" - ); - - var builtinConstants = ( - "True|False|None|NotImplemented|Ellipsis|__debug__" - ); - - var builtinFunctions = ( - "abs|divmod|input|open|staticmethod|all|enumerate|int|ord|str|any|" + - "eval|isinstance|pow|sum|basestring|execfile|issubclass|print|super|" + - "binfile|iter|property|tuple|bool|filter|len|range|type|bytearray|" + - "float|list|raw_input|unichr|callable|format|locals|reduce|unicode|" + - "chr|frozenset|long|reload|vars|classmethod|getattr|map|repr|xrange|" + - "cmp|globals|max|reversed|zip|compile|hasattr|memoryview|round|" + - "__import__|complex|hash|min|set|apply|delattr|help|next|setattr|" + - "buffer|dict|hex|object|slice|coerce|dir|id|oct|sorted|intern" - ); - var keywordMapper = this.createKeywordMapper({ - "invalid.deprecated": "debugger", - "support.function": builtinFunctions, - "constant.language": builtinConstants, - "keyword": keywords - }, "identifier"); - - var strPre = "(?:r|u|ur|R|U|UR|Ur|uR)?"; - - var decimalInteger = "(?:(?:[1-9]\\d*)|(?:0))"; - var octInteger = "(?:0[oO]?[0-7]+)"; - var hexInteger = "(?:0[xX][\\dA-Fa-f]+)"; - var binInteger = "(?:0[bB][01]+)"; - var integer = "(?:" + decimalInteger + "|" + octInteger + "|" + hexInteger + "|" + binInteger + ")"; - - var exponent = "(?:[eE][+-]?\\d+)"; - var fraction = "(?:\\.\\d+)"; - var intPart = "(?:\\d+)"; - var pointFloat = "(?:(?:" + intPart + "?" + fraction + ")|(?:" + intPart + "\\.))"; - var exponentFloat = "(?:(?:" + pointFloat + "|" + intPart + ")" + exponent + ")"; - var floatNumber = "(?:" + exponentFloat + "|" + pointFloat + ")"; - - var stringEscape = "\\\\(x[0-9A-Fa-f]{2}|[0-7]{3}|[\\\\abfnrtv'\"]|U[0-9A-Fa-f]{8}|u[0-9A-Fa-f]{4})"; - - this.$rules = { - "start" : [ { - token : "comment", - regex : "#.*$" - }, { - token : "string", // multi line """ string start - regex : strPre + '"{3}', - next : "qqstring3" - }, { - token : "string", // " string - regex : strPre + '"(?=.)', - next : "qqstring" - }, { - token : "string", // multi line ''' string start - regex : strPre + "'{3}", - next : "qstring3" - }, { - token : "string", // ' string - regex : strPre + "'(?=.)", - next : "qstring" - }, { - token : "constant.numeric", // imaginary - regex : "(?:" + floatNumber + "|\\d+)[jJ]\\b" - }, { - token : "constant.numeric", // float - regex : floatNumber - }, { - token : "constant.numeric", // long integer - regex : integer + "[lL]\\b" - }, { - token : "constant.numeric", // integer - regex : integer + "\\b" - }, { - token : keywordMapper, - regex : "[a-zA-Z_$][a-zA-Z0-9_$]*\\b" - }, { - token : "keyword.operator", - regex : "\\+|\\-|\\*|\\*\\*|\\/|\\/\\/|%|<<|>>|&|\\||\\^|~|<|>|<=|=>|==|!=|<>|=" - }, { - token : "paren.lparen", - regex : "[\\[\\(\\{]" - }, { - token : "paren.rparen", - regex : "[\\]\\)\\}]" - }, { - token : "text", - regex : "\\s+" - } ], - "qqstring3" : [ { - token : "constant.language.escape", - regex : stringEscape - }, { - token : "string", // multi line """ string end - regex : '"{3}', - next : "start" - }, { - defaultToken : "string" - } ], - "qstring3" : [ { - token : "constant.language.escape", - regex : stringEscape - }, { - token : "string", // multi line ''' string end - regex : "'{3}", - next : "start" - }, { - defaultToken : "string" - } ], - "qqstring" : [{ - token : "constant.language.escape", - regex : stringEscape - }, { - token : "string", - regex : "\\\\$", - next : "qqstring" - }, { - token : "string", - regex : '"|$', - next : "start" - }, { - defaultToken: "string" - }], - "qstring" : [{ - token : "constant.language.escape", - regex : stringEscape - }, { - token : "string", - regex : "\\\\$", - next : "qstring" - }, { - token : "string", - regex : "'|$", - next : "start" - }, { - defaultToken: "string" - }] - }; -}; - -oop.inherits(PythonHighlightRules, TextHighlightRules); - -exports.PythonHighlightRules = PythonHighlightRules; -}); - -ace.define('ace/mode/json_highlight_rules', ['require', 'exports', 'module' , 'ace/lib/oop', 'ace/mode/text_highlight_rules'], function(require, exports, module) { - - -var oop = require("../lib/oop"); -var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; - -var JsonHighlightRules = function() { - this.$rules = { - "start" : [ - { - token : "variable", // single line - regex : '["](?:(?:\\\\.)|(?:[^"\\\\]))*?["]\\s*(?=:)' - }, { - token : "string", // single line - regex : '"', - next : "string" - }, { - token : "constant.numeric", // hex - regex : "0[xX][0-9a-fA-F]+\\b" - }, { - token : "constant.numeric", // float - regex : "[+-]?\\d+(?:(?:\\.\\d*)?(?:[eE][+-]?\\d+)?)?\\b" - }, { - token : "constant.language.boolean", - regex : "(?:true|false)\\b" - }, { - token : "invalid.illegal", // single quoted strings are not allowed - regex : "['](?:(?:\\\\.)|(?:[^'\\\\]))*?[']" - }, { - token : "invalid.illegal", // comments are not allowed - regex : "\\/\\/.*$" - }, { - token : "paren.lparen", - regex : "[[({]" - }, { - token : "paren.rparen", - regex : "[\\])}]" - }, { - token : "text", - regex : "\\s+" - } - ], - "string" : [ - { - token : "constant.language.escape", - regex : /\\(?:x[0-9a-fA-F]{2}|u[0-9a-fA-F]{4}|["\\\/bfnrt])/ - }, { - token : "string", - regex : '[^"\\\\]+' - }, { - token : "string", - regex : '"', - next : "start" - }, { - token : "string", - regex : "", - next : "start" - } - ] - }; - -}; - -oop.inherits(JsonHighlightRules, TextHighlightRules); - -exports.JsonHighlightRules = JsonHighlightRules; -}); - -ace.define('ace/mode/javascript_highlight_rules', ['require', 'exports', 'module' , 'ace/lib/oop', 'ace/mode/doc_comment_highlight_rules', 'ace/mode/text_highlight_rules'], function(require, exports, module) { - - -var oop = require("../lib/oop"); -var DocCommentHighlightRules = require("./doc_comment_highlight_rules").DocCommentHighlightRules; -var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; - -var JavaScriptHighlightRules = function() { - var keywordMapper = this.createKeywordMapper({ - "variable.language": - "Array|Boolean|Date|Function|Iterator|Number|Object|RegExp|String|Proxy|" + // Constructors - "Namespace|QName|XML|XMLList|" + // E4X - "ArrayBuffer|Float32Array|Float64Array|Int16Array|Int32Array|Int8Array|" + - "Uint16Array|Uint32Array|Uint8Array|Uint8ClampedArray|" + - "Error|EvalError|InternalError|RangeError|ReferenceError|StopIteration|" + // Errors - "SyntaxError|TypeError|URIError|" + - "decodeURI|decodeURIComponent|encodeURI|encodeURIComponent|eval|isFinite|" + // Non-constructor functions - "isNaN|parseFloat|parseInt|" + - "JSON|Math|" + // Other - "this|arguments|prototype|window|document" , // Pseudo - "keyword": - "const|yield|import|get|set|" + - "break|case|catch|continue|default|delete|do|else|finally|for|function|" + - "if|in|instanceof|new|return|switch|throw|try|typeof|let|var|while|with|debugger|" + - "__parent__|__count__|escape|unescape|with|__proto__|" + - "class|enum|extends|super|export|implements|private|public|interface|package|protected|static", - "storage.type": - "const|let|var|function", - "constant.language": - "null|Infinity|NaN|undefined", - "support.function": - "alert", - "constant.language.boolean": "true|false" - }, "identifier"); - var kwBeforeRe = "case|do|else|finally|in|instanceof|return|throw|try|typeof|yield|void"; - var identifierRe = "[a-zA-Z\\$_\u00a1-\uffff][a-zA-Z\\d\\$_\u00a1-\uffff]*\\b"; - - var escapedRe = "\\\\(?:x[0-9a-fA-F]{2}|" + // hex - "u[0-9a-fA-F]{4}|" + // unicode - "[0-2][0-7]{0,2}|" + // oct - "3[0-6][0-7]?|" + // oct - "37[0-7]?|" + // oct - "[4-7][0-7]?|" + //oct - ".)"; - - this.$rules = { - "no_regex" : [ - { - token : "comment", - regex : "\\/\\/", - next : "line_comment" - }, - DocCommentHighlightRules.getStartRule("doc-start"), - { - token : "comment", // multi line comment - regex : /\/\*/, - next : "comment" - }, { - token : "string", - regex : "'(?=.)", - next : "qstring" - }, { - token : "string", - regex : '"(?=.)', - next : "qqstring" - }, { - token : "constant.numeric", // hex - regex : /0[xX][0-9a-fA-F]+\b/ - }, { - token : "constant.numeric", // float - regex : /[+-]?\d+(?:(?:\.\d*)?(?:[eE][+-]?\d+)?)?\b/ - }, { - token : [ - "storage.type", "punctuation.operator", "support.function", - "punctuation.operator", "entity.name.function", "text","keyword.operator" - ], - regex : "(" + identifierRe + ")(\\.)(prototype)(\\.)(" + identifierRe +")(\\s*)(=)", - next: "function_arguments" - }, { - token : [ - "storage.type", "punctuation.operator", "entity.name.function", "text", - "keyword.operator", "text", "storage.type", "text", "paren.lparen" - ], - regex : "(" + identifierRe + ")(\\.)(" + identifierRe +")(\\s*)(=)(\\s*)(function)(\\s*)(\\()", - next: "function_arguments" - }, { - token : [ - "entity.name.function", "text", "keyword.operator", "text", "storage.type", - "text", "paren.lparen" - ], - regex : "(" + identifierRe +")(\\s*)(=)(\\s*)(function)(\\s*)(\\()", - next: "function_arguments" - }, { - token : [ - "storage.type", "punctuation.operator", "entity.name.function", "text", - "keyword.operator", "text", - "storage.type", "text", "entity.name.function", "text", "paren.lparen" - ], - regex : "(" + identifierRe + ")(\\.)(" + identifierRe +")(\\s*)(=)(\\s*)(function)(\\s+)(\\w+)(\\s*)(\\()", - next: "function_arguments" - }, { - token : [ - "storage.type", "text", "entity.name.function", "text", "paren.lparen" - ], - regex : "(function)(\\s+)(" + identifierRe + ")(\\s*)(\\()", - next: "function_arguments" - }, { - token : [ - "entity.name.function", "text", "punctuation.operator", - "text", "storage.type", "text", "paren.lparen" - ], - regex : "(" + identifierRe + ")(\\s*)(:)(\\s*)(function)(\\s*)(\\()", - next: "function_arguments" - }, { - token : [ - "text", "text", "storage.type", "text", "paren.lparen" - ], - regex : "(:)(\\s*)(function)(\\s*)(\\()", - next: "function_arguments" - }, { - token : "keyword", - regex : "(?:" + kwBeforeRe + ")\\b", - next : "start" - }, { - token : ["punctuation.operator", "support.function"], - regex : /(\.)(s(?:h(?:ift|ow(?:Mod(?:elessDialog|alDialog)|Help))|croll(?:X|By(?:Pages|Lines)?|Y|To)?|t(?:op|rike)|i(?:n|zeToContent|debar|gnText)|ort|u(?:p|b(?:str(?:ing)?)?)|pli(?:ce|t)|e(?:nd|t(?:Re(?:sizable|questHeader)|M(?:i(?:nutes|lliseconds)|onth)|Seconds|Ho(?:tKeys|urs)|Year|Cursor|Time(?:out)?|Interval|ZOptions|Date|UTC(?:M(?:i(?:nutes|lliseconds)|onth)|Seconds|Hours|Date|FullYear)|FullYear|Active)|arch)|qrt|lice|avePreferences|mall)|h(?:ome|andleEvent)|navigate|c(?:har(?:CodeAt|At)|o(?:s|n(?:cat|textual|firm)|mpile)|eil|lear(?:Timeout|Interval)?|a(?:ptureEvents|ll)|reate(?:StyleSheet|Popup|EventObject))|t(?:o(?:GMTString|S(?:tring|ource)|U(?:TCString|pperCase)|Lo(?:caleString|werCase))|est|a(?:n|int(?:Enabled)?))|i(?:s(?:NaN|Finite)|ndexOf|talics)|d(?:isableExternalCapture|ump|etachEvent)|u(?:n(?:shift|taint|escape|watch)|pdateCommands)|j(?:oin|avaEnabled)|p(?:o(?:p|w)|ush|lugins.refresh|a(?:ddings|rse(?:Int|Float)?)|r(?:int|ompt|eference))|e(?:scape|nableExternalCapture|val|lementFromPoint|x(?:p|ec(?:Script|Command)?))|valueOf|UTC|queryCommand(?:State|Indeterm|Enabled|Value)|f(?:i(?:nd|le(?:ModifiedDate|Size|CreatedDate|UpdatedDate)|xed)|o(?:nt(?:size|color)|rward)|loor|romCharCode)|watch|l(?:ink|o(?:ad|g)|astIndexOf)|a(?:sin|nchor|cos|t(?:tachEvent|ob|an(?:2)?)|pply|lert|b(?:s|ort))|r(?:ou(?:nd|teEvents)|e(?:size(?:By|To)|calc|turnValue|place|verse|l(?:oad|ease(?:Capture|Events)))|andom)|g(?:o|et(?:ResponseHeader|M(?:i(?:nutes|lliseconds)|onth)|Se(?:conds|lection)|Hours|Year|Time(?:zoneOffset)?|Da(?:y|te)|UTC(?:M(?:i(?:nutes|lliseconds)|onth)|Seconds|Hours|Da(?:y|te)|FullYear)|FullYear|A(?:ttention|llResponseHeaders)))|m(?:in|ove(?:B(?:y|elow)|To(?:Absolute)?|Above)|ergeAttributes|a(?:tch|rgins|x))|b(?:toa|ig|o(?:ld|rderWidths)|link|ack))\b(?=\()/ - }, { - token : ["punctuation.operator", "support.function.dom"], - regex : /(\.)(s(?:ub(?:stringData|mit)|plitText|e(?:t(?:NamedItem|Attribute(?:Node)?)|lect))|has(?:ChildNodes|Feature)|namedItem|c(?:l(?:ick|o(?:se|neNode))|reate(?:C(?:omment|DATASection|aption)|T(?:Head|extNode|Foot)|DocumentFragment|ProcessingInstruction|E(?:ntityReference|lement)|Attribute))|tabIndex|i(?:nsert(?:Row|Before|Cell|Data)|tem)|open|delete(?:Row|C(?:ell|aption)|T(?:Head|Foot)|Data)|focus|write(?:ln)?|a(?:dd|ppend(?:Child|Data))|re(?:set|place(?:Child|Data)|move(?:NamedItem|Child|Attribute(?:Node)?)?)|get(?:NamedItem|Element(?:sBy(?:Name|TagName)|ById)|Attribute(?:Node)?)|blur)\b(?=\()/ - }, { - token : ["punctuation.operator", "support.constant"], - regex : /(\.)(s(?:ystemLanguage|cr(?:ipts|ollbars|een(?:X|Y|Top|Left))|t(?:yle(?:Sheets)?|atus(?:Text|bar)?)|ibling(?:Below|Above)|ource|uffixes|e(?:curity(?:Policy)?|l(?:ection|f)))|h(?:istory|ost(?:name)?|as(?:h|Focus))|y|X(?:MLDocument|SLDocument)|n(?:ext|ame(?:space(?:s|URI)|Prop))|M(?:IN_VALUE|AX_VALUE)|c(?:haracterSet|o(?:n(?:structor|trollers)|okieEnabled|lorDepth|mp(?:onents|lete))|urrent|puClass|l(?:i(?:p(?:boardData)?|entInformation)|osed|asses)|alle(?:e|r)|rypto)|t(?:o(?:olbar|p)|ext(?:Transform|Indent|Decoration|Align)|ags)|SQRT(?:1_2|2)|i(?:n(?:ner(?:Height|Width)|put)|ds|gnoreCase)|zIndex|o(?:scpu|n(?:readystatechange|Line)|uter(?:Height|Width)|p(?:sProfile|ener)|ffscreenBuffering)|NEGATIVE_INFINITY|d(?:i(?:splay|alog(?:Height|Top|Width|Left|Arguments)|rectories)|e(?:scription|fault(?:Status|Ch(?:ecked|arset)|View)))|u(?:ser(?:Profile|Language|Agent)|n(?:iqueID|defined)|pdateInterval)|_content|p(?:ixelDepth|ort|ersonalbar|kcs11|l(?:ugins|atform)|a(?:thname|dding(?:Right|Bottom|Top|Left)|rent(?:Window|Layer)?|ge(?:X(?:Offset)?|Y(?:Offset)?))|r(?:o(?:to(?:col|type)|duct(?:Sub)?|mpter)|e(?:vious|fix)))|e(?:n(?:coding|abledPlugin)|x(?:ternal|pando)|mbeds)|v(?:isibility|endor(?:Sub)?|Linkcolor)|URLUnencoded|P(?:I|OSITIVE_INFINITY)|f(?:ilename|o(?:nt(?:Size|Family|Weight)|rmName)|rame(?:s|Element)|gColor)|E|whiteSpace|l(?:i(?:stStyleType|n(?:eHeight|kColor))|o(?:ca(?:tion(?:bar)?|lName)|wsrc)|e(?:ngth|ft(?:Context)?)|a(?:st(?:M(?:odified|atch)|Index|Paren)|yer(?:s|X)|nguage))|a(?:pp(?:MinorVersion|Name|Co(?:deName|re)|Version)|vail(?:Height|Top|Width|Left)|ll|r(?:ity|guments)|Linkcolor|bove)|r(?:ight(?:Context)?|e(?:sponse(?:XML|Text)|adyState))|global|x|m(?:imeTypes|ultiline|enubar|argin(?:Right|Bottom|Top|Left))|L(?:N(?:10|2)|OG(?:10E|2E))|b(?:o(?:ttom|rder(?:Width|RightWidth|BottomWidth|Style|Color|TopWidth|LeftWidth))|ufferDepth|elow|ackground(?:Color|Image)))\b/ - }, { - token : ["storage.type", "punctuation.operator", "support.function.firebug"], - regex : /(console)(\.)(warn|info|log|error|time|timeEnd|assert)\b/ - }, { - token : keywordMapper, - regex : identifierRe - }, { - token : "keyword.operator", - regex : /--|\+\+|[!$%&*+\-~]|===|==|=|!=|!==|<=|>=|<<=|>>=|>>>=|<>|<|>|!|&&|\|\||\?\:|\*=|%=|\+=|\-=|&=|\^=/, - next : "start" - }, { - token : "punctuation.operator", - regex : /\?|\:|\,|\;|\./, - next : "start" - }, { - token : "paren.lparen", - regex : /[\[({]/, - next : "start" - }, { - token : "paren.rparen", - regex : /[\])}]/ - }, { - token : "keyword.operator", - regex : /\/=?/, - next : "start" - }, { - token: "comment", - regex: /^#!.*$/ - } - ], - "start": [ - DocCommentHighlightRules.getStartRule("doc-start"), - { - token : "comment", // multi line comment - regex : "\\/\\*", - next : "comment_regex_allowed" - }, { - token : "comment", - regex : "\\/\\/", - next : "line_comment_regex_allowed" - }, { - token: "string.regexp", - regex: "\\/", - next: "regex" - }, { - token : "text", - regex : "\\s+|^$", - next : "start" - }, { - token: "empty", - regex: "", - next: "no_regex" - } - ], - "regex": [ - { - token: "regexp.keyword.operator", - regex: "\\\\(?:u[\\da-fA-F]{4}|x[\\da-fA-F]{2}|.)" - }, { - token: "string.regexp", - regex: "/[sxngimy]*", - next: "no_regex" - }, { - token : "invalid", - regex: /\{\d+\b,?\d*\}[+*]|[+*$^?][+*]|[$^][?]|\?{3,}/ - }, { - token : "constant.language.escape", - regex: /\(\?[:=!]|\)|\{\d+\b,?\d*\}|[+*]\?|[()$^+*?.]/ - }, { - token : "constant.language.delimiter", - regex: /\|/ - }, { - token: "constant.language.escape", - regex: /\[\^?/, - next: "regex_character_class" - }, { - token: "empty", - regex: "$", - next: "no_regex" - }, { - defaultToken: "string.regexp" - } - ], - "regex_character_class": [ - { - token: "regexp.keyword.operator", - regex: "\\\\(?:u[\\da-fA-F]{4}|x[\\da-fA-F]{2}|.)" - }, { - token: "constant.language.escape", - regex: "]", - next: "regex" - }, { - token: "constant.language.escape", - regex: "-" - }, { - token: "empty", - regex: "$", - next: "no_regex" - }, { - defaultToken: "string.regexp.charachterclass" - } - ], - "function_arguments": [ - { - token: "variable.parameter", - regex: identifierRe - }, { - token: "punctuation.operator", - regex: "[, ]+" - }, { - token: "punctuation.operator", - regex: "$" - }, { - token: "empty", - regex: "", - next: "no_regex" - } - ], - "comment_regex_allowed" : [ - {token : "comment", regex : "\\*\\/", next : "start"}, - {defaultToken : "comment"} - ], - "comment" : [ - {token : "comment", regex : "\\*\\/", next : "no_regex"}, - {defaultToken : "comment"} - ], - "line_comment_regex_allowed" : [ - {token : "comment", regex : "$|^", next : "start"}, - {defaultToken : "comment"} - ], - "line_comment" : [ - {token : "comment", regex : "$|^", next : "no_regex"}, - {defaultToken : "comment"} - ], - "qqstring" : [ - { - token : "constant.language.escape", - regex : escapedRe - }, { - token : "string", - regex : "\\\\$", - next : "qqstring" - }, { - token : "string", - regex : '"|$', - next : "no_regex" - }, { - defaultToken: "string" - } - ], - "qstring" : [ - { - token : "constant.language.escape", - regex : escapedRe - }, { - token : "string", - regex : "\\\\$", - next : "qstring" - }, { - token : "string", - regex : "'|$", - next : "no_regex" - }, { - defaultToken: "string" - } - ] - }; - - this.embedRules(DocCommentHighlightRules, "doc-", - [ DocCommentHighlightRules.getEndRule("no_regex") ]); -}; - -oop.inherits(JavaScriptHighlightRules, TextHighlightRules); - -exports.JavaScriptHighlightRules = JavaScriptHighlightRules; -}); diff --git a/IDE/jsrealb-ide/ace-src-noconflict/mode-php.js b/IDE/jsrealb-ide/ace-src-noconflict/mode-php.js deleted file mode 100644 index b9a6f491..00000000 --- a/IDE/jsrealb-ide/ace-src-noconflict/mode-php.js +++ /dev/null @@ -1,2496 +0,0 @@ -/* ***** BEGIN LICENSE BLOCK ***** - * Distributed under the BSD license: - * - * Copyright (c) 2010, Ajax.org B.V. - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are met: - * * Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * * Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * * Neither the name of Ajax.org B.V. nor the - * names of its contributors may be used to endorse or promote products - * derived from this software without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND - * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED - * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE - * DISCLAIMED. IN NO EVENT SHALL AJAX.ORG B.V. BE LIABLE FOR ANY - * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES - * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; - * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND - * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - * - * ***** END LICENSE BLOCK ***** */ - -ace.define('ace/mode/php', ['require', 'exports', 'module' , 'ace/lib/oop', 'ace/mode/text', 'ace/tokenizer', 'ace/mode/php_highlight_rules', 'ace/mode/matching_brace_outdent', 'ace/range', 'ace/worker/worker_client', 'ace/mode/behaviour/cstyle', 'ace/mode/folding/cstyle', 'ace/unicode'], function(require, exports, module) { - - -var oop = require("../lib/oop"); -var TextMode = require("./text").Mode; -var Tokenizer = require("../tokenizer").Tokenizer; -var PhpHighlightRules = require("./php_highlight_rules").PhpHighlightRules; -var PhpLangHighlightRules = require("./php_highlight_rules").PhpLangHighlightRules; -var MatchingBraceOutdent = require("./matching_brace_outdent").MatchingBraceOutdent; -var Range = require("../range").Range; -var WorkerClient = require("../worker/worker_client").WorkerClient; -var CstyleBehaviour = require("./behaviour/cstyle").CstyleBehaviour; -var CStyleFoldMode = require("./folding/cstyle").FoldMode; -var unicode = require("../unicode"); - -var Mode = function(opts) { - this.inlinePhp = opts && opts.inline; - var HighlightRules = this.inlinePhp ? PhpLangHighlightRules : PhpHighlightRules; - this.HighlightRules = HighlightRules; - this.$outdent = new MatchingBraceOutdent(); - this.$behaviour = new CstyleBehaviour(); - this.foldingRules = new CStyleFoldMode(); -}; -oop.inherits(Mode, TextMode); - -(function() { - - this.tokenRe = new RegExp("^[" - + unicode.packages.L - + unicode.packages.Mn + unicode.packages.Mc - + unicode.packages.Nd - + unicode.packages.Pc + "\_]+", "g" - ); - - this.nonTokenRe = new RegExp("^(?:[^" - + unicode.packages.L - + unicode.packages.Mn + unicode.packages.Mc - + unicode.packages.Nd - + unicode.packages.Pc + "\_]|\s])+", "g" - ); - - - this.lineCommentStart = ["//", "#"]; - this.blockComment = {start: "/*", end: "*/"}; - - this.getNextLineIndent = function(state, line, tab) { - var indent = this.$getIndent(line); - - var tokenizedLine = this.getTokenizer().getLineTokens(line, state); - var tokens = tokenizedLine.tokens; - var endState = tokenizedLine.state; - - - if (tokens.length && tokens[tokens.length-1].type == "comment") { - return indent; - } - - if (state == "php-start") { - var match = line.match(/^.*[\{\(\[\:]\s*$/); - if (match) { - indent += tab; - } - } else if (state == "php-doc-start") { - if (endState != "php-doc-start") { - return ""; - } - var match = line.match(/^\s*(\/?)\*/); - if (match) { - if (match[1]) { - indent += " "; - } - indent += "* "; - } - } - - return indent; - }; - - this.checkOutdent = function(state, line, input) { - return this.$outdent.checkOutdent(line, input); - }; - - this.autoOutdent = function(state, doc, row) { - this.$outdent.autoOutdent(doc, row); - }; - - this.createWorker = function(session) { - var worker = new WorkerClient(["ace"], "ace/mode/php_worker", "PhpWorker"); - worker.attachToDocument(session.getDocument()); - - if (this.inlinePhp) - worker.call("setOptions", [{inline: true}]); - - worker.on("error", function(e) { - session.setAnnotations(e.data); - }); - - worker.on("ok", function() { - session.clearAnnotations(); - }); - - return worker; - }; - - this.$id = "ace/mode/php"; -}).call(Mode.prototype); - -exports.Mode = Mode; -}); - -ace.define('ace/mode/php_highlight_rules', ['require', 'exports', 'module' , 'ace/lib/oop', 'ace/lib/lang', 'ace/mode/doc_comment_highlight_rules', 'ace/mode/text_highlight_rules', 'ace/mode/html_highlight_rules'], function(require, exports, module) { - - -var oop = require("../lib/oop"); -var lang = require("../lib/lang"); -var DocCommentHighlightRules = require("./doc_comment_highlight_rules").DocCommentHighlightRules; -var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; -var HtmlHighlightRules = require("./html_highlight_rules").HtmlHighlightRules; - -var PhpLangHighlightRules = function() { - var docComment = DocCommentHighlightRules; - var builtinFunctions = lang.arrayToMap( - ('abs|acos|acosh|addcslashes|addslashes|aggregate|aggregate_info|aggregate_methods|aggregate_methods_by_list|aggregate_methods_by_regexp|' + - 'aggregate_properties|aggregate_properties_by_list|aggregate_properties_by_regexp|aggregation_info|amqpconnection|amqpexchange|amqpqueue|' + - 'apache_child_terminate|apache_get_modules|apache_get_version|apache_getenv|apache_lookup_uri|apache_note|apache_request_headers|' + - 'apache_reset_timeout|apache_response_headers|apache_setenv|apc_add|apc_bin_dump|apc_bin_dumpfile|apc_bin_load|apc_bin_loadfile|' + - 'apc_cache_info|apc_cas|apc_clear_cache|apc_compile_file|apc_dec|apc_define_constants|apc_delete|apc_delete_file|apc_exists|apc_fetch|' + - 'apc_inc|apc_load_constants|apc_sma_info|apc_store|apciterator|apd_breakpoint|apd_callstack|apd_clunk|apd_continue|apd_croak|' + - 'apd_dump_function_table|apd_dump_persistent_resources|apd_dump_regular_resources|apd_echo|apd_get_active_symbols|apd_set_pprof_trace|' + - 'apd_set_session|apd_set_session_trace|apd_set_session_trace_socket|appenditerator|array|array_change_key_case|array_chunk|array_combine|' + - 'array_count_values|array_diff|array_diff_assoc|array_diff_key|array_diff_uassoc|array_diff_ukey|array_fill|array_fill_keys|array_filter|' + - 'array_flip|array_intersect|array_intersect_assoc|array_intersect_key|array_intersect_uassoc|array_intersect_ukey|array_key_exists|' + - 'array_keys|array_map|array_merge|array_merge_recursive|array_multisort|array_pad|array_pop|array_product|array_push|array_rand|' + - 'array_reduce|array_replace|array_replace_recursive|array_reverse|array_search|array_shift|array_slice|array_splice|array_sum|array_udiff|' + - 'array_udiff_assoc|array_udiff_uassoc|array_uintersect|array_uintersect_assoc|array_uintersect_uassoc|array_unique|array_unshift|' + - 'array_values|array_walk|array_walk_recursive|arrayaccess|arrayiterator|arrayobject|arsort|asin|asinh|asort|assert|assert_options|atan|' + - 'atan2|atanh|audioproperties|badfunctioncallexception|badmethodcallexception|base64_decode|base64_encode|base_convert|basename|' + - 'bbcode_add_element|bbcode_add_smiley|bbcode_create|bbcode_destroy|bbcode_parse|bbcode_set_arg_parser|bbcode_set_flags|bcadd|bccomp|bcdiv|' + - 'bcmod|bcmul|bcompiler_load|bcompiler_load_exe|bcompiler_parse_class|bcompiler_read|bcompiler_write_class|bcompiler_write_constant|' + - 'bcompiler_write_exe_footer|bcompiler_write_file|bcompiler_write_footer|bcompiler_write_function|bcompiler_write_functions_from_file|' + - 'bcompiler_write_header|bcompiler_write_included_filename|bcpow|bcpowmod|bcscale|bcsqrt|bcsub|bin2hex|bind_textdomain_codeset|bindec|' + - 'bindtextdomain|bson_decode|bson_encode|bumpValue|bzclose|bzcompress|bzdecompress|bzerrno|bzerror|bzerrstr|bzflush|bzopen|bzread|bzwrite|' + - 'cachingiterator|cairo|cairo_create|cairo_font_face_get_type|cairo_font_face_status|cairo_font_options_create|cairo_font_options_equal|' + - 'cairo_font_options_get_antialias|cairo_font_options_get_hint_metrics|cairo_font_options_get_hint_style|' + - 'cairo_font_options_get_subpixel_order|cairo_font_options_hash|cairo_font_options_merge|cairo_font_options_set_antialias|' + - 'cairo_font_options_set_hint_metrics|cairo_font_options_set_hint_style|cairo_font_options_set_subpixel_order|cairo_font_options_status|' + - 'cairo_format_stride_for_width|cairo_image_surface_create|cairo_image_surface_create_for_data|cairo_image_surface_create_from_png|' + - 'cairo_image_surface_get_data|cairo_image_surface_get_format|cairo_image_surface_get_height|cairo_image_surface_get_stride|' + - 'cairo_image_surface_get_width|cairo_matrix_create_scale|cairo_matrix_create_translate|cairo_matrix_invert|cairo_matrix_multiply|' + - 'cairo_matrix_rotate|cairo_matrix_transform_distance|cairo_matrix_transform_point|cairo_matrix_translate|cairo_pattern_add_color_stop_rgb|' + - 'cairo_pattern_add_color_stop_rgba|cairo_pattern_create_for_surface|cairo_pattern_create_linear|cairo_pattern_create_radial|' + - 'cairo_pattern_create_rgb|cairo_pattern_create_rgba|cairo_pattern_get_color_stop_count|cairo_pattern_get_color_stop_rgba|' + - 'cairo_pattern_get_extend|cairo_pattern_get_filter|cairo_pattern_get_linear_points|cairo_pattern_get_matrix|' + - 'cairo_pattern_get_radial_circles|cairo_pattern_get_rgba|cairo_pattern_get_surface|cairo_pattern_get_type|cairo_pattern_set_extend|' + - 'cairo_pattern_set_filter|cairo_pattern_set_matrix|cairo_pattern_status|cairo_pdf_surface_create|cairo_pdf_surface_set_size|' + - 'cairo_ps_get_levels|cairo_ps_level_to_string|cairo_ps_surface_create|cairo_ps_surface_dsc_begin_page_setup|' + - 'cairo_ps_surface_dsc_begin_setup|cairo_ps_surface_dsc_comment|cairo_ps_surface_get_eps|cairo_ps_surface_restrict_to_level|' + - 'cairo_ps_surface_set_eps|cairo_ps_surface_set_size|cairo_scaled_font_create|cairo_scaled_font_extents|cairo_scaled_font_get_ctm|' + - 'cairo_scaled_font_get_font_face|cairo_scaled_font_get_font_matrix|cairo_scaled_font_get_font_options|cairo_scaled_font_get_scale_matrix|' + - 'cairo_scaled_font_get_type|cairo_scaled_font_glyph_extents|cairo_scaled_font_status|cairo_scaled_font_text_extents|' + - 'cairo_surface_copy_page|cairo_surface_create_similar|cairo_surface_finish|cairo_surface_flush|cairo_surface_get_content|' + - 'cairo_surface_get_device_offset|cairo_surface_get_font_options|cairo_surface_get_type|cairo_surface_mark_dirty|' + - 'cairo_surface_mark_dirty_rectangle|cairo_surface_set_device_offset|cairo_surface_set_fallback_resolution|cairo_surface_show_page|' + - 'cairo_surface_status|cairo_surface_write_to_png|cairo_svg_surface_create|cairo_svg_surface_restrict_to_version|' + - 'cairo_svg_version_to_string|cairoantialias|cairocontent|cairocontext|cairoexception|cairoextend|cairofillrule|cairofilter|cairofontface|' + - 'cairofontoptions|cairofontslant|cairofonttype|cairofontweight|cairoformat|cairogradientpattern|cairohintmetrics|cairohintstyle|' + - 'cairoimagesurface|cairolineargradient|cairolinecap|cairolinejoin|cairomatrix|cairooperator|cairopath|cairopattern|cairopatterntype|' + - 'cairopdfsurface|cairopslevel|cairopssurface|cairoradialgradient|cairoscaledfont|cairosolidpattern|cairostatus|cairosubpixelorder|' + - 'cairosurface|cairosurfacepattern|cairosurfacetype|cairosvgsurface|cairosvgversion|cairotoyfontface|cal_days_in_month|cal_from_jd|cal_info|' + - 'cal_to_jd|calcul_hmac|calculhmac|call_user_func|call_user_func_array|call_user_method|call_user_method_array|callbackfilteriterator|ceil|' + - 'chdb|chdb_create|chdir|checkdate|checkdnsrr|chgrp|chmod|chop|chown|chr|chroot|chunk_split|class_alias|class_exists|class_implements|' + - 'class_parents|classkit_import|classkit_method_add|classkit_method_copy|classkit_method_redefine|classkit_method_remove|' + - 'classkit_method_rename|clearstatcache|clone|closedir|closelog|collator|com|com_addref|com_create_guid|com_event_sink|com_get|' + - 'com_get_active_object|com_invoke|com_isenum|com_load|com_load_typelib|com_message_pump|com_print_typeinfo|com_propget|com_propput|' + - 'com_propset|com_release|com_set|compact|connection_aborted|connection_status|connection_timeout|constant|construct|construct|construct|' + - 'convert_cyr_string|convert_uudecode|convert_uuencode|copy|cos|cosh|count|count_chars|countable|counter_bump|counter_bump_value|' + - 'counter_create|counter_get|counter_get_meta|counter_get_named|counter_get_value|counter_reset|counter_reset_value|crack_check|' + - 'crack_closedict|crack_getlastmessage|crack_opendict|crc32|create_function|crypt|ctype_alnum|ctype_alpha|ctype_cntrl|ctype_digit|' + - 'ctype_graph|ctype_lower|ctype_print|ctype_punct|ctype_space|ctype_upper|ctype_xdigit|cubrid_affected_rows|cubrid_bind|' + - 'cubrid_client_encoding|cubrid_close|cubrid_close_prepare|cubrid_close_request|cubrid_col_get|cubrid_col_size|cubrid_column_names|' + - 'cubrid_column_types|cubrid_commit|cubrid_connect|cubrid_connect_with_url|cubrid_current_oid|cubrid_data_seek|cubrid_db_name|' + - 'cubrid_disconnect|cubrid_drop|cubrid_errno|cubrid_error|cubrid_error_code|cubrid_error_code_facility|cubrid_error_msg|cubrid_execute|' + - 'cubrid_fetch|cubrid_fetch_array|cubrid_fetch_assoc|cubrid_fetch_field|cubrid_fetch_lengths|cubrid_fetch_object|cubrid_fetch_row|' + - 'cubrid_field_flags|cubrid_field_len|cubrid_field_name|cubrid_field_seek|cubrid_field_table|cubrid_field_type|cubrid_free_result|' + - 'cubrid_get|cubrid_get_autocommit|cubrid_get_charset|cubrid_get_class_name|cubrid_get_client_info|cubrid_get_db_parameter|' + - 'cubrid_get_server_info|cubrid_insert_id|cubrid_is_instance|cubrid_list_dbs|cubrid_load_from_glo|cubrid_lob_close|cubrid_lob_export|' + - 'cubrid_lob_get|cubrid_lob_send|cubrid_lob_size|cubrid_lock_read|cubrid_lock_write|cubrid_move_cursor|cubrid_new_glo|cubrid_next_result|' + - 'cubrid_num_cols|cubrid_num_fields|cubrid_num_rows|cubrid_ping|cubrid_prepare|cubrid_put|cubrid_query|cubrid_real_escape_string|' + - 'cubrid_result|cubrid_rollback|cubrid_save_to_glo|cubrid_schema|cubrid_send_glo|cubrid_seq_drop|cubrid_seq_insert|cubrid_seq_put|' + - 'cubrid_set_add|cubrid_set_autocommit|cubrid_set_db_parameter|cubrid_set_drop|cubrid_unbuffered_query|cubrid_version|curl_close|' + - 'curl_copy_handle|curl_errno|curl_error|curl_exec|curl_getinfo|curl_init|curl_multi_add_handle|curl_multi_close|curl_multi_exec|' + - 'curl_multi_getcontent|curl_multi_info_read|curl_multi_init|curl_multi_remove_handle|curl_multi_select|curl_setopt|curl_setopt_array|' + - 'curl_version|current|cyrus_authenticate|cyrus_bind|cyrus_close|cyrus_connect|cyrus_query|cyrus_unbind|date|date_add|date_create|' + - 'date_create_from_format|date_date_set|date_default_timezone_get|date_default_timezone_set|date_diff|date_format|date_get_last_errors|' + - 'date_interval_create_from_date_string|date_interval_format|date_isodate_set|date_modify|date_offset_get|date_parse|date_parse_from_format|' + - 'date_sub|date_sun_info|date_sunrise|date_sunset|date_time_set|date_timestamp_get|date_timestamp_set|date_timezone_get|date_timezone_set|' + - 'dateinterval|dateperiod|datetime|datetimezone|db2_autocommit|db2_bind_param|db2_client_info|db2_close|db2_column_privileges|db2_columns|' + - 'db2_commit|db2_conn_error|db2_conn_errormsg|db2_connect|db2_cursor_type|db2_escape_string|db2_exec|db2_execute|db2_fetch_array|' + - 'db2_fetch_assoc|db2_fetch_both|db2_fetch_object|db2_fetch_row|db2_field_display_size|db2_field_name|db2_field_num|db2_field_precision|' + - 'db2_field_scale|db2_field_type|db2_field_width|db2_foreign_keys|db2_free_result|db2_free_stmt|db2_get_option|db2_last_insert_id|' + - 'db2_lob_read|db2_next_result|db2_num_fields|db2_num_rows|db2_pclose|db2_pconnect|db2_prepare|db2_primary_keys|db2_procedure_columns|' + - 'db2_procedures|db2_result|db2_rollback|db2_server_info|db2_set_option|db2_special_columns|db2_statistics|db2_stmt_error|db2_stmt_errormsg|' + - 'db2_table_privileges|db2_tables|dba_close|dba_delete|dba_exists|dba_fetch|dba_firstkey|dba_handlers|dba_insert|dba_key_split|dba_list|' + - 'dba_nextkey|dba_open|dba_optimize|dba_popen|dba_replace|dba_sync|dbase_add_record|dbase_close|dbase_create|dbase_delete_record|' + - 'dbase_get_header_info|dbase_get_record|dbase_get_record_with_names|dbase_numfields|dbase_numrecords|dbase_open|dbase_pack|' + - 'dbase_replace_record|dbplus_add|dbplus_aql|dbplus_chdir|dbplus_close|dbplus_curr|dbplus_errcode|dbplus_errno|dbplus_find|dbplus_first|' + - 'dbplus_flush|dbplus_freealllocks|dbplus_freelock|dbplus_freerlocks|dbplus_getlock|dbplus_getunique|dbplus_info|dbplus_last|dbplus_lockrel|' + - 'dbplus_next|dbplus_open|dbplus_prev|dbplus_rchperm|dbplus_rcreate|dbplus_rcrtexact|dbplus_rcrtlike|dbplus_resolve|dbplus_restorepos|' + - 'dbplus_rkeys|dbplus_ropen|dbplus_rquery|dbplus_rrename|dbplus_rsecindex|dbplus_runlink|dbplus_rzap|dbplus_savepos|dbplus_setindex|' + - 'dbplus_setindexbynumber|dbplus_sql|dbplus_tcl|dbplus_tremove|dbplus_undo|dbplus_undoprepare|dbplus_unlockrel|dbplus_unselect|' + - 'dbplus_update|dbplus_xlockrel|dbplus_xunlockrel|dbx_close|dbx_compare|dbx_connect|dbx_error|dbx_escape_string|dbx_fetch_row|dbx_query|' + - 'dbx_sort|dcgettext|dcngettext|deaggregate|debug_backtrace|debug_print_backtrace|debug_zval_dump|decbin|dechex|decoct|define|' + - 'define_syslog_variables|defined|deg2rad|delete|dgettext|die|dio_close|dio_fcntl|dio_open|dio_read|dio_seek|dio_stat|dio_tcsetattr|' + - 'dio_truncate|dio_write|dir|directoryiterator|dirname|disk_free_space|disk_total_space|diskfreespace|dl|dngettext|dns_check_record|' + - 'dns_get_mx|dns_get_record|dom_import_simplexml|domainexception|domattr|domattribute_name|domattribute_set_value|domattribute_specified|' + - 'domattribute_value|domcharacterdata|domcomment|domdocument|domdocument_add_root|domdocument_create_attribute|' + - 'domdocument_create_cdata_section|domdocument_create_comment|domdocument_create_element|domdocument_create_element_ns|' + - 'domdocument_create_entity_reference|domdocument_create_processing_instruction|domdocument_create_text_node|domdocument_doctype|' + - 'domdocument_document_element|domdocument_dump_file|domdocument_dump_mem|domdocument_get_element_by_id|domdocument_get_elements_by_tagname|' + - 'domdocument_html_dump_mem|domdocument_xinclude|domdocumentfragment|domdocumenttype|domdocumenttype_entities|' + - 'domdocumenttype_internal_subset|domdocumenttype_name|domdocumenttype_notations|domdocumenttype_public_id|domdocumenttype_system_id|' + - 'domelement|domelement_get_attribute|domelement_get_attribute_node|domelement_get_elements_by_tagname|domelement_has_attribute|' + - 'domelement_remove_attribute|domelement_set_attribute|domelement_set_attribute_node|domelement_tagname|domentity|domentityreference|' + - 'domexception|domimplementation|domnamednodemap|domnode|domnode_add_namespace|domnode_append_child|domnode_append_sibling|' + - 'domnode_attributes|domnode_child_nodes|domnode_clone_node|domnode_dump_node|domnode_first_child|domnode_get_content|' + - 'domnode_has_attributes|domnode_has_child_nodes|domnode_insert_before|domnode_is_blank_node|domnode_last_child|domnode_next_sibling|' + - 'domnode_node_name|domnode_node_type|domnode_node_value|domnode_owner_document|domnode_parent_node|domnode_prefix|domnode_previous_sibling|' + - 'domnode_remove_child|domnode_replace_child|domnode_replace_node|domnode_set_content|domnode_set_name|domnode_set_namespace|' + - 'domnode_unlink_node|domnodelist|domnotation|domprocessinginstruction|domprocessinginstruction_data|domprocessinginstruction_target|' + - 'domtext|domxml_new_doc|domxml_open_file|domxml_open_mem|domxml_version|domxml_xmltree|domxml_xslt_stylesheet|domxml_xslt_stylesheet_doc|' + - 'domxml_xslt_stylesheet_file|domxml_xslt_version|domxpath|domxsltstylesheet_process|domxsltstylesheet_result_dump_file|' + - 'domxsltstylesheet_result_dump_mem|dotnet|dotnet_load|doubleval|each|easter_date|easter_days|echo|empty|emptyiterator|' + - 'enchant_broker_describe|enchant_broker_dict_exists|enchant_broker_free|enchant_broker_free_dict|enchant_broker_get_error|' + - 'enchant_broker_init|enchant_broker_list_dicts|enchant_broker_request_dict|enchant_broker_request_pwl_dict|enchant_broker_set_ordering|' + - 'enchant_dict_add_to_personal|enchant_dict_add_to_session|enchant_dict_check|enchant_dict_describe|enchant_dict_get_error|' + - 'enchant_dict_is_in_session|enchant_dict_quick_check|enchant_dict_store_replacement|enchant_dict_suggest|end|ereg|ereg_replace|eregi|' + - 'eregi_replace|error_get_last|error_log|error_reporting|errorexception|escapeshellarg|escapeshellcmd|eval|event_add|event_base_free|' + - 'event_base_loop|event_base_loopbreak|event_base_loopexit|event_base_new|event_base_priority_init|event_base_set|event_buffer_base_set|' + - 'event_buffer_disable|event_buffer_enable|event_buffer_fd_set|event_buffer_free|event_buffer_new|event_buffer_priority_set|' + - 'event_buffer_read|event_buffer_set_callback|event_buffer_timeout_set|event_buffer_watermark_set|event_buffer_write|event_del|event_free|' + - 'event_new|event_set|exception|exec|exif_imagetype|exif_read_data|exif_tagname|exif_thumbnail|exit|exp|expect_expectl|expect_popen|explode|' + - 'expm1|export|export|extension_loaded|extract|ezmlm_hash|fam_cancel_monitor|fam_close|fam_monitor_collection|fam_monitor_directory|' + - 'fam_monitor_file|fam_next_event|fam_open|fam_pending|fam_resume_monitor|fam_suspend_monitor|fbsql_affected_rows|fbsql_autocommit|' + - 'fbsql_blob_size|fbsql_change_user|fbsql_clob_size|fbsql_close|fbsql_commit|fbsql_connect|fbsql_create_blob|fbsql_create_clob|' + - 'fbsql_create_db|fbsql_data_seek|fbsql_database|fbsql_database_password|fbsql_db_query|fbsql_db_status|fbsql_drop_db|fbsql_errno|' + - 'fbsql_error|fbsql_fetch_array|fbsql_fetch_assoc|fbsql_fetch_field|fbsql_fetch_lengths|fbsql_fetch_object|fbsql_fetch_row|' + - 'fbsql_field_flags|fbsql_field_len|fbsql_field_name|fbsql_field_seek|fbsql_field_table|fbsql_field_type|fbsql_free_result|' + - 'fbsql_get_autostart_info|fbsql_hostname|fbsql_insert_id|fbsql_list_dbs|fbsql_list_fields|fbsql_list_tables|fbsql_next_result|' + - 'fbsql_num_fields|fbsql_num_rows|fbsql_password|fbsql_pconnect|fbsql_query|fbsql_read_blob|fbsql_read_clob|fbsql_result|fbsql_rollback|' + - 'fbsql_rows_fetched|fbsql_select_db|fbsql_set_characterset|fbsql_set_lob_mode|fbsql_set_password|fbsql_set_transaction|fbsql_start_db|' + - 'fbsql_stop_db|fbsql_table_name|fbsql_tablename|fbsql_username|fbsql_warnings|fclose|fdf_add_doc_javascript|fdf_add_template|fdf_close|' + - 'fdf_create|fdf_enum_values|fdf_errno|fdf_error|fdf_get_ap|fdf_get_attachment|fdf_get_encoding|fdf_get_file|fdf_get_flags|fdf_get_opt|' + - 'fdf_get_status|fdf_get_value|fdf_get_version|fdf_header|fdf_next_field_name|fdf_open|fdf_open_string|fdf_remove_item|fdf_save|' + - 'fdf_save_string|fdf_set_ap|fdf_set_encoding|fdf_set_file|fdf_set_flags|fdf_set_javascript_action|fdf_set_on_import_javascript|fdf_set_opt|' + - 'fdf_set_status|fdf_set_submit_form_action|fdf_set_target_frame|fdf_set_value|fdf_set_version|feof|fflush|fgetc|fgetcsv|fgets|fgetss|file|' + - 'file_exists|file_get_contents|file_put_contents|fileatime|filectime|filegroup|fileinode|filemtime|fileowner|fileperms|filepro|' + - 'filepro_fieldcount|filepro_fieldname|filepro_fieldtype|filepro_fieldwidth|filepro_retrieve|filepro_rowcount|filesize|filesystemiterator|' + - 'filetype|filter_has_var|filter_id|filter_input|filter_input_array|filter_list|filter_var|filter_var_array|filteriterator|finfo_buffer|' + - 'finfo_close|finfo_file|finfo_open|finfo_set_flags|floatval|flock|floor|flush|fmod|fnmatch|fopen|forward_static_call|' + - 'forward_static_call_array|fpassthru|fprintf|fputcsv|fputs|fread|frenchtojd|fribidi_log2vis|fscanf|fseek|fsockopen|fstat|ftell|ftok|' + - 'ftp_alloc|ftp_cdup|ftp_chdir|ftp_chmod|ftp_close|ftp_connect|ftp_delete|ftp_exec|ftp_fget|ftp_fput|ftp_get|ftp_get_option|ftp_login|' + - 'ftp_mdtm|ftp_mkdir|ftp_nb_continue|ftp_nb_fget|ftp_nb_fput|ftp_nb_get|ftp_nb_put|ftp_nlist|ftp_pasv|ftp_put|ftp_pwd|ftp_quit|ftp_raw|' + - 'ftp_rawlist|ftp_rename|ftp_rmdir|ftp_set_option|ftp_site|ftp_size|ftp_ssl_connect|ftp_systype|ftruncate|func_get_arg|func_get_args|' + - 'func_num_args|function_exists|fwrite|gc_collect_cycles|gc_disable|gc_enable|gc_enabled|gd_info|gearmanclient|gearmanjob|gearmantask|' + - 'gearmanworker|geoip_continent_code_by_name|geoip_country_code3_by_name|geoip_country_code_by_name|geoip_country_name_by_name|' + - 'geoip_database_info|geoip_db_avail|geoip_db_filename|geoip_db_get_all_info|geoip_id_by_name|geoip_isp_by_name|geoip_org_by_name|' + - 'geoip_record_by_name|geoip_region_by_name|geoip_region_name_by_code|geoip_time_zone_by_country_and_region|getMeta|getNamed|getValue|' + - 'get_browser|get_called_class|get_cfg_var|get_class|get_class_methods|get_class_vars|get_current_user|get_declared_classes|' + - 'get_declared_interfaces|get_defined_constants|get_defined_functions|get_defined_vars|get_extension_funcs|get_headers|' + - 'get_html_translation_table|get_include_path|get_included_files|get_loaded_extensions|get_magic_quotes_gpc|get_magic_quotes_runtime|' + - 'get_meta_tags|get_object_vars|get_parent_class|get_required_files|get_resource_type|getallheaders|getconstant|getconstants|getconstructor|' + - 'getcwd|getdate|getdefaultproperties|getdoccomment|getendline|getenv|getextension|getextensionname|getfilename|gethostbyaddr|gethostbyname|' + - 'gethostbynamel|gethostname|getimagesize|getinterfacenames|getinterfaces|getlastmod|getmethod|getmethods|getmodifiers|getmxrr|getmygid|' + - 'getmyinode|getmypid|getmyuid|getname|getnamespacename|getopt|getparentclass|getproperties|getproperty|getprotobyname|getprotobynumber|' + - 'getrandmax|getrusage|getservbyname|getservbyport|getshortname|getstartline|getstaticproperties|getstaticpropertyvalue|gettext|' + - 'gettimeofday|gettype|glob|globiterator|gmagick|gmagickdraw|gmagickpixel|gmdate|gmmktime|gmp_abs|gmp_add|gmp_and|gmp_clrbit|gmp_cmp|' + - 'gmp_com|gmp_div|gmp_div_q|gmp_div_qr|gmp_div_r|gmp_divexact|gmp_fact|gmp_gcd|gmp_gcdext|gmp_hamdist|gmp_init|gmp_intval|gmp_invert|' + - 'gmp_jacobi|gmp_legendre|gmp_mod|gmp_mul|gmp_neg|gmp_nextprime|gmp_or|gmp_perfect_square|gmp_popcount|gmp_pow|gmp_powm|gmp_prob_prime|' + - 'gmp_random|gmp_scan0|gmp_scan1|gmp_setbit|gmp_sign|gmp_sqrt|gmp_sqrtrem|gmp_strval|gmp_sub|gmp_testbit|gmp_xor|gmstrftime|' + - 'gnupg_adddecryptkey|gnupg_addencryptkey|gnupg_addsignkey|gnupg_cleardecryptkeys|gnupg_clearencryptkeys|gnupg_clearsignkeys|gnupg_decrypt|' + - 'gnupg_decryptverify|gnupg_encrypt|gnupg_encryptsign|gnupg_export|gnupg_geterror|gnupg_getprotocol|gnupg_import|gnupg_init|gnupg_keyinfo|' + - 'gnupg_setarmor|gnupg_seterrormode|gnupg_setsignmode|gnupg_sign|gnupg_verify|gopher_parsedir|grapheme_extract|grapheme_stripos|' + - 'grapheme_stristr|grapheme_strlen|grapheme_strpos|grapheme_strripos|grapheme_strrpos|grapheme_strstr|grapheme_substr|gregoriantojd|' + - 'gupnp_context_get_host_ip|gupnp_context_get_port|gupnp_context_get_subscription_timeout|gupnp_context_host_path|gupnp_context_new|' + - 'gupnp_context_set_subscription_timeout|gupnp_context_timeout_add|gupnp_context_unhost_path|gupnp_control_point_browse_start|' + - 'gupnp_control_point_browse_stop|gupnp_control_point_callback_set|gupnp_control_point_new|gupnp_device_action_callback_set|' + - 'gupnp_device_info_get|gupnp_device_info_get_service|gupnp_root_device_get_available|gupnp_root_device_get_relative_location|' + - 'gupnp_root_device_new|gupnp_root_device_set_available|gupnp_root_device_start|gupnp_root_device_stop|gupnp_service_action_get|' + - 'gupnp_service_action_return|gupnp_service_action_return_error|gupnp_service_action_set|gupnp_service_freeze_notify|gupnp_service_info_get|' + - 'gupnp_service_info_get_introspection|gupnp_service_introspection_get_state_variable|gupnp_service_notify|gupnp_service_proxy_action_get|' + - 'gupnp_service_proxy_action_set|gupnp_service_proxy_add_notify|gupnp_service_proxy_callback_set|gupnp_service_proxy_get_subscribed|' + - 'gupnp_service_proxy_remove_notify|gupnp_service_proxy_set_subscribed|gupnp_service_thaw_notify|gzclose|gzcompress|gzdecode|gzdeflate|' + - 'gzencode|gzeof|gzfile|gzgetc|gzgets|gzgetss|gzinflate|gzopen|gzpassthru|gzputs|gzread|gzrewind|gzseek|gztell|gzuncompress|gzwrite|' + - 'halt_compiler|haruannotation|haruannotation_setborderstyle|haruannotation_sethighlightmode|haruannotation_seticon|' + - 'haruannotation_setopened|harudestination|harudestination_setfit|harudestination_setfitb|harudestination_setfitbh|harudestination_setfitbv|' + - 'harudestination_setfith|harudestination_setfitr|harudestination_setfitv|harudestination_setxyz|harudoc|harudoc_addpage|' + - 'harudoc_addpagelabel|harudoc_construct|harudoc_createoutline|harudoc_getcurrentencoder|harudoc_getcurrentpage|harudoc_getencoder|' + - 'harudoc_getfont|harudoc_getinfoattr|harudoc_getpagelayout|harudoc_getpagemode|harudoc_getstreamsize|harudoc_insertpage|harudoc_loadjpeg|' + - 'harudoc_loadpng|harudoc_loadraw|harudoc_loadttc|harudoc_loadttf|harudoc_loadtype1|harudoc_output|harudoc_readfromstream|' + - 'harudoc_reseterror|harudoc_resetstream|harudoc_save|harudoc_savetostream|harudoc_setcompressionmode|harudoc_setcurrentencoder|' + - 'harudoc_setencryptionmode|harudoc_setinfoattr|harudoc_setinfodateattr|harudoc_setopenaction|harudoc_setpagelayout|harudoc_setpagemode|' + - 'harudoc_setpagesconfiguration|harudoc_setpassword|harudoc_setpermission|harudoc_usecnsencodings|harudoc_usecnsfonts|' + - 'harudoc_usecntencodings|harudoc_usecntfonts|harudoc_usejpencodings|harudoc_usejpfonts|harudoc_usekrencodings|harudoc_usekrfonts|' + - 'haruencoder|haruencoder_getbytetype|haruencoder_gettype|haruencoder_getunicode|haruencoder_getwritingmode|haruexception|harufont|' + - 'harufont_getascent|harufont_getcapheight|harufont_getdescent|harufont_getencodingname|harufont_getfontname|harufont_gettextwidth|' + - 'harufont_getunicodewidth|harufont_getxheight|harufont_measuretext|haruimage|haruimage_getbitspercomponent|haruimage_getcolorspace|' + - 'haruimage_getheight|haruimage_getsize|haruimage_getwidth|haruimage_setcolormask|haruimage_setmaskimage|haruoutline|' + - 'haruoutline_setdestination|haruoutline_setopened|harupage|harupage_arc|harupage_begintext|harupage_circle|harupage_closepath|' + - 'harupage_concat|harupage_createdestination|harupage_createlinkannotation|harupage_createtextannotation|harupage_createurlannotation|' + - 'harupage_curveto|harupage_curveto2|harupage_curveto3|harupage_drawimage|harupage_ellipse|harupage_endpath|harupage_endtext|' + - 'harupage_eofill|harupage_eofillstroke|harupage_fill|harupage_fillstroke|harupage_getcharspace|harupage_getcmykfill|harupage_getcmykstroke|' + - 'harupage_getcurrentfont|harupage_getcurrentfontsize|harupage_getcurrentpos|harupage_getcurrenttextpos|harupage_getdash|' + - 'harupage_getfillingcolorspace|harupage_getflatness|harupage_getgmode|harupage_getgrayfill|harupage_getgraystroke|harupage_getheight|' + - 'harupage_gethorizontalscaling|harupage_getlinecap|harupage_getlinejoin|harupage_getlinewidth|harupage_getmiterlimit|harupage_getrgbfill|' + - 'harupage_getrgbstroke|harupage_getstrokingcolorspace|harupage_gettextleading|harupage_gettextmatrix|harupage_gettextrenderingmode|' + - 'harupage_gettextrise|harupage_gettextwidth|harupage_gettransmatrix|harupage_getwidth|harupage_getwordspace|harupage_lineto|' + - 'harupage_measuretext|harupage_movetextpos|harupage_moveto|harupage_movetonextline|harupage_rectangle|harupage_setcharspace|' + - 'harupage_setcmykfill|harupage_setcmykstroke|harupage_setdash|harupage_setflatness|harupage_setfontandsize|harupage_setgrayfill|' + - 'harupage_setgraystroke|harupage_setheight|harupage_sethorizontalscaling|harupage_setlinecap|harupage_setlinejoin|harupage_setlinewidth|' + - 'harupage_setmiterlimit|harupage_setrgbfill|harupage_setrgbstroke|harupage_setrotate|harupage_setsize|harupage_setslideshow|' + - 'harupage_settextleading|harupage_settextmatrix|harupage_settextrenderingmode|harupage_settextrise|harupage_setwidth|harupage_setwordspace|' + - 'harupage_showtext|harupage_showtextnextline|harupage_stroke|harupage_textout|harupage_textrect|hasconstant|hash|hash_algos|hash_copy|' + - 'hash_file|hash_final|hash_hmac|hash_hmac_file|hash_init|hash_update|hash_update_file|hash_update_stream|hasmethod|hasproperty|header|' + - 'header_register_callback|header_remove|headers_list|headers_sent|hebrev|hebrevc|hex2bin|hexdec|highlight_file|highlight_string|' + - 'html_entity_decode|htmlentities|htmlspecialchars|htmlspecialchars_decode|http_build_cookie|http_build_query|http_build_str|http_build_url|' + - 'http_cache_etag|http_cache_last_modified|http_chunked_decode|http_date|http_deflate|http_get|http_get_request_body|' + - 'http_get_request_body_stream|http_get_request_headers|http_head|http_inflate|http_match_etag|http_match_modified|' + - 'http_match_request_header|http_negotiate_charset|http_negotiate_content_type|http_negotiate_language|http_parse_cookie|http_parse_headers|' + - 'http_parse_message|http_parse_params|http_persistent_handles_clean|http_persistent_handles_count|http_persistent_handles_ident|' + - 'http_post_data|http_post_fields|http_put_data|http_put_file|http_put_stream|http_redirect|http_request|http_request_body_encode|' + - 'http_request_method_exists|http_request_method_name|http_request_method_register|http_request_method_unregister|http_response_code|' + - 'http_send_content_disposition|http_send_content_type|http_send_data|http_send_file|http_send_last_modified|http_send_status|' + - 'http_send_stream|http_support|http_throttle|httpdeflatestream|httpdeflatestream_construct|httpdeflatestream_factory|' + - 'httpdeflatestream_finish|httpdeflatestream_flush|httpdeflatestream_update|httpinflatestream|httpinflatestream_construct|' + - 'httpinflatestream_factory|httpinflatestream_finish|httpinflatestream_flush|httpinflatestream_update|httpmessage|httpmessage_addheaders|' + - 'httpmessage_construct|httpmessage_detach|httpmessage_factory|httpmessage_fromenv|httpmessage_fromstring|httpmessage_getbody|' + - 'httpmessage_getheader|httpmessage_getheaders|httpmessage_gethttpversion|httpmessage_getparentmessage|httpmessage_getrequestmethod|' + - 'httpmessage_getrequesturl|httpmessage_getresponsecode|httpmessage_getresponsestatus|httpmessage_gettype|httpmessage_guesscontenttype|' + - 'httpmessage_prepend|httpmessage_reverse|httpmessage_send|httpmessage_setbody|httpmessage_setheaders|httpmessage_sethttpversion|' + - 'httpmessage_setrequestmethod|httpmessage_setrequesturl|httpmessage_setresponsecode|httpmessage_setresponsestatus|httpmessage_settype|' + - 'httpmessage_tomessagetypeobject|httpmessage_tostring|httpquerystring|httpquerystring_construct|httpquerystring_get|httpquerystring_mod|' + - 'httpquerystring_set|httpquerystring_singleton|httpquerystring_toarray|httpquerystring_tostring|httpquerystring_xlate|httprequest|' + - 'httprequest_addcookies|httprequest_addheaders|httprequest_addpostfields|httprequest_addpostfile|httprequest_addputdata|' + - 'httprequest_addquerydata|httprequest_addrawpostdata|httprequest_addssloptions|httprequest_clearhistory|httprequest_construct|' + - 'httprequest_enablecookies|httprequest_getcontenttype|httprequest_getcookies|httprequest_getheaders|httprequest_gethistory|' + - 'httprequest_getmethod|httprequest_getoptions|httprequest_getpostfields|httprequest_getpostfiles|httprequest_getputdata|' + - 'httprequest_getputfile|httprequest_getquerydata|httprequest_getrawpostdata|httprequest_getrawrequestmessage|' + - 'httprequest_getrawresponsemessage|httprequest_getrequestmessage|httprequest_getresponsebody|httprequest_getresponsecode|' + - 'httprequest_getresponsecookies|httprequest_getresponsedata|httprequest_getresponseheader|httprequest_getresponseinfo|' + - 'httprequest_getresponsemessage|httprequest_getresponsestatus|httprequest_getssloptions|httprequest_geturl|httprequest_resetcookies|' + - 'httprequest_send|httprequest_setcontenttype|httprequest_setcookies|httprequest_setheaders|httprequest_setmethod|httprequest_setoptions|' + - 'httprequest_setpostfields|httprequest_setpostfiles|httprequest_setputdata|httprequest_setputfile|httprequest_setquerydata|' + - 'httprequest_setrawpostdata|httprequest_setssloptions|httprequest_seturl|httprequestpool|httprequestpool_attach|httprequestpool_construct|' + - 'httprequestpool_destruct|httprequestpool_detach|httprequestpool_getattachedrequests|httprequestpool_getfinishedrequests|' + - 'httprequestpool_reset|httprequestpool_send|httprequestpool_socketperform|httprequestpool_socketselect|httpresponse|httpresponse_capture|' + - 'httpresponse_getbuffersize|httpresponse_getcache|httpresponse_getcachecontrol|httpresponse_getcontentdisposition|' + - 'httpresponse_getcontenttype|httpresponse_getdata|httpresponse_getetag|httpresponse_getfile|httpresponse_getgzip|httpresponse_getheader|' + - 'httpresponse_getlastmodified|httpresponse_getrequestbody|httpresponse_getrequestbodystream|httpresponse_getrequestheaders|' + - 'httpresponse_getstream|httpresponse_getthrottledelay|httpresponse_guesscontenttype|httpresponse_redirect|httpresponse_send|' + - 'httpresponse_setbuffersize|httpresponse_setcache|httpresponse_setcachecontrol|httpresponse_setcontentdisposition|' + - 'httpresponse_setcontenttype|httpresponse_setdata|httpresponse_setetag|httpresponse_setfile|httpresponse_setgzip|httpresponse_setheader|' + - 'httpresponse_setlastmodified|httpresponse_setstream|httpresponse_setthrottledelay|httpresponse_status|hw_array2objrec|hw_changeobject|' + - 'hw_children|hw_childrenobj|hw_close|hw_connect|hw_connection_info|hw_cp|hw_deleteobject|hw_docbyanchor|hw_docbyanchorobj|' + - 'hw_document_attributes|hw_document_bodytag|hw_document_content|hw_document_setcontent|hw_document_size|hw_dummy|hw_edittext|hw_error|' + - 'hw_errormsg|hw_free_document|hw_getanchors|hw_getanchorsobj|hw_getandlock|hw_getchildcoll|hw_getchildcollobj|hw_getchilddoccoll|' + - 'hw_getchilddoccollobj|hw_getobject|hw_getobjectbyquery|hw_getobjectbyquerycoll|hw_getobjectbyquerycollobj|hw_getobjectbyqueryobj|' + - 'hw_getparents|hw_getparentsobj|hw_getrellink|hw_getremote|hw_getremotechildren|hw_getsrcbydestobj|hw_gettext|hw_getusername|hw_identify|' + - 'hw_incollections|hw_info|hw_inscoll|hw_insdoc|hw_insertanchors|hw_insertdocument|hw_insertobject|hw_mapid|hw_modifyobject|hw_mv|' + - 'hw_new_document|hw_objrec2array|hw_output_document|hw_pconnect|hw_pipedocument|hw_root|hw_setlinkroot|hw_stat|hw_unlock|hw_who|' + - 'hwapi_attribute|hwapi_attribute_key|hwapi_attribute_langdepvalue|hwapi_attribute_value|hwapi_attribute_values|hwapi_checkin|' + - 'hwapi_checkout|hwapi_children|hwapi_content|hwapi_content_mimetype|hwapi_content_read|hwapi_copy|hwapi_dbstat|hwapi_dcstat|' + - 'hwapi_dstanchors|hwapi_dstofsrcanchor|hwapi_error_count|hwapi_error_reason|hwapi_find|hwapi_ftstat|hwapi_hgcsp|hwapi_hwstat|' + - 'hwapi_identify|hwapi_info|hwapi_insert|hwapi_insertanchor|hwapi_insertcollection|hwapi_insertdocument|hwapi_link|hwapi_lock|hwapi_move|' + - 'hwapi_new_content|hwapi_object|hwapi_object_assign|hwapi_object_attreditable|hwapi_object_count|hwapi_object_insert|hwapi_object_new|' + - 'hwapi_object_remove|hwapi_object_title|hwapi_object_value|hwapi_objectbyanchor|hwapi_parents|hwapi_reason_description|hwapi_reason_type|' + - 'hwapi_remove|hwapi_replace|hwapi_setcommittedversion|hwapi_srcanchors|hwapi_srcsofdst|hwapi_unlock|hwapi_user|hwapi_userlist|hypot|' + - 'ibase_add_user|ibase_affected_rows|ibase_backup|ibase_blob_add|ibase_blob_cancel|ibase_blob_close|ibase_blob_create|ibase_blob_echo|' + - 'ibase_blob_get|ibase_blob_import|ibase_blob_info|ibase_blob_open|ibase_close|ibase_commit|ibase_commit_ret|ibase_connect|ibase_db_info|' + - 'ibase_delete_user|ibase_drop_db|ibase_errcode|ibase_errmsg|ibase_execute|ibase_fetch_assoc|ibase_fetch_object|ibase_fetch_row|' + - 'ibase_field_info|ibase_free_event_handler|ibase_free_query|ibase_free_result|ibase_gen_id|ibase_maintain_db|ibase_modify_user|' + - 'ibase_name_result|ibase_num_fields|ibase_num_params|ibase_param_info|ibase_pconnect|ibase_prepare|ibase_query|ibase_restore|' + - 'ibase_rollback|ibase_rollback_ret|ibase_server_info|ibase_service_attach|ibase_service_detach|ibase_set_event_handler|ibase_timefmt|' + - 'ibase_trans|ibase_wait_event|iconv|iconv_get_encoding|iconv_mime_decode|iconv_mime_decode_headers|iconv_mime_encode|iconv_set_encoding|' + - 'iconv_strlen|iconv_strpos|iconv_strrpos|iconv_substr|id3_get_frame_long_name|id3_get_frame_short_name|id3_get_genre_id|id3_get_genre_list|' + - 'id3_get_genre_name|id3_get_tag|id3_get_version|id3_remove_tag|id3_set_tag|id3v2attachedpictureframe|id3v2frame|id3v2tag|idate|' + - 'idn_to_ascii|idn_to_unicode|idn_to_utf8|ifx_affected_rows|ifx_blobinfile_mode|ifx_byteasvarchar|ifx_close|ifx_connect|ifx_copy_blob|' + - 'ifx_create_blob|ifx_create_char|ifx_do|ifx_error|ifx_errormsg|ifx_fetch_row|ifx_fieldproperties|ifx_fieldtypes|ifx_free_blob|' + - 'ifx_free_char|ifx_free_result|ifx_get_blob|ifx_get_char|ifx_getsqlca|ifx_htmltbl_result|ifx_nullformat|ifx_num_fields|ifx_num_rows|' + - 'ifx_pconnect|ifx_prepare|ifx_query|ifx_textasvarchar|ifx_update_blob|ifx_update_char|ifxus_close_slob|ifxus_create_slob|ifxus_free_slob|' + - 'ifxus_open_slob|ifxus_read_slob|ifxus_seek_slob|ifxus_tell_slob|ifxus_write_slob|ignore_user_abort|iis_add_server|iis_get_dir_security|' + - 'iis_get_script_map|iis_get_server_by_comment|iis_get_server_by_path|iis_get_server_rights|iis_get_service_state|iis_remove_server|' + - 'iis_set_app_settings|iis_set_dir_security|iis_set_script_map|iis_set_server_rights|iis_start_server|iis_start_service|iis_stop_server|' + - 'iis_stop_service|image2wbmp|image_type_to_extension|image_type_to_mime_type|imagealphablending|imageantialias|imagearc|imagechar|' + - 'imagecharup|imagecolorallocate|imagecolorallocatealpha|imagecolorat|imagecolorclosest|imagecolorclosestalpha|imagecolorclosesthwb|' + - 'imagecolordeallocate|imagecolorexact|imagecolorexactalpha|imagecolormatch|imagecolorresolve|imagecolorresolvealpha|imagecolorset|' + - 'imagecolorsforindex|imagecolorstotal|imagecolortransparent|imageconvolution|imagecopy|imagecopymerge|imagecopymergegray|' + - 'imagecopyresampled|imagecopyresized|imagecreate|imagecreatefromgd|imagecreatefromgd2|imagecreatefromgd2part|imagecreatefromgif|' + - 'imagecreatefromjpeg|imagecreatefrompng|imagecreatefromstring|imagecreatefromwbmp|imagecreatefromxbm|imagecreatefromxpm|' + - 'imagecreatetruecolor|imagedashedline|imagedestroy|imageellipse|imagefill|imagefilledarc|imagefilledellipse|imagefilledpolygon|' + - 'imagefilledrectangle|imagefilltoborder|imagefilter|imagefontheight|imagefontwidth|imageftbbox|imagefttext|imagegammacorrect|imagegd|' + - 'imagegd2|imagegif|imagegrabscreen|imagegrabwindow|imageinterlace|imageistruecolor|imagejpeg|imagelayereffect|imageline|imageloadfont|' + - 'imagepalettecopy|imagepng|imagepolygon|imagepsbbox|imagepsencodefont|imagepsextendfont|imagepsfreefont|imagepsloadfont|imagepsslantfont|' + - 'imagepstext|imagerectangle|imagerotate|imagesavealpha|imagesetbrush|imagesetpixel|imagesetstyle|imagesetthickness|imagesettile|' + - 'imagestring|imagestringup|imagesx|imagesy|imagetruecolortopalette|imagettfbbox|imagettftext|imagetypes|imagewbmp|imagexbm|imagick|' + - 'imagick_adaptiveblurimage|imagick_adaptiveresizeimage|imagick_adaptivesharpenimage|imagick_adaptivethresholdimage|imagick_addimage|' + - 'imagick_addnoiseimage|imagick_affinetransformimage|imagick_animateimages|imagick_annotateimage|imagick_appendimages|imagick_averageimages|' + - 'imagick_blackthresholdimage|imagick_blurimage|imagick_borderimage|imagick_charcoalimage|imagick_chopimage|imagick_clear|imagick_clipimage|' + - 'imagick_clippathimage|imagick_clone|imagick_clutimage|imagick_coalesceimages|imagick_colorfloodfillimage|imagick_colorizeimage|' + - 'imagick_combineimages|imagick_commentimage|imagick_compareimagechannels|imagick_compareimagelayers|imagick_compareimages|' + - 'imagick_compositeimage|imagick_construct|imagick_contrastimage|imagick_contraststretchimage|imagick_convolveimage|imagick_cropimage|' + - 'imagick_cropthumbnailimage|imagick_current|imagick_cyclecolormapimage|imagick_decipherimage|imagick_deconstructimages|' + - 'imagick_deleteimageartifact|imagick_despeckleimage|imagick_destroy|imagick_displayimage|imagick_displayimages|imagick_distortimage|' + - 'imagick_drawimage|imagick_edgeimage|imagick_embossimage|imagick_encipherimage|imagick_enhanceimage|imagick_equalizeimage|' + - 'imagick_evaluateimage|imagick_extentimage|imagick_flattenimages|imagick_flipimage|imagick_floodfillpaintimage|imagick_flopimage|' + - 'imagick_frameimage|imagick_fximage|imagick_gammaimage|imagick_gaussianblurimage|imagick_getcolorspace|imagick_getcompression|' + - 'imagick_getcompressionquality|imagick_getcopyright|imagick_getfilename|imagick_getfont|imagick_getformat|imagick_getgravity|' + - 'imagick_gethomeurl|imagick_getimage|imagick_getimagealphachannel|imagick_getimageartifact|imagick_getimagebackgroundcolor|' + - 'imagick_getimageblob|imagick_getimageblueprimary|imagick_getimagebordercolor|imagick_getimagechanneldepth|' + - 'imagick_getimagechanneldistortion|imagick_getimagechanneldistortions|imagick_getimagechannelextrema|imagick_getimagechannelmean|' + - 'imagick_getimagechannelrange|imagick_getimagechannelstatistics|imagick_getimageclipmask|imagick_getimagecolormapcolor|' + - 'imagick_getimagecolors|imagick_getimagecolorspace|imagick_getimagecompose|imagick_getimagecompression|imagick_getimagecompressionquality|' + - 'imagick_getimagedelay|imagick_getimagedepth|imagick_getimagedispose|imagick_getimagedistortion|imagick_getimageextrema|' + - 'imagick_getimagefilename|imagick_getimageformat|imagick_getimagegamma|imagick_getimagegeometry|imagick_getimagegravity|' + - 'imagick_getimagegreenprimary|imagick_getimageheight|imagick_getimagehistogram|imagick_getimageindex|imagick_getimageinterlacescheme|' + - 'imagick_getimageinterpolatemethod|imagick_getimageiterations|imagick_getimagelength|imagick_getimagemagicklicense|imagick_getimagematte|' + - 'imagick_getimagemattecolor|imagick_getimageorientation|imagick_getimagepage|imagick_getimagepixelcolor|imagick_getimageprofile|' + - 'imagick_getimageprofiles|imagick_getimageproperties|imagick_getimageproperty|imagick_getimageredprimary|imagick_getimageregion|' + - 'imagick_getimagerenderingintent|imagick_getimageresolution|imagick_getimagesblob|imagick_getimagescene|imagick_getimagesignature|' + - 'imagick_getimagesize|imagick_getimagetickspersecond|imagick_getimagetotalinkdensity|imagick_getimagetype|imagick_getimageunits|' + - 'imagick_getimagevirtualpixelmethod|imagick_getimagewhitepoint|imagick_getimagewidth|imagick_getinterlacescheme|imagick_getiteratorindex|' + - 'imagick_getnumberimages|imagick_getoption|imagick_getpackagename|imagick_getpage|imagick_getpixeliterator|imagick_getpixelregioniterator|' + - 'imagick_getpointsize|imagick_getquantumdepth|imagick_getquantumrange|imagick_getreleasedate|imagick_getresource|imagick_getresourcelimit|' + - 'imagick_getsamplingfactors|imagick_getsize|imagick_getsizeoffset|imagick_getversion|imagick_hasnextimage|imagick_haspreviousimage|' + - 'imagick_identifyimage|imagick_implodeimage|imagick_labelimage|imagick_levelimage|imagick_linearstretchimage|imagick_liquidrescaleimage|' + - 'imagick_magnifyimage|imagick_mapimage|imagick_mattefloodfillimage|imagick_medianfilterimage|imagick_mergeimagelayers|imagick_minifyimage|' + - 'imagick_modulateimage|imagick_montageimage|imagick_morphimages|imagick_mosaicimages|imagick_motionblurimage|imagick_negateimage|' + - 'imagick_newimage|imagick_newpseudoimage|imagick_nextimage|imagick_normalizeimage|imagick_oilpaintimage|imagick_opaquepaintimage|' + - 'imagick_optimizeimagelayers|imagick_orderedposterizeimage|imagick_paintfloodfillimage|imagick_paintopaqueimage|' + - 'imagick_painttransparentimage|imagick_pingimage|imagick_pingimageblob|imagick_pingimagefile|imagick_polaroidimage|imagick_posterizeimage|' + - 'imagick_previewimages|imagick_previousimage|imagick_profileimage|imagick_quantizeimage|imagick_quantizeimages|imagick_queryfontmetrics|' + - 'imagick_queryfonts|imagick_queryformats|imagick_radialblurimage|imagick_raiseimage|imagick_randomthresholdimage|imagick_readimage|' + - 'imagick_readimageblob|imagick_readimagefile|imagick_recolorimage|imagick_reducenoiseimage|imagick_removeimage|imagick_removeimageprofile|' + - 'imagick_render|imagick_resampleimage|imagick_resetimagepage|imagick_resizeimage|imagick_rollimage|imagick_rotateimage|' + - 'imagick_roundcorners|imagick_sampleimage|imagick_scaleimage|imagick_separateimagechannel|imagick_sepiatoneimage|' + - 'imagick_setbackgroundcolor|imagick_setcolorspace|imagick_setcompression|imagick_setcompressionquality|imagick_setfilename|' + - 'imagick_setfirstiterator|imagick_setfont|imagick_setformat|imagick_setgravity|imagick_setimage|imagick_setimagealphachannel|' + - 'imagick_setimageartifact|imagick_setimagebackgroundcolor|imagick_setimagebias|imagick_setimageblueprimary|imagick_setimagebordercolor|' + - 'imagick_setimagechanneldepth|imagick_setimageclipmask|imagick_setimagecolormapcolor|imagick_setimagecolorspace|imagick_setimagecompose|' + - 'imagick_setimagecompression|imagick_setimagecompressionquality|imagick_setimagedelay|imagick_setimagedepth|imagick_setimagedispose|' + - 'imagick_setimageextent|imagick_setimagefilename|imagick_setimageformat|imagick_setimagegamma|imagick_setimagegravity|' + - 'imagick_setimagegreenprimary|imagick_setimageindex|imagick_setimageinterlacescheme|imagick_setimageinterpolatemethod|' + - 'imagick_setimageiterations|imagick_setimagematte|imagick_setimagemattecolor|imagick_setimageopacity|imagick_setimageorientation|' + - 'imagick_setimagepage|imagick_setimageprofile|imagick_setimageproperty|imagick_setimageredprimary|imagick_setimagerenderingintent|' + - 'imagick_setimageresolution|imagick_setimagescene|imagick_setimagetickspersecond|imagick_setimagetype|imagick_setimageunits|' + - 'imagick_setimagevirtualpixelmethod|imagick_setimagewhitepoint|imagick_setinterlacescheme|imagick_setiteratorindex|imagick_setlastiterator|' + - 'imagick_setoption|imagick_setpage|imagick_setpointsize|imagick_setresolution|imagick_setresourcelimit|imagick_setsamplingfactors|' + - 'imagick_setsize|imagick_setsizeoffset|imagick_settype|imagick_shadeimage|imagick_shadowimage|imagick_sharpenimage|imagick_shaveimage|' + - 'imagick_shearimage|imagick_sigmoidalcontrastimage|imagick_sketchimage|imagick_solarizeimage|imagick_spliceimage|imagick_spreadimage|' + - 'imagick_steganoimage|imagick_stereoimage|imagick_stripimage|imagick_swirlimage|imagick_textureimage|imagick_thresholdimage|' + - 'imagick_thumbnailimage|imagick_tintimage|imagick_transformimage|imagick_transparentpaintimage|imagick_transposeimage|' + - 'imagick_transverseimage|imagick_trimimage|imagick_uniqueimagecolors|imagick_unsharpmaskimage|imagick_valid|imagick_vignetteimage|' + - 'imagick_waveimage|imagick_whitethresholdimage|imagick_writeimage|imagick_writeimagefile|imagick_writeimages|imagick_writeimagesfile|' + - 'imagickdraw|imagickdraw_affine|imagickdraw_annotation|imagickdraw_arc|imagickdraw_bezier|imagickdraw_circle|imagickdraw_clear|' + - 'imagickdraw_clone|imagickdraw_color|imagickdraw_comment|imagickdraw_composite|imagickdraw_construct|imagickdraw_destroy|' + - 'imagickdraw_ellipse|imagickdraw_getclippath|imagickdraw_getcliprule|imagickdraw_getclipunits|imagickdraw_getfillcolor|' + - 'imagickdraw_getfillopacity|imagickdraw_getfillrule|imagickdraw_getfont|imagickdraw_getfontfamily|imagickdraw_getfontsize|' + - 'imagickdraw_getfontstyle|imagickdraw_getfontweight|imagickdraw_getgravity|imagickdraw_getstrokeantialias|imagickdraw_getstrokecolor|' + - 'imagickdraw_getstrokedasharray|imagickdraw_getstrokedashoffset|imagickdraw_getstrokelinecap|imagickdraw_getstrokelinejoin|' + - 'imagickdraw_getstrokemiterlimit|imagickdraw_getstrokeopacity|imagickdraw_getstrokewidth|imagickdraw_gettextalignment|' + - 'imagickdraw_gettextantialias|imagickdraw_gettextdecoration|imagickdraw_gettextencoding|imagickdraw_gettextundercolor|' + - 'imagickdraw_getvectorgraphics|imagickdraw_line|imagickdraw_matte|imagickdraw_pathclose|imagickdraw_pathcurvetoabsolute|' + - 'imagickdraw_pathcurvetoquadraticbezierabsolute|imagickdraw_pathcurvetoquadraticbezierrelative|' + - 'imagickdraw_pathcurvetoquadraticbeziersmoothabsolute|imagickdraw_pathcurvetoquadraticbeziersmoothrelative|imagickdraw_pathcurvetorelative|' + - 'imagickdraw_pathcurvetosmoothabsolute|imagickdraw_pathcurvetosmoothrelative|imagickdraw_pathellipticarcabsolute|' + - 'imagickdraw_pathellipticarcrelative|imagickdraw_pathfinish|imagickdraw_pathlinetoabsolute|imagickdraw_pathlinetohorizontalabsolute|' + - 'imagickdraw_pathlinetohorizontalrelative|imagickdraw_pathlinetorelative|imagickdraw_pathlinetoverticalabsolute|' + - 'imagickdraw_pathlinetoverticalrelative|imagickdraw_pathmovetoabsolute|imagickdraw_pathmovetorelative|imagickdraw_pathstart|' + - 'imagickdraw_point|imagickdraw_polygon|imagickdraw_polyline|imagickdraw_pop|imagickdraw_popclippath|imagickdraw_popdefs|' + - 'imagickdraw_poppattern|imagickdraw_push|imagickdraw_pushclippath|imagickdraw_pushdefs|imagickdraw_pushpattern|imagickdraw_rectangle|' + - 'imagickdraw_render|imagickdraw_rotate|imagickdraw_roundrectangle|imagickdraw_scale|imagickdraw_setclippath|imagickdraw_setcliprule|' + - 'imagickdraw_setclipunits|imagickdraw_setfillalpha|imagickdraw_setfillcolor|imagickdraw_setfillopacity|imagickdraw_setfillpatternurl|' + - 'imagickdraw_setfillrule|imagickdraw_setfont|imagickdraw_setfontfamily|imagickdraw_setfontsize|imagickdraw_setfontstretch|' + - 'imagickdraw_setfontstyle|imagickdraw_setfontweight|imagickdraw_setgravity|imagickdraw_setstrokealpha|imagickdraw_setstrokeantialias|' + - 'imagickdraw_setstrokecolor|imagickdraw_setstrokedasharray|imagickdraw_setstrokedashoffset|imagickdraw_setstrokelinecap|' + - 'imagickdraw_setstrokelinejoin|imagickdraw_setstrokemiterlimit|imagickdraw_setstrokeopacity|imagickdraw_setstrokepatternurl|' + - 'imagickdraw_setstrokewidth|imagickdraw_settextalignment|imagickdraw_settextantialias|imagickdraw_settextdecoration|' + - 'imagickdraw_settextencoding|imagickdraw_settextundercolor|imagickdraw_setvectorgraphics|imagickdraw_setviewbox|imagickdraw_skewx|' + - 'imagickdraw_skewy|imagickdraw_translate|imagickpixel|imagickpixel_clear|imagickpixel_construct|imagickpixel_destroy|imagickpixel_getcolor|' + - 'imagickpixel_getcolorasstring|imagickpixel_getcolorcount|imagickpixel_getcolorvalue|imagickpixel_gethsl|imagickpixel_issimilar|' + - 'imagickpixel_setcolor|imagickpixel_setcolorvalue|imagickpixel_sethsl|imagickpixeliterator|imagickpixeliterator_clear|' + - 'imagickpixeliterator_construct|imagickpixeliterator_destroy|imagickpixeliterator_getcurrentiteratorrow|' + - 'imagickpixeliterator_getiteratorrow|imagickpixeliterator_getnextiteratorrow|imagickpixeliterator_getpreviousiteratorrow|' + - 'imagickpixeliterator_newpixeliterator|imagickpixeliterator_newpixelregioniterator|imagickpixeliterator_resetiterator|' + - 'imagickpixeliterator_setiteratorfirstrow|imagickpixeliterator_setiteratorlastrow|imagickpixeliterator_setiteratorrow|' + - 'imagickpixeliterator_synciterator|imap_8bit|imap_alerts|imap_append|imap_base64|imap_binary|imap_body|imap_bodystruct|imap_check|' + - 'imap_clearflag_full|imap_close|imap_create|imap_createmailbox|imap_delete|imap_deletemailbox|imap_errors|imap_expunge|imap_fetch_overview|' + - 'imap_fetchbody|imap_fetchheader|imap_fetchmime|imap_fetchstructure|imap_fetchtext|imap_gc|imap_get_quota|imap_get_quotaroot|imap_getacl|' + - 'imap_getmailboxes|imap_getsubscribed|imap_header|imap_headerinfo|imap_headers|imap_last_error|imap_list|imap_listmailbox|imap_listscan|' + - 'imap_listsubscribed|imap_lsub|imap_mail|imap_mail_compose|imap_mail_copy|imap_mail_move|imap_mailboxmsginfo|imap_mime_header_decode|' + - 'imap_msgno|imap_num_msg|imap_num_recent|imap_open|imap_ping|imap_qprint|imap_rename|imap_renamemailbox|imap_reopen|' + - 'imap_rfc822_parse_adrlist|imap_rfc822_parse_headers|imap_rfc822_write_address|imap_savebody|imap_scan|imap_scanmailbox|imap_search|' + - 'imap_set_quota|imap_setacl|imap_setflag_full|imap_sort|imap_status|imap_subscribe|imap_thread|imap_timeout|imap_uid|imap_undelete|' + - 'imap_unsubscribe|imap_utf7_decode|imap_utf7_encode|imap_utf8|implementsinterface|implode|import_request_variables|in_array|include|' + - 'include_once|inclued_get_data|inet_ntop|inet_pton|infiniteiterator|ingres_autocommit|ingres_autocommit_state|ingres_charset|ingres_close|' + - 'ingres_commit|ingres_connect|ingres_cursor|ingres_errno|ingres_error|ingres_errsqlstate|ingres_escape_string|ingres_execute|' + - 'ingres_fetch_array|ingres_fetch_assoc|ingres_fetch_object|ingres_fetch_proc_return|ingres_fetch_row|ingres_field_length|ingres_field_name|' + - 'ingres_field_nullable|ingres_field_precision|ingres_field_scale|ingres_field_type|ingres_free_result|ingres_next_error|ingres_num_fields|' + - 'ingres_num_rows|ingres_pconnect|ingres_prepare|ingres_query|ingres_result_seek|ingres_rollback|ingres_set_environment|' + - 'ingres_unbuffered_query|ini_alter|ini_get|ini_get_all|ini_restore|ini_set|innamespace|inotify_add_watch|inotify_init|inotify_queue_len|' + - 'inotify_read|inotify_rm_watch|interface_exists|intl_error_name|intl_get_error_code|intl_get_error_message|intl_is_failure|' + - 'intldateformatter|intval|invalidargumentexception|invoke|invokeargs|ip2long|iptcembed|iptcparse|is_a|is_array|is_bool|is_callable|is_dir|' + - 'is_double|is_executable|is_file|is_finite|is_float|is_infinite|is_int|is_integer|is_link|is_long|is_nan|is_null|is_numeric|is_object|' + - 'is_readable|is_real|is_resource|is_scalar|is_soap_fault|is_string|is_subclass_of|is_uploaded_file|is_writable|is_writeable|isabstract|' + - 'iscloneable|isdisabled|isfinal|isinstance|isinstantiable|isinterface|isinternal|isiterateable|isset|issubclassof|isuserdefined|iterator|' + - 'iterator_apply|iterator_count|iterator_to_array|iteratoraggregate|iteratoriterator|java_last_exception_clear|java_last_exception_get|' + - 'jddayofweek|jdmonthname|jdtofrench|jdtogregorian|jdtojewish|jdtojulian|jdtounix|jewishtojd|join|jpeg2wbmp|json_decode|json_encode|' + - 'json_last_error|jsonserializable|judy|judy_type|judy_version|juliantojd|kadm5_chpass_principal|kadm5_create_principal|' + - 'kadm5_delete_principal|kadm5_destroy|kadm5_flush|kadm5_get_policies|kadm5_get_principal|kadm5_get_principals|kadm5_init_with_password|' + - 'kadm5_modify_principal|key|krsort|ksort|lcfirst|lcg_value|lchgrp|lchown|ldap_8859_to_t61|ldap_add|ldap_bind|ldap_close|ldap_compare|' + - 'ldap_connect|ldap_count_entries|ldap_delete|ldap_dn2ufn|ldap_err2str|ldap_errno|ldap_error|ldap_explode_dn|ldap_first_attribute|' + - 'ldap_first_entry|ldap_first_reference|ldap_free_result|ldap_get_attributes|ldap_get_dn|ldap_get_entries|ldap_get_option|ldap_get_values|' + - 'ldap_get_values_len|ldap_list|ldap_mod_add|ldap_mod_del|ldap_mod_replace|ldap_modify|ldap_next_attribute|ldap_next_entry|' + - 'ldap_next_reference|ldap_parse_reference|ldap_parse_result|ldap_read|ldap_rename|ldap_sasl_bind|ldap_search|ldap_set_option|' + - 'ldap_set_rebind_proc|ldap_sort|ldap_start_tls|ldap_t61_to_8859|ldap_unbind|lengthexception|levenshtein|libxml_clear_errors|' + - 'libxml_disable_entity_loader|libxml_get_errors|libxml_get_last_error|libxml_set_streams_context|libxml_use_internal_errors|libxmlerror|' + - 'limititerator|link|linkinfo|list|locale|localeconv|localtime|log|log10|log1p|logicexception|long2ip|lstat|ltrim|lzf_compress|' + - 'lzf_decompress|lzf_optimized_for|m_checkstatus|m_completeauthorizations|m_connect|m_connectionerror|m_deletetrans|m_destroyconn|' + - 'm_destroyengine|m_getcell|m_getcellbynum|m_getcommadelimited|m_getheader|m_initconn|m_initengine|m_iscommadelimited|m_maxconntimeout|' + - 'm_monitor|m_numcolumns|m_numrows|m_parsecommadelimited|m_responsekeys|m_responseparam|m_returnstatus|m_setblocking|m_setdropfile|m_setip|' + - 'm_setssl|m_setssl_cafile|m_setssl_files|m_settimeout|m_sslcert_gen_hash|m_transactionssent|m_transinqueue|m_transkeyval|m_transnew|' + - 'm_transsend|m_uwait|m_validateidentifier|m_verifyconnection|m_verifysslcert|magic_quotes_runtime|mail|' + - 'mailparse_determine_best_xfer_encoding|mailparse_msg_create|mailparse_msg_extract_part|mailparse_msg_extract_part_file|' + - 'mailparse_msg_extract_whole_part_file|mailparse_msg_free|mailparse_msg_get_part|mailparse_msg_get_part_data|mailparse_msg_get_structure|' + - 'mailparse_msg_parse|mailparse_msg_parse_file|mailparse_rfc822_parse_addresses|mailparse_stream_encode|mailparse_uudecode_all|main|max|' + - 'maxdb_affected_rows|maxdb_autocommit|maxdb_bind_param|maxdb_bind_result|maxdb_change_user|maxdb_character_set_name|maxdb_client_encoding|' + - 'maxdb_close|maxdb_close_long_data|maxdb_commit|maxdb_connect|maxdb_connect_errno|maxdb_connect_error|maxdb_data_seek|maxdb_debug|' + - 'maxdb_disable_reads_from_master|maxdb_disable_rpl_parse|maxdb_dump_debug_info|maxdb_embedded_connect|maxdb_enable_reads_from_master|' + - 'maxdb_enable_rpl_parse|maxdb_errno|maxdb_error|maxdb_escape_string|maxdb_execute|maxdb_fetch|maxdb_fetch_array|maxdb_fetch_assoc|' + - 'maxdb_fetch_field|maxdb_fetch_field_direct|maxdb_fetch_fields|maxdb_fetch_lengths|maxdb_fetch_object|maxdb_fetch_row|maxdb_field_count|' + - 'maxdb_field_seek|maxdb_field_tell|maxdb_free_result|maxdb_get_client_info|maxdb_get_client_version|maxdb_get_host_info|maxdb_get_metadata|' + - 'maxdb_get_proto_info|maxdb_get_server_info|maxdb_get_server_version|maxdb_info|maxdb_init|maxdb_insert_id|maxdb_kill|maxdb_master_query|' + - 'maxdb_more_results|maxdb_multi_query|maxdb_next_result|maxdb_num_fields|maxdb_num_rows|maxdb_options|maxdb_param_count|maxdb_ping|' + - 'maxdb_prepare|maxdb_query|maxdb_real_connect|maxdb_real_escape_string|maxdb_real_query|maxdb_report|maxdb_rollback|' + - 'maxdb_rpl_parse_enabled|maxdb_rpl_probe|maxdb_rpl_query_type|maxdb_select_db|maxdb_send_long_data|maxdb_send_query|maxdb_server_end|' + - 'maxdb_server_init|maxdb_set_opt|maxdb_sqlstate|maxdb_ssl_set|maxdb_stat|maxdb_stmt_affected_rows|maxdb_stmt_bind_param|' + - 'maxdb_stmt_bind_result|maxdb_stmt_close|maxdb_stmt_close_long_data|maxdb_stmt_data_seek|maxdb_stmt_errno|maxdb_stmt_error|' + - 'maxdb_stmt_execute|maxdb_stmt_fetch|maxdb_stmt_free_result|maxdb_stmt_init|maxdb_stmt_num_rows|maxdb_stmt_param_count|maxdb_stmt_prepare|' + - 'maxdb_stmt_reset|maxdb_stmt_result_metadata|maxdb_stmt_send_long_data|maxdb_stmt_sqlstate|maxdb_stmt_store_result|maxdb_store_result|' + - 'maxdb_thread_id|maxdb_thread_safe|maxdb_use_result|maxdb_warning_count|mb_check_encoding|mb_convert_case|mb_convert_encoding|' + - 'mb_convert_kana|mb_convert_variables|mb_decode_mimeheader|mb_decode_numericentity|mb_detect_encoding|mb_detect_order|mb_encode_mimeheader|' + - 'mb_encode_numericentity|mb_encoding_aliases|mb_ereg|mb_ereg_match|mb_ereg_replace|mb_ereg_search|mb_ereg_search_getpos|' + - 'mb_ereg_search_getregs|mb_ereg_search_init|mb_ereg_search_pos|mb_ereg_search_regs|mb_ereg_search_setpos|mb_eregi|mb_eregi_replace|' + - 'mb_get_info|mb_http_input|mb_http_output|mb_internal_encoding|mb_language|mb_list_encodings|mb_output_handler|mb_parse_str|' + - 'mb_preferred_mime_name|mb_regex_encoding|mb_regex_set_options|mb_send_mail|mb_split|mb_strcut|mb_strimwidth|mb_stripos|mb_stristr|' + - 'mb_strlen|mb_strpos|mb_strrchr|mb_strrichr|mb_strripos|mb_strrpos|mb_strstr|mb_strtolower|mb_strtoupper|mb_strwidth|' + - 'mb_substitute_character|mb_substr|mb_substr_count|mcrypt_cbc|mcrypt_cfb|mcrypt_create_iv|mcrypt_decrypt|mcrypt_ecb|' + - 'mcrypt_enc_get_algorithms_name|mcrypt_enc_get_block_size|mcrypt_enc_get_iv_size|mcrypt_enc_get_key_size|mcrypt_enc_get_modes_name|' + - 'mcrypt_enc_get_supported_key_sizes|mcrypt_enc_is_block_algorithm|mcrypt_enc_is_block_algorithm_mode|mcrypt_enc_is_block_mode|' + - 'mcrypt_enc_self_test|mcrypt_encrypt|mcrypt_generic|mcrypt_generic_deinit|mcrypt_generic_end|mcrypt_generic_init|mcrypt_get_block_size|' + - 'mcrypt_get_cipher_name|mcrypt_get_iv_size|mcrypt_get_key_size|mcrypt_list_algorithms|mcrypt_list_modes|mcrypt_module_close|' + - 'mcrypt_module_get_algo_block_size|mcrypt_module_get_algo_key_size|mcrypt_module_get_supported_key_sizes|mcrypt_module_is_block_algorithm|' + - 'mcrypt_module_is_block_algorithm_mode|mcrypt_module_is_block_mode|mcrypt_module_open|mcrypt_module_self_test|mcrypt_ofb|md5|md5_file|' + - 'mdecrypt_generic|memcache|memcache_debug|memcached|memory_get_peak_usage|memory_get_usage|messageformatter|metaphone|method_exists|mhash|' + - 'mhash_count|mhash_get_block_size|mhash_get_hash_name|mhash_keygen_s2k|microtime|mime_content_type|min|ming_keypress|' + - 'ming_setcubicthreshold|ming_setscale|ming_setswfcompression|ming_useconstants|ming_useswfversion|mkdir|mktime|money_format|mongo|' + - 'mongobindata|mongocode|mongocollection|mongoconnectionexception|mongocursor|mongocursorexception|mongocursortimeoutexception|mongodate|' + - 'mongodb|mongodbref|mongoexception|mongogridfs|mongogridfscursor|mongogridfsexception|mongogridfsfile|mongoid|mongoint32|mongoint64|' + - 'mongomaxkey|mongominkey|mongoregex|mongotimestamp|move_uploaded_file|mpegfile|mqseries_back|mqseries_begin|mqseries_close|mqseries_cmit|' + - 'mqseries_conn|mqseries_connx|mqseries_disc|mqseries_get|mqseries_inq|mqseries_open|mqseries_put|mqseries_put1|mqseries_set|' + - 'mqseries_strerror|msession_connect|msession_count|msession_create|msession_destroy|msession_disconnect|msession_find|msession_get|' + - 'msession_get_array|msession_get_data|msession_inc|msession_list|msession_listvar|msession_lock|msession_plugin|msession_randstr|' + - 'msession_set|msession_set_array|msession_set_data|msession_timeout|msession_uniq|msession_unlock|msg_get_queue|msg_queue_exists|' + - 'msg_receive|msg_remove_queue|msg_send|msg_set_queue|msg_stat_queue|msql|msql_affected_rows|msql_close|msql_connect|msql_create_db|' + - 'msql_createdb|msql_data_seek|msql_db_query|msql_dbname|msql_drop_db|msql_error|msql_fetch_array|msql_fetch_field|msql_fetch_object|' + - 'msql_fetch_row|msql_field_flags|msql_field_len|msql_field_name|msql_field_seek|msql_field_table|msql_field_type|msql_fieldflags|' + - 'msql_fieldlen|msql_fieldname|msql_fieldtable|msql_fieldtype|msql_free_result|msql_list_dbs|msql_list_fields|msql_list_tables|' + - 'msql_num_fields|msql_num_rows|msql_numfields|msql_numrows|msql_pconnect|msql_query|msql_regcase|msql_result|msql_select_db|msql_tablename|' + - 'mssql_bind|mssql_close|mssql_connect|mssql_data_seek|mssql_execute|mssql_fetch_array|mssql_fetch_assoc|mssql_fetch_batch|' + - 'mssql_fetch_field|mssql_fetch_object|mssql_fetch_row|mssql_field_length|mssql_field_name|mssql_field_seek|mssql_field_type|' + - 'mssql_free_result|mssql_free_statement|mssql_get_last_message|mssql_guid_string|mssql_init|mssql_min_error_severity|' + - 'mssql_min_message_severity|mssql_next_result|mssql_num_fields|mssql_num_rows|mssql_pconnect|mssql_query|mssql_result|mssql_rows_affected|' + - 'mssql_select_db|mt_getrandmax|mt_rand|mt_srand|multipleiterator|mysql_affected_rows|mysql_client_encoding|mysql_close|mysql_connect|' + - 'mysql_create_db|mysql_data_seek|mysql_db_name|mysql_db_query|mysql_drop_db|mysql_errno|mysql_error|mysql_escape_string|mysql_fetch_array|' + - 'mysql_fetch_assoc|mysql_fetch_field|mysql_fetch_lengths|mysql_fetch_object|mysql_fetch_row|mysql_field_flags|mysql_field_len|' + - 'mysql_field_name|mysql_field_seek|mysql_field_table|mysql_field_type|mysql_free_result|mysql_get_client_info|mysql_get_host_info|' + - 'mysql_get_proto_info|mysql_get_server_info|mysql_info|mysql_insert_id|mysql_list_dbs|mysql_list_fields|mysql_list_processes|' + - 'mysql_list_tables|mysql_num_fields|mysql_num_rows|mysql_pconnect|mysql_ping|mysql_query|mysql_real_escape_string|mysql_result|' + - 'mysql_select_db|mysql_set_charset|mysql_stat|mysql_tablename|mysql_thread_id|mysql_unbuffered_query|mysqli|mysqli_bind_param|' + - 'mysqli_bind_result|mysqli_client_encoding|mysqli_connect|mysqli_disable_reads_from_master|mysqli_disable_rpl_parse|mysqli_driver|' + - 'mysqli_enable_reads_from_master|mysqli_enable_rpl_parse|mysqli_escape_string|mysqli_execute|mysqli_fetch|mysqli_get_metadata|' + - 'mysqli_master_query|mysqli_param_count|mysqli_report|mysqli_result|mysqli_rpl_parse_enabled|mysqli_rpl_probe|mysqli_rpl_query_type|' + - 'mysqli_send_long_data|mysqli_send_query|mysqli_set_opt|mysqli_slave_query|mysqli_stmt|mysqli_warning|mysqlnd_ms_get_stats|' + - 'mysqlnd_ms_query_is_select|mysqlnd_ms_set_user_pick_server|mysqlnd_qc_change_handler|mysqlnd_qc_clear_cache|mysqlnd_qc_get_cache_info|' + - 'mysqlnd_qc_get_core_stats|mysqlnd_qc_get_handler|mysqlnd_qc_get_query_trace_log|mysqlnd_qc_set_user_handlers|natcasesort|natsort|' + - 'ncurses_addch|ncurses_addchnstr|ncurses_addchstr|ncurses_addnstr|ncurses_addstr|ncurses_assume_default_colors|ncurses_attroff|' + - 'ncurses_attron|ncurses_attrset|ncurses_baudrate|ncurses_beep|ncurses_bkgd|ncurses_bkgdset|ncurses_border|ncurses_bottom_panel|' + - 'ncurses_can_change_color|ncurses_cbreak|ncurses_clear|ncurses_clrtobot|ncurses_clrtoeol|ncurses_color_content|ncurses_color_set|' + - 'ncurses_curs_set|ncurses_def_prog_mode|ncurses_def_shell_mode|ncurses_define_key|ncurses_del_panel|ncurses_delay_output|ncurses_delch|' + - 'ncurses_deleteln|ncurses_delwin|ncurses_doupdate|ncurses_echo|ncurses_echochar|ncurses_end|ncurses_erase|ncurses_erasechar|ncurses_filter|' + - 'ncurses_flash|ncurses_flushinp|ncurses_getch|ncurses_getmaxyx|ncurses_getmouse|ncurses_getyx|ncurses_halfdelay|ncurses_has_colors|' + - 'ncurses_has_ic|ncurses_has_il|ncurses_has_key|ncurses_hide_panel|ncurses_hline|ncurses_inch|ncurses_init|ncurses_init_color|' + - 'ncurses_init_pair|ncurses_insch|ncurses_insdelln|ncurses_insertln|ncurses_insstr|ncurses_instr|ncurses_isendwin|ncurses_keyok|' + - 'ncurses_keypad|ncurses_killchar|ncurses_longname|ncurses_meta|ncurses_mouse_trafo|ncurses_mouseinterval|ncurses_mousemask|ncurses_move|' + - 'ncurses_move_panel|ncurses_mvaddch|ncurses_mvaddchnstr|ncurses_mvaddchstr|ncurses_mvaddnstr|ncurses_mvaddstr|ncurses_mvcur|' + - 'ncurses_mvdelch|ncurses_mvgetch|ncurses_mvhline|ncurses_mvinch|ncurses_mvvline|ncurses_mvwaddstr|ncurses_napms|ncurses_new_panel|' + - 'ncurses_newpad|ncurses_newwin|ncurses_nl|ncurses_nocbreak|ncurses_noecho|ncurses_nonl|ncurses_noqiflush|ncurses_noraw|' + - 'ncurses_pair_content|ncurses_panel_above|ncurses_panel_below|ncurses_panel_window|ncurses_pnoutrefresh|ncurses_prefresh|ncurses_putp|' + - 'ncurses_qiflush|ncurses_raw|ncurses_refresh|ncurses_replace_panel|ncurses_reset_prog_mode|ncurses_reset_shell_mode|ncurses_resetty|' + - 'ncurses_savetty|ncurses_scr_dump|ncurses_scr_init|ncurses_scr_restore|ncurses_scr_set|ncurses_scrl|ncurses_show_panel|ncurses_slk_attr|' + - 'ncurses_slk_attroff|ncurses_slk_attron|ncurses_slk_attrset|ncurses_slk_clear|ncurses_slk_color|ncurses_slk_init|ncurses_slk_noutrefresh|' + - 'ncurses_slk_refresh|ncurses_slk_restore|ncurses_slk_set|ncurses_slk_touch|ncurses_standend|ncurses_standout|ncurses_start_color|' + - 'ncurses_termattrs|ncurses_termname|ncurses_timeout|ncurses_top_panel|ncurses_typeahead|ncurses_ungetch|ncurses_ungetmouse|' + - 'ncurses_update_panels|ncurses_use_default_colors|ncurses_use_env|ncurses_use_extended_names|ncurses_vidattr|ncurses_vline|ncurses_waddch|' + - 'ncurses_waddstr|ncurses_wattroff|ncurses_wattron|ncurses_wattrset|ncurses_wborder|ncurses_wclear|ncurses_wcolor_set|ncurses_werase|' + - 'ncurses_wgetch|ncurses_whline|ncurses_wmouse_trafo|ncurses_wmove|ncurses_wnoutrefresh|ncurses_wrefresh|ncurses_wstandend|' + - 'ncurses_wstandout|ncurses_wvline|newinstance|newinstanceargs|newt_bell|newt_button|newt_button_bar|newt_centered_window|newt_checkbox|' + - 'newt_checkbox_get_value|newt_checkbox_set_flags|newt_checkbox_set_value|newt_checkbox_tree|newt_checkbox_tree_add_item|' + - 'newt_checkbox_tree_find_item|newt_checkbox_tree_get_current|newt_checkbox_tree_get_entry_value|newt_checkbox_tree_get_multi_selection|' + - 'newt_checkbox_tree_get_selection|newt_checkbox_tree_multi|newt_checkbox_tree_set_current|newt_checkbox_tree_set_entry|' + - 'newt_checkbox_tree_set_entry_value|newt_checkbox_tree_set_width|newt_clear_key_buffer|newt_cls|newt_compact_button|' + - 'newt_component_add_callback|newt_component_takes_focus|newt_create_grid|newt_cursor_off|newt_cursor_on|newt_delay|newt_draw_form|' + - 'newt_draw_root_text|newt_entry|newt_entry_get_value|newt_entry_set|newt_entry_set_filter|newt_entry_set_flags|newt_finished|newt_form|' + - 'newt_form_add_component|newt_form_add_components|newt_form_add_hot_key|newt_form_destroy|newt_form_get_current|newt_form_run|' + - 'newt_form_set_background|newt_form_set_height|newt_form_set_size|newt_form_set_timer|newt_form_set_width|newt_form_watch_fd|' + - 'newt_get_screen_size|newt_grid_add_components_to_form|newt_grid_basic_window|newt_grid_free|newt_grid_get_size|newt_grid_h_close_stacked|' + - 'newt_grid_h_stacked|newt_grid_place|newt_grid_set_field|newt_grid_simple_window|newt_grid_v_close_stacked|newt_grid_v_stacked|' + - 'newt_grid_wrapped_window|newt_grid_wrapped_window_at|newt_init|newt_label|newt_label_set_text|newt_listbox|newt_listbox_append_entry|' + - 'newt_listbox_clear|newt_listbox_clear_selection|newt_listbox_delete_entry|newt_listbox_get_current|newt_listbox_get_selection|' + - 'newt_listbox_insert_entry|newt_listbox_item_count|newt_listbox_select_item|newt_listbox_set_current|newt_listbox_set_current_by_key|' + - 'newt_listbox_set_data|newt_listbox_set_entry|newt_listbox_set_width|newt_listitem|newt_listitem_get_data|newt_listitem_set|' + - 'newt_open_window|newt_pop_help_line|newt_pop_window|newt_push_help_line|newt_radio_get_current|newt_radiobutton|newt_redraw_help_line|' + - 'newt_reflow_text|newt_refresh|newt_resize_screen|newt_resume|newt_run_form|newt_scale|newt_scale_set|newt_scrollbar_set|' + - 'newt_set_help_callback|newt_set_suspend_callback|newt_suspend|newt_textbox|newt_textbox_get_num_lines|newt_textbox_reflowed|' + - 'newt_textbox_set_height|newt_textbox_set_text|newt_vertical_scrollbar|newt_wait_for_key|newt_win_choice|newt_win_entries|newt_win_menu|' + - 'newt_win_message|newt_win_messagev|newt_win_ternary|next|ngettext|nl2br|nl_langinfo|norewinditerator|normalizer|notes_body|notes_copy_db|' + - 'notes_create_db|notes_create_note|notes_drop_db|notes_find_note|notes_header_info|notes_list_msgs|notes_mark_read|notes_mark_unread|' + - 'notes_nav_create|notes_search|notes_unread|notes_version|nsapi_request_headers|nsapi_response_headers|nsapi_virtual|nthmac|number_format|' + - 'numberformatter|oauth|oauth_get_sbs|oauth_urlencode|oauthexception|oauthprovider|ob_clean|ob_deflatehandler|ob_end_clean|ob_end_flush|' + - 'ob_etaghandler|ob_flush|ob_get_clean|ob_get_contents|ob_get_flush|ob_get_length|ob_get_level|ob_get_status|ob_gzhandler|ob_iconv_handler|' + - 'ob_implicit_flush|ob_inflatehandler|ob_list_handlers|ob_start|ob_tidyhandler|oci_bind_array_by_name|oci_bind_by_name|oci_cancel|' + - 'oci_client_version|oci_close|oci_collection_append|oci_collection_assign|oci_collection_element_assign|oci_collection_element_get|' + - 'oci_collection_free|oci_collection_max|oci_collection_size|oci_collection_trim|oci_commit|oci_connect|oci_define_by_name|oci_error|' + - 'oci_execute|oci_fetch|oci_fetch_all|oci_fetch_array|oci_fetch_assoc|oci_fetch_object|oci_fetch_row|oci_field_is_null|oci_field_name|' + - 'oci_field_precision|oci_field_scale|oci_field_size|oci_field_type|oci_field_type_raw|oci_free_statement|oci_internal_debug|oci_lob_append|' + - 'oci_lob_close|oci_lob_copy|oci_lob_eof|oci_lob_erase|oci_lob_export|oci_lob_flush|oci_lob_free|oci_lob_getbuffering|oci_lob_import|' + - 'oci_lob_is_equal|oci_lob_load|oci_lob_read|oci_lob_rewind|oci_lob_save|oci_lob_savefile|oci_lob_seek|oci_lob_setbuffering|oci_lob_size|' + - 'oci_lob_tell|oci_lob_truncate|oci_lob_write|oci_lob_writetemporary|oci_lob_writetofile|oci_new_collection|oci_new_connect|oci_new_cursor|' + - 'oci_new_descriptor|oci_num_fields|oci_num_rows|oci_parse|oci_password_change|oci_pconnect|oci_result|oci_rollback|oci_server_version|' + - 'oci_set_action|oci_set_client_identifier|oci_set_client_info|oci_set_edition|oci_set_module_name|oci_set_prefetch|oci_statement_type|' + - 'ocibindbyname|ocicancel|ocicloselob|ocicollappend|ocicollassign|ocicollassignelem|ocicollgetelem|ocicollmax|ocicollsize|ocicolltrim|' + - 'ocicolumnisnull|ocicolumnname|ocicolumnprecision|ocicolumnscale|ocicolumnsize|ocicolumntype|ocicolumntyperaw|ocicommit|ocidefinebyname|' + - 'ocierror|ociexecute|ocifetch|ocifetchinto|ocifetchstatement|ocifreecollection|ocifreecursor|ocifreedesc|ocifreestatement|ociinternaldebug|' + - 'ociloadlob|ocilogoff|ocilogon|ocinewcollection|ocinewcursor|ocinewdescriptor|ocinlogon|ocinumcols|ociparse|ociplogon|ociresult|' + - 'ocirollback|ocirowcount|ocisavelob|ocisavelobfile|ociserverversion|ocisetprefetch|ocistatementtype|ociwritelobtofile|ociwritetemporarylob|' + - 'octdec|odbc_autocommit|odbc_binmode|odbc_close|odbc_close_all|odbc_columnprivileges|odbc_columns|odbc_commit|odbc_connect|odbc_cursor|' + - 'odbc_data_source|odbc_do|odbc_error|odbc_errormsg|odbc_exec|odbc_execute|odbc_fetch_array|odbc_fetch_into|odbc_fetch_object|' + - 'odbc_fetch_row|odbc_field_len|odbc_field_name|odbc_field_num|odbc_field_precision|odbc_field_scale|odbc_field_type|odbc_foreignkeys|' + - 'odbc_free_result|odbc_gettypeinfo|odbc_longreadlen|odbc_next_result|odbc_num_fields|odbc_num_rows|odbc_pconnect|odbc_prepare|' + - 'odbc_primarykeys|odbc_procedurecolumns|odbc_procedures|odbc_result|odbc_result_all|odbc_rollback|odbc_setoption|odbc_specialcolumns|' + - 'odbc_statistics|odbc_tableprivileges|odbc_tables|openal_buffer_create|openal_buffer_data|openal_buffer_destroy|openal_buffer_get|' + - 'openal_buffer_loadwav|openal_context_create|openal_context_current|openal_context_destroy|openal_context_process|openal_context_suspend|' + - 'openal_device_close|openal_device_open|openal_listener_get|openal_listener_set|openal_source_create|openal_source_destroy|' + - 'openal_source_get|openal_source_pause|openal_source_play|openal_source_rewind|openal_source_set|openal_source_stop|openal_stream|opendir|' + - 'openlog|openssl_cipher_iv_length|openssl_csr_export|openssl_csr_export_to_file|openssl_csr_get_public_key|openssl_csr_get_subject|' + - 'openssl_csr_new|openssl_csr_sign|openssl_decrypt|openssl_dh_compute_key|openssl_digest|openssl_encrypt|openssl_error_string|' + - 'openssl_free_key|openssl_get_cipher_methods|openssl_get_md_methods|openssl_get_privatekey|openssl_get_publickey|openssl_open|' + - 'openssl_pkcs12_export|openssl_pkcs12_export_to_file|openssl_pkcs12_read|openssl_pkcs7_decrypt|openssl_pkcs7_encrypt|openssl_pkcs7_sign|' + - 'openssl_pkcs7_verify|openssl_pkey_export|openssl_pkey_export_to_file|openssl_pkey_free|openssl_pkey_get_details|openssl_pkey_get_private|' + - 'openssl_pkey_get_public|openssl_pkey_new|openssl_private_decrypt|openssl_private_encrypt|openssl_public_decrypt|openssl_public_encrypt|' + - 'openssl_random_pseudo_bytes|openssl_seal|openssl_sign|openssl_verify|openssl_x509_check_private_key|openssl_x509_checkpurpose|' + - 'openssl_x509_export|openssl_x509_export_to_file|openssl_x509_free|openssl_x509_parse|openssl_x509_read|ord|outeriterator|' + - 'outofboundsexception|outofrangeexception|output_add_rewrite_var|output_reset_rewrite_vars|overflowexception|overload|override_function|' + - 'ovrimos_close|ovrimos_commit|ovrimos_connect|ovrimos_cursor|ovrimos_exec|ovrimos_execute|ovrimos_fetch_into|ovrimos_fetch_row|' + - 'ovrimos_field_len|ovrimos_field_name|ovrimos_field_num|ovrimos_field_type|ovrimos_free_result|ovrimos_longreadlen|ovrimos_num_fields|' + - 'ovrimos_num_rows|ovrimos_prepare|ovrimos_result|ovrimos_result_all|ovrimos_rollback|pack|parentiterator|parse_ini_file|parse_ini_string|' + - 'parse_str|parse_url|parsekit_compile_file|parsekit_compile_string|parsekit_func_arginfo|passthru|pathinfo|pclose|pcntl_alarm|pcntl_exec|' + - 'pcntl_fork|pcntl_getpriority|pcntl_setpriority|pcntl_signal|pcntl_signal_dispatch|pcntl_sigprocmask|pcntl_sigtimedwait|pcntl_sigwaitinfo|' + - 'pcntl_wait|pcntl_waitpid|pcntl_wexitstatus|pcntl_wifexited|pcntl_wifsignaled|pcntl_wifstopped|pcntl_wstopsig|pcntl_wtermsig|' + - 'pdf_activate_item|pdf_add_annotation|pdf_add_bookmark|pdf_add_launchlink|pdf_add_locallink|pdf_add_nameddest|pdf_add_note|pdf_add_outline|' + - 'pdf_add_pdflink|pdf_add_table_cell|pdf_add_textflow|pdf_add_thumbnail|pdf_add_weblink|pdf_arc|pdf_arcn|pdf_attach_file|pdf_begin_document|' + - 'pdf_begin_font|pdf_begin_glyph|pdf_begin_item|pdf_begin_layer|pdf_begin_page|pdf_begin_page_ext|pdf_begin_pattern|pdf_begin_template|' + - 'pdf_begin_template_ext|pdf_circle|pdf_clip|pdf_close|pdf_close_image|pdf_close_pdi|pdf_close_pdi_page|pdf_closepath|' + - 'pdf_closepath_fill_stroke|pdf_closepath_stroke|pdf_concat|pdf_continue_text|pdf_create_3dview|pdf_create_action|pdf_create_annotation|' + - 'pdf_create_bookmark|pdf_create_field|pdf_create_fieldgroup|pdf_create_gstate|pdf_create_pvf|pdf_create_textflow|pdf_curveto|' + - 'pdf_define_layer|pdf_delete|pdf_delete_pvf|pdf_delete_table|pdf_delete_textflow|pdf_encoding_set_char|pdf_end_document|pdf_end_font|' + - 'pdf_end_glyph|pdf_end_item|pdf_end_layer|pdf_end_page|pdf_end_page_ext|pdf_end_pattern|pdf_end_template|pdf_endpath|pdf_fill|' + - 'pdf_fill_imageblock|pdf_fill_pdfblock|pdf_fill_stroke|pdf_fill_textblock|pdf_findfont|pdf_fit_image|pdf_fit_pdi_page|pdf_fit_table|' + - 'pdf_fit_textflow|pdf_fit_textline|pdf_get_apiname|pdf_get_buffer|pdf_get_errmsg|pdf_get_errnum|pdf_get_font|pdf_get_fontname|' + - 'pdf_get_fontsize|pdf_get_image_height|pdf_get_image_width|pdf_get_majorversion|pdf_get_minorversion|pdf_get_parameter|' + - 'pdf_get_pdi_parameter|pdf_get_pdi_value|pdf_get_value|pdf_info_font|pdf_info_matchbox|pdf_info_table|pdf_info_textflow|pdf_info_textline|' + - 'pdf_initgraphics|pdf_lineto|pdf_load_3ddata|pdf_load_font|pdf_load_iccprofile|pdf_load_image|pdf_makespotcolor|pdf_moveto|pdf_new|' + - 'pdf_open_ccitt|pdf_open_file|pdf_open_gif|pdf_open_image|pdf_open_image_file|pdf_open_jpeg|pdf_open_memory_image|pdf_open_pdi|' + - 'pdf_open_pdi_document|pdf_open_pdi_page|pdf_open_tiff|pdf_pcos_get_number|pdf_pcos_get_stream|pdf_pcos_get_string|pdf_place_image|' + - 'pdf_place_pdi_page|pdf_process_pdi|pdf_rect|pdf_restore|pdf_resume_page|pdf_rotate|pdf_save|pdf_scale|pdf_set_border_color|' + - 'pdf_set_border_dash|pdf_set_border_style|pdf_set_char_spacing|pdf_set_duration|pdf_set_gstate|pdf_set_horiz_scaling|pdf_set_info|' + - 'pdf_set_info_author|pdf_set_info_creator|pdf_set_info_keywords|pdf_set_info_subject|pdf_set_info_title|pdf_set_layer_dependency|' + - 'pdf_set_leading|pdf_set_parameter|pdf_set_text_matrix|pdf_set_text_pos|pdf_set_text_rendering|pdf_set_text_rise|pdf_set_value|' + - 'pdf_set_word_spacing|pdf_setcolor|pdf_setdash|pdf_setdashpattern|pdf_setflat|pdf_setfont|pdf_setgray|pdf_setgray_fill|pdf_setgray_stroke|' + - 'pdf_setlinecap|pdf_setlinejoin|pdf_setlinewidth|pdf_setmatrix|pdf_setmiterlimit|pdf_setpolydash|pdf_setrgbcolor|pdf_setrgbcolor_fill|' + - 'pdf_setrgbcolor_stroke|pdf_shading|pdf_shading_pattern|pdf_shfill|pdf_show|pdf_show_boxed|pdf_show_xy|pdf_skew|pdf_stringwidth|pdf_stroke|' + - 'pdf_suspend_page|pdf_translate|pdf_utf16_to_utf8|pdf_utf32_to_utf16|pdf_utf8_to_utf16|pdo|pdo_cubrid_schema|pdo_pgsqllobcreate|' + - 'pdo_pgsqllobopen|pdo_pgsqllobunlink|pdo_sqlitecreateaggregate|pdo_sqlitecreatefunction|pdoexception|pdostatement|pfsockopen|' + - 'pg_affected_rows|pg_cancel_query|pg_client_encoding|pg_close|pg_connect|pg_connection_busy|pg_connection_reset|pg_connection_status|' + - 'pg_convert|pg_copy_from|pg_copy_to|pg_dbname|pg_delete|pg_end_copy|pg_escape_bytea|pg_escape_string|pg_execute|pg_fetch_all|' + - 'pg_fetch_all_columns|pg_fetch_array|pg_fetch_assoc|pg_fetch_object|pg_fetch_result|pg_fetch_row|pg_field_is_null|pg_field_name|' + - 'pg_field_num|pg_field_prtlen|pg_field_size|pg_field_table|pg_field_type|pg_field_type_oid|pg_free_result|pg_get_notify|pg_get_pid|' + - 'pg_get_result|pg_host|pg_insert|pg_last_error|pg_last_notice|pg_last_oid|pg_lo_close|pg_lo_create|pg_lo_export|pg_lo_import|pg_lo_open|' + - 'pg_lo_read|pg_lo_read_all|pg_lo_seek|pg_lo_tell|pg_lo_unlink|pg_lo_write|pg_meta_data|pg_num_fields|pg_num_rows|pg_options|' + - 'pg_parameter_status|pg_pconnect|pg_ping|pg_port|pg_prepare|pg_put_line|pg_query|pg_query_params|pg_result_error|pg_result_error_field|' + - 'pg_result_seek|pg_result_status|pg_select|pg_send_execute|pg_send_prepare|pg_send_query|pg_send_query_params|pg_set_client_encoding|' + - 'pg_set_error_verbosity|pg_trace|pg_transaction_status|pg_tty|pg_unescape_bytea|pg_untrace|pg_update|pg_version|php_check_syntax|' + - 'php_ini_loaded_file|php_ini_scanned_files|php_logo_guid|php_sapi_name|php_strip_whitespace|php_uname|phpcredits|phpinfo|phpversion|pi|' + - 'png2wbmp|popen|pos|posix_access|posix_ctermid|posix_errno|posix_get_last_error|posix_getcwd|posix_getegid|posix_geteuid|posix_getgid|' + - 'posix_getgrgid|posix_getgrnam|posix_getgroups|posix_getlogin|posix_getpgid|posix_getpgrp|posix_getpid|posix_getppid|posix_getpwnam|' + - 'posix_getpwuid|posix_getrlimit|posix_getsid|posix_getuid|posix_initgroups|posix_isatty|posix_kill|posix_mkfifo|posix_mknod|posix_setegid|' + - 'posix_seteuid|posix_setgid|posix_setpgid|posix_setsid|posix_setuid|posix_strerror|posix_times|posix_ttyname|posix_uname|pow|preg_filter|' + - 'preg_grep|preg_last_error|preg_match|preg_match_all|preg_quote|preg_replace|preg_replace_callback|preg_split|prev|print|print_r|' + - 'printer_abort|printer_close|printer_create_brush|printer_create_dc|printer_create_font|printer_create_pen|printer_delete_brush|' + - 'printer_delete_dc|printer_delete_font|printer_delete_pen|printer_draw_bmp|printer_draw_chord|printer_draw_elipse|printer_draw_line|' + - 'printer_draw_pie|printer_draw_rectangle|printer_draw_roundrect|printer_draw_text|printer_end_doc|printer_end_page|printer_get_option|' + - 'printer_list|printer_logical_fontheight|printer_open|printer_select_brush|printer_select_font|printer_select_pen|printer_set_option|' + - 'printer_start_doc|printer_start_page|printer_write|printf|proc_close|proc_get_status|proc_nice|proc_open|proc_terminate|property_exists|' + - 'ps_add_bookmark|ps_add_launchlink|ps_add_locallink|ps_add_note|ps_add_pdflink|ps_add_weblink|ps_arc|ps_arcn|ps_begin_page|' + - 'ps_begin_pattern|ps_begin_template|ps_circle|ps_clip|ps_close|ps_close_image|ps_closepath|ps_closepath_stroke|ps_continue_text|ps_curveto|' + - 'ps_delete|ps_end_page|ps_end_pattern|ps_end_template|ps_fill|ps_fill_stroke|ps_findfont|ps_get_buffer|ps_get_parameter|ps_get_value|' + - 'ps_hyphenate|ps_include_file|ps_lineto|ps_makespotcolor|ps_moveto|ps_new|ps_open_file|ps_open_image|ps_open_image_file|' + - 'ps_open_memory_image|ps_place_image|ps_rect|ps_restore|ps_rotate|ps_save|ps_scale|ps_set_border_color|ps_set_border_dash|' + - 'ps_set_border_style|ps_set_info|ps_set_parameter|ps_set_text_pos|ps_set_value|ps_setcolor|ps_setdash|ps_setflat|ps_setfont|ps_setgray|' + - 'ps_setlinecap|ps_setlinejoin|ps_setlinewidth|ps_setmiterlimit|ps_setoverprintmode|ps_setpolydash|ps_shading|ps_shading_pattern|ps_shfill|' + - 'ps_show|ps_show2|ps_show_boxed|ps_show_xy|ps_show_xy2|ps_string_geometry|ps_stringwidth|ps_stroke|ps_symbol|ps_symbol_name|' + - 'ps_symbol_width|ps_translate|pspell_add_to_personal|pspell_add_to_session|pspell_check|pspell_clear_session|pspell_config_create|' + - 'pspell_config_data_dir|pspell_config_dict_dir|pspell_config_ignore|pspell_config_mode|pspell_config_personal|pspell_config_repl|' + - 'pspell_config_runtogether|pspell_config_save_repl|pspell_new|pspell_new_config|pspell_new_personal|pspell_save_wordlist|' + - 'pspell_store_replacement|pspell_suggest|putenv|px_close|px_create_fp|px_date2string|px_delete|px_delete_record|px_get_field|px_get_info|' + - 'px_get_parameter|px_get_record|px_get_schema|px_get_value|px_insert_record|px_new|px_numfields|px_numrecords|px_open_fp|px_put_record|' + - 'px_retrieve_record|px_set_blob_file|px_set_parameter|px_set_tablename|px_set_targetencoding|px_set_value|px_timestamp2string|' + - 'px_update_record|qdom_error|qdom_tree|quoted_printable_decode|quoted_printable_encode|quotemeta|rad2deg|radius_acct_open|' + - 'radius_add_server|radius_auth_open|radius_close|radius_config|radius_create_request|radius_cvt_addr|radius_cvt_int|radius_cvt_string|' + - 'radius_demangle|radius_demangle_mppe_key|radius_get_attr|radius_get_vendor_attr|radius_put_addr|radius_put_attr|radius_put_int|' + - 'radius_put_string|radius_put_vendor_addr|radius_put_vendor_attr|radius_put_vendor_int|radius_put_vendor_string|' + - 'radius_request_authenticator|radius_send_request|radius_server_secret|radius_strerror|rand|range|rangeexception|rar_wrapper_cache_stats|' + - 'rararchive|rarentry|rarexception|rawurldecode|rawurlencode|read_exif_data|readdir|readfile|readgzfile|readline|readline_add_history|' + - 'readline_callback_handler_install|readline_callback_handler_remove|readline_callback_read_char|readline_clear_history|' + - 'readline_completion_function|readline_info|readline_list_history|readline_on_new_line|readline_read_history|readline_redisplay|' + - 'readline_write_history|readlink|realpath|realpath_cache_get|realpath_cache_size|recode|recode_file|recode_string|recursivearrayiterator|' + - 'recursivecachingiterator|recursivecallbackfilteriterator|recursivedirectoryiterator|recursivefilteriterator|recursiveiterator|' + - 'recursiveiteratoriterator|recursiveregexiterator|recursivetreeiterator|reflection|reflectionclass|reflectionexception|reflectionextension|' + - 'reflectionfunction|reflectionfunctionabstract|reflectionmethod|reflectionobject|reflectionparameter|reflectionproperty|reflector|' + - 'regexiterator|register_shutdown_function|register_tick_function|rename|rename_function|require|require_once|reset|resetValue|' + - 'resourcebundle|restore_error_handler|restore_exception_handler|restore_include_path|return|rewind|rewinddir|rmdir|round|rpm_close|' + - 'rpm_get_tag|rpm_is_valid|rpm_open|rpm_version|rrd_create|rrd_error|rrd_fetch|rrd_first|rrd_graph|rrd_info|rrd_last|rrd_lastupdate|' + - 'rrd_restore|rrd_tune|rrd_update|rrd_xport|rrdcreator|rrdgraph|rrdupdater|rsort|rtrim|runkit_class_adopt|runkit_class_emancipate|' + - 'runkit_constant_add|runkit_constant_redefine|runkit_constant_remove|runkit_function_add|runkit_function_copy|runkit_function_redefine|' + - 'runkit_function_remove|runkit_function_rename|runkit_import|runkit_lint|runkit_lint_file|runkit_method_add|runkit_method_copy|' + - 'runkit_method_redefine|runkit_method_remove|runkit_method_rename|runkit_return_value_used|runkit_sandbox_output_handler|' + - 'runkit_superglobals|runtimeexception|samconnection_commit|samconnection_connect|samconnection_constructor|samconnection_disconnect|' + - 'samconnection_errno|samconnection_error|samconnection_isconnected|samconnection_peek|samconnection_peekall|samconnection_receive|' + - 'samconnection_remove|samconnection_rollback|samconnection_send|samconnection_setDebug|samconnection_subscribe|samconnection_unsubscribe|' + - 'sammessage_body|sammessage_constructor|sammessage_header|sca_createdataobject|sca_getservice|sca_localproxy_createdataobject|' + - 'sca_soapproxy_createdataobject|scandir|sdo_das_changesummary_beginlogging|sdo_das_changesummary_endlogging|' + - 'sdo_das_changesummary_getchangeddataobjects|sdo_das_changesummary_getchangetype|sdo_das_changesummary_getoldcontainer|' + - 'sdo_das_changesummary_getoldvalues|sdo_das_changesummary_islogging|sdo_das_datafactory_addpropertytotype|sdo_das_datafactory_addtype|' + - 'sdo_das_datafactory_getdatafactory|sdo_das_dataobject_getchangesummary|sdo_das_relational_applychanges|sdo_das_relational_construct|' + - 'sdo_das_relational_createrootdataobject|sdo_das_relational_executepreparedquery|sdo_das_relational_executequery|' + - 'sdo_das_setting_getlistindex|sdo_das_setting_getpropertyindex|sdo_das_setting_getpropertyname|sdo_das_setting_getvalue|' + - 'sdo_das_setting_isset|sdo_das_xml_addtypes|sdo_das_xml_create|sdo_das_xml_createdataobject|sdo_das_xml_createdocument|' + - 'sdo_das_xml_document_getrootdataobject|sdo_das_xml_document_getrootelementname|sdo_das_xml_document_getrootelementuri|' + - 'sdo_das_xml_document_setencoding|sdo_das_xml_document_setxmldeclaration|sdo_das_xml_document_setxmlversion|sdo_das_xml_loadfile|' + - 'sdo_das_xml_loadstring|sdo_das_xml_savefile|sdo_das_xml_savestring|sdo_datafactory_create|sdo_dataobject_clear|' + - 'sdo_dataobject_createdataobject|sdo_dataobject_getcontainer|sdo_dataobject_getsequence|sdo_dataobject_gettypename|' + - 'sdo_dataobject_gettypenamespaceuri|sdo_exception_getcause|sdo_list_insert|sdo_model_property_getcontainingtype|' + - 'sdo_model_property_getdefault|sdo_model_property_getname|sdo_model_property_gettype|sdo_model_property_iscontainment|' + - 'sdo_model_property_ismany|sdo_model_reflectiondataobject_construct|sdo_model_reflectiondataobject_export|' + - 'sdo_model_reflectiondataobject_getcontainmentproperty|sdo_model_reflectiondataobject_getinstanceproperties|' + - 'sdo_model_reflectiondataobject_gettype|sdo_model_type_getbasetype|sdo_model_type_getname|sdo_model_type_getnamespaceuri|' + - 'sdo_model_type_getproperties|sdo_model_type_getproperty|sdo_model_type_isabstracttype|sdo_model_type_isdatatype|sdo_model_type_isinstance|' + - 'sdo_model_type_isopentype|sdo_model_type_issequencedtype|sdo_sequence_getproperty|sdo_sequence_insert|sdo_sequence_move|seekableiterator|' + - 'sem_acquire|sem_get|sem_release|sem_remove|serializable|serialize|session_cache_expire|session_cache_limiter|session_commit|' + - 'session_decode|session_destroy|session_encode|session_get_cookie_params|session_id|session_is_registered|session_module_name|session_name|' + - 'session_pgsql_add_error|session_pgsql_get_error|session_pgsql_get_field|session_pgsql_reset|session_pgsql_set_field|session_pgsql_status|' + - 'session_regenerate_id|session_register|session_save_path|session_set_cookie_params|session_set_save_handler|session_start|' + - 'session_unregister|session_unset|session_write_close|setCounterClass|set_error_handler|set_exception_handler|set_file_buffer|' + - 'set_include_path|set_magic_quotes_runtime|set_socket_blocking|set_time_limit|setcookie|setlocale|setproctitle|setrawcookie|' + - 'setstaticpropertyvalue|setthreadtitle|settype|sha1|sha1_file|shell_exec|shm_attach|shm_detach|shm_get_var|shm_has_var|shm_put_var|' + - 'shm_remove|shm_remove_var|shmop_close|shmop_delete|shmop_open|shmop_read|shmop_size|shmop_write|show_source|shuffle|signeurlpaiement|' + - 'similar_text|simplexml_import_dom|simplexml_load_file|simplexml_load_string|simplexmlelement|simplexmliterator|sin|sinh|sizeof|sleep|snmp|' + - 'snmp2_get|snmp2_getnext|snmp2_real_walk|snmp2_set|snmp2_walk|snmp3_get|snmp3_getnext|snmp3_real_walk|snmp3_set|snmp3_walk|' + - 'snmp_get_quick_print|snmp_get_valueretrieval|snmp_read_mib|snmp_set_enum_print|snmp_set_oid_numeric_print|snmp_set_oid_output_format|' + - 'snmp_set_quick_print|snmp_set_valueretrieval|snmpget|snmpgetnext|snmprealwalk|snmpset|snmpwalk|snmpwalkoid|soapclient|soapfault|' + - 'soapheader|soapparam|soapserver|soapvar|socket_accept|socket_bind|socket_clear_error|socket_close|socket_connect|socket_create|' + - 'socket_create_listen|socket_create_pair|socket_get_option|socket_get_status|socket_getpeername|socket_getsockname|socket_last_error|' + - 'socket_listen|socket_read|socket_recv|socket_recvfrom|socket_select|socket_send|socket_sendto|socket_set_block|socket_set_blocking|' + - 'socket_set_nonblock|socket_set_option|socket_set_timeout|socket_shutdown|socket_strerror|socket_write|solr_get_version|solrclient|' + - 'solrclientexception|solrdocument|solrdocumentfield|solrexception|solrgenericresponse|solrillegalargumentexception|' + - 'solrillegaloperationexception|solrinputdocument|solrmodifiableparams|solrobject|solrparams|solrpingresponse|solrquery|solrqueryresponse|' + - 'solrresponse|solrupdateresponse|solrutils|sort|soundex|sphinxclient|spl_autoload|spl_autoload_call|spl_autoload_extensions|' + - 'spl_autoload_functions|spl_autoload_register|spl_autoload_unregister|spl_classes|spl_object_hash|splbool|spldoublylinkedlist|splenum|' + - 'splfileinfo|splfileobject|splfixedarray|splfloat|splheap|splint|split|spliti|splmaxheap|splminheap|splobjectstorage|splobserver|' + - 'splpriorityqueue|splqueue|splstack|splstring|splsubject|spltempfileobject|spoofchecker|sprintf|sql_regcase|sqlite3|sqlite3result|' + - 'sqlite3stmt|sqlite_array_query|sqlite_busy_timeout|sqlite_changes|sqlite_close|sqlite_column|sqlite_create_aggregate|' + - 'sqlite_create_function|sqlite_current|sqlite_error_string|sqlite_escape_string|sqlite_exec|sqlite_factory|sqlite_fetch_all|' + - 'sqlite_fetch_array|sqlite_fetch_column_types|sqlite_fetch_object|sqlite_fetch_single|sqlite_fetch_string|sqlite_field_name|' + - 'sqlite_has_more|sqlite_has_prev|sqlite_key|sqlite_last_error|sqlite_last_insert_rowid|sqlite_libencoding|sqlite_libversion|sqlite_next|' + - 'sqlite_num_fields|sqlite_num_rows|sqlite_open|sqlite_popen|sqlite_prev|sqlite_query|sqlite_rewind|sqlite_seek|sqlite_single_query|' + - 'sqlite_udf_decode_binary|sqlite_udf_encode_binary|sqlite_unbuffered_query|sqlite_valid|sqrt|srand|sscanf|ssdeep_fuzzy_compare|' + - 'ssdeep_fuzzy_hash|ssdeep_fuzzy_hash_filename|ssh2_auth_hostbased_file|ssh2_auth_none|ssh2_auth_password|ssh2_auth_pubkey_file|' + - 'ssh2_connect|ssh2_exec|ssh2_fetch_stream|ssh2_fingerprint|ssh2_methods_negotiated|ssh2_publickey_add|ssh2_publickey_init|' + - 'ssh2_publickey_list|ssh2_publickey_remove|ssh2_scp_recv|ssh2_scp_send|ssh2_sftp|ssh2_sftp_lstat|ssh2_sftp_mkdir|ssh2_sftp_readlink|' + - 'ssh2_sftp_realpath|ssh2_sftp_rename|ssh2_sftp_rmdir|ssh2_sftp_stat|ssh2_sftp_symlink|ssh2_sftp_unlink|ssh2_shell|ssh2_tunnel|stat|' + - 'stats_absolute_deviation|stats_cdf_beta|stats_cdf_binomial|stats_cdf_cauchy|stats_cdf_chisquare|stats_cdf_exponential|stats_cdf_f|' + - 'stats_cdf_gamma|stats_cdf_laplace|stats_cdf_logistic|stats_cdf_negative_binomial|stats_cdf_noncentral_chisquare|stats_cdf_noncentral_f|' + - 'stats_cdf_poisson|stats_cdf_t|stats_cdf_uniform|stats_cdf_weibull|stats_covariance|stats_den_uniform|stats_dens_beta|stats_dens_cauchy|' + - 'stats_dens_chisquare|stats_dens_exponential|stats_dens_f|stats_dens_gamma|stats_dens_laplace|stats_dens_logistic|' + - 'stats_dens_negative_binomial|stats_dens_normal|stats_dens_pmf_binomial|stats_dens_pmf_hypergeometric|stats_dens_pmf_poisson|stats_dens_t|' + - 'stats_dens_weibull|stats_harmonic_mean|stats_kurtosis|stats_rand_gen_beta|stats_rand_gen_chisquare|stats_rand_gen_exponential|' + - 'stats_rand_gen_f|stats_rand_gen_funiform|stats_rand_gen_gamma|stats_rand_gen_ibinomial|stats_rand_gen_ibinomial_negative|' + - 'stats_rand_gen_int|stats_rand_gen_ipoisson|stats_rand_gen_iuniform|stats_rand_gen_noncenral_chisquare|stats_rand_gen_noncentral_f|' + - 'stats_rand_gen_noncentral_t|stats_rand_gen_normal|stats_rand_gen_t|stats_rand_get_seeds|stats_rand_phrase_to_seeds|stats_rand_ranf|' + - 'stats_rand_setall|stats_skew|stats_standard_deviation|stats_stat_binomial_coef|stats_stat_correlation|stats_stat_gennch|' + - 'stats_stat_independent_t|stats_stat_innerproduct|stats_stat_noncentral_t|stats_stat_paired_t|stats_stat_percentile|stats_stat_powersum|' + - 'stats_variance|stomp|stomp_connect_error|stomp_version|stompexception|stompframe|str_getcsv|str_ireplace|str_pad|str_repeat|str_replace|' + - 'str_rot13|str_shuffle|str_split|str_word_count|strcasecmp|strchr|strcmp|strcoll|strcspn|stream_bucket_append|stream_bucket_make_writeable|' + - 'stream_bucket_new|stream_bucket_prepend|stream_context_create|stream_context_get_default|stream_context_get_options|' + - 'stream_context_get_params|stream_context_set_default|stream_context_set_option|stream_context_set_params|stream_copy_to_stream|' + - 'stream_encoding|stream_filter_append|stream_filter_prepend|stream_filter_register|stream_filter_remove|stream_get_contents|' + - 'stream_get_filters|stream_get_line|stream_get_meta_data|stream_get_transports|stream_get_wrappers|stream_is_local|' + - 'stream_notification_callback|stream_register_wrapper|stream_resolve_include_path|stream_select|stream_set_blocking|stream_set_read_buffer|' + - 'stream_set_timeout|stream_set_write_buffer|stream_socket_accept|stream_socket_client|stream_socket_enable_crypto|stream_socket_get_name|' + - 'stream_socket_pair|stream_socket_recvfrom|stream_socket_sendto|stream_socket_server|stream_socket_shutdown|stream_supports_lock|' + - 'stream_wrapper_register|stream_wrapper_restore|stream_wrapper_unregister|streamwrapper|strftime|strip_tags|stripcslashes|stripos|' + - 'stripslashes|stristr|strlen|strnatcasecmp|strnatcmp|strncasecmp|strncmp|strpbrk|strpos|strptime|strrchr|strrev|strripos|strrpos|strspn|' + - 'strstr|strtok|strtolower|strtotime|strtoupper|strtr|strval|substr|substr_compare|substr_count|substr_replace|svm|svmmodel|svn_add|' + - 'svn_auth_get_parameter|svn_auth_set_parameter|svn_blame|svn_cat|svn_checkout|svn_cleanup|svn_client_version|svn_commit|svn_delete|' + - 'svn_diff|svn_export|svn_fs_abort_txn|svn_fs_apply_text|svn_fs_begin_txn2|svn_fs_change_node_prop|svn_fs_check_path|' + - 'svn_fs_contents_changed|svn_fs_copy|svn_fs_delete|svn_fs_dir_entries|svn_fs_file_contents|svn_fs_file_length|svn_fs_is_dir|svn_fs_is_file|' + - 'svn_fs_make_dir|svn_fs_make_file|svn_fs_node_created_rev|svn_fs_node_prop|svn_fs_props_changed|svn_fs_revision_prop|svn_fs_revision_root|' + - 'svn_fs_txn_root|svn_fs_youngest_rev|svn_import|svn_log|svn_ls|svn_mkdir|svn_repos_create|svn_repos_fs|svn_repos_fs_begin_txn_for_commit|' + - 'svn_repos_fs_commit_txn|svn_repos_hotcopy|svn_repos_open|svn_repos_recover|svn_revert|svn_status|svn_update|swf_actiongeturl|' + - 'swf_actiongotoframe|swf_actiongotolabel|swf_actionnextframe|swf_actionplay|swf_actionprevframe|swf_actionsettarget|swf_actionstop|' + - 'swf_actiontogglequality|swf_actionwaitforframe|swf_addbuttonrecord|swf_addcolor|swf_closefile|swf_definebitmap|swf_definefont|' + - 'swf_defineline|swf_definepoly|swf_definerect|swf_definetext|swf_endbutton|swf_enddoaction|swf_endshape|swf_endsymbol|swf_fontsize|' + - 'swf_fontslant|swf_fonttracking|swf_getbitmapinfo|swf_getfontinfo|swf_getframe|swf_labelframe|swf_lookat|swf_modifyobject|swf_mulcolor|' + - 'swf_nextid|swf_oncondition|swf_openfile|swf_ortho|swf_ortho2|swf_perspective|swf_placeobject|swf_polarview|swf_popmatrix|swf_posround|' + - 'swf_pushmatrix|swf_removeobject|swf_rotate|swf_scale|swf_setfont|swf_setframe|swf_shapearc|swf_shapecurveto|swf_shapecurveto3|' + - 'swf_shapefillbitmapclip|swf_shapefillbitmaptile|swf_shapefilloff|swf_shapefillsolid|swf_shapelinesolid|swf_shapelineto|swf_shapemoveto|' + - 'swf_showframe|swf_startbutton|swf_startdoaction|swf_startshape|swf_startsymbol|swf_textwidth|swf_translate|swf_viewport|swfaction|' + - 'swfbitmap|swfbutton|swfdisplayitem|swffill|swffont|swffontchar|swfgradient|swfmorph|swfmovie|swfprebuiltclip|swfshape|swfsound|' + - 'swfsoundinstance|swfsprite|swftext|swftextfield|swfvideostream|swish_construct|swish_getmetalist|swish_getpropertylist|swish_prepare|' + - 'swish_query|swishresult_getmetalist|swishresult_stem|swishresults_getparsedwords|swishresults_getremovedstopwords|swishresults_nextresult|' + - 'swishresults_seekresult|swishsearch_execute|swishsearch_resetlimit|swishsearch_setlimit|swishsearch_setphrasedelimiter|' + - 'swishsearch_setsort|swishsearch_setstructure|sybase_affected_rows|sybase_close|sybase_connect|sybase_data_seek|' + - 'sybase_deadlock_retry_count|sybase_fetch_array|sybase_fetch_assoc|sybase_fetch_field|sybase_fetch_object|sybase_fetch_row|' + - 'sybase_field_seek|sybase_free_result|sybase_get_last_message|sybase_min_client_severity|sybase_min_error_severity|' + - 'sybase_min_message_severity|sybase_min_server_severity|sybase_num_fields|sybase_num_rows|sybase_pconnect|sybase_query|sybase_result|' + - 'sybase_select_db|sybase_set_message_handler|sybase_unbuffered_query|symlink|sys_get_temp_dir|sys_getloadavg|syslog|system|tag|tan|tanh|' + - 'tcpwrap_check|tempnam|textdomain|tidy|tidy_access_count|tidy_config_count|tidy_diagnose|tidy_error_count|tidy_get_error_buffer|' + - 'tidy_get_output|tidy_load_config|tidy_reset_config|tidy_save_config|tidy_set_encoding|tidy_setopt|tidy_warning_count|tidynode|time|' + - 'time_nanosleep|time_sleep_until|timezone_abbreviations_list|timezone_identifiers_list|timezone_location_get|timezone_name_from_abbr|' + - 'timezone_name_get|timezone_offset_get|timezone_open|timezone_transitions_get|timezone_version_get|tmpfile|token_get_all|token_name|' + - 'tokyotyrant|tokyotyrantquery|tokyotyranttable|tostring|tostring|touch|transliterator|traversable|trigger_error|trim|uasort|ucfirst|' + - 'ucwords|udm_add_search_limit|udm_alloc_agent|udm_alloc_agent_array|udm_api_version|udm_cat_list|udm_cat_path|udm_check_charset|' + - 'udm_check_stored|udm_clear_search_limits|udm_close_stored|udm_crc32|udm_errno|udm_error|udm_find|udm_free_agent|udm_free_ispell_data|' + - 'udm_free_res|udm_get_doc_count|udm_get_res_field|udm_get_res_param|udm_hash32|udm_load_ispell_data|udm_open_stored|udm_set_agent_param|' + - 'uksort|umask|underflowexception|unexpectedvalueexception|uniqid|unixtojd|unlink|unpack|unregister_tick_function|unserialize|unset|' + - 'urldecode|urlencode|use_soap_error_handler|user_error|usleep|usort|utf8_decode|utf8_encode|v8js|v8jsexception|var_dump|var_export|variant|' + - 'variant_abs|variant_add|variant_and|variant_cast|variant_cat|variant_cmp|variant_date_from_timestamp|variant_date_to_timestamp|' + - 'variant_div|variant_eqv|variant_fix|variant_get_type|variant_idiv|variant_imp|variant_int|variant_mod|variant_mul|variant_neg|variant_not|' + - 'variant_or|variant_pow|variant_round|variant_set|variant_set_type|variant_sub|variant_xor|version_compare|vfprintf|virtual|' + - 'vpopmail_add_alias_domain|vpopmail_add_alias_domain_ex|vpopmail_add_domain|vpopmail_add_domain_ex|vpopmail_add_user|vpopmail_alias_add|' + - 'vpopmail_alias_del|vpopmail_alias_del_domain|vpopmail_alias_get|vpopmail_alias_get_all|vpopmail_auth_user|vpopmail_del_domain|' + - 'vpopmail_del_domain_ex|vpopmail_del_user|vpopmail_error|vpopmail_passwd|vpopmail_set_user_quota|vprintf|vsprintf|w32api_deftype|' + - 'w32api_init_dtype|w32api_invoke_function|w32api_register_function|w32api_set_call_method|wddx_add_vars|wddx_deserialize|wddx_packet_end|' + - 'wddx_packet_start|wddx_serialize_value|wddx_serialize_vars|win32_continue_service|win32_create_service|win32_delete_service|' + - 'win32_get_last_control_message|win32_pause_service|win32_ps_list_procs|win32_ps_stat_mem|win32_ps_stat_proc|win32_query_service_status|' + - 'win32_set_service_status|win32_start_service|win32_start_service_ctrl_dispatcher|win32_stop_service|wincache_fcache_fileinfo|' + - 'wincache_fcache_meminfo|wincache_lock|wincache_ocache_fileinfo|wincache_ocache_meminfo|wincache_refresh_if_changed|' + - 'wincache_rplist_fileinfo|wincache_rplist_meminfo|wincache_scache_info|wincache_scache_meminfo|wincache_ucache_add|wincache_ucache_cas|' + - 'wincache_ucache_clear|wincache_ucache_dec|wincache_ucache_delete|wincache_ucache_exists|wincache_ucache_get|wincache_ucache_inc|' + - 'wincache_ucache_info|wincache_ucache_meminfo|wincache_ucache_set|wincache_unlock|wordwrap|xattr_get|xattr_list|xattr_remove|xattr_set|' + - 'xattr_supported|xdiff_file_bdiff|xdiff_file_bdiff_size|xdiff_file_bpatch|xdiff_file_diff|xdiff_file_diff_binary|xdiff_file_merge3|' + - 'xdiff_file_patch|xdiff_file_patch_binary|xdiff_file_rabdiff|xdiff_string_bdiff|xdiff_string_bdiff_size|xdiff_string_bpatch|' + - 'xdiff_string_diff|xdiff_string_diff_binary|xdiff_string_merge3|xdiff_string_patch|xdiff_string_patch_binary|xdiff_string_rabdiff|' + - 'xhprof_disable|xhprof_enable|xhprof_sample_disable|xhprof_sample_enable|xml_error_string|xml_get_current_byte_index|' + - 'xml_get_current_column_number|xml_get_current_line_number|xml_get_error_code|xml_parse|xml_parse_into_struct|xml_parser_create|' + - 'xml_parser_create_ns|xml_parser_free|xml_parser_get_option|xml_parser_set_option|xml_set_character_data_handler|xml_set_default_handler|' + - 'xml_set_element_handler|xml_set_end_namespace_decl_handler|xml_set_external_entity_ref_handler|xml_set_notation_decl_handler|' + - 'xml_set_object|xml_set_processing_instruction_handler|xml_set_start_namespace_decl_handler|xml_set_unparsed_entity_decl_handler|xmlreader|' + - 'xmlrpc_decode|xmlrpc_decode_request|xmlrpc_encode|xmlrpc_encode_request|xmlrpc_get_type|xmlrpc_is_fault|xmlrpc_parse_method_descriptions|' + - 'xmlrpc_server_add_introspection_data|xmlrpc_server_call_method|xmlrpc_server_create|xmlrpc_server_destroy|' + - 'xmlrpc_server_register_introspection_callback|xmlrpc_server_register_method|xmlrpc_set_type|xmlwriter_end_attribute|xmlwriter_end_cdata|' + - 'xmlwriter_end_comment|xmlwriter_end_document|xmlwriter_end_dtd|xmlwriter_end_dtd_attlist|xmlwriter_end_dtd_element|' + - 'xmlwriter_end_dtd_entity|xmlwriter_end_element|xmlwriter_end_pi|xmlwriter_flush|xmlwriter_full_end_element|xmlwriter_open_memory|' + - 'xmlwriter_open_uri|xmlwriter_output_memory|xmlwriter_set_indent|xmlwriter_set_indent_string|xmlwriter_start_attribute|' + - 'xmlwriter_start_attribute_ns|xmlwriter_start_cdata|xmlwriter_start_comment|xmlwriter_start_document|xmlwriter_start_dtd|' + - 'xmlwriter_start_dtd_attlist|xmlwriter_start_dtd_element|xmlwriter_start_dtd_entity|xmlwriter_start_element|xmlwriter_start_element_ns|' + - 'xmlwriter_start_pi|xmlwriter_text|xmlwriter_write_attribute|xmlwriter_write_attribute_ns|xmlwriter_write_cdata|xmlwriter_write_comment|' + - 'xmlwriter_write_dtd|xmlwriter_write_dtd_attlist|xmlwriter_write_dtd_element|xmlwriter_write_dtd_entity|xmlwriter_write_element|' + - 'xmlwriter_write_element_ns|xmlwriter_write_pi|xmlwriter_write_raw|xpath_eval|xpath_eval_expression|xpath_new_context|xpath_register_ns|' + - 'xpath_register_ns_auto|xptr_eval|xptr_new_context|xslt_backend_info|xslt_backend_name|xslt_backend_version|xslt_create|xslt_errno|' + - 'xslt_error|xslt_free|xslt_getopt|xslt_process|xslt_set_base|xslt_set_encoding|xslt_set_error_handler|xslt_set_log|xslt_set_object|' + - 'xslt_set_sax_handler|xslt_set_sax_handlers|xslt_set_scheme_handler|xslt_set_scheme_handlers|xslt_setopt|xsltprocessor|yaml_emit|' + - 'yaml_emit_file|yaml_parse|yaml_parse_file|yaml_parse_url|yaz_addinfo|yaz_ccl_conf|yaz_ccl_parse|yaz_close|yaz_connect|yaz_database|' + - 'yaz_element|yaz_errno|yaz_error|yaz_es|yaz_es_result|yaz_get_option|yaz_hits|yaz_itemorder|yaz_present|yaz_range|yaz_record|yaz_scan|' + - 'yaz_scan_result|yaz_schema|yaz_search|yaz_set_option|yaz_sort|yaz_syntax|yaz_wait|yp_all|yp_cat|yp_err_string|yp_errno|yp_first|' + - 'yp_get_default_domain|yp_master|yp_match|yp_next|yp_order|zend_logo_guid|zend_thread_id|zend_version|zip_close|zip_entry_close|' + - 'zip_entry_compressedsize|zip_entry_compressionmethod|zip_entry_filesize|zip_entry_name|zip_entry_open|zip_entry_read|zip_open|zip_read|' + - 'ziparchive|ziparchive_addemptydir|ziparchive_addfile|ziparchive_addfromstring|ziparchive_close|ziparchive_deleteindex|' + - 'ziparchive_deletename|ziparchive_extractto|ziparchive_getarchivecomment|ziparchive_getcommentindex|ziparchive_getcommentname|' + - 'ziparchive_getfromindex|ziparchive_getfromname|ziparchive_getnameindex|ziparchive_getstatusstring|ziparchive_getstream|' + - 'ziparchive_locatename|ziparchive_open|ziparchive_renameindex|ziparchive_renamename|ziparchive_setCommentName|ziparchive_setarchivecomment|' + - 'ziparchive_setcommentindex|ziparchive_statindex|ziparchive_statname|ziparchive_unchangeall|ziparchive_unchangearchive|' + - 'ziparchive_unchangeindex|ziparchive_unchangename|zlib_get_coding_type').split('|') - ); - var keywords = lang.arrayToMap( - ('abstract|and|array|as|break|case|catch|class|clone|const|continue|declare|default|do|else|elseif|enddeclare|endfor|endforeach|endif|' + - 'endswitch|endwhile|extends|final|for|foreach|function|global|goto|if|implements|interface|instanceof|namespace|new|or|private|protected|' + - 'public|static|switch|throw|try|use|var|while|xor').split('|') - ); - var languageConstructs = lang.arrayToMap( - ('die|echo|empty|exit|eval|include|include_once|isset|list|require|require_once|return|print|unset').split('|') - ); - - var builtinConstants = lang.arrayToMap( - ('true|false|null|__CLASS__|__DIR__|__FILE__|__LINE__|__METHOD__|__FUNCTION__|__NAMESPACE__').split('|') - ); - - var builtinVariables = lang.arrayToMap( - ('$GLOBALS|$_SERVER|$_GET|$_POST|$_FILES|$_REQUEST|$_SESSION|$_ENV|$_COOKIE|$php_errormsg|$HTTP_RAW_POST_DATA|' + - '$http_response_header|$argc|$argv').split('|') - ); - var builtinFunctionsDeprecated = lang.arrayToMap( - ('key_exists|cairo_matrix_create_scale|cairo_matrix_create_translate|call_user_method|call_user_method_array|com_addref|com_get|' + - 'com_invoke|com_isenum|com_load|com_release|com_set|connection_timeout|cubrid_load_from_glo|cubrid_new_glo|cubrid_save_to_glo|' + - 'cubrid_send_glo|define_syslog_variables|dl|ereg|ereg_replace|eregi|eregi_replace|hw_documentattributes|hw_documentbodytag|' + - 'hw_documentsize|hw_outputdocument|imagedashedline|maxdb_bind_param|maxdb_bind_result|maxdb_client_encoding|maxdb_close_long_data|' + - 'maxdb_execute|maxdb_fetch|maxdb_get_metadata|maxdb_param_count|maxdb_send_long_data|mcrypt_ecb|mcrypt_generic_end|mime_content_type|' + - 'mysql_createdb|mysql_dbname|mysql_db_query|mysql_drop_db|mysql_dropdb|mysql_escape_string|mysql_fieldflags|mysql_fieldflags|' + - 'mysql_fieldname|mysql_fieldtable|mysql_fieldtype|mysql_freeresult|mysql_listdbs|mysql_list_fields|mysql_listfields|mysql_list_tables|' + - 'mysql_listtables|mysql_numfields|mysql_numrows|mysql_selectdb|mysql_tablename|mysqli_bind_param|mysqli_bind_result|' + - 'mysqli_disable_reads_from_master|mysqli_disable_rpl_parse|mysqli_enable_reads_from_master|mysqli_enable_rpl_parse|mysqli_execute|' + - 'mysqli_fetch|mysqli_get_metadata|mysqli_master_query|mysqli_param_count|mysqli_rpl_parse_enabled|mysqli_rpl_probe|mysqli_rpl_query_type|' + - 'mysqli_send_long_data|mysqli_send_query|mysqli_slave_query|ocibindbyname|ocicancel|ocicloselob|ocicollappend|ocicollassign|' + - 'ocicollassignelem|ocicollgetelem|ocicollmax|ocicollsize|ocicolltrim|ocicolumnisnull|ocicolumnname|ocicolumnprecision|ocicolumnscale|' + - 'ocicolumnsize|ocicolumntype|ocicolumntyperaw|ocicommit|ocidefinebyname|ocierror|ociexecute|ocifetch|ocifetchinto|ocifetchstatement|' + - 'ocifreecollection|ocifreecursor|ocifreedesc|ocifreestatement|ociinternaldebug|ociloadlob|ocilogoff|ocilogon|ocinewcollection|' + - 'ocinewcursor|ocinewdescriptor|ocinlogon|ocinumcols|ociparse|ociplogon|ociresult|ocirollback|ocirowcount|ocisavelob|ocisavelobfile|' + - 'ociserverversion|ocisetprefetch|ocistatementtype|ociwritelobtofile|ociwritetemporarylob|PDF_add_annotation|PDF_add_bookmark|' + - 'PDF_add_launchlink|PDF_add_locallink|PDF_add_note|PDF_add_outline|PDF_add_pdflink|PDF_add_weblink|PDF_attach_file|PDF_begin_page|' + - 'PDF_begin_template|PDF_close_pdi|PDF_close|PDF_findfont|PDF_get_font|PDF_get_fontname|PDF_get_fontsize|PDF_get_image_height|' + - 'PDF_get_image_width|PDF_get_majorversion|PDF_get_minorversion|PDF_get_pdi_parameter|PDF_get_pdi_value|PDF_open_ccitt|PDF_open_file|' + - 'PDF_open_gif|PDF_open_image_file|PDF_open_image|PDF_open_jpeg|PDF_open_pdi|PDF_open_tiff|PDF_place_image|PDF_place_pdi_page|' + - 'PDF_set_border_color|PDF_set_border_dash|PDF_set_border_style|PDF_set_char_spacing|PDF_set_duration|PDF_set_horiz_scaling|' + - 'PDF_set_info_author|PDF_set_info_creator|PDF_set_info_keywords|PDF_set_info_subject|PDF_set_info_title|PDF_set_leading|' + - 'PDF_set_text_matrix|PDF_set_text_rendering|PDF_set_text_rise|PDF_set_word_spacing|PDF_setgray_fill|PDF_setgray_stroke|PDF_setgray|' + - 'PDF_setpolydash|PDF_setrgbcolor_fill|PDF_setrgbcolor_stroke|PDF_setrgbcolor|PDF_show_boxed|php_check_syntax|px_set_tablename|' + - 'px_set_targetencoding|runkit_sandbox_output_handler|session_is_registered|session_register|session_unregister' + - 'set_magic_quotes_runtime|magic_quotes_runtime|set_socket_blocking|socket_set_blocking|set_socket_timeout|socket_set_timeout|split|spliti|' + - 'sql_regcase').split('|') - ); - - var keywordsDeprecated = lang.arrayToMap( - ('cfunction|old_function').split('|') - ); - - var futureReserved = lang.arrayToMap([]); - - this.$rules = { - "start" : [ - { - token : "comment", - regex : /(?:#|\/\/)(?:[^?]|\?[^>])*/ - }, - docComment.getStartRule("doc-start"), - { - token : "comment", // multi line comment - regex : "\\/\\*", - next : "comment" - }, { - token : "string.regexp", - regex : "[/](?:(?:\\[(?:\\\\]|[^\\]])+\\])|(?:\\\\/|[^\\]/]))*[/][gimy]*\\s*(?=[).,;]|$)" - }, { - token : "string", // " string start - regex : '"', - next : "qqstring" - }, { - token : "string", // ' string start - regex : "'", - next : "qstring" - }, { - token : "constant.numeric", // hex - regex : "0[xX][0-9a-fA-F]+\\b" - }, { - token : "constant.numeric", // float - regex : "[+-]?\\d+(?:(?:\\.\\d*)?(?:[eE][+-]?\\d+)?)?\\b" - }, { - token : "constant.language", // constants - regex : "\\b(?:DEFAULT_INCLUDE_PATH|E_(?:ALL|CO(?:MPILE_(?:ERROR|WARNING)|RE_(?:ERROR|WARNING))|" + - "ERROR|NOTICE|PARSE|STRICT|USER_(?:ERROR|NOTICE|WARNING)|WARNING)|P(?:EAR_(?:EXTENSION_DIR|INSTALL_DIR)|" + - "HP_(?:BINDIR|CONFIG_FILE_(?:PATH|SCAN_DIR)|DATADIR|E(?:OL|XTENSION_DIR)|INT_(?:MAX|SIZE)|" + - "L(?:IBDIR|OCALSTATEDIR)|O(?:S|UTPUT_HANDLER_(?:CONT|END|START))|PREFIX|S(?:API|HLIB_SUFFIX|YSCONFDIR)|" + - "VERSION))|__COMPILER_HALT_OFFSET__)\\b" - }, { - token : ["keyword", "text", "support.class"], - regex : "\\b(new)(\\s+)(\\w+)" - }, { - token : ["support.class", "keyword.operator"], - regex : "\\b(\\w+)(::)" - }, { - token : "constant.language", // constants - regex : "\\b(?:A(?:B(?:DAY_(?:1|2|3|4|5|6|7)|MON_(?:1(?:0|1|2|)|2|3|4|5|6|7|8|9))|LT_DIGITS|M_STR|" + - "SSERT_(?:ACTIVE|BAIL|CALLBACK|QUIET_EVAL|WARNING))|C(?:ASE_(?:LOWER|UPPER)|HAR_MAX|" + - "O(?:DESET|NNECTION_(?:ABORTED|NORMAL|TIMEOUT)|UNT_(?:NORMAL|RECURSIVE))|" + - "R(?:EDITS_(?:ALL|DOCS|FULLPAGE|G(?:ENERAL|ROUP)|MODULES|QA|SAPI)|NCYSTR|" + - "YPT_(?:BLOWFISH|EXT_DES|MD5|S(?:ALT_LENGTH|TD_DES)))|URRENCY_SYMBOL)|D(?:AY_(?:1|2|3|4|5|6|7)|" + - "ECIMAL_POINT|IRECTORY_SEPARATOR|_(?:FMT|T_FMT))|E(?:NT_(?:COMPAT|NOQUOTES|QUOTES)|RA(?:_(?:D_(?:FMT|T_FMT)|" + - "T_FMT|YEAR)|)|XTR_(?:IF_EXISTS|OVERWRITE|PREFIX_(?:ALL|I(?:F_EXISTS|NVALID)|SAME)|SKIP))|FRAC_DIGITS|GROUPING|" + - "HTML_(?:ENTITIES|SPECIALCHARS)|IN(?:FO_(?:ALL|C(?:ONFIGURATION|REDITS)|ENVIRONMENT|GENERAL|LICENSE|MODULES|VARIABLES)|" + - "I_(?:ALL|PERDIR|SYSTEM|USER)|T_(?:CURR_SYMBOL|FRAC_DIGITS))|L(?:C_(?:ALL|C(?:OLLATE|TYPE)|M(?:ESSAGES|ONETARY)|NUMERIC|TIME)|" + - "O(?:CK_(?:EX|NB|SH|UN)|G_(?:A(?:LERT|UTH(?:PRIV|))|C(?:ONS|R(?:IT|ON))|D(?:AEMON|EBUG)|E(?:MERG|RR)|INFO|KERN|" + - "L(?:OCAL(?:0|1|2|3|4|5|6|7)|PR)|MAIL|N(?:DELAY|EWS|O(?:TICE|WAIT))|ODELAY|P(?:ERROR|ID)|SYSLOG|U(?:SER|UCP)|WARNING)))|" + - "M(?:ON_(?:1(?:0|1|2|)|2|3|4|5|6|7|8|9|DECIMAL_POINT|GROUPING|THOUSANDS_SEP)|_(?:1_PI|2_(?:PI|SQRTPI)|E|L(?:N(?:10|2)|" + - "OG(?:10E|2E))|PI(?:_(?:2|4)|)|SQRT(?:1_2|2)))|N(?:EGATIVE_SIGN|O(?:EXPR|STR)|_(?:CS_PRECEDES|S(?:EP_BY_SPACE|IGN_POSN)))|" + - "P(?:ATH(?:INFO_(?:BASENAME|DIRNAME|EXTENSION)|_SEPARATOR)|M_STR|OSITIVE_SIGN|_(?:CS_PRECEDES|S(?:EP_BY_SPACE|IGN_POSN)))|" + - "RADIXCHAR|S(?:EEK_(?:CUR|END|SET)|ORT_(?:ASC|DESC|NUMERIC|REGULAR|STRING)|TR_PAD_(?:BOTH|LEFT|RIGHT))|" + - "T(?:HOUS(?:ANDS_SEP|EP)|_FMT(?:_AMPM|))|YES(?:EXPR|STR)|STD(?:IN|OUT|ERR))\\b" - }, { - token : function(value) { - if (keywords.hasOwnProperty(value)) - return "keyword"; - else if (builtinConstants.hasOwnProperty(value)) - return "constant.language"; - else if (builtinVariables.hasOwnProperty(value)) - return "variable.language"; - else if (futureReserved.hasOwnProperty(value)) - return "invalid.illegal"; - else if (builtinFunctions.hasOwnProperty(value)) - return "support.function"; - else if (value == "debugger") - return "invalid.deprecated"; - else - if(value.match(/^(\$[a-zA-Z][a-zA-Z0-9_]*|self|parent)$/)) - return "variable"; - return "identifier"; - }, - regex : "[a-zA-Z_$][a-zA-Z0-9_$]*\\b" - }, { - onMatch : function(value, currentSate, state) { - value = value.substr(3); - if (value[0] == "'" || value[0] == '"') - value = value.slice(1, -1); - state.unshift(this.next, value); - return "markup.list"; - }, - regex : /<<<(?:\w+|'\w+'|"\w+")$/, - next: "heredoc" - }, { - token : "keyword.operator", - regex : "::|!|\\$|%|&|\\*|\\-\\-|\\-|\\+\\+|\\+|~|===|==|!=|!==|<=|>=|=>|<<=|>>=|>>>=|<>|<|>|=|!|&&|\\|\\||\\?\\:|\\*=|%=|\\+=|\\-=|&=|\\^=|\\b(?:in|instanceof|new|delete|typeof|void)" - }, { - token : "paren.lparen", - regex : "[[({]" - }, { - token : "paren.rparen", - regex : "[\\])}]" - }, { - token : "text", - regex : "\\s+" - } - ], - "heredoc" : [ - { - onMatch : function(value, currentSate, stack) { - if (stack[1] != value) - return "string"; - stack.shift(); - stack.shift(); - return "markup.list" - }, - regex : "^\\w+(?=;?$)", - next: "start" - }, { - token: "string", - regex : ".*" - } - ], - "comment" : [ - { - token : "comment", // closing comment - regex : ".*?\\*\\/", - next : "start" - }, { - token : "comment", // comment spanning whole line - regex : ".+" - } - ], - "qqstring" : [ - { - token : "constant.language.escape", - regex : '\\\\(?:[nrtvef\\\\"$]|[0-7]{1,3}|x[0-9A-Fa-f]{1,2})' - }, { - token : "constant.language.escape", - regex : /\$[\w]+(?:\[[\w\]+]|=>\w+)?/ - }, { - token : "constant.language.escape", - regex : /\$\{[^"\}]+\}?/ // this is wrong but ok for now - }, - {token : "string", regex : '"', next : "start"}, - {defaultToken : "string"} - ], - "qstring" : [ - {token : "constant.language.escape", regex : /\\['\\]/}, - {token : "string", regex : "'", next : "start"}, - {defaultToken : "string"} - ] - }; - - this.embedRules(DocCommentHighlightRules, "doc-", - [ DocCommentHighlightRules.getEndRule("start") ]); -}; - -oop.inherits(PhpLangHighlightRules, TextHighlightRules); - - -var PhpHighlightRules = function() { - HtmlHighlightRules.call(this); - - var startRules = [ - { - token : "support.php_tag", // php open tag - regex : "<\\?(?:php|=)?", - push : "php-start" - } - ]; - - var endRules = [ - { - token : "support.php_tag", // php close tag - regex : "\\?>", - next : "pop" - } - ]; - - for (var key in this.$rules) - this.$rules[key].unshift.apply(this.$rules[key], startRules); - - this.embedRules(PhpLangHighlightRules, "php-", endRules, ["start"]); - - this.normalizeRules(); -}; - -oop.inherits(PhpHighlightRules, HtmlHighlightRules); - -exports.PhpHighlightRules = PhpHighlightRules; -exports.PhpLangHighlightRules = PhpLangHighlightRules; -}); - -ace.define('ace/mode/doc_comment_highlight_rules', ['require', 'exports', 'module' , 'ace/lib/oop', 'ace/mode/text_highlight_rules'], function(require, exports, module) { - - -var oop = require("../lib/oop"); -var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; - -var DocCommentHighlightRules = function() { - - this.$rules = { - "start" : [ { - token : "comment.doc.tag", - regex : "@[\\w\\d_]+" // TODO: fix email addresses - }, { - token : "comment.doc.tag", - regex : "\\bTODO\\b" - }, { - defaultToken : "comment.doc" - }] - }; -}; - -oop.inherits(DocCommentHighlightRules, TextHighlightRules); - -DocCommentHighlightRules.getStartRule = function(start) { - return { - token : "comment.doc", // doc comment - regex : "\\/\\*(?=\\*)", - next : start - }; -}; - -DocCommentHighlightRules.getEndRule = function (start) { - return { - token : "comment.doc", // closing comment - regex : "\\*\\/", - next : start - }; -}; - - -exports.DocCommentHighlightRules = DocCommentHighlightRules; - -}); - -ace.define('ace/mode/html_highlight_rules', ['require', 'exports', 'module' , 'ace/lib/oop', 'ace/lib/lang', 'ace/mode/css_highlight_rules', 'ace/mode/javascript_highlight_rules', 'ace/mode/xml_highlight_rules'], function(require, exports, module) { - - -var oop = require("../lib/oop"); -var lang = require("../lib/lang"); -var CssHighlightRules = require("./css_highlight_rules").CssHighlightRules; -var JavaScriptHighlightRules = require("./javascript_highlight_rules").JavaScriptHighlightRules; -var XmlHighlightRules = require("./xml_highlight_rules").XmlHighlightRules; - -var tagMap = lang.createMap({ - a : 'anchor', - button : 'form', - form : 'form', - img : 'image', - input : 'form', - label : 'form', - option : 'form', - script : 'script', - select : 'form', - textarea : 'form', - style : 'style', - table : 'table', - tbody : 'table', - td : 'table', - tfoot : 'table', - th : 'table', - tr : 'table' -}); - -var HtmlHighlightRules = function() { - XmlHighlightRules.call(this); - - this.addRules({ - attributes: [{ - include : "space" - }, { - token : "entity.other.attribute-name", - regex : "[-_a-zA-Z0-9:]+" - }, { - token : "keyword.operator.separator", - regex : "=", - push : [{ - include: "space" - }, { - token : "string", - regex : "[^<>='\"`\\s]+", - next : "pop" - }, { - token : "empty", - regex : "", - next : "pop" - }] - }, { - include : "string" - }], - tag: [{ - token : function(start, tag) { - var group = tagMap[tag]; - return ["meta.tag.punctuation.begin", - "meta.tag.name" + (group ? "." + group : "")]; - }, - regex : "(<)([-_a-zA-Z0-9:]+)", - next: "start_tag_stuff" - }, { - token : function(start, tag) { - var group = tagMap[tag]; - return ["meta.tag.punctuation.begin", - "meta.tag.name" + (group ? "." + group : "")]; - }, - regex : "(", next : "start"} - ], - end_tag_stuff: [ - {include : "space"}, - {token : "meta.tag.punctuation.end", regex : ">", next : "start"} - ] - }); - - this.embedTagRules(CssHighlightRules, "css-", "style"); - this.embedTagRules(JavaScriptHighlightRules, "js-", "script"); - - if (this.constructor === HtmlHighlightRules) - this.normalizeRules(); -}; - -oop.inherits(HtmlHighlightRules, XmlHighlightRules); - -exports.HtmlHighlightRules = HtmlHighlightRules; -}); - -ace.define('ace/mode/css_highlight_rules', ['require', 'exports', 'module' , 'ace/lib/oop', 'ace/lib/lang', 'ace/mode/text_highlight_rules'], function(require, exports, module) { - - -var oop = require("../lib/oop"); -var lang = require("../lib/lang"); -var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; -var supportType = exports.supportType = "animation-fill-mode|alignment-adjust|alignment-baseline|animation-delay|animation-direction|animation-duration|animation-iteration-count|animation-name|animation-play-state|animation-timing-function|animation|appearance|azimuth|backface-visibility|background-attachment|background-break|background-clip|background-color|background-image|background-origin|background-position|background-repeat|background-size|background|baseline-shift|binding|bleed|bookmark-label|bookmark-level|bookmark-state|bookmark-target|border-bottom|border-bottom-color|border-bottom-left-radius|border-bottom-right-radius|border-bottom-style|border-bottom-width|border-collapse|border-color|border-image|border-image-outset|border-image-repeat|border-image-slice|border-image-source|border-image-width|border-left|border-left-color|border-left-style|border-left-width|border-radius|border-right|border-right-color|border-right-style|border-right-width|border-spacing|border-style|border-top|border-top-color|border-top-left-radius|border-top-right-radius|border-top-style|border-top-width|border-width|border|bottom|box-align|box-decoration-break|box-direction|box-flex-group|box-flex|box-lines|box-ordinal-group|box-orient|box-pack|box-shadow|box-sizing|break-after|break-before|break-inside|caption-side|clear|clip|color-profile|color|column-count|column-fill|column-gap|column-rule|column-rule-color|column-rule-style|column-rule-width|column-span|column-width|columns|content|counter-increment|counter-reset|crop|cue-after|cue-before|cue|cursor|direction|display|dominant-baseline|drop-initial-after-adjust|drop-initial-after-align|drop-initial-before-adjust|drop-initial-before-align|drop-initial-size|drop-initial-value|elevation|empty-cells|fit|fit-position|float-offset|float|font-family|font-size|font-size-adjust|font-stretch|font-style|font-variant|font-weight|font|grid-columns|grid-rows|hanging-punctuation|height|hyphenate-after|hyphenate-before|hyphenate-character|hyphenate-lines|hyphenate-resource|hyphens|icon|image-orientation|image-rendering|image-resolution|inline-box-align|left|letter-spacing|line-height|line-stacking-ruby|line-stacking-shift|line-stacking-strategy|line-stacking|list-style-image|list-style-position|list-style-type|list-style|margin-bottom|margin-left|margin-right|margin-top|margin|mark-after|mark-before|mark|marks|marquee-direction|marquee-play-count|marquee-speed|marquee-style|max-height|max-width|min-height|min-width|move-to|nav-down|nav-index|nav-left|nav-right|nav-up|opacity|orphans|outline-color|outline-offset|outline-style|outline-width|outline|overflow-style|overflow-x|overflow-y|overflow|padding-bottom|padding-left|padding-right|padding-top|padding|page-break-after|page-break-before|page-break-inside|page-policy|page|pause-after|pause-before|pause|perspective-origin|perspective|phonemes|pitch-range|pitch|play-during|pointer-events|position|presentation-level|punctuation-trim|quotes|rendering-intent|resize|rest-after|rest-before|rest|richness|right|rotation-point|rotation|ruby-align|ruby-overhang|ruby-position|ruby-span|size|speak-header|speak-numeral|speak-punctuation|speak|speech-rate|stress|string-set|table-layout|target-name|target-new|target-position|target|text-align-last|text-align|text-decoration|text-emphasis|text-height|text-indent|text-justify|text-outline|text-shadow|text-transform|text-wrap|top|transform-origin|transform-style|transform|transition-delay|transition-duration|transition-property|transition-timing-function|transition|unicode-bidi|vertical-align|visibility|voice-balance|voice-duration|voice-family|voice-pitch-range|voice-pitch|voice-rate|voice-stress|voice-volume|volume|white-space-collapse|white-space|widows|width|word-break|word-spacing|word-wrap|z-index"; -var supportFunction = exports.supportFunction = "rgb|rgba|url|attr|counter|counters"; -var supportConstant = exports.supportConstant = "absolute|after-edge|after|all-scroll|all|alphabetic|always|antialiased|armenian|auto|avoid-column|avoid-page|avoid|balance|baseline|before-edge|before|below|bidi-override|block-line-height|block|bold|bolder|border-box|both|bottom|box|break-all|break-word|capitalize|caps-height|caption|center|central|char|circle|cjk-ideographic|clone|close-quote|col-resize|collapse|column|consider-shifts|contain|content-box|cover|crosshair|cubic-bezier|dashed|decimal-leading-zero|decimal|default|disabled|disc|disregard-shifts|distribute-all-lines|distribute-letter|distribute-space|distribute|dotted|double|e-resize|ease-in|ease-in-out|ease-out|ease|ellipsis|end|exclude-ruby|fill|fixed|georgian|glyphs|grid-height|groove|hand|hanging|hebrew|help|hidden|hiragana-iroha|hiragana|horizontal|icon|ideograph-alpha|ideograph-numeric|ideograph-parenthesis|ideograph-space|ideographic|inactive|include-ruby|inherit|initial|inline-block|inline-box|inline-line-height|inline-table|inline|inset|inside|inter-ideograph|inter-word|invert|italic|justify|katakana-iroha|katakana|keep-all|last|left|lighter|line-edge|line-through|line|linear|list-item|local|loose|lower-alpha|lower-greek|lower-latin|lower-roman|lowercase|lr-tb|ltr|mathematical|max-height|max-size|medium|menu|message-box|middle|move|n-resize|ne-resize|newspaper|no-change|no-close-quote|no-drop|no-open-quote|no-repeat|none|normal|not-allowed|nowrap|nw-resize|oblique|open-quote|outset|outside|overline|padding-box|page|pointer|pre-line|pre-wrap|pre|preserve-3d|progress|relative|repeat-x|repeat-y|repeat|replaced|reset-size|ridge|right|round|row-resize|rtl|s-resize|scroll|se-resize|separate|slice|small-caps|small-caption|solid|space|square|start|static|status-bar|step-end|step-start|steps|stretch|strict|sub|super|sw-resize|table-caption|table-cell|table-column-group|table-column|table-footer-group|table-header-group|table-row-group|table-row|table|tb-rl|text-after-edge|text-before-edge|text-bottom|text-size|text-top|text|thick|thin|transparent|underline|upper-alpha|upper-latin|upper-roman|uppercase|use-script|vertical-ideographic|vertical-text|visible|w-resize|wait|whitespace|z-index|zero"; -var supportConstantColor = exports.supportConstantColor = "aqua|black|blue|fuchsia|gray|green|lime|maroon|navy|olive|orange|purple|red|silver|teal|white|yellow"; -var supportConstantFonts = exports.supportConstantFonts = "arial|century|comic|courier|garamond|georgia|helvetica|impact|lucida|symbol|system|tahoma|times|trebuchet|utopia|verdana|webdings|sans-serif|serif|monospace"; - -var numRe = exports.numRe = "\\-?(?:(?:[0-9]+)|(?:[0-9]*\\.[0-9]+))"; -var pseudoElements = exports.pseudoElements = "(\\:+)\\b(after|before|first-letter|first-line|moz-selection|selection)\\b"; -var pseudoClasses = exports.pseudoClasses = "(:)\\b(active|checked|disabled|empty|enabled|first-child|first-of-type|focus|hover|indeterminate|invalid|last-child|last-of-type|link|not|nth-child|nth-last-child|nth-last-of-type|nth-of-type|only-child|only-of-type|required|root|target|valid|visited)\\b"; - -var CssHighlightRules = function() { - - var keywordMapper = this.createKeywordMapper({ - "support.function": supportFunction, - "support.constant": supportConstant, - "support.type": supportType, - "support.constant.color": supportConstantColor, - "support.constant.fonts": supportConstantFonts - }, "text", true); - - this.$rules = { - "start" : [{ - token : "comment", // multi line comment - regex : "\\/\\*", - push : "comment" - }, { - token: "paren.lparen", - regex: "\\{", - push: "ruleset" - }, { - token: "string", - regex: "@.*?{", - push: "media" - }, { - token: "keyword", - regex: "#[a-z0-9-_]+" - }, { - token: "variable", - regex: "\\.[a-z0-9-_]+" - }, { - token: "string", - regex: ":[a-z0-9-_]+" - }, { - token: "constant", - regex: "[a-z0-9-_]+" - }, { - caseInsensitive: true - }], - - "media" : [{ - token : "comment", // multi line comment - regex : "\\/\\*", - push : "comment" - }, { - token: "paren.lparen", - regex: "\\{", - push: "ruleset" - }, { - token: "string", - regex: "\\}", - next: "pop" - }, { - token: "keyword", - regex: "#[a-z0-9-_]+" - }, { - token: "variable", - regex: "\\.[a-z0-9-_]+" - }, { - token: "string", - regex: ":[a-z0-9-_]+" - }, { - token: "constant", - regex: "[a-z0-9-_]+" - }, { - caseInsensitive: true - }], - - "comment" : [{ - token : "comment", - regex : "\\*\\/", - next : "pop" - }, { - defaultToken : "comment" - }], - - "ruleset" : [ - { - token : "paren.rparen", - regex : "\\}", - next: "pop" - }, { - token : "comment", // multi line comment - regex : "\\/\\*", - push : "comment" - }, { - token : "string", // single line - regex : '["](?:(?:\\\\.)|(?:[^"\\\\]))*?["]' - }, { - token : "string", // single line - regex : "['](?:(?:\\\\.)|(?:[^'\\\\]))*?[']" - }, { - token : ["constant.numeric", "keyword"], - regex : "(" + numRe + ")(ch|cm|deg|em|ex|fr|gd|grad|Hz|in|kHz|mm|ms|pc|pt|px|rad|rem|s|turn|vh|vm|vw|%)" - }, { - token : "constant.numeric", - regex : numRe - }, { - token : "constant.numeric", // hex6 color - regex : "#[a-f0-9]{6}" - }, { - token : "constant.numeric", // hex3 color - regex : "#[a-f0-9]{3}" - }, { - token : ["punctuation", "entity.other.attribute-name.pseudo-element.css"], - regex : pseudoElements - }, { - token : ["punctuation", "entity.other.attribute-name.pseudo-class.css"], - regex : pseudoClasses - }, { - token : ["support.function", "string", "support.function"], - regex : "(url\\()(.*)(\\))" - }, { - token : keywordMapper, - regex : "\\-?[a-zA-Z_][a-zA-Z0-9_\\-]*" - }, { - caseInsensitive: true - }] - }; - - this.normalizeRules(); -}; - -oop.inherits(CssHighlightRules, TextHighlightRules); - -exports.CssHighlightRules = CssHighlightRules; - -}); - -ace.define('ace/mode/javascript_highlight_rules', ['require', 'exports', 'module' , 'ace/lib/oop', 'ace/mode/doc_comment_highlight_rules', 'ace/mode/text_highlight_rules'], function(require, exports, module) { - - -var oop = require("../lib/oop"); -var DocCommentHighlightRules = require("./doc_comment_highlight_rules").DocCommentHighlightRules; -var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; - -var JavaScriptHighlightRules = function() { - var keywordMapper = this.createKeywordMapper({ - "variable.language": - "Array|Boolean|Date|Function|Iterator|Number|Object|RegExp|String|Proxy|" + // Constructors - "Namespace|QName|XML|XMLList|" + // E4X - "ArrayBuffer|Float32Array|Float64Array|Int16Array|Int32Array|Int8Array|" + - "Uint16Array|Uint32Array|Uint8Array|Uint8ClampedArray|" + - "Error|EvalError|InternalError|RangeError|ReferenceError|StopIteration|" + // Errors - "SyntaxError|TypeError|URIError|" + - "decodeURI|decodeURIComponent|encodeURI|encodeURIComponent|eval|isFinite|" + // Non-constructor functions - "isNaN|parseFloat|parseInt|" + - "JSON|Math|" + // Other - "this|arguments|prototype|window|document" , // Pseudo - "keyword": - "const|yield|import|get|set|" + - "break|case|catch|continue|default|delete|do|else|finally|for|function|" + - "if|in|instanceof|new|return|switch|throw|try|typeof|let|var|while|with|debugger|" + - "__parent__|__count__|escape|unescape|with|__proto__|" + - "class|enum|extends|super|export|implements|private|public|interface|package|protected|static", - "storage.type": - "const|let|var|function", - "constant.language": - "null|Infinity|NaN|undefined", - "support.function": - "alert", - "constant.language.boolean": "true|false" - }, "identifier"); - var kwBeforeRe = "case|do|else|finally|in|instanceof|return|throw|try|typeof|yield|void"; - var identifierRe = "[a-zA-Z\\$_\u00a1-\uffff][a-zA-Z\\d\\$_\u00a1-\uffff]*\\b"; - - var escapedRe = "\\\\(?:x[0-9a-fA-F]{2}|" + // hex - "u[0-9a-fA-F]{4}|" + // unicode - "[0-2][0-7]{0,2}|" + // oct - "3[0-6][0-7]?|" + // oct - "37[0-7]?|" + // oct - "[4-7][0-7]?|" + //oct - ".)"; - - this.$rules = { - "no_regex" : [ - { - token : "comment", - regex : "\\/\\/", - next : "line_comment" - }, - DocCommentHighlightRules.getStartRule("doc-start"), - { - token : "comment", // multi line comment - regex : /\/\*/, - next : "comment" - }, { - token : "string", - regex : "'(?=.)", - next : "qstring" - }, { - token : "string", - regex : '"(?=.)', - next : "qqstring" - }, { - token : "constant.numeric", // hex - regex : /0[xX][0-9a-fA-F]+\b/ - }, { - token : "constant.numeric", // float - regex : /[+-]?\d+(?:(?:\.\d*)?(?:[eE][+-]?\d+)?)?\b/ - }, { - token : [ - "storage.type", "punctuation.operator", "support.function", - "punctuation.operator", "entity.name.function", "text","keyword.operator" - ], - regex : "(" + identifierRe + ")(\\.)(prototype)(\\.)(" + identifierRe +")(\\s*)(=)", - next: "function_arguments" - }, { - token : [ - "storage.type", "punctuation.operator", "entity.name.function", "text", - "keyword.operator", "text", "storage.type", "text", "paren.lparen" - ], - regex : "(" + identifierRe + ")(\\.)(" + identifierRe +")(\\s*)(=)(\\s*)(function)(\\s*)(\\()", - next: "function_arguments" - }, { - token : [ - "entity.name.function", "text", "keyword.operator", "text", "storage.type", - "text", "paren.lparen" - ], - regex : "(" + identifierRe +")(\\s*)(=)(\\s*)(function)(\\s*)(\\()", - next: "function_arguments" - }, { - token : [ - "storage.type", "punctuation.operator", "entity.name.function", "text", - "keyword.operator", "text", - "storage.type", "text", "entity.name.function", "text", "paren.lparen" - ], - regex : "(" + identifierRe + ")(\\.)(" + identifierRe +")(\\s*)(=)(\\s*)(function)(\\s+)(\\w+)(\\s*)(\\()", - next: "function_arguments" - }, { - token : [ - "storage.type", "text", "entity.name.function", "text", "paren.lparen" - ], - regex : "(function)(\\s+)(" + identifierRe + ")(\\s*)(\\()", - next: "function_arguments" - }, { - token : [ - "entity.name.function", "text", "punctuation.operator", - "text", "storage.type", "text", "paren.lparen" - ], - regex : "(" + identifierRe + ")(\\s*)(:)(\\s*)(function)(\\s*)(\\()", - next: "function_arguments" - }, { - token : [ - "text", "text", "storage.type", "text", "paren.lparen" - ], - regex : "(:)(\\s*)(function)(\\s*)(\\()", - next: "function_arguments" - }, { - token : "keyword", - regex : "(?:" + kwBeforeRe + ")\\b", - next : "start" - }, { - token : ["punctuation.operator", "support.function"], - regex : /(\.)(s(?:h(?:ift|ow(?:Mod(?:elessDialog|alDialog)|Help))|croll(?:X|By(?:Pages|Lines)?|Y|To)?|t(?:op|rike)|i(?:n|zeToContent|debar|gnText)|ort|u(?:p|b(?:str(?:ing)?)?)|pli(?:ce|t)|e(?:nd|t(?:Re(?:sizable|questHeader)|M(?:i(?:nutes|lliseconds)|onth)|Seconds|Ho(?:tKeys|urs)|Year|Cursor|Time(?:out)?|Interval|ZOptions|Date|UTC(?:M(?:i(?:nutes|lliseconds)|onth)|Seconds|Hours|Date|FullYear)|FullYear|Active)|arch)|qrt|lice|avePreferences|mall)|h(?:ome|andleEvent)|navigate|c(?:har(?:CodeAt|At)|o(?:s|n(?:cat|textual|firm)|mpile)|eil|lear(?:Timeout|Interval)?|a(?:ptureEvents|ll)|reate(?:StyleSheet|Popup|EventObject))|t(?:o(?:GMTString|S(?:tring|ource)|U(?:TCString|pperCase)|Lo(?:caleString|werCase))|est|a(?:n|int(?:Enabled)?))|i(?:s(?:NaN|Finite)|ndexOf|talics)|d(?:isableExternalCapture|ump|etachEvent)|u(?:n(?:shift|taint|escape|watch)|pdateCommands)|j(?:oin|avaEnabled)|p(?:o(?:p|w)|ush|lugins.refresh|a(?:ddings|rse(?:Int|Float)?)|r(?:int|ompt|eference))|e(?:scape|nableExternalCapture|val|lementFromPoint|x(?:p|ec(?:Script|Command)?))|valueOf|UTC|queryCommand(?:State|Indeterm|Enabled|Value)|f(?:i(?:nd|le(?:ModifiedDate|Size|CreatedDate|UpdatedDate)|xed)|o(?:nt(?:size|color)|rward)|loor|romCharCode)|watch|l(?:ink|o(?:ad|g)|astIndexOf)|a(?:sin|nchor|cos|t(?:tachEvent|ob|an(?:2)?)|pply|lert|b(?:s|ort))|r(?:ou(?:nd|teEvents)|e(?:size(?:By|To)|calc|turnValue|place|verse|l(?:oad|ease(?:Capture|Events)))|andom)|g(?:o|et(?:ResponseHeader|M(?:i(?:nutes|lliseconds)|onth)|Se(?:conds|lection)|Hours|Year|Time(?:zoneOffset)?|Da(?:y|te)|UTC(?:M(?:i(?:nutes|lliseconds)|onth)|Seconds|Hours|Da(?:y|te)|FullYear)|FullYear|A(?:ttention|llResponseHeaders)))|m(?:in|ove(?:B(?:y|elow)|To(?:Absolute)?|Above)|ergeAttributes|a(?:tch|rgins|x))|b(?:toa|ig|o(?:ld|rderWidths)|link|ack))\b(?=\()/ - }, { - token : ["punctuation.operator", "support.function.dom"], - regex : /(\.)(s(?:ub(?:stringData|mit)|plitText|e(?:t(?:NamedItem|Attribute(?:Node)?)|lect))|has(?:ChildNodes|Feature)|namedItem|c(?:l(?:ick|o(?:se|neNode))|reate(?:C(?:omment|DATASection|aption)|T(?:Head|extNode|Foot)|DocumentFragment|ProcessingInstruction|E(?:ntityReference|lement)|Attribute))|tabIndex|i(?:nsert(?:Row|Before|Cell|Data)|tem)|open|delete(?:Row|C(?:ell|aption)|T(?:Head|Foot)|Data)|focus|write(?:ln)?|a(?:dd|ppend(?:Child|Data))|re(?:set|place(?:Child|Data)|move(?:NamedItem|Child|Attribute(?:Node)?)?)|get(?:NamedItem|Element(?:sBy(?:Name|TagName)|ById)|Attribute(?:Node)?)|blur)\b(?=\()/ - }, { - token : ["punctuation.operator", "support.constant"], - regex : /(\.)(s(?:ystemLanguage|cr(?:ipts|ollbars|een(?:X|Y|Top|Left))|t(?:yle(?:Sheets)?|atus(?:Text|bar)?)|ibling(?:Below|Above)|ource|uffixes|e(?:curity(?:Policy)?|l(?:ection|f)))|h(?:istory|ost(?:name)?|as(?:h|Focus))|y|X(?:MLDocument|SLDocument)|n(?:ext|ame(?:space(?:s|URI)|Prop))|M(?:IN_VALUE|AX_VALUE)|c(?:haracterSet|o(?:n(?:structor|trollers)|okieEnabled|lorDepth|mp(?:onents|lete))|urrent|puClass|l(?:i(?:p(?:boardData)?|entInformation)|osed|asses)|alle(?:e|r)|rypto)|t(?:o(?:olbar|p)|ext(?:Transform|Indent|Decoration|Align)|ags)|SQRT(?:1_2|2)|i(?:n(?:ner(?:Height|Width)|put)|ds|gnoreCase)|zIndex|o(?:scpu|n(?:readystatechange|Line)|uter(?:Height|Width)|p(?:sProfile|ener)|ffscreenBuffering)|NEGATIVE_INFINITY|d(?:i(?:splay|alog(?:Height|Top|Width|Left|Arguments)|rectories)|e(?:scription|fault(?:Status|Ch(?:ecked|arset)|View)))|u(?:ser(?:Profile|Language|Agent)|n(?:iqueID|defined)|pdateInterval)|_content|p(?:ixelDepth|ort|ersonalbar|kcs11|l(?:ugins|atform)|a(?:thname|dding(?:Right|Bottom|Top|Left)|rent(?:Window|Layer)?|ge(?:X(?:Offset)?|Y(?:Offset)?))|r(?:o(?:to(?:col|type)|duct(?:Sub)?|mpter)|e(?:vious|fix)))|e(?:n(?:coding|abledPlugin)|x(?:ternal|pando)|mbeds)|v(?:isibility|endor(?:Sub)?|Linkcolor)|URLUnencoded|P(?:I|OSITIVE_INFINITY)|f(?:ilename|o(?:nt(?:Size|Family|Weight)|rmName)|rame(?:s|Element)|gColor)|E|whiteSpace|l(?:i(?:stStyleType|n(?:eHeight|kColor))|o(?:ca(?:tion(?:bar)?|lName)|wsrc)|e(?:ngth|ft(?:Context)?)|a(?:st(?:M(?:odified|atch)|Index|Paren)|yer(?:s|X)|nguage))|a(?:pp(?:MinorVersion|Name|Co(?:deName|re)|Version)|vail(?:Height|Top|Width|Left)|ll|r(?:ity|guments)|Linkcolor|bove)|r(?:ight(?:Context)?|e(?:sponse(?:XML|Text)|adyState))|global|x|m(?:imeTypes|ultiline|enubar|argin(?:Right|Bottom|Top|Left))|L(?:N(?:10|2)|OG(?:10E|2E))|b(?:o(?:ttom|rder(?:Width|RightWidth|BottomWidth|Style|Color|TopWidth|LeftWidth))|ufferDepth|elow|ackground(?:Color|Image)))\b/ - }, { - token : ["storage.type", "punctuation.operator", "support.function.firebug"], - regex : /(console)(\.)(warn|info|log|error|time|timeEnd|assert)\b/ - }, { - token : keywordMapper, - regex : identifierRe - }, { - token : "keyword.operator", - regex : /--|\+\+|[!$%&*+\-~]|===|==|=|!=|!==|<=|>=|<<=|>>=|>>>=|<>|<|>|!|&&|\|\||\?\:|\*=|%=|\+=|\-=|&=|\^=/, - next : "start" - }, { - token : "punctuation.operator", - regex : /\?|\:|\,|\;|\./, - next : "start" - }, { - token : "paren.lparen", - regex : /[\[({]/, - next : "start" - }, { - token : "paren.rparen", - regex : /[\])}]/ - }, { - token : "keyword.operator", - regex : /\/=?/, - next : "start" - }, { - token: "comment", - regex: /^#!.*$/ - } - ], - "start": [ - DocCommentHighlightRules.getStartRule("doc-start"), - { - token : "comment", // multi line comment - regex : "\\/\\*", - next : "comment_regex_allowed" - }, { - token : "comment", - regex : "\\/\\/", - next : "line_comment_regex_allowed" - }, { - token: "string.regexp", - regex: "\\/", - next: "regex" - }, { - token : "text", - regex : "\\s+|^$", - next : "start" - }, { - token: "empty", - regex: "", - next: "no_regex" - } - ], - "regex": [ - { - token: "regexp.keyword.operator", - regex: "\\\\(?:u[\\da-fA-F]{4}|x[\\da-fA-F]{2}|.)" - }, { - token: "string.regexp", - regex: "/[sxngimy]*", - next: "no_regex" - }, { - token : "invalid", - regex: /\{\d+\b,?\d*\}[+*]|[+*$^?][+*]|[$^][?]|\?{3,}/ - }, { - token : "constant.language.escape", - regex: /\(\?[:=!]|\)|\{\d+\b,?\d*\}|[+*]\?|[()$^+*?.]/ - }, { - token : "constant.language.delimiter", - regex: /\|/ - }, { - token: "constant.language.escape", - regex: /\[\^?/, - next: "regex_character_class" - }, { - token: "empty", - regex: "$", - next: "no_regex" - }, { - defaultToken: "string.regexp" - } - ], - "regex_character_class": [ - { - token: "regexp.keyword.operator", - regex: "\\\\(?:u[\\da-fA-F]{4}|x[\\da-fA-F]{2}|.)" - }, { - token: "constant.language.escape", - regex: "]", - next: "regex" - }, { - token: "constant.language.escape", - regex: "-" - }, { - token: "empty", - regex: "$", - next: "no_regex" - }, { - defaultToken: "string.regexp.charachterclass" - } - ], - "function_arguments": [ - { - token: "variable.parameter", - regex: identifierRe - }, { - token: "punctuation.operator", - regex: "[, ]+" - }, { - token: "punctuation.operator", - regex: "$" - }, { - token: "empty", - regex: "", - next: "no_regex" - } - ], - "comment_regex_allowed" : [ - {token : "comment", regex : "\\*\\/", next : "start"}, - {defaultToken : "comment"} - ], - "comment" : [ - {token : "comment", regex : "\\*\\/", next : "no_regex"}, - {defaultToken : "comment"} - ], - "line_comment_regex_allowed" : [ - {token : "comment", regex : "$|^", next : "start"}, - {defaultToken : "comment"} - ], - "line_comment" : [ - {token : "comment", regex : "$|^", next : "no_regex"}, - {defaultToken : "comment"} - ], - "qqstring" : [ - { - token : "constant.language.escape", - regex : escapedRe - }, { - token : "string", - regex : "\\\\$", - next : "qqstring" - }, { - token : "string", - regex : '"|$', - next : "no_regex" - }, { - defaultToken: "string" - } - ], - "qstring" : [ - { - token : "constant.language.escape", - regex : escapedRe - }, { - token : "string", - regex : "\\\\$", - next : "qstring" - }, { - token : "string", - regex : "'|$", - next : "no_regex" - }, { - defaultToken: "string" - } - ] - }; - - this.embedRules(DocCommentHighlightRules, "doc-", - [ DocCommentHighlightRules.getEndRule("no_regex") ]); -}; - -oop.inherits(JavaScriptHighlightRules, TextHighlightRules); - -exports.JavaScriptHighlightRules = JavaScriptHighlightRules; -}); - -ace.define('ace/mode/xml_highlight_rules', ['require', 'exports', 'module' , 'ace/lib/oop', 'ace/mode/xml_util', 'ace/mode/text_highlight_rules'], function(require, exports, module) { - - -var oop = require("../lib/oop"); -var xmlUtil = require("./xml_util"); -var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; - -var XmlHighlightRules = function(normalize) { - this.$rules = { - start : [ - {token : "punctuation.string.begin", regex : "<\\!\\[CDATA\\[", next : "cdata"}, - { - token : ["punctuation.instruction.begin", "keyword.instruction"], - regex : "(<\\?)(xml)(?=[\\s])", next : "xml_declaration" - }, - { - token : ["punctuation.instruction.begin", "keyword.instruction"], - regex : "(<\\?)([-_a-zA-Z0-9]+)", next : "instruction" - }, - {token : "comment", regex : "<\\!--", next : "comment"}, - { - token : ["punctuation.doctype.begin", "meta.tag.doctype"], - regex : "(<\\!)(DOCTYPE)(?=[\\s])", next : "doctype" - }, - {include : "tag"}, - {include : "reference"} - ], - - xml_declaration : [ - {include : "attributes"}, - {include : "instruction"} - ], - - instruction : [ - {token : "punctuation.instruction.end", regex : "\\?>", next : "start"} - ], - - doctype : [ - {include : "space"}, - {include : "string"}, - {token : "punctuation.doctype.end", regex : ">", next : "start"}, - {token : "xml-pe", regex : "[-_a-zA-Z0-9:]+"}, - {token : "punctuation.begin", regex : "\\[", push : "declarations"} - ], - - declarations : [{ - token : "text", - regex : "\\s+" - }, { - token: "punctuation.end", - regex: "]", - next: "pop" - }, { - token : ["punctuation.begin", "keyword"], - regex : "(<\\!)([-_a-zA-Z0-9]+)", - push : [{ - token : "text", - regex : "\\s+" - }, - { - token : "punctuation.end", - regex : ">", - next : "pop" - }, - {include : "string"}] - }], - - cdata : [ - {token : "string.end", regex : "\\]\\]>", next : "start"}, - {token : "text", regex : "\\s+"}, - {token : "text", regex : "(?:[^\\]]|\\](?!\\]>))+"} - ], - - comment : [ - {token : "comment", regex : "-->", next : "start"}, - {defaultToken : "comment"} - ], - - tag : [{ - token : ["meta.tag.punctuation.begin", "meta.tag.name"], - regex : "(<)((?:[-_a-zA-Z0-9]+:)?[-_a-zA-Z0-9]+)", - next: [ - {include : "attributes"}, - {token : "meta.tag.punctuation.end", regex : "/?>", next : "start"} - ] - }, { - token : ["meta.tag.punctuation.begin", "meta.tag.name"], - regex : "(", next : "start"} - ] - }], - - space : [ - {token : "text", regex : "\\s+"} - ], - - reference : [{ - token : "constant.language.escape", - regex : "(?:&#[0-9]+;)|(?:&#x[0-9a-fA-F]+;)|(?:&[a-zA-Z0-9_:\\.-]+;)" - }, { - token : "text", regex : "&" - }], - - string: [{ - token : "string", - regex : "'", - push : "qstring_inner" - }, { - token : "string", - regex : '"', - push : "qqstring_inner" - }], - - qstring_inner: [ - {token : "string", regex: "'", next: "pop"}, - {include : "reference"}, - {defaultToken : "string"} - ], - - qqstring_inner: [ - {token : "string", regex: '"', next: "pop"}, - {include : "reference"}, - {defaultToken : "string"} - ], - - attributes: [{ - token : "entity.other.attribute-name", - regex : "(?:[-_a-zA-Z0-9]+:)?[-_a-zA-Z0-9]+" - }, { - token : "keyword.operator.separator", - regex : "=" - }, { - include : "space" - }, { - include : "string" - }] - }; - - if (this.constructor === XmlHighlightRules) - this.normalizeRules(); -}; - - -(function() { - - this.embedTagRules = function(HighlightRules, prefix, tag){ - this.$rules.tag.unshift({ - token : ["meta.tag.punctuation.begin", "meta.tag.name." + tag], - regex : "(<)(" + tag + ")", - next: [ - {include : "space"}, - {include : "attributes"}, - {token : "meta.tag.punctuation.end", regex : "/?>", next : prefix + "start"} - ] - }); - - this.$rules[tag + "-end"] = [ - {include : "space"}, - {token : "meta.tag.punctuation.end", regex : ">", next: "start", - onMatch : function(value, currentState, stack) { - stack.splice(0); - return this.token; - }} - ] - - this.embedRules(HighlightRules, prefix, [{ - token: ["meta.tag.punctuation.begin", "meta.tag.name." + tag], - regex : "(" - }]); - }; - -}).call(TextHighlightRules.prototype); - -oop.inherits(XmlHighlightRules, TextHighlightRules); - -exports.XmlHighlightRules = XmlHighlightRules; -}); - -ace.define('ace/mode/xml_util', ['require', 'exports', 'module' ], function(require, exports, module) { - - -function string(state) { - return [{ - token : "string", - regex : '"', - next : state + "_qqstring" - }, { - token : "string", - regex : "'", - next : state + "_qstring" - }]; -} - -function multiLineString(quote, state) { - return [ - {token : "string", regex : quote, next : state}, - { - token : "constant.language.escape", - regex : "(?:&#[0-9]+;)|(?:&#x[0-9a-fA-F]+;)|(?:&[a-zA-Z0-9_:\\.-]+;)" - }, - {defaultToken : "string"} - ]; -} - -exports.tag = function(states, name, nextState, tagMap) { - states[name] = [{ - token : "text", - regex : "\\s+" - }, { - - token : !tagMap ? "meta.tag.tag-name" : function(value) { - if (tagMap[value]) - return "meta.tag.tag-name." + tagMap[value]; - else - return "meta.tag.tag-name"; - }, - regex : "[-_a-zA-Z0-9:]+", - next : name + "_embed_attribute_list" - }, { - token: "empty", - regex: "", - next : name + "_embed_attribute_list" - }]; - - states[name + "_qstring"] = multiLineString("'", name + "_embed_attribute_list"); - states[name + "_qqstring"] = multiLineString("\"", name + "_embed_attribute_list"); - - states[name + "_embed_attribute_list"] = [{ - token : "meta.tag.r", - regex : "/?>", - next : nextState - }, { - token : "keyword.operator", - regex : "=" - }, { - token : "entity.other.attribute-name", - regex : "[-_a-zA-Z0-9:]+" - }, { - token : "constant.numeric", // float - regex : "[+-]?\\d+(?:(?:\\.\\d*)?(?:[eE][+-]?\\d+)?)?\\b" - }, { - token : "text", - regex : "\\s+" - }].concat(string(name)); -}; - -}); - -ace.define('ace/mode/matching_brace_outdent', ['require', 'exports', 'module' , 'ace/range'], function(require, exports, module) { - - -var Range = require("../range").Range; - -var MatchingBraceOutdent = function() {}; - -(function() { - - this.checkOutdent = function(line, input) { - if (! /^\s+$/.test(line)) - return false; - - return /^\s*\}/.test(input); - }; - - this.autoOutdent = function(doc, row) { - var line = doc.getLine(row); - var match = line.match(/^(\s*\})/); - - if (!match) return 0; - - var column = match[1].length; - var openBracePos = doc.findMatchingBracket({row: row, column: column}); - - if (!openBracePos || openBracePos.row == row) return 0; - - var indent = this.$getIndent(doc.getLine(openBracePos.row)); - doc.replace(new Range(row, 0, row, column-1), indent); - }; - - this.$getIndent = function(line) { - return line.match(/^\s*/)[0]; - }; - -}).call(MatchingBraceOutdent.prototype); - -exports.MatchingBraceOutdent = MatchingBraceOutdent; -}); - -ace.define('ace/mode/behaviour/cstyle', ['require', 'exports', 'module' , 'ace/lib/oop', 'ace/mode/behaviour', 'ace/token_iterator', 'ace/lib/lang'], function(require, exports, module) { - - -var oop = require("../../lib/oop"); -var Behaviour = require("../behaviour").Behaviour; -var TokenIterator = require("../../token_iterator").TokenIterator; -var lang = require("../../lib/lang"); - -var SAFE_INSERT_IN_TOKENS = - ["text", "paren.rparen", "punctuation.operator"]; -var SAFE_INSERT_BEFORE_TOKENS = - ["text", "paren.rparen", "punctuation.operator", "comment"]; - - -var autoInsertedBrackets = 0; -var autoInsertedRow = -1; -var autoInsertedLineEnd = ""; -var maybeInsertedBrackets = 0; -var maybeInsertedRow = -1; -var maybeInsertedLineStart = ""; -var maybeInsertedLineEnd = ""; - -var CstyleBehaviour = function () { - - CstyleBehaviour.isSaneInsertion = function(editor, session) { - var cursor = editor.getCursorPosition(); - var iterator = new TokenIterator(session, cursor.row, cursor.column); - if (!this.$matchTokenType(iterator.getCurrentToken() || "text", SAFE_INSERT_IN_TOKENS)) { - var iterator2 = new TokenIterator(session, cursor.row, cursor.column + 1); - if (!this.$matchTokenType(iterator2.getCurrentToken() || "text", SAFE_INSERT_IN_TOKENS)) - return false; - } - iterator.stepForward(); - return iterator.getCurrentTokenRow() !== cursor.row || - this.$matchTokenType(iterator.getCurrentToken() || "text", SAFE_INSERT_BEFORE_TOKENS); - }; - - CstyleBehaviour.$matchTokenType = function(token, types) { - return types.indexOf(token.type || token) > -1; - }; - - CstyleBehaviour.recordAutoInsert = function(editor, session, bracket) { - var cursor = editor.getCursorPosition(); - var line = session.doc.getLine(cursor.row); - if (!this.isAutoInsertedClosing(cursor, line, autoInsertedLineEnd[0])) - autoInsertedBrackets = 0; - autoInsertedRow = cursor.row; - autoInsertedLineEnd = bracket + line.substr(cursor.column); - autoInsertedBrackets++; - }; - - CstyleBehaviour.recordMaybeInsert = function(editor, session, bracket) { - var cursor = editor.getCursorPosition(); - var line = session.doc.getLine(cursor.row); - if (!this.isMaybeInsertedClosing(cursor, line)) - maybeInsertedBrackets = 0; - maybeInsertedRow = cursor.row; - maybeInsertedLineStart = line.substr(0, cursor.column) + bracket; - maybeInsertedLineEnd = line.substr(cursor.column); - maybeInsertedBrackets++; - }; - - CstyleBehaviour.isAutoInsertedClosing = function(cursor, line, bracket) { - return autoInsertedBrackets > 0 && - cursor.row === autoInsertedRow && - bracket === autoInsertedLineEnd[0] && - line.substr(cursor.column) === autoInsertedLineEnd; - }; - - CstyleBehaviour.isMaybeInsertedClosing = function(cursor, line) { - return maybeInsertedBrackets > 0 && - cursor.row === maybeInsertedRow && - line.substr(cursor.column) === maybeInsertedLineEnd && - line.substr(0, cursor.column) == maybeInsertedLineStart; - }; - - CstyleBehaviour.popAutoInsertedClosing = function() { - autoInsertedLineEnd = autoInsertedLineEnd.substr(1); - autoInsertedBrackets--; - }; - - CstyleBehaviour.clearMaybeInsertedClosing = function() { - maybeInsertedBrackets = 0; - maybeInsertedRow = -1; - }; - - this.add("braces", "insertion", function (state, action, editor, session, text) { - var cursor = editor.getCursorPosition(); - var line = session.doc.getLine(cursor.row); - if (text == '{') { - var selection = editor.getSelectionRange(); - var selected = session.doc.getTextRange(selection); - if (selected !== "" && selected !== "{" && editor.getWrapBehavioursEnabled()) { - return { - text: '{' + selected + '}', - selection: false - }; - } else if (CstyleBehaviour.isSaneInsertion(editor, session)) { - if (/[\]\}\)]/.test(line[cursor.column]) || editor.inMultiSelectMode) { - CstyleBehaviour.recordAutoInsert(editor, session, "}"); - return { - text: '{}', - selection: [1, 1] - }; - } else { - CstyleBehaviour.recordMaybeInsert(editor, session, "{"); - return { - text: '{', - selection: [1, 1] - }; - } - } - } else if (text == '}') { - var rightChar = line.substring(cursor.column, cursor.column + 1); - if (rightChar == '}') { - var matching = session.$findOpeningBracket('}', {column: cursor.column + 1, row: cursor.row}); - if (matching !== null && CstyleBehaviour.isAutoInsertedClosing(cursor, line, text)) { - CstyleBehaviour.popAutoInsertedClosing(); - return { - text: '', - selection: [1, 1] - }; - } - } - } else if (text == "\n" || text == "\r\n") { - var closing = ""; - if (CstyleBehaviour.isMaybeInsertedClosing(cursor, line)) { - closing = lang.stringRepeat("}", maybeInsertedBrackets); - CstyleBehaviour.clearMaybeInsertedClosing(); - } - var rightChar = line.substring(cursor.column, cursor.column + 1); - if (rightChar === '}') { - var openBracePos = session.findMatchingBracket({row: cursor.row, column: cursor.column+1}, '}'); - if (!openBracePos) - return null; - var next_indent = this.$getIndent(session.getLine(openBracePos.row)); - } else if (closing) { - var next_indent = this.$getIndent(line); - } else { - return; - } - var indent = next_indent + session.getTabString(); - - return { - text: '\n' + indent + '\n' + next_indent + closing, - selection: [1, indent.length, 1, indent.length] - }; - } else { - CstyleBehaviour.clearMaybeInsertedClosing(); - } - }); - - this.add("braces", "deletion", function (state, action, editor, session, range) { - var selected = session.doc.getTextRange(range); - if (!range.isMultiLine() && selected == '{') { - var line = session.doc.getLine(range.start.row); - var rightChar = line.substring(range.end.column, range.end.column + 1); - if (rightChar == '}') { - range.end.column++; - return range; - } else { - maybeInsertedBrackets--; - } - } - }); - - this.add("parens", "insertion", function (state, action, editor, session, text) { - if (text == '(') { - var selection = editor.getSelectionRange(); - var selected = session.doc.getTextRange(selection); - if (selected !== "" && editor.getWrapBehavioursEnabled()) { - return { - text: '(' + selected + ')', - selection: false - }; - } else if (CstyleBehaviour.isSaneInsertion(editor, session)) { - CstyleBehaviour.recordAutoInsert(editor, session, ")"); - return { - text: '()', - selection: [1, 1] - }; - } - } else if (text == ')') { - var cursor = editor.getCursorPosition(); - var line = session.doc.getLine(cursor.row); - var rightChar = line.substring(cursor.column, cursor.column + 1); - if (rightChar == ')') { - var matching = session.$findOpeningBracket(')', {column: cursor.column + 1, row: cursor.row}); - if (matching !== null && CstyleBehaviour.isAutoInsertedClosing(cursor, line, text)) { - CstyleBehaviour.popAutoInsertedClosing(); - return { - text: '', - selection: [1, 1] - }; - } - } - } - }); - - this.add("parens", "deletion", function (state, action, editor, session, range) { - var selected = session.doc.getTextRange(range); - if (!range.isMultiLine() && selected == '(') { - var line = session.doc.getLine(range.start.row); - var rightChar = line.substring(range.start.column + 1, range.start.column + 2); - if (rightChar == ')') { - range.end.column++; - return range; - } - } - }); - - this.add("brackets", "insertion", function (state, action, editor, session, text) { - if (text == '[') { - var selection = editor.getSelectionRange(); - var selected = session.doc.getTextRange(selection); - if (selected !== "" && editor.getWrapBehavioursEnabled()) { - return { - text: '[' + selected + ']', - selection: false - }; - } else if (CstyleBehaviour.isSaneInsertion(editor, session)) { - CstyleBehaviour.recordAutoInsert(editor, session, "]"); - return { - text: '[]', - selection: [1, 1] - }; - } - } else if (text == ']') { - var cursor = editor.getCursorPosition(); - var line = session.doc.getLine(cursor.row); - var rightChar = line.substring(cursor.column, cursor.column + 1); - if (rightChar == ']') { - var matching = session.$findOpeningBracket(']', {column: cursor.column + 1, row: cursor.row}); - if (matching !== null && CstyleBehaviour.isAutoInsertedClosing(cursor, line, text)) { - CstyleBehaviour.popAutoInsertedClosing(); - return { - text: '', - selection: [1, 1] - }; - } - } - } - }); - - this.add("brackets", "deletion", function (state, action, editor, session, range) { - var selected = session.doc.getTextRange(range); - if (!range.isMultiLine() && selected == '[') { - var line = session.doc.getLine(range.start.row); - var rightChar = line.substring(range.start.column + 1, range.start.column + 2); - if (rightChar == ']') { - range.end.column++; - return range; - } - } - }); - - this.add("string_dquotes", "insertion", function (state, action, editor, session, text) { - if (text == '"' || text == "'") { - var quote = text; - var selection = editor.getSelectionRange(); - var selected = session.doc.getTextRange(selection); - if (selected !== "" && selected !== "'" && selected != '"' && editor.getWrapBehavioursEnabled()) { - return { - text: quote + selected + quote, - selection: false - }; - } else { - var cursor = editor.getCursorPosition(); - var line = session.doc.getLine(cursor.row); - var leftChar = line.substring(cursor.column-1, cursor.column); - if (leftChar == '\\') { - return null; - } - var tokens = session.getTokens(selection.start.row); - var col = 0, token; - var quotepos = -1; // Track whether we're inside an open quote. - - for (var x = 0; x < tokens.length; x++) { - token = tokens[x]; - if (token.type == "string") { - quotepos = -1; - } else if (quotepos < 0) { - quotepos = token.value.indexOf(quote); - } - if ((token.value.length + col) > selection.start.column) { - break; - } - col += tokens[x].value.length; - } - if (!token || (quotepos < 0 && token.type !== "comment" && (token.type !== "string" || ((selection.start.column !== token.value.length+col-1) && token.value.lastIndexOf(quote) === token.value.length-1)))) { - if (!CstyleBehaviour.isSaneInsertion(editor, session)) - return; - return { - text: quote + quote, - selection: [1,1] - }; - } else if (token && token.type === "string") { - var rightChar = line.substring(cursor.column, cursor.column + 1); - if (rightChar == quote) { - return { - text: '', - selection: [1, 1] - }; - } - } - } - } - }); - - this.add("string_dquotes", "deletion", function (state, action, editor, session, range) { - var selected = session.doc.getTextRange(range); - if (!range.isMultiLine() && (selected == '"' || selected == "'")) { - var line = session.doc.getLine(range.start.row); - var rightChar = line.substring(range.start.column + 1, range.start.column + 2); - if (rightChar == selected) { - range.end.column++; - return range; - } - } - }); - -}; - -oop.inherits(CstyleBehaviour, Behaviour); - -exports.CstyleBehaviour = CstyleBehaviour; -}); - -ace.define('ace/mode/folding/cstyle', ['require', 'exports', 'module' , 'ace/lib/oop', 'ace/range', 'ace/mode/folding/fold_mode'], function(require, exports, module) { - - -var oop = require("../../lib/oop"); -var Range = require("../../range").Range; -var BaseFoldMode = require("./fold_mode").FoldMode; - -var FoldMode = exports.FoldMode = function(commentRegex) { - if (commentRegex) { - this.foldingStartMarker = new RegExp( - this.foldingStartMarker.source.replace(/\|[^|]*?$/, "|" + commentRegex.start) - ); - this.foldingStopMarker = new RegExp( - this.foldingStopMarker.source.replace(/\|[^|]*?$/, "|" + commentRegex.end) - ); - } -}; -oop.inherits(FoldMode, BaseFoldMode); - -(function() { - - this.foldingStartMarker = /(\{|\[)[^\}\]]*$|^\s*(\/\*)/; - this.foldingStopMarker = /^[^\[\{]*(\}|\])|^[\s\*]*(\*\/)/; - - this.getFoldWidgetRange = function(session, foldStyle, row, forceMultiline) { - var line = session.getLine(row); - var match = line.match(this.foldingStartMarker); - if (match) { - var i = match.index; - - if (match[1]) - return this.openingBracketBlock(session, match[1], row, i); - - var range = session.getCommentFoldRange(row, i + match[0].length, 1); - - if (range && !range.isMultiLine()) { - if (forceMultiline) { - range = this.getSectionRange(session, row); - } else if (foldStyle != "all") - range = null; - } - - return range; - } - - if (foldStyle === "markbegin") - return; - - var match = line.match(this.foldingStopMarker); - if (match) { - var i = match.index + match[0].length; - - if (match[1]) - return this.closingBracketBlock(session, match[1], row, i); - - return session.getCommentFoldRange(row, i, -1); - } - }; - - this.getSectionRange = function(session, row) { - var line = session.getLine(row); - var startIndent = line.search(/\S/); - var startRow = row; - var startColumn = line.length; - row = row + 1; - var endRow = row; - var maxRow = session.getLength(); - while (++row < maxRow) { - line = session.getLine(row); - var indent = line.search(/\S/); - if (indent === -1) - continue; - if (startIndent > indent) - break; - var subRange = this.getFoldWidgetRange(session, "all", row); - - if (subRange) { - if (subRange.start.row <= startRow) { - break; - } else if (subRange.isMultiLine()) { - row = subRange.end.row; - } else if (startIndent == indent) { - break; - } - } - endRow = row; - } - - return new Range(startRow, startColumn, endRow, session.getLine(endRow).length); - }; - -}).call(FoldMode.prototype); - -}); diff --git a/IDE/jsrealb-ide/ace-src-noconflict/mode-plain_text.js b/IDE/jsrealb-ide/ace-src-noconflict/mode-plain_text.js deleted file mode 100644 index 322c6d3a..00000000 --- a/IDE/jsrealb-ide/ace-src-noconflict/mode-plain_text.js +++ /dev/null @@ -1,56 +0,0 @@ -/* ***** BEGIN LICENSE BLOCK ***** - * Distributed under the BSD license: - * - * Copyright (c) 2010, Ajax.org B.V. - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are met: - * * Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * * Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * * Neither the name of Ajax.org B.V. nor the - * names of its contributors may be used to endorse or promote products - * derived from this software without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND - * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED - * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE - * DISCLAIMED. IN NO EVENT SHALL AJAX.ORG B.V. BE LIABLE FOR ANY - * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES - * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; - * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND - * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - * - * ***** END LICENSE BLOCK ***** */ - -ace.define('ace/mode/plain_text', ['require', 'exports', 'module' , 'ace/lib/oop', 'ace/mode/text', 'ace/tokenizer', 'ace/mode/text_highlight_rules', 'ace/mode/behaviour'], function(require, exports, module) { - - -var oop = require("../lib/oop"); -var TextMode = require("./text").Mode; -var Tokenizer = require("../tokenizer").Tokenizer; -var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; -var Behaviour = require("./behaviour").Behaviour; - -var Mode = function() { - this.HighlightRules = TextHighlightRules; - this.$behaviour = new Behaviour(); -}; - -oop.inherits(Mode, TextMode); - -(function() { - this.type = "text"; - this.getNextLineIndent = function(state, line, tab) { - return ''; - }; - this.$id = "ace/mode/plain_text"; -}).call(Mode.prototype); - -exports.Mode = Mode; -}); \ No newline at end of file diff --git a/IDE/jsrealb-ide/ace-src-noconflict/mode-powershell.js b/IDE/jsrealb-ide/ace-src-noconflict/mode-powershell.js deleted file mode 100644 index b94835af..00000000 --- a/IDE/jsrealb-ide/ace-src-noconflict/mode-powershell.js +++ /dev/null @@ -1,665 +0,0 @@ -ace.define('ace/mode/powershell', ['require', 'exports', 'module' , 'ace/lib/oop', 'ace/mode/text', 'ace/tokenizer', 'ace/mode/powershell_highlight_rules', 'ace/mode/matching_brace_outdent', 'ace/mode/behaviour/cstyle', 'ace/mode/folding/cstyle'], function(require, exports, module) { - - -var oop = require("../lib/oop"); -var TextMode = require("./text").Mode; -var Tokenizer = require("../tokenizer").Tokenizer; -var PowershellHighlightRules = require("./powershell_highlight_rules").PowershellHighlightRules; -var MatchingBraceOutdent = require("./matching_brace_outdent").MatchingBraceOutdent; -var CstyleBehaviour = require("./behaviour/cstyle").CstyleBehaviour; -var CStyleFoldMode = require("./folding/cstyle").FoldMode; - -var Mode = function() { - this.HighlightRules = PowershellHighlightRules; - this.$outdent = new MatchingBraceOutdent(); - this.$behaviour = new CstyleBehaviour(); - this.foldingRules = new CStyleFoldMode({start: "^\\s*(<#)", end: "^[#\\s]>\\s*$"}); -}; -oop.inherits(Mode, TextMode); - -(function() { - - this.lineCommentStart = "#"; - this.blockComment = {start: "<#", end: "#>"}; - - this.getNextLineIndent = function(state, line, tab) { - var indent = this.$getIndent(line); - - var tokenizedLine = this.getTokenizer().getLineTokens(line, state); - var tokens = tokenizedLine.tokens; - - if (tokens.length && tokens[tokens.length-1].type == "comment") { - return indent; - } - - if (state == "start") { - var match = line.match(/^.*[\{\(\[]\s*$/); - if (match) { - indent += tab; - } - } - - return indent; - }; - - this.checkOutdent = function(state, line, input) { - return this.$outdent.checkOutdent(line, input); - }; - - this.autoOutdent = function(state, doc, row) { - this.$outdent.autoOutdent(doc, row); - }; - - - this.createWorker = function(session) { - return null; - }; - - this.$id = "ace/mode/powershell"; -}).call(Mode.prototype); - -exports.Mode = Mode; -}); -ace.define('ace/mode/powershell_highlight_rules', ['require', 'exports', 'module' , 'ace/lib/oop', 'ace/mode/text_highlight_rules'], function(require, exports, module) { - - -var oop = require("../lib/oop"); -var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; - -var PowershellHighlightRules = function() { - - var keywords = ( - "function|if|else|elseif|switch|while|default|for|do|until|break|continue|" + - "foreach|return|filter|in|trap|throw|param|begin|process|end" - ); - - var builtinFunctions = ( - "Get-Alias|Import-Alias|New-Alias|Set-Alias|Get-AuthenticodeSignature|Set-AuthenticodeSignature|" + - "Set-Location|Get-ChildItem|Clear-Item|Get-Command|Measure-Command|Trace-Command|" + - "Add-Computer|Checkpoint-Computer|Remove-Computer|Restart-Computer|Restore-Computer|Stop-Computer|" + - "Reset-ComputerMachinePassword|Test-ComputerSecureChannel|Add-Content|Get-Content|Set-Content|Clear-Content|" + - "Get-Command|Invoke-Command|Enable-ComputerRestore|Disable-ComputerRestore|Get-ComputerRestorePoint|Test-Connection|" + - "ConvertFrom-CSV|ConvertTo-CSV|ConvertTo-Html|ConvertTo-Xml|ConvertFrom-SecureString|ConvertTo-SecureString|" + - "Copy-Item|Export-Counter|Get-Counter|Import-Counter|Get-Credential|Get-Culture|" + - "Get-ChildItem|Get-Date|Set-Date|Remove-Item|Compare-Object|Get-Event|" + - "Get-WinEvent|New-Event|Remove-Event|Unregister-Event|Wait-Event|Clear-EventLog|" + - "Get-Eventlog|Limit-EventLog|New-Eventlog|Remove-EventLog|Show-EventLog|Write-EventLog|" + - "Get-EventSubscriber|Register-EngineEvent|Register-ObjectEvent|Register-WmiEvent|Get-ExecutionPolicy|Set-ExecutionPolicy|" + - "Export-Alias|Export-Clixml|Export-Console|Export-Csv|ForEach-Object|Format-Custom|" + - "Format-List|Format-Table|Format-Wide|Export-FormatData|Get-FormatData|Get-Item|" + - "Get-ChildItem|Get-Help|Add-History|Clear-History|Get-History|Invoke-History|" + - "Get-Host|Read-Host|Write-Host|Get-HotFix|Import-Clixml|Import-Csv|" + - "Invoke-Command|Invoke-Expression|Get-Item|Invoke-Item|New-Item|Remove-Item|" + - "Set-Item|Clear-ItemProperty|Copy-ItemProperty|Get-ItemProperty|Move-ItemProperty|New-ItemProperty|" + - "Remove-ItemProperty|Rename-ItemProperty|Set-ItemProperty|Get-Job|Receive-Job|Remove-Job|" + - "Start-Job|Stop-Job|Wait-Job|Stop-Process|Update-List|Get-Location|" + - "Pop-Location|Push-Location|Set-Location|Send-MailMessage|Add-Member|Get-Member|" + - "Move-Item|Compare-Object|Group-Object|Measure-Object|New-Object|Select-Object|" + - "Sort-Object|Where-Object|Out-Default|Out-File|Out-GridView|Out-Host|" + - "Out-Null|Out-Printer|Out-String|Convert-Path|Join-Path|Resolve-Path|" + - "Split-Path|Test-Path|Get-Pfxcertificate|Pop-Location|Push-Location|Get-Process|" + - "Start-Process|Stop-Process|Wait-Process|Enable-PSBreakpoint|Disable-PSBreakpoint|Get-PSBreakpoint|" + - "Set-PSBreakpoint|Remove-PSBreakpoint|Get-PSDrive|New-PSDrive|Remove-PSDrive|Get-PSProvider|" + - "Set-PSdebug|Enter-PSSession|Exit-PSSession|Export-PSSession|Get-PSSession|Import-PSSession|" + - "New-PSSession|Remove-PSSession|Disable-PSSessionConfiguration|Enable-PSSessionConfiguration|Get-PSSessionConfiguration|Register-PSSessionConfiguration|" + - "Set-PSSessionConfiguration|Unregister-PSSessionConfiguration|New-PSSessionOption|Add-PsSnapIn|Get-PsSnapin|Remove-PSSnapin|" + - "Get-Random|Read-Host|Remove-Item|Rename-Item|Rename-ItemProperty|Select-Object|" + - "Select-XML|Send-MailMessage|Get-Service|New-Service|Restart-Service|Resume-Service|" + - "Set-Service|Start-Service|Stop-Service|Suspend-Service|Sort-Object|Start-Sleep|" + - "ConvertFrom-StringData|Select-String|Tee-Object|New-Timespan|Trace-Command|Get-Tracesource|" + - "Set-Tracesource|Start-Transaction|Complete-Transaction|Get-Transaction|Use-Transaction|Undo-Transaction|" + - "Start-Transcript|Stop-Transcript|Add-Type|Update-TypeData|Get-Uiculture|Get-Unique|" + - "Update-Formatdata|Update-Typedata|Clear-Variable|Get-Variable|New-Variable|Remove-Variable|" + - "Set-Variable|New-WebServiceProxy|Where-Object|Write-Debug|Write-Error|Write-Host|" + - "Write-Output|Write-Progress|Write-Verbose|Write-Warning|Set-WmiInstance|Invoke-WmiMethod|" + - "Get-WmiObject|Remove-WmiObject|Connect-WSMan|Disconnect-WSMan|Test-WSMan|Invoke-WSManAction|" + - "Disable-WSManCredSSP|Enable-WSManCredSSP|Get-WSManCredSSP|New-WSManInstance|Get-WSManInstance|Set-WSManInstance|" + - "Remove-WSManInstance|Set-WSManQuickConfig|New-WSManSessionOption" - ); - - var keywordMapper = this.createKeywordMapper({ - "support.function": builtinFunctions, - "keyword": keywords - }, "identifier"); - - var binaryOperatorsRe = "eq|ne|ge|gt|lt|le|like|notlike|match|notmatch|replace|contains|notcontains|" + - "ieq|ine|ige|igt|ile|ilt|ilike|inotlike|imatch|inotmatch|ireplace|icontains|inotcontains|" + - "is|isnot|as|" + - "and|or|band|bor|not"; - - this.$rules = { - "start" : [ - { - token : "comment", - regex : "#.*$" - }, { - token : "comment.start", - regex : "<#", - next : "comment" - }, { - token : "string", // single line - regex : '["](?:(?:\\\\.)|(?:[^"\\\\]))*?["]' - }, { - token : "string", // single line - regex : "['](?:(?:\\\\.)|(?:[^'\\\\]))*?[']" - }, { - token : "constant.numeric", // hex - regex : "0[xX][0-9a-fA-F]+\\b" - }, { - token : "constant.numeric", // float - regex : "[+-]?\\d+(?:(?:\\.\\d*)?(?:[eE][+-]?\\d+)?)?\\b" - }, { - token : "constant.language.boolean", - regex : "[$](?:[Tt]rue|[Ff]alse)\\b" - }, { - token : "constant.language", - regex : "[$][Nn]ull\\b" - }, { - token : "variable.instance", - regex : "[$][a-zA-Z][a-zA-Z0-9_]*\\b" - }, { - token : keywordMapper, - regex : "[a-zA-Z_$][a-zA-Z0-9_$\\-]*\\b" - }, { - token : "keyword.operator", - regex : "\\-(?:" + binaryOperatorsRe + ")" - }, { - token : "keyword.operator", - regex : "&|\\*|\\+|\\-|\\=|\\+=|\\-=" - }, { - token : "lparen", - regex : "[[({]" - }, { - token : "rparen", - regex : "[\\])}]" - }, { - token : "text", - regex : "\\s+" - } - ], - "comment" : [ - { - token : "comment.end", - regex : "#>", - next : "start" - }, { - token : "doc.comment.tag", - regex : "^\\.\\w+" - }, { - token : "comment", - regex : "\\w+" - }, { - token : "comment", - regex : "." - } - ] - }; -}; - -oop.inherits(PowershellHighlightRules, TextHighlightRules); - -exports.PowershellHighlightRules = PowershellHighlightRules; -}); - -ace.define('ace/mode/matching_brace_outdent', ['require', 'exports', 'module' , 'ace/range'], function(require, exports, module) { - - -var Range = require("../range").Range; - -var MatchingBraceOutdent = function() {}; - -(function() { - - this.checkOutdent = function(line, input) { - if (! /^\s+$/.test(line)) - return false; - - return /^\s*\}/.test(input); - }; - - this.autoOutdent = function(doc, row) { - var line = doc.getLine(row); - var match = line.match(/^(\s*\})/); - - if (!match) return 0; - - var column = match[1].length; - var openBracePos = doc.findMatchingBracket({row: row, column: column}); - - if (!openBracePos || openBracePos.row == row) return 0; - - var indent = this.$getIndent(doc.getLine(openBracePos.row)); - doc.replace(new Range(row, 0, row, column-1), indent); - }; - - this.$getIndent = function(line) { - return line.match(/^\s*/)[0]; - }; - -}).call(MatchingBraceOutdent.prototype); - -exports.MatchingBraceOutdent = MatchingBraceOutdent; -}); - -ace.define('ace/mode/behaviour/cstyle', ['require', 'exports', 'module' , 'ace/lib/oop', 'ace/mode/behaviour', 'ace/token_iterator', 'ace/lib/lang'], function(require, exports, module) { - - -var oop = require("../../lib/oop"); -var Behaviour = require("../behaviour").Behaviour; -var TokenIterator = require("../../token_iterator").TokenIterator; -var lang = require("../../lib/lang"); - -var SAFE_INSERT_IN_TOKENS = - ["text", "paren.rparen", "punctuation.operator"]; -var SAFE_INSERT_BEFORE_TOKENS = - ["text", "paren.rparen", "punctuation.operator", "comment"]; - - -var autoInsertedBrackets = 0; -var autoInsertedRow = -1; -var autoInsertedLineEnd = ""; -var maybeInsertedBrackets = 0; -var maybeInsertedRow = -1; -var maybeInsertedLineStart = ""; -var maybeInsertedLineEnd = ""; - -var CstyleBehaviour = function () { - - CstyleBehaviour.isSaneInsertion = function(editor, session) { - var cursor = editor.getCursorPosition(); - var iterator = new TokenIterator(session, cursor.row, cursor.column); - if (!this.$matchTokenType(iterator.getCurrentToken() || "text", SAFE_INSERT_IN_TOKENS)) { - var iterator2 = new TokenIterator(session, cursor.row, cursor.column + 1); - if (!this.$matchTokenType(iterator2.getCurrentToken() || "text", SAFE_INSERT_IN_TOKENS)) - return false; - } - iterator.stepForward(); - return iterator.getCurrentTokenRow() !== cursor.row || - this.$matchTokenType(iterator.getCurrentToken() || "text", SAFE_INSERT_BEFORE_TOKENS); - }; - - CstyleBehaviour.$matchTokenType = function(token, types) { - return types.indexOf(token.type || token) > -1; - }; - - CstyleBehaviour.recordAutoInsert = function(editor, session, bracket) { - var cursor = editor.getCursorPosition(); - var line = session.doc.getLine(cursor.row); - if (!this.isAutoInsertedClosing(cursor, line, autoInsertedLineEnd[0])) - autoInsertedBrackets = 0; - autoInsertedRow = cursor.row; - autoInsertedLineEnd = bracket + line.substr(cursor.column); - autoInsertedBrackets++; - }; - - CstyleBehaviour.recordMaybeInsert = function(editor, session, bracket) { - var cursor = editor.getCursorPosition(); - var line = session.doc.getLine(cursor.row); - if (!this.isMaybeInsertedClosing(cursor, line)) - maybeInsertedBrackets = 0; - maybeInsertedRow = cursor.row; - maybeInsertedLineStart = line.substr(0, cursor.column) + bracket; - maybeInsertedLineEnd = line.substr(cursor.column); - maybeInsertedBrackets++; - }; - - CstyleBehaviour.isAutoInsertedClosing = function(cursor, line, bracket) { - return autoInsertedBrackets > 0 && - cursor.row === autoInsertedRow && - bracket === autoInsertedLineEnd[0] && - line.substr(cursor.column) === autoInsertedLineEnd; - }; - - CstyleBehaviour.isMaybeInsertedClosing = function(cursor, line) { - return maybeInsertedBrackets > 0 && - cursor.row === maybeInsertedRow && - line.substr(cursor.column) === maybeInsertedLineEnd && - line.substr(0, cursor.column) == maybeInsertedLineStart; - }; - - CstyleBehaviour.popAutoInsertedClosing = function() { - autoInsertedLineEnd = autoInsertedLineEnd.substr(1); - autoInsertedBrackets--; - }; - - CstyleBehaviour.clearMaybeInsertedClosing = function() { - maybeInsertedBrackets = 0; - maybeInsertedRow = -1; - }; - - this.add("braces", "insertion", function (state, action, editor, session, text) { - var cursor = editor.getCursorPosition(); - var line = session.doc.getLine(cursor.row); - if (text == '{') { - var selection = editor.getSelectionRange(); - var selected = session.doc.getTextRange(selection); - if (selected !== "" && selected !== "{" && editor.getWrapBehavioursEnabled()) { - return { - text: '{' + selected + '}', - selection: false - }; - } else if (CstyleBehaviour.isSaneInsertion(editor, session)) { - if (/[\]\}\)]/.test(line[cursor.column]) || editor.inMultiSelectMode) { - CstyleBehaviour.recordAutoInsert(editor, session, "}"); - return { - text: '{}', - selection: [1, 1] - }; - } else { - CstyleBehaviour.recordMaybeInsert(editor, session, "{"); - return { - text: '{', - selection: [1, 1] - }; - } - } - } else if (text == '}') { - var rightChar = line.substring(cursor.column, cursor.column + 1); - if (rightChar == '}') { - var matching = session.$findOpeningBracket('}', {column: cursor.column + 1, row: cursor.row}); - if (matching !== null && CstyleBehaviour.isAutoInsertedClosing(cursor, line, text)) { - CstyleBehaviour.popAutoInsertedClosing(); - return { - text: '', - selection: [1, 1] - }; - } - } - } else if (text == "\n" || text == "\r\n") { - var closing = ""; - if (CstyleBehaviour.isMaybeInsertedClosing(cursor, line)) { - closing = lang.stringRepeat("}", maybeInsertedBrackets); - CstyleBehaviour.clearMaybeInsertedClosing(); - } - var rightChar = line.substring(cursor.column, cursor.column + 1); - if (rightChar === '}') { - var openBracePos = session.findMatchingBracket({row: cursor.row, column: cursor.column+1}, '}'); - if (!openBracePos) - return null; - var next_indent = this.$getIndent(session.getLine(openBracePos.row)); - } else if (closing) { - var next_indent = this.$getIndent(line); - } else { - return; - } - var indent = next_indent + session.getTabString(); - - return { - text: '\n' + indent + '\n' + next_indent + closing, - selection: [1, indent.length, 1, indent.length] - }; - } else { - CstyleBehaviour.clearMaybeInsertedClosing(); - } - }); - - this.add("braces", "deletion", function (state, action, editor, session, range) { - var selected = session.doc.getTextRange(range); - if (!range.isMultiLine() && selected == '{') { - var line = session.doc.getLine(range.start.row); - var rightChar = line.substring(range.end.column, range.end.column + 1); - if (rightChar == '}') { - range.end.column++; - return range; - } else { - maybeInsertedBrackets--; - } - } - }); - - this.add("parens", "insertion", function (state, action, editor, session, text) { - if (text == '(') { - var selection = editor.getSelectionRange(); - var selected = session.doc.getTextRange(selection); - if (selected !== "" && editor.getWrapBehavioursEnabled()) { - return { - text: '(' + selected + ')', - selection: false - }; - } else if (CstyleBehaviour.isSaneInsertion(editor, session)) { - CstyleBehaviour.recordAutoInsert(editor, session, ")"); - return { - text: '()', - selection: [1, 1] - }; - } - } else if (text == ')') { - var cursor = editor.getCursorPosition(); - var line = session.doc.getLine(cursor.row); - var rightChar = line.substring(cursor.column, cursor.column + 1); - if (rightChar == ')') { - var matching = session.$findOpeningBracket(')', {column: cursor.column + 1, row: cursor.row}); - if (matching !== null && CstyleBehaviour.isAutoInsertedClosing(cursor, line, text)) { - CstyleBehaviour.popAutoInsertedClosing(); - return { - text: '', - selection: [1, 1] - }; - } - } - } - }); - - this.add("parens", "deletion", function (state, action, editor, session, range) { - var selected = session.doc.getTextRange(range); - if (!range.isMultiLine() && selected == '(') { - var line = session.doc.getLine(range.start.row); - var rightChar = line.substring(range.start.column + 1, range.start.column + 2); - if (rightChar == ')') { - range.end.column++; - return range; - } - } - }); - - this.add("brackets", "insertion", function (state, action, editor, session, text) { - if (text == '[') { - var selection = editor.getSelectionRange(); - var selected = session.doc.getTextRange(selection); - if (selected !== "" && editor.getWrapBehavioursEnabled()) { - return { - text: '[' + selected + ']', - selection: false - }; - } else if (CstyleBehaviour.isSaneInsertion(editor, session)) { - CstyleBehaviour.recordAutoInsert(editor, session, "]"); - return { - text: '[]', - selection: [1, 1] - }; - } - } else if (text == ']') { - var cursor = editor.getCursorPosition(); - var line = session.doc.getLine(cursor.row); - var rightChar = line.substring(cursor.column, cursor.column + 1); - if (rightChar == ']') { - var matching = session.$findOpeningBracket(']', {column: cursor.column + 1, row: cursor.row}); - if (matching !== null && CstyleBehaviour.isAutoInsertedClosing(cursor, line, text)) { - CstyleBehaviour.popAutoInsertedClosing(); - return { - text: '', - selection: [1, 1] - }; - } - } - } - }); - - this.add("brackets", "deletion", function (state, action, editor, session, range) { - var selected = session.doc.getTextRange(range); - if (!range.isMultiLine() && selected == '[') { - var line = session.doc.getLine(range.start.row); - var rightChar = line.substring(range.start.column + 1, range.start.column + 2); - if (rightChar == ']') { - range.end.column++; - return range; - } - } - }); - - this.add("string_dquotes", "insertion", function (state, action, editor, session, text) { - if (text == '"' || text == "'") { - var quote = text; - var selection = editor.getSelectionRange(); - var selected = session.doc.getTextRange(selection); - if (selected !== "" && selected !== "'" && selected != '"' && editor.getWrapBehavioursEnabled()) { - return { - text: quote + selected + quote, - selection: false - }; - } else { - var cursor = editor.getCursorPosition(); - var line = session.doc.getLine(cursor.row); - var leftChar = line.substring(cursor.column-1, cursor.column); - if (leftChar == '\\') { - return null; - } - var tokens = session.getTokens(selection.start.row); - var col = 0, token; - var quotepos = -1; // Track whether we're inside an open quote. - - for (var x = 0; x < tokens.length; x++) { - token = tokens[x]; - if (token.type == "string") { - quotepos = -1; - } else if (quotepos < 0) { - quotepos = token.value.indexOf(quote); - } - if ((token.value.length + col) > selection.start.column) { - break; - } - col += tokens[x].value.length; - } - if (!token || (quotepos < 0 && token.type !== "comment" && (token.type !== "string" || ((selection.start.column !== token.value.length+col-1) && token.value.lastIndexOf(quote) === token.value.length-1)))) { - if (!CstyleBehaviour.isSaneInsertion(editor, session)) - return; - return { - text: quote + quote, - selection: [1,1] - }; - } else if (token && token.type === "string") { - var rightChar = line.substring(cursor.column, cursor.column + 1); - if (rightChar == quote) { - return { - text: '', - selection: [1, 1] - }; - } - } - } - } - }); - - this.add("string_dquotes", "deletion", function (state, action, editor, session, range) { - var selected = session.doc.getTextRange(range); - if (!range.isMultiLine() && (selected == '"' || selected == "'")) { - var line = session.doc.getLine(range.start.row); - var rightChar = line.substring(range.start.column + 1, range.start.column + 2); - if (rightChar == selected) { - range.end.column++; - return range; - } - } - }); - -}; - -oop.inherits(CstyleBehaviour, Behaviour); - -exports.CstyleBehaviour = CstyleBehaviour; -}); - -ace.define('ace/mode/folding/cstyle', ['require', 'exports', 'module' , 'ace/lib/oop', 'ace/range', 'ace/mode/folding/fold_mode'], function(require, exports, module) { - - -var oop = require("../../lib/oop"); -var Range = require("../../range").Range; -var BaseFoldMode = require("./fold_mode").FoldMode; - -var FoldMode = exports.FoldMode = function(commentRegex) { - if (commentRegex) { - this.foldingStartMarker = new RegExp( - this.foldingStartMarker.source.replace(/\|[^|]*?$/, "|" + commentRegex.start) - ); - this.foldingStopMarker = new RegExp( - this.foldingStopMarker.source.replace(/\|[^|]*?$/, "|" + commentRegex.end) - ); - } -}; -oop.inherits(FoldMode, BaseFoldMode); - -(function() { - - this.foldingStartMarker = /(\{|\[)[^\}\]]*$|^\s*(\/\*)/; - this.foldingStopMarker = /^[^\[\{]*(\}|\])|^[\s\*]*(\*\/)/; - - this.getFoldWidgetRange = function(session, foldStyle, row, forceMultiline) { - var line = session.getLine(row); - var match = line.match(this.foldingStartMarker); - if (match) { - var i = match.index; - - if (match[1]) - return this.openingBracketBlock(session, match[1], row, i); - - var range = session.getCommentFoldRange(row, i + match[0].length, 1); - - if (range && !range.isMultiLine()) { - if (forceMultiline) { - range = this.getSectionRange(session, row); - } else if (foldStyle != "all") - range = null; - } - - return range; - } - - if (foldStyle === "markbegin") - return; - - var match = line.match(this.foldingStopMarker); - if (match) { - var i = match.index + match[0].length; - - if (match[1]) - return this.closingBracketBlock(session, match[1], row, i); - - return session.getCommentFoldRange(row, i, -1); - } - }; - - this.getSectionRange = function(session, row) { - var line = session.getLine(row); - var startIndent = line.search(/\S/); - var startRow = row; - var startColumn = line.length; - row = row + 1; - var endRow = row; - var maxRow = session.getLength(); - while (++row < maxRow) { - line = session.getLine(row); - var indent = line.search(/\S/); - if (indent === -1) - continue; - if (startIndent > indent) - break; - var subRange = this.getFoldWidgetRange(session, "all", row); - - if (subRange) { - if (subRange.start.row <= startRow) { - break; - } else if (subRange.isMultiLine()) { - row = subRange.end.row; - } else if (startIndent == indent) { - break; - } - } - endRow = row; - } - - return new Range(startRow, startColumn, endRow, session.getLine(endRow).length); - }; - -}).call(FoldMode.prototype); - -}); diff --git a/IDE/jsrealb-ide/ace-src-noconflict/mode-prolog.js b/IDE/jsrealb-ide/ace-src-noconflict/mode-prolog.js deleted file mode 100644 index d8a8bfb6..00000000 --- a/IDE/jsrealb-ide/ace-src-noconflict/mode-prolog.js +++ /dev/null @@ -1,354 +0,0 @@ -/* ***** BEGIN LICENSE BLOCK ***** - * Distributed under the BSD license: - * - * Copyright (c) 2012, Ajax.org B.V. - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are met: - * * Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * * Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * * Neither the name of Ajax.org B.V. nor the - * names of its contributors may be used to endorse or promote products - * derived from this software without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND - * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED - * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE - * DISCLAIMED. IN NO EVENT SHALL AJAX.ORG B.V. BE LIABLE FOR ANY - * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES - * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; - * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND - * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - * - * - * Contributor(s): - * - * - * - * ***** END LICENSE BLOCK ***** */ - -ace.define('ace/mode/prolog', ['require', 'exports', 'module' , 'ace/lib/oop', 'ace/mode/text', 'ace/tokenizer', 'ace/mode/prolog_highlight_rules', 'ace/mode/folding/cstyle'], function(require, exports, module) { - - -var oop = require("../lib/oop"); -var TextMode = require("./text").Mode; -var Tokenizer = require("../tokenizer").Tokenizer; -var PrologHighlightRules = require("./prolog_highlight_rules").PrologHighlightRules; -var FoldMode = require("./folding/cstyle").FoldMode; - -var Mode = function() { - this.HighlightRules = PrologHighlightRules; - this.foldingRules = new FoldMode(); -}; -oop.inherits(Mode, TextMode); - -(function() { - this.lineCommentStart = "%"; - this.blockComment = {start: "/*", end: "*/"}; - this.$id = "ace/mode/prolog"; -}).call(Mode.prototype); - -exports.Mode = Mode; -}); - -ace.define('ace/mode/prolog_highlight_rules', ['require', 'exports', 'module' , 'ace/lib/oop', 'ace/mode/text_highlight_rules'], function(require, exports, module) { - - -var oop = require("../lib/oop"); -var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; - -var PrologHighlightRules = function() { - - this.$rules = { start: - [ { include: '#comment' }, - { include: '#basic_fact' }, - { include: '#rule' }, - { include: '#directive' }, - { include: '#fact' } ], - '#atom': - [ { token: 'constant.other.atom.prolog', - regex: '\\b[a-z][a-zA-Z0-9_]*\\b' }, - { token: 'constant.numeric.prolog', - regex: '-?\\d+(?:\\.\\d+)?' }, - { include: '#string' } ], - '#basic_elem': - [ { include: '#comment' }, - { include: '#statement' }, - { include: '#constants' }, - { include: '#operators' }, - { include: '#builtins' }, - { include: '#list' }, - { include: '#atom' }, - { include: '#variable' } ], - '#basic_fact': - [ { token: - [ 'entity.name.function.fact.basic.prolog', - 'punctuation.end.fact.basic.prolog' ], - regex: '([a-z]\\w*)(\\.)' } ], - '#builtins': - [ { token: 'support.function.builtin.prolog', - regex: '\\b(?:abolish|abort|ancestors|arg|ascii|assert[az]|atom(?:ic)?|body|char|close|conc|concat|consult|define|definition|dynamic|dump|fail|file|free|free_proc|functor|getc|goal|halt|head|head|integer|length|listing|match_args|member|next_clause|nl|nonvar|nth|number|cvars|nvars|offset|op|print?|prompt|putc|quoted|ratom|read|redefine|rename|retract(?:all)?|see|seeing|seen|skip|spy|statistics|system|tab|tell|telling|term|time|told|univ|unlink_clause|unspy_predicate|var|write)\\b' } ], - '#comment': - [ { token: - [ 'punctuation.definition.comment.prolog', - 'comment.line.percentage.prolog' ], - regex: '(%)(.*$)' }, - { token: 'punctuation.definition.comment.prolog', - regex: '/\\*', - push: - [ { token: 'punctuation.definition.comment.prolog', - regex: '\\*/', - next: 'pop' }, - { defaultToken: 'comment.block.prolog' } ] } ], - '#constants': - [ { token: 'constant.language.prolog', - regex: '\\b(?:true|false|yes|no)\\b' } ], - '#directive': - [ { token: 'keyword.operator.directive.prolog', - regex: ':-', - push: - [ { token: 'meta.directive.prolog', regex: '\\.', next: 'pop' }, - { include: '#comment' }, - { include: '#statement' }, - { defaultToken: 'meta.directive.prolog' } ] } ], - '#expr': - [ { include: '#comments' }, - { token: 'meta.expression.prolog', - regex: '\\(', - push: - [ { token: 'meta.expression.prolog', regex: '\\)', next: 'pop' }, - { include: '#expr' }, - { defaultToken: 'meta.expression.prolog' } ] }, - { token: 'keyword.control.cutoff.prolog', regex: '!' }, - { token: 'punctuation.control.and.prolog', regex: ',' }, - { token: 'punctuation.control.or.prolog', regex: ';' }, - { include: '#basic_elem' } ], - '#fact': - [ { token: - [ 'entity.name.function.fact.prolog', - 'punctuation.begin.fact.parameters.prolog' ], - regex: '([a-z]\\w*)(\\()(?!.*:-)', - push: - [ { token: - [ 'punctuation.end.fact.parameters.prolog', - 'punctuation.end.fact.prolog' ], - regex: '(\\))(\\.?)', - next: 'pop' }, - { include: '#parameter' }, - { defaultToken: 'meta.fact.prolog' } ] } ], - '#list': - [ { token: 'punctuation.begin.list.prolog', - regex: '\\[(?=.*\\])', - push: - [ { token: 'punctuation.end.list.prolog', - regex: '\\]', - next: 'pop' }, - { include: '#comment' }, - { token: 'punctuation.separator.list.prolog', regex: ',' }, - { token: 'punctuation.concat.list.prolog', - regex: '\\|', - push: - [ { token: 'meta.list.concat.prolog', - regex: '(?=\\s*\\])', - next: 'pop' }, - { include: '#basic_elem' }, - { defaultToken: 'meta.list.concat.prolog' } ] }, - { include: '#basic_elem' }, - { defaultToken: 'meta.list.prolog' } ] } ], - '#operators': - [ { token: 'keyword.operator.prolog', - regex: '\\\\\\+|\\bnot\\b|\\bis\\b|->|[><]|[><\\\\:=]?=|(?:=\\\\|\\\\=)=' } ], - '#parameter': - [ { token: 'variable.language.anonymous.prolog', - regex: '\\b_\\b' }, - { token: 'variable.parameter.prolog', - regex: '\\b[A-Z_]\\w*\\b' }, - { token: 'punctuation.separator.parameters.prolog', regex: ',' }, - { include: '#basic_elem' }, - { token: 'text', regex: '[^\\s]' } ], - '#rule': - [ { token: 'meta.rule.prolog', - regex: '(?=[a-z]\\w*.*:-)', - push: - [ { token: 'punctuation.rule.end.prolog', - regex: '\\.', - next: 'pop' }, - { token: 'meta.rule.signature.prolog', - regex: '(?=[a-z]\\w*.*:-)', - push: - [ { token: 'meta.rule.signature.prolog', - regex: '(?=:-)', - next: 'pop' }, - { token: 'entity.name.function.rule.prolog', - regex: '[a-z]\\w*(?=\\(|\\s*:-)' }, - { token: 'punctuation.rule.parameters.begin.prolog', - regex: '\\(', - push: - [ { token: 'punctuation.rule.parameters.end.prolog', - regex: '\\)', - next: 'pop' }, - { include: '#parameter' }, - { defaultToken: 'meta.rule.parameters.prolog' } ] }, - { defaultToken: 'meta.rule.signature.prolog' } ] }, - { token: 'keyword.operator.definition.prolog', - regex: ':-', - push: - [ { token: 'meta.rule.definition.prolog', - regex: '(?=\\.)', - next: 'pop' }, - { include: '#comment' }, - { include: '#expr' }, - { defaultToken: 'meta.rule.definition.prolog' } ] }, - { defaultToken: 'meta.rule.prolog' } ] } ], - '#statement': - [ { token: 'meta.statement.prolog', - regex: '(?=[a-z]\\w*\\()', - push: - [ { token: 'punctuation.end.statement.parameters.prolog', - regex: '\\)', - next: 'pop' }, - { include: '#builtins' }, - { include: '#atom' }, - { token: 'punctuation.begin.statement.parameters.prolog', - regex: '\\(', - push: - [ { token: 'meta.statement.parameters.prolog', - regex: '(?=\\))', - next: 'pop' }, - { token: 'punctuation.separator.statement.prolog', regex: ',' }, - { include: '#basic_elem' }, - { defaultToken: 'meta.statement.parameters.prolog' } ] }, - { defaultToken: 'meta.statement.prolog' } ] } ], - '#string': - [ { token: 'punctuation.definition.string.begin.prolog', - regex: '\'', - push: - [ { token: 'punctuation.definition.string.end.prolog', - regex: '\'', - next: 'pop' }, - { token: 'constant.character.escape.prolog', regex: '\\\\.' }, - { token: 'constant.character.escape.quote.prolog', - regex: '\'\'' }, - { defaultToken: 'string.quoted.single.prolog' } ] } ], - '#variable': - [ { token: 'variable.language.anonymous.prolog', - regex: '\\b_\\b' }, - { token: 'variable.other.prolog', - regex: '\\b[A-Z_][a-zA-Z0-9_]*\\b' } ] } - - this.normalizeRules(); -}; - -PrologHighlightRules.metaData = { fileTypes: [ 'plg', 'prolog' ], - foldingStartMarker: '(%\\s*region \\w*)|([a-z]\\w*.*:- ?)', - foldingStopMarker: '(%\\s*end(\\s*region)?)|(?=\\.)', - keyEquivalent: '^~P', - name: 'Prolog', - scopeName: 'source.prolog' } - - -oop.inherits(PrologHighlightRules, TextHighlightRules); - -exports.PrologHighlightRules = PrologHighlightRules; -}); - -ace.define('ace/mode/folding/cstyle', ['require', 'exports', 'module' , 'ace/lib/oop', 'ace/range', 'ace/mode/folding/fold_mode'], function(require, exports, module) { - - -var oop = require("../../lib/oop"); -var Range = require("../../range").Range; -var BaseFoldMode = require("./fold_mode").FoldMode; - -var FoldMode = exports.FoldMode = function(commentRegex) { - if (commentRegex) { - this.foldingStartMarker = new RegExp( - this.foldingStartMarker.source.replace(/\|[^|]*?$/, "|" + commentRegex.start) - ); - this.foldingStopMarker = new RegExp( - this.foldingStopMarker.source.replace(/\|[^|]*?$/, "|" + commentRegex.end) - ); - } -}; -oop.inherits(FoldMode, BaseFoldMode); - -(function() { - - this.foldingStartMarker = /(\{|\[)[^\}\]]*$|^\s*(\/\*)/; - this.foldingStopMarker = /^[^\[\{]*(\}|\])|^[\s\*]*(\*\/)/; - - this.getFoldWidgetRange = function(session, foldStyle, row, forceMultiline) { - var line = session.getLine(row); - var match = line.match(this.foldingStartMarker); - if (match) { - var i = match.index; - - if (match[1]) - return this.openingBracketBlock(session, match[1], row, i); - - var range = session.getCommentFoldRange(row, i + match[0].length, 1); - - if (range && !range.isMultiLine()) { - if (forceMultiline) { - range = this.getSectionRange(session, row); - } else if (foldStyle != "all") - range = null; - } - - return range; - } - - if (foldStyle === "markbegin") - return; - - var match = line.match(this.foldingStopMarker); - if (match) { - var i = match.index + match[0].length; - - if (match[1]) - return this.closingBracketBlock(session, match[1], row, i); - - return session.getCommentFoldRange(row, i, -1); - } - }; - - this.getSectionRange = function(session, row) { - var line = session.getLine(row); - var startIndent = line.search(/\S/); - var startRow = row; - var startColumn = line.length; - row = row + 1; - var endRow = row; - var maxRow = session.getLength(); - while (++row < maxRow) { - line = session.getLine(row); - var indent = line.search(/\S/); - if (indent === -1) - continue; - if (startIndent > indent) - break; - var subRange = this.getFoldWidgetRange(session, "all", row); - - if (subRange) { - if (subRange.start.row <= startRow) { - break; - } else if (subRange.isMultiLine()) { - row = subRange.end.row; - } else if (startIndent == indent) { - break; - } - } - endRow = row; - } - - return new Range(startRow, startColumn, endRow, session.getLine(endRow).length); - }; - -}).call(FoldMode.prototype); - -}); diff --git a/IDE/jsrealb-ide/ace-src-noconflict/mode-properties.js b/IDE/jsrealb-ide/ace-src-noconflict/mode-properties.js deleted file mode 100644 index d92c238f..00000000 --- a/IDE/jsrealb-ide/ace-src-noconflict/mode-properties.js +++ /dev/null @@ -1,100 +0,0 @@ -/* ***** BEGIN LICENSE BLOCK ***** - * Distributed under the BSD license: - * - * Copyright (c) 2010, Ajax.org B.V. - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are met: - * * Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * * Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * * Neither the name of Ajax.org B.V. nor the - * names of its contributors may be used to endorse or promote products - * derived from this software without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND - * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED - * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE - * DISCLAIMED. IN NO EVENT SHALL AJAX.ORG B.V. BE LIABLE FOR ANY - * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES - * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; - * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND - * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - * - * ***** END LICENSE BLOCK ***** */ - -ace.define('ace/mode/properties', ['require', 'exports', 'module' , 'ace/lib/oop', 'ace/mode/text', 'ace/tokenizer', 'ace/mode/properties_highlight_rules'], function(require, exports, module) { - - -var oop = require("../lib/oop"); -var TextMode = require("./text").Mode; -var Tokenizer = require("../tokenizer").Tokenizer; -var PropertiesHighlightRules = require("./properties_highlight_rules").PropertiesHighlightRules; - -var Mode = function() { - this.HighlightRules = PropertiesHighlightRules; -}; -oop.inherits(Mode, TextMode); - -exports.Mode = Mode; -}); - -ace.define('ace/mode/properties_highlight_rules', ['require', 'exports', 'module' , 'ace/lib/oop', 'ace/mode/text_highlight_rules'], function(require, exports, module) { - - -var oop = require("../lib/oop"); -var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; - -var PropertiesHighlightRules = function() { - - var escapeRe = /\\u[0-9a-fA-F]{4}|\\/; - - this.$rules = { - "start" : [ - { - token : "comment", - regex : /[!#].*$/ - }, { - token : "keyword", - regex : /[=:]$/ - }, { - token : "keyword", - regex : /[=:]/, - next : "value" - }, { - token : "constant.language.escape", - regex : escapeRe - }, { - defaultToken: "variable" - } - ], - "value" : [ - { - regex : /\\$/, - token : "string", - next : "value" - }, { - regex : /$/, - token : "string", - next : "start" - }, { - token : "constant.language.escape", - regex : escapeRe - }, { - defaultToken: "string" - } - ] - }; - -}; - -oop.inherits(PropertiesHighlightRules, TextHighlightRules); - -exports.PropertiesHighlightRules = PropertiesHighlightRules; -}); - diff --git a/IDE/jsrealb-ide/ace-src-noconflict/mode-protobuf.js b/IDE/jsrealb-ide/ace-src-noconflict/mode-protobuf.js deleted file mode 100644 index 92133b61..00000000 --- a/IDE/jsrealb-ide/ace-src-noconflict/mode-protobuf.js +++ /dev/null @@ -1,885 +0,0 @@ -/* ***** BEGIN LICENSE BLOCK ***** - * Distributed under the BSD license: - * - * Copyright (c) 2012, Ajax.org B.V. - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are met: - * * Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * * Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * * Neither the name of Ajax.org B.V. nor the - * names of its contributors may be used to endorse or promote products - * derived from this software without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND - * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED - * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE - * DISCLAIMED. IN NO EVENT SHALL AJAX.ORG B.V. BE LIABLE FOR ANY - * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES - * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; - * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND - * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - * - * - * Contributor(s): - * - * Zef Hemel - * - * ***** END LICENSE BLOCK ***** */ - -ace.define('ace/mode/protobuf', ['require', 'exports', 'module' , 'ace/lib/oop', 'ace/mode/c_cpp', 'ace/tokenizer', 'ace/mode/protobuf_highlight_rules', 'ace/mode/folding/cstyle'], function(require, exports, module) { - - -var oop = require("../lib/oop"); -var CMode = require("./c_cpp").Mode; -var Tokenizer = require("../tokenizer").Tokenizer; -var ProtobufHighlightRules = require("./protobuf_highlight_rules").ProtobufHighlightRules; -var CStyleFoldMode = require("./folding/cstyle").FoldMode; - -var Mode = function() { - CMode.call(this); - var highlighter = new ProtobufHighlightRules(); - this.foldingRules = new CStyleFoldMode(); - - this.$tokenizer = new Tokenizer(highlighter.getRules()); - this.$keywordList = highlighter.$keywordList; -}; -oop.inherits(Mode, CMode); - -(function() { - this.lineCommentStart = "//"; - this.blockComment = {start: "/*", end: "*/"}; - this.$id = "ace/mode/protobuf"; -}).call(Mode.prototype); - -exports.Mode = Mode; -}); - -ace.define('ace/mode/c_cpp', ['require', 'exports', 'module' , 'ace/lib/oop', 'ace/mode/text', 'ace/tokenizer', 'ace/mode/c_cpp_highlight_rules', 'ace/mode/matching_brace_outdent', 'ace/range', 'ace/mode/behaviour/cstyle', 'ace/mode/folding/cstyle'], function(require, exports, module) { - - -var oop = require("../lib/oop"); -var TextMode = require("./text").Mode; -var Tokenizer = require("../tokenizer").Tokenizer; -var c_cppHighlightRules = require("./c_cpp_highlight_rules").c_cppHighlightRules; -var MatchingBraceOutdent = require("./matching_brace_outdent").MatchingBraceOutdent; -var Range = require("../range").Range; -var CstyleBehaviour = require("./behaviour/cstyle").CstyleBehaviour; -var CStyleFoldMode = require("./folding/cstyle").FoldMode; - -var Mode = function() { - this.HighlightRules = c_cppHighlightRules; - - this.$outdent = new MatchingBraceOutdent(); - this.$behaviour = new CstyleBehaviour(); - - this.foldingRules = new CStyleFoldMode(); -}; -oop.inherits(Mode, TextMode); - -(function() { - - this.lineCommentStart = "//"; - this.blockComment = {start: "/*", end: "*/"}; - - this.getNextLineIndent = function(state, line, tab) { - var indent = this.$getIndent(line); - - var tokenizedLine = this.getTokenizer().getLineTokens(line, state); - var tokens = tokenizedLine.tokens; - var endState = tokenizedLine.state; - - if (tokens.length && tokens[tokens.length-1].type == "comment") { - return indent; - } - - if (state == "start") { - var match = line.match(/^.*[\{\(\[]\s*$/); - if (match) { - indent += tab; - } - } else if (state == "doc-start") { - if (endState == "start") { - return ""; - } - var match = line.match(/^\s*(\/?)\*/); - if (match) { - if (match[1]) { - indent += " "; - } - indent += "* "; - } - } - - return indent; - }; - - this.checkOutdent = function(state, line, input) { - return this.$outdent.checkOutdent(line, input); - }; - - this.autoOutdent = function(state, doc, row) { - this.$outdent.autoOutdent(doc, row); - }; - - this.$id = "ace/mode/c_cpp"; -}).call(Mode.prototype); - -exports.Mode = Mode; -}); -ace.define('ace/mode/c_cpp_highlight_rules', ['require', 'exports', 'module' , 'ace/lib/oop', 'ace/mode/doc_comment_highlight_rules', 'ace/mode/text_highlight_rules'], function(require, exports, module) { - - -var oop = require("../lib/oop"); -var DocCommentHighlightRules = require("./doc_comment_highlight_rules").DocCommentHighlightRules; -var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; -var cFunctions = exports.cFunctions = "\\s*\\bhypot(?:f|l)?|s(?:scanf|ystem|nprintf|ca(?:nf|lb(?:n(?:f|l)?|ln(?:f|l)?))|i(?:n(?:h(?:f|l)?|f|l)?|gn(?:al|bit))|tr(?:s(?:tr|pn)|nc(?:py|at|mp)|c(?:spn|hr|oll|py|at|mp)|to(?:imax|d|u(?:l(?:l)?|max)|k|f|l(?:d|l)?)|error|pbrk|ftime|len|rchr|xfrm)|printf|et(?:jmp|vbuf|locale|buf)|qrt(?:f|l)?|w(?:scanf|printf)|rand)|n(?:e(?:arbyint(?:f|l)?|xt(?:toward(?:f|l)?|after(?:f|l)?))|an(?:f|l)?)|c(?:s(?:in(?:h(?:f|l)?|f|l)?|qrt(?:f|l)?)|cos(?:h(?:f)?|f|l)?|imag(?:f|l)?|t(?:ime|an(?:h(?:f|l)?|f|l)?)|o(?:s(?:h(?:f|l)?|f|l)?|nj(?:f|l)?|pysign(?:f|l)?)|p(?:ow(?:f|l)?|roj(?:f|l)?)|e(?:il(?:f|l)?|xp(?:f|l)?)|l(?:o(?:ck|g(?:f|l)?)|earerr)|a(?:sin(?:h(?:f|l)?|f|l)?|cos(?:h(?:f|l)?|f|l)?|tan(?:h(?:f|l)?|f|l)?|lloc|rg(?:f|l)?|bs(?:f|l)?)|real(?:f|l)?|brt(?:f|l)?)|t(?:ime|o(?:upper|lower)|an(?:h(?:f|l)?|f|l)?|runc(?:f|l)?|gamma(?:f|l)?|mp(?:nam|file))|i(?:s(?:space|n(?:ormal|an)|cntrl|inf|digit|u(?:nordered|pper)|p(?:unct|rint)|finite|w(?:space|c(?:ntrl|type)|digit|upper|p(?:unct|rint)|lower|al(?:num|pha)|graph|xdigit|blank)|l(?:ower|ess(?:equal|greater)?)|al(?:num|pha)|gr(?:eater(?:equal)?|aph)|xdigit|blank)|logb(?:f|l)?|max(?:div|abs))|di(?:v|fftime)|_Exit|unget(?:c|wc)|p(?:ow(?:f|l)?|ut(?:s|c(?:har)?|wc(?:har)?)|error|rintf)|e(?:rf(?:c(?:f|l)?|f|l)?|x(?:it|p(?:2(?:f|l)?|f|l|m1(?:f|l)?)?))|v(?:s(?:scanf|nprintf|canf|printf|w(?:scanf|printf))|printf|f(?:scanf|printf|w(?:scanf|printf))|w(?:scanf|printf)|a_(?:start|copy|end|arg))|qsort|f(?:s(?:canf|e(?:tpos|ek))|close|tell|open|dim(?:f|l)?|p(?:classify|ut(?:s|c|w(?:s|c))|rintf)|e(?:holdexcept|set(?:e(?:nv|xceptflag)|round)|clearexcept|testexcept|of|updateenv|r(?:aiseexcept|ror)|get(?:e(?:nv|xceptflag)|round))|flush|w(?:scanf|ide|printf|rite)|loor(?:f|l)?|abs(?:f|l)?|get(?:s|c|pos|w(?:s|c))|re(?:open|e|ad|xp(?:f|l)?)|m(?:in(?:f|l)?|od(?:f|l)?|a(?:f|l|x(?:f|l)?)?))|l(?:d(?:iv|exp(?:f|l)?)|o(?:ngjmp|cal(?:time|econv)|g(?:1(?:p(?:f|l)?|0(?:f|l)?)|2(?:f|l)?|f|l|b(?:f|l)?)?)|abs|l(?:div|abs|r(?:int(?:f|l)?|ound(?:f|l)?))|r(?:int(?:f|l)?|ound(?:f|l)?)|gamma(?:f|l)?)|w(?:scanf|c(?:s(?:s(?:tr|pn)|nc(?:py|at|mp)|c(?:spn|hr|oll|py|at|mp)|to(?:imax|d|u(?:l(?:l)?|max)|k|f|l(?:d|l)?|mbs)|pbrk|ftime|len|r(?:chr|tombs)|xfrm)|to(?:b|mb)|rtomb)|printf|mem(?:set|c(?:hr|py|mp)|move))|a(?:s(?:sert|ctime|in(?:h(?:f|l)?|f|l)?)|cos(?:h(?:f|l)?|f|l)?|t(?:o(?:i|f|l(?:l)?)|exit|an(?:h(?:f|l)?|2(?:f|l)?|f|l)?)|b(?:s|ort))|g(?:et(?:s|c(?:har)?|env|wc(?:har)?)|mtime)|r(?:int(?:f|l)?|ound(?:f|l)?|e(?:name|alloc|wind|m(?:ove|quo(?:f|l)?|ainder(?:f|l)?))|a(?:nd|ise))|b(?:search|towc)|m(?:odf(?:f|l)?|em(?:set|c(?:hr|py|mp)|move)|ktime|alloc|b(?:s(?:init|towcs|rtowcs)|towc|len|r(?:towc|len)))\\b" - -var c_cppHighlightRules = function() { - - var keywordControls = ( - "break|case|continue|default|do|else|for|goto|if|_Pragma|" + - "return|switch|while|catch|operator|try|throw|using" - ); - - var storageType = ( - "asm|__asm__|auto|bool|_Bool|char|_Complex|double|enum|float|" + - "_Imaginary|int|long|short|signed|struct|typedef|union|unsigned|void|" + - "class|wchar_t|template" - ); - - var storageModifiers = ( - "const|extern|register|restrict|static|volatile|inline|private:|" + - "protected:|public:|friend|explicit|virtual|export|mutable|typename" - ); - - var keywordOperators = ( - "and|and_eq|bitand|bitor|compl|not|not_eq|or|or_eq|typeid|xor|xor_eq" + - "const_cast|dynamic_cast|reinterpret_cast|static_cast|sizeof|namespace" - ); - - var builtinConstants = ( - "NULL|true|false|TRUE|FALSE" - ); - - var keywordMapper = this.$keywords = this.createKeywordMapper({ - "keyword.control" : keywordControls, - "storage.type" : storageType, - "storage.modifier" : storageModifiers, - "keyword.operator" : keywordOperators, - "variable.language": "this", - "constant.language": builtinConstants - }, "identifier"); - - var identifierRe = "[a-zA-Z\\$_\u00a1-\uffff][a-zA-Z\d\\$_\u00a1-\uffff]*\\b"; - - this.$rules = { - "start" : [ - { - token : "comment", - regex : "\\/\\/.*$" - }, - DocCommentHighlightRules.getStartRule("doc-start"), - { - token : "comment", // multi line comment - regex : "\\/\\*", - next : "comment" - }, { - token : "string", // single line - regex : '["](?:(?:\\\\.)|(?:[^"\\\\]))*?["]' - }, { - token : "string", // multi line string start - regex : '["].*\\\\$', - next : "qqstring" - }, { - token : "string", // single line - regex : "['](?:(?:\\\\.)|(?:[^'\\\\]))*?[']" - }, { - token : "string", // multi line string start - regex : "['].*\\\\$", - next : "qstring" - }, { - token : "constant.numeric", // hex - regex : "0[xX][0-9a-fA-F]+(L|l|UL|ul|u|U|F|f|ll|LL|ull|ULL)?\\b" - }, { - token : "constant.numeric", // float - regex : "[+-]?\\d+(?:(?:\\.\\d*)?(?:[eE][+-]?\\d+)?)?(L|l|UL|ul|u|U|F|f|ll|LL|ull|ULL)?\\b" - }, { - token : "keyword", // pre-compiler directives - regex : "#\\s*(?:include|import|pragma|line|define|undef|if|ifdef|else|elif|ifndef)\\b", - next : "directive" - }, { - token : "keyword", // special case pre-compiler directive - regex : "(?:#\\s*endif)\\b" - }, { - token : "support.function.C99.c", - regex : cFunctions - }, { - token : keywordMapper, - regex : "[a-zA-Z_$][a-zA-Z0-9_$]*\\b" - }, { - token : "keyword.operator", - regex : "!|\\$|%|&|\\*|\\-\\-|\\-|\\+\\+|\\+|~|==|=|!=|<=|>=|<<=|>>=|>>>=|<>|<|>|!|&&|\\|\\||\\?\\:|\\*=|%=|\\+=|\\-=|&=|\\^=|\\b(?:in|new|delete|typeof|void)" - }, { - token : "punctuation.operator", - regex : "\\?|\\:|\\,|\\;|\\." - }, { - token : "paren.lparen", - regex : "[[({]" - }, { - token : "paren.rparen", - regex : "[\\])}]" - }, { - token : "text", - regex : "\\s+" - } - ], - "comment" : [ - { - token : "comment", // closing comment - regex : ".*?\\*\\/", - next : "start" - }, { - token : "comment", // comment spanning whole line - regex : ".+" - } - ], - "qqstring" : [ - { - token : "string", - regex : '(?:(?:\\\\.)|(?:[^"\\\\]))*?"', - next : "start" - }, { - token : "string", - regex : '.+' - } - ], - "qstring" : [ - { - token : "string", - regex : "(?:(?:\\\\.)|(?:[^'\\\\]))*?'", - next : "start" - }, { - token : "string", - regex : '.+' - } - ], - "directive" : [ - { - token : "constant.other.multiline", - regex : /\\/ - }, - { - token : "constant.other.multiline", - regex : /.*\\/ - }, - { - token : "constant.other", - regex : "\\s*<.+?>", - next : "start" - }, - { - token : "constant.other", // single line - regex : '\\s*["](?:(?:\\\\.)|(?:[^"\\\\]))*?["]', - next : "start" - }, - { - token : "constant.other", // single line - regex : "\\s*['](?:(?:\\\\.)|(?:[^'\\\\]))*?[']", - next : "start" - }, - { - token : "constant.other", - regex : /[^\\\/]+/, - next : "start" - } - ] - }; - - this.embedRules(DocCommentHighlightRules, "doc-", - [ DocCommentHighlightRules.getEndRule("start") ]); -}; - -oop.inherits(c_cppHighlightRules, TextHighlightRules); - -exports.c_cppHighlightRules = c_cppHighlightRules; -}); - -ace.define('ace/mode/doc_comment_highlight_rules', ['require', 'exports', 'module' , 'ace/lib/oop', 'ace/mode/text_highlight_rules'], function(require, exports, module) { - - -var oop = require("../lib/oop"); -var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; - -var DocCommentHighlightRules = function() { - - this.$rules = { - "start" : [ { - token : "comment.doc.tag", - regex : "@[\\w\\d_]+" // TODO: fix email addresses - }, { - token : "comment.doc.tag", - regex : "\\bTODO\\b" - }, { - defaultToken : "comment.doc" - }] - }; -}; - -oop.inherits(DocCommentHighlightRules, TextHighlightRules); - -DocCommentHighlightRules.getStartRule = function(start) { - return { - token : "comment.doc", // doc comment - regex : "\\/\\*(?=\\*)", - next : start - }; -}; - -DocCommentHighlightRules.getEndRule = function (start) { - return { - token : "comment.doc", // closing comment - regex : "\\*\\/", - next : start - }; -}; - - -exports.DocCommentHighlightRules = DocCommentHighlightRules; - -}); - -ace.define('ace/mode/matching_brace_outdent', ['require', 'exports', 'module' , 'ace/range'], function(require, exports, module) { - - -var Range = require("../range").Range; - -var MatchingBraceOutdent = function() {}; - -(function() { - - this.checkOutdent = function(line, input) { - if (! /^\s+$/.test(line)) - return false; - - return /^\s*\}/.test(input); - }; - - this.autoOutdent = function(doc, row) { - var line = doc.getLine(row); - var match = line.match(/^(\s*\})/); - - if (!match) return 0; - - var column = match[1].length; - var openBracePos = doc.findMatchingBracket({row: row, column: column}); - - if (!openBracePos || openBracePos.row == row) return 0; - - var indent = this.$getIndent(doc.getLine(openBracePos.row)); - doc.replace(new Range(row, 0, row, column-1), indent); - }; - - this.$getIndent = function(line) { - return line.match(/^\s*/)[0]; - }; - -}).call(MatchingBraceOutdent.prototype); - -exports.MatchingBraceOutdent = MatchingBraceOutdent; -}); - -ace.define('ace/mode/behaviour/cstyle', ['require', 'exports', 'module' , 'ace/lib/oop', 'ace/mode/behaviour', 'ace/token_iterator', 'ace/lib/lang'], function(require, exports, module) { - - -var oop = require("../../lib/oop"); -var Behaviour = require("../behaviour").Behaviour; -var TokenIterator = require("../../token_iterator").TokenIterator; -var lang = require("../../lib/lang"); - -var SAFE_INSERT_IN_TOKENS = - ["text", "paren.rparen", "punctuation.operator"]; -var SAFE_INSERT_BEFORE_TOKENS = - ["text", "paren.rparen", "punctuation.operator", "comment"]; - - -var autoInsertedBrackets = 0; -var autoInsertedRow = -1; -var autoInsertedLineEnd = ""; -var maybeInsertedBrackets = 0; -var maybeInsertedRow = -1; -var maybeInsertedLineStart = ""; -var maybeInsertedLineEnd = ""; - -var CstyleBehaviour = function () { - - CstyleBehaviour.isSaneInsertion = function(editor, session) { - var cursor = editor.getCursorPosition(); - var iterator = new TokenIterator(session, cursor.row, cursor.column); - if (!this.$matchTokenType(iterator.getCurrentToken() || "text", SAFE_INSERT_IN_TOKENS)) { - var iterator2 = new TokenIterator(session, cursor.row, cursor.column + 1); - if (!this.$matchTokenType(iterator2.getCurrentToken() || "text", SAFE_INSERT_IN_TOKENS)) - return false; - } - iterator.stepForward(); - return iterator.getCurrentTokenRow() !== cursor.row || - this.$matchTokenType(iterator.getCurrentToken() || "text", SAFE_INSERT_BEFORE_TOKENS); - }; - - CstyleBehaviour.$matchTokenType = function(token, types) { - return types.indexOf(token.type || token) > -1; - }; - - CstyleBehaviour.recordAutoInsert = function(editor, session, bracket) { - var cursor = editor.getCursorPosition(); - var line = session.doc.getLine(cursor.row); - if (!this.isAutoInsertedClosing(cursor, line, autoInsertedLineEnd[0])) - autoInsertedBrackets = 0; - autoInsertedRow = cursor.row; - autoInsertedLineEnd = bracket + line.substr(cursor.column); - autoInsertedBrackets++; - }; - - CstyleBehaviour.recordMaybeInsert = function(editor, session, bracket) { - var cursor = editor.getCursorPosition(); - var line = session.doc.getLine(cursor.row); - if (!this.isMaybeInsertedClosing(cursor, line)) - maybeInsertedBrackets = 0; - maybeInsertedRow = cursor.row; - maybeInsertedLineStart = line.substr(0, cursor.column) + bracket; - maybeInsertedLineEnd = line.substr(cursor.column); - maybeInsertedBrackets++; - }; - - CstyleBehaviour.isAutoInsertedClosing = function(cursor, line, bracket) { - return autoInsertedBrackets > 0 && - cursor.row === autoInsertedRow && - bracket === autoInsertedLineEnd[0] && - line.substr(cursor.column) === autoInsertedLineEnd; - }; - - CstyleBehaviour.isMaybeInsertedClosing = function(cursor, line) { - return maybeInsertedBrackets > 0 && - cursor.row === maybeInsertedRow && - line.substr(cursor.column) === maybeInsertedLineEnd && - line.substr(0, cursor.column) == maybeInsertedLineStart; - }; - - CstyleBehaviour.popAutoInsertedClosing = function() { - autoInsertedLineEnd = autoInsertedLineEnd.substr(1); - autoInsertedBrackets--; - }; - - CstyleBehaviour.clearMaybeInsertedClosing = function() { - maybeInsertedBrackets = 0; - maybeInsertedRow = -1; - }; - - this.add("braces", "insertion", function (state, action, editor, session, text) { - var cursor = editor.getCursorPosition(); - var line = session.doc.getLine(cursor.row); - if (text == '{') { - var selection = editor.getSelectionRange(); - var selected = session.doc.getTextRange(selection); - if (selected !== "" && selected !== "{" && editor.getWrapBehavioursEnabled()) { - return { - text: '{' + selected + '}', - selection: false - }; - } else if (CstyleBehaviour.isSaneInsertion(editor, session)) { - if (/[\]\}\)]/.test(line[cursor.column]) || editor.inMultiSelectMode) { - CstyleBehaviour.recordAutoInsert(editor, session, "}"); - return { - text: '{}', - selection: [1, 1] - }; - } else { - CstyleBehaviour.recordMaybeInsert(editor, session, "{"); - return { - text: '{', - selection: [1, 1] - }; - } - } - } else if (text == '}') { - var rightChar = line.substring(cursor.column, cursor.column + 1); - if (rightChar == '}') { - var matching = session.$findOpeningBracket('}', {column: cursor.column + 1, row: cursor.row}); - if (matching !== null && CstyleBehaviour.isAutoInsertedClosing(cursor, line, text)) { - CstyleBehaviour.popAutoInsertedClosing(); - return { - text: '', - selection: [1, 1] - }; - } - } - } else if (text == "\n" || text == "\r\n") { - var closing = ""; - if (CstyleBehaviour.isMaybeInsertedClosing(cursor, line)) { - closing = lang.stringRepeat("}", maybeInsertedBrackets); - CstyleBehaviour.clearMaybeInsertedClosing(); - } - var rightChar = line.substring(cursor.column, cursor.column + 1); - if (rightChar === '}') { - var openBracePos = session.findMatchingBracket({row: cursor.row, column: cursor.column+1}, '}'); - if (!openBracePos) - return null; - var next_indent = this.$getIndent(session.getLine(openBracePos.row)); - } else if (closing) { - var next_indent = this.$getIndent(line); - } else { - return; - } - var indent = next_indent + session.getTabString(); - - return { - text: '\n' + indent + '\n' + next_indent + closing, - selection: [1, indent.length, 1, indent.length] - }; - } else { - CstyleBehaviour.clearMaybeInsertedClosing(); - } - }); - - this.add("braces", "deletion", function (state, action, editor, session, range) { - var selected = session.doc.getTextRange(range); - if (!range.isMultiLine() && selected == '{') { - var line = session.doc.getLine(range.start.row); - var rightChar = line.substring(range.end.column, range.end.column + 1); - if (rightChar == '}') { - range.end.column++; - return range; - } else { - maybeInsertedBrackets--; - } - } - }); - - this.add("parens", "insertion", function (state, action, editor, session, text) { - if (text == '(') { - var selection = editor.getSelectionRange(); - var selected = session.doc.getTextRange(selection); - if (selected !== "" && editor.getWrapBehavioursEnabled()) { - return { - text: '(' + selected + ')', - selection: false - }; - } else if (CstyleBehaviour.isSaneInsertion(editor, session)) { - CstyleBehaviour.recordAutoInsert(editor, session, ")"); - return { - text: '()', - selection: [1, 1] - }; - } - } else if (text == ')') { - var cursor = editor.getCursorPosition(); - var line = session.doc.getLine(cursor.row); - var rightChar = line.substring(cursor.column, cursor.column + 1); - if (rightChar == ')') { - var matching = session.$findOpeningBracket(')', {column: cursor.column + 1, row: cursor.row}); - if (matching !== null && CstyleBehaviour.isAutoInsertedClosing(cursor, line, text)) { - CstyleBehaviour.popAutoInsertedClosing(); - return { - text: '', - selection: [1, 1] - }; - } - } - } - }); - - this.add("parens", "deletion", function (state, action, editor, session, range) { - var selected = session.doc.getTextRange(range); - if (!range.isMultiLine() && selected == '(') { - var line = session.doc.getLine(range.start.row); - var rightChar = line.substring(range.start.column + 1, range.start.column + 2); - if (rightChar == ')') { - range.end.column++; - return range; - } - } - }); - - this.add("brackets", "insertion", function (state, action, editor, session, text) { - if (text == '[') { - var selection = editor.getSelectionRange(); - var selected = session.doc.getTextRange(selection); - if (selected !== "" && editor.getWrapBehavioursEnabled()) { - return { - text: '[' + selected + ']', - selection: false - }; - } else if (CstyleBehaviour.isSaneInsertion(editor, session)) { - CstyleBehaviour.recordAutoInsert(editor, session, "]"); - return { - text: '[]', - selection: [1, 1] - }; - } - } else if (text == ']') { - var cursor = editor.getCursorPosition(); - var line = session.doc.getLine(cursor.row); - var rightChar = line.substring(cursor.column, cursor.column + 1); - if (rightChar == ']') { - var matching = session.$findOpeningBracket(']', {column: cursor.column + 1, row: cursor.row}); - if (matching !== null && CstyleBehaviour.isAutoInsertedClosing(cursor, line, text)) { - CstyleBehaviour.popAutoInsertedClosing(); - return { - text: '', - selection: [1, 1] - }; - } - } - } - }); - - this.add("brackets", "deletion", function (state, action, editor, session, range) { - var selected = session.doc.getTextRange(range); - if (!range.isMultiLine() && selected == '[') { - var line = session.doc.getLine(range.start.row); - var rightChar = line.substring(range.start.column + 1, range.start.column + 2); - if (rightChar == ']') { - range.end.column++; - return range; - } - } - }); - - this.add("string_dquotes", "insertion", function (state, action, editor, session, text) { - if (text == '"' || text == "'") { - var quote = text; - var selection = editor.getSelectionRange(); - var selected = session.doc.getTextRange(selection); - if (selected !== "" && selected !== "'" && selected != '"' && editor.getWrapBehavioursEnabled()) { - return { - text: quote + selected + quote, - selection: false - }; - } else { - var cursor = editor.getCursorPosition(); - var line = session.doc.getLine(cursor.row); - var leftChar = line.substring(cursor.column-1, cursor.column); - if (leftChar == '\\') { - return null; - } - var tokens = session.getTokens(selection.start.row); - var col = 0, token; - var quotepos = -1; // Track whether we're inside an open quote. - - for (var x = 0; x < tokens.length; x++) { - token = tokens[x]; - if (token.type == "string") { - quotepos = -1; - } else if (quotepos < 0) { - quotepos = token.value.indexOf(quote); - } - if ((token.value.length + col) > selection.start.column) { - break; - } - col += tokens[x].value.length; - } - if (!token || (quotepos < 0 && token.type !== "comment" && (token.type !== "string" || ((selection.start.column !== token.value.length+col-1) && token.value.lastIndexOf(quote) === token.value.length-1)))) { - if (!CstyleBehaviour.isSaneInsertion(editor, session)) - return; - return { - text: quote + quote, - selection: [1,1] - }; - } else if (token && token.type === "string") { - var rightChar = line.substring(cursor.column, cursor.column + 1); - if (rightChar == quote) { - return { - text: '', - selection: [1, 1] - }; - } - } - } - } - }); - - this.add("string_dquotes", "deletion", function (state, action, editor, session, range) { - var selected = session.doc.getTextRange(range); - if (!range.isMultiLine() && (selected == '"' || selected == "'")) { - var line = session.doc.getLine(range.start.row); - var rightChar = line.substring(range.start.column + 1, range.start.column + 2); - if (rightChar == selected) { - range.end.column++; - return range; - } - } - }); - -}; - -oop.inherits(CstyleBehaviour, Behaviour); - -exports.CstyleBehaviour = CstyleBehaviour; -}); - -ace.define('ace/mode/folding/cstyle', ['require', 'exports', 'module' , 'ace/lib/oop', 'ace/range', 'ace/mode/folding/fold_mode'], function(require, exports, module) { - - -var oop = require("../../lib/oop"); -var Range = require("../../range").Range; -var BaseFoldMode = require("./fold_mode").FoldMode; - -var FoldMode = exports.FoldMode = function(commentRegex) { - if (commentRegex) { - this.foldingStartMarker = new RegExp( - this.foldingStartMarker.source.replace(/\|[^|]*?$/, "|" + commentRegex.start) - ); - this.foldingStopMarker = new RegExp( - this.foldingStopMarker.source.replace(/\|[^|]*?$/, "|" + commentRegex.end) - ); - } -}; -oop.inherits(FoldMode, BaseFoldMode); - -(function() { - - this.foldingStartMarker = /(\{|\[)[^\}\]]*$|^\s*(\/\*)/; - this.foldingStopMarker = /^[^\[\{]*(\}|\])|^[\s\*]*(\*\/)/; - - this.getFoldWidgetRange = function(session, foldStyle, row, forceMultiline) { - var line = session.getLine(row); - var match = line.match(this.foldingStartMarker); - if (match) { - var i = match.index; - - if (match[1]) - return this.openingBracketBlock(session, match[1], row, i); - - var range = session.getCommentFoldRange(row, i + match[0].length, 1); - - if (range && !range.isMultiLine()) { - if (forceMultiline) { - range = this.getSectionRange(session, row); - } else if (foldStyle != "all") - range = null; - } - - return range; - } - - if (foldStyle === "markbegin") - return; - - var match = line.match(this.foldingStopMarker); - if (match) { - var i = match.index + match[0].length; - - if (match[1]) - return this.closingBracketBlock(session, match[1], row, i); - - return session.getCommentFoldRange(row, i, -1); - } - }; - - this.getSectionRange = function(session, row) { - var line = session.getLine(row); - var startIndent = line.search(/\S/); - var startRow = row; - var startColumn = line.length; - row = row + 1; - var endRow = row; - var maxRow = session.getLength(); - while (++row < maxRow) { - line = session.getLine(row); - var indent = line.search(/\S/); - if (indent === -1) - continue; - if (startIndent > indent) - break; - var subRange = this.getFoldWidgetRange(session, "all", row); - - if (subRange) { - if (subRange.start.row <= startRow) { - break; - } else if (subRange.isMultiLine()) { - row = subRange.end.row; - } else if (startIndent == indent) { - break; - } - } - endRow = row; - } - - return new Range(startRow, startColumn, endRow, session.getLine(endRow).length); - }; - -}).call(FoldMode.prototype); - -}); -ace.define('ace/mode/protobuf_highlight_rules', ['require', 'exports', 'module' , 'ace/lib/oop', 'ace/mode/text_highlight_rules'], function(require, exports, module) { - - - var oop = require("../lib/oop"); - var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; - - var ProtobufHighlightRules = function() { - - var builtinTypes = "double|float|int32|int64|uint32|uint64|sint32|" + - "sint64|fixed32|fixed64|sfixed32|sfixed64|bool|" + - "string|bytes"; - var keywordDeclaration = "message|required|optional|repeated|package|" + - "import|option|enum"; - - var keywordMapper = this.createKeywordMapper({ - "keyword.declaration.protobuf": keywordDeclaration, - "support.type": builtinTypes - }, "identifier"); - - this.$rules = { - "start": [{ - token: "comment", - regex: /\/\/.*$/ - }, { - token: "comment", - regex: /\/\*/, - next: "comment" - }, { - token: "constant", - regex: "<[^>]+>" - }, { - regex: "=", - token: "keyword.operator.assignment.protobuf" - }, { - token : "string", // single line - regex : '["](?:(?:\\\\.)|(?:[^"\\\\]))*?["]' - }, { - token : "string", // single line - regex : '[\'](?:(?:\\\\.)|(?:[^\'\\\\]))*?[\']' - }, { - token: "constant.numeric", // hex - regex: "0[xX][0-9a-fA-F]+\\b" - }, { - token: "constant.numeric", // float - regex: "[+-]?\\d+(?:(?:\\.\\d*)?(?:[eE][+-]?\\d+)?)?\\b" - }, { - token: keywordMapper, - regex: "[a-zA-Z_$][a-zA-Z0-9_$]*\\b" - }], - "comment": [{ - token: "comment", // closing comment - regex: ".*?\\*\\/", - next: "start" - }, { - token: "comment", // comment spanning whole line - regex: ".+" - }] - }; - - this.normalizeRules(); - }; - - oop.inherits(ProtobufHighlightRules, TextHighlightRules); - - exports.ProtobufHighlightRules = ProtobufHighlightRules; -}); \ No newline at end of file diff --git a/IDE/jsrealb-ide/ace-src-noconflict/mode-python.js b/IDE/jsrealb-ide/ace-src-noconflict/mode-python.js deleted file mode 100644 index 52c906e5..00000000 --- a/IDE/jsrealb-ide/ace-src-noconflict/mode-python.js +++ /dev/null @@ -1,295 +0,0 @@ -/* ***** BEGIN LICENSE BLOCK ***** - * Distributed under the BSD license: - * - * Copyright (c) 2010, Ajax.org B.V. - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are met: - * * Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * * Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * * Neither the name of Ajax.org B.V. nor the - * names of its contributors may be used to endorse or promote products - * derived from this software without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND - * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED - * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE - * DISCLAIMED. IN NO EVENT SHALL AJAX.ORG B.V. BE LIABLE FOR ANY - * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES - * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; - * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND - * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - * - * ***** END LICENSE BLOCK ***** */ - -ace.define('ace/mode/python', ['require', 'exports', 'module' , 'ace/lib/oop', 'ace/mode/text', 'ace/tokenizer', 'ace/mode/python_highlight_rules', 'ace/mode/folding/pythonic', 'ace/range'], function(require, exports, module) { - - -var oop = require("../lib/oop"); -var TextMode = require("./text").Mode; -var Tokenizer = require("../tokenizer").Tokenizer; -var PythonHighlightRules = require("./python_highlight_rules").PythonHighlightRules; -var PythonFoldMode = require("./folding/pythonic").FoldMode; -var Range = require("../range").Range; - -var Mode = function() { - this.HighlightRules = PythonHighlightRules; - this.foldingRules = new PythonFoldMode("\\:"); -}; -oop.inherits(Mode, TextMode); - -(function() { - - this.lineCommentStart = "#"; - - this.getNextLineIndent = function(state, line, tab) { - var indent = this.$getIndent(line); - - var tokenizedLine = this.getTokenizer().getLineTokens(line, state); - var tokens = tokenizedLine.tokens; - - if (tokens.length && tokens[tokens.length-1].type == "comment") { - return indent; - } - - if (state == "start") { - var match = line.match(/^.*[\{\(\[\:]\s*$/); - if (match) { - indent += tab; - } - } - - return indent; - }; - - var outdents = { - "pass": 1, - "return": 1, - "raise": 1, - "break": 1, - "continue": 1 - }; - - this.checkOutdent = function(state, line, input) { - if (input !== "\r\n" && input !== "\r" && input !== "\n") - return false; - - var tokens = this.getTokenizer().getLineTokens(line.trim(), state).tokens; - - if (!tokens) - return false; - do { - var last = tokens.pop(); - } while (last && (last.type == "comment" || (last.type == "text" && last.value.match(/^\s+$/)))); - - if (!last) - return false; - - return (last.type == "keyword" && outdents[last.value]); - }; - - this.autoOutdent = function(state, doc, row) { - - row += 1; - var indent = this.$getIndent(doc.getLine(row)); - var tab = doc.getTabString(); - if (indent.slice(-tab.length) == tab) - doc.remove(new Range(row, indent.length-tab.length, row, indent.length)); - }; - - this.$id = "ace/mode/python"; -}).call(Mode.prototype); - -exports.Mode = Mode; -}); - -ace.define('ace/mode/python_highlight_rules', ['require', 'exports', 'module' , 'ace/lib/oop', 'ace/mode/text_highlight_rules'], function(require, exports, module) { - - -var oop = require("../lib/oop"); -var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; - -var PythonHighlightRules = function() { - - var keywords = ( - "and|as|assert|break|class|continue|def|del|elif|else|except|exec|" + - "finally|for|from|global|if|import|in|is|lambda|not|or|pass|print|" + - "raise|return|try|while|with|yield" - ); - - var builtinConstants = ( - "True|False|None|NotImplemented|Ellipsis|__debug__" - ); - - var builtinFunctions = ( - "abs|divmod|input|open|staticmethod|all|enumerate|int|ord|str|any|" + - "eval|isinstance|pow|sum|basestring|execfile|issubclass|print|super|" + - "binfile|iter|property|tuple|bool|filter|len|range|type|bytearray|" + - "float|list|raw_input|unichr|callable|format|locals|reduce|unicode|" + - "chr|frozenset|long|reload|vars|classmethod|getattr|map|repr|xrange|" + - "cmp|globals|max|reversed|zip|compile|hasattr|memoryview|round|" + - "__import__|complex|hash|min|set|apply|delattr|help|next|setattr|" + - "buffer|dict|hex|object|slice|coerce|dir|id|oct|sorted|intern" - ); - var keywordMapper = this.createKeywordMapper({ - "invalid.deprecated": "debugger", - "support.function": builtinFunctions, - "constant.language": builtinConstants, - "keyword": keywords - }, "identifier"); - - var strPre = "(?:r|u|ur|R|U|UR|Ur|uR)?"; - - var decimalInteger = "(?:(?:[1-9]\\d*)|(?:0))"; - var octInteger = "(?:0[oO]?[0-7]+)"; - var hexInteger = "(?:0[xX][\\dA-Fa-f]+)"; - var binInteger = "(?:0[bB][01]+)"; - var integer = "(?:" + decimalInteger + "|" + octInteger + "|" + hexInteger + "|" + binInteger + ")"; - - var exponent = "(?:[eE][+-]?\\d+)"; - var fraction = "(?:\\.\\d+)"; - var intPart = "(?:\\d+)"; - var pointFloat = "(?:(?:" + intPart + "?" + fraction + ")|(?:" + intPart + "\\.))"; - var exponentFloat = "(?:(?:" + pointFloat + "|" + intPart + ")" + exponent + ")"; - var floatNumber = "(?:" + exponentFloat + "|" + pointFloat + ")"; - - var stringEscape = "\\\\(x[0-9A-Fa-f]{2}|[0-7]{3}|[\\\\abfnrtv'\"]|U[0-9A-Fa-f]{8}|u[0-9A-Fa-f]{4})"; - - this.$rules = { - "start" : [ { - token : "comment", - regex : "#.*$" - }, { - token : "string", // multi line """ string start - regex : strPre + '"{3}', - next : "qqstring3" - }, { - token : "string", // " string - regex : strPre + '"(?=.)', - next : "qqstring" - }, { - token : "string", // multi line ''' string start - regex : strPre + "'{3}", - next : "qstring3" - }, { - token : "string", // ' string - regex : strPre + "'(?=.)", - next : "qstring" - }, { - token : "constant.numeric", // imaginary - regex : "(?:" + floatNumber + "|\\d+)[jJ]\\b" - }, { - token : "constant.numeric", // float - regex : floatNumber - }, { - token : "constant.numeric", // long integer - regex : integer + "[lL]\\b" - }, { - token : "constant.numeric", // integer - regex : integer + "\\b" - }, { - token : keywordMapper, - regex : "[a-zA-Z_$][a-zA-Z0-9_$]*\\b" - }, { - token : "keyword.operator", - regex : "\\+|\\-|\\*|\\*\\*|\\/|\\/\\/|%|<<|>>|&|\\||\\^|~|<|>|<=|=>|==|!=|<>|=" - }, { - token : "paren.lparen", - regex : "[\\[\\(\\{]" - }, { - token : "paren.rparen", - regex : "[\\]\\)\\}]" - }, { - token : "text", - regex : "\\s+" - } ], - "qqstring3" : [ { - token : "constant.language.escape", - regex : stringEscape - }, { - token : "string", // multi line """ string end - regex : '"{3}', - next : "start" - }, { - defaultToken : "string" - } ], - "qstring3" : [ { - token : "constant.language.escape", - regex : stringEscape - }, { - token : "string", // multi line ''' string end - regex : "'{3}", - next : "start" - }, { - defaultToken : "string" - } ], - "qqstring" : [{ - token : "constant.language.escape", - regex : stringEscape - }, { - token : "string", - regex : "\\\\$", - next : "qqstring" - }, { - token : "string", - regex : '"|$', - next : "start" - }, { - defaultToken: "string" - }], - "qstring" : [{ - token : "constant.language.escape", - regex : stringEscape - }, { - token : "string", - regex : "\\\\$", - next : "qstring" - }, { - token : "string", - regex : "'|$", - next : "start" - }, { - defaultToken: "string" - }] - }; -}; - -oop.inherits(PythonHighlightRules, TextHighlightRules); - -exports.PythonHighlightRules = PythonHighlightRules; -}); - -ace.define('ace/mode/folding/pythonic', ['require', 'exports', 'module' , 'ace/lib/oop', 'ace/mode/folding/fold_mode'], function(require, exports, module) { - - -var oop = require("../../lib/oop"); -var BaseFoldMode = require("./fold_mode").FoldMode; - -var FoldMode = exports.FoldMode = function(markers) { - this.foldingStartMarker = new RegExp("([\\[{])(?:\\s*)$|(" + markers + ")(?:\\s*)(?:#.*)?$"); -}; -oop.inherits(FoldMode, BaseFoldMode); - -(function() { - - this.getFoldWidgetRange = function(session, foldStyle, row) { - var line = session.getLine(row); - var match = line.match(this.foldingStartMarker); - if (match) { - if (match[1]) - return this.openingBracketBlock(session, match[1], row, match.index); - if (match[2]) - return this.indentationBlock(session, row, match.index + match[2].length); - return this.indentationBlock(session, row); - } - } - -}).call(FoldMode.prototype); - -}); diff --git a/IDE/jsrealb-ide/ace-src-noconflict/mode-r.js b/IDE/jsrealb-ide/ace-src-noconflict/mode-r.js deleted file mode 100644 index e462c9f6..00000000 --- a/IDE/jsrealb-ide/ace-src-noconflict/mode-r.js +++ /dev/null @@ -1,337 +0,0 @@ -/* - * r.js - * - * Copyright (C) 2009-11 by RStudio, Inc. - * - * The Initial Developer of the Original Code is - * Ajax.org B.V. - * Portions created by the Initial Developer are Copyright (C) 2010 - * the Initial Developer. All Rights Reserved. - * - * Distributed under the BSD license: - * - * Copyright (c) 2010, Ajax.org B.V. - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are met: - * * Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * * Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * * Neither the name of Ajax.org B.V. nor the - * names of its contributors may be used to endorse or promote products - * derived from this software without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND - * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED - * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE - * DISCLAIMED. IN NO EVENT SHALL AJAX.ORG B.V. BE LIABLE FOR ANY - * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES - * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; - * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND - * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF - * - */ -ace.define('ace/mode/r', ['require', 'exports', 'module' , 'ace/range', 'ace/lib/oop', 'ace/mode/text', 'ace/tokenizer', 'ace/mode/text_highlight_rules', 'ace/mode/r_highlight_rules', 'ace/mode/matching_brace_outdent', 'ace/unicode'], function(require, exports, module) { - - - var Range = require("../range").Range; - var oop = require("../lib/oop"); - var TextMode = require("./text").Mode; - var Tokenizer = require("../tokenizer").Tokenizer; - var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; - var RHighlightRules = require("./r_highlight_rules").RHighlightRules; - var MatchingBraceOutdent = require("./matching_brace_outdent").MatchingBraceOutdent; - var unicode = require("../unicode"); - - var Mode = function() - { - this.HighlightRules = RHighlightRules; - this.$outdent = new MatchingBraceOutdent(); - }; - oop.inherits(Mode, TextMode); - - (function() - { - this.lineCommentStart = "#"; - this.$id = "ace/mode/r"; - }).call(Mode.prototype); - exports.Mode = Mode; -}); -ace.define('ace/mode/r_highlight_rules', ['require', 'exports', 'module' , 'ace/lib/oop', 'ace/lib/lang', 'ace/mode/text_highlight_rules', 'ace/mode/tex_highlight_rules'], function(require, exports, module) { - - var oop = require("../lib/oop"); - var lang = require("../lib/lang"); - var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; - var TexHighlightRules = require("./tex_highlight_rules").TexHighlightRules; - - var RHighlightRules = function() - { - - var keywords = lang.arrayToMap( - ("function|if|in|break|next|repeat|else|for|return|switch|while|try|tryCatch|stop|warning|require|library|attach|detach|source|setMethod|setGeneric|setGroupGeneric|setClass") - .split("|") - ); - - var buildinConstants = lang.arrayToMap( - ("NULL|NA|TRUE|FALSE|T|F|Inf|NaN|NA_integer_|NA_real_|NA_character_|" + - "NA_complex_").split("|") - ); - - this.$rules = { - "start" : [ - { - token : "comment.sectionhead", - regex : "#+(?!').*(?:----|====|####)\\s*$" - }, - { - token : "comment", - regex : "#+'", - next : "rd-start" - }, - { - token : "comment", - regex : "#.*$" - }, - { - token : "string", // multi line string start - regex : '["]', - next : "qqstring" - }, - { - token : "string", // multi line string start - regex : "[']", - next : "qstring" - }, - { - token : "constant.numeric", // hex - regex : "0[xX][0-9a-fA-F]+[Li]?\\b" - }, - { - token : "constant.numeric", // explicit integer - regex : "\\d+L\\b" - }, - { - token : "constant.numeric", // number - regex : "\\d+(?:\\.\\d*)?(?:[eE][+\\-]?\\d*)?i?\\b" - }, - { - token : "constant.numeric", // number with leading decimal - regex : "\\.\\d+(?:[eE][+\\-]?\\d*)?i?\\b" - }, - { - token : "constant.language.boolean", - regex : "(?:TRUE|FALSE|T|F)\\b" - }, - { - token : "identifier", - regex : "`.*?`" - }, - { - onMatch : function(value) { - if (keywords[value]) - return "keyword"; - else if (buildinConstants[value]) - return "constant.language"; - else if (value == '...' || value.match(/^\.\.\d+$/)) - return "variable.language"; - else - return "identifier"; - }, - regex : "[a-zA-Z.][a-zA-Z0-9._]*\\b" - }, - { - token : "keyword.operator", - regex : "%%|>=|<=|==|!=|\\->|<\\-|\\|\\||&&|=|\\+|\\-|\\*|/|\\^|>|<|!|&|\\||~|\\$|:" - }, - { - token : "keyword.operator", // infix operators - regex : "%.*?%" - }, - { - token : "paren.keyword.operator", - regex : "[[({]" - }, - { - token : "paren.keyword.operator", - regex : "[\\])}]" - }, - { - token : "text", - regex : "\\s+" - } - ], - "qqstring" : [ - { - token : "string", - regex : '(?:(?:\\\\.)|(?:[^"\\\\]))*?"', - next : "start" - }, - { - token : "string", - regex : '.+' - } - ], - "qstring" : [ - { - token : "string", - regex : "(?:(?:\\\\.)|(?:[^'\\\\]))*?'", - next : "start" - }, - { - token : "string", - regex : '.+' - } - ] - }; - - var rdRules = new TexHighlightRules("comment").getRules(); - for (var i = 0; i < rdRules["start"].length; i++) { - rdRules["start"][i].token += ".virtual-comment"; - } - - this.addRules(rdRules, "rd-"); - this.$rules["rd-start"].unshift({ - token: "text", - regex: "^", - next: "start" - }); - this.$rules["rd-start"].unshift({ - token : "keyword", - regex : "@(?!@)[^ ]*" - }); - this.$rules["rd-start"].unshift({ - token : "comment", - regex : "@@" - }); - this.$rules["rd-start"].push({ - token : "comment", - regex : "[^%\\\\[({\\])}]+" - }); - }; - - oop.inherits(RHighlightRules, TextHighlightRules); - - exports.RHighlightRules = RHighlightRules; -}); -ace.define('ace/mode/tex_highlight_rules', ['require', 'exports', 'module' , 'ace/lib/oop', 'ace/lib/lang', 'ace/mode/text_highlight_rules'], function(require, exports, module) { - - -var oop = require("../lib/oop"); -var lang = require("../lib/lang"); -var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; - -var TexHighlightRules = function(textClass) { - - if (!textClass) - textClass = "text"; - - this.$rules = { - "start" : [ - { - token : "comment", - regex : "%.*$" - }, { - token : textClass, // non-command - regex : "\\\\[$&%#\\{\\}]" - }, { - token : "keyword", // command - regex : "\\\\(?:documentclass|usepackage|newcounter|setcounter|addtocounter|value|arabic|stepcounter|newenvironment|renewenvironment|ref|vref|eqref|pageref|label|cite[a-zA-Z]*|tag|begin|end|bibitem)\\b", - next : "nospell" - }, { - token : "keyword", // command - regex : "\\\\(?:[a-zA-z0-9]+|[^a-zA-z0-9])" - }, { - token : "paren.keyword.operator", - regex : "[[({]" - }, { - token : "paren.keyword.operator", - regex : "[\\])}]" - }, { - token : textClass, - regex : "\\s+" - } - ], - "nospell" : [ - { - token : "comment", - regex : "%.*$", - next : "start" - }, { - token : "nospell." + textClass, // non-command - regex : "\\\\[$&%#\\{\\}]" - }, { - token : "keyword", // command - regex : "\\\\(?:documentclass|usepackage|newcounter|setcounter|addtocounter|value|arabic|stepcounter|newenvironment|renewenvironment|ref|vref|eqref|pageref|label|cite[a-zA-Z]*|tag|begin|end|bibitem)\\b" - }, { - token : "keyword", // command - regex : "\\\\(?:[a-zA-z0-9]+|[^a-zA-z0-9])", - next : "start" - }, { - token : "paren.keyword.operator", - regex : "[[({]" - }, { - token : "paren.keyword.operator", - regex : "[\\])]" - }, { - token : "paren.keyword.operator", - regex : "}", - next : "start" - }, { - token : "nospell." + textClass, - regex : "\\s+" - }, { - token : "nospell." + textClass, - regex : "\\w+" - } - ] - }; -}; - -oop.inherits(TexHighlightRules, TextHighlightRules); - -exports.TexHighlightRules = TexHighlightRules; -}); - -ace.define('ace/mode/matching_brace_outdent', ['require', 'exports', 'module' , 'ace/range'], function(require, exports, module) { - - -var Range = require("../range").Range; - -var MatchingBraceOutdent = function() {}; - -(function() { - - this.checkOutdent = function(line, input) { - if (! /^\s+$/.test(line)) - return false; - - return /^\s*\}/.test(input); - }; - - this.autoOutdent = function(doc, row) { - var line = doc.getLine(row); - var match = line.match(/^(\s*\})/); - - if (!match) return 0; - - var column = match[1].length; - var openBracePos = doc.findMatchingBracket({row: row, column: column}); - - if (!openBracePos || openBracePos.row == row) return 0; - - var indent = this.$getIndent(doc.getLine(openBracePos.row)); - doc.replace(new Range(row, 0, row, column-1), indent); - }; - - this.$getIndent = function(line) { - return line.match(/^\s*/)[0]; - }; - -}).call(MatchingBraceOutdent.prototype); - -exports.MatchingBraceOutdent = MatchingBraceOutdent; -}); diff --git a/IDE/jsrealb-ide/ace-src-noconflict/mode-rdoc.js b/IDE/jsrealb-ide/ace-src-noconflict/mode-rdoc.js deleted file mode 100644 index 97115202..00000000 --- a/IDE/jsrealb-ide/ace-src-noconflict/mode-rdoc.js +++ /dev/null @@ -1,210 +0,0 @@ -/* - * rdoc.js - * - * Copyright (C) 2009-11 by RStudio, Inc. - * - * The Initial Developer of the Original Code is - * Ajax.org B.V. - * Portions created by the Initial Developer are Copyright (C) 2010 - * the Initial Developer. All Rights Reserved. - * - * Distributed under the BSD license: - * - * Copyright (c) 2010, Ajax.org B.V. - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are met: - * * Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * * Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * * Neither the name of Ajax.org B.V. nor the - * names of its contributors may be used to endorse or promote products - * derived from this software without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND - * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED - * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE - * DISCLAIMED. IN NO EVENT SHALL AJAX.ORG B.V. BE LIABLE FOR ANY - * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES - * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; - * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND - * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF - * - */ -ace.define('ace/mode/rdoc', ['require', 'exports', 'module' , 'ace/lib/oop', 'ace/mode/text', 'ace/tokenizer', 'ace/mode/text_highlight_rules', 'ace/mode/rdoc_highlight_rules', 'ace/mode/matching_brace_outdent'], function(require, exports, module) { - - -var oop = require("../lib/oop"); -var TextMode = require("./text").Mode; -var Tokenizer = require("../tokenizer").Tokenizer; -var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; -var RDocHighlightRules = require("./rdoc_highlight_rules").RDocHighlightRules; -var MatchingBraceOutdent = require("./matching_brace_outdent").MatchingBraceOutdent; - -var Mode = function(suppressHighlighting) { - this.HighlightRules = RDocHighlightRules; - this.$outdent = new MatchingBraceOutdent(); -}; -oop.inherits(Mode, TextMode); - -(function() { - this.getNextLineIndent = function(state, line, tab) { - return this.$getIndent(line); - }; - this.$id = "ace/mode/rdoc"; -}).call(Mode.prototype); - -exports.Mode = Mode; -}); -ace.define('ace/mode/rdoc_highlight_rules', ['require', 'exports', 'module' , 'ace/lib/oop', 'ace/lib/lang', 'ace/mode/text_highlight_rules', 'ace/mode/latex_highlight_rules'], function(require, exports, module) { - - -var oop = require("../lib/oop"); -var lang = require("../lib/lang"); -var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; -var LaTeXHighlightRules = require("./latex_highlight_rules"); - -var RDocHighlightRules = function() { - - this.$rules = { - "start" : [ - { - token : "comment", - regex : "%.*$" - }, { - token : "text", // non-command - regex : "\\\\[$&%#\\{\\}]" - }, { - token : "keyword", // command - regex : "\\\\(?:name|alias|method|S3method|S4method|item|code|preformatted|kbd|pkg|var|env|option|command|author|email|url|source|cite|acronym|href|code|preformatted|link|eqn|deqn|keyword|usage|examples|dontrun|dontshow|figure|if|ifelse|Sexpr|RdOpts|inputencoding|usepackage)\\b", - next : "nospell" - }, { - token : "keyword", // command - regex : "\\\\(?:[a-zA-z0-9]+|[^a-zA-z0-9])" - }, { - token : "paren.keyword.operator", - regex : "[[({]" - }, { - token : "paren.keyword.operator", - regex : "[\\])}]" - }, { - token : "text", - regex : "\\s+" - } - ], - "nospell" : [ - { - token : "comment", - regex : "%.*$", - next : "start" - }, { - token : "nospell.text", // non-command - regex : "\\\\[$&%#\\{\\}]" - }, { - token : "keyword", // command - regex : "\\\\(?:name|alias|method|S3method|S4method|item|code|preformatted|kbd|pkg|var|env|option|command|author|email|url|source|cite|acronym|href|code|preformatted|link|eqn|deqn|keyword|usage|examples|dontrun|dontshow|figure|if|ifelse|Sexpr|RdOpts|inputencoding|usepackage)\\b" - }, { - token : "keyword", // command - regex : "\\\\(?:[a-zA-z0-9]+|[^a-zA-z0-9])", - next : "start" - }, { - token : "paren.keyword.operator", - regex : "[[({]" - }, { - token : "paren.keyword.operator", - regex : "[\\])]" - }, { - token : "paren.keyword.operator", - regex : "}", - next : "start" - }, { - token : "nospell.text", - regex : "\\s+" - }, { - token : "nospell.text", - regex : "\\w+" - } - ] - }; -}; - -oop.inherits(RDocHighlightRules, TextHighlightRules); - -exports.RDocHighlightRules = RDocHighlightRules; -}); -ace.define('ace/mode/latex_highlight_rules', ['require', 'exports', 'module' , 'ace/lib/oop', 'ace/mode/text_highlight_rules'], function(require, exports, module) { - - -var oop = require("../lib/oop"); -var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; - -var LatexHighlightRules = function() { - this.$rules = { - "start" : [{ - token : "keyword", - regex : "\\\\(?:[^a-zA-Z]|[a-zA-Z]+)" - }, { - token : "lparen", - regex : "[[({]" - }, { - token : "rparen", - regex : "[\\])}]" - }, { - token : "string", - regex : "\\$(?:(?:\\\\.)|(?:[^\\$\\\\]))*?\\$" - }, { - token : "comment", - regex : "%.*$" - }] - }; -}; - -oop.inherits(LatexHighlightRules, TextHighlightRules); - -exports.LatexHighlightRules = LatexHighlightRules; - -}); - -ace.define('ace/mode/matching_brace_outdent', ['require', 'exports', 'module' , 'ace/range'], function(require, exports, module) { - - -var Range = require("../range").Range; - -var MatchingBraceOutdent = function() {}; - -(function() { - - this.checkOutdent = function(line, input) { - if (! /^\s+$/.test(line)) - return false; - - return /^\s*\}/.test(input); - }; - - this.autoOutdent = function(doc, row) { - var line = doc.getLine(row); - var match = line.match(/^(\s*\})/); - - if (!match) return 0; - - var column = match[1].length; - var openBracePos = doc.findMatchingBracket({row: row, column: column}); - - if (!openBracePos || openBracePos.row == row) return 0; - - var indent = this.$getIndent(doc.getLine(openBracePos.row)); - doc.replace(new Range(row, 0, row, column-1), indent); - }; - - this.$getIndent = function(line) { - return line.match(/^\s*/)[0]; - }; - -}).call(MatchingBraceOutdent.prototype); - -exports.MatchingBraceOutdent = MatchingBraceOutdent; -}); diff --git a/IDE/jsrealb-ide/ace-src-noconflict/mode-rhtml.js b/IDE/jsrealb-ide/ace-src-noconflict/mode-rhtml.js deleted file mode 100644 index c5c8e25f..00000000 --- a/IDE/jsrealb-ide/ace-src-noconflict/mode-rhtml.js +++ /dev/null @@ -1,2663 +0,0 @@ -/* - * rhtml.js - * - * Copyright (C) 2009-11 by RStudio, Inc. - * - * The Initial Developer of the Original Code is - * Ajax.org B.V. - * Portions created by the Initial Developer are Copyright (C) 2010 - * the Initial Developer. All Rights Reserved. - * - * Distributed under the BSD license: - * - * Copyright (c) 2010, Ajax.org B.V. - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are met: - * * Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * * Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * * Neither the name of Ajax.org B.V. nor the - * names of its contributors may be used to endorse or promote products - * derived from this software without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND - * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED - * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE - * DISCLAIMED. IN NO EVENT SHALL AJAX.ORG B.V. BE LIABLE FOR ANY - * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES - * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; - * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND - * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF - */ - -ace.define('ace/mode/rhtml', ['require', 'exports', 'module' , 'ace/lib/oop', 'ace/mode/html', 'ace/tokenizer', 'ace/mode/rhtml_highlight_rules'], function(require, exports, module) { - - -var oop = require("../lib/oop"); -var HtmlMode = require("./html").Mode; -var Tokenizer = require("../tokenizer").Tokenizer; - -var RHtmlHighlightRules = require("./rhtml_highlight_rules").RHtmlHighlightRules; - -var Mode = function(doc, session) { - this.$session = session; - this.HighlightRules = RHtmlHighlightRules; -}; -oop.inherits(Mode, HtmlMode); - -(function() { - this.insertChunkInfo = { - value: "\n", - position: {row: 0, column: 15} - }; - - this.getLanguageMode = function(position) - { - return this.$session.getState(position.row).match(/^r-/) ? 'R' : 'HTML'; - }; - - this.$id = "ace/mode/rhtml"; -}).call(Mode.prototype); - -exports.Mode = Mode; -}); - -ace.define('ace/mode/html', ['require', 'exports', 'module' , 'ace/lib/oop', 'ace/mode/text', 'ace/mode/javascript', 'ace/mode/css', 'ace/tokenizer', 'ace/mode/html_highlight_rules', 'ace/mode/behaviour/html', 'ace/mode/folding/html', 'ace/mode/html_completions'], function(require, exports, module) { - - -var oop = require("../lib/oop"); -var TextMode = require("./text").Mode; -var JavaScriptMode = require("./javascript").Mode; -var CssMode = require("./css").Mode; -var Tokenizer = require("../tokenizer").Tokenizer; -var HtmlHighlightRules = require("./html_highlight_rules").HtmlHighlightRules; -var HtmlBehaviour = require("./behaviour/html").HtmlBehaviour; -var HtmlFoldMode = require("./folding/html").FoldMode; -var HtmlCompletions = require("./html_completions").HtmlCompletions; - -var Mode = function() { - this.HighlightRules = HtmlHighlightRules; - this.$behaviour = new HtmlBehaviour(); - this.$completer = new HtmlCompletions(); - - this.createModeDelegates({ - "js-": JavaScriptMode, - "css-": CssMode - }); - - this.foldingRules = new HtmlFoldMode(); -}; -oop.inherits(Mode, TextMode); - -(function() { - - this.blockComment = {start: ""}; - - this.getNextLineIndent = function(state, line, tab) { - return this.$getIndent(line); - }; - - this.checkOutdent = function(state, line, input) { - return false; - }; - - this.getCompletions = function(state, session, pos, prefix) { - return this.$completer.getCompletions(state, session, pos, prefix); - }; - - this.$id = "ace/mode/html"; -}).call(Mode.prototype); - -exports.Mode = Mode; -}); - -ace.define('ace/mode/javascript', ['require', 'exports', 'module' , 'ace/lib/oop', 'ace/mode/text', 'ace/tokenizer', 'ace/mode/javascript_highlight_rules', 'ace/mode/matching_brace_outdent', 'ace/range', 'ace/worker/worker_client', 'ace/mode/behaviour/cstyle', 'ace/mode/folding/cstyle'], function(require, exports, module) { - - -var oop = require("../lib/oop"); -var TextMode = require("./text").Mode; -var Tokenizer = require("../tokenizer").Tokenizer; -var JavaScriptHighlightRules = require("./javascript_highlight_rules").JavaScriptHighlightRules; -var MatchingBraceOutdent = require("./matching_brace_outdent").MatchingBraceOutdent; -var Range = require("../range").Range; -var WorkerClient = require("../worker/worker_client").WorkerClient; -var CstyleBehaviour = require("./behaviour/cstyle").CstyleBehaviour; -var CStyleFoldMode = require("./folding/cstyle").FoldMode; - -var Mode = function() { - this.HighlightRules = JavaScriptHighlightRules; - - this.$outdent = new MatchingBraceOutdent(); - this.$behaviour = new CstyleBehaviour(); - this.foldingRules = new CStyleFoldMode(); -}; -oop.inherits(Mode, TextMode); - -(function() { - - this.lineCommentStart = "//"; - this.blockComment = {start: "/*", end: "*/"}; - - this.getNextLineIndent = function(state, line, tab) { - var indent = this.$getIndent(line); - - var tokenizedLine = this.getTokenizer().getLineTokens(line, state); - var tokens = tokenizedLine.tokens; - var endState = tokenizedLine.state; - - if (tokens.length && tokens[tokens.length-1].type == "comment") { - return indent; - } - - if (state == "start" || state == "no_regex") { - var match = line.match(/^.*(?:\bcase\b.*\:|[\{\(\[])\s*$/); - if (match) { - indent += tab; - } - } else if (state == "doc-start") { - if (endState == "start" || endState == "no_regex") { - return ""; - } - var match = line.match(/^\s*(\/?)\*/); - if (match) { - if (match[1]) { - indent += " "; - } - indent += "* "; - } - } - - return indent; - }; - - this.checkOutdent = function(state, line, input) { - return this.$outdent.checkOutdent(line, input); - }; - - this.autoOutdent = function(state, doc, row) { - this.$outdent.autoOutdent(doc, row); - }; - - this.createWorker = function(session) { - var worker = new WorkerClient(["ace"], "ace/mode/javascript_worker", "JavaScriptWorker"); - worker.attachToDocument(session.getDocument()); - - worker.on("jslint", function(results) { - session.setAnnotations(results.data); - }); - - worker.on("terminate", function() { - session.clearAnnotations(); - }); - - return worker; - }; - - this.$id = "ace/mode/javascript"; -}).call(Mode.prototype); - -exports.Mode = Mode; -}); - -ace.define('ace/mode/javascript_highlight_rules', ['require', 'exports', 'module' , 'ace/lib/oop', 'ace/mode/doc_comment_highlight_rules', 'ace/mode/text_highlight_rules'], function(require, exports, module) { - - -var oop = require("../lib/oop"); -var DocCommentHighlightRules = require("./doc_comment_highlight_rules").DocCommentHighlightRules; -var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; - -var JavaScriptHighlightRules = function() { - var keywordMapper = this.createKeywordMapper({ - "variable.language": - "Array|Boolean|Date|Function|Iterator|Number|Object|RegExp|String|Proxy|" + // Constructors - "Namespace|QName|XML|XMLList|" + // E4X - "ArrayBuffer|Float32Array|Float64Array|Int16Array|Int32Array|Int8Array|" + - "Uint16Array|Uint32Array|Uint8Array|Uint8ClampedArray|" + - "Error|EvalError|InternalError|RangeError|ReferenceError|StopIteration|" + // Errors - "SyntaxError|TypeError|URIError|" + - "decodeURI|decodeURIComponent|encodeURI|encodeURIComponent|eval|isFinite|" + // Non-constructor functions - "isNaN|parseFloat|parseInt|" + - "JSON|Math|" + // Other - "this|arguments|prototype|window|document" , // Pseudo - "keyword": - "const|yield|import|get|set|" + - "break|case|catch|continue|default|delete|do|else|finally|for|function|" + - "if|in|instanceof|new|return|switch|throw|try|typeof|let|var|while|with|debugger|" + - "__parent__|__count__|escape|unescape|with|__proto__|" + - "class|enum|extends|super|export|implements|private|public|interface|package|protected|static", - "storage.type": - "const|let|var|function", - "constant.language": - "null|Infinity|NaN|undefined", - "support.function": - "alert", - "constant.language.boolean": "true|false" - }, "identifier"); - var kwBeforeRe = "case|do|else|finally|in|instanceof|return|throw|try|typeof|yield|void"; - var identifierRe = "[a-zA-Z\\$_\u00a1-\uffff][a-zA-Z\\d\\$_\u00a1-\uffff]*\\b"; - - var escapedRe = "\\\\(?:x[0-9a-fA-F]{2}|" + // hex - "u[0-9a-fA-F]{4}|" + // unicode - "[0-2][0-7]{0,2}|" + // oct - "3[0-6][0-7]?|" + // oct - "37[0-7]?|" + // oct - "[4-7][0-7]?|" + //oct - ".)"; - - this.$rules = { - "no_regex" : [ - { - token : "comment", - regex : "\\/\\/", - next : "line_comment" - }, - DocCommentHighlightRules.getStartRule("doc-start"), - { - token : "comment", // multi line comment - regex : /\/\*/, - next : "comment" - }, { - token : "string", - regex : "'(?=.)", - next : "qstring" - }, { - token : "string", - regex : '"(?=.)', - next : "qqstring" - }, { - token : "constant.numeric", // hex - regex : /0[xX][0-9a-fA-F]+\b/ - }, { - token : "constant.numeric", // float - regex : /[+-]?\d+(?:(?:\.\d*)?(?:[eE][+-]?\d+)?)?\b/ - }, { - token : [ - "storage.type", "punctuation.operator", "support.function", - "punctuation.operator", "entity.name.function", "text","keyword.operator" - ], - regex : "(" + identifierRe + ")(\\.)(prototype)(\\.)(" + identifierRe +")(\\s*)(=)", - next: "function_arguments" - }, { - token : [ - "storage.type", "punctuation.operator", "entity.name.function", "text", - "keyword.operator", "text", "storage.type", "text", "paren.lparen" - ], - regex : "(" + identifierRe + ")(\\.)(" + identifierRe +")(\\s*)(=)(\\s*)(function)(\\s*)(\\()", - next: "function_arguments" - }, { - token : [ - "entity.name.function", "text", "keyword.operator", "text", "storage.type", - "text", "paren.lparen" - ], - regex : "(" + identifierRe +")(\\s*)(=)(\\s*)(function)(\\s*)(\\()", - next: "function_arguments" - }, { - token : [ - "storage.type", "punctuation.operator", "entity.name.function", "text", - "keyword.operator", "text", - "storage.type", "text", "entity.name.function", "text", "paren.lparen" - ], - regex : "(" + identifierRe + ")(\\.)(" + identifierRe +")(\\s*)(=)(\\s*)(function)(\\s+)(\\w+)(\\s*)(\\()", - next: "function_arguments" - }, { - token : [ - "storage.type", "text", "entity.name.function", "text", "paren.lparen" - ], - regex : "(function)(\\s+)(" + identifierRe + ")(\\s*)(\\()", - next: "function_arguments" - }, { - token : [ - "entity.name.function", "text", "punctuation.operator", - "text", "storage.type", "text", "paren.lparen" - ], - regex : "(" + identifierRe + ")(\\s*)(:)(\\s*)(function)(\\s*)(\\()", - next: "function_arguments" - }, { - token : [ - "text", "text", "storage.type", "text", "paren.lparen" - ], - regex : "(:)(\\s*)(function)(\\s*)(\\()", - next: "function_arguments" - }, { - token : "keyword", - regex : "(?:" + kwBeforeRe + ")\\b", - next : "start" - }, { - token : ["punctuation.operator", "support.function"], - regex : /(\.)(s(?:h(?:ift|ow(?:Mod(?:elessDialog|alDialog)|Help))|croll(?:X|By(?:Pages|Lines)?|Y|To)?|t(?:op|rike)|i(?:n|zeToContent|debar|gnText)|ort|u(?:p|b(?:str(?:ing)?)?)|pli(?:ce|t)|e(?:nd|t(?:Re(?:sizable|questHeader)|M(?:i(?:nutes|lliseconds)|onth)|Seconds|Ho(?:tKeys|urs)|Year|Cursor|Time(?:out)?|Interval|ZOptions|Date|UTC(?:M(?:i(?:nutes|lliseconds)|onth)|Seconds|Hours|Date|FullYear)|FullYear|Active)|arch)|qrt|lice|avePreferences|mall)|h(?:ome|andleEvent)|navigate|c(?:har(?:CodeAt|At)|o(?:s|n(?:cat|textual|firm)|mpile)|eil|lear(?:Timeout|Interval)?|a(?:ptureEvents|ll)|reate(?:StyleSheet|Popup|EventObject))|t(?:o(?:GMTString|S(?:tring|ource)|U(?:TCString|pperCase)|Lo(?:caleString|werCase))|est|a(?:n|int(?:Enabled)?))|i(?:s(?:NaN|Finite)|ndexOf|talics)|d(?:isableExternalCapture|ump|etachEvent)|u(?:n(?:shift|taint|escape|watch)|pdateCommands)|j(?:oin|avaEnabled)|p(?:o(?:p|w)|ush|lugins.refresh|a(?:ddings|rse(?:Int|Float)?)|r(?:int|ompt|eference))|e(?:scape|nableExternalCapture|val|lementFromPoint|x(?:p|ec(?:Script|Command)?))|valueOf|UTC|queryCommand(?:State|Indeterm|Enabled|Value)|f(?:i(?:nd|le(?:ModifiedDate|Size|CreatedDate|UpdatedDate)|xed)|o(?:nt(?:size|color)|rward)|loor|romCharCode)|watch|l(?:ink|o(?:ad|g)|astIndexOf)|a(?:sin|nchor|cos|t(?:tachEvent|ob|an(?:2)?)|pply|lert|b(?:s|ort))|r(?:ou(?:nd|teEvents)|e(?:size(?:By|To)|calc|turnValue|place|verse|l(?:oad|ease(?:Capture|Events)))|andom)|g(?:o|et(?:ResponseHeader|M(?:i(?:nutes|lliseconds)|onth)|Se(?:conds|lection)|Hours|Year|Time(?:zoneOffset)?|Da(?:y|te)|UTC(?:M(?:i(?:nutes|lliseconds)|onth)|Seconds|Hours|Da(?:y|te)|FullYear)|FullYear|A(?:ttention|llResponseHeaders)))|m(?:in|ove(?:B(?:y|elow)|To(?:Absolute)?|Above)|ergeAttributes|a(?:tch|rgins|x))|b(?:toa|ig|o(?:ld|rderWidths)|link|ack))\b(?=\()/ - }, { - token : ["punctuation.operator", "support.function.dom"], - regex : /(\.)(s(?:ub(?:stringData|mit)|plitText|e(?:t(?:NamedItem|Attribute(?:Node)?)|lect))|has(?:ChildNodes|Feature)|namedItem|c(?:l(?:ick|o(?:se|neNode))|reate(?:C(?:omment|DATASection|aption)|T(?:Head|extNode|Foot)|DocumentFragment|ProcessingInstruction|E(?:ntityReference|lement)|Attribute))|tabIndex|i(?:nsert(?:Row|Before|Cell|Data)|tem)|open|delete(?:Row|C(?:ell|aption)|T(?:Head|Foot)|Data)|focus|write(?:ln)?|a(?:dd|ppend(?:Child|Data))|re(?:set|place(?:Child|Data)|move(?:NamedItem|Child|Attribute(?:Node)?)?)|get(?:NamedItem|Element(?:sBy(?:Name|TagName)|ById)|Attribute(?:Node)?)|blur)\b(?=\()/ - }, { - token : ["punctuation.operator", "support.constant"], - regex : /(\.)(s(?:ystemLanguage|cr(?:ipts|ollbars|een(?:X|Y|Top|Left))|t(?:yle(?:Sheets)?|atus(?:Text|bar)?)|ibling(?:Below|Above)|ource|uffixes|e(?:curity(?:Policy)?|l(?:ection|f)))|h(?:istory|ost(?:name)?|as(?:h|Focus))|y|X(?:MLDocument|SLDocument)|n(?:ext|ame(?:space(?:s|URI)|Prop))|M(?:IN_VALUE|AX_VALUE)|c(?:haracterSet|o(?:n(?:structor|trollers)|okieEnabled|lorDepth|mp(?:onents|lete))|urrent|puClass|l(?:i(?:p(?:boardData)?|entInformation)|osed|asses)|alle(?:e|r)|rypto)|t(?:o(?:olbar|p)|ext(?:Transform|Indent|Decoration|Align)|ags)|SQRT(?:1_2|2)|i(?:n(?:ner(?:Height|Width)|put)|ds|gnoreCase)|zIndex|o(?:scpu|n(?:readystatechange|Line)|uter(?:Height|Width)|p(?:sProfile|ener)|ffscreenBuffering)|NEGATIVE_INFINITY|d(?:i(?:splay|alog(?:Height|Top|Width|Left|Arguments)|rectories)|e(?:scription|fault(?:Status|Ch(?:ecked|arset)|View)))|u(?:ser(?:Profile|Language|Agent)|n(?:iqueID|defined)|pdateInterval)|_content|p(?:ixelDepth|ort|ersonalbar|kcs11|l(?:ugins|atform)|a(?:thname|dding(?:Right|Bottom|Top|Left)|rent(?:Window|Layer)?|ge(?:X(?:Offset)?|Y(?:Offset)?))|r(?:o(?:to(?:col|type)|duct(?:Sub)?|mpter)|e(?:vious|fix)))|e(?:n(?:coding|abledPlugin)|x(?:ternal|pando)|mbeds)|v(?:isibility|endor(?:Sub)?|Linkcolor)|URLUnencoded|P(?:I|OSITIVE_INFINITY)|f(?:ilename|o(?:nt(?:Size|Family|Weight)|rmName)|rame(?:s|Element)|gColor)|E|whiteSpace|l(?:i(?:stStyleType|n(?:eHeight|kColor))|o(?:ca(?:tion(?:bar)?|lName)|wsrc)|e(?:ngth|ft(?:Context)?)|a(?:st(?:M(?:odified|atch)|Index|Paren)|yer(?:s|X)|nguage))|a(?:pp(?:MinorVersion|Name|Co(?:deName|re)|Version)|vail(?:Height|Top|Width|Left)|ll|r(?:ity|guments)|Linkcolor|bove)|r(?:ight(?:Context)?|e(?:sponse(?:XML|Text)|adyState))|global|x|m(?:imeTypes|ultiline|enubar|argin(?:Right|Bottom|Top|Left))|L(?:N(?:10|2)|OG(?:10E|2E))|b(?:o(?:ttom|rder(?:Width|RightWidth|BottomWidth|Style|Color|TopWidth|LeftWidth))|ufferDepth|elow|ackground(?:Color|Image)))\b/ - }, { - token : ["storage.type", "punctuation.operator", "support.function.firebug"], - regex : /(console)(\.)(warn|info|log|error|time|timeEnd|assert)\b/ - }, { - token : keywordMapper, - regex : identifierRe - }, { - token : "keyword.operator", - regex : /--|\+\+|[!$%&*+\-~]|===|==|=|!=|!==|<=|>=|<<=|>>=|>>>=|<>|<|>|!|&&|\|\||\?\:|\*=|%=|\+=|\-=|&=|\^=/, - next : "start" - }, { - token : "punctuation.operator", - regex : /\?|\:|\,|\;|\./, - next : "start" - }, { - token : "paren.lparen", - regex : /[\[({]/, - next : "start" - }, { - token : "paren.rparen", - regex : /[\])}]/ - }, { - token : "keyword.operator", - regex : /\/=?/, - next : "start" - }, { - token: "comment", - regex: /^#!.*$/ - } - ], - "start": [ - DocCommentHighlightRules.getStartRule("doc-start"), - { - token : "comment", // multi line comment - regex : "\\/\\*", - next : "comment_regex_allowed" - }, { - token : "comment", - regex : "\\/\\/", - next : "line_comment_regex_allowed" - }, { - token: "string.regexp", - regex: "\\/", - next: "regex" - }, { - token : "text", - regex : "\\s+|^$", - next : "start" - }, { - token: "empty", - regex: "", - next: "no_regex" - } - ], - "regex": [ - { - token: "regexp.keyword.operator", - regex: "\\\\(?:u[\\da-fA-F]{4}|x[\\da-fA-F]{2}|.)" - }, { - token: "string.regexp", - regex: "/[sxngimy]*", - next: "no_regex" - }, { - token : "invalid", - regex: /\{\d+\b,?\d*\}[+*]|[+*$^?][+*]|[$^][?]|\?{3,}/ - }, { - token : "constant.language.escape", - regex: /\(\?[:=!]|\)|\{\d+\b,?\d*\}|[+*]\?|[()$^+*?.]/ - }, { - token : "constant.language.delimiter", - regex: /\|/ - }, { - token: "constant.language.escape", - regex: /\[\^?/, - next: "regex_character_class" - }, { - token: "empty", - regex: "$", - next: "no_regex" - }, { - defaultToken: "string.regexp" - } - ], - "regex_character_class": [ - { - token: "regexp.keyword.operator", - regex: "\\\\(?:u[\\da-fA-F]{4}|x[\\da-fA-F]{2}|.)" - }, { - token: "constant.language.escape", - regex: "]", - next: "regex" - }, { - token: "constant.language.escape", - regex: "-" - }, { - token: "empty", - regex: "$", - next: "no_regex" - }, { - defaultToken: "string.regexp.charachterclass" - } - ], - "function_arguments": [ - { - token: "variable.parameter", - regex: identifierRe - }, { - token: "punctuation.operator", - regex: "[, ]+" - }, { - token: "punctuation.operator", - regex: "$" - }, { - token: "empty", - regex: "", - next: "no_regex" - } - ], - "comment_regex_allowed" : [ - {token : "comment", regex : "\\*\\/", next : "start"}, - {defaultToken : "comment"} - ], - "comment" : [ - {token : "comment", regex : "\\*\\/", next : "no_regex"}, - {defaultToken : "comment"} - ], - "line_comment_regex_allowed" : [ - {token : "comment", regex : "$|^", next : "start"}, - {defaultToken : "comment"} - ], - "line_comment" : [ - {token : "comment", regex : "$|^", next : "no_regex"}, - {defaultToken : "comment"} - ], - "qqstring" : [ - { - token : "constant.language.escape", - regex : escapedRe - }, { - token : "string", - regex : "\\\\$", - next : "qqstring" - }, { - token : "string", - regex : '"|$', - next : "no_regex" - }, { - defaultToken: "string" - } - ], - "qstring" : [ - { - token : "constant.language.escape", - regex : escapedRe - }, { - token : "string", - regex : "\\\\$", - next : "qstring" - }, { - token : "string", - regex : "'|$", - next : "no_regex" - }, { - defaultToken: "string" - } - ] - }; - - this.embedRules(DocCommentHighlightRules, "doc-", - [ DocCommentHighlightRules.getEndRule("no_regex") ]); -}; - -oop.inherits(JavaScriptHighlightRules, TextHighlightRules); - -exports.JavaScriptHighlightRules = JavaScriptHighlightRules; -}); - -ace.define('ace/mode/doc_comment_highlight_rules', ['require', 'exports', 'module' , 'ace/lib/oop', 'ace/mode/text_highlight_rules'], function(require, exports, module) { - - -var oop = require("../lib/oop"); -var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; - -var DocCommentHighlightRules = function() { - - this.$rules = { - "start" : [ { - token : "comment.doc.tag", - regex : "@[\\w\\d_]+" // TODO: fix email addresses - }, { - token : "comment.doc.tag", - regex : "\\bTODO\\b" - }, { - defaultToken : "comment.doc" - }] - }; -}; - -oop.inherits(DocCommentHighlightRules, TextHighlightRules); - -DocCommentHighlightRules.getStartRule = function(start) { - return { - token : "comment.doc", // doc comment - regex : "\\/\\*(?=\\*)", - next : start - }; -}; - -DocCommentHighlightRules.getEndRule = function (start) { - return { - token : "comment.doc", // closing comment - regex : "\\*\\/", - next : start - }; -}; - - -exports.DocCommentHighlightRules = DocCommentHighlightRules; - -}); - -ace.define('ace/mode/matching_brace_outdent', ['require', 'exports', 'module' , 'ace/range'], function(require, exports, module) { - - -var Range = require("../range").Range; - -var MatchingBraceOutdent = function() {}; - -(function() { - - this.checkOutdent = function(line, input) { - if (! /^\s+$/.test(line)) - return false; - - return /^\s*\}/.test(input); - }; - - this.autoOutdent = function(doc, row) { - var line = doc.getLine(row); - var match = line.match(/^(\s*\})/); - - if (!match) return 0; - - var column = match[1].length; - var openBracePos = doc.findMatchingBracket({row: row, column: column}); - - if (!openBracePos || openBracePos.row == row) return 0; - - var indent = this.$getIndent(doc.getLine(openBracePos.row)); - doc.replace(new Range(row, 0, row, column-1), indent); - }; - - this.$getIndent = function(line) { - return line.match(/^\s*/)[0]; - }; - -}).call(MatchingBraceOutdent.prototype); - -exports.MatchingBraceOutdent = MatchingBraceOutdent; -}); - -ace.define('ace/mode/behaviour/cstyle', ['require', 'exports', 'module' , 'ace/lib/oop', 'ace/mode/behaviour', 'ace/token_iterator', 'ace/lib/lang'], function(require, exports, module) { - - -var oop = require("../../lib/oop"); -var Behaviour = require("../behaviour").Behaviour; -var TokenIterator = require("../../token_iterator").TokenIterator; -var lang = require("../../lib/lang"); - -var SAFE_INSERT_IN_TOKENS = - ["text", "paren.rparen", "punctuation.operator"]; -var SAFE_INSERT_BEFORE_TOKENS = - ["text", "paren.rparen", "punctuation.operator", "comment"]; - - -var autoInsertedBrackets = 0; -var autoInsertedRow = -1; -var autoInsertedLineEnd = ""; -var maybeInsertedBrackets = 0; -var maybeInsertedRow = -1; -var maybeInsertedLineStart = ""; -var maybeInsertedLineEnd = ""; - -var CstyleBehaviour = function () { - - CstyleBehaviour.isSaneInsertion = function(editor, session) { - var cursor = editor.getCursorPosition(); - var iterator = new TokenIterator(session, cursor.row, cursor.column); - if (!this.$matchTokenType(iterator.getCurrentToken() || "text", SAFE_INSERT_IN_TOKENS)) { - var iterator2 = new TokenIterator(session, cursor.row, cursor.column + 1); - if (!this.$matchTokenType(iterator2.getCurrentToken() || "text", SAFE_INSERT_IN_TOKENS)) - return false; - } - iterator.stepForward(); - return iterator.getCurrentTokenRow() !== cursor.row || - this.$matchTokenType(iterator.getCurrentToken() || "text", SAFE_INSERT_BEFORE_TOKENS); - }; - - CstyleBehaviour.$matchTokenType = function(token, types) { - return types.indexOf(token.type || token) > -1; - }; - - CstyleBehaviour.recordAutoInsert = function(editor, session, bracket) { - var cursor = editor.getCursorPosition(); - var line = session.doc.getLine(cursor.row); - if (!this.isAutoInsertedClosing(cursor, line, autoInsertedLineEnd[0])) - autoInsertedBrackets = 0; - autoInsertedRow = cursor.row; - autoInsertedLineEnd = bracket + line.substr(cursor.column); - autoInsertedBrackets++; - }; - - CstyleBehaviour.recordMaybeInsert = function(editor, session, bracket) { - var cursor = editor.getCursorPosition(); - var line = session.doc.getLine(cursor.row); - if (!this.isMaybeInsertedClosing(cursor, line)) - maybeInsertedBrackets = 0; - maybeInsertedRow = cursor.row; - maybeInsertedLineStart = line.substr(0, cursor.column) + bracket; - maybeInsertedLineEnd = line.substr(cursor.column); - maybeInsertedBrackets++; - }; - - CstyleBehaviour.isAutoInsertedClosing = function(cursor, line, bracket) { - return autoInsertedBrackets > 0 && - cursor.row === autoInsertedRow && - bracket === autoInsertedLineEnd[0] && - line.substr(cursor.column) === autoInsertedLineEnd; - }; - - CstyleBehaviour.isMaybeInsertedClosing = function(cursor, line) { - return maybeInsertedBrackets > 0 && - cursor.row === maybeInsertedRow && - line.substr(cursor.column) === maybeInsertedLineEnd && - line.substr(0, cursor.column) == maybeInsertedLineStart; - }; - - CstyleBehaviour.popAutoInsertedClosing = function() { - autoInsertedLineEnd = autoInsertedLineEnd.substr(1); - autoInsertedBrackets--; - }; - - CstyleBehaviour.clearMaybeInsertedClosing = function() { - maybeInsertedBrackets = 0; - maybeInsertedRow = -1; - }; - - this.add("braces", "insertion", function (state, action, editor, session, text) { - var cursor = editor.getCursorPosition(); - var line = session.doc.getLine(cursor.row); - if (text == '{') { - var selection = editor.getSelectionRange(); - var selected = session.doc.getTextRange(selection); - if (selected !== "" && selected !== "{" && editor.getWrapBehavioursEnabled()) { - return { - text: '{' + selected + '}', - selection: false - }; - } else if (CstyleBehaviour.isSaneInsertion(editor, session)) { - if (/[\]\}\)]/.test(line[cursor.column]) || editor.inMultiSelectMode) { - CstyleBehaviour.recordAutoInsert(editor, session, "}"); - return { - text: '{}', - selection: [1, 1] - }; - } else { - CstyleBehaviour.recordMaybeInsert(editor, session, "{"); - return { - text: '{', - selection: [1, 1] - }; - } - } - } else if (text == '}') { - var rightChar = line.substring(cursor.column, cursor.column + 1); - if (rightChar == '}') { - var matching = session.$findOpeningBracket('}', {column: cursor.column + 1, row: cursor.row}); - if (matching !== null && CstyleBehaviour.isAutoInsertedClosing(cursor, line, text)) { - CstyleBehaviour.popAutoInsertedClosing(); - return { - text: '', - selection: [1, 1] - }; - } - } - } else if (text == "\n" || text == "\r\n") { - var closing = ""; - if (CstyleBehaviour.isMaybeInsertedClosing(cursor, line)) { - closing = lang.stringRepeat("}", maybeInsertedBrackets); - CstyleBehaviour.clearMaybeInsertedClosing(); - } - var rightChar = line.substring(cursor.column, cursor.column + 1); - if (rightChar === '}') { - var openBracePos = session.findMatchingBracket({row: cursor.row, column: cursor.column+1}, '}'); - if (!openBracePos) - return null; - var next_indent = this.$getIndent(session.getLine(openBracePos.row)); - } else if (closing) { - var next_indent = this.$getIndent(line); - } else { - return; - } - var indent = next_indent + session.getTabString(); - - return { - text: '\n' + indent + '\n' + next_indent + closing, - selection: [1, indent.length, 1, indent.length] - }; - } else { - CstyleBehaviour.clearMaybeInsertedClosing(); - } - }); - - this.add("braces", "deletion", function (state, action, editor, session, range) { - var selected = session.doc.getTextRange(range); - if (!range.isMultiLine() && selected == '{') { - var line = session.doc.getLine(range.start.row); - var rightChar = line.substring(range.end.column, range.end.column + 1); - if (rightChar == '}') { - range.end.column++; - return range; - } else { - maybeInsertedBrackets--; - } - } - }); - - this.add("parens", "insertion", function (state, action, editor, session, text) { - if (text == '(') { - var selection = editor.getSelectionRange(); - var selected = session.doc.getTextRange(selection); - if (selected !== "" && editor.getWrapBehavioursEnabled()) { - return { - text: '(' + selected + ')', - selection: false - }; - } else if (CstyleBehaviour.isSaneInsertion(editor, session)) { - CstyleBehaviour.recordAutoInsert(editor, session, ")"); - return { - text: '()', - selection: [1, 1] - }; - } - } else if (text == ')') { - var cursor = editor.getCursorPosition(); - var line = session.doc.getLine(cursor.row); - var rightChar = line.substring(cursor.column, cursor.column + 1); - if (rightChar == ')') { - var matching = session.$findOpeningBracket(')', {column: cursor.column + 1, row: cursor.row}); - if (matching !== null && CstyleBehaviour.isAutoInsertedClosing(cursor, line, text)) { - CstyleBehaviour.popAutoInsertedClosing(); - return { - text: '', - selection: [1, 1] - }; - } - } - } - }); - - this.add("parens", "deletion", function (state, action, editor, session, range) { - var selected = session.doc.getTextRange(range); - if (!range.isMultiLine() && selected == '(') { - var line = session.doc.getLine(range.start.row); - var rightChar = line.substring(range.start.column + 1, range.start.column + 2); - if (rightChar == ')') { - range.end.column++; - return range; - } - } - }); - - this.add("brackets", "insertion", function (state, action, editor, session, text) { - if (text == '[') { - var selection = editor.getSelectionRange(); - var selected = session.doc.getTextRange(selection); - if (selected !== "" && editor.getWrapBehavioursEnabled()) { - return { - text: '[' + selected + ']', - selection: false - }; - } else if (CstyleBehaviour.isSaneInsertion(editor, session)) { - CstyleBehaviour.recordAutoInsert(editor, session, "]"); - return { - text: '[]', - selection: [1, 1] - }; - } - } else if (text == ']') { - var cursor = editor.getCursorPosition(); - var line = session.doc.getLine(cursor.row); - var rightChar = line.substring(cursor.column, cursor.column + 1); - if (rightChar == ']') { - var matching = session.$findOpeningBracket(']', {column: cursor.column + 1, row: cursor.row}); - if (matching !== null && CstyleBehaviour.isAutoInsertedClosing(cursor, line, text)) { - CstyleBehaviour.popAutoInsertedClosing(); - return { - text: '', - selection: [1, 1] - }; - } - } - } - }); - - this.add("brackets", "deletion", function (state, action, editor, session, range) { - var selected = session.doc.getTextRange(range); - if (!range.isMultiLine() && selected == '[') { - var line = session.doc.getLine(range.start.row); - var rightChar = line.substring(range.start.column + 1, range.start.column + 2); - if (rightChar == ']') { - range.end.column++; - return range; - } - } - }); - - this.add("string_dquotes", "insertion", function (state, action, editor, session, text) { - if (text == '"' || text == "'") { - var quote = text; - var selection = editor.getSelectionRange(); - var selected = session.doc.getTextRange(selection); - if (selected !== "" && selected !== "'" && selected != '"' && editor.getWrapBehavioursEnabled()) { - return { - text: quote + selected + quote, - selection: false - }; - } else { - var cursor = editor.getCursorPosition(); - var line = session.doc.getLine(cursor.row); - var leftChar = line.substring(cursor.column-1, cursor.column); - if (leftChar == '\\') { - return null; - } - var tokens = session.getTokens(selection.start.row); - var col = 0, token; - var quotepos = -1; // Track whether we're inside an open quote. - - for (var x = 0; x < tokens.length; x++) { - token = tokens[x]; - if (token.type == "string") { - quotepos = -1; - } else if (quotepos < 0) { - quotepos = token.value.indexOf(quote); - } - if ((token.value.length + col) > selection.start.column) { - break; - } - col += tokens[x].value.length; - } - if (!token || (quotepos < 0 && token.type !== "comment" && (token.type !== "string" || ((selection.start.column !== token.value.length+col-1) && token.value.lastIndexOf(quote) === token.value.length-1)))) { - if (!CstyleBehaviour.isSaneInsertion(editor, session)) - return; - return { - text: quote + quote, - selection: [1,1] - }; - } else if (token && token.type === "string") { - var rightChar = line.substring(cursor.column, cursor.column + 1); - if (rightChar == quote) { - return { - text: '', - selection: [1, 1] - }; - } - } - } - } - }); - - this.add("string_dquotes", "deletion", function (state, action, editor, session, range) { - var selected = session.doc.getTextRange(range); - if (!range.isMultiLine() && (selected == '"' || selected == "'")) { - var line = session.doc.getLine(range.start.row); - var rightChar = line.substring(range.start.column + 1, range.start.column + 2); - if (rightChar == selected) { - range.end.column++; - return range; - } - } - }); - -}; - -oop.inherits(CstyleBehaviour, Behaviour); - -exports.CstyleBehaviour = CstyleBehaviour; -}); - -ace.define('ace/mode/folding/cstyle', ['require', 'exports', 'module' , 'ace/lib/oop', 'ace/range', 'ace/mode/folding/fold_mode'], function(require, exports, module) { - - -var oop = require("../../lib/oop"); -var Range = require("../../range").Range; -var BaseFoldMode = require("./fold_mode").FoldMode; - -var FoldMode = exports.FoldMode = function(commentRegex) { - if (commentRegex) { - this.foldingStartMarker = new RegExp( - this.foldingStartMarker.source.replace(/\|[^|]*?$/, "|" + commentRegex.start) - ); - this.foldingStopMarker = new RegExp( - this.foldingStopMarker.source.replace(/\|[^|]*?$/, "|" + commentRegex.end) - ); - } -}; -oop.inherits(FoldMode, BaseFoldMode); - -(function() { - - this.foldingStartMarker = /(\{|\[)[^\}\]]*$|^\s*(\/\*)/; - this.foldingStopMarker = /^[^\[\{]*(\}|\])|^[\s\*]*(\*\/)/; - - this.getFoldWidgetRange = function(session, foldStyle, row, forceMultiline) { - var line = session.getLine(row); - var match = line.match(this.foldingStartMarker); - if (match) { - var i = match.index; - - if (match[1]) - return this.openingBracketBlock(session, match[1], row, i); - - var range = session.getCommentFoldRange(row, i + match[0].length, 1); - - if (range && !range.isMultiLine()) { - if (forceMultiline) { - range = this.getSectionRange(session, row); - } else if (foldStyle != "all") - range = null; - } - - return range; - } - - if (foldStyle === "markbegin") - return; - - var match = line.match(this.foldingStopMarker); - if (match) { - var i = match.index + match[0].length; - - if (match[1]) - return this.closingBracketBlock(session, match[1], row, i); - - return session.getCommentFoldRange(row, i, -1); - } - }; - - this.getSectionRange = function(session, row) { - var line = session.getLine(row); - var startIndent = line.search(/\S/); - var startRow = row; - var startColumn = line.length; - row = row + 1; - var endRow = row; - var maxRow = session.getLength(); - while (++row < maxRow) { - line = session.getLine(row); - var indent = line.search(/\S/); - if (indent === -1) - continue; - if (startIndent > indent) - break; - var subRange = this.getFoldWidgetRange(session, "all", row); - - if (subRange) { - if (subRange.start.row <= startRow) { - break; - } else if (subRange.isMultiLine()) { - row = subRange.end.row; - } else if (startIndent == indent) { - break; - } - } - endRow = row; - } - - return new Range(startRow, startColumn, endRow, session.getLine(endRow).length); - }; - -}).call(FoldMode.prototype); - -}); - -ace.define('ace/mode/css', ['require', 'exports', 'module' , 'ace/lib/oop', 'ace/mode/text', 'ace/tokenizer', 'ace/mode/css_highlight_rules', 'ace/mode/matching_brace_outdent', 'ace/worker/worker_client', 'ace/mode/behaviour/css', 'ace/mode/folding/cstyle'], function(require, exports, module) { - - -var oop = require("../lib/oop"); -var TextMode = require("./text").Mode; -var Tokenizer = require("../tokenizer").Tokenizer; -var CssHighlightRules = require("./css_highlight_rules").CssHighlightRules; -var MatchingBraceOutdent = require("./matching_brace_outdent").MatchingBraceOutdent; -var WorkerClient = require("../worker/worker_client").WorkerClient; -var CssBehaviour = require("./behaviour/css").CssBehaviour; -var CStyleFoldMode = require("./folding/cstyle").FoldMode; - -var Mode = function() { - this.HighlightRules = CssHighlightRules; - this.$outdent = new MatchingBraceOutdent(); - this.$behaviour = new CssBehaviour(); - this.foldingRules = new CStyleFoldMode(); -}; -oop.inherits(Mode, TextMode); - -(function() { - - this.foldingRules = "cStyle"; - this.blockComment = {start: "/*", end: "*/"}; - - this.getNextLineIndent = function(state, line, tab) { - var indent = this.$getIndent(line); - var tokens = this.getTokenizer().getLineTokens(line, state).tokens; - if (tokens.length && tokens[tokens.length-1].type == "comment") { - return indent; - } - - var match = line.match(/^.*\{\s*$/); - if (match) { - indent += tab; - } - - return indent; - }; - - this.checkOutdent = function(state, line, input) { - return this.$outdent.checkOutdent(line, input); - }; - - this.autoOutdent = function(state, doc, row) { - this.$outdent.autoOutdent(doc, row); - }; - - this.createWorker = function(session) { - var worker = new WorkerClient(["ace"], "ace/mode/css_worker", "Worker"); - worker.attachToDocument(session.getDocument()); - - worker.on("csslint", function(e) { - session.setAnnotations(e.data); - }); - - worker.on("terminate", function() { - session.clearAnnotations(); - }); - - return worker; - }; - - this.$id = "ace/mode/css"; -}).call(Mode.prototype); - -exports.Mode = Mode; - -}); - -ace.define('ace/mode/css_highlight_rules', ['require', 'exports', 'module' , 'ace/lib/oop', 'ace/lib/lang', 'ace/mode/text_highlight_rules'], function(require, exports, module) { - - -var oop = require("../lib/oop"); -var lang = require("../lib/lang"); -var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; -var supportType = exports.supportType = "animation-fill-mode|alignment-adjust|alignment-baseline|animation-delay|animation-direction|animation-duration|animation-iteration-count|animation-name|animation-play-state|animation-timing-function|animation|appearance|azimuth|backface-visibility|background-attachment|background-break|background-clip|background-color|background-image|background-origin|background-position|background-repeat|background-size|background|baseline-shift|binding|bleed|bookmark-label|bookmark-level|bookmark-state|bookmark-target|border-bottom|border-bottom-color|border-bottom-left-radius|border-bottom-right-radius|border-bottom-style|border-bottom-width|border-collapse|border-color|border-image|border-image-outset|border-image-repeat|border-image-slice|border-image-source|border-image-width|border-left|border-left-color|border-left-style|border-left-width|border-radius|border-right|border-right-color|border-right-style|border-right-width|border-spacing|border-style|border-top|border-top-color|border-top-left-radius|border-top-right-radius|border-top-style|border-top-width|border-width|border|bottom|box-align|box-decoration-break|box-direction|box-flex-group|box-flex|box-lines|box-ordinal-group|box-orient|box-pack|box-shadow|box-sizing|break-after|break-before|break-inside|caption-side|clear|clip|color-profile|color|column-count|column-fill|column-gap|column-rule|column-rule-color|column-rule-style|column-rule-width|column-span|column-width|columns|content|counter-increment|counter-reset|crop|cue-after|cue-before|cue|cursor|direction|display|dominant-baseline|drop-initial-after-adjust|drop-initial-after-align|drop-initial-before-adjust|drop-initial-before-align|drop-initial-size|drop-initial-value|elevation|empty-cells|fit|fit-position|float-offset|float|font-family|font-size|font-size-adjust|font-stretch|font-style|font-variant|font-weight|font|grid-columns|grid-rows|hanging-punctuation|height|hyphenate-after|hyphenate-before|hyphenate-character|hyphenate-lines|hyphenate-resource|hyphens|icon|image-orientation|image-rendering|image-resolution|inline-box-align|left|letter-spacing|line-height|line-stacking-ruby|line-stacking-shift|line-stacking-strategy|line-stacking|list-style-image|list-style-position|list-style-type|list-style|margin-bottom|margin-left|margin-right|margin-top|margin|mark-after|mark-before|mark|marks|marquee-direction|marquee-play-count|marquee-speed|marquee-style|max-height|max-width|min-height|min-width|move-to|nav-down|nav-index|nav-left|nav-right|nav-up|opacity|orphans|outline-color|outline-offset|outline-style|outline-width|outline|overflow-style|overflow-x|overflow-y|overflow|padding-bottom|padding-left|padding-right|padding-top|padding|page-break-after|page-break-before|page-break-inside|page-policy|page|pause-after|pause-before|pause|perspective-origin|perspective|phonemes|pitch-range|pitch|play-during|pointer-events|position|presentation-level|punctuation-trim|quotes|rendering-intent|resize|rest-after|rest-before|rest|richness|right|rotation-point|rotation|ruby-align|ruby-overhang|ruby-position|ruby-span|size|speak-header|speak-numeral|speak-punctuation|speak|speech-rate|stress|string-set|table-layout|target-name|target-new|target-position|target|text-align-last|text-align|text-decoration|text-emphasis|text-height|text-indent|text-justify|text-outline|text-shadow|text-transform|text-wrap|top|transform-origin|transform-style|transform|transition-delay|transition-duration|transition-property|transition-timing-function|transition|unicode-bidi|vertical-align|visibility|voice-balance|voice-duration|voice-family|voice-pitch-range|voice-pitch|voice-rate|voice-stress|voice-volume|volume|white-space-collapse|white-space|widows|width|word-break|word-spacing|word-wrap|z-index"; -var supportFunction = exports.supportFunction = "rgb|rgba|url|attr|counter|counters"; -var supportConstant = exports.supportConstant = "absolute|after-edge|after|all-scroll|all|alphabetic|always|antialiased|armenian|auto|avoid-column|avoid-page|avoid|balance|baseline|before-edge|before|below|bidi-override|block-line-height|block|bold|bolder|border-box|both|bottom|box|break-all|break-word|capitalize|caps-height|caption|center|central|char|circle|cjk-ideographic|clone|close-quote|col-resize|collapse|column|consider-shifts|contain|content-box|cover|crosshair|cubic-bezier|dashed|decimal-leading-zero|decimal|default|disabled|disc|disregard-shifts|distribute-all-lines|distribute-letter|distribute-space|distribute|dotted|double|e-resize|ease-in|ease-in-out|ease-out|ease|ellipsis|end|exclude-ruby|fill|fixed|georgian|glyphs|grid-height|groove|hand|hanging|hebrew|help|hidden|hiragana-iroha|hiragana|horizontal|icon|ideograph-alpha|ideograph-numeric|ideograph-parenthesis|ideograph-space|ideographic|inactive|include-ruby|inherit|initial|inline-block|inline-box|inline-line-height|inline-table|inline|inset|inside|inter-ideograph|inter-word|invert|italic|justify|katakana-iroha|katakana|keep-all|last|left|lighter|line-edge|line-through|line|linear|list-item|local|loose|lower-alpha|lower-greek|lower-latin|lower-roman|lowercase|lr-tb|ltr|mathematical|max-height|max-size|medium|menu|message-box|middle|move|n-resize|ne-resize|newspaper|no-change|no-close-quote|no-drop|no-open-quote|no-repeat|none|normal|not-allowed|nowrap|nw-resize|oblique|open-quote|outset|outside|overline|padding-box|page|pointer|pre-line|pre-wrap|pre|preserve-3d|progress|relative|repeat-x|repeat-y|repeat|replaced|reset-size|ridge|right|round|row-resize|rtl|s-resize|scroll|se-resize|separate|slice|small-caps|small-caption|solid|space|square|start|static|status-bar|step-end|step-start|steps|stretch|strict|sub|super|sw-resize|table-caption|table-cell|table-column-group|table-column|table-footer-group|table-header-group|table-row-group|table-row|table|tb-rl|text-after-edge|text-before-edge|text-bottom|text-size|text-top|text|thick|thin|transparent|underline|upper-alpha|upper-latin|upper-roman|uppercase|use-script|vertical-ideographic|vertical-text|visible|w-resize|wait|whitespace|z-index|zero"; -var supportConstantColor = exports.supportConstantColor = "aqua|black|blue|fuchsia|gray|green|lime|maroon|navy|olive|orange|purple|red|silver|teal|white|yellow"; -var supportConstantFonts = exports.supportConstantFonts = "arial|century|comic|courier|garamond|georgia|helvetica|impact|lucida|symbol|system|tahoma|times|trebuchet|utopia|verdana|webdings|sans-serif|serif|monospace"; - -var numRe = exports.numRe = "\\-?(?:(?:[0-9]+)|(?:[0-9]*\\.[0-9]+))"; -var pseudoElements = exports.pseudoElements = "(\\:+)\\b(after|before|first-letter|first-line|moz-selection|selection)\\b"; -var pseudoClasses = exports.pseudoClasses = "(:)\\b(active|checked|disabled|empty|enabled|first-child|first-of-type|focus|hover|indeterminate|invalid|last-child|last-of-type|link|not|nth-child|nth-last-child|nth-last-of-type|nth-of-type|only-child|only-of-type|required|root|target|valid|visited)\\b"; - -var CssHighlightRules = function() { - - var keywordMapper = this.createKeywordMapper({ - "support.function": supportFunction, - "support.constant": supportConstant, - "support.type": supportType, - "support.constant.color": supportConstantColor, - "support.constant.fonts": supportConstantFonts - }, "text", true); - - this.$rules = { - "start" : [{ - token : "comment", // multi line comment - regex : "\\/\\*", - push : "comment" - }, { - token: "paren.lparen", - regex: "\\{", - push: "ruleset" - }, { - token: "string", - regex: "@.*?{", - push: "media" - }, { - token: "keyword", - regex: "#[a-z0-9-_]+" - }, { - token: "variable", - regex: "\\.[a-z0-9-_]+" - }, { - token: "string", - regex: ":[a-z0-9-_]+" - }, { - token: "constant", - regex: "[a-z0-9-_]+" - }, { - caseInsensitive: true - }], - - "media" : [{ - token : "comment", // multi line comment - regex : "\\/\\*", - push : "comment" - }, { - token: "paren.lparen", - regex: "\\{", - push: "ruleset" - }, { - token: "string", - regex: "\\}", - next: "pop" - }, { - token: "keyword", - regex: "#[a-z0-9-_]+" - }, { - token: "variable", - regex: "\\.[a-z0-9-_]+" - }, { - token: "string", - regex: ":[a-z0-9-_]+" - }, { - token: "constant", - regex: "[a-z0-9-_]+" - }, { - caseInsensitive: true - }], - - "comment" : [{ - token : "comment", - regex : "\\*\\/", - next : "pop" - }, { - defaultToken : "comment" - }], - - "ruleset" : [ - { - token : "paren.rparen", - regex : "\\}", - next: "pop" - }, { - token : "comment", // multi line comment - regex : "\\/\\*", - push : "comment" - }, { - token : "string", // single line - regex : '["](?:(?:\\\\.)|(?:[^"\\\\]))*?["]' - }, { - token : "string", // single line - regex : "['](?:(?:\\\\.)|(?:[^'\\\\]))*?[']" - }, { - token : ["constant.numeric", "keyword"], - regex : "(" + numRe + ")(ch|cm|deg|em|ex|fr|gd|grad|Hz|in|kHz|mm|ms|pc|pt|px|rad|rem|s|turn|vh|vm|vw|%)" - }, { - token : "constant.numeric", - regex : numRe - }, { - token : "constant.numeric", // hex6 color - regex : "#[a-f0-9]{6}" - }, { - token : "constant.numeric", // hex3 color - regex : "#[a-f0-9]{3}" - }, { - token : ["punctuation", "entity.other.attribute-name.pseudo-element.css"], - regex : pseudoElements - }, { - token : ["punctuation", "entity.other.attribute-name.pseudo-class.css"], - regex : pseudoClasses - }, { - token : ["support.function", "string", "support.function"], - regex : "(url\\()(.*)(\\))" - }, { - token : keywordMapper, - regex : "\\-?[a-zA-Z_][a-zA-Z0-9_\\-]*" - }, { - caseInsensitive: true - }] - }; - - this.normalizeRules(); -}; - -oop.inherits(CssHighlightRules, TextHighlightRules); - -exports.CssHighlightRules = CssHighlightRules; - -}); - -ace.define('ace/mode/behaviour/css', ['require', 'exports', 'module' , 'ace/lib/oop', 'ace/mode/behaviour', 'ace/mode/behaviour/cstyle', 'ace/token_iterator'], function(require, exports, module) { - - -var oop = require("../../lib/oop"); -var Behaviour = require("../behaviour").Behaviour; -var CstyleBehaviour = require("./cstyle").CstyleBehaviour; -var TokenIterator = require("../../token_iterator").TokenIterator; - -var CssBehaviour = function () { - - this.inherit(CstyleBehaviour); - - this.add("colon", "insertion", function (state, action, editor, session, text) { - if (text === ':') { - var cursor = editor.getCursorPosition(); - var iterator = new TokenIterator(session, cursor.row, cursor.column); - var token = iterator.getCurrentToken(); - if (token && token.value.match(/\s+/)) { - token = iterator.stepBackward(); - } - if (token && token.type === 'support.type') { - var line = session.doc.getLine(cursor.row); - var rightChar = line.substring(cursor.column, cursor.column + 1); - if (rightChar === ':') { - return { - text: '', - selection: [1, 1] - } - } - if (!line.substring(cursor.column).match(/^\s*;/)) { - return { - text: ':;', - selection: [1, 1] - } - } - } - } - }); - - this.add("colon", "deletion", function (state, action, editor, session, range) { - var selected = session.doc.getTextRange(range); - if (!range.isMultiLine() && selected === ':') { - var cursor = editor.getCursorPosition(); - var iterator = new TokenIterator(session, cursor.row, cursor.column); - var token = iterator.getCurrentToken(); - if (token && token.value.match(/\s+/)) { - token = iterator.stepBackward(); - } - if (token && token.type === 'support.type') { - var line = session.doc.getLine(range.start.row); - var rightChar = line.substring(range.end.column, range.end.column + 1); - if (rightChar === ';') { - range.end.column ++; - return range; - } - } - } - }); - - this.add("semicolon", "insertion", function (state, action, editor, session, text) { - if (text === ';') { - var cursor = editor.getCursorPosition(); - var line = session.doc.getLine(cursor.row); - var rightChar = line.substring(cursor.column, cursor.column + 1); - if (rightChar === ';') { - return { - text: '', - selection: [1, 1] - } - } - } - }); - -} -oop.inherits(CssBehaviour, CstyleBehaviour); - -exports.CssBehaviour = CssBehaviour; -}); - -ace.define('ace/mode/html_highlight_rules', ['require', 'exports', 'module' , 'ace/lib/oop', 'ace/lib/lang', 'ace/mode/css_highlight_rules', 'ace/mode/javascript_highlight_rules', 'ace/mode/xml_highlight_rules'], function(require, exports, module) { - - -var oop = require("../lib/oop"); -var lang = require("../lib/lang"); -var CssHighlightRules = require("./css_highlight_rules").CssHighlightRules; -var JavaScriptHighlightRules = require("./javascript_highlight_rules").JavaScriptHighlightRules; -var XmlHighlightRules = require("./xml_highlight_rules").XmlHighlightRules; - -var tagMap = lang.createMap({ - a : 'anchor', - button : 'form', - form : 'form', - img : 'image', - input : 'form', - label : 'form', - option : 'form', - script : 'script', - select : 'form', - textarea : 'form', - style : 'style', - table : 'table', - tbody : 'table', - td : 'table', - tfoot : 'table', - th : 'table', - tr : 'table' -}); - -var HtmlHighlightRules = function() { - XmlHighlightRules.call(this); - - this.addRules({ - attributes: [{ - include : "space" - }, { - token : "entity.other.attribute-name", - regex : "[-_a-zA-Z0-9:]+" - }, { - token : "keyword.operator.separator", - regex : "=", - push : [{ - include: "space" - }, { - token : "string", - regex : "[^<>='\"`\\s]+", - next : "pop" - }, { - token : "empty", - regex : "", - next : "pop" - }] - }, { - include : "string" - }], - tag: [{ - token : function(start, tag) { - var group = tagMap[tag]; - return ["meta.tag.punctuation.begin", - "meta.tag.name" + (group ? "." + group : "")]; - }, - regex : "(<)([-_a-zA-Z0-9:]+)", - next: "start_tag_stuff" - }, { - token : function(start, tag) { - var group = tagMap[tag]; - return ["meta.tag.punctuation.begin", - "meta.tag.name" + (group ? "." + group : "")]; - }, - regex : "(", next : "start"} - ], - end_tag_stuff: [ - {include : "space"}, - {token : "meta.tag.punctuation.end", regex : ">", next : "start"} - ] - }); - - this.embedTagRules(CssHighlightRules, "css-", "style"); - this.embedTagRules(JavaScriptHighlightRules, "js-", "script"); - - if (this.constructor === HtmlHighlightRules) - this.normalizeRules(); -}; - -oop.inherits(HtmlHighlightRules, XmlHighlightRules); - -exports.HtmlHighlightRules = HtmlHighlightRules; -}); - -ace.define('ace/mode/xml_highlight_rules', ['require', 'exports', 'module' , 'ace/lib/oop', 'ace/mode/xml_util', 'ace/mode/text_highlight_rules'], function(require, exports, module) { - - -var oop = require("../lib/oop"); -var xmlUtil = require("./xml_util"); -var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; - -var XmlHighlightRules = function(normalize) { - this.$rules = { - start : [ - {token : "punctuation.string.begin", regex : "<\\!\\[CDATA\\[", next : "cdata"}, - { - token : ["punctuation.instruction.begin", "keyword.instruction"], - regex : "(<\\?)(xml)(?=[\\s])", next : "xml_declaration" - }, - { - token : ["punctuation.instruction.begin", "keyword.instruction"], - regex : "(<\\?)([-_a-zA-Z0-9]+)", next : "instruction" - }, - {token : "comment", regex : "<\\!--", next : "comment"}, - { - token : ["punctuation.doctype.begin", "meta.tag.doctype"], - regex : "(<\\!)(DOCTYPE)(?=[\\s])", next : "doctype" - }, - {include : "tag"}, - {include : "reference"} - ], - - xml_declaration : [ - {include : "attributes"}, - {include : "instruction"} - ], - - instruction : [ - {token : "punctuation.instruction.end", regex : "\\?>", next : "start"} - ], - - doctype : [ - {include : "space"}, - {include : "string"}, - {token : "punctuation.doctype.end", regex : ">", next : "start"}, - {token : "xml-pe", regex : "[-_a-zA-Z0-9:]+"}, - {token : "punctuation.begin", regex : "\\[", push : "declarations"} - ], - - declarations : [{ - token : "text", - regex : "\\s+" - }, { - token: "punctuation.end", - regex: "]", - next: "pop" - }, { - token : ["punctuation.begin", "keyword"], - regex : "(<\\!)([-_a-zA-Z0-9]+)", - push : [{ - token : "text", - regex : "\\s+" - }, - { - token : "punctuation.end", - regex : ">", - next : "pop" - }, - {include : "string"}] - }], - - cdata : [ - {token : "string.end", regex : "\\]\\]>", next : "start"}, - {token : "text", regex : "\\s+"}, - {token : "text", regex : "(?:[^\\]]|\\](?!\\]>))+"} - ], - - comment : [ - {token : "comment", regex : "-->", next : "start"}, - {defaultToken : "comment"} - ], - - tag : [{ - token : ["meta.tag.punctuation.begin", "meta.tag.name"], - regex : "(<)((?:[-_a-zA-Z0-9]+:)?[-_a-zA-Z0-9]+)", - next: [ - {include : "attributes"}, - {token : "meta.tag.punctuation.end", regex : "/?>", next : "start"} - ] - }, { - token : ["meta.tag.punctuation.begin", "meta.tag.name"], - regex : "(", next : "start"} - ] - }], - - space : [ - {token : "text", regex : "\\s+"} - ], - - reference : [{ - token : "constant.language.escape", - regex : "(?:&#[0-9]+;)|(?:&#x[0-9a-fA-F]+;)|(?:&[a-zA-Z0-9_:\\.-]+;)" - }, { - token : "text", regex : "&" - }], - - string: [{ - token : "string", - regex : "'", - push : "qstring_inner" - }, { - token : "string", - regex : '"', - push : "qqstring_inner" - }], - - qstring_inner: [ - {token : "string", regex: "'", next: "pop"}, - {include : "reference"}, - {defaultToken : "string"} - ], - - qqstring_inner: [ - {token : "string", regex: '"', next: "pop"}, - {include : "reference"}, - {defaultToken : "string"} - ], - - attributes: [{ - token : "entity.other.attribute-name", - regex : "(?:[-_a-zA-Z0-9]+:)?[-_a-zA-Z0-9]+" - }, { - token : "keyword.operator.separator", - regex : "=" - }, { - include : "space" - }, { - include : "string" - }] - }; - - if (this.constructor === XmlHighlightRules) - this.normalizeRules(); -}; - - -(function() { - - this.embedTagRules = function(HighlightRules, prefix, tag){ - this.$rules.tag.unshift({ - token : ["meta.tag.punctuation.begin", "meta.tag.name." + tag], - regex : "(<)(" + tag + ")", - next: [ - {include : "space"}, - {include : "attributes"}, - {token : "meta.tag.punctuation.end", regex : "/?>", next : prefix + "start"} - ] - }); - - this.$rules[tag + "-end"] = [ - {include : "space"}, - {token : "meta.tag.punctuation.end", regex : ">", next: "start", - onMatch : function(value, currentState, stack) { - stack.splice(0); - return this.token; - }} - ] - - this.embedRules(HighlightRules, prefix, [{ - token: ["meta.tag.punctuation.begin", "meta.tag.name." + tag], - regex : "(" - }]); - }; - -}).call(TextHighlightRules.prototype); - -oop.inherits(XmlHighlightRules, TextHighlightRules); - -exports.XmlHighlightRules = XmlHighlightRules; -}); - -ace.define('ace/mode/xml_util', ['require', 'exports', 'module' ], function(require, exports, module) { - - -function string(state) { - return [{ - token : "string", - regex : '"', - next : state + "_qqstring" - }, { - token : "string", - regex : "'", - next : state + "_qstring" - }]; -} - -function multiLineString(quote, state) { - return [ - {token : "string", regex : quote, next : state}, - { - token : "constant.language.escape", - regex : "(?:&#[0-9]+;)|(?:&#x[0-9a-fA-F]+;)|(?:&[a-zA-Z0-9_:\\.-]+;)" - }, - {defaultToken : "string"} - ]; -} - -exports.tag = function(states, name, nextState, tagMap) { - states[name] = [{ - token : "text", - regex : "\\s+" - }, { - - token : !tagMap ? "meta.tag.tag-name" : function(value) { - if (tagMap[value]) - return "meta.tag.tag-name." + tagMap[value]; - else - return "meta.tag.tag-name"; - }, - regex : "[-_a-zA-Z0-9:]+", - next : name + "_embed_attribute_list" - }, { - token: "empty", - regex: "", - next : name + "_embed_attribute_list" - }]; - - states[name + "_qstring"] = multiLineString("'", name + "_embed_attribute_list"); - states[name + "_qqstring"] = multiLineString("\"", name + "_embed_attribute_list"); - - states[name + "_embed_attribute_list"] = [{ - token : "meta.tag.r", - regex : "/?>", - next : nextState - }, { - token : "keyword.operator", - regex : "=" - }, { - token : "entity.other.attribute-name", - regex : "[-_a-zA-Z0-9:]+" - }, { - token : "constant.numeric", // float - regex : "[+-]?\\d+(?:(?:\\.\\d*)?(?:[eE][+-]?\\d+)?)?\\b" - }, { - token : "text", - regex : "\\s+" - }].concat(string(name)); -}; - -}); - -ace.define('ace/mode/behaviour/html', ['require', 'exports', 'module' , 'ace/lib/oop', 'ace/mode/behaviour/xml', 'ace/mode/behaviour/cstyle', 'ace/token_iterator'], function(require, exports, module) { - - -var oop = require("../../lib/oop"); -var XmlBehaviour = require("../behaviour/xml").XmlBehaviour; -var CstyleBehaviour = require("./cstyle").CstyleBehaviour; -var TokenIterator = require("../../token_iterator").TokenIterator; -var voidElements = ['area', 'base', 'br', 'col', 'command', 'embed', 'hr', 'img', 'input', 'keygen', 'link', 'meta', 'param', 'source', 'track', 'wbr']; - -function hasType(token, type) { - var tokenTypes = token.type.split('.'); - return type.split('.').every(function(type){ - return (tokenTypes.indexOf(type) !== -1); - }); - return hasType; -} - -var HtmlBehaviour = function () { - - this.inherit(XmlBehaviour); // Get xml behaviour - - this.add("autoclosing", "insertion", function (state, action, editor, session, text) { - if (text == '>') { - var position = editor.getCursorPosition(); - var iterator = new TokenIterator(session, position.row, position.column); - var token = iterator.getCurrentToken(); - - if (token && hasType(token, 'string') && iterator.getCurrentTokenColumn() + token.value.length > position.column) - return; - var atCursor = false; - if (!token || !hasType(token, 'meta.tag') && !(hasType(token, 'text') && token.value.match('/'))){ - do { - token = iterator.stepBackward(); - } while (token && (hasType(token, 'string') || hasType(token, 'keyword.operator') || hasType(token, 'entity.attribute-name') || hasType(token, 'text'))); - } else { - atCursor = true; - } - if (!token || !hasType(token, 'meta.tag.name') || iterator.stepBackward().value.match('/')) { - return; - } - var element = token.value; - if (atCursor){ - var element = element.substring(0, position.column - token.start); - } - if (voidElements.indexOf(element) !== -1){ - return; - } - return { - text: '>' + '', - selection: [1, 1] - } - } - }); -} -oop.inherits(HtmlBehaviour, XmlBehaviour); - -exports.HtmlBehaviour = HtmlBehaviour; -}); - -ace.define('ace/mode/behaviour/xml', ['require', 'exports', 'module' , 'ace/lib/oop', 'ace/mode/behaviour', 'ace/mode/behaviour/cstyle', 'ace/token_iterator'], function(require, exports, module) { - - -var oop = require("../../lib/oop"); -var Behaviour = require("../behaviour").Behaviour; -var CstyleBehaviour = require("./cstyle").CstyleBehaviour; -var TokenIterator = require("../../token_iterator").TokenIterator; - -function hasType(token, type) { - var tokenTypes = token.type.split('.'); - return type.split('.').every(function(type){ - return (tokenTypes.indexOf(type) !== -1); - }); - return hasType; -} - -var XmlBehaviour = function () { - - this.inherit(CstyleBehaviour, ["string_dquotes"]); // Get string behaviour - - this.add("autoclosing", "insertion", function (state, action, editor, session, text) { - if (text == '>') { - var position = editor.getCursorPosition(); - var iterator = new TokenIterator(session, position.row, position.column); - var token = iterator.getCurrentToken(); - - if (token && hasType(token, 'string') && iterator.getCurrentTokenColumn() + token.value.length > position.column) - return; - var atCursor = false; - if (!token || !hasType(token, 'meta.tag') && !(hasType(token, 'text') && token.value.match('/'))){ - do { - token = iterator.stepBackward(); - } while (token && (hasType(token, 'string') || hasType(token, 'keyword.operator') || hasType(token, 'entity.attribute-name') || hasType(token, 'text'))); - } else { - atCursor = true; - } - if (!token || !hasType(token, 'meta.tag.name') || iterator.stepBackward().value.match('/')) { - return; - } - var tag = token.value; - if (atCursor){ - var tag = tag.substring(0, position.column - token.start); - } - - return { - text: '>' + '', - selection: [1, 1] - } - } - }); - - this.add('autoindent', 'insertion', function (state, action, editor, session, text) { - if (text == "\n") { - var cursor = editor.getCursorPosition(); - var line = session.getLine(cursor.row); - var rightChars = line.substring(cursor.column, cursor.column + 2); - if (rightChars == '?)/; - this._parseTag = function(tag) { - - var match = tag.match(this.tagRe); - var column = 0; - - return { - value: tag, - match: match ? match[2] : "", - closing: match ? !!match[3] : false, - selfClosing: match ? !!match[5] || match[2] == "/>" : false, - tagName: match ? match[4] : "", - column: match[1] ? column + match[1].length : column - }; - }; - this._readTagForward = function(iterator) { - var token = iterator.getCurrentToken(); - if (!token) - return null; - - var value = ""; - var start; - - do { - if (token.type.lastIndexOf("meta.tag", 0) === 0) { - if (!start) { - var start = { - row: iterator.getCurrentTokenRow(), - column: iterator.getCurrentTokenColumn() - }; - } - value += token.value; - if (value.indexOf(">") !== -1) { - var tag = this._parseTag(value); - tag.start = start; - tag.end = { - row: iterator.getCurrentTokenRow(), - column: iterator.getCurrentTokenColumn() + token.value.length - }; - iterator.stepForward(); - return tag; - } - } - } while(token = iterator.stepForward()); - - return null; - }; - - this._readTagBackward = function(iterator) { - var token = iterator.getCurrentToken(); - if (!token) - return null; - - var value = ""; - var end; - - do { - if (token.type.lastIndexOf("meta.tag", 0) === 0) { - if (!end) { - end = { - row: iterator.getCurrentTokenRow(), - column: iterator.getCurrentTokenColumn() + token.value.length - }; - } - value = token.value + value; - if (value.indexOf("<") !== -1) { - var tag = this._parseTag(value); - tag.end = end; - tag.start = { - row: iterator.getCurrentTokenRow(), - column: iterator.getCurrentTokenColumn() - }; - iterator.stepBackward(); - return tag; - } - } - } while(token = iterator.stepBackward()); - - return null; - }; - - this._pop = function(stack, tag) { - while (stack.length) { - - var top = stack[stack.length-1]; - if (!tag || top.tagName == tag.tagName) { - return stack.pop(); - } - else if (this.voidElements[tag.tagName]) { - return; - } - else if (this.voidElements[top.tagName]) { - stack.pop(); - continue; - } else { - return null; - } - } - }; - - this.getFoldWidgetRange = function(session, foldStyle, row) { - var firstTag = this._getFirstTagInLine(session, row); - - if (!firstTag.match) - return null; - - var isBackward = firstTag.closing || firstTag.selfClosing; - var stack = []; - var tag; - - if (!isBackward) { - var iterator = new TokenIterator(session, row, firstTag.column); - var start = { - row: row, - column: firstTag.column + firstTag.tagName.length + 2 - }; - while (tag = this._readTagForward(iterator)) { - if (tag.selfClosing) { - if (!stack.length) { - tag.start.column += tag.tagName.length + 2; - tag.end.column -= 2; - return Range.fromPoints(tag.start, tag.end); - } else - continue; - } - - if (tag.closing) { - this._pop(stack, tag); - if (stack.length == 0) - return Range.fromPoints(start, tag.start); - } - else { - stack.push(tag) - } - } - } - else { - var iterator = new TokenIterator(session, row, firstTag.column + firstTag.match.length); - var end = { - row: row, - column: firstTag.column - }; - - while (tag = this._readTagBackward(iterator)) { - if (tag.selfClosing) { - if (!stack.length) { - tag.start.column += tag.tagName.length + 2; - tag.end.column -= 2; - return Range.fromPoints(tag.start, tag.end); - } else - continue; - } - - if (!tag.closing) { - this._pop(stack, tag); - if (stack.length == 0) { - tag.start.column += tag.tagName.length + 2; - return Range.fromPoints(tag.start, end); - } - } - else { - stack.push(tag) - } - } - } - - }; - -}).call(FoldMode.prototype); - -}); - -ace.define('ace/mode/html_completions', ['require', 'exports', 'module' , 'ace/token_iterator'], function(require, exports, module) { - - -var TokenIterator = require("../token_iterator").TokenIterator; - -var commonAttributes = [ - "accesskey", - "class", - "contenteditable", - "contextmenu", - "dir", - "draggable", - "dropzone", - "hidden", - "id", - "lang", - "spellcheck", - "style", - "tabindex", - "title", - "translate" -]; - -var eventAttributes = [ - "onabort", - "onblur", - "oncancel", - "oncanplay", - "oncanplaythrough", - "onchange", - "onclick", - "onclose", - "oncontextmenu", - "oncuechange", - "ondblclick", - "ondrag", - "ondragend", - "ondragenter", - "ondragleave", - "ondragover", - "ondragstart", - "ondrop", - "ondurationchange", - "onemptied", - "onended", - "onerror", - "onfocus", - "oninput", - "oninvalid", - "onkeydown", - "onkeypress", - "onkeyup", - "onload", - "onloadeddata", - "onloadedmetadata", - "onloadstart", - "onmousedown", - "onmousemove", - "onmouseout", - "onmouseover", - "onmouseup", - "onmousewheel", - "onpause", - "onplay", - "onplaying", - "onprogress", - "onratechange", - "onreset", - "onscroll", - "onseeked", - "onseeking", - "onselect", - "onshow", - "onstalled", - "onsubmit", - "onsuspend", - "ontimeupdate", - "onvolumechange", - "onwaiting" -]; - -var globalAttributes = commonAttributes.concat(eventAttributes); - -var attributeMap = { - "html": ["manifest"], - "head": [], - "title": [], - "base": ["href", "target"], - "link": ["href", "hreflang", "rel", "media", "type", "sizes"], - "meta": ["http-equiv", "name", "content", "charset"], - "style": ["type", "media", "scoped"], - "script": ["charset", "type", "src", "defer", "async"], - "noscript": ["href"], - "body": ["onafterprint", "onbeforeprint", "onbeforeunload", "onhashchange", "onmessage", "onoffline", "onpopstate", "onredo", "onresize", "onstorage", "onundo", "onunload"], - "section": [], - "nav": [], - "article": ["pubdate"], - "aside": [], - "h1": [], - "h2": [], - "h3": [], - "h4": [], - "h5": [], - "h6": [], - "header": [], - "footer": [], - "address": [], - "main": [], - "p": [], - "hr": [], - "pre": [], - "blockquote": ["cite"], - "ol": ["start", "reversed"], - "ul": [], - "li": ["value"], - "dl": [], - "dt": [], - "dd": [], - "figure": [], - "figcaption": [], - "div": [], - "a": ["href", "target", "ping", "rel", "media", "hreflang", "type"], - "em": [], - "strong": [], - "small": [], - "s": [], - "cite": [], - "q": ["cite"], - "dfn": [], - "abbr": [], - "data": [], - "time": ["datetime"], - "code": [], - "var": [], - "samp": [], - "kbd": [], - "sub": [], - "sup": [], - "i": [], - "b": [], - "u": [], - "mark": [], - "ruby": [], - "rt": [], - "rp": [], - "bdi": [], - "bdo": [], - "span": [], - "br": [], - "wbr": [], - "ins": ["cite", "datetime"], - "del": ["cite", "datetime"], - "img": ["alt", "src", "height", "width", "usemap", "ismap"], - "iframe": ["name", "src", "height", "width", "sandbox", "seamless"], - "embed": ["src", "height", "width", "type"], - "object": ["param", "data", "type", "height" , "width", "usemap", "name", "form", "classid"], - "param": ["name", "value"], - "video": ["src", "autobuffer", "autoplay", "loop", "controls", "width", "height", "poster"], - "audio": ["src", "autobuffer", "autoplay", "loop", "controls"], - "source": ["src", "type", "media"], - "track": ["kind", "src", "srclang", "label", "default"], - "canvas": ["width", "height"], - "map": ["name"], - "area": ["shape", "coords", "href", "hreflang", "alt", "target", "media", "rel", "ping", "type"], - "svg": [], - "math": [], - "table": ["summary"], - "caption": [], - "colgroup": ["span"], - "col": ["span"], - "tbody": [], - "thead": [], - "tfoot": [], - "tr": [], - "td": ["headers", "rowspan", "colspan"], - "th": ["headers", "rowspan", "colspan", "scope"], - "form": ["accept-charset", "action", "autocomplete", "enctype", "method", "name", "novalidate", "target"], - "fieldset": ["disabled", "form", "name"], - "legend": [], - "label": ["form", "for"], - "input": ["type", "accept", "alt", "autocomplete", "checked", "disabled", "form", "formaction", "formenctype", "formmethod", "formnovalidate", "formtarget", "height", "list", "max", "maxlength", "min", "multiple", "pattern", "placeholder", "readonly", "required", "size", "src", "step", "width", "files", "value"], - "button": ["autofocus", "disabled", "form", "formaction", "formenctype", "formmethod", "formnovalidate", "formtarget", "name", "value", "type"], - "select": ["autofocus", "disabled", "form", "multiple", "name", "size"], - "datalist": [], - "optgroup": ["disabled", "label"], - "option": ["disabled", "selected", "label", "value"], - "textarea": ["autofocus", "disabled", "form", "maxlength", "name", "placeholder", "readonly", "required", "rows", "cols", "wrap"], - "keygen": ["autofocus", "challenge", "disabled", "form", "keytype", "name"], - "output": ["for", "form", "name"], - "progress": ["value", "max"], - "meter": ["value", "min", "max", "low", "high", "optimum"], - "details": ["open"], - "summary": [], - "command": ["type", "label", "icon", "disabled", "checked", "radiogroup", "command"], - "menu": ["type", "label"], - "dialog": ["open"] -}; - -var allElements = Object.keys(attributeMap); - -function hasType(token, type) { - var tokenTypes = token.type.split('.'); - return type.split('.').every(function(type){ - return (tokenTypes.indexOf(type) !== -1); - }); -} - -function findTagName(session, pos) { - var iterator = new TokenIterator(session, pos.row, pos.column); - var token = iterator.getCurrentToken(); - if (!token || !hasType(token, 'tag') && !(hasType(token, 'text') && token.value.match('/'))){ - do { - token = iterator.stepBackward(); - } while (token && (hasType(token, 'string') || hasType(token, 'operator') || hasType(token, 'attribute-name') || hasType(token, 'text'))); - } - if (token && hasType(token, 'tag-name') && !iterator.stepBackward().value.match('/')) - return token.value; -} - -var HtmlCompletions = function() { - -}; - -(function() { - - this.getCompletions = function(state, session, pos, prefix) { - var token = session.getTokenAt(pos.row, pos.column); - - if (!token) - return []; - if (hasType(token, "tag-name") || (token.value == '<' && hasType(token, "text"))) - return this.getTagCompletions(state, session, pos, prefix); - if (hasType(token, 'text') || hasType(token, 'attribute-name')) - return this.getAttributeCompetions(state, session, pos, prefix); - - return []; - }; - - this.getTagCompletions = function(state, session, pos, prefix) { - var elements = allElements; - if (prefix) { - elements = elements.filter(function(element){ - return element.indexOf(prefix) === 0; - }); - } - return elements.map(function(element){ - return { - value: element, - meta: "tag" - }; - }); - }; - - this.getAttributeCompetions = function(state, session, pos, prefix) { - var tagName = findTagName(session, pos); - if (!tagName) - return []; - var attributes = globalAttributes; - if (tagName in attributeMap) { - attributes = attributes.concat(attributeMap[tagName]); - } - if (prefix) { - attributes = attributes.filter(function(attribute){ - return attribute.indexOf(prefix) === 0; - }); - } - return attributes.map(function(attribute){ - return { - caption: attribute, - snippet: attribute + '="$0"', - meta: "attribute" - }; - }); - }; - -}).call(HtmlCompletions.prototype); - -exports.HtmlCompletions = HtmlCompletions; -}); -ace.define('ace/mode/rhtml_highlight_rules', ['require', 'exports', 'module' , 'ace/lib/oop', 'ace/mode/r_highlight_rules', 'ace/mode/html_highlight_rules', 'ace/mode/text_highlight_rules'], function(require, exports, module) { - - -var oop = require("../lib/oop"); -var RHighlightRules = require("./r_highlight_rules").RHighlightRules; -var HtmlHighlightRules = require("./html_highlight_rules").HtmlHighlightRules; -var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; - -var RHtmlHighlightRules = function() { - HtmlHighlightRules.call(this); - - this.$rules["start"].unshift({ - token: "support.function.codebegin", - regex: "^<" + "!--\\s*begin.rcode\\s*(?:.*)", - next: "r-start" - }); - - this.embedRules(RHighlightRules, "r-", [{ - token: "support.function.codeend", - regex: "^\\s*end.rcode\\s*-->", - next: "start" - }], ["start"]); - - this.normalizeRules(); -}; -oop.inherits(RHtmlHighlightRules, TextHighlightRules); - -exports.RHtmlHighlightRules = RHtmlHighlightRules; -}); -ace.define('ace/mode/r_highlight_rules', ['require', 'exports', 'module' , 'ace/lib/oop', 'ace/lib/lang', 'ace/mode/text_highlight_rules', 'ace/mode/tex_highlight_rules'], function(require, exports, module) { - - var oop = require("../lib/oop"); - var lang = require("../lib/lang"); - var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; - var TexHighlightRules = require("./tex_highlight_rules").TexHighlightRules; - - var RHighlightRules = function() - { - - var keywords = lang.arrayToMap( - ("function|if|in|break|next|repeat|else|for|return|switch|while|try|tryCatch|stop|warning|require|library|attach|detach|source|setMethod|setGeneric|setGroupGeneric|setClass") - .split("|") - ); - - var buildinConstants = lang.arrayToMap( - ("NULL|NA|TRUE|FALSE|T|F|Inf|NaN|NA_integer_|NA_real_|NA_character_|" + - "NA_complex_").split("|") - ); - - this.$rules = { - "start" : [ - { - token : "comment.sectionhead", - regex : "#+(?!').*(?:----|====|####)\\s*$" - }, - { - token : "comment", - regex : "#+'", - next : "rd-start" - }, - { - token : "comment", - regex : "#.*$" - }, - { - token : "string", // multi line string start - regex : '["]', - next : "qqstring" - }, - { - token : "string", // multi line string start - regex : "[']", - next : "qstring" - }, - { - token : "constant.numeric", // hex - regex : "0[xX][0-9a-fA-F]+[Li]?\\b" - }, - { - token : "constant.numeric", // explicit integer - regex : "\\d+L\\b" - }, - { - token : "constant.numeric", // number - regex : "\\d+(?:\\.\\d*)?(?:[eE][+\\-]?\\d*)?i?\\b" - }, - { - token : "constant.numeric", // number with leading decimal - regex : "\\.\\d+(?:[eE][+\\-]?\\d*)?i?\\b" - }, - { - token : "constant.language.boolean", - regex : "(?:TRUE|FALSE|T|F)\\b" - }, - { - token : "identifier", - regex : "`.*?`" - }, - { - onMatch : function(value) { - if (keywords[value]) - return "keyword"; - else if (buildinConstants[value]) - return "constant.language"; - else if (value == '...' || value.match(/^\.\.\d+$/)) - return "variable.language"; - else - return "identifier"; - }, - regex : "[a-zA-Z.][a-zA-Z0-9._]*\\b" - }, - { - token : "keyword.operator", - regex : "%%|>=|<=|==|!=|\\->|<\\-|\\|\\||&&|=|\\+|\\-|\\*|/|\\^|>|<|!|&|\\||~|\\$|:" - }, - { - token : "keyword.operator", // infix operators - regex : "%.*?%" - }, - { - token : "paren.keyword.operator", - regex : "[[({]" - }, - { - token : "paren.keyword.operator", - regex : "[\\])}]" - }, - { - token : "text", - regex : "\\s+" - } - ], - "qqstring" : [ - { - token : "string", - regex : '(?:(?:\\\\.)|(?:[^"\\\\]))*?"', - next : "start" - }, - { - token : "string", - regex : '.+' - } - ], - "qstring" : [ - { - token : "string", - regex : "(?:(?:\\\\.)|(?:[^'\\\\]))*?'", - next : "start" - }, - { - token : "string", - regex : '.+' - } - ] - }; - - var rdRules = new TexHighlightRules("comment").getRules(); - for (var i = 0; i < rdRules["start"].length; i++) { - rdRules["start"][i].token += ".virtual-comment"; - } - - this.addRules(rdRules, "rd-"); - this.$rules["rd-start"].unshift({ - token: "text", - regex: "^", - next: "start" - }); - this.$rules["rd-start"].unshift({ - token : "keyword", - regex : "@(?!@)[^ ]*" - }); - this.$rules["rd-start"].unshift({ - token : "comment", - regex : "@@" - }); - this.$rules["rd-start"].push({ - token : "comment", - regex : "[^%\\\\[({\\])}]+" - }); - }; - - oop.inherits(RHighlightRules, TextHighlightRules); - - exports.RHighlightRules = RHighlightRules; -}); -ace.define('ace/mode/tex_highlight_rules', ['require', 'exports', 'module' , 'ace/lib/oop', 'ace/lib/lang', 'ace/mode/text_highlight_rules'], function(require, exports, module) { - - -var oop = require("../lib/oop"); -var lang = require("../lib/lang"); -var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; - -var TexHighlightRules = function(textClass) { - - if (!textClass) - textClass = "text"; - - this.$rules = { - "start" : [ - { - token : "comment", - regex : "%.*$" - }, { - token : textClass, // non-command - regex : "\\\\[$&%#\\{\\}]" - }, { - token : "keyword", // command - regex : "\\\\(?:documentclass|usepackage|newcounter|setcounter|addtocounter|value|arabic|stepcounter|newenvironment|renewenvironment|ref|vref|eqref|pageref|label|cite[a-zA-Z]*|tag|begin|end|bibitem)\\b", - next : "nospell" - }, { - token : "keyword", // command - regex : "\\\\(?:[a-zA-z0-9]+|[^a-zA-z0-9])" - }, { - token : "paren.keyword.operator", - regex : "[[({]" - }, { - token : "paren.keyword.operator", - regex : "[\\])}]" - }, { - token : textClass, - regex : "\\s+" - } - ], - "nospell" : [ - { - token : "comment", - regex : "%.*$", - next : "start" - }, { - token : "nospell." + textClass, // non-command - regex : "\\\\[$&%#\\{\\}]" - }, { - token : "keyword", // command - regex : "\\\\(?:documentclass|usepackage|newcounter|setcounter|addtocounter|value|arabic|stepcounter|newenvironment|renewenvironment|ref|vref|eqref|pageref|label|cite[a-zA-Z]*|tag|begin|end|bibitem)\\b" - }, { - token : "keyword", // command - regex : "\\\\(?:[a-zA-z0-9]+|[^a-zA-z0-9])", - next : "start" - }, { - token : "paren.keyword.operator", - regex : "[[({]" - }, { - token : "paren.keyword.operator", - regex : "[\\])]" - }, { - token : "paren.keyword.operator", - regex : "}", - next : "start" - }, { - token : "nospell." + textClass, - regex : "\\s+" - }, { - token : "nospell." + textClass, - regex : "\\w+" - } - ] - }; -}; - -oop.inherits(TexHighlightRules, TextHighlightRules); - -exports.TexHighlightRules = TexHighlightRules; -}); diff --git a/IDE/jsrealb-ide/ace-src-noconflict/mode-ruby.js b/IDE/jsrealb-ide/ace-src-noconflict/mode-ruby.js deleted file mode 100644 index bd759442..00000000 --- a/IDE/jsrealb-ide/ace-src-noconflict/mode-ruby.js +++ /dev/null @@ -1,444 +0,0 @@ -/* ***** BEGIN LICENSE BLOCK ***** - * Distributed under the BSD license: - * - * Copyright (c) 2010, Ajax.org B.V. - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are met: - * * Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * * Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * * Neither the name of Ajax.org B.V. nor the - * names of its contributors may be used to endorse or promote products - * derived from this software without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND - * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED - * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE - * DISCLAIMED. IN NO EVENT SHALL AJAX.ORG B.V. BE LIABLE FOR ANY - * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES - * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; - * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND - * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - * - * ***** END LICENSE BLOCK ***** */ - -ace.define('ace/mode/ruby', ['require', 'exports', 'module' , 'ace/lib/oop', 'ace/mode/text', 'ace/tokenizer', 'ace/mode/ruby_highlight_rules', 'ace/mode/matching_brace_outdent', 'ace/range', 'ace/mode/folding/coffee'], function(require, exports, module) { - - -var oop = require("../lib/oop"); -var TextMode = require("./text").Mode; -var Tokenizer = require("../tokenizer").Tokenizer; -var RubyHighlightRules = require("./ruby_highlight_rules").RubyHighlightRules; -var MatchingBraceOutdent = require("./matching_brace_outdent").MatchingBraceOutdent; -var Range = require("../range").Range; -var FoldMode = require("./folding/coffee").FoldMode; - -var Mode = function() { - this.HighlightRules = RubyHighlightRules; - this.$outdent = new MatchingBraceOutdent(); - this.foldingRules = new FoldMode(); -}; -oop.inherits(Mode, TextMode); - -(function() { - - - this.lineCommentStart = "#"; - - this.getNextLineIndent = function(state, line, tab) { - var indent = this.$getIndent(line); - - var tokenizedLine = this.getTokenizer().getLineTokens(line, state); - var tokens = tokenizedLine.tokens; - - if (tokens.length && tokens[tokens.length-1].type == "comment") { - return indent; - } - - if (state == "start") { - var match = line.match(/^.*[\{\(\[]\s*$/); - var startingClassOrMethod = line.match(/^\s*(class|def)\s.*$/); - var startingDoBlock = line.match(/.*do(\s*|\s+\|.*\|\s*)$/); - var startingConditional = line.match(/^\s*(if|else)\s*/) - if (match || startingClassOrMethod || startingDoBlock || startingConditional) { - indent += tab; - } - } - - return indent; - }; - - this.checkOutdent = function(state, line, input) { - return /^\s+end$/.test(line + input) || /^\s+}$/.test(line + input) || /^\s+else$/.test(line + input); - }; - - this.autoOutdent = function(state, doc, row) { - var indent = this.$getIndent(doc.getLine(row)); - var tab = doc.getTabString(); - if (indent.slice(-tab.length) == tab) - doc.remove(new Range(row, indent.length-tab.length, row, indent.length)); - }; - - this.$id = "ace/mode/ruby"; -}).call(Mode.prototype); - -exports.Mode = Mode; -}); - -ace.define('ace/mode/ruby_highlight_rules', ['require', 'exports', 'module' , 'ace/lib/oop', 'ace/mode/text_highlight_rules'], function(require, exports, module) { - - -var oop = require("../lib/oop"); -var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; -var constantOtherSymbol = exports.constantOtherSymbol = { - token : "constant.other.symbol.ruby", // symbol - regex : "[:](?:[A-Za-z_]|[@$](?=[a-zA-Z0-9_]))[a-zA-Z0-9_]*[!=?]?" -}; - -var qString = exports.qString = { - token : "string", // single line - regex : "['](?:(?:\\\\.)|(?:[^'\\\\]))*?[']" -}; - -var qqString = exports.qqString = { - token : "string", // single line - regex : '["](?:(?:\\\\.)|(?:[^"\\\\]))*?["]' -}; - -var tString = exports.tString = { - token : "string", // backtick string - regex : "[`](?:(?:\\\\.)|(?:[^'\\\\]))*?[`]" -}; - -var constantNumericHex = exports.constantNumericHex = { - token : "constant.numeric", // hex - regex : "0[xX][0-9a-fA-F](?:[0-9a-fA-F]|_(?=[0-9a-fA-F]))*\\b" -}; - -var constantNumericFloat = exports.constantNumericFloat = { - token : "constant.numeric", // float - regex : "[+-]?\\d(?:\\d|_(?=\\d))*(?:(?:\\.\\d(?:\\d|_(?=\\d))*)?(?:[eE][+-]?\\d+)?)?\\b" -}; - -var RubyHighlightRules = function() { - - var builtinFunctions = ( - "abort|Array|assert|assert_equal|assert_not_equal|assert_same|assert_not_same|" + - "assert_nil|assert_not_nil|assert_match|assert_no_match|assert_in_delta|assert_throws|" + - "assert_raise|assert_nothing_raised|assert_instance_of|assert_kind_of|assert_respond_to|" + - "assert_operator|assert_send|assert_difference|assert_no_difference|assert_recognizes|" + - "assert_generates|assert_response|assert_redirected_to|assert_template|assert_select|" + - "assert_select_email|assert_select_rjs|assert_select_encoded|css_select|at_exit|" + - "attr|attr_writer|attr_reader|attr_accessor|attr_accessible|autoload|binding|block_given?|callcc|" + - "caller|catch|chomp|chomp!|chop|chop!|defined?|delete_via_redirect|eval|exec|exit|" + - "exit!|fail|Float|flunk|follow_redirect!|fork|form_for|form_tag|format|gets|global_variables|gsub|" + - "gsub!|get_via_redirect|host!|https?|https!|include|Integer|lambda|link_to|" + - "link_to_unless_current|link_to_function|link_to_remote|load|local_variables|loop|open|open_session|" + - "p|print|printf|proc|putc|puts|post_via_redirect|put_via_redirect|raise|rand|" + - "raw|readline|readlines|redirect?|request_via_redirect|require|scan|select|" + - "set_trace_func|sleep|split|sprintf|srand|String|stylesheet_link_tag|syscall|system|sub|sub!|test|" + - "throw|trace_var|trap|untrace_var|atan2|cos|exp|frexp|ldexp|log|log10|sin|sqrt|tan|" + - "render|javascript_include_tag|csrf_meta_tag|label_tag|text_field_tag|submit_tag|check_box_tag|" + - "content_tag|radio_button_tag|text_area_tag|password_field_tag|hidden_field_tag|" + - "fields_for|select_tag|options_for_select|options_from_collection_for_select|collection_select|" + - "time_zone_select|select_date|select_time|select_datetime|date_select|time_select|datetime_select|" + - "select_year|select_month|select_day|select_hour|select_minute|select_second|file_field_tag|" + - "file_field|respond_to|skip_before_filter|around_filter|after_filter|verify|" + - "protect_from_forgery|rescue_from|helper_method|redirect_to|before_filter|" + - "send_data|send_file|validates_presence_of|validates_uniqueness_of|validates_length_of|" + - "validates_format_of|validates_acceptance_of|validates_associated|validates_exclusion_of|" + - "validates_inclusion_of|validates_numericality_of|validates_with|validates_each|" + - "authenticate_or_request_with_http_basic|authenticate_or_request_with_http_digest|" + - "filter_parameter_logging|match|get|post|resources|redirect|scope|assert_routing|" + - "translate|localize|extract_locale_from_tld|caches_page|expire_page|caches_action|expire_action|" + - "cache|expire_fragment|expire_cache_for|observe|cache_sweeper|" + - "has_many|has_one|belongs_to|has_and_belongs_to_many" - ); - - var keywords = ( - "alias|and|BEGIN|begin|break|case|class|def|defined|do|else|elsif|END|end|ensure|" + - "__FILE__|finally|for|gem|if|in|__LINE__|module|next|not|or|private|protected|public|" + - "redo|rescue|retry|return|super|then|undef|unless|until|when|while|yield" - ); - - var buildinConstants = ( - "true|TRUE|false|FALSE|nil|NIL|ARGF|ARGV|DATA|ENV|RUBY_PLATFORM|RUBY_RELEASE_DATE|" + - "RUBY_VERSION|STDERR|STDIN|STDOUT|TOPLEVEL_BINDING" - ); - - var builtinVariables = ( - "\$DEBUG|\$defout|\$FILENAME|\$LOAD_PATH|\$SAFE|\$stdin|\$stdout|\$stderr|\$VERBOSE|" + - "$!|root_url|flash|session|cookies|params|request|response|logger|self" - ); - - var keywordMapper = this.$keywords = this.createKeywordMapper({ - "keyword": keywords, - "constant.language": buildinConstants, - "variable.language": builtinVariables, - "support.function": builtinFunctions, - "invalid.deprecated": "debugger" // TODO is this a remnant from js mode? - }, "identifier"); - - this.$rules = { - "start" : [ - { - token : "comment", - regex : "#.*$" - }, { - token : "comment", // multi line comment - regex : "^=begin(?:$|\\s.*$)", - next : "comment" - }, { - token : "string.regexp", - regex : "[/](?:(?:\\[(?:\\\\]|[^\\]])+\\])|(?:\\\\/|[^\\]/]))*[/]\\w*\\s*(?=[).,;]|$)" - }, - - qString, - qqString, - tString, - - { - token : "text", // namespaces aren't symbols - regex : "::" - }, { - token : "variable.instance", // instance variable - regex : "@{1,2}[a-zA-Z_\\d]+" - }, { - token : "support.class", // class name - regex : "[A-Z][a-zA-Z_\\d]+" - }, - - constantOtherSymbol, - constantNumericHex, - constantNumericFloat, - - { - token : "constant.language.boolean", - regex : "(?:true|false)\\b" - }, { - token : keywordMapper, - regex : "[a-zA-Z_$][a-zA-Z0-9_$]*\\b" - }, { - token : "punctuation.separator.key-value", - regex : "=>" - }, { - stateName: "heredoc", - onMatch : function(value, currentState, stack) { - var next = value[2] == '-' ? "indentedHeredoc" : "heredoc"; - var tokens = value.split(this.splitRegex); - stack.push(next, tokens[3]); - return [ - {type:"constant", value: tokens[1]}, - {type:"string", value: tokens[2]}, - {type:"support.class", value: tokens[3]}, - {type:"string", value: tokens[4]} - ]; - }, - regex : "(<<-?)(['\"`]?)([\\w]+)(['\"`]?)", - rules: { - heredoc: [{ - onMatch: function(value, currentState, stack) { - if (value === stack[1]) { - stack.shift(); - stack.shift(); - this.next = stack[0] || "start"; - return "support.class"; - } - this.next = ""; - return "string"; - }, - regex: ".*$", - next: "start" - }], - indentedHeredoc: [{ - token: "string", - regex: "^ +" - }, { - onMatch: function(value, currentState, stack) { - if (value === stack[1]) { - stack.shift(); - stack.shift(); - this.next = stack[0] || "start"; - return "support.class"; - } - this.next = ""; - return "string"; - }, - regex: ".*$", - next: "start" - }] - } - }, { - regex : "$", - token : "empty", - next : function(currentState, stack) { - if (stack[0] === "heredoc" || stack[0] === "indentedHeredoc") - return stack[0]; - return currentState; - } - }, { - token : "keyword.operator", - regex : "!|\\$|%|&|\\*|\\-\\-|\\-|\\+\\+|\\+|~|===|==|=|!=|!==|<=|>=|<<=|>>=|>>>=|<>|<|>|!|&&|\\|\\||\\?\\:|\\*=|%=|\\+=|\\-=|&=|\\^=|\\b(?:in|instanceof|new|delete|typeof|void)" - }, { - token : "paren.lparen", - regex : "[[({]" - }, { - token : "paren.rparen", - regex : "[\\])}]" - }, { - token : "text", - regex : "\\s+" - } - ], - "comment" : [ - { - token : "comment", // closing comment - regex : "^=end(?:$|\\s.*$)", - next : "start" - }, { - token : "comment", // comment spanning whole line - regex : ".+" - } - ] - }; - - this.normalizeRules(); -}; - -oop.inherits(RubyHighlightRules, TextHighlightRules); - -exports.RubyHighlightRules = RubyHighlightRules; -}); - -ace.define('ace/mode/matching_brace_outdent', ['require', 'exports', 'module' , 'ace/range'], function(require, exports, module) { - - -var Range = require("../range").Range; - -var MatchingBraceOutdent = function() {}; - -(function() { - - this.checkOutdent = function(line, input) { - if (! /^\s+$/.test(line)) - return false; - - return /^\s*\}/.test(input); - }; - - this.autoOutdent = function(doc, row) { - var line = doc.getLine(row); - var match = line.match(/^(\s*\})/); - - if (!match) return 0; - - var column = match[1].length; - var openBracePos = doc.findMatchingBracket({row: row, column: column}); - - if (!openBracePos || openBracePos.row == row) return 0; - - var indent = this.$getIndent(doc.getLine(openBracePos.row)); - doc.replace(new Range(row, 0, row, column-1), indent); - }; - - this.$getIndent = function(line) { - return line.match(/^\s*/)[0]; - }; - -}).call(MatchingBraceOutdent.prototype); - -exports.MatchingBraceOutdent = MatchingBraceOutdent; -}); - -ace.define('ace/mode/folding/coffee', ['require', 'exports', 'module' , 'ace/lib/oop', 'ace/mode/folding/fold_mode', 'ace/range'], function(require, exports, module) { - - -var oop = require("../../lib/oop"); -var BaseFoldMode = require("./fold_mode").FoldMode; -var Range = require("../../range").Range; - -var FoldMode = exports.FoldMode = function() {}; -oop.inherits(FoldMode, BaseFoldMode); - -(function() { - - this.getFoldWidgetRange = function(session, foldStyle, row) { - var range = this.indentationBlock(session, row); - if (range) - return range; - - var re = /\S/; - var line = session.getLine(row); - var startLevel = line.search(re); - if (startLevel == -1 || line[startLevel] != "#") - return; - - var startColumn = line.length; - var maxRow = session.getLength(); - var startRow = row; - var endRow = row; - - while (++row < maxRow) { - line = session.getLine(row); - var level = line.search(re); - - if (level == -1) - continue; - - if (line[level] != "#") - break; - - endRow = row; - } - - if (endRow > startRow) { - var endColumn = session.getLine(endRow).length; - return new Range(startRow, startColumn, endRow, endColumn); - } - }; - this.getFoldWidget = function(session, foldStyle, row) { - var line = session.getLine(row); - var indent = line.search(/\S/); - var next = session.getLine(row + 1); - var prev = session.getLine(row - 1); - var prevIndent = prev.search(/\S/); - var nextIndent = next.search(/\S/); - - if (indent == -1) { - session.foldWidgets[row - 1] = prevIndent!= -1 && prevIndent < nextIndent ? "start" : ""; - return ""; - } - if (prevIndent == -1) { - if (indent == nextIndent && line[indent] == "#" && next[indent] == "#") { - session.foldWidgets[row - 1] = ""; - session.foldWidgets[row + 1] = ""; - return "start"; - } - } else if (prevIndent == indent && line[indent] == "#" && prev[indent] == "#") { - if (session.getLine(row - 2).search(/\S/) == -1) { - session.foldWidgets[row - 1] = "start"; - session.foldWidgets[row + 1] = ""; - return ""; - } - } - - if (prevIndent!= -1 && prevIndent < indent) - session.foldWidgets[row - 1] = "start"; - else - session.foldWidgets[row - 1] = ""; - - if (indent < nextIndent) - return "start"; - else - return ""; - }; - -}).call(FoldMode.prototype); - -}); diff --git a/IDE/jsrealb-ide/ace-src-noconflict/mode-rust.js b/IDE/jsrealb-ide/ace-src-noconflict/mode-rust.js deleted file mode 100644 index 05afb2ed..00000000 --- a/IDE/jsrealb-ide/ace-src-noconflict/mode-rust.js +++ /dev/null @@ -1,245 +0,0 @@ -/* ***** BEGIN LICENSE BLOCK ***** - * Distributed under the BSD license: - * - * Copyright (c) 2012, Ajax.org B.V. - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are met: - * * Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * * Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * * Neither the name of Ajax.org B.V. nor the - * names of its contributors may be used to endorse or promote products - * derived from this software without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND - * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED - * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE - * DISCLAIMED. IN NO EVENT SHALL AJAX.ORG B.V. BE LIABLE FOR ANY - * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES - * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; - * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND - * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - * - * - * Contributor(s): - * - * - * - * ***** END LICENSE BLOCK ***** */ - -ace.define('ace/mode/rust', ['require', 'exports', 'module' , 'ace/lib/oop', 'ace/mode/text', 'ace/tokenizer', 'ace/mode/rust_highlight_rules', 'ace/mode/folding/cstyle'], function(require, exports, module) { - - -var oop = require("../lib/oop"); -var TextMode = require("./text").Mode; -var Tokenizer = require("../tokenizer").Tokenizer; -var RustHighlightRules = require("./rust_highlight_rules").RustHighlightRules; -var FoldMode = require("./folding/cstyle").FoldMode; - -var Mode = function() { - this.HighlightRules = RustHighlightRules; - this.foldingRules = new FoldMode(); -}; -oop.inherits(Mode, TextMode); - -(function() { - this.lineCommentStart = "/\\*"; - this.blockComment = {start: "/*", end: "*/"}; - this.$id = "ace/mode/rust"; -}).call(Mode.prototype); - -exports.Mode = Mode; -}); - -ace.define('ace/mode/rust_highlight_rules', ['require', 'exports', 'module' , 'ace/lib/oop', 'ace/mode/text_highlight_rules'], function(require, exports, module) { - - -var oop = require("../lib/oop"); -var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; - -var RustHighlightRules = function() { - - this.$rules = { start: - [ { token: 'variable.other.source.rust', - regex: '\'[a-zA-Z_][a-zA-Z0-9_]*[^\\\']' }, - { token: 'string.quoted.single.source.rust', - regex: '\'', - push: - [ { token: 'string.quoted.single.source.rust', - regex: '\'', - next: 'pop' }, - { include: '#rust_escaped_character' }, - { defaultToken: 'string.quoted.single.source.rust' } ] }, - { token: 'string.quoted.double.source.rust', - regex: '"', - push: - [ { token: 'string.quoted.double.source.rust', - regex: '"', - next: 'pop' }, - { include: '#rust_escaped_character' }, - { defaultToken: 'string.quoted.double.source.rust' } ] }, - { token: [ 'keyword.source.rust', 'meta.function.source.rust', - 'entity.name.function.source.rust', 'meta.function.source.rust' ], - regex: '\\b(fn)(\\s+)([a-zA-Z_][a-zA-Z0-9_][\\w\\:,+ \\\'<>]*)(\\s*\\()' }, - { token: 'support.constant', regex: '\\b[a-zA-Z_][\\w\\d]*::' }, - { token: 'keyword.source.rust', - regex: '\\b(?:as|assert|break|claim|const|copy|Copy|do|drop|else|extern|fail|for|if|impl|in|let|log|loop|match|mod|module|move|mut|Owned|priv|pub|pure|ref|return|unchecked|unsafe|use|while|mod|Send|static|trait|class|struct|enum|type)\\b' }, - { token: 'storage.type.source.rust', - regex: '\\b(?:Self|m32|m64|m128|f80|f16|f128|int|uint|float|char|bool|u8|u16|u32|u64|f32|f64|i8|i16|i32|i64|str|option|either|c_float|c_double|c_void|FILE|fpos_t|DIR|dirent|c_char|c_schar|c_uchar|c_short|c_ushort|c_int|c_uint|c_long|c_ulong|size_t|ptrdiff_t|clock_t|time_t|c_longlong|c_ulonglong|intptr_t|uintptr_t|off_t|dev_t|ino_t|pid_t|mode_t|ssize_t)\\b' }, - { token: 'variable.language.source.rust', regex: '\\bself\\b' }, - { token: 'keyword.operator', - regex: '!|\\$|\\*|\\-\\-|\\-|\\+\\+|\\+|-->|===|==|=|!=|!==|<=|>=|<<=|>>=|>>>=|<>|<|>|!|&&|\\|\\||\\?\\:|\\*=|/=|%=|\\+=|\\-=|&=|\\^=|,|;' }, - { token: 'constant.language.source.rust', - regex: '\\b(?:true|false|Some|None|Left|Right|Ok|Err)\\b' }, - { token: 'support.constant.source.rust', - regex: '\\b(?:EXIT_FAILURE|EXIT_SUCCESS|RAND_MAX|EOF|SEEK_SET|SEEK_CUR|SEEK_END|_IOFBF|_IONBF|_IOLBF|BUFSIZ|FOPEN_MAX|FILENAME_MAX|L_tmpnam|TMP_MAX|O_RDONLY|O_WRONLY|O_RDWR|O_APPEND|O_CREAT|O_EXCL|O_TRUNC|S_IFIFO|S_IFCHR|S_IFBLK|S_IFDIR|S_IFREG|S_IFMT|S_IEXEC|S_IWRITE|S_IREAD|S_IRWXU|S_IXUSR|S_IWUSR|S_IRUSR|F_OK|R_OK|W_OK|X_OK|STDIN_FILENO|STDOUT_FILENO|STDERR_FILENO)\\b' }, - { token: 'meta.preprocessor.source.rust', - regex: '\\b\\w\\(\\w\\)*!|#\\[[\\w=\\(\\)_]+\\]\\b' }, - { token: 'constant.numeric.integer.source.rust', - regex: '\\b(?:[0-9][0-9_]*|[0-9][0-9_]*(?:u|u8|u16|u32|u64)|[0-9][0-9_]*(?:i|i8|i16|i32|i64))\\b' }, - { token: 'constant.numeric.hex.source.rust', - regex: '\\b(?:0x[a-fA-F0-9_]+|0x[a-fA-F0-9_]+(?:u|u8|u16|u32|u64)|0x[a-fA-F0-9_]+(?:i|i8|i16|i32|i64))\\b' }, - { token: 'constant.numeric.binary.source.rust', - regex: '\\b(?:0b[01_]+|0b[01_]+(?:u|u8|u16|u32|u64)|0b[01_]+(?:i|i8|i16|i32|i64))\\b' }, - { token: 'constant.numeric.float.source.rust', - regex: '[0-9][0-9_]*(?:f32|f64|f)|[0-9][0-9_]*[eE][+-]=[0-9_]+|[0-9][0-9_]*[eE][+-]=[0-9_]+(?:f32|f64|f)|[0-9][0-9_]*\\.[0-9_]+|[0-9][0-9_]*\\.[0-9_]+(?:f32|f64|f)|[0-9][0-9_]*\\.[0-9_]+%[eE][+-]=[0-9_]+|[0-9][0-9_]*\\.[0-9_]+%[eE][+-]=[0-9_]+(?:f32|f64|f)' }, - { token: 'comment.line.documentation.source.rust', - regex: '//!.*$', - push_: - [ { token: 'comment.line.documentation.source.rust', - regex: '$', - next: 'pop' }, - { defaultToken: 'comment.line.documentation.source.rust' } ] }, - { token: 'comment.line.double-dash.source.rust', - regex: '//.*$', - push_: - [ { token: 'comment.line.double-dash.source.rust', - regex: '$', - next: 'pop' }, - { defaultToken: 'comment.line.double-dash.source.rust' } ] }, - { token: 'comment.block.source.rust', - regex: '/\\*', - push: - [ { token: 'comment.block.source.rust', - regex: '\\*/', - next: 'pop' }, - { defaultToken: 'comment.block.source.rust' } ] } ], - '#rust_escaped_character': - [ { token: 'constant.character.escape.source.rust', - regex: '\\\\(?:x[\\da-fA-F]{2}|[0-2][0-7]{,2}|3[0-6][0-7]?|37[0-7]?|[4-7][0-7]?|.)' } ] } - - this.normalizeRules(); -}; - -RustHighlightRules.metaData = { fileTypes: [ 'rs', 'rc' ], - foldingStartMarker: '^.*\\bfn\\s*(\\w+\\s*)?\\([^\\)]*\\)(\\s*\\{[^\\}]*)?\\s*$', - foldingStopMarker: '^\\s*\\}', - name: 'Rust', - scopeName: 'source.rust' } - - -oop.inherits(RustHighlightRules, TextHighlightRules); - -exports.RustHighlightRules = RustHighlightRules; -}); - -ace.define('ace/mode/folding/cstyle', ['require', 'exports', 'module' , 'ace/lib/oop', 'ace/range', 'ace/mode/folding/fold_mode'], function(require, exports, module) { - - -var oop = require("../../lib/oop"); -var Range = require("../../range").Range; -var BaseFoldMode = require("./fold_mode").FoldMode; - -var FoldMode = exports.FoldMode = function(commentRegex) { - if (commentRegex) { - this.foldingStartMarker = new RegExp( - this.foldingStartMarker.source.replace(/\|[^|]*?$/, "|" + commentRegex.start) - ); - this.foldingStopMarker = new RegExp( - this.foldingStopMarker.source.replace(/\|[^|]*?$/, "|" + commentRegex.end) - ); - } -}; -oop.inherits(FoldMode, BaseFoldMode); - -(function() { - - this.foldingStartMarker = /(\{|\[)[^\}\]]*$|^\s*(\/\*)/; - this.foldingStopMarker = /^[^\[\{]*(\}|\])|^[\s\*]*(\*\/)/; - - this.getFoldWidgetRange = function(session, foldStyle, row, forceMultiline) { - var line = session.getLine(row); - var match = line.match(this.foldingStartMarker); - if (match) { - var i = match.index; - - if (match[1]) - return this.openingBracketBlock(session, match[1], row, i); - - var range = session.getCommentFoldRange(row, i + match[0].length, 1); - - if (range && !range.isMultiLine()) { - if (forceMultiline) { - range = this.getSectionRange(session, row); - } else if (foldStyle != "all") - range = null; - } - - return range; - } - - if (foldStyle === "markbegin") - return; - - var match = line.match(this.foldingStopMarker); - if (match) { - var i = match.index + match[0].length; - - if (match[1]) - return this.closingBracketBlock(session, match[1], row, i); - - return session.getCommentFoldRange(row, i, -1); - } - }; - - this.getSectionRange = function(session, row) { - var line = session.getLine(row); - var startIndent = line.search(/\S/); - var startRow = row; - var startColumn = line.length; - row = row + 1; - var endRow = row; - var maxRow = session.getLength(); - while (++row < maxRow) { - line = session.getLine(row); - var indent = line.search(/\S/); - if (indent === -1) - continue; - if (startIndent > indent) - break; - var subRange = this.getFoldWidgetRange(session, "all", row); - - if (subRange) { - if (subRange.start.row <= startRow) { - break; - } else if (subRange.isMultiLine()) { - row = subRange.end.row; - } else if (startIndent == indent) { - break; - } - } - endRow = row; - } - - return new Range(startRow, startColumn, endRow, session.getLine(endRow).length); - }; - -}).call(FoldMode.prototype); - -}); diff --git a/IDE/jsrealb-ide/ace-src-noconflict/mode-sass.js b/IDE/jsrealb-ide/ace-src-noconflict/mode-sass.js deleted file mode 100644 index b4927392..00000000 --- a/IDE/jsrealb-ide/ace-src-noconflict/mode-sass.js +++ /dev/null @@ -1,443 +0,0 @@ -/* ***** BEGIN LICENSE BLOCK ***** - * Distributed under the BSD license: - * - * Copyright (c) 2010, Ajax.org B.V. - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are met: - * * Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * * Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * * Neither the name of Ajax.org B.V. nor the - * names of its contributors may be used to endorse or promote products - * derived from this software without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND - * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED - * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE - * DISCLAIMED. IN NO EVENT SHALL AJAX.ORG B.V. BE LIABLE FOR ANY - * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES - * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; - * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND - * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - * - * ***** END LICENSE BLOCK ***** */ - -ace.define('ace/mode/sass', ['require', 'exports', 'module' , 'ace/lib/oop', 'ace/mode/text', 'ace/tokenizer', 'ace/mode/sass_highlight_rules', 'ace/mode/folding/coffee'], function(require, exports, module) { - - -var oop = require("../lib/oop"); -var TextMode = require("./text").Mode; -var Tokenizer = require("../tokenizer").Tokenizer; -var SassHighlightRules = require("./sass_highlight_rules").SassHighlightRules; -var FoldMode = require("./folding/coffee").FoldMode; - -var Mode = function() { - this.HighlightRules = SassHighlightRules; - this.foldingRules = new FoldMode(); -}; -oop.inherits(Mode, TextMode); - -(function() { - this.lineCommentStart = "//"; - this.$id = "ace/mode/sass"; -}).call(Mode.prototype); - -exports.Mode = Mode; - -}); - -ace.define('ace/mode/sass_highlight_rules', ['require', 'exports', 'module' , 'ace/lib/oop', 'ace/lib/lang', 'ace/mode/scss_highlight_rules'], function(require, exports, module) { - - -var oop = require("../lib/oop"); -var lang = require("../lib/lang"); -var ScssHighlightRules = require("./scss_highlight_rules").ScssHighlightRules; - -var SassHighlightRules = function() { - ScssHighlightRules.call(this); - var start = this.$rules.start; - if (start[1].token == "comment") { - start.splice(1, 1, { - onMatch: function(value, currentState, stack) { - stack.unshift(this.next, -1, value.length - 2, currentState); - return "comment"; - }, - regex: /^\s*\/\*/, - next: "comment" - }, { - token: "error.invalid", - regex: "/\\*|[{;}]" - }, { - token: "support.type", - regex: /^\s*:[\w\-]+\s/ - }); - - this.$rules.comment = [ - {regex: /^\s*/, onMatch: function(value, currentState, stack) { - if (stack[1] === -1) - stack[1] = Math.max(stack[2], value.length - 1); - if (value.length <= stack[1]) {stack.shift();stack.shift();stack.shift(); - this.next = stack.shift(); - return "text"; - } else { - this.next = ""; - return "comment"; - } - }, next: "start"}, - {defaultToken: "comment"} - ] - } -}; - -oop.inherits(SassHighlightRules, ScssHighlightRules); - -exports.SassHighlightRules = SassHighlightRules; - -}); - -ace.define('ace/mode/scss_highlight_rules', ['require', 'exports', 'module' , 'ace/lib/oop', 'ace/lib/lang', 'ace/mode/text_highlight_rules'], function(require, exports, module) { - - -var oop = require("../lib/oop"); -var lang = require("../lib/lang"); -var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; - -var ScssHighlightRules = function() { - - var properties = lang.arrayToMap( (function () { - - var browserPrefix = ("-webkit-|-moz-|-o-|-ms-|-svg-|-pie-|-khtml-").split("|"); - - var prefixProperties = ("appearance|background-clip|background-inline-policy|background-origin|" + - "background-size|binding|border-bottom-colors|border-left-colors|" + - "border-right-colors|border-top-colors|border-end|border-end-color|" + - "border-end-style|border-end-width|border-image|border-start|" + - "border-start-color|border-start-style|border-start-width|box-align|" + - "box-direction|box-flex|box-flexgroup|box-ordinal-group|box-orient|" + - "box-pack|box-sizing|column-count|column-gap|column-width|column-rule|" + - "column-rule-width|column-rule-style|column-rule-color|float-edge|" + - "font-feature-settings|font-language-override|force-broken-image-icon|" + - "image-region|margin-end|margin-start|opacity|outline|outline-color|" + - "outline-offset|outline-radius|outline-radius-bottomleft|" + - "outline-radius-bottomright|outline-radius-topleft|outline-radius-topright|" + - "outline-style|outline-width|padding-end|padding-start|stack-sizing|" + - "tab-size|text-blink|text-decoration-color|text-decoration-line|" + - "text-decoration-style|transform|transform-origin|transition|" + - "transition-delay|transition-duration|transition-property|" + - "transition-timing-function|user-focus|user-input|user-modify|user-select|" + - "window-shadow|border-radius").split("|"); - - var properties = ("azimuth|background-attachment|background-color|background-image|" + - "background-position|background-repeat|background|border-bottom-color|" + - "border-bottom-style|border-bottom-width|border-bottom|border-collapse|" + - "border-color|border-left-color|border-left-style|border-left-width|" + - "border-left|border-right-color|border-right-style|border-right-width|" + - "border-right|border-spacing|border-style|border-top-color|" + - "border-top-style|border-top-width|border-top|border-width|border|bottom|" + - "box-shadow|box-sizing|caption-side|clear|clip|color|content|counter-increment|" + - "counter-reset|cue-after|cue-before|cue|cursor|direction|display|" + - "elevation|empty-cells|float|font-family|font-size-adjust|font-size|" + - "font-stretch|font-style|font-variant|font-weight|font|height|left|" + - "letter-spacing|line-height|list-style-image|list-style-position|" + - "list-style-type|list-style|margin-bottom|margin-left|margin-right|" + - "margin-top|marker-offset|margin|marks|max-height|max-width|min-height|" + - "min-width|opacity|orphans|outline-color|" + - "outline-style|outline-width|outline|overflow|overflow-x|overflow-y|padding-bottom|" + - "padding-left|padding-right|padding-top|padding|page-break-after|" + - "page-break-before|page-break-inside|page|pause-after|pause-before|" + - "pause|pitch-range|pitch|play-during|position|quotes|richness|right|" + - "size|speak-header|speak-numeral|speak-punctuation|speech-rate|speak|" + - "stress|table-layout|text-align|text-decoration|text-indent|" + - "text-shadow|text-transform|top|unicode-bidi|vertical-align|" + - "visibility|voice-family|volume|white-space|widows|width|word-spacing|" + - "z-index").split("|"); - var ret = []; - for (var i=0, ln=browserPrefix.length; i|<=|>=|==|!=|-|%|#|\\+|\\$|\\+|\\*" - }, { - token : "paren.lparen", - regex : "[[({]" - }, { - token : "paren.rparen", - regex : "[\\])}]" - }, { - token : "text", - regex : "\\s+" - }, { - caseInsensitive: true - } - ], - "comment" : [ - { - token : "comment", // closing comment - regex : ".*?\\*\\/", - next : "start" - }, { - token : "comment", // comment spanning whole line - regex : ".+" - } - ], - "qqstring" : [ - { - token : "string", - regex : '(?:(?:\\\\.)|(?:[^"\\\\]))*?"', - next : "start" - }, { - token : "string", - regex : '.+' - } - ], - "qstring" : [ - { - token : "string", - regex : "(?:(?:\\\\.)|(?:[^'\\\\]))*?'", - next : "start" - }, { - token : "string", - regex : '.+' - } - ] - }; -}; - -oop.inherits(ScssHighlightRules, TextHighlightRules); - -exports.ScssHighlightRules = ScssHighlightRules; - -}); - -ace.define('ace/mode/folding/coffee', ['require', 'exports', 'module' , 'ace/lib/oop', 'ace/mode/folding/fold_mode', 'ace/range'], function(require, exports, module) { - - -var oop = require("../../lib/oop"); -var BaseFoldMode = require("./fold_mode").FoldMode; -var Range = require("../../range").Range; - -var FoldMode = exports.FoldMode = function() {}; -oop.inherits(FoldMode, BaseFoldMode); - -(function() { - - this.getFoldWidgetRange = function(session, foldStyle, row) { - var range = this.indentationBlock(session, row); - if (range) - return range; - - var re = /\S/; - var line = session.getLine(row); - var startLevel = line.search(re); - if (startLevel == -1 || line[startLevel] != "#") - return; - - var startColumn = line.length; - var maxRow = session.getLength(); - var startRow = row; - var endRow = row; - - while (++row < maxRow) { - line = session.getLine(row); - var level = line.search(re); - - if (level == -1) - continue; - - if (line[level] != "#") - break; - - endRow = row; - } - - if (endRow > startRow) { - var endColumn = session.getLine(endRow).length; - return new Range(startRow, startColumn, endRow, endColumn); - } - }; - this.getFoldWidget = function(session, foldStyle, row) { - var line = session.getLine(row); - var indent = line.search(/\S/); - var next = session.getLine(row + 1); - var prev = session.getLine(row - 1); - var prevIndent = prev.search(/\S/); - var nextIndent = next.search(/\S/); - - if (indent == -1) { - session.foldWidgets[row - 1] = prevIndent!= -1 && prevIndent < nextIndent ? "start" : ""; - return ""; - } - if (prevIndent == -1) { - if (indent == nextIndent && line[indent] == "#" && next[indent] == "#") { - session.foldWidgets[row - 1] = ""; - session.foldWidgets[row + 1] = ""; - return "start"; - } - } else if (prevIndent == indent && line[indent] == "#" && prev[indent] == "#") { - if (session.getLine(row - 2).search(/\S/) == -1) { - session.foldWidgets[row - 1] = "start"; - session.foldWidgets[row + 1] = ""; - return ""; - } - } - - if (prevIndent!= -1 && prevIndent < indent) - session.foldWidgets[row - 1] = "start"; - else - session.foldWidgets[row - 1] = ""; - - if (indent < nextIndent) - return "start"; - else - return ""; - }; - -}).call(FoldMode.prototype); - -}); diff --git a/IDE/jsrealb-ide/ace-src-noconflict/mode-scad.js b/IDE/jsrealb-ide/ace-src-noconflict/mode-scad.js deleted file mode 100644 index 0e4f2fda..00000000 --- a/IDE/jsrealb-ide/ace-src-noconflict/mode-scad.js +++ /dev/null @@ -1,717 +0,0 @@ -/* ***** BEGIN LICENSE BLOCK ***** - * Distributed under the BSD license: - * - * Copyright (c) 2010, Ajax.org B.V. - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are met: - * * Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * * Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * * Neither the name of Ajax.org B.V. nor the - * names of its contributors may be used to endorse or promote products - * derived from this software without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND - * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED - * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE - * DISCLAIMED. IN NO EVENT SHALL AJAX.ORG B.V. BE LIABLE FOR ANY - * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES - * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; - * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND - * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - * - * ***** END LICENSE BLOCK ***** */ - -ace.define('ace/mode/scad', ['require', 'exports', 'module' , 'ace/lib/oop', 'ace/mode/text', 'ace/tokenizer', 'ace/mode/scad_highlight_rules', 'ace/mode/matching_brace_outdent', 'ace/range', 'ace/mode/behaviour/cstyle', 'ace/mode/folding/cstyle'], function(require, exports, module) { - - -var oop = require("../lib/oop"); -var TextMode = require("./text").Mode; -var Tokenizer = require("../tokenizer").Tokenizer; -var scadHighlightRules = require("./scad_highlight_rules").scadHighlightRules; -var MatchingBraceOutdent = require("./matching_brace_outdent").MatchingBraceOutdent; -var Range = require("../range").Range; -var CstyleBehaviour = require("./behaviour/cstyle").CstyleBehaviour; -var CStyleFoldMode = require("./folding/cstyle").FoldMode; - -var Mode = function() { - this.HighlightRules = scadHighlightRules; - this.$outdent = new MatchingBraceOutdent(); - this.$behaviour = new CstyleBehaviour(); - this.foldingRules = new CStyleFoldMode(); -}; -oop.inherits(Mode, TextMode); - -(function() { - - this.lineCommentStart = "//"; - this.blockComment = {start: "/*", end: "*/"}; - - this.getNextLineIndent = function(state, line, tab) { - var indent = this.$getIndent(line); - - var tokenizedLine = this.getTokenizer().getLineTokens(line, state); - var tokens = tokenizedLine.tokens; - var endState = tokenizedLine.state; - - if (tokens.length && tokens[tokens.length-1].type == "comment") { - return indent; - } - - if (state == "start") { - var match = line.match(/^.*[\{\(\[]\s*$/); - if (match) { - indent += tab; - } - } else if (state == "doc-start") { - if (endState == "start") { - return ""; - } - var match = line.match(/^\s*(\/?)\*/); - if (match) { - if (match[1]) { - indent += " "; - } - indent += "* "; - } - } - - return indent; - }; - - this.checkOutdent = function(state, line, input) { - return this.$outdent.checkOutdent(line, input); - }; - - this.autoOutdent = function(state, doc, row) { - this.$outdent.autoOutdent(doc, row); - }; - - this.$id = "ace/mode/scad"; -}).call(Mode.prototype); - -exports.Mode = Mode; -}); - -ace.define('ace/mode/scad_highlight_rules', ['require', 'exports', 'module' , 'ace/lib/oop', 'ace/lib/lang', 'ace/mode/doc_comment_highlight_rules', 'ace/mode/text_highlight_rules'], function(require, exports, module) { - - -var oop = require("../lib/oop"); -var lang = require("../lib/lang"); -var DocCommentHighlightRules = require("./doc_comment_highlight_rules").DocCommentHighlightRules; -var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; - -var scadHighlightRules = function() { - var keywordMapper = this.createKeywordMapper({ - "variable.language": "this", - "keyword": "module|if|else|for", - "constant.language": "NULL" - }, "identifier"); - - this.$rules = { - "start" : [ - { - token : "comment", - regex : "\\/\\/.*$" - }, - DocCommentHighlightRules.getStartRule("start"), - { - token : "comment", // multi line comment - regex : "\\/\\*", - next : "comment" - }, { - token : "string", // single line - regex : '["](?:(?:\\\\.)|(?:[^"\\\\]))*?["]' - }, { - token : "string", // multi line string start - regex : '["].*\\\\$', - next : "qqstring" - }, { - token : "string", // single line - regex : "['](?:(?:\\\\.)|(?:[^'\\\\]))*?[']" - }, { - token : "string", // multi line string start - regex : "['].*\\\\$", - next : "qstring" - }, { - token : "constant.numeric", // hex - regex : "0[xX][0-9a-fA-F]+\\b" - }, { - token : "constant.numeric", // float - regex : "[+-]?\\d+(?:(?:\\.\\d*)?(?:[eE][+-]?\\d+)?)?\\b" - }, { - token : "constant", // - regex : "<[a-zA-Z0-9.]+>" - }, { - token : "keyword", // pre-compiler directivs - regex : "(?:use|include)" - }, { - token : keywordMapper, - regex : "[a-zA-Z_$][a-zA-Z0-9_$]*\\b" - }, { - token : "keyword.operator", - regex : "!|\\$|%|&|\\*|\\-\\-|\\-|\\+\\+|\\+|~|==|=|!=|<=|>=|<<=|>>=|>>>=|<>|<|>|!|&&|\\|\\||\\?\\:|\\*=|%=|\\+=|\\-=|&=|\\^=|\\b(?:in|new|delete|typeof|void)" - }, { - token : "paren.lparen", - regex : "[[({]" - }, { - token : "paren.rparen", - regex : "[\\])}]" - }, { - token : "text", - regex : "\\s+" - } - ], - "comment" : [ - { - token : "comment", // closing comment - regex : ".*?\\*\\/", - next : "start" - }, { - token : "comment", // comment spanning whole line - regex : ".+" - } - ], - "qqstring" : [ - { - token : "string", - regex : '(?:(?:\\\\.)|(?:[^"\\\\]))*?"', - next : "start" - }, { - token : "string", - regex : '.+' - } - ], - "qstring" : [ - { - token : "string", - regex : "(?:(?:\\\\.)|(?:[^'\\\\]))*?'", - next : "start" - }, { - token : "string", - regex : '.+' - } - ] - }; - - this.embedRules(DocCommentHighlightRules, "doc-", - [ DocCommentHighlightRules.getEndRule("start") ]); -}; - -oop.inherits(scadHighlightRules, TextHighlightRules); - -exports.scadHighlightRules = scadHighlightRules; -}); - -ace.define('ace/mode/doc_comment_highlight_rules', ['require', 'exports', 'module' , 'ace/lib/oop', 'ace/mode/text_highlight_rules'], function(require, exports, module) { - - -var oop = require("../lib/oop"); -var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; - -var DocCommentHighlightRules = function() { - - this.$rules = { - "start" : [ { - token : "comment.doc.tag", - regex : "@[\\w\\d_]+" // TODO: fix email addresses - }, { - token : "comment.doc.tag", - regex : "\\bTODO\\b" - }, { - defaultToken : "comment.doc" - }] - }; -}; - -oop.inherits(DocCommentHighlightRules, TextHighlightRules); - -DocCommentHighlightRules.getStartRule = function(start) { - return { - token : "comment.doc", // doc comment - regex : "\\/\\*(?=\\*)", - next : start - }; -}; - -DocCommentHighlightRules.getEndRule = function (start) { - return { - token : "comment.doc", // closing comment - regex : "\\*\\/", - next : start - }; -}; - - -exports.DocCommentHighlightRules = DocCommentHighlightRules; - -}); - -ace.define('ace/mode/matching_brace_outdent', ['require', 'exports', 'module' , 'ace/range'], function(require, exports, module) { - - -var Range = require("../range").Range; - -var MatchingBraceOutdent = function() {}; - -(function() { - - this.checkOutdent = function(line, input) { - if (! /^\s+$/.test(line)) - return false; - - return /^\s*\}/.test(input); - }; - - this.autoOutdent = function(doc, row) { - var line = doc.getLine(row); - var match = line.match(/^(\s*\})/); - - if (!match) return 0; - - var column = match[1].length; - var openBracePos = doc.findMatchingBracket({row: row, column: column}); - - if (!openBracePos || openBracePos.row == row) return 0; - - var indent = this.$getIndent(doc.getLine(openBracePos.row)); - doc.replace(new Range(row, 0, row, column-1), indent); - }; - - this.$getIndent = function(line) { - return line.match(/^\s*/)[0]; - }; - -}).call(MatchingBraceOutdent.prototype); - -exports.MatchingBraceOutdent = MatchingBraceOutdent; -}); - -ace.define('ace/mode/behaviour/cstyle', ['require', 'exports', 'module' , 'ace/lib/oop', 'ace/mode/behaviour', 'ace/token_iterator', 'ace/lib/lang'], function(require, exports, module) { - - -var oop = require("../../lib/oop"); -var Behaviour = require("../behaviour").Behaviour; -var TokenIterator = require("../../token_iterator").TokenIterator; -var lang = require("../../lib/lang"); - -var SAFE_INSERT_IN_TOKENS = - ["text", "paren.rparen", "punctuation.operator"]; -var SAFE_INSERT_BEFORE_TOKENS = - ["text", "paren.rparen", "punctuation.operator", "comment"]; - - -var autoInsertedBrackets = 0; -var autoInsertedRow = -1; -var autoInsertedLineEnd = ""; -var maybeInsertedBrackets = 0; -var maybeInsertedRow = -1; -var maybeInsertedLineStart = ""; -var maybeInsertedLineEnd = ""; - -var CstyleBehaviour = function () { - - CstyleBehaviour.isSaneInsertion = function(editor, session) { - var cursor = editor.getCursorPosition(); - var iterator = new TokenIterator(session, cursor.row, cursor.column); - if (!this.$matchTokenType(iterator.getCurrentToken() || "text", SAFE_INSERT_IN_TOKENS)) { - var iterator2 = new TokenIterator(session, cursor.row, cursor.column + 1); - if (!this.$matchTokenType(iterator2.getCurrentToken() || "text", SAFE_INSERT_IN_TOKENS)) - return false; - } - iterator.stepForward(); - return iterator.getCurrentTokenRow() !== cursor.row || - this.$matchTokenType(iterator.getCurrentToken() || "text", SAFE_INSERT_BEFORE_TOKENS); - }; - - CstyleBehaviour.$matchTokenType = function(token, types) { - return types.indexOf(token.type || token) > -1; - }; - - CstyleBehaviour.recordAutoInsert = function(editor, session, bracket) { - var cursor = editor.getCursorPosition(); - var line = session.doc.getLine(cursor.row); - if (!this.isAutoInsertedClosing(cursor, line, autoInsertedLineEnd[0])) - autoInsertedBrackets = 0; - autoInsertedRow = cursor.row; - autoInsertedLineEnd = bracket + line.substr(cursor.column); - autoInsertedBrackets++; - }; - - CstyleBehaviour.recordMaybeInsert = function(editor, session, bracket) { - var cursor = editor.getCursorPosition(); - var line = session.doc.getLine(cursor.row); - if (!this.isMaybeInsertedClosing(cursor, line)) - maybeInsertedBrackets = 0; - maybeInsertedRow = cursor.row; - maybeInsertedLineStart = line.substr(0, cursor.column) + bracket; - maybeInsertedLineEnd = line.substr(cursor.column); - maybeInsertedBrackets++; - }; - - CstyleBehaviour.isAutoInsertedClosing = function(cursor, line, bracket) { - return autoInsertedBrackets > 0 && - cursor.row === autoInsertedRow && - bracket === autoInsertedLineEnd[0] && - line.substr(cursor.column) === autoInsertedLineEnd; - }; - - CstyleBehaviour.isMaybeInsertedClosing = function(cursor, line) { - return maybeInsertedBrackets > 0 && - cursor.row === maybeInsertedRow && - line.substr(cursor.column) === maybeInsertedLineEnd && - line.substr(0, cursor.column) == maybeInsertedLineStart; - }; - - CstyleBehaviour.popAutoInsertedClosing = function() { - autoInsertedLineEnd = autoInsertedLineEnd.substr(1); - autoInsertedBrackets--; - }; - - CstyleBehaviour.clearMaybeInsertedClosing = function() { - maybeInsertedBrackets = 0; - maybeInsertedRow = -1; - }; - - this.add("braces", "insertion", function (state, action, editor, session, text) { - var cursor = editor.getCursorPosition(); - var line = session.doc.getLine(cursor.row); - if (text == '{') { - var selection = editor.getSelectionRange(); - var selected = session.doc.getTextRange(selection); - if (selected !== "" && selected !== "{" && editor.getWrapBehavioursEnabled()) { - return { - text: '{' + selected + '}', - selection: false - }; - } else if (CstyleBehaviour.isSaneInsertion(editor, session)) { - if (/[\]\}\)]/.test(line[cursor.column]) || editor.inMultiSelectMode) { - CstyleBehaviour.recordAutoInsert(editor, session, "}"); - return { - text: '{}', - selection: [1, 1] - }; - } else { - CstyleBehaviour.recordMaybeInsert(editor, session, "{"); - return { - text: '{', - selection: [1, 1] - }; - } - } - } else if (text == '}') { - var rightChar = line.substring(cursor.column, cursor.column + 1); - if (rightChar == '}') { - var matching = session.$findOpeningBracket('}', {column: cursor.column + 1, row: cursor.row}); - if (matching !== null && CstyleBehaviour.isAutoInsertedClosing(cursor, line, text)) { - CstyleBehaviour.popAutoInsertedClosing(); - return { - text: '', - selection: [1, 1] - }; - } - } - } else if (text == "\n" || text == "\r\n") { - var closing = ""; - if (CstyleBehaviour.isMaybeInsertedClosing(cursor, line)) { - closing = lang.stringRepeat("}", maybeInsertedBrackets); - CstyleBehaviour.clearMaybeInsertedClosing(); - } - var rightChar = line.substring(cursor.column, cursor.column + 1); - if (rightChar === '}') { - var openBracePos = session.findMatchingBracket({row: cursor.row, column: cursor.column+1}, '}'); - if (!openBracePos) - return null; - var next_indent = this.$getIndent(session.getLine(openBracePos.row)); - } else if (closing) { - var next_indent = this.$getIndent(line); - } else { - return; - } - var indent = next_indent + session.getTabString(); - - return { - text: '\n' + indent + '\n' + next_indent + closing, - selection: [1, indent.length, 1, indent.length] - }; - } else { - CstyleBehaviour.clearMaybeInsertedClosing(); - } - }); - - this.add("braces", "deletion", function (state, action, editor, session, range) { - var selected = session.doc.getTextRange(range); - if (!range.isMultiLine() && selected == '{') { - var line = session.doc.getLine(range.start.row); - var rightChar = line.substring(range.end.column, range.end.column + 1); - if (rightChar == '}') { - range.end.column++; - return range; - } else { - maybeInsertedBrackets--; - } - } - }); - - this.add("parens", "insertion", function (state, action, editor, session, text) { - if (text == '(') { - var selection = editor.getSelectionRange(); - var selected = session.doc.getTextRange(selection); - if (selected !== "" && editor.getWrapBehavioursEnabled()) { - return { - text: '(' + selected + ')', - selection: false - }; - } else if (CstyleBehaviour.isSaneInsertion(editor, session)) { - CstyleBehaviour.recordAutoInsert(editor, session, ")"); - return { - text: '()', - selection: [1, 1] - }; - } - } else if (text == ')') { - var cursor = editor.getCursorPosition(); - var line = session.doc.getLine(cursor.row); - var rightChar = line.substring(cursor.column, cursor.column + 1); - if (rightChar == ')') { - var matching = session.$findOpeningBracket(')', {column: cursor.column + 1, row: cursor.row}); - if (matching !== null && CstyleBehaviour.isAutoInsertedClosing(cursor, line, text)) { - CstyleBehaviour.popAutoInsertedClosing(); - return { - text: '', - selection: [1, 1] - }; - } - } - } - }); - - this.add("parens", "deletion", function (state, action, editor, session, range) { - var selected = session.doc.getTextRange(range); - if (!range.isMultiLine() && selected == '(') { - var line = session.doc.getLine(range.start.row); - var rightChar = line.substring(range.start.column + 1, range.start.column + 2); - if (rightChar == ')') { - range.end.column++; - return range; - } - } - }); - - this.add("brackets", "insertion", function (state, action, editor, session, text) { - if (text == '[') { - var selection = editor.getSelectionRange(); - var selected = session.doc.getTextRange(selection); - if (selected !== "" && editor.getWrapBehavioursEnabled()) { - return { - text: '[' + selected + ']', - selection: false - }; - } else if (CstyleBehaviour.isSaneInsertion(editor, session)) { - CstyleBehaviour.recordAutoInsert(editor, session, "]"); - return { - text: '[]', - selection: [1, 1] - }; - } - } else if (text == ']') { - var cursor = editor.getCursorPosition(); - var line = session.doc.getLine(cursor.row); - var rightChar = line.substring(cursor.column, cursor.column + 1); - if (rightChar == ']') { - var matching = session.$findOpeningBracket(']', {column: cursor.column + 1, row: cursor.row}); - if (matching !== null && CstyleBehaviour.isAutoInsertedClosing(cursor, line, text)) { - CstyleBehaviour.popAutoInsertedClosing(); - return { - text: '', - selection: [1, 1] - }; - } - } - } - }); - - this.add("brackets", "deletion", function (state, action, editor, session, range) { - var selected = session.doc.getTextRange(range); - if (!range.isMultiLine() && selected == '[') { - var line = session.doc.getLine(range.start.row); - var rightChar = line.substring(range.start.column + 1, range.start.column + 2); - if (rightChar == ']') { - range.end.column++; - return range; - } - } - }); - - this.add("string_dquotes", "insertion", function (state, action, editor, session, text) { - if (text == '"' || text == "'") { - var quote = text; - var selection = editor.getSelectionRange(); - var selected = session.doc.getTextRange(selection); - if (selected !== "" && selected !== "'" && selected != '"' && editor.getWrapBehavioursEnabled()) { - return { - text: quote + selected + quote, - selection: false - }; - } else { - var cursor = editor.getCursorPosition(); - var line = session.doc.getLine(cursor.row); - var leftChar = line.substring(cursor.column-1, cursor.column); - if (leftChar == '\\') { - return null; - } - var tokens = session.getTokens(selection.start.row); - var col = 0, token; - var quotepos = -1; // Track whether we're inside an open quote. - - for (var x = 0; x < tokens.length; x++) { - token = tokens[x]; - if (token.type == "string") { - quotepos = -1; - } else if (quotepos < 0) { - quotepos = token.value.indexOf(quote); - } - if ((token.value.length + col) > selection.start.column) { - break; - } - col += tokens[x].value.length; - } - if (!token || (quotepos < 0 && token.type !== "comment" && (token.type !== "string" || ((selection.start.column !== token.value.length+col-1) && token.value.lastIndexOf(quote) === token.value.length-1)))) { - if (!CstyleBehaviour.isSaneInsertion(editor, session)) - return; - return { - text: quote + quote, - selection: [1,1] - }; - } else if (token && token.type === "string") { - var rightChar = line.substring(cursor.column, cursor.column + 1); - if (rightChar == quote) { - return { - text: '', - selection: [1, 1] - }; - } - } - } - } - }); - - this.add("string_dquotes", "deletion", function (state, action, editor, session, range) { - var selected = session.doc.getTextRange(range); - if (!range.isMultiLine() && (selected == '"' || selected == "'")) { - var line = session.doc.getLine(range.start.row); - var rightChar = line.substring(range.start.column + 1, range.start.column + 2); - if (rightChar == selected) { - range.end.column++; - return range; - } - } - }); - -}; - -oop.inherits(CstyleBehaviour, Behaviour); - -exports.CstyleBehaviour = CstyleBehaviour; -}); - -ace.define('ace/mode/folding/cstyle', ['require', 'exports', 'module' , 'ace/lib/oop', 'ace/range', 'ace/mode/folding/fold_mode'], function(require, exports, module) { - - -var oop = require("../../lib/oop"); -var Range = require("../../range").Range; -var BaseFoldMode = require("./fold_mode").FoldMode; - -var FoldMode = exports.FoldMode = function(commentRegex) { - if (commentRegex) { - this.foldingStartMarker = new RegExp( - this.foldingStartMarker.source.replace(/\|[^|]*?$/, "|" + commentRegex.start) - ); - this.foldingStopMarker = new RegExp( - this.foldingStopMarker.source.replace(/\|[^|]*?$/, "|" + commentRegex.end) - ); - } -}; -oop.inherits(FoldMode, BaseFoldMode); - -(function() { - - this.foldingStartMarker = /(\{|\[)[^\}\]]*$|^\s*(\/\*)/; - this.foldingStopMarker = /^[^\[\{]*(\}|\])|^[\s\*]*(\*\/)/; - - this.getFoldWidgetRange = function(session, foldStyle, row, forceMultiline) { - var line = session.getLine(row); - var match = line.match(this.foldingStartMarker); - if (match) { - var i = match.index; - - if (match[1]) - return this.openingBracketBlock(session, match[1], row, i); - - var range = session.getCommentFoldRange(row, i + match[0].length, 1); - - if (range && !range.isMultiLine()) { - if (forceMultiline) { - range = this.getSectionRange(session, row); - } else if (foldStyle != "all") - range = null; - } - - return range; - } - - if (foldStyle === "markbegin") - return; - - var match = line.match(this.foldingStopMarker); - if (match) { - var i = match.index + match[0].length; - - if (match[1]) - return this.closingBracketBlock(session, match[1], row, i); - - return session.getCommentFoldRange(row, i, -1); - } - }; - - this.getSectionRange = function(session, row) { - var line = session.getLine(row); - var startIndent = line.search(/\S/); - var startRow = row; - var startColumn = line.length; - row = row + 1; - var endRow = row; - var maxRow = session.getLength(); - while (++row < maxRow) { - line = session.getLine(row); - var indent = line.search(/\S/); - if (indent === -1) - continue; - if (startIndent > indent) - break; - var subRange = this.getFoldWidgetRange(session, "all", row); - - if (subRange) { - if (subRange.start.row <= startRow) { - break; - } else if (subRange.isMultiLine()) { - row = subRange.end.row; - } else if (startIndent == indent) { - break; - } - } - endRow = row; - } - - return new Range(startRow, startColumn, endRow, session.getLine(endRow).length); - }; - -}).call(FoldMode.prototype); - -}); diff --git a/IDE/jsrealb-ide/ace-src-noconflict/mode-scala.js b/IDE/jsrealb-ide/ace-src-noconflict/mode-scala.js deleted file mode 100644 index bb336ff8..00000000 --- a/IDE/jsrealb-ide/ace-src-noconflict/mode-scala.js +++ /dev/null @@ -1,1083 +0,0 @@ -ace.define('ace/mode/scala', ['require', 'exports', 'module' , 'ace/lib/oop', 'ace/mode/javascript', 'ace/tokenizer', 'ace/mode/scala_highlight_rules'], function(require, exports, module) { - - -var oop = require("../lib/oop"); -var JavaScriptMode = require("./javascript").Mode; -var Tokenizer = require("../tokenizer").Tokenizer; -var ScalaHighlightRules = require("./scala_highlight_rules").ScalaHighlightRules; - -var Mode = function() { - JavaScriptMode.call(this); - - this.HighlightRules = ScalaHighlightRules; -}; -oop.inherits(Mode, JavaScriptMode); - -(function() { - - this.createWorker = function(session) { - return null; - }; - - this.$id = "ace/mode/scala"; -}).call(Mode.prototype); - -exports.Mode = Mode; -}); - -ace.define('ace/mode/javascript', ['require', 'exports', 'module' , 'ace/lib/oop', 'ace/mode/text', 'ace/tokenizer', 'ace/mode/javascript_highlight_rules', 'ace/mode/matching_brace_outdent', 'ace/range', 'ace/worker/worker_client', 'ace/mode/behaviour/cstyle', 'ace/mode/folding/cstyle'], function(require, exports, module) { - - -var oop = require("../lib/oop"); -var TextMode = require("./text").Mode; -var Tokenizer = require("../tokenizer").Tokenizer; -var JavaScriptHighlightRules = require("./javascript_highlight_rules").JavaScriptHighlightRules; -var MatchingBraceOutdent = require("./matching_brace_outdent").MatchingBraceOutdent; -var Range = require("../range").Range; -var WorkerClient = require("../worker/worker_client").WorkerClient; -var CstyleBehaviour = require("./behaviour/cstyle").CstyleBehaviour; -var CStyleFoldMode = require("./folding/cstyle").FoldMode; - -var Mode = function() { - this.HighlightRules = JavaScriptHighlightRules; - - this.$outdent = new MatchingBraceOutdent(); - this.$behaviour = new CstyleBehaviour(); - this.foldingRules = new CStyleFoldMode(); -}; -oop.inherits(Mode, TextMode); - -(function() { - - this.lineCommentStart = "//"; - this.blockComment = {start: "/*", end: "*/"}; - - this.getNextLineIndent = function(state, line, tab) { - var indent = this.$getIndent(line); - - var tokenizedLine = this.getTokenizer().getLineTokens(line, state); - var tokens = tokenizedLine.tokens; - var endState = tokenizedLine.state; - - if (tokens.length && tokens[tokens.length-1].type == "comment") { - return indent; - } - - if (state == "start" || state == "no_regex") { - var match = line.match(/^.*(?:\bcase\b.*\:|[\{\(\[])\s*$/); - if (match) { - indent += tab; - } - } else if (state == "doc-start") { - if (endState == "start" || endState == "no_regex") { - return ""; - } - var match = line.match(/^\s*(\/?)\*/); - if (match) { - if (match[1]) { - indent += " "; - } - indent += "* "; - } - } - - return indent; - }; - - this.checkOutdent = function(state, line, input) { - return this.$outdent.checkOutdent(line, input); - }; - - this.autoOutdent = function(state, doc, row) { - this.$outdent.autoOutdent(doc, row); - }; - - this.createWorker = function(session) { - var worker = new WorkerClient(["ace"], "ace/mode/javascript_worker", "JavaScriptWorker"); - worker.attachToDocument(session.getDocument()); - - worker.on("jslint", function(results) { - session.setAnnotations(results.data); - }); - - worker.on("terminate", function() { - session.clearAnnotations(); - }); - - return worker; - }; - - this.$id = "ace/mode/javascript"; -}).call(Mode.prototype); - -exports.Mode = Mode; -}); - -ace.define('ace/mode/javascript_highlight_rules', ['require', 'exports', 'module' , 'ace/lib/oop', 'ace/mode/doc_comment_highlight_rules', 'ace/mode/text_highlight_rules'], function(require, exports, module) { - - -var oop = require("../lib/oop"); -var DocCommentHighlightRules = require("./doc_comment_highlight_rules").DocCommentHighlightRules; -var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; - -var JavaScriptHighlightRules = function() { - var keywordMapper = this.createKeywordMapper({ - "variable.language": - "Array|Boolean|Date|Function|Iterator|Number|Object|RegExp|String|Proxy|" + // Constructors - "Namespace|QName|XML|XMLList|" + // E4X - "ArrayBuffer|Float32Array|Float64Array|Int16Array|Int32Array|Int8Array|" + - "Uint16Array|Uint32Array|Uint8Array|Uint8ClampedArray|" + - "Error|EvalError|InternalError|RangeError|ReferenceError|StopIteration|" + // Errors - "SyntaxError|TypeError|URIError|" + - "decodeURI|decodeURIComponent|encodeURI|encodeURIComponent|eval|isFinite|" + // Non-constructor functions - "isNaN|parseFloat|parseInt|" + - "JSON|Math|" + // Other - "this|arguments|prototype|window|document" , // Pseudo - "keyword": - "const|yield|import|get|set|" + - "break|case|catch|continue|default|delete|do|else|finally|for|function|" + - "if|in|instanceof|new|return|switch|throw|try|typeof|let|var|while|with|debugger|" + - "__parent__|__count__|escape|unescape|with|__proto__|" + - "class|enum|extends|super|export|implements|private|public|interface|package|protected|static", - "storage.type": - "const|let|var|function", - "constant.language": - "null|Infinity|NaN|undefined", - "support.function": - "alert", - "constant.language.boolean": "true|false" - }, "identifier"); - var kwBeforeRe = "case|do|else|finally|in|instanceof|return|throw|try|typeof|yield|void"; - var identifierRe = "[a-zA-Z\\$_\u00a1-\uffff][a-zA-Z\\d\\$_\u00a1-\uffff]*\\b"; - - var escapedRe = "\\\\(?:x[0-9a-fA-F]{2}|" + // hex - "u[0-9a-fA-F]{4}|" + // unicode - "[0-2][0-7]{0,2}|" + // oct - "3[0-6][0-7]?|" + // oct - "37[0-7]?|" + // oct - "[4-7][0-7]?|" + //oct - ".)"; - - this.$rules = { - "no_regex" : [ - { - token : "comment", - regex : "\\/\\/", - next : "line_comment" - }, - DocCommentHighlightRules.getStartRule("doc-start"), - { - token : "comment", // multi line comment - regex : /\/\*/, - next : "comment" - }, { - token : "string", - regex : "'(?=.)", - next : "qstring" - }, { - token : "string", - regex : '"(?=.)', - next : "qqstring" - }, { - token : "constant.numeric", // hex - regex : /0[xX][0-9a-fA-F]+\b/ - }, { - token : "constant.numeric", // float - regex : /[+-]?\d+(?:(?:\.\d*)?(?:[eE][+-]?\d+)?)?\b/ - }, { - token : [ - "storage.type", "punctuation.operator", "support.function", - "punctuation.operator", "entity.name.function", "text","keyword.operator" - ], - regex : "(" + identifierRe + ")(\\.)(prototype)(\\.)(" + identifierRe +")(\\s*)(=)", - next: "function_arguments" - }, { - token : [ - "storage.type", "punctuation.operator", "entity.name.function", "text", - "keyword.operator", "text", "storage.type", "text", "paren.lparen" - ], - regex : "(" + identifierRe + ")(\\.)(" + identifierRe +")(\\s*)(=)(\\s*)(function)(\\s*)(\\()", - next: "function_arguments" - }, { - token : [ - "entity.name.function", "text", "keyword.operator", "text", "storage.type", - "text", "paren.lparen" - ], - regex : "(" + identifierRe +")(\\s*)(=)(\\s*)(function)(\\s*)(\\()", - next: "function_arguments" - }, { - token : [ - "storage.type", "punctuation.operator", "entity.name.function", "text", - "keyword.operator", "text", - "storage.type", "text", "entity.name.function", "text", "paren.lparen" - ], - regex : "(" + identifierRe + ")(\\.)(" + identifierRe +")(\\s*)(=)(\\s*)(function)(\\s+)(\\w+)(\\s*)(\\()", - next: "function_arguments" - }, { - token : [ - "storage.type", "text", "entity.name.function", "text", "paren.lparen" - ], - regex : "(function)(\\s+)(" + identifierRe + ")(\\s*)(\\()", - next: "function_arguments" - }, { - token : [ - "entity.name.function", "text", "punctuation.operator", - "text", "storage.type", "text", "paren.lparen" - ], - regex : "(" + identifierRe + ")(\\s*)(:)(\\s*)(function)(\\s*)(\\()", - next: "function_arguments" - }, { - token : [ - "text", "text", "storage.type", "text", "paren.lparen" - ], - regex : "(:)(\\s*)(function)(\\s*)(\\()", - next: "function_arguments" - }, { - token : "keyword", - regex : "(?:" + kwBeforeRe + ")\\b", - next : "start" - }, { - token : ["punctuation.operator", "support.function"], - regex : /(\.)(s(?:h(?:ift|ow(?:Mod(?:elessDialog|alDialog)|Help))|croll(?:X|By(?:Pages|Lines)?|Y|To)?|t(?:op|rike)|i(?:n|zeToContent|debar|gnText)|ort|u(?:p|b(?:str(?:ing)?)?)|pli(?:ce|t)|e(?:nd|t(?:Re(?:sizable|questHeader)|M(?:i(?:nutes|lliseconds)|onth)|Seconds|Ho(?:tKeys|urs)|Year|Cursor|Time(?:out)?|Interval|ZOptions|Date|UTC(?:M(?:i(?:nutes|lliseconds)|onth)|Seconds|Hours|Date|FullYear)|FullYear|Active)|arch)|qrt|lice|avePreferences|mall)|h(?:ome|andleEvent)|navigate|c(?:har(?:CodeAt|At)|o(?:s|n(?:cat|textual|firm)|mpile)|eil|lear(?:Timeout|Interval)?|a(?:ptureEvents|ll)|reate(?:StyleSheet|Popup|EventObject))|t(?:o(?:GMTString|S(?:tring|ource)|U(?:TCString|pperCase)|Lo(?:caleString|werCase))|est|a(?:n|int(?:Enabled)?))|i(?:s(?:NaN|Finite)|ndexOf|talics)|d(?:isableExternalCapture|ump|etachEvent)|u(?:n(?:shift|taint|escape|watch)|pdateCommands)|j(?:oin|avaEnabled)|p(?:o(?:p|w)|ush|lugins.refresh|a(?:ddings|rse(?:Int|Float)?)|r(?:int|ompt|eference))|e(?:scape|nableExternalCapture|val|lementFromPoint|x(?:p|ec(?:Script|Command)?))|valueOf|UTC|queryCommand(?:State|Indeterm|Enabled|Value)|f(?:i(?:nd|le(?:ModifiedDate|Size|CreatedDate|UpdatedDate)|xed)|o(?:nt(?:size|color)|rward)|loor|romCharCode)|watch|l(?:ink|o(?:ad|g)|astIndexOf)|a(?:sin|nchor|cos|t(?:tachEvent|ob|an(?:2)?)|pply|lert|b(?:s|ort))|r(?:ou(?:nd|teEvents)|e(?:size(?:By|To)|calc|turnValue|place|verse|l(?:oad|ease(?:Capture|Events)))|andom)|g(?:o|et(?:ResponseHeader|M(?:i(?:nutes|lliseconds)|onth)|Se(?:conds|lection)|Hours|Year|Time(?:zoneOffset)?|Da(?:y|te)|UTC(?:M(?:i(?:nutes|lliseconds)|onth)|Seconds|Hours|Da(?:y|te)|FullYear)|FullYear|A(?:ttention|llResponseHeaders)))|m(?:in|ove(?:B(?:y|elow)|To(?:Absolute)?|Above)|ergeAttributes|a(?:tch|rgins|x))|b(?:toa|ig|o(?:ld|rderWidths)|link|ack))\b(?=\()/ - }, { - token : ["punctuation.operator", "support.function.dom"], - regex : /(\.)(s(?:ub(?:stringData|mit)|plitText|e(?:t(?:NamedItem|Attribute(?:Node)?)|lect))|has(?:ChildNodes|Feature)|namedItem|c(?:l(?:ick|o(?:se|neNode))|reate(?:C(?:omment|DATASection|aption)|T(?:Head|extNode|Foot)|DocumentFragment|ProcessingInstruction|E(?:ntityReference|lement)|Attribute))|tabIndex|i(?:nsert(?:Row|Before|Cell|Data)|tem)|open|delete(?:Row|C(?:ell|aption)|T(?:Head|Foot)|Data)|focus|write(?:ln)?|a(?:dd|ppend(?:Child|Data))|re(?:set|place(?:Child|Data)|move(?:NamedItem|Child|Attribute(?:Node)?)?)|get(?:NamedItem|Element(?:sBy(?:Name|TagName)|ById)|Attribute(?:Node)?)|blur)\b(?=\()/ - }, { - token : ["punctuation.operator", "support.constant"], - regex : /(\.)(s(?:ystemLanguage|cr(?:ipts|ollbars|een(?:X|Y|Top|Left))|t(?:yle(?:Sheets)?|atus(?:Text|bar)?)|ibling(?:Below|Above)|ource|uffixes|e(?:curity(?:Policy)?|l(?:ection|f)))|h(?:istory|ost(?:name)?|as(?:h|Focus))|y|X(?:MLDocument|SLDocument)|n(?:ext|ame(?:space(?:s|URI)|Prop))|M(?:IN_VALUE|AX_VALUE)|c(?:haracterSet|o(?:n(?:structor|trollers)|okieEnabled|lorDepth|mp(?:onents|lete))|urrent|puClass|l(?:i(?:p(?:boardData)?|entInformation)|osed|asses)|alle(?:e|r)|rypto)|t(?:o(?:olbar|p)|ext(?:Transform|Indent|Decoration|Align)|ags)|SQRT(?:1_2|2)|i(?:n(?:ner(?:Height|Width)|put)|ds|gnoreCase)|zIndex|o(?:scpu|n(?:readystatechange|Line)|uter(?:Height|Width)|p(?:sProfile|ener)|ffscreenBuffering)|NEGATIVE_INFINITY|d(?:i(?:splay|alog(?:Height|Top|Width|Left|Arguments)|rectories)|e(?:scription|fault(?:Status|Ch(?:ecked|arset)|View)))|u(?:ser(?:Profile|Language|Agent)|n(?:iqueID|defined)|pdateInterval)|_content|p(?:ixelDepth|ort|ersonalbar|kcs11|l(?:ugins|atform)|a(?:thname|dding(?:Right|Bottom|Top|Left)|rent(?:Window|Layer)?|ge(?:X(?:Offset)?|Y(?:Offset)?))|r(?:o(?:to(?:col|type)|duct(?:Sub)?|mpter)|e(?:vious|fix)))|e(?:n(?:coding|abledPlugin)|x(?:ternal|pando)|mbeds)|v(?:isibility|endor(?:Sub)?|Linkcolor)|URLUnencoded|P(?:I|OSITIVE_INFINITY)|f(?:ilename|o(?:nt(?:Size|Family|Weight)|rmName)|rame(?:s|Element)|gColor)|E|whiteSpace|l(?:i(?:stStyleType|n(?:eHeight|kColor))|o(?:ca(?:tion(?:bar)?|lName)|wsrc)|e(?:ngth|ft(?:Context)?)|a(?:st(?:M(?:odified|atch)|Index|Paren)|yer(?:s|X)|nguage))|a(?:pp(?:MinorVersion|Name|Co(?:deName|re)|Version)|vail(?:Height|Top|Width|Left)|ll|r(?:ity|guments)|Linkcolor|bove)|r(?:ight(?:Context)?|e(?:sponse(?:XML|Text)|adyState))|global|x|m(?:imeTypes|ultiline|enubar|argin(?:Right|Bottom|Top|Left))|L(?:N(?:10|2)|OG(?:10E|2E))|b(?:o(?:ttom|rder(?:Width|RightWidth|BottomWidth|Style|Color|TopWidth|LeftWidth))|ufferDepth|elow|ackground(?:Color|Image)))\b/ - }, { - token : ["storage.type", "punctuation.operator", "support.function.firebug"], - regex : /(console)(\.)(warn|info|log|error|time|timeEnd|assert)\b/ - }, { - token : keywordMapper, - regex : identifierRe - }, { - token : "keyword.operator", - regex : /--|\+\+|[!$%&*+\-~]|===|==|=|!=|!==|<=|>=|<<=|>>=|>>>=|<>|<|>|!|&&|\|\||\?\:|\*=|%=|\+=|\-=|&=|\^=/, - next : "start" - }, { - token : "punctuation.operator", - regex : /\?|\:|\,|\;|\./, - next : "start" - }, { - token : "paren.lparen", - regex : /[\[({]/, - next : "start" - }, { - token : "paren.rparen", - regex : /[\])}]/ - }, { - token : "keyword.operator", - regex : /\/=?/, - next : "start" - }, { - token: "comment", - regex: /^#!.*$/ - } - ], - "start": [ - DocCommentHighlightRules.getStartRule("doc-start"), - { - token : "comment", // multi line comment - regex : "\\/\\*", - next : "comment_regex_allowed" - }, { - token : "comment", - regex : "\\/\\/", - next : "line_comment_regex_allowed" - }, { - token: "string.regexp", - regex: "\\/", - next: "regex" - }, { - token : "text", - regex : "\\s+|^$", - next : "start" - }, { - token: "empty", - regex: "", - next: "no_regex" - } - ], - "regex": [ - { - token: "regexp.keyword.operator", - regex: "\\\\(?:u[\\da-fA-F]{4}|x[\\da-fA-F]{2}|.)" - }, { - token: "string.regexp", - regex: "/[sxngimy]*", - next: "no_regex" - }, { - token : "invalid", - regex: /\{\d+\b,?\d*\}[+*]|[+*$^?][+*]|[$^][?]|\?{3,}/ - }, { - token : "constant.language.escape", - regex: /\(\?[:=!]|\)|\{\d+\b,?\d*\}|[+*]\?|[()$^+*?.]/ - }, { - token : "constant.language.delimiter", - regex: /\|/ - }, { - token: "constant.language.escape", - regex: /\[\^?/, - next: "regex_character_class" - }, { - token: "empty", - regex: "$", - next: "no_regex" - }, { - defaultToken: "string.regexp" - } - ], - "regex_character_class": [ - { - token: "regexp.keyword.operator", - regex: "\\\\(?:u[\\da-fA-F]{4}|x[\\da-fA-F]{2}|.)" - }, { - token: "constant.language.escape", - regex: "]", - next: "regex" - }, { - token: "constant.language.escape", - regex: "-" - }, { - token: "empty", - regex: "$", - next: "no_regex" - }, { - defaultToken: "string.regexp.charachterclass" - } - ], - "function_arguments": [ - { - token: "variable.parameter", - regex: identifierRe - }, { - token: "punctuation.operator", - regex: "[, ]+" - }, { - token: "punctuation.operator", - regex: "$" - }, { - token: "empty", - regex: "", - next: "no_regex" - } - ], - "comment_regex_allowed" : [ - {token : "comment", regex : "\\*\\/", next : "start"}, - {defaultToken : "comment"} - ], - "comment" : [ - {token : "comment", regex : "\\*\\/", next : "no_regex"}, - {defaultToken : "comment"} - ], - "line_comment_regex_allowed" : [ - {token : "comment", regex : "$|^", next : "start"}, - {defaultToken : "comment"} - ], - "line_comment" : [ - {token : "comment", regex : "$|^", next : "no_regex"}, - {defaultToken : "comment"} - ], - "qqstring" : [ - { - token : "constant.language.escape", - regex : escapedRe - }, { - token : "string", - regex : "\\\\$", - next : "qqstring" - }, { - token : "string", - regex : '"|$', - next : "no_regex" - }, { - defaultToken: "string" - } - ], - "qstring" : [ - { - token : "constant.language.escape", - regex : escapedRe - }, { - token : "string", - regex : "\\\\$", - next : "qstring" - }, { - token : "string", - regex : "'|$", - next : "no_regex" - }, { - defaultToken: "string" - } - ] - }; - - this.embedRules(DocCommentHighlightRules, "doc-", - [ DocCommentHighlightRules.getEndRule("no_regex") ]); -}; - -oop.inherits(JavaScriptHighlightRules, TextHighlightRules); - -exports.JavaScriptHighlightRules = JavaScriptHighlightRules; -}); - -ace.define('ace/mode/doc_comment_highlight_rules', ['require', 'exports', 'module' , 'ace/lib/oop', 'ace/mode/text_highlight_rules'], function(require, exports, module) { - - -var oop = require("../lib/oop"); -var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; - -var DocCommentHighlightRules = function() { - - this.$rules = { - "start" : [ { - token : "comment.doc.tag", - regex : "@[\\w\\d_]+" // TODO: fix email addresses - }, { - token : "comment.doc.tag", - regex : "\\bTODO\\b" - }, { - defaultToken : "comment.doc" - }] - }; -}; - -oop.inherits(DocCommentHighlightRules, TextHighlightRules); - -DocCommentHighlightRules.getStartRule = function(start) { - return { - token : "comment.doc", // doc comment - regex : "\\/\\*(?=\\*)", - next : start - }; -}; - -DocCommentHighlightRules.getEndRule = function (start) { - return { - token : "comment.doc", // closing comment - regex : "\\*\\/", - next : start - }; -}; - - -exports.DocCommentHighlightRules = DocCommentHighlightRules; - -}); - -ace.define('ace/mode/matching_brace_outdent', ['require', 'exports', 'module' , 'ace/range'], function(require, exports, module) { - - -var Range = require("../range").Range; - -var MatchingBraceOutdent = function() {}; - -(function() { - - this.checkOutdent = function(line, input) { - if (! /^\s+$/.test(line)) - return false; - - return /^\s*\}/.test(input); - }; - - this.autoOutdent = function(doc, row) { - var line = doc.getLine(row); - var match = line.match(/^(\s*\})/); - - if (!match) return 0; - - var column = match[1].length; - var openBracePos = doc.findMatchingBracket({row: row, column: column}); - - if (!openBracePos || openBracePos.row == row) return 0; - - var indent = this.$getIndent(doc.getLine(openBracePos.row)); - doc.replace(new Range(row, 0, row, column-1), indent); - }; - - this.$getIndent = function(line) { - return line.match(/^\s*/)[0]; - }; - -}).call(MatchingBraceOutdent.prototype); - -exports.MatchingBraceOutdent = MatchingBraceOutdent; -}); - -ace.define('ace/mode/behaviour/cstyle', ['require', 'exports', 'module' , 'ace/lib/oop', 'ace/mode/behaviour', 'ace/token_iterator', 'ace/lib/lang'], function(require, exports, module) { - - -var oop = require("../../lib/oop"); -var Behaviour = require("../behaviour").Behaviour; -var TokenIterator = require("../../token_iterator").TokenIterator; -var lang = require("../../lib/lang"); - -var SAFE_INSERT_IN_TOKENS = - ["text", "paren.rparen", "punctuation.operator"]; -var SAFE_INSERT_BEFORE_TOKENS = - ["text", "paren.rparen", "punctuation.operator", "comment"]; - - -var autoInsertedBrackets = 0; -var autoInsertedRow = -1; -var autoInsertedLineEnd = ""; -var maybeInsertedBrackets = 0; -var maybeInsertedRow = -1; -var maybeInsertedLineStart = ""; -var maybeInsertedLineEnd = ""; - -var CstyleBehaviour = function () { - - CstyleBehaviour.isSaneInsertion = function(editor, session) { - var cursor = editor.getCursorPosition(); - var iterator = new TokenIterator(session, cursor.row, cursor.column); - if (!this.$matchTokenType(iterator.getCurrentToken() || "text", SAFE_INSERT_IN_TOKENS)) { - var iterator2 = new TokenIterator(session, cursor.row, cursor.column + 1); - if (!this.$matchTokenType(iterator2.getCurrentToken() || "text", SAFE_INSERT_IN_TOKENS)) - return false; - } - iterator.stepForward(); - return iterator.getCurrentTokenRow() !== cursor.row || - this.$matchTokenType(iterator.getCurrentToken() || "text", SAFE_INSERT_BEFORE_TOKENS); - }; - - CstyleBehaviour.$matchTokenType = function(token, types) { - return types.indexOf(token.type || token) > -1; - }; - - CstyleBehaviour.recordAutoInsert = function(editor, session, bracket) { - var cursor = editor.getCursorPosition(); - var line = session.doc.getLine(cursor.row); - if (!this.isAutoInsertedClosing(cursor, line, autoInsertedLineEnd[0])) - autoInsertedBrackets = 0; - autoInsertedRow = cursor.row; - autoInsertedLineEnd = bracket + line.substr(cursor.column); - autoInsertedBrackets++; - }; - - CstyleBehaviour.recordMaybeInsert = function(editor, session, bracket) { - var cursor = editor.getCursorPosition(); - var line = session.doc.getLine(cursor.row); - if (!this.isMaybeInsertedClosing(cursor, line)) - maybeInsertedBrackets = 0; - maybeInsertedRow = cursor.row; - maybeInsertedLineStart = line.substr(0, cursor.column) + bracket; - maybeInsertedLineEnd = line.substr(cursor.column); - maybeInsertedBrackets++; - }; - - CstyleBehaviour.isAutoInsertedClosing = function(cursor, line, bracket) { - return autoInsertedBrackets > 0 && - cursor.row === autoInsertedRow && - bracket === autoInsertedLineEnd[0] && - line.substr(cursor.column) === autoInsertedLineEnd; - }; - - CstyleBehaviour.isMaybeInsertedClosing = function(cursor, line) { - return maybeInsertedBrackets > 0 && - cursor.row === maybeInsertedRow && - line.substr(cursor.column) === maybeInsertedLineEnd && - line.substr(0, cursor.column) == maybeInsertedLineStart; - }; - - CstyleBehaviour.popAutoInsertedClosing = function() { - autoInsertedLineEnd = autoInsertedLineEnd.substr(1); - autoInsertedBrackets--; - }; - - CstyleBehaviour.clearMaybeInsertedClosing = function() { - maybeInsertedBrackets = 0; - maybeInsertedRow = -1; - }; - - this.add("braces", "insertion", function (state, action, editor, session, text) { - var cursor = editor.getCursorPosition(); - var line = session.doc.getLine(cursor.row); - if (text == '{') { - var selection = editor.getSelectionRange(); - var selected = session.doc.getTextRange(selection); - if (selected !== "" && selected !== "{" && editor.getWrapBehavioursEnabled()) { - return { - text: '{' + selected + '}', - selection: false - }; - } else if (CstyleBehaviour.isSaneInsertion(editor, session)) { - if (/[\]\}\)]/.test(line[cursor.column]) || editor.inMultiSelectMode) { - CstyleBehaviour.recordAutoInsert(editor, session, "}"); - return { - text: '{}', - selection: [1, 1] - }; - } else { - CstyleBehaviour.recordMaybeInsert(editor, session, "{"); - return { - text: '{', - selection: [1, 1] - }; - } - } - } else if (text == '}') { - var rightChar = line.substring(cursor.column, cursor.column + 1); - if (rightChar == '}') { - var matching = session.$findOpeningBracket('}', {column: cursor.column + 1, row: cursor.row}); - if (matching !== null && CstyleBehaviour.isAutoInsertedClosing(cursor, line, text)) { - CstyleBehaviour.popAutoInsertedClosing(); - return { - text: '', - selection: [1, 1] - }; - } - } - } else if (text == "\n" || text == "\r\n") { - var closing = ""; - if (CstyleBehaviour.isMaybeInsertedClosing(cursor, line)) { - closing = lang.stringRepeat("}", maybeInsertedBrackets); - CstyleBehaviour.clearMaybeInsertedClosing(); - } - var rightChar = line.substring(cursor.column, cursor.column + 1); - if (rightChar === '}') { - var openBracePos = session.findMatchingBracket({row: cursor.row, column: cursor.column+1}, '}'); - if (!openBracePos) - return null; - var next_indent = this.$getIndent(session.getLine(openBracePos.row)); - } else if (closing) { - var next_indent = this.$getIndent(line); - } else { - return; - } - var indent = next_indent + session.getTabString(); - - return { - text: '\n' + indent + '\n' + next_indent + closing, - selection: [1, indent.length, 1, indent.length] - }; - } else { - CstyleBehaviour.clearMaybeInsertedClosing(); - } - }); - - this.add("braces", "deletion", function (state, action, editor, session, range) { - var selected = session.doc.getTextRange(range); - if (!range.isMultiLine() && selected == '{') { - var line = session.doc.getLine(range.start.row); - var rightChar = line.substring(range.end.column, range.end.column + 1); - if (rightChar == '}') { - range.end.column++; - return range; - } else { - maybeInsertedBrackets--; - } - } - }); - - this.add("parens", "insertion", function (state, action, editor, session, text) { - if (text == '(') { - var selection = editor.getSelectionRange(); - var selected = session.doc.getTextRange(selection); - if (selected !== "" && editor.getWrapBehavioursEnabled()) { - return { - text: '(' + selected + ')', - selection: false - }; - } else if (CstyleBehaviour.isSaneInsertion(editor, session)) { - CstyleBehaviour.recordAutoInsert(editor, session, ")"); - return { - text: '()', - selection: [1, 1] - }; - } - } else if (text == ')') { - var cursor = editor.getCursorPosition(); - var line = session.doc.getLine(cursor.row); - var rightChar = line.substring(cursor.column, cursor.column + 1); - if (rightChar == ')') { - var matching = session.$findOpeningBracket(')', {column: cursor.column + 1, row: cursor.row}); - if (matching !== null && CstyleBehaviour.isAutoInsertedClosing(cursor, line, text)) { - CstyleBehaviour.popAutoInsertedClosing(); - return { - text: '', - selection: [1, 1] - }; - } - } - } - }); - - this.add("parens", "deletion", function (state, action, editor, session, range) { - var selected = session.doc.getTextRange(range); - if (!range.isMultiLine() && selected == '(') { - var line = session.doc.getLine(range.start.row); - var rightChar = line.substring(range.start.column + 1, range.start.column + 2); - if (rightChar == ')') { - range.end.column++; - return range; - } - } - }); - - this.add("brackets", "insertion", function (state, action, editor, session, text) { - if (text == '[') { - var selection = editor.getSelectionRange(); - var selected = session.doc.getTextRange(selection); - if (selected !== "" && editor.getWrapBehavioursEnabled()) { - return { - text: '[' + selected + ']', - selection: false - }; - } else if (CstyleBehaviour.isSaneInsertion(editor, session)) { - CstyleBehaviour.recordAutoInsert(editor, session, "]"); - return { - text: '[]', - selection: [1, 1] - }; - } - } else if (text == ']') { - var cursor = editor.getCursorPosition(); - var line = session.doc.getLine(cursor.row); - var rightChar = line.substring(cursor.column, cursor.column + 1); - if (rightChar == ']') { - var matching = session.$findOpeningBracket(']', {column: cursor.column + 1, row: cursor.row}); - if (matching !== null && CstyleBehaviour.isAutoInsertedClosing(cursor, line, text)) { - CstyleBehaviour.popAutoInsertedClosing(); - return { - text: '', - selection: [1, 1] - }; - } - } - } - }); - - this.add("brackets", "deletion", function (state, action, editor, session, range) { - var selected = session.doc.getTextRange(range); - if (!range.isMultiLine() && selected == '[') { - var line = session.doc.getLine(range.start.row); - var rightChar = line.substring(range.start.column + 1, range.start.column + 2); - if (rightChar == ']') { - range.end.column++; - return range; - } - } - }); - - this.add("string_dquotes", "insertion", function (state, action, editor, session, text) { - if (text == '"' || text == "'") { - var quote = text; - var selection = editor.getSelectionRange(); - var selected = session.doc.getTextRange(selection); - if (selected !== "" && selected !== "'" && selected != '"' && editor.getWrapBehavioursEnabled()) { - return { - text: quote + selected + quote, - selection: false - }; - } else { - var cursor = editor.getCursorPosition(); - var line = session.doc.getLine(cursor.row); - var leftChar = line.substring(cursor.column-1, cursor.column); - if (leftChar == '\\') { - return null; - } - var tokens = session.getTokens(selection.start.row); - var col = 0, token; - var quotepos = -1; // Track whether we're inside an open quote. - - for (var x = 0; x < tokens.length; x++) { - token = tokens[x]; - if (token.type == "string") { - quotepos = -1; - } else if (quotepos < 0) { - quotepos = token.value.indexOf(quote); - } - if ((token.value.length + col) > selection.start.column) { - break; - } - col += tokens[x].value.length; - } - if (!token || (quotepos < 0 && token.type !== "comment" && (token.type !== "string" || ((selection.start.column !== token.value.length+col-1) && token.value.lastIndexOf(quote) === token.value.length-1)))) { - if (!CstyleBehaviour.isSaneInsertion(editor, session)) - return; - return { - text: quote + quote, - selection: [1,1] - }; - } else if (token && token.type === "string") { - var rightChar = line.substring(cursor.column, cursor.column + 1); - if (rightChar == quote) { - return { - text: '', - selection: [1, 1] - }; - } - } - } - } - }); - - this.add("string_dquotes", "deletion", function (state, action, editor, session, range) { - var selected = session.doc.getTextRange(range); - if (!range.isMultiLine() && (selected == '"' || selected == "'")) { - var line = session.doc.getLine(range.start.row); - var rightChar = line.substring(range.start.column + 1, range.start.column + 2); - if (rightChar == selected) { - range.end.column++; - return range; - } - } - }); - -}; - -oop.inherits(CstyleBehaviour, Behaviour); - -exports.CstyleBehaviour = CstyleBehaviour; -}); - -ace.define('ace/mode/folding/cstyle', ['require', 'exports', 'module' , 'ace/lib/oop', 'ace/range', 'ace/mode/folding/fold_mode'], function(require, exports, module) { - - -var oop = require("../../lib/oop"); -var Range = require("../../range").Range; -var BaseFoldMode = require("./fold_mode").FoldMode; - -var FoldMode = exports.FoldMode = function(commentRegex) { - if (commentRegex) { - this.foldingStartMarker = new RegExp( - this.foldingStartMarker.source.replace(/\|[^|]*?$/, "|" + commentRegex.start) - ); - this.foldingStopMarker = new RegExp( - this.foldingStopMarker.source.replace(/\|[^|]*?$/, "|" + commentRegex.end) - ); - } -}; -oop.inherits(FoldMode, BaseFoldMode); - -(function() { - - this.foldingStartMarker = /(\{|\[)[^\}\]]*$|^\s*(\/\*)/; - this.foldingStopMarker = /^[^\[\{]*(\}|\])|^[\s\*]*(\*\/)/; - - this.getFoldWidgetRange = function(session, foldStyle, row, forceMultiline) { - var line = session.getLine(row); - var match = line.match(this.foldingStartMarker); - if (match) { - var i = match.index; - - if (match[1]) - return this.openingBracketBlock(session, match[1], row, i); - - var range = session.getCommentFoldRange(row, i + match[0].length, 1); - - if (range && !range.isMultiLine()) { - if (forceMultiline) { - range = this.getSectionRange(session, row); - } else if (foldStyle != "all") - range = null; - } - - return range; - } - - if (foldStyle === "markbegin") - return; - - var match = line.match(this.foldingStopMarker); - if (match) { - var i = match.index + match[0].length; - - if (match[1]) - return this.closingBracketBlock(session, match[1], row, i); - - return session.getCommentFoldRange(row, i, -1); - } - }; - - this.getSectionRange = function(session, row) { - var line = session.getLine(row); - var startIndent = line.search(/\S/); - var startRow = row; - var startColumn = line.length; - row = row + 1; - var endRow = row; - var maxRow = session.getLength(); - while (++row < maxRow) { - line = session.getLine(row); - var indent = line.search(/\S/); - if (indent === -1) - continue; - if (startIndent > indent) - break; - var subRange = this.getFoldWidgetRange(session, "all", row); - - if (subRange) { - if (subRange.start.row <= startRow) { - break; - } else if (subRange.isMultiLine()) { - row = subRange.end.row; - } else if (startIndent == indent) { - break; - } - } - endRow = row; - } - - return new Range(startRow, startColumn, endRow, session.getLine(endRow).length); - }; - -}).call(FoldMode.prototype); - -}); -ace.define('ace/mode/scala_highlight_rules', ['require', 'exports', 'module' , 'ace/lib/oop', 'ace/mode/doc_comment_highlight_rules', 'ace/mode/text_highlight_rules'], function(require, exports, module) { - - -var oop = require("../lib/oop"); -var DocCommentHighlightRules = require("./doc_comment_highlight_rules").DocCommentHighlightRules; -var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; - -var ScalaHighlightRules = function() { - var keywords = ( - "case|default|do|else|for|if|match|while|throw|return|try|catch|finally|yield|" + - "abstract|class|def|extends|final|forSome|implicit|implicits|import|lazy|new|object|" + - "override|package|private|protected|sealed|super|this|trait|type|val|var|with" - ); - - var buildinConstants = ("true|false"); - - var langClasses = ( - "AbstractMethodError|AssertionError|ClassCircularityError|"+ - "ClassFormatError|Deprecated|EnumConstantNotPresentException|"+ - "ExceptionInInitializerError|IllegalAccessError|"+ - "IllegalThreadStateException|InstantiationError|InternalError|"+ - - "NegativeArraySizeException|NoSuchFieldError|Override|Process|"+ - "ProcessBuilder|SecurityManager|StringIndexOutOfBoundsException|"+ - "SuppressWarnings|TypeNotPresentException|UnknownError|"+ - "UnsatisfiedLinkError|UnsupportedClassVersionError|VerifyError|"+ - "InstantiationException|IndexOutOfBoundsException|"+ - "ArrayIndexOutOfBoundsException|CloneNotSupportedException|"+ - "NoSuchFieldException|IllegalArgumentException|NumberFormatException|"+ - "SecurityException|Void|InheritableThreadLocal|IllegalStateException|"+ - "InterruptedException|NoSuchMethodException|IllegalAccessException|"+ - "UnsupportedOperationException|Enum|StrictMath|Package|Compiler|"+ - "Readable|Runtime|StringBuilder|Math|IncompatibleClassChangeError|"+ - "NoSuchMethodError|ThreadLocal|RuntimePermission|ArithmeticException|"+ - "NullPointerException|Long|Integer|Short|Byte|Double|Number|Float|"+ - "Character|Boolean|StackTraceElement|Appendable|StringBuffer|"+ - "Iterable|ThreadGroup|Runnable|Thread|IllegalMonitorStateException|"+ - "StackOverflowError|OutOfMemoryError|VirtualMachineError|"+ - "ArrayStoreException|ClassCastException|LinkageError|"+ - "NoClassDefFoundError|ClassNotFoundException|RuntimeException|"+ - "Exception|ThreadDeath|Error|Throwable|System|ClassLoader|"+ - "Cloneable|Class|CharSequence|Comparable|String|Object|" + - "Unit|Any|AnyVal|AnyRef|Null|ScalaObject|Singleton|Seq|Iterable|List|" + - "Option|Array|Char|Byte|Short|Int|Long|Nothing" - - - ); - - var keywordMapper = this.createKeywordMapper({ - "variable.language": "this", - "keyword": keywords, - "support.function": langClasses, - "constant.language": buildinConstants - }, "identifier"); - - this.$rules = { - "start" : [ - { - token : "comment", - regex : "\\/\\/.*$" - }, - DocCommentHighlightRules.getStartRule("doc-start"), - { - token : "comment", // multi line comment - regex : "\\/\\*", - next : "comment" - }, { - token : "string.regexp", - regex : "[/](?:(?:\\[(?:\\\\]|[^\\]])+\\])|(?:\\\\/|[^\\]/]))*[/]\\w*\\s*(?=[).,;]|$)" - }, { - token : "string", - regex : '"""', - next : "tstring" - }, { - token : "string", - regex : '"(?=.)', // " strings can't span multiple lines - next : "string" - }, { - token : "symbol.constant", // single line - regex : "'[\\w\\d_]+" - }, { - token : "constant.numeric", // hex - regex : "0[xX][0-9a-fA-F]+\\b" - }, { - token : "constant.numeric", // float - regex : "[+-]?\\d+(?:(?:\\.\\d*)?(?:[eE][+-]?\\d+)?)?\\b" - }, { - token : "constant.language.boolean", - regex : "(?:true|false)\\b" - }, { - token : keywordMapper, - regex : "[a-zA-Z_$][a-zA-Z0-9_$]*\\b" - }, { - token : "keyword.operator", - regex : "!|\\$|%|&|\\*|\\-\\-|\\-|\\+\\+|\\+|~|===|==|=|!=|!==|<=|>=|<<=|>>=|>>>=|<>|<|>|!|&&|\\|\\||\\?\\:|\\*=|%=|\\+=|\\-=|&=|\\^=|\\b(?:in|instanceof|new|delete|typeof|void)" - }, { - token : "paren.lparen", - regex : "[[({]" - }, { - token : "paren.rparen", - regex : "[\\])}]" - }, { - token : "text", - regex : "\\s+" - } - ], - "comment" : [ - { - token : "comment", // closing comment - regex : ".*?\\*\\/", - next : "start" - }, { - token : "comment", // comment spanning whole line - regex : ".+" - } - ], - "string" : [ - { - token : "escape", - regex : '\\\\"' - }, { - token : "string", - regex : '"', - next : "start" - }, { - token : "string.invalid", - regex : '[^"\\\\]*$', - next : "start" - }, { - token : "string", - regex : '[^"\\\\]+' - } - ], - "tstring" : [ - { - token : "string", // closing comment - regex : '"{3,5}', - next : "start" - }, { - token : "string", // comment spanning whole line - regex : ".+?" - } - ] - }; - - this.embedRules(DocCommentHighlightRules, "doc-", - [ DocCommentHighlightRules.getEndRule("start") ]); -}; - -oop.inherits(ScalaHighlightRules, TextHighlightRules); - -exports.ScalaHighlightRules = ScalaHighlightRules; -}); diff --git a/IDE/jsrealb-ide/ace-src-noconflict/mode-scheme.js b/IDE/jsrealb-ide/ace-src-noconflict/mode-scheme.js deleted file mode 100644 index 55f648a5..00000000 --- a/IDE/jsrealb-ide/ace-src-noconflict/mode-scheme.js +++ /dev/null @@ -1,143 +0,0 @@ -/* ***** BEGIN LICENSE BLOCK ***** - * Distributed under the BSD license: - * - * Copyright (c) 2012, Ajax.org B.V. - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are met: - * * Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * * Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * * Neither the name of Ajax.org B.V. nor the - * names of its contributors may be used to endorse or promote products - * derived from this software without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND - * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED - * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE - * DISCLAIMED. IN NO EVENT SHALL AJAX.ORG B.V. BE LIABLE FOR ANY - * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES - * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; - * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND - * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - * - * - * Contributor(s): - * - * NalaGinrut@gmail.com - * - * ***** END LICENSE BLOCK ***** */ - -ace.define('ace/mode/scheme', ['require', 'exports', 'module' , 'ace/lib/oop', 'ace/mode/text', 'ace/tokenizer', 'ace/mode/scheme_highlight_rules'], function(require, exports, module) { - - -var oop = require("../lib/oop"); -var TextMode = require("./text").Mode; -var Tokenizer = require("../tokenizer").Tokenizer; -var SchemeHighlightRules = require("./scheme_highlight_rules").SchemeHighlightRules; - -var Mode = function() { - this.HighlightRules = SchemeHighlightRules; -}; -oop.inherits(Mode, TextMode); - -(function() { - - this.lineCommentStart = ";"; - - this.$id = "ace/mode/scheme"; -}).call(Mode.prototype); - -exports.Mode = Mode; -}); - -ace.define('ace/mode/scheme_highlight_rules', ['require', 'exports', 'module' , 'ace/lib/oop', 'ace/mode/text_highlight_rules'], function(require, exports, module) { - - -var oop = require("../lib/oop"); -var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; - -var SchemeHighlightRules = function() { - var keywordControl = "case|do|let|loop|if|else|when"; - var keywordOperator = "eq?|eqv?|equal?|and|or|not|null?"; - var constantLanguage = "#t|#f"; - var supportFunctions = "cons|car|cdr|cond|lambda|lambda*|syntax-rules|format|set!|quote|eval|append|list|list?|member?|load"; - - var keywordMapper = this.createKeywordMapper({ - "keyword.control": keywordControl, - "keyword.operator": keywordOperator, - "constant.language": constantLanguage, - "support.function": supportFunctions - }, "identifier", true); - - this.$rules = - { - "start": [ - { - token : "comment", - regex : ";.*$" - }, - { - "token": ["storage.type.function-type.scheme", "text", "entity.name.function.scheme"], - "regex": "(?:\\b(?:(define|define-syntax|define-macro))\\b)(\\s+)((?:\\w|\\-|\\!|\\?)*)" - }, - { - "token": "punctuation.definition.constant.character.scheme", - "regex": "#:\\S+" - }, - { - "token": ["punctuation.definition.variable.scheme", "variable.other.global.scheme", "punctuation.definition.variable.scheme"], - "regex": "(\\*)(\\S*)(\\*)" - }, - { - "token" : "constant.numeric", // hex - "regex" : "#[xXoObB][0-9a-fA-F]+" - }, - { - "token" : "constant.numeric", // float - "regex" : "[+-]?\\d+(?:(?:\\.\\d*)?(?:[eE][+-]?\\d+)?)?" - }, - { - "token" : keywordMapper, - "regex" : "[a-zA-Z_#][a-zA-Z0-9_\\-\\?\\!\\*]*" - }, - { - "token" : "string", - "regex" : '"(?=.)', - "next" : "qqstring" - } - ], - "qqstring": [ - { - "token": "constant.character.escape.scheme", - "regex": "\\\\." - }, - { - "token" : "string", - "regex" : '[^"\\\\]+', - "merge" : true - }, { - "token" : "string", - "regex" : "\\\\$", - "next" : "qqstring", - "merge" : true - }, { - "token" : "string", - "regex" : '"|$', - "next" : "start", - "merge" : true - } - ] -} - -}; - -oop.inherits(SchemeHighlightRules, TextHighlightRules); - -exports.SchemeHighlightRules = SchemeHighlightRules; -}); diff --git a/IDE/jsrealb-ide/ace-src-noconflict/mode-scss.js b/IDE/jsrealb-ide/ace-src-noconflict/mode-scss.js deleted file mode 100644 index 138447e7..00000000 --- a/IDE/jsrealb-ide/ace-src-noconflict/mode-scss.js +++ /dev/null @@ -1,879 +0,0 @@ -/* ***** BEGIN LICENSE BLOCK ***** - * Distributed under the BSD license: - * - * Copyright (c) 2010, Ajax.org B.V. - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are met: - * * Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * * Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * * Neither the name of Ajax.org B.V. nor the - * names of its contributors may be used to endorse or promote products - * derived from this software without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND - * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED - * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE - * DISCLAIMED. IN NO EVENT SHALL AJAX.ORG B.V. BE LIABLE FOR ANY - * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES - * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; - * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND - * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - * - * ***** END LICENSE BLOCK ***** */ - -ace.define('ace/mode/scss', ['require', 'exports', 'module' , 'ace/lib/oop', 'ace/mode/text', 'ace/tokenizer', 'ace/mode/scss_highlight_rules', 'ace/mode/matching_brace_outdent', 'ace/mode/behaviour/css', 'ace/mode/folding/cstyle'], function(require, exports, module) { - - -var oop = require("../lib/oop"); -var TextMode = require("./text").Mode; -var Tokenizer = require("../tokenizer").Tokenizer; -var ScssHighlightRules = require("./scss_highlight_rules").ScssHighlightRules; -var MatchingBraceOutdent = require("./matching_brace_outdent").MatchingBraceOutdent; -var CssBehaviour = require("./behaviour/css").CssBehaviour; -var CStyleFoldMode = require("./folding/cstyle").FoldMode; - -var Mode = function() { - this.HighlightRules = ScssHighlightRules; - this.$outdent = new MatchingBraceOutdent(); - this.$behaviour = new CssBehaviour(); - this.foldingRules = new CStyleFoldMode(); -}; -oop.inherits(Mode, TextMode); - -(function() { - - this.lineCommentStart = "//"; - this.blockComment = {start: "/*", end: "*/"}; - - this.getNextLineIndent = function(state, line, tab) { - var indent = this.$getIndent(line); - var tokens = this.getTokenizer().getLineTokens(line, state).tokens; - if (tokens.length && tokens[tokens.length-1].type == "comment") { - return indent; - } - - var match = line.match(/^.*\{\s*$/); - if (match) { - indent += tab; - } - - return indent; - }; - - this.checkOutdent = function(state, line, input) { - return this.$outdent.checkOutdent(line, input); - }; - - this.autoOutdent = function(state, doc, row) { - this.$outdent.autoOutdent(doc, row); - }; - - this.$id = "ace/mode/scss"; -}).call(Mode.prototype); - -exports.Mode = Mode; - -}); - -ace.define('ace/mode/scss_highlight_rules', ['require', 'exports', 'module' , 'ace/lib/oop', 'ace/lib/lang', 'ace/mode/text_highlight_rules'], function(require, exports, module) { - - -var oop = require("../lib/oop"); -var lang = require("../lib/lang"); -var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; - -var ScssHighlightRules = function() { - - var properties = lang.arrayToMap( (function () { - - var browserPrefix = ("-webkit-|-moz-|-o-|-ms-|-svg-|-pie-|-khtml-").split("|"); - - var prefixProperties = ("appearance|background-clip|background-inline-policy|background-origin|" + - "background-size|binding|border-bottom-colors|border-left-colors|" + - "border-right-colors|border-top-colors|border-end|border-end-color|" + - "border-end-style|border-end-width|border-image|border-start|" + - "border-start-color|border-start-style|border-start-width|box-align|" + - "box-direction|box-flex|box-flexgroup|box-ordinal-group|box-orient|" + - "box-pack|box-sizing|column-count|column-gap|column-width|column-rule|" + - "column-rule-width|column-rule-style|column-rule-color|float-edge|" + - "font-feature-settings|font-language-override|force-broken-image-icon|" + - "image-region|margin-end|margin-start|opacity|outline|outline-color|" + - "outline-offset|outline-radius|outline-radius-bottomleft|" + - "outline-radius-bottomright|outline-radius-topleft|outline-radius-topright|" + - "outline-style|outline-width|padding-end|padding-start|stack-sizing|" + - "tab-size|text-blink|text-decoration-color|text-decoration-line|" + - "text-decoration-style|transform|transform-origin|transition|" + - "transition-delay|transition-duration|transition-property|" + - "transition-timing-function|user-focus|user-input|user-modify|user-select|" + - "window-shadow|border-radius").split("|"); - - var properties = ("azimuth|background-attachment|background-color|background-image|" + - "background-position|background-repeat|background|border-bottom-color|" + - "border-bottom-style|border-bottom-width|border-bottom|border-collapse|" + - "border-color|border-left-color|border-left-style|border-left-width|" + - "border-left|border-right-color|border-right-style|border-right-width|" + - "border-right|border-spacing|border-style|border-top-color|" + - "border-top-style|border-top-width|border-top|border-width|border|bottom|" + - "box-shadow|box-sizing|caption-side|clear|clip|color|content|counter-increment|" + - "counter-reset|cue-after|cue-before|cue|cursor|direction|display|" + - "elevation|empty-cells|float|font-family|font-size-adjust|font-size|" + - "font-stretch|font-style|font-variant|font-weight|font|height|left|" + - "letter-spacing|line-height|list-style-image|list-style-position|" + - "list-style-type|list-style|margin-bottom|margin-left|margin-right|" + - "margin-top|marker-offset|margin|marks|max-height|max-width|min-height|" + - "min-width|opacity|orphans|outline-color|" + - "outline-style|outline-width|outline|overflow|overflow-x|overflow-y|padding-bottom|" + - "padding-left|padding-right|padding-top|padding|page-break-after|" + - "page-break-before|page-break-inside|page|pause-after|pause-before|" + - "pause|pitch-range|pitch|play-during|position|quotes|richness|right|" + - "size|speak-header|speak-numeral|speak-punctuation|speech-rate|speak|" + - "stress|table-layout|text-align|text-decoration|text-indent|" + - "text-shadow|text-transform|top|unicode-bidi|vertical-align|" + - "visibility|voice-family|volume|white-space|widows|width|word-spacing|" + - "z-index").split("|"); - var ret = []; - for (var i=0, ln=browserPrefix.length; i|<=|>=|==|!=|-|%|#|\\+|\\$|\\+|\\*" - }, { - token : "paren.lparen", - regex : "[[({]" - }, { - token : "paren.rparen", - regex : "[\\])}]" - }, { - token : "text", - regex : "\\s+" - }, { - caseInsensitive: true - } - ], - "comment" : [ - { - token : "comment", // closing comment - regex : ".*?\\*\\/", - next : "start" - }, { - token : "comment", // comment spanning whole line - regex : ".+" - } - ], - "qqstring" : [ - { - token : "string", - regex : '(?:(?:\\\\.)|(?:[^"\\\\]))*?"', - next : "start" - }, { - token : "string", - regex : '.+' - } - ], - "qstring" : [ - { - token : "string", - regex : "(?:(?:\\\\.)|(?:[^'\\\\]))*?'", - next : "start" - }, { - token : "string", - regex : '.+' - } - ] - }; -}; - -oop.inherits(ScssHighlightRules, TextHighlightRules); - -exports.ScssHighlightRules = ScssHighlightRules; - -}); - -ace.define('ace/mode/matching_brace_outdent', ['require', 'exports', 'module' , 'ace/range'], function(require, exports, module) { - - -var Range = require("../range").Range; - -var MatchingBraceOutdent = function() {}; - -(function() { - - this.checkOutdent = function(line, input) { - if (! /^\s+$/.test(line)) - return false; - - return /^\s*\}/.test(input); - }; - - this.autoOutdent = function(doc, row) { - var line = doc.getLine(row); - var match = line.match(/^(\s*\})/); - - if (!match) return 0; - - var column = match[1].length; - var openBracePos = doc.findMatchingBracket({row: row, column: column}); - - if (!openBracePos || openBracePos.row == row) return 0; - - var indent = this.$getIndent(doc.getLine(openBracePos.row)); - doc.replace(new Range(row, 0, row, column-1), indent); - }; - - this.$getIndent = function(line) { - return line.match(/^\s*/)[0]; - }; - -}).call(MatchingBraceOutdent.prototype); - -exports.MatchingBraceOutdent = MatchingBraceOutdent; -}); - -ace.define('ace/mode/behaviour/css', ['require', 'exports', 'module' , 'ace/lib/oop', 'ace/mode/behaviour', 'ace/mode/behaviour/cstyle', 'ace/token_iterator'], function(require, exports, module) { - - -var oop = require("../../lib/oop"); -var Behaviour = require("../behaviour").Behaviour; -var CstyleBehaviour = require("./cstyle").CstyleBehaviour; -var TokenIterator = require("../../token_iterator").TokenIterator; - -var CssBehaviour = function () { - - this.inherit(CstyleBehaviour); - - this.add("colon", "insertion", function (state, action, editor, session, text) { - if (text === ':') { - var cursor = editor.getCursorPosition(); - var iterator = new TokenIterator(session, cursor.row, cursor.column); - var token = iterator.getCurrentToken(); - if (token && token.value.match(/\s+/)) { - token = iterator.stepBackward(); - } - if (token && token.type === 'support.type') { - var line = session.doc.getLine(cursor.row); - var rightChar = line.substring(cursor.column, cursor.column + 1); - if (rightChar === ':') { - return { - text: '', - selection: [1, 1] - } - } - if (!line.substring(cursor.column).match(/^\s*;/)) { - return { - text: ':;', - selection: [1, 1] - } - } - } - } - }); - - this.add("colon", "deletion", function (state, action, editor, session, range) { - var selected = session.doc.getTextRange(range); - if (!range.isMultiLine() && selected === ':') { - var cursor = editor.getCursorPosition(); - var iterator = new TokenIterator(session, cursor.row, cursor.column); - var token = iterator.getCurrentToken(); - if (token && token.value.match(/\s+/)) { - token = iterator.stepBackward(); - } - if (token && token.type === 'support.type') { - var line = session.doc.getLine(range.start.row); - var rightChar = line.substring(range.end.column, range.end.column + 1); - if (rightChar === ';') { - range.end.column ++; - return range; - } - } - } - }); - - this.add("semicolon", "insertion", function (state, action, editor, session, text) { - if (text === ';') { - var cursor = editor.getCursorPosition(); - var line = session.doc.getLine(cursor.row); - var rightChar = line.substring(cursor.column, cursor.column + 1); - if (rightChar === ';') { - return { - text: '', - selection: [1, 1] - } - } - } - }); - -} -oop.inherits(CssBehaviour, CstyleBehaviour); - -exports.CssBehaviour = CssBehaviour; -}); - -ace.define('ace/mode/behaviour/cstyle', ['require', 'exports', 'module' , 'ace/lib/oop', 'ace/mode/behaviour', 'ace/token_iterator', 'ace/lib/lang'], function(require, exports, module) { - - -var oop = require("../../lib/oop"); -var Behaviour = require("../behaviour").Behaviour; -var TokenIterator = require("../../token_iterator").TokenIterator; -var lang = require("../../lib/lang"); - -var SAFE_INSERT_IN_TOKENS = - ["text", "paren.rparen", "punctuation.operator"]; -var SAFE_INSERT_BEFORE_TOKENS = - ["text", "paren.rparen", "punctuation.operator", "comment"]; - - -var autoInsertedBrackets = 0; -var autoInsertedRow = -1; -var autoInsertedLineEnd = ""; -var maybeInsertedBrackets = 0; -var maybeInsertedRow = -1; -var maybeInsertedLineStart = ""; -var maybeInsertedLineEnd = ""; - -var CstyleBehaviour = function () { - - CstyleBehaviour.isSaneInsertion = function(editor, session) { - var cursor = editor.getCursorPosition(); - var iterator = new TokenIterator(session, cursor.row, cursor.column); - if (!this.$matchTokenType(iterator.getCurrentToken() || "text", SAFE_INSERT_IN_TOKENS)) { - var iterator2 = new TokenIterator(session, cursor.row, cursor.column + 1); - if (!this.$matchTokenType(iterator2.getCurrentToken() || "text", SAFE_INSERT_IN_TOKENS)) - return false; - } - iterator.stepForward(); - return iterator.getCurrentTokenRow() !== cursor.row || - this.$matchTokenType(iterator.getCurrentToken() || "text", SAFE_INSERT_BEFORE_TOKENS); - }; - - CstyleBehaviour.$matchTokenType = function(token, types) { - return types.indexOf(token.type || token) > -1; - }; - - CstyleBehaviour.recordAutoInsert = function(editor, session, bracket) { - var cursor = editor.getCursorPosition(); - var line = session.doc.getLine(cursor.row); - if (!this.isAutoInsertedClosing(cursor, line, autoInsertedLineEnd[0])) - autoInsertedBrackets = 0; - autoInsertedRow = cursor.row; - autoInsertedLineEnd = bracket + line.substr(cursor.column); - autoInsertedBrackets++; - }; - - CstyleBehaviour.recordMaybeInsert = function(editor, session, bracket) { - var cursor = editor.getCursorPosition(); - var line = session.doc.getLine(cursor.row); - if (!this.isMaybeInsertedClosing(cursor, line)) - maybeInsertedBrackets = 0; - maybeInsertedRow = cursor.row; - maybeInsertedLineStart = line.substr(0, cursor.column) + bracket; - maybeInsertedLineEnd = line.substr(cursor.column); - maybeInsertedBrackets++; - }; - - CstyleBehaviour.isAutoInsertedClosing = function(cursor, line, bracket) { - return autoInsertedBrackets > 0 && - cursor.row === autoInsertedRow && - bracket === autoInsertedLineEnd[0] && - line.substr(cursor.column) === autoInsertedLineEnd; - }; - - CstyleBehaviour.isMaybeInsertedClosing = function(cursor, line) { - return maybeInsertedBrackets > 0 && - cursor.row === maybeInsertedRow && - line.substr(cursor.column) === maybeInsertedLineEnd && - line.substr(0, cursor.column) == maybeInsertedLineStart; - }; - - CstyleBehaviour.popAutoInsertedClosing = function() { - autoInsertedLineEnd = autoInsertedLineEnd.substr(1); - autoInsertedBrackets--; - }; - - CstyleBehaviour.clearMaybeInsertedClosing = function() { - maybeInsertedBrackets = 0; - maybeInsertedRow = -1; - }; - - this.add("braces", "insertion", function (state, action, editor, session, text) { - var cursor = editor.getCursorPosition(); - var line = session.doc.getLine(cursor.row); - if (text == '{') { - var selection = editor.getSelectionRange(); - var selected = session.doc.getTextRange(selection); - if (selected !== "" && selected !== "{" && editor.getWrapBehavioursEnabled()) { - return { - text: '{' + selected + '}', - selection: false - }; - } else if (CstyleBehaviour.isSaneInsertion(editor, session)) { - if (/[\]\}\)]/.test(line[cursor.column]) || editor.inMultiSelectMode) { - CstyleBehaviour.recordAutoInsert(editor, session, "}"); - return { - text: '{}', - selection: [1, 1] - }; - } else { - CstyleBehaviour.recordMaybeInsert(editor, session, "{"); - return { - text: '{', - selection: [1, 1] - }; - } - } - } else if (text == '}') { - var rightChar = line.substring(cursor.column, cursor.column + 1); - if (rightChar == '}') { - var matching = session.$findOpeningBracket('}', {column: cursor.column + 1, row: cursor.row}); - if (matching !== null && CstyleBehaviour.isAutoInsertedClosing(cursor, line, text)) { - CstyleBehaviour.popAutoInsertedClosing(); - return { - text: '', - selection: [1, 1] - }; - } - } - } else if (text == "\n" || text == "\r\n") { - var closing = ""; - if (CstyleBehaviour.isMaybeInsertedClosing(cursor, line)) { - closing = lang.stringRepeat("}", maybeInsertedBrackets); - CstyleBehaviour.clearMaybeInsertedClosing(); - } - var rightChar = line.substring(cursor.column, cursor.column + 1); - if (rightChar === '}') { - var openBracePos = session.findMatchingBracket({row: cursor.row, column: cursor.column+1}, '}'); - if (!openBracePos) - return null; - var next_indent = this.$getIndent(session.getLine(openBracePos.row)); - } else if (closing) { - var next_indent = this.$getIndent(line); - } else { - return; - } - var indent = next_indent + session.getTabString(); - - return { - text: '\n' + indent + '\n' + next_indent + closing, - selection: [1, indent.length, 1, indent.length] - }; - } else { - CstyleBehaviour.clearMaybeInsertedClosing(); - } - }); - - this.add("braces", "deletion", function (state, action, editor, session, range) { - var selected = session.doc.getTextRange(range); - if (!range.isMultiLine() && selected == '{') { - var line = session.doc.getLine(range.start.row); - var rightChar = line.substring(range.end.column, range.end.column + 1); - if (rightChar == '}') { - range.end.column++; - return range; - } else { - maybeInsertedBrackets--; - } - } - }); - - this.add("parens", "insertion", function (state, action, editor, session, text) { - if (text == '(') { - var selection = editor.getSelectionRange(); - var selected = session.doc.getTextRange(selection); - if (selected !== "" && editor.getWrapBehavioursEnabled()) { - return { - text: '(' + selected + ')', - selection: false - }; - } else if (CstyleBehaviour.isSaneInsertion(editor, session)) { - CstyleBehaviour.recordAutoInsert(editor, session, ")"); - return { - text: '()', - selection: [1, 1] - }; - } - } else if (text == ')') { - var cursor = editor.getCursorPosition(); - var line = session.doc.getLine(cursor.row); - var rightChar = line.substring(cursor.column, cursor.column + 1); - if (rightChar == ')') { - var matching = session.$findOpeningBracket(')', {column: cursor.column + 1, row: cursor.row}); - if (matching !== null && CstyleBehaviour.isAutoInsertedClosing(cursor, line, text)) { - CstyleBehaviour.popAutoInsertedClosing(); - return { - text: '', - selection: [1, 1] - }; - } - } - } - }); - - this.add("parens", "deletion", function (state, action, editor, session, range) { - var selected = session.doc.getTextRange(range); - if (!range.isMultiLine() && selected == '(') { - var line = session.doc.getLine(range.start.row); - var rightChar = line.substring(range.start.column + 1, range.start.column + 2); - if (rightChar == ')') { - range.end.column++; - return range; - } - } - }); - - this.add("brackets", "insertion", function (state, action, editor, session, text) { - if (text == '[') { - var selection = editor.getSelectionRange(); - var selected = session.doc.getTextRange(selection); - if (selected !== "" && editor.getWrapBehavioursEnabled()) { - return { - text: '[' + selected + ']', - selection: false - }; - } else if (CstyleBehaviour.isSaneInsertion(editor, session)) { - CstyleBehaviour.recordAutoInsert(editor, session, "]"); - return { - text: '[]', - selection: [1, 1] - }; - } - } else if (text == ']') { - var cursor = editor.getCursorPosition(); - var line = session.doc.getLine(cursor.row); - var rightChar = line.substring(cursor.column, cursor.column + 1); - if (rightChar == ']') { - var matching = session.$findOpeningBracket(']', {column: cursor.column + 1, row: cursor.row}); - if (matching !== null && CstyleBehaviour.isAutoInsertedClosing(cursor, line, text)) { - CstyleBehaviour.popAutoInsertedClosing(); - return { - text: '', - selection: [1, 1] - }; - } - } - } - }); - - this.add("brackets", "deletion", function (state, action, editor, session, range) { - var selected = session.doc.getTextRange(range); - if (!range.isMultiLine() && selected == '[') { - var line = session.doc.getLine(range.start.row); - var rightChar = line.substring(range.start.column + 1, range.start.column + 2); - if (rightChar == ']') { - range.end.column++; - return range; - } - } - }); - - this.add("string_dquotes", "insertion", function (state, action, editor, session, text) { - if (text == '"' || text == "'") { - var quote = text; - var selection = editor.getSelectionRange(); - var selected = session.doc.getTextRange(selection); - if (selected !== "" && selected !== "'" && selected != '"' && editor.getWrapBehavioursEnabled()) { - return { - text: quote + selected + quote, - selection: false - }; - } else { - var cursor = editor.getCursorPosition(); - var line = session.doc.getLine(cursor.row); - var leftChar = line.substring(cursor.column-1, cursor.column); - if (leftChar == '\\') { - return null; - } - var tokens = session.getTokens(selection.start.row); - var col = 0, token; - var quotepos = -1; // Track whether we're inside an open quote. - - for (var x = 0; x < tokens.length; x++) { - token = tokens[x]; - if (token.type == "string") { - quotepos = -1; - } else if (quotepos < 0) { - quotepos = token.value.indexOf(quote); - } - if ((token.value.length + col) > selection.start.column) { - break; - } - col += tokens[x].value.length; - } - if (!token || (quotepos < 0 && token.type !== "comment" && (token.type !== "string" || ((selection.start.column !== token.value.length+col-1) && token.value.lastIndexOf(quote) === token.value.length-1)))) { - if (!CstyleBehaviour.isSaneInsertion(editor, session)) - return; - return { - text: quote + quote, - selection: [1,1] - }; - } else if (token && token.type === "string") { - var rightChar = line.substring(cursor.column, cursor.column + 1); - if (rightChar == quote) { - return { - text: '', - selection: [1, 1] - }; - } - } - } - } - }); - - this.add("string_dquotes", "deletion", function (state, action, editor, session, range) { - var selected = session.doc.getTextRange(range); - if (!range.isMultiLine() && (selected == '"' || selected == "'")) { - var line = session.doc.getLine(range.start.row); - var rightChar = line.substring(range.start.column + 1, range.start.column + 2); - if (rightChar == selected) { - range.end.column++; - return range; - } - } - }); - -}; - -oop.inherits(CstyleBehaviour, Behaviour); - -exports.CstyleBehaviour = CstyleBehaviour; -}); - -ace.define('ace/mode/folding/cstyle', ['require', 'exports', 'module' , 'ace/lib/oop', 'ace/range', 'ace/mode/folding/fold_mode'], function(require, exports, module) { - - -var oop = require("../../lib/oop"); -var Range = require("../../range").Range; -var BaseFoldMode = require("./fold_mode").FoldMode; - -var FoldMode = exports.FoldMode = function(commentRegex) { - if (commentRegex) { - this.foldingStartMarker = new RegExp( - this.foldingStartMarker.source.replace(/\|[^|]*?$/, "|" + commentRegex.start) - ); - this.foldingStopMarker = new RegExp( - this.foldingStopMarker.source.replace(/\|[^|]*?$/, "|" + commentRegex.end) - ); - } -}; -oop.inherits(FoldMode, BaseFoldMode); - -(function() { - - this.foldingStartMarker = /(\{|\[)[^\}\]]*$|^\s*(\/\*)/; - this.foldingStopMarker = /^[^\[\{]*(\}|\])|^[\s\*]*(\*\/)/; - - this.getFoldWidgetRange = function(session, foldStyle, row, forceMultiline) { - var line = session.getLine(row); - var match = line.match(this.foldingStartMarker); - if (match) { - var i = match.index; - - if (match[1]) - return this.openingBracketBlock(session, match[1], row, i); - - var range = session.getCommentFoldRange(row, i + match[0].length, 1); - - if (range && !range.isMultiLine()) { - if (forceMultiline) { - range = this.getSectionRange(session, row); - } else if (foldStyle != "all") - range = null; - } - - return range; - } - - if (foldStyle === "markbegin") - return; - - var match = line.match(this.foldingStopMarker); - if (match) { - var i = match.index + match[0].length; - - if (match[1]) - return this.closingBracketBlock(session, match[1], row, i); - - return session.getCommentFoldRange(row, i, -1); - } - }; - - this.getSectionRange = function(session, row) { - var line = session.getLine(row); - var startIndent = line.search(/\S/); - var startRow = row; - var startColumn = line.length; - row = row + 1; - var endRow = row; - var maxRow = session.getLength(); - while (++row < maxRow) { - line = session.getLine(row); - var indent = line.search(/\S/); - if (indent === -1) - continue; - if (startIndent > indent) - break; - var subRange = this.getFoldWidgetRange(session, "all", row); - - if (subRange) { - if (subRange.start.row <= startRow) { - break; - } else if (subRange.isMultiLine()) { - row = subRange.end.row; - } else if (startIndent == indent) { - break; - } - } - endRow = row; - } - - return new Range(startRow, startColumn, endRow, session.getLine(endRow).length); - }; - -}).call(FoldMode.prototype); - -}); diff --git a/IDE/jsrealb-ide/ace-src-noconflict/mode-sh.js b/IDE/jsrealb-ide/ace-src-noconflict/mode-sh.js deleted file mode 100644 index 3ef412cd..00000000 --- a/IDE/jsrealb-ide/ace-src-noconflict/mode-sh.js +++ /dev/null @@ -1,320 +0,0 @@ -/* ***** BEGIN LICENSE BLOCK ***** - * Distributed under the BSD license: - * - * Copyright (c) 2010, Ajax.org B.V. - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are met: - * * Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * * Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * * Neither the name of Ajax.org B.V. nor the - * names of its contributors may be used to endorse or promote products - * derived from this software without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND - * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED - * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE - * DISCLAIMED. IN NO EVENT SHALL AJAX.ORG B.V. BE LIABLE FOR ANY - * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES - * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; - * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND - * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - * - * ***** END LICENSE BLOCK ***** */ - -ace.define('ace/mode/sh', ['require', 'exports', 'module' , 'ace/lib/oop', 'ace/mode/text', 'ace/tokenizer', 'ace/mode/sh_highlight_rules', 'ace/range', 'ace/mode/folding/cstyle'], function(require, exports, module) { - - -var oop = require("../lib/oop"); -var TextMode = require("./text").Mode; -var Tokenizer = require("../tokenizer").Tokenizer; -var ShHighlightRules = require("./sh_highlight_rules").ShHighlightRules; -var Range = require("../range").Range; -var CStyleFoldMode = require("./folding/cstyle").FoldMode; - -var Mode = function() { - this.HighlightRules = ShHighlightRules; - this.foldingRules = new CStyleFoldMode(); -}; -oop.inherits(Mode, TextMode); - -(function() { - - - this.lineCommentStart = "#"; - - this.getNextLineIndent = function(state, line, tab) { - var indent = this.$getIndent(line); - - var tokenizedLine = this.getTokenizer().getLineTokens(line, state); - var tokens = tokenizedLine.tokens; - - if (tokens.length && tokens[tokens.length-1].type == "comment") { - return indent; - } - - if (state == "start") { - var match = line.match(/^.*[\{\(\[\:]\s*$/); - if (match) { - indent += tab; - } - } - - return indent; - }; - - var outdents = { - "pass": 1, - "return": 1, - "raise": 1, - "break": 1, - "continue": 1 - }; - - this.checkOutdent = function(state, line, input) { - if (input !== "\r\n" && input !== "\r" && input !== "\n") - return false; - - var tokens = this.getTokenizer().getLineTokens(line.trim(), state).tokens; - - if (!tokens) - return false; - do { - var last = tokens.pop(); - } while (last && (last.type == "comment" || (last.type == "text" && last.value.match(/^\s+$/)))); - - if (!last) - return false; - - return (last.type == "keyword" && outdents[last.value]); - }; - - this.autoOutdent = function(state, doc, row) { - - row += 1; - var indent = this.$getIndent(doc.getLine(row)); - var tab = doc.getTabString(); - if (indent.slice(-tab.length) == tab) - doc.remove(new Range(row, indent.length-tab.length, row, indent.length)); - }; - - this.$id = "ace/mode/sh"; -}).call(Mode.prototype); - -exports.Mode = Mode; -}); - -ace.define('ace/mode/sh_highlight_rules', ['require', 'exports', 'module' , 'ace/lib/oop', 'ace/mode/text_highlight_rules'], function(require, exports, module) { - - -var oop = require("../lib/oop"); -var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; - -var reservedKeywords = exports.reservedKeywords = ( - '!|{|}|case|do|done|elif|else|'+ - 'esac|fi|for|if|in|then|until|while|'+ - '&|;|export|local|read|typeset|unset|'+ - 'elif|select|set' - ); - -var languageConstructs = exports.languageConstructs = ( - '[|]|alias|bg|bind|break|builtin|'+ - 'cd|command|compgen|complete|continue|'+ - 'dirs|disown|echo|enable|eval|exec|'+ - 'exit|fc|fg|getopts|hash|help|history|'+ - 'jobs|kill|let|logout|popd|printf|pushd|'+ - 'pwd|return|set|shift|shopt|source|'+ - 'suspend|test|times|trap|type|ulimit|'+ - 'umask|unalias|wait' -); - -var ShHighlightRules = function() { - var keywordMapper = this.createKeywordMapper({ - "keyword": reservedKeywords, - "support.function.builtin": languageConstructs, - "invalid.deprecated": "debugger" - }, "identifier"); - - var integer = "(?:(?:[1-9]\\d*)|(?:0))"; - - var fraction = "(?:\\.\\d+)"; - var intPart = "(?:\\d+)"; - var pointFloat = "(?:(?:" + intPart + "?" + fraction + ")|(?:" + intPart + "\\.))"; - var exponentFloat = "(?:(?:" + pointFloat + "|" + intPart + ")" + ")"; - var floatNumber = "(?:" + exponentFloat + "|" + pointFloat + ")"; - var fileDescriptor = "(?:&" + intPart + ")"; - - var variableName = "[a-zA-Z][a-zA-Z0-9_]*"; - var variable = "(?:(?:\\$" + variableName + ")|(?:" + variableName + "=))"; - - var builtinVariable = "(?:\\$(?:SHLVL|\\$|\\!|\\?))"; - - var func = "(?:" + variableName + "\\s*\\(\\))"; - - this.$rules = { - "start" : [{ - token : "constant", - regex : /\\./ - }, { - token : ["text", "comment"], - regex : /(^|\s)(#.*)$/ - }, { - token : "string", - regex : '"', - push : [{ - token : "constant.language.escape", - regex : /\\(?:[$abeEfnrtv\\'"]|x[a-fA-F\d]{1,2}|u[a-fA-F\d]{4}([a-fA-F\d]{4})?|c.|\d{1,3})/ - }, { - token : "constant", - regex : /\$\w+/ - }, { - token : "string", - regex : '"', - next: "pop" - }, { - defaultToken: "string" - }] - }, { - token : "variable.language", - regex : builtinVariable - }, { - token : "variable", - regex : variable - }, { - token : "support.function", - regex : func - }, { - token : "support.function", - regex : fileDescriptor - }, { - token : "string", // ' string - start : "'", end : "'" - }, { - token : "constant.numeric", // float - regex : floatNumber - }, { - token : "constant.numeric", // integer - regex : integer + "\\b" - }, { - token : keywordMapper, - regex : "[a-zA-Z_$][a-zA-Z0-9_$]*\\b" - }, { - token : "keyword.operator", - regex : "\\+|\\-|\\*|\\*\\*|\\/|\\/\\/|~|<|>|<=|=>|=|!=" - }, { - token : "paren.lparen", - regex : "[\\[\\(\\{]" - }, { - token : "paren.rparen", - regex : "[\\]\\)\\}]" - } ] - }; - - this.normalizeRules(); -}; - -oop.inherits(ShHighlightRules, TextHighlightRules); - -exports.ShHighlightRules = ShHighlightRules; -}); - -ace.define('ace/mode/folding/cstyle', ['require', 'exports', 'module' , 'ace/lib/oop', 'ace/range', 'ace/mode/folding/fold_mode'], function(require, exports, module) { - - -var oop = require("../../lib/oop"); -var Range = require("../../range").Range; -var BaseFoldMode = require("./fold_mode").FoldMode; - -var FoldMode = exports.FoldMode = function(commentRegex) { - if (commentRegex) { - this.foldingStartMarker = new RegExp( - this.foldingStartMarker.source.replace(/\|[^|]*?$/, "|" + commentRegex.start) - ); - this.foldingStopMarker = new RegExp( - this.foldingStopMarker.source.replace(/\|[^|]*?$/, "|" + commentRegex.end) - ); - } -}; -oop.inherits(FoldMode, BaseFoldMode); - -(function() { - - this.foldingStartMarker = /(\{|\[)[^\}\]]*$|^\s*(\/\*)/; - this.foldingStopMarker = /^[^\[\{]*(\}|\])|^[\s\*]*(\*\/)/; - - this.getFoldWidgetRange = function(session, foldStyle, row, forceMultiline) { - var line = session.getLine(row); - var match = line.match(this.foldingStartMarker); - if (match) { - var i = match.index; - - if (match[1]) - return this.openingBracketBlock(session, match[1], row, i); - - var range = session.getCommentFoldRange(row, i + match[0].length, 1); - - if (range && !range.isMultiLine()) { - if (forceMultiline) { - range = this.getSectionRange(session, row); - } else if (foldStyle != "all") - range = null; - } - - return range; - } - - if (foldStyle === "markbegin") - return; - - var match = line.match(this.foldingStopMarker); - if (match) { - var i = match.index + match[0].length; - - if (match[1]) - return this.closingBracketBlock(session, match[1], row, i); - - return session.getCommentFoldRange(row, i, -1); - } - }; - - this.getSectionRange = function(session, row) { - var line = session.getLine(row); - var startIndent = line.search(/\S/); - var startRow = row; - var startColumn = line.length; - row = row + 1; - var endRow = row; - var maxRow = session.getLength(); - while (++row < maxRow) { - line = session.getLine(row); - var indent = line.search(/\S/); - if (indent === -1) - continue; - if (startIndent > indent) - break; - var subRange = this.getFoldWidgetRange(session, "all", row); - - if (subRange) { - if (subRange.start.row <= startRow) { - break; - } else if (subRange.isMultiLine()) { - row = subRange.end.row; - } else if (startIndent == indent) { - break; - } - } - endRow = row; - } - - return new Range(startRow, startColumn, endRow, session.getLine(endRow).length); - }; - -}).call(FoldMode.prototype); - -}); diff --git a/IDE/jsrealb-ide/ace-src-noconflict/mode-sjs.js b/IDE/jsrealb-ide/ace-src-noconflict/mode-sjs.js deleted file mode 100644 index d3474ebb..00000000 --- a/IDE/jsrealb-ide/ace-src-noconflict/mode-sjs.js +++ /dev/null @@ -1,1154 +0,0 @@ -/* ***** BEGIN LICENSE BLOCK ***** - * Distributed under the BSD license: - * - * Copyright (c) 2010, Ajax.org B.V. - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are met: - * * Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * * Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * * Neither the name of Ajax.org B.V. nor the - * names of its contributors may be used to endorse or promote products - * derived from this software without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND - * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED - * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE - * DISCLAIMED. IN NO EVENT SHALL AJAX.ORG B.V. BE LIABLE FOR ANY - * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES - * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; - * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND - * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - * - * ***** END LICENSE BLOCK ***** */ - -ace.define('ace/mode/sjs', ['require', 'exports', 'module' , 'ace/lib/oop', 'ace/mode/javascript', 'ace/tokenizer', 'ace/mode/sjs_highlight_rules', 'ace/mode/matching_brace_outdent', 'ace/mode/behaviour/cstyle', 'ace/mode/folding/cstyle'], function(require, exports, module) { - -var oop = require("../lib/oop"); -var JSMode = require("./javascript").Mode; -var Tokenizer = require("../tokenizer").Tokenizer; -var SJSHighlightRules = require("./sjs_highlight_rules").SJSHighlightRules; -var MatchingBraceOutdent = require("./matching_brace_outdent").MatchingBraceOutdent; -var CstyleBehaviour = require("./behaviour/cstyle").CstyleBehaviour; -var CStyleFoldMode = require("./folding/cstyle").FoldMode; - -var Mode = function() { - var highlighter = new SJSHighlightRules(); - - this.$tokenizer = new Tokenizer(highlighter.getRules()); - this.$outdent = new MatchingBraceOutdent(); - this.$behaviour = new CstyleBehaviour(); - this.$keywordList = highlighter.$keywordList; - this.foldingRules = new CStyleFoldMode(); -}; -oop.inherits(Mode, JSMode); -(function() { - this.createWorker = function(session) { - return null; - } - this.$id = "ace/mode/sjs"; -}).call(Mode.prototype); - -exports.Mode = Mode; -}); - -ace.define('ace/mode/javascript', ['require', 'exports', 'module' , 'ace/lib/oop', 'ace/mode/text', 'ace/tokenizer', 'ace/mode/javascript_highlight_rules', 'ace/mode/matching_brace_outdent', 'ace/range', 'ace/worker/worker_client', 'ace/mode/behaviour/cstyle', 'ace/mode/folding/cstyle'], function(require, exports, module) { - - -var oop = require("../lib/oop"); -var TextMode = require("./text").Mode; -var Tokenizer = require("../tokenizer").Tokenizer; -var JavaScriptHighlightRules = require("./javascript_highlight_rules").JavaScriptHighlightRules; -var MatchingBraceOutdent = require("./matching_brace_outdent").MatchingBraceOutdent; -var Range = require("../range").Range; -var WorkerClient = require("../worker/worker_client").WorkerClient; -var CstyleBehaviour = require("./behaviour/cstyle").CstyleBehaviour; -var CStyleFoldMode = require("./folding/cstyle").FoldMode; - -var Mode = function() { - this.HighlightRules = JavaScriptHighlightRules; - - this.$outdent = new MatchingBraceOutdent(); - this.$behaviour = new CstyleBehaviour(); - this.foldingRules = new CStyleFoldMode(); -}; -oop.inherits(Mode, TextMode); - -(function() { - - this.lineCommentStart = "//"; - this.blockComment = {start: "/*", end: "*/"}; - - this.getNextLineIndent = function(state, line, tab) { - var indent = this.$getIndent(line); - - var tokenizedLine = this.getTokenizer().getLineTokens(line, state); - var tokens = tokenizedLine.tokens; - var endState = tokenizedLine.state; - - if (tokens.length && tokens[tokens.length-1].type == "comment") { - return indent; - } - - if (state == "start" || state == "no_regex") { - var match = line.match(/^.*(?:\bcase\b.*\:|[\{\(\[])\s*$/); - if (match) { - indent += tab; - } - } else if (state == "doc-start") { - if (endState == "start" || endState == "no_regex") { - return ""; - } - var match = line.match(/^\s*(\/?)\*/); - if (match) { - if (match[1]) { - indent += " "; - } - indent += "* "; - } - } - - return indent; - }; - - this.checkOutdent = function(state, line, input) { - return this.$outdent.checkOutdent(line, input); - }; - - this.autoOutdent = function(state, doc, row) { - this.$outdent.autoOutdent(doc, row); - }; - - this.createWorker = function(session) { - var worker = new WorkerClient(["ace"], "ace/mode/javascript_worker", "JavaScriptWorker"); - worker.attachToDocument(session.getDocument()); - - worker.on("jslint", function(results) { - session.setAnnotations(results.data); - }); - - worker.on("terminate", function() { - session.clearAnnotations(); - }); - - return worker; - }; - - this.$id = "ace/mode/javascript"; -}).call(Mode.prototype); - -exports.Mode = Mode; -}); - -ace.define('ace/mode/javascript_highlight_rules', ['require', 'exports', 'module' , 'ace/lib/oop', 'ace/mode/doc_comment_highlight_rules', 'ace/mode/text_highlight_rules'], function(require, exports, module) { - - -var oop = require("../lib/oop"); -var DocCommentHighlightRules = require("./doc_comment_highlight_rules").DocCommentHighlightRules; -var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; - -var JavaScriptHighlightRules = function() { - var keywordMapper = this.createKeywordMapper({ - "variable.language": - "Array|Boolean|Date|Function|Iterator|Number|Object|RegExp|String|Proxy|" + // Constructors - "Namespace|QName|XML|XMLList|" + // E4X - "ArrayBuffer|Float32Array|Float64Array|Int16Array|Int32Array|Int8Array|" + - "Uint16Array|Uint32Array|Uint8Array|Uint8ClampedArray|" + - "Error|EvalError|InternalError|RangeError|ReferenceError|StopIteration|" + // Errors - "SyntaxError|TypeError|URIError|" + - "decodeURI|decodeURIComponent|encodeURI|encodeURIComponent|eval|isFinite|" + // Non-constructor functions - "isNaN|parseFloat|parseInt|" + - "JSON|Math|" + // Other - "this|arguments|prototype|window|document" , // Pseudo - "keyword": - "const|yield|import|get|set|" + - "break|case|catch|continue|default|delete|do|else|finally|for|function|" + - "if|in|instanceof|new|return|switch|throw|try|typeof|let|var|while|with|debugger|" + - "__parent__|__count__|escape|unescape|with|__proto__|" + - "class|enum|extends|super|export|implements|private|public|interface|package|protected|static", - "storage.type": - "const|let|var|function", - "constant.language": - "null|Infinity|NaN|undefined", - "support.function": - "alert", - "constant.language.boolean": "true|false" - }, "identifier"); - var kwBeforeRe = "case|do|else|finally|in|instanceof|return|throw|try|typeof|yield|void"; - var identifierRe = "[a-zA-Z\\$_\u00a1-\uffff][a-zA-Z\\d\\$_\u00a1-\uffff]*\\b"; - - var escapedRe = "\\\\(?:x[0-9a-fA-F]{2}|" + // hex - "u[0-9a-fA-F]{4}|" + // unicode - "[0-2][0-7]{0,2}|" + // oct - "3[0-6][0-7]?|" + // oct - "37[0-7]?|" + // oct - "[4-7][0-7]?|" + //oct - ".)"; - - this.$rules = { - "no_regex" : [ - { - token : "comment", - regex : "\\/\\/", - next : "line_comment" - }, - DocCommentHighlightRules.getStartRule("doc-start"), - { - token : "comment", // multi line comment - regex : /\/\*/, - next : "comment" - }, { - token : "string", - regex : "'(?=.)", - next : "qstring" - }, { - token : "string", - regex : '"(?=.)', - next : "qqstring" - }, { - token : "constant.numeric", // hex - regex : /0[xX][0-9a-fA-F]+\b/ - }, { - token : "constant.numeric", // float - regex : /[+-]?\d+(?:(?:\.\d*)?(?:[eE][+-]?\d+)?)?\b/ - }, { - token : [ - "storage.type", "punctuation.operator", "support.function", - "punctuation.operator", "entity.name.function", "text","keyword.operator" - ], - regex : "(" + identifierRe + ")(\\.)(prototype)(\\.)(" + identifierRe +")(\\s*)(=)", - next: "function_arguments" - }, { - token : [ - "storage.type", "punctuation.operator", "entity.name.function", "text", - "keyword.operator", "text", "storage.type", "text", "paren.lparen" - ], - regex : "(" + identifierRe + ")(\\.)(" + identifierRe +")(\\s*)(=)(\\s*)(function)(\\s*)(\\()", - next: "function_arguments" - }, { - token : [ - "entity.name.function", "text", "keyword.operator", "text", "storage.type", - "text", "paren.lparen" - ], - regex : "(" + identifierRe +")(\\s*)(=)(\\s*)(function)(\\s*)(\\()", - next: "function_arguments" - }, { - token : [ - "storage.type", "punctuation.operator", "entity.name.function", "text", - "keyword.operator", "text", - "storage.type", "text", "entity.name.function", "text", "paren.lparen" - ], - regex : "(" + identifierRe + ")(\\.)(" + identifierRe +")(\\s*)(=)(\\s*)(function)(\\s+)(\\w+)(\\s*)(\\()", - next: "function_arguments" - }, { - token : [ - "storage.type", "text", "entity.name.function", "text", "paren.lparen" - ], - regex : "(function)(\\s+)(" + identifierRe + ")(\\s*)(\\()", - next: "function_arguments" - }, { - token : [ - "entity.name.function", "text", "punctuation.operator", - "text", "storage.type", "text", "paren.lparen" - ], - regex : "(" + identifierRe + ")(\\s*)(:)(\\s*)(function)(\\s*)(\\()", - next: "function_arguments" - }, { - token : [ - "text", "text", "storage.type", "text", "paren.lparen" - ], - regex : "(:)(\\s*)(function)(\\s*)(\\()", - next: "function_arguments" - }, { - token : "keyword", - regex : "(?:" + kwBeforeRe + ")\\b", - next : "start" - }, { - token : ["punctuation.operator", "support.function"], - regex : /(\.)(s(?:h(?:ift|ow(?:Mod(?:elessDialog|alDialog)|Help))|croll(?:X|By(?:Pages|Lines)?|Y|To)?|t(?:op|rike)|i(?:n|zeToContent|debar|gnText)|ort|u(?:p|b(?:str(?:ing)?)?)|pli(?:ce|t)|e(?:nd|t(?:Re(?:sizable|questHeader)|M(?:i(?:nutes|lliseconds)|onth)|Seconds|Ho(?:tKeys|urs)|Year|Cursor|Time(?:out)?|Interval|ZOptions|Date|UTC(?:M(?:i(?:nutes|lliseconds)|onth)|Seconds|Hours|Date|FullYear)|FullYear|Active)|arch)|qrt|lice|avePreferences|mall)|h(?:ome|andleEvent)|navigate|c(?:har(?:CodeAt|At)|o(?:s|n(?:cat|textual|firm)|mpile)|eil|lear(?:Timeout|Interval)?|a(?:ptureEvents|ll)|reate(?:StyleSheet|Popup|EventObject))|t(?:o(?:GMTString|S(?:tring|ource)|U(?:TCString|pperCase)|Lo(?:caleString|werCase))|est|a(?:n|int(?:Enabled)?))|i(?:s(?:NaN|Finite)|ndexOf|talics)|d(?:isableExternalCapture|ump|etachEvent)|u(?:n(?:shift|taint|escape|watch)|pdateCommands)|j(?:oin|avaEnabled)|p(?:o(?:p|w)|ush|lugins.refresh|a(?:ddings|rse(?:Int|Float)?)|r(?:int|ompt|eference))|e(?:scape|nableExternalCapture|val|lementFromPoint|x(?:p|ec(?:Script|Command)?))|valueOf|UTC|queryCommand(?:State|Indeterm|Enabled|Value)|f(?:i(?:nd|le(?:ModifiedDate|Size|CreatedDate|UpdatedDate)|xed)|o(?:nt(?:size|color)|rward)|loor|romCharCode)|watch|l(?:ink|o(?:ad|g)|astIndexOf)|a(?:sin|nchor|cos|t(?:tachEvent|ob|an(?:2)?)|pply|lert|b(?:s|ort))|r(?:ou(?:nd|teEvents)|e(?:size(?:By|To)|calc|turnValue|place|verse|l(?:oad|ease(?:Capture|Events)))|andom)|g(?:o|et(?:ResponseHeader|M(?:i(?:nutes|lliseconds)|onth)|Se(?:conds|lection)|Hours|Year|Time(?:zoneOffset)?|Da(?:y|te)|UTC(?:M(?:i(?:nutes|lliseconds)|onth)|Seconds|Hours|Da(?:y|te)|FullYear)|FullYear|A(?:ttention|llResponseHeaders)))|m(?:in|ove(?:B(?:y|elow)|To(?:Absolute)?|Above)|ergeAttributes|a(?:tch|rgins|x))|b(?:toa|ig|o(?:ld|rderWidths)|link|ack))\b(?=\()/ - }, { - token : ["punctuation.operator", "support.function.dom"], - regex : /(\.)(s(?:ub(?:stringData|mit)|plitText|e(?:t(?:NamedItem|Attribute(?:Node)?)|lect))|has(?:ChildNodes|Feature)|namedItem|c(?:l(?:ick|o(?:se|neNode))|reate(?:C(?:omment|DATASection|aption)|T(?:Head|extNode|Foot)|DocumentFragment|ProcessingInstruction|E(?:ntityReference|lement)|Attribute))|tabIndex|i(?:nsert(?:Row|Before|Cell|Data)|tem)|open|delete(?:Row|C(?:ell|aption)|T(?:Head|Foot)|Data)|focus|write(?:ln)?|a(?:dd|ppend(?:Child|Data))|re(?:set|place(?:Child|Data)|move(?:NamedItem|Child|Attribute(?:Node)?)?)|get(?:NamedItem|Element(?:sBy(?:Name|TagName)|ById)|Attribute(?:Node)?)|blur)\b(?=\()/ - }, { - token : ["punctuation.operator", "support.constant"], - regex : /(\.)(s(?:ystemLanguage|cr(?:ipts|ollbars|een(?:X|Y|Top|Left))|t(?:yle(?:Sheets)?|atus(?:Text|bar)?)|ibling(?:Below|Above)|ource|uffixes|e(?:curity(?:Policy)?|l(?:ection|f)))|h(?:istory|ost(?:name)?|as(?:h|Focus))|y|X(?:MLDocument|SLDocument)|n(?:ext|ame(?:space(?:s|URI)|Prop))|M(?:IN_VALUE|AX_VALUE)|c(?:haracterSet|o(?:n(?:structor|trollers)|okieEnabled|lorDepth|mp(?:onents|lete))|urrent|puClass|l(?:i(?:p(?:boardData)?|entInformation)|osed|asses)|alle(?:e|r)|rypto)|t(?:o(?:olbar|p)|ext(?:Transform|Indent|Decoration|Align)|ags)|SQRT(?:1_2|2)|i(?:n(?:ner(?:Height|Width)|put)|ds|gnoreCase)|zIndex|o(?:scpu|n(?:readystatechange|Line)|uter(?:Height|Width)|p(?:sProfile|ener)|ffscreenBuffering)|NEGATIVE_INFINITY|d(?:i(?:splay|alog(?:Height|Top|Width|Left|Arguments)|rectories)|e(?:scription|fault(?:Status|Ch(?:ecked|arset)|View)))|u(?:ser(?:Profile|Language|Agent)|n(?:iqueID|defined)|pdateInterval)|_content|p(?:ixelDepth|ort|ersonalbar|kcs11|l(?:ugins|atform)|a(?:thname|dding(?:Right|Bottom|Top|Left)|rent(?:Window|Layer)?|ge(?:X(?:Offset)?|Y(?:Offset)?))|r(?:o(?:to(?:col|type)|duct(?:Sub)?|mpter)|e(?:vious|fix)))|e(?:n(?:coding|abledPlugin)|x(?:ternal|pando)|mbeds)|v(?:isibility|endor(?:Sub)?|Linkcolor)|URLUnencoded|P(?:I|OSITIVE_INFINITY)|f(?:ilename|o(?:nt(?:Size|Family|Weight)|rmName)|rame(?:s|Element)|gColor)|E|whiteSpace|l(?:i(?:stStyleType|n(?:eHeight|kColor))|o(?:ca(?:tion(?:bar)?|lName)|wsrc)|e(?:ngth|ft(?:Context)?)|a(?:st(?:M(?:odified|atch)|Index|Paren)|yer(?:s|X)|nguage))|a(?:pp(?:MinorVersion|Name|Co(?:deName|re)|Version)|vail(?:Height|Top|Width|Left)|ll|r(?:ity|guments)|Linkcolor|bove)|r(?:ight(?:Context)?|e(?:sponse(?:XML|Text)|adyState))|global|x|m(?:imeTypes|ultiline|enubar|argin(?:Right|Bottom|Top|Left))|L(?:N(?:10|2)|OG(?:10E|2E))|b(?:o(?:ttom|rder(?:Width|RightWidth|BottomWidth|Style|Color|TopWidth|LeftWidth))|ufferDepth|elow|ackground(?:Color|Image)))\b/ - }, { - token : ["storage.type", "punctuation.operator", "support.function.firebug"], - regex : /(console)(\.)(warn|info|log|error|time|timeEnd|assert)\b/ - }, { - token : keywordMapper, - regex : identifierRe - }, { - token : "keyword.operator", - regex : /--|\+\+|[!$%&*+\-~]|===|==|=|!=|!==|<=|>=|<<=|>>=|>>>=|<>|<|>|!|&&|\|\||\?\:|\*=|%=|\+=|\-=|&=|\^=/, - next : "start" - }, { - token : "punctuation.operator", - regex : /\?|\:|\,|\;|\./, - next : "start" - }, { - token : "paren.lparen", - regex : /[\[({]/, - next : "start" - }, { - token : "paren.rparen", - regex : /[\])}]/ - }, { - token : "keyword.operator", - regex : /\/=?/, - next : "start" - }, { - token: "comment", - regex: /^#!.*$/ - } - ], - "start": [ - DocCommentHighlightRules.getStartRule("doc-start"), - { - token : "comment", // multi line comment - regex : "\\/\\*", - next : "comment_regex_allowed" - }, { - token : "comment", - regex : "\\/\\/", - next : "line_comment_regex_allowed" - }, { - token: "string.regexp", - regex: "\\/", - next: "regex" - }, { - token : "text", - regex : "\\s+|^$", - next : "start" - }, { - token: "empty", - regex: "", - next: "no_regex" - } - ], - "regex": [ - { - token: "regexp.keyword.operator", - regex: "\\\\(?:u[\\da-fA-F]{4}|x[\\da-fA-F]{2}|.)" - }, { - token: "string.regexp", - regex: "/[sxngimy]*", - next: "no_regex" - }, { - token : "invalid", - regex: /\{\d+\b,?\d*\}[+*]|[+*$^?][+*]|[$^][?]|\?{3,}/ - }, { - token : "constant.language.escape", - regex: /\(\?[:=!]|\)|\{\d+\b,?\d*\}|[+*]\?|[()$^+*?.]/ - }, { - token : "constant.language.delimiter", - regex: /\|/ - }, { - token: "constant.language.escape", - regex: /\[\^?/, - next: "regex_character_class" - }, { - token: "empty", - regex: "$", - next: "no_regex" - }, { - defaultToken: "string.regexp" - } - ], - "regex_character_class": [ - { - token: "regexp.keyword.operator", - regex: "\\\\(?:u[\\da-fA-F]{4}|x[\\da-fA-F]{2}|.)" - }, { - token: "constant.language.escape", - regex: "]", - next: "regex" - }, { - token: "constant.language.escape", - regex: "-" - }, { - token: "empty", - regex: "$", - next: "no_regex" - }, { - defaultToken: "string.regexp.charachterclass" - } - ], - "function_arguments": [ - { - token: "variable.parameter", - regex: identifierRe - }, { - token: "punctuation.operator", - regex: "[, ]+" - }, { - token: "punctuation.operator", - regex: "$" - }, { - token: "empty", - regex: "", - next: "no_regex" - } - ], - "comment_regex_allowed" : [ - {token : "comment", regex : "\\*\\/", next : "start"}, - {defaultToken : "comment"} - ], - "comment" : [ - {token : "comment", regex : "\\*\\/", next : "no_regex"}, - {defaultToken : "comment"} - ], - "line_comment_regex_allowed" : [ - {token : "comment", regex : "$|^", next : "start"}, - {defaultToken : "comment"} - ], - "line_comment" : [ - {token : "comment", regex : "$|^", next : "no_regex"}, - {defaultToken : "comment"} - ], - "qqstring" : [ - { - token : "constant.language.escape", - regex : escapedRe - }, { - token : "string", - regex : "\\\\$", - next : "qqstring" - }, { - token : "string", - regex : '"|$', - next : "no_regex" - }, { - defaultToken: "string" - } - ], - "qstring" : [ - { - token : "constant.language.escape", - regex : escapedRe - }, { - token : "string", - regex : "\\\\$", - next : "qstring" - }, { - token : "string", - regex : "'|$", - next : "no_regex" - }, { - defaultToken: "string" - } - ] - }; - - this.embedRules(DocCommentHighlightRules, "doc-", - [ DocCommentHighlightRules.getEndRule("no_regex") ]); -}; - -oop.inherits(JavaScriptHighlightRules, TextHighlightRules); - -exports.JavaScriptHighlightRules = JavaScriptHighlightRules; -}); - -ace.define('ace/mode/doc_comment_highlight_rules', ['require', 'exports', 'module' , 'ace/lib/oop', 'ace/mode/text_highlight_rules'], function(require, exports, module) { - - -var oop = require("../lib/oop"); -var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; - -var DocCommentHighlightRules = function() { - - this.$rules = { - "start" : [ { - token : "comment.doc.tag", - regex : "@[\\w\\d_]+" // TODO: fix email addresses - }, { - token : "comment.doc.tag", - regex : "\\bTODO\\b" - }, { - defaultToken : "comment.doc" - }] - }; -}; - -oop.inherits(DocCommentHighlightRules, TextHighlightRules); - -DocCommentHighlightRules.getStartRule = function(start) { - return { - token : "comment.doc", // doc comment - regex : "\\/\\*(?=\\*)", - next : start - }; -}; - -DocCommentHighlightRules.getEndRule = function (start) { - return { - token : "comment.doc", // closing comment - regex : "\\*\\/", - next : start - }; -}; - - -exports.DocCommentHighlightRules = DocCommentHighlightRules; - -}); - -ace.define('ace/mode/matching_brace_outdent', ['require', 'exports', 'module' , 'ace/range'], function(require, exports, module) { - - -var Range = require("../range").Range; - -var MatchingBraceOutdent = function() {}; - -(function() { - - this.checkOutdent = function(line, input) { - if (! /^\s+$/.test(line)) - return false; - - return /^\s*\}/.test(input); - }; - - this.autoOutdent = function(doc, row) { - var line = doc.getLine(row); - var match = line.match(/^(\s*\})/); - - if (!match) return 0; - - var column = match[1].length; - var openBracePos = doc.findMatchingBracket({row: row, column: column}); - - if (!openBracePos || openBracePos.row == row) return 0; - - var indent = this.$getIndent(doc.getLine(openBracePos.row)); - doc.replace(new Range(row, 0, row, column-1), indent); - }; - - this.$getIndent = function(line) { - return line.match(/^\s*/)[0]; - }; - -}).call(MatchingBraceOutdent.prototype); - -exports.MatchingBraceOutdent = MatchingBraceOutdent; -}); - -ace.define('ace/mode/behaviour/cstyle', ['require', 'exports', 'module' , 'ace/lib/oop', 'ace/mode/behaviour', 'ace/token_iterator', 'ace/lib/lang'], function(require, exports, module) { - - -var oop = require("../../lib/oop"); -var Behaviour = require("../behaviour").Behaviour; -var TokenIterator = require("../../token_iterator").TokenIterator; -var lang = require("../../lib/lang"); - -var SAFE_INSERT_IN_TOKENS = - ["text", "paren.rparen", "punctuation.operator"]; -var SAFE_INSERT_BEFORE_TOKENS = - ["text", "paren.rparen", "punctuation.operator", "comment"]; - - -var autoInsertedBrackets = 0; -var autoInsertedRow = -1; -var autoInsertedLineEnd = ""; -var maybeInsertedBrackets = 0; -var maybeInsertedRow = -1; -var maybeInsertedLineStart = ""; -var maybeInsertedLineEnd = ""; - -var CstyleBehaviour = function () { - - CstyleBehaviour.isSaneInsertion = function(editor, session) { - var cursor = editor.getCursorPosition(); - var iterator = new TokenIterator(session, cursor.row, cursor.column); - if (!this.$matchTokenType(iterator.getCurrentToken() || "text", SAFE_INSERT_IN_TOKENS)) { - var iterator2 = new TokenIterator(session, cursor.row, cursor.column + 1); - if (!this.$matchTokenType(iterator2.getCurrentToken() || "text", SAFE_INSERT_IN_TOKENS)) - return false; - } - iterator.stepForward(); - return iterator.getCurrentTokenRow() !== cursor.row || - this.$matchTokenType(iterator.getCurrentToken() || "text", SAFE_INSERT_BEFORE_TOKENS); - }; - - CstyleBehaviour.$matchTokenType = function(token, types) { - return types.indexOf(token.type || token) > -1; - }; - - CstyleBehaviour.recordAutoInsert = function(editor, session, bracket) { - var cursor = editor.getCursorPosition(); - var line = session.doc.getLine(cursor.row); - if (!this.isAutoInsertedClosing(cursor, line, autoInsertedLineEnd[0])) - autoInsertedBrackets = 0; - autoInsertedRow = cursor.row; - autoInsertedLineEnd = bracket + line.substr(cursor.column); - autoInsertedBrackets++; - }; - - CstyleBehaviour.recordMaybeInsert = function(editor, session, bracket) { - var cursor = editor.getCursorPosition(); - var line = session.doc.getLine(cursor.row); - if (!this.isMaybeInsertedClosing(cursor, line)) - maybeInsertedBrackets = 0; - maybeInsertedRow = cursor.row; - maybeInsertedLineStart = line.substr(0, cursor.column) + bracket; - maybeInsertedLineEnd = line.substr(cursor.column); - maybeInsertedBrackets++; - }; - - CstyleBehaviour.isAutoInsertedClosing = function(cursor, line, bracket) { - return autoInsertedBrackets > 0 && - cursor.row === autoInsertedRow && - bracket === autoInsertedLineEnd[0] && - line.substr(cursor.column) === autoInsertedLineEnd; - }; - - CstyleBehaviour.isMaybeInsertedClosing = function(cursor, line) { - return maybeInsertedBrackets > 0 && - cursor.row === maybeInsertedRow && - line.substr(cursor.column) === maybeInsertedLineEnd && - line.substr(0, cursor.column) == maybeInsertedLineStart; - }; - - CstyleBehaviour.popAutoInsertedClosing = function() { - autoInsertedLineEnd = autoInsertedLineEnd.substr(1); - autoInsertedBrackets--; - }; - - CstyleBehaviour.clearMaybeInsertedClosing = function() { - maybeInsertedBrackets = 0; - maybeInsertedRow = -1; - }; - - this.add("braces", "insertion", function (state, action, editor, session, text) { - var cursor = editor.getCursorPosition(); - var line = session.doc.getLine(cursor.row); - if (text == '{') { - var selection = editor.getSelectionRange(); - var selected = session.doc.getTextRange(selection); - if (selected !== "" && selected !== "{" && editor.getWrapBehavioursEnabled()) { - return { - text: '{' + selected + '}', - selection: false - }; - } else if (CstyleBehaviour.isSaneInsertion(editor, session)) { - if (/[\]\}\)]/.test(line[cursor.column]) || editor.inMultiSelectMode) { - CstyleBehaviour.recordAutoInsert(editor, session, "}"); - return { - text: '{}', - selection: [1, 1] - }; - } else { - CstyleBehaviour.recordMaybeInsert(editor, session, "{"); - return { - text: '{', - selection: [1, 1] - }; - } - } - } else if (text == '}') { - var rightChar = line.substring(cursor.column, cursor.column + 1); - if (rightChar == '}') { - var matching = session.$findOpeningBracket('}', {column: cursor.column + 1, row: cursor.row}); - if (matching !== null && CstyleBehaviour.isAutoInsertedClosing(cursor, line, text)) { - CstyleBehaviour.popAutoInsertedClosing(); - return { - text: '', - selection: [1, 1] - }; - } - } - } else if (text == "\n" || text == "\r\n") { - var closing = ""; - if (CstyleBehaviour.isMaybeInsertedClosing(cursor, line)) { - closing = lang.stringRepeat("}", maybeInsertedBrackets); - CstyleBehaviour.clearMaybeInsertedClosing(); - } - var rightChar = line.substring(cursor.column, cursor.column + 1); - if (rightChar === '}') { - var openBracePos = session.findMatchingBracket({row: cursor.row, column: cursor.column+1}, '}'); - if (!openBracePos) - return null; - var next_indent = this.$getIndent(session.getLine(openBracePos.row)); - } else if (closing) { - var next_indent = this.$getIndent(line); - } else { - return; - } - var indent = next_indent + session.getTabString(); - - return { - text: '\n' + indent + '\n' + next_indent + closing, - selection: [1, indent.length, 1, indent.length] - }; - } else { - CstyleBehaviour.clearMaybeInsertedClosing(); - } - }); - - this.add("braces", "deletion", function (state, action, editor, session, range) { - var selected = session.doc.getTextRange(range); - if (!range.isMultiLine() && selected == '{') { - var line = session.doc.getLine(range.start.row); - var rightChar = line.substring(range.end.column, range.end.column + 1); - if (rightChar == '}') { - range.end.column++; - return range; - } else { - maybeInsertedBrackets--; - } - } - }); - - this.add("parens", "insertion", function (state, action, editor, session, text) { - if (text == '(') { - var selection = editor.getSelectionRange(); - var selected = session.doc.getTextRange(selection); - if (selected !== "" && editor.getWrapBehavioursEnabled()) { - return { - text: '(' + selected + ')', - selection: false - }; - } else if (CstyleBehaviour.isSaneInsertion(editor, session)) { - CstyleBehaviour.recordAutoInsert(editor, session, ")"); - return { - text: '()', - selection: [1, 1] - }; - } - } else if (text == ')') { - var cursor = editor.getCursorPosition(); - var line = session.doc.getLine(cursor.row); - var rightChar = line.substring(cursor.column, cursor.column + 1); - if (rightChar == ')') { - var matching = session.$findOpeningBracket(')', {column: cursor.column + 1, row: cursor.row}); - if (matching !== null && CstyleBehaviour.isAutoInsertedClosing(cursor, line, text)) { - CstyleBehaviour.popAutoInsertedClosing(); - return { - text: '', - selection: [1, 1] - }; - } - } - } - }); - - this.add("parens", "deletion", function (state, action, editor, session, range) { - var selected = session.doc.getTextRange(range); - if (!range.isMultiLine() && selected == '(') { - var line = session.doc.getLine(range.start.row); - var rightChar = line.substring(range.start.column + 1, range.start.column + 2); - if (rightChar == ')') { - range.end.column++; - return range; - } - } - }); - - this.add("brackets", "insertion", function (state, action, editor, session, text) { - if (text == '[') { - var selection = editor.getSelectionRange(); - var selected = session.doc.getTextRange(selection); - if (selected !== "" && editor.getWrapBehavioursEnabled()) { - return { - text: '[' + selected + ']', - selection: false - }; - } else if (CstyleBehaviour.isSaneInsertion(editor, session)) { - CstyleBehaviour.recordAutoInsert(editor, session, "]"); - return { - text: '[]', - selection: [1, 1] - }; - } - } else if (text == ']') { - var cursor = editor.getCursorPosition(); - var line = session.doc.getLine(cursor.row); - var rightChar = line.substring(cursor.column, cursor.column + 1); - if (rightChar == ']') { - var matching = session.$findOpeningBracket(']', {column: cursor.column + 1, row: cursor.row}); - if (matching !== null && CstyleBehaviour.isAutoInsertedClosing(cursor, line, text)) { - CstyleBehaviour.popAutoInsertedClosing(); - return { - text: '', - selection: [1, 1] - }; - } - } - } - }); - - this.add("brackets", "deletion", function (state, action, editor, session, range) { - var selected = session.doc.getTextRange(range); - if (!range.isMultiLine() && selected == '[') { - var line = session.doc.getLine(range.start.row); - var rightChar = line.substring(range.start.column + 1, range.start.column + 2); - if (rightChar == ']') { - range.end.column++; - return range; - } - } - }); - - this.add("string_dquotes", "insertion", function (state, action, editor, session, text) { - if (text == '"' || text == "'") { - var quote = text; - var selection = editor.getSelectionRange(); - var selected = session.doc.getTextRange(selection); - if (selected !== "" && selected !== "'" && selected != '"' && editor.getWrapBehavioursEnabled()) { - return { - text: quote + selected + quote, - selection: false - }; - } else { - var cursor = editor.getCursorPosition(); - var line = session.doc.getLine(cursor.row); - var leftChar = line.substring(cursor.column-1, cursor.column); - if (leftChar == '\\') { - return null; - } - var tokens = session.getTokens(selection.start.row); - var col = 0, token; - var quotepos = -1; // Track whether we're inside an open quote. - - for (var x = 0; x < tokens.length; x++) { - token = tokens[x]; - if (token.type == "string") { - quotepos = -1; - } else if (quotepos < 0) { - quotepos = token.value.indexOf(quote); - } - if ((token.value.length + col) > selection.start.column) { - break; - } - col += tokens[x].value.length; - } - if (!token || (quotepos < 0 && token.type !== "comment" && (token.type !== "string" || ((selection.start.column !== token.value.length+col-1) && token.value.lastIndexOf(quote) === token.value.length-1)))) { - if (!CstyleBehaviour.isSaneInsertion(editor, session)) - return; - return { - text: quote + quote, - selection: [1,1] - }; - } else if (token && token.type === "string") { - var rightChar = line.substring(cursor.column, cursor.column + 1); - if (rightChar == quote) { - return { - text: '', - selection: [1, 1] - }; - } - } - } - } - }); - - this.add("string_dquotes", "deletion", function (state, action, editor, session, range) { - var selected = session.doc.getTextRange(range); - if (!range.isMultiLine() && (selected == '"' || selected == "'")) { - var line = session.doc.getLine(range.start.row); - var rightChar = line.substring(range.start.column + 1, range.start.column + 2); - if (rightChar == selected) { - range.end.column++; - return range; - } - } - }); - -}; - -oop.inherits(CstyleBehaviour, Behaviour); - -exports.CstyleBehaviour = CstyleBehaviour; -}); - -ace.define('ace/mode/folding/cstyle', ['require', 'exports', 'module' , 'ace/lib/oop', 'ace/range', 'ace/mode/folding/fold_mode'], function(require, exports, module) { - - -var oop = require("../../lib/oop"); -var Range = require("../../range").Range; -var BaseFoldMode = require("./fold_mode").FoldMode; - -var FoldMode = exports.FoldMode = function(commentRegex) { - if (commentRegex) { - this.foldingStartMarker = new RegExp( - this.foldingStartMarker.source.replace(/\|[^|]*?$/, "|" + commentRegex.start) - ); - this.foldingStopMarker = new RegExp( - this.foldingStopMarker.source.replace(/\|[^|]*?$/, "|" + commentRegex.end) - ); - } -}; -oop.inherits(FoldMode, BaseFoldMode); - -(function() { - - this.foldingStartMarker = /(\{|\[)[^\}\]]*$|^\s*(\/\*)/; - this.foldingStopMarker = /^[^\[\{]*(\}|\])|^[\s\*]*(\*\/)/; - - this.getFoldWidgetRange = function(session, foldStyle, row, forceMultiline) { - var line = session.getLine(row); - var match = line.match(this.foldingStartMarker); - if (match) { - var i = match.index; - - if (match[1]) - return this.openingBracketBlock(session, match[1], row, i); - - var range = session.getCommentFoldRange(row, i + match[0].length, 1); - - if (range && !range.isMultiLine()) { - if (forceMultiline) { - range = this.getSectionRange(session, row); - } else if (foldStyle != "all") - range = null; - } - - return range; - } - - if (foldStyle === "markbegin") - return; - - var match = line.match(this.foldingStopMarker); - if (match) { - var i = match.index + match[0].length; - - if (match[1]) - return this.closingBracketBlock(session, match[1], row, i); - - return session.getCommentFoldRange(row, i, -1); - } - }; - - this.getSectionRange = function(session, row) { - var line = session.getLine(row); - var startIndent = line.search(/\S/); - var startRow = row; - var startColumn = line.length; - row = row + 1; - var endRow = row; - var maxRow = session.getLength(); - while (++row < maxRow) { - line = session.getLine(row); - var indent = line.search(/\S/); - if (indent === -1) - continue; - if (startIndent > indent) - break; - var subRange = this.getFoldWidgetRange(session, "all", row); - - if (subRange) { - if (subRange.start.row <= startRow) { - break; - } else if (subRange.isMultiLine()) { - row = subRange.end.row; - } else if (startIndent == indent) { - break; - } - } - endRow = row; - } - - return new Range(startRow, startColumn, endRow, session.getLine(endRow).length); - }; - -}).call(FoldMode.prototype); - -}); - -ace.define('ace/mode/sjs_highlight_rules', ['require', 'exports', 'module' , 'ace/lib/oop', 'ace/mode/javascript_highlight_rules', 'ace/mode/text_highlight_rules'], function(require, exports, module) { - - -var oop = require("../lib/oop"); -var JavaScriptHighlightRules = require("./javascript_highlight_rules").JavaScriptHighlightRules; -var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; - -var SJSHighlightRules = function() { - var parent = new JavaScriptHighlightRules(); - var escapedRe = "\\\\(?:x[0-9a-fA-F]{2}|" + // hex - "u[0-9a-fA-F]{4}|" + // unicode - "[0-2][0-7]{0,2}|" + // oct - "3[0-6][0-7]?|" + // oct - "37[0-7]?|" + // oct - "[4-7][0-7]?|" + //oct - ".)"; - - var contextAware = function(f) { - f.isContextAware = true; - return f; - }; - - var ctxBegin = function(opts) { - return { - token: opts.token, - regex: opts.regex, - next: contextAware(function(currentState, stack) { - if (stack.length === 0) - stack.unshift(currentState); - stack.unshift(opts.next); - return opts.next; - }), - }; - }; - - var ctxEnd = function(opts) { - return { - token: opts.token, - regex: opts.regex, - next: contextAware(function(currentState, stack) { - stack.shift(); - return stack[0] || "start"; - }), - }; - }; - - this.$rules = parent.$rules; - this.$rules.no_regex = [ - { - token: "keyword", - regex: "(waitfor|or|and|collapse|spawn|retract)\\b" - }, - { - token: "keyword.operator", - regex: "(->|=>|\\.\\.)" - }, - { - token: "variable.language", - regex: "(hold|default)\\b" - }, - ctxBegin({ - token: "string", - regex: "`", - next: "bstring" - }), - ctxBegin({ - token: "string", - regex: '"', - next: "qqstring" - }), - ctxBegin({ - token: "string", - regex: '"', - next: "qqstring" - }), - { - token: ["paren.lparen", "text", "paren.rparen"], - regex: "(\\{)(\\s*)(\\|)", - next: "block_arguments", - } - - ].concat(this.$rules.no_regex); - - this.$rules.block_arguments = [ - { - token: "paren.rparen", - regex: "\\|", - next: "no_regex", - } - ].concat(this.$rules.function_arguments); - - this.$rules.bstring = [ - { - token : "constant.language.escape", - regex : escapedRe - }, - { - token : "string", - regex : "\\\\$", - next: "bstring" - }, - ctxBegin({ - token : "paren.lparen", - regex : "\\$\\{", - next: "string_interp" - }), - ctxBegin({ - token : "paren.lparen", - regex : "\\$", - next: "bstring_interp_single" - }), - ctxEnd({ - token : "string", - regex : "`", - }), - { - defaultToken: "string" - } - ]; - - this.$rules.qqstring = [ - { - token : "constant.language.escape", - regex : escapedRe - }, - { - token : "string", - regex : "\\\\$", - next: "qqstring", - }, - ctxBegin({ - token : "paren.lparen", - regex : "#\\{", - next: "string_interp" - }), - ctxEnd({ - token : "string", - regex : '"', - }), - { - defaultToken: "string" - } - ]; - var embeddableRules = []; - for (var i=0; i startRow) { - var endColumn = session.getLine(endRow).length; - return new Range(startRow, startColumn, endRow, endColumn); - } - }; - this.getFoldWidget = function(session, foldStyle, row) { - var line = session.getLine(row); - var indent = line.search(/\S/); - var next = session.getLine(row + 1); - var prev = session.getLine(row - 1); - var prevIndent = prev.search(/\S/); - var nextIndent = next.search(/\S/); - - if (indent == -1) { - session.foldWidgets[row - 1] = prevIndent!= -1 && prevIndent < nextIndent ? "start" : ""; - return ""; - } - if (prevIndent == -1) { - if (indent == nextIndent && line[indent] == "#" && next[indent] == "#") { - session.foldWidgets[row - 1] = ""; - session.foldWidgets[row + 1] = ""; - return "start"; - } - } else if (prevIndent == indent && line[indent] == "#" && prev[indent] == "#") { - if (session.getLine(row - 2).search(/\S/) == -1) { - session.foldWidgets[row - 1] = "start"; - session.foldWidgets[row + 1] = ""; - return ""; - } - } - - if (prevIndent!= -1 && prevIndent < indent) - session.foldWidgets[row - 1] = "start"; - else - session.foldWidgets[row - 1] = ""; - - if (indent < nextIndent) - return "start"; - else - return ""; - }; - -}).call(FoldMode.prototype); - -}); diff --git a/IDE/jsrealb-ide/ace-src-noconflict/mode-soy_template.js b/IDE/jsrealb-ide/ace-src-noconflict/mode-soy_template.js deleted file mode 100644 index 1a3e109e..00000000 --- a/IDE/jsrealb-ide/ace-src-noconflict/mode-soy_template.js +++ /dev/null @@ -1,2707 +0,0 @@ -/* ***** BEGIN LICENSE BLOCK ***** - * Distributed under the BSD license: - * - * Copyright (c) 2012, Ajax.org B.V. - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are met: - * * Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * * Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * * Neither the name of Ajax.org B.V. nor the - * names of its contributors may be used to endorse or promote products - * derived from this software without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND - * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED - * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE - * DISCLAIMED. IN NO EVENT SHALL AJAX.ORG B.V. BE LIABLE FOR ANY - * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES - * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; - * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND - * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - * - * - * Contributor(s): - * - * - * - * ***** END LICENSE BLOCK ***** */ - -ace.define('ace/mode/soy_template', ['require', 'exports', 'module' , 'ace/lib/oop', 'ace/mode/html', 'ace/tokenizer', 'ace/mode/soy_template_highlight_rules'], function(require, exports, module) { - - -var oop = require("../lib/oop"); -var HtmlMode = require("./html").Mode; -var Tokenizer = require("../tokenizer").Tokenizer; -var SoyTemplateHighlightRules = require("./soy_template_highlight_rules").SoyTemplateHighlightRules; - -var Mode = function() { - HtmlMode.call(this); - this.HighlightRules = SoyTemplateHighlightRules; -}; -oop.inherits(Mode, HtmlMode); - -(function() { - this.lineCommentStart = "//"; - this.blockComment = {start: "/*", end: "*/"}; - this.$id = "ace/mode/soy_template"; -}).call(Mode.prototype); - -exports.Mode = Mode; -}); - -ace.define('ace/mode/html', ['require', 'exports', 'module' , 'ace/lib/oop', 'ace/mode/text', 'ace/mode/javascript', 'ace/mode/css', 'ace/tokenizer', 'ace/mode/html_highlight_rules', 'ace/mode/behaviour/html', 'ace/mode/folding/html', 'ace/mode/html_completions'], function(require, exports, module) { - - -var oop = require("../lib/oop"); -var TextMode = require("./text").Mode; -var JavaScriptMode = require("./javascript").Mode; -var CssMode = require("./css").Mode; -var Tokenizer = require("../tokenizer").Tokenizer; -var HtmlHighlightRules = require("./html_highlight_rules").HtmlHighlightRules; -var HtmlBehaviour = require("./behaviour/html").HtmlBehaviour; -var HtmlFoldMode = require("./folding/html").FoldMode; -var HtmlCompletions = require("./html_completions").HtmlCompletions; - -var Mode = function() { - this.HighlightRules = HtmlHighlightRules; - this.$behaviour = new HtmlBehaviour(); - this.$completer = new HtmlCompletions(); - - this.createModeDelegates({ - "js-": JavaScriptMode, - "css-": CssMode - }); - - this.foldingRules = new HtmlFoldMode(); -}; -oop.inherits(Mode, TextMode); - -(function() { - - this.blockComment = {start: ""}; - - this.getNextLineIndent = function(state, line, tab) { - return this.$getIndent(line); - }; - - this.checkOutdent = function(state, line, input) { - return false; - }; - - this.getCompletions = function(state, session, pos, prefix) { - return this.$completer.getCompletions(state, session, pos, prefix); - }; - - this.$id = "ace/mode/html"; -}).call(Mode.prototype); - -exports.Mode = Mode; -}); - -ace.define('ace/mode/javascript', ['require', 'exports', 'module' , 'ace/lib/oop', 'ace/mode/text', 'ace/tokenizer', 'ace/mode/javascript_highlight_rules', 'ace/mode/matching_brace_outdent', 'ace/range', 'ace/worker/worker_client', 'ace/mode/behaviour/cstyle', 'ace/mode/folding/cstyle'], function(require, exports, module) { - - -var oop = require("../lib/oop"); -var TextMode = require("./text").Mode; -var Tokenizer = require("../tokenizer").Tokenizer; -var JavaScriptHighlightRules = require("./javascript_highlight_rules").JavaScriptHighlightRules; -var MatchingBraceOutdent = require("./matching_brace_outdent").MatchingBraceOutdent; -var Range = require("../range").Range; -var WorkerClient = require("../worker/worker_client").WorkerClient; -var CstyleBehaviour = require("./behaviour/cstyle").CstyleBehaviour; -var CStyleFoldMode = require("./folding/cstyle").FoldMode; - -var Mode = function() { - this.HighlightRules = JavaScriptHighlightRules; - - this.$outdent = new MatchingBraceOutdent(); - this.$behaviour = new CstyleBehaviour(); - this.foldingRules = new CStyleFoldMode(); -}; -oop.inherits(Mode, TextMode); - -(function() { - - this.lineCommentStart = "//"; - this.blockComment = {start: "/*", end: "*/"}; - - this.getNextLineIndent = function(state, line, tab) { - var indent = this.$getIndent(line); - - var tokenizedLine = this.getTokenizer().getLineTokens(line, state); - var tokens = tokenizedLine.tokens; - var endState = tokenizedLine.state; - - if (tokens.length && tokens[tokens.length-1].type == "comment") { - return indent; - } - - if (state == "start" || state == "no_regex") { - var match = line.match(/^.*(?:\bcase\b.*\:|[\{\(\[])\s*$/); - if (match) { - indent += tab; - } - } else if (state == "doc-start") { - if (endState == "start" || endState == "no_regex") { - return ""; - } - var match = line.match(/^\s*(\/?)\*/); - if (match) { - if (match[1]) { - indent += " "; - } - indent += "* "; - } - } - - return indent; - }; - - this.checkOutdent = function(state, line, input) { - return this.$outdent.checkOutdent(line, input); - }; - - this.autoOutdent = function(state, doc, row) { - this.$outdent.autoOutdent(doc, row); - }; - - this.createWorker = function(session) { - var worker = new WorkerClient(["ace"], "ace/mode/javascript_worker", "JavaScriptWorker"); - worker.attachToDocument(session.getDocument()); - - worker.on("jslint", function(results) { - session.setAnnotations(results.data); - }); - - worker.on("terminate", function() { - session.clearAnnotations(); - }); - - return worker; - }; - - this.$id = "ace/mode/javascript"; -}).call(Mode.prototype); - -exports.Mode = Mode; -}); - -ace.define('ace/mode/javascript_highlight_rules', ['require', 'exports', 'module' , 'ace/lib/oop', 'ace/mode/doc_comment_highlight_rules', 'ace/mode/text_highlight_rules'], function(require, exports, module) { - - -var oop = require("../lib/oop"); -var DocCommentHighlightRules = require("./doc_comment_highlight_rules").DocCommentHighlightRules; -var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; - -var JavaScriptHighlightRules = function() { - var keywordMapper = this.createKeywordMapper({ - "variable.language": - "Array|Boolean|Date|Function|Iterator|Number|Object|RegExp|String|Proxy|" + // Constructors - "Namespace|QName|XML|XMLList|" + // E4X - "ArrayBuffer|Float32Array|Float64Array|Int16Array|Int32Array|Int8Array|" + - "Uint16Array|Uint32Array|Uint8Array|Uint8ClampedArray|" + - "Error|EvalError|InternalError|RangeError|ReferenceError|StopIteration|" + // Errors - "SyntaxError|TypeError|URIError|" + - "decodeURI|decodeURIComponent|encodeURI|encodeURIComponent|eval|isFinite|" + // Non-constructor functions - "isNaN|parseFloat|parseInt|" + - "JSON|Math|" + // Other - "this|arguments|prototype|window|document" , // Pseudo - "keyword": - "const|yield|import|get|set|" + - "break|case|catch|continue|default|delete|do|else|finally|for|function|" + - "if|in|instanceof|new|return|switch|throw|try|typeof|let|var|while|with|debugger|" + - "__parent__|__count__|escape|unescape|with|__proto__|" + - "class|enum|extends|super|export|implements|private|public|interface|package|protected|static", - "storage.type": - "const|let|var|function", - "constant.language": - "null|Infinity|NaN|undefined", - "support.function": - "alert", - "constant.language.boolean": "true|false" - }, "identifier"); - var kwBeforeRe = "case|do|else|finally|in|instanceof|return|throw|try|typeof|yield|void"; - var identifierRe = "[a-zA-Z\\$_\u00a1-\uffff][a-zA-Z\\d\\$_\u00a1-\uffff]*\\b"; - - var escapedRe = "\\\\(?:x[0-9a-fA-F]{2}|" + // hex - "u[0-9a-fA-F]{4}|" + // unicode - "[0-2][0-7]{0,2}|" + // oct - "3[0-6][0-7]?|" + // oct - "37[0-7]?|" + // oct - "[4-7][0-7]?|" + //oct - ".)"; - - this.$rules = { - "no_regex" : [ - { - token : "comment", - regex : "\\/\\/", - next : "line_comment" - }, - DocCommentHighlightRules.getStartRule("doc-start"), - { - token : "comment", // multi line comment - regex : /\/\*/, - next : "comment" - }, { - token : "string", - regex : "'(?=.)", - next : "qstring" - }, { - token : "string", - regex : '"(?=.)', - next : "qqstring" - }, { - token : "constant.numeric", // hex - regex : /0[xX][0-9a-fA-F]+\b/ - }, { - token : "constant.numeric", // float - regex : /[+-]?\d+(?:(?:\.\d*)?(?:[eE][+-]?\d+)?)?\b/ - }, { - token : [ - "storage.type", "punctuation.operator", "support.function", - "punctuation.operator", "entity.name.function", "text","keyword.operator" - ], - regex : "(" + identifierRe + ")(\\.)(prototype)(\\.)(" + identifierRe +")(\\s*)(=)", - next: "function_arguments" - }, { - token : [ - "storage.type", "punctuation.operator", "entity.name.function", "text", - "keyword.operator", "text", "storage.type", "text", "paren.lparen" - ], - regex : "(" + identifierRe + ")(\\.)(" + identifierRe +")(\\s*)(=)(\\s*)(function)(\\s*)(\\()", - next: "function_arguments" - }, { - token : [ - "entity.name.function", "text", "keyword.operator", "text", "storage.type", - "text", "paren.lparen" - ], - regex : "(" + identifierRe +")(\\s*)(=)(\\s*)(function)(\\s*)(\\()", - next: "function_arguments" - }, { - token : [ - "storage.type", "punctuation.operator", "entity.name.function", "text", - "keyword.operator", "text", - "storage.type", "text", "entity.name.function", "text", "paren.lparen" - ], - regex : "(" + identifierRe + ")(\\.)(" + identifierRe +")(\\s*)(=)(\\s*)(function)(\\s+)(\\w+)(\\s*)(\\()", - next: "function_arguments" - }, { - token : [ - "storage.type", "text", "entity.name.function", "text", "paren.lparen" - ], - regex : "(function)(\\s+)(" + identifierRe + ")(\\s*)(\\()", - next: "function_arguments" - }, { - token : [ - "entity.name.function", "text", "punctuation.operator", - "text", "storage.type", "text", "paren.lparen" - ], - regex : "(" + identifierRe + ")(\\s*)(:)(\\s*)(function)(\\s*)(\\()", - next: "function_arguments" - }, { - token : [ - "text", "text", "storage.type", "text", "paren.lparen" - ], - regex : "(:)(\\s*)(function)(\\s*)(\\()", - next: "function_arguments" - }, { - token : "keyword", - regex : "(?:" + kwBeforeRe + ")\\b", - next : "start" - }, { - token : ["punctuation.operator", "support.function"], - regex : /(\.)(s(?:h(?:ift|ow(?:Mod(?:elessDialog|alDialog)|Help))|croll(?:X|By(?:Pages|Lines)?|Y|To)?|t(?:op|rike)|i(?:n|zeToContent|debar|gnText)|ort|u(?:p|b(?:str(?:ing)?)?)|pli(?:ce|t)|e(?:nd|t(?:Re(?:sizable|questHeader)|M(?:i(?:nutes|lliseconds)|onth)|Seconds|Ho(?:tKeys|urs)|Year|Cursor|Time(?:out)?|Interval|ZOptions|Date|UTC(?:M(?:i(?:nutes|lliseconds)|onth)|Seconds|Hours|Date|FullYear)|FullYear|Active)|arch)|qrt|lice|avePreferences|mall)|h(?:ome|andleEvent)|navigate|c(?:har(?:CodeAt|At)|o(?:s|n(?:cat|textual|firm)|mpile)|eil|lear(?:Timeout|Interval)?|a(?:ptureEvents|ll)|reate(?:StyleSheet|Popup|EventObject))|t(?:o(?:GMTString|S(?:tring|ource)|U(?:TCString|pperCase)|Lo(?:caleString|werCase))|est|a(?:n|int(?:Enabled)?))|i(?:s(?:NaN|Finite)|ndexOf|talics)|d(?:isableExternalCapture|ump|etachEvent)|u(?:n(?:shift|taint|escape|watch)|pdateCommands)|j(?:oin|avaEnabled)|p(?:o(?:p|w)|ush|lugins.refresh|a(?:ddings|rse(?:Int|Float)?)|r(?:int|ompt|eference))|e(?:scape|nableExternalCapture|val|lementFromPoint|x(?:p|ec(?:Script|Command)?))|valueOf|UTC|queryCommand(?:State|Indeterm|Enabled|Value)|f(?:i(?:nd|le(?:ModifiedDate|Size|CreatedDate|UpdatedDate)|xed)|o(?:nt(?:size|color)|rward)|loor|romCharCode)|watch|l(?:ink|o(?:ad|g)|astIndexOf)|a(?:sin|nchor|cos|t(?:tachEvent|ob|an(?:2)?)|pply|lert|b(?:s|ort))|r(?:ou(?:nd|teEvents)|e(?:size(?:By|To)|calc|turnValue|place|verse|l(?:oad|ease(?:Capture|Events)))|andom)|g(?:o|et(?:ResponseHeader|M(?:i(?:nutes|lliseconds)|onth)|Se(?:conds|lection)|Hours|Year|Time(?:zoneOffset)?|Da(?:y|te)|UTC(?:M(?:i(?:nutes|lliseconds)|onth)|Seconds|Hours|Da(?:y|te)|FullYear)|FullYear|A(?:ttention|llResponseHeaders)))|m(?:in|ove(?:B(?:y|elow)|To(?:Absolute)?|Above)|ergeAttributes|a(?:tch|rgins|x))|b(?:toa|ig|o(?:ld|rderWidths)|link|ack))\b(?=\()/ - }, { - token : ["punctuation.operator", "support.function.dom"], - regex : /(\.)(s(?:ub(?:stringData|mit)|plitText|e(?:t(?:NamedItem|Attribute(?:Node)?)|lect))|has(?:ChildNodes|Feature)|namedItem|c(?:l(?:ick|o(?:se|neNode))|reate(?:C(?:omment|DATASection|aption)|T(?:Head|extNode|Foot)|DocumentFragment|ProcessingInstruction|E(?:ntityReference|lement)|Attribute))|tabIndex|i(?:nsert(?:Row|Before|Cell|Data)|tem)|open|delete(?:Row|C(?:ell|aption)|T(?:Head|Foot)|Data)|focus|write(?:ln)?|a(?:dd|ppend(?:Child|Data))|re(?:set|place(?:Child|Data)|move(?:NamedItem|Child|Attribute(?:Node)?)?)|get(?:NamedItem|Element(?:sBy(?:Name|TagName)|ById)|Attribute(?:Node)?)|blur)\b(?=\()/ - }, { - token : ["punctuation.operator", "support.constant"], - regex : /(\.)(s(?:ystemLanguage|cr(?:ipts|ollbars|een(?:X|Y|Top|Left))|t(?:yle(?:Sheets)?|atus(?:Text|bar)?)|ibling(?:Below|Above)|ource|uffixes|e(?:curity(?:Policy)?|l(?:ection|f)))|h(?:istory|ost(?:name)?|as(?:h|Focus))|y|X(?:MLDocument|SLDocument)|n(?:ext|ame(?:space(?:s|URI)|Prop))|M(?:IN_VALUE|AX_VALUE)|c(?:haracterSet|o(?:n(?:structor|trollers)|okieEnabled|lorDepth|mp(?:onents|lete))|urrent|puClass|l(?:i(?:p(?:boardData)?|entInformation)|osed|asses)|alle(?:e|r)|rypto)|t(?:o(?:olbar|p)|ext(?:Transform|Indent|Decoration|Align)|ags)|SQRT(?:1_2|2)|i(?:n(?:ner(?:Height|Width)|put)|ds|gnoreCase)|zIndex|o(?:scpu|n(?:readystatechange|Line)|uter(?:Height|Width)|p(?:sProfile|ener)|ffscreenBuffering)|NEGATIVE_INFINITY|d(?:i(?:splay|alog(?:Height|Top|Width|Left|Arguments)|rectories)|e(?:scription|fault(?:Status|Ch(?:ecked|arset)|View)))|u(?:ser(?:Profile|Language|Agent)|n(?:iqueID|defined)|pdateInterval)|_content|p(?:ixelDepth|ort|ersonalbar|kcs11|l(?:ugins|atform)|a(?:thname|dding(?:Right|Bottom|Top|Left)|rent(?:Window|Layer)?|ge(?:X(?:Offset)?|Y(?:Offset)?))|r(?:o(?:to(?:col|type)|duct(?:Sub)?|mpter)|e(?:vious|fix)))|e(?:n(?:coding|abledPlugin)|x(?:ternal|pando)|mbeds)|v(?:isibility|endor(?:Sub)?|Linkcolor)|URLUnencoded|P(?:I|OSITIVE_INFINITY)|f(?:ilename|o(?:nt(?:Size|Family|Weight)|rmName)|rame(?:s|Element)|gColor)|E|whiteSpace|l(?:i(?:stStyleType|n(?:eHeight|kColor))|o(?:ca(?:tion(?:bar)?|lName)|wsrc)|e(?:ngth|ft(?:Context)?)|a(?:st(?:M(?:odified|atch)|Index|Paren)|yer(?:s|X)|nguage))|a(?:pp(?:MinorVersion|Name|Co(?:deName|re)|Version)|vail(?:Height|Top|Width|Left)|ll|r(?:ity|guments)|Linkcolor|bove)|r(?:ight(?:Context)?|e(?:sponse(?:XML|Text)|adyState))|global|x|m(?:imeTypes|ultiline|enubar|argin(?:Right|Bottom|Top|Left))|L(?:N(?:10|2)|OG(?:10E|2E))|b(?:o(?:ttom|rder(?:Width|RightWidth|BottomWidth|Style|Color|TopWidth|LeftWidth))|ufferDepth|elow|ackground(?:Color|Image)))\b/ - }, { - token : ["storage.type", "punctuation.operator", "support.function.firebug"], - regex : /(console)(\.)(warn|info|log|error|time|timeEnd|assert)\b/ - }, { - token : keywordMapper, - regex : identifierRe - }, { - token : "keyword.operator", - regex : /--|\+\+|[!$%&*+\-~]|===|==|=|!=|!==|<=|>=|<<=|>>=|>>>=|<>|<|>|!|&&|\|\||\?\:|\*=|%=|\+=|\-=|&=|\^=/, - next : "start" - }, { - token : "punctuation.operator", - regex : /\?|\:|\,|\;|\./, - next : "start" - }, { - token : "paren.lparen", - regex : /[\[({]/, - next : "start" - }, { - token : "paren.rparen", - regex : /[\])}]/ - }, { - token : "keyword.operator", - regex : /\/=?/, - next : "start" - }, { - token: "comment", - regex: /^#!.*$/ - } - ], - "start": [ - DocCommentHighlightRules.getStartRule("doc-start"), - { - token : "comment", // multi line comment - regex : "\\/\\*", - next : "comment_regex_allowed" - }, { - token : "comment", - regex : "\\/\\/", - next : "line_comment_regex_allowed" - }, { - token: "string.regexp", - regex: "\\/", - next: "regex" - }, { - token : "text", - regex : "\\s+|^$", - next : "start" - }, { - token: "empty", - regex: "", - next: "no_regex" - } - ], - "regex": [ - { - token: "regexp.keyword.operator", - regex: "\\\\(?:u[\\da-fA-F]{4}|x[\\da-fA-F]{2}|.)" - }, { - token: "string.regexp", - regex: "/[sxngimy]*", - next: "no_regex" - }, { - token : "invalid", - regex: /\{\d+\b,?\d*\}[+*]|[+*$^?][+*]|[$^][?]|\?{3,}/ - }, { - token : "constant.language.escape", - regex: /\(\?[:=!]|\)|\{\d+\b,?\d*\}|[+*]\?|[()$^+*?.]/ - }, { - token : "constant.language.delimiter", - regex: /\|/ - }, { - token: "constant.language.escape", - regex: /\[\^?/, - next: "regex_character_class" - }, { - token: "empty", - regex: "$", - next: "no_regex" - }, { - defaultToken: "string.regexp" - } - ], - "regex_character_class": [ - { - token: "regexp.keyword.operator", - regex: "\\\\(?:u[\\da-fA-F]{4}|x[\\da-fA-F]{2}|.)" - }, { - token: "constant.language.escape", - regex: "]", - next: "regex" - }, { - token: "constant.language.escape", - regex: "-" - }, { - token: "empty", - regex: "$", - next: "no_regex" - }, { - defaultToken: "string.regexp.charachterclass" - } - ], - "function_arguments": [ - { - token: "variable.parameter", - regex: identifierRe - }, { - token: "punctuation.operator", - regex: "[, ]+" - }, { - token: "punctuation.operator", - regex: "$" - }, { - token: "empty", - regex: "", - next: "no_regex" - } - ], - "comment_regex_allowed" : [ - {token : "comment", regex : "\\*\\/", next : "start"}, - {defaultToken : "comment"} - ], - "comment" : [ - {token : "comment", regex : "\\*\\/", next : "no_regex"}, - {defaultToken : "comment"} - ], - "line_comment_regex_allowed" : [ - {token : "comment", regex : "$|^", next : "start"}, - {defaultToken : "comment"} - ], - "line_comment" : [ - {token : "comment", regex : "$|^", next : "no_regex"}, - {defaultToken : "comment"} - ], - "qqstring" : [ - { - token : "constant.language.escape", - regex : escapedRe - }, { - token : "string", - regex : "\\\\$", - next : "qqstring" - }, { - token : "string", - regex : '"|$', - next : "no_regex" - }, { - defaultToken: "string" - } - ], - "qstring" : [ - { - token : "constant.language.escape", - regex : escapedRe - }, { - token : "string", - regex : "\\\\$", - next : "qstring" - }, { - token : "string", - regex : "'|$", - next : "no_regex" - }, { - defaultToken: "string" - } - ] - }; - - this.embedRules(DocCommentHighlightRules, "doc-", - [ DocCommentHighlightRules.getEndRule("no_regex") ]); -}; - -oop.inherits(JavaScriptHighlightRules, TextHighlightRules); - -exports.JavaScriptHighlightRules = JavaScriptHighlightRules; -}); - -ace.define('ace/mode/doc_comment_highlight_rules', ['require', 'exports', 'module' , 'ace/lib/oop', 'ace/mode/text_highlight_rules'], function(require, exports, module) { - - -var oop = require("../lib/oop"); -var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; - -var DocCommentHighlightRules = function() { - - this.$rules = { - "start" : [ { - token : "comment.doc.tag", - regex : "@[\\w\\d_]+" // TODO: fix email addresses - }, { - token : "comment.doc.tag", - regex : "\\bTODO\\b" - }, { - defaultToken : "comment.doc" - }] - }; -}; - -oop.inherits(DocCommentHighlightRules, TextHighlightRules); - -DocCommentHighlightRules.getStartRule = function(start) { - return { - token : "comment.doc", // doc comment - regex : "\\/\\*(?=\\*)", - next : start - }; -}; - -DocCommentHighlightRules.getEndRule = function (start) { - return { - token : "comment.doc", // closing comment - regex : "\\*\\/", - next : start - }; -}; - - -exports.DocCommentHighlightRules = DocCommentHighlightRules; - -}); - -ace.define('ace/mode/matching_brace_outdent', ['require', 'exports', 'module' , 'ace/range'], function(require, exports, module) { - - -var Range = require("../range").Range; - -var MatchingBraceOutdent = function() {}; - -(function() { - - this.checkOutdent = function(line, input) { - if (! /^\s+$/.test(line)) - return false; - - return /^\s*\}/.test(input); - }; - - this.autoOutdent = function(doc, row) { - var line = doc.getLine(row); - var match = line.match(/^(\s*\})/); - - if (!match) return 0; - - var column = match[1].length; - var openBracePos = doc.findMatchingBracket({row: row, column: column}); - - if (!openBracePos || openBracePos.row == row) return 0; - - var indent = this.$getIndent(doc.getLine(openBracePos.row)); - doc.replace(new Range(row, 0, row, column-1), indent); - }; - - this.$getIndent = function(line) { - return line.match(/^\s*/)[0]; - }; - -}).call(MatchingBraceOutdent.prototype); - -exports.MatchingBraceOutdent = MatchingBraceOutdent; -}); - -ace.define('ace/mode/behaviour/cstyle', ['require', 'exports', 'module' , 'ace/lib/oop', 'ace/mode/behaviour', 'ace/token_iterator', 'ace/lib/lang'], function(require, exports, module) { - - -var oop = require("../../lib/oop"); -var Behaviour = require("../behaviour").Behaviour; -var TokenIterator = require("../../token_iterator").TokenIterator; -var lang = require("../../lib/lang"); - -var SAFE_INSERT_IN_TOKENS = - ["text", "paren.rparen", "punctuation.operator"]; -var SAFE_INSERT_BEFORE_TOKENS = - ["text", "paren.rparen", "punctuation.operator", "comment"]; - - -var autoInsertedBrackets = 0; -var autoInsertedRow = -1; -var autoInsertedLineEnd = ""; -var maybeInsertedBrackets = 0; -var maybeInsertedRow = -1; -var maybeInsertedLineStart = ""; -var maybeInsertedLineEnd = ""; - -var CstyleBehaviour = function () { - - CstyleBehaviour.isSaneInsertion = function(editor, session) { - var cursor = editor.getCursorPosition(); - var iterator = new TokenIterator(session, cursor.row, cursor.column); - if (!this.$matchTokenType(iterator.getCurrentToken() || "text", SAFE_INSERT_IN_TOKENS)) { - var iterator2 = new TokenIterator(session, cursor.row, cursor.column + 1); - if (!this.$matchTokenType(iterator2.getCurrentToken() || "text", SAFE_INSERT_IN_TOKENS)) - return false; - } - iterator.stepForward(); - return iterator.getCurrentTokenRow() !== cursor.row || - this.$matchTokenType(iterator.getCurrentToken() || "text", SAFE_INSERT_BEFORE_TOKENS); - }; - - CstyleBehaviour.$matchTokenType = function(token, types) { - return types.indexOf(token.type || token) > -1; - }; - - CstyleBehaviour.recordAutoInsert = function(editor, session, bracket) { - var cursor = editor.getCursorPosition(); - var line = session.doc.getLine(cursor.row); - if (!this.isAutoInsertedClosing(cursor, line, autoInsertedLineEnd[0])) - autoInsertedBrackets = 0; - autoInsertedRow = cursor.row; - autoInsertedLineEnd = bracket + line.substr(cursor.column); - autoInsertedBrackets++; - }; - - CstyleBehaviour.recordMaybeInsert = function(editor, session, bracket) { - var cursor = editor.getCursorPosition(); - var line = session.doc.getLine(cursor.row); - if (!this.isMaybeInsertedClosing(cursor, line)) - maybeInsertedBrackets = 0; - maybeInsertedRow = cursor.row; - maybeInsertedLineStart = line.substr(0, cursor.column) + bracket; - maybeInsertedLineEnd = line.substr(cursor.column); - maybeInsertedBrackets++; - }; - - CstyleBehaviour.isAutoInsertedClosing = function(cursor, line, bracket) { - return autoInsertedBrackets > 0 && - cursor.row === autoInsertedRow && - bracket === autoInsertedLineEnd[0] && - line.substr(cursor.column) === autoInsertedLineEnd; - }; - - CstyleBehaviour.isMaybeInsertedClosing = function(cursor, line) { - return maybeInsertedBrackets > 0 && - cursor.row === maybeInsertedRow && - line.substr(cursor.column) === maybeInsertedLineEnd && - line.substr(0, cursor.column) == maybeInsertedLineStart; - }; - - CstyleBehaviour.popAutoInsertedClosing = function() { - autoInsertedLineEnd = autoInsertedLineEnd.substr(1); - autoInsertedBrackets--; - }; - - CstyleBehaviour.clearMaybeInsertedClosing = function() { - maybeInsertedBrackets = 0; - maybeInsertedRow = -1; - }; - - this.add("braces", "insertion", function (state, action, editor, session, text) { - var cursor = editor.getCursorPosition(); - var line = session.doc.getLine(cursor.row); - if (text == '{') { - var selection = editor.getSelectionRange(); - var selected = session.doc.getTextRange(selection); - if (selected !== "" && selected !== "{" && editor.getWrapBehavioursEnabled()) { - return { - text: '{' + selected + '}', - selection: false - }; - } else if (CstyleBehaviour.isSaneInsertion(editor, session)) { - if (/[\]\}\)]/.test(line[cursor.column]) || editor.inMultiSelectMode) { - CstyleBehaviour.recordAutoInsert(editor, session, "}"); - return { - text: '{}', - selection: [1, 1] - }; - } else { - CstyleBehaviour.recordMaybeInsert(editor, session, "{"); - return { - text: '{', - selection: [1, 1] - }; - } - } - } else if (text == '}') { - var rightChar = line.substring(cursor.column, cursor.column + 1); - if (rightChar == '}') { - var matching = session.$findOpeningBracket('}', {column: cursor.column + 1, row: cursor.row}); - if (matching !== null && CstyleBehaviour.isAutoInsertedClosing(cursor, line, text)) { - CstyleBehaviour.popAutoInsertedClosing(); - return { - text: '', - selection: [1, 1] - }; - } - } - } else if (text == "\n" || text == "\r\n") { - var closing = ""; - if (CstyleBehaviour.isMaybeInsertedClosing(cursor, line)) { - closing = lang.stringRepeat("}", maybeInsertedBrackets); - CstyleBehaviour.clearMaybeInsertedClosing(); - } - var rightChar = line.substring(cursor.column, cursor.column + 1); - if (rightChar === '}') { - var openBracePos = session.findMatchingBracket({row: cursor.row, column: cursor.column+1}, '}'); - if (!openBracePos) - return null; - var next_indent = this.$getIndent(session.getLine(openBracePos.row)); - } else if (closing) { - var next_indent = this.$getIndent(line); - } else { - return; - } - var indent = next_indent + session.getTabString(); - - return { - text: '\n' + indent + '\n' + next_indent + closing, - selection: [1, indent.length, 1, indent.length] - }; - } else { - CstyleBehaviour.clearMaybeInsertedClosing(); - } - }); - - this.add("braces", "deletion", function (state, action, editor, session, range) { - var selected = session.doc.getTextRange(range); - if (!range.isMultiLine() && selected == '{') { - var line = session.doc.getLine(range.start.row); - var rightChar = line.substring(range.end.column, range.end.column + 1); - if (rightChar == '}') { - range.end.column++; - return range; - } else { - maybeInsertedBrackets--; - } - } - }); - - this.add("parens", "insertion", function (state, action, editor, session, text) { - if (text == '(') { - var selection = editor.getSelectionRange(); - var selected = session.doc.getTextRange(selection); - if (selected !== "" && editor.getWrapBehavioursEnabled()) { - return { - text: '(' + selected + ')', - selection: false - }; - } else if (CstyleBehaviour.isSaneInsertion(editor, session)) { - CstyleBehaviour.recordAutoInsert(editor, session, ")"); - return { - text: '()', - selection: [1, 1] - }; - } - } else if (text == ')') { - var cursor = editor.getCursorPosition(); - var line = session.doc.getLine(cursor.row); - var rightChar = line.substring(cursor.column, cursor.column + 1); - if (rightChar == ')') { - var matching = session.$findOpeningBracket(')', {column: cursor.column + 1, row: cursor.row}); - if (matching !== null && CstyleBehaviour.isAutoInsertedClosing(cursor, line, text)) { - CstyleBehaviour.popAutoInsertedClosing(); - return { - text: '', - selection: [1, 1] - }; - } - } - } - }); - - this.add("parens", "deletion", function (state, action, editor, session, range) { - var selected = session.doc.getTextRange(range); - if (!range.isMultiLine() && selected == '(') { - var line = session.doc.getLine(range.start.row); - var rightChar = line.substring(range.start.column + 1, range.start.column + 2); - if (rightChar == ')') { - range.end.column++; - return range; - } - } - }); - - this.add("brackets", "insertion", function (state, action, editor, session, text) { - if (text == '[') { - var selection = editor.getSelectionRange(); - var selected = session.doc.getTextRange(selection); - if (selected !== "" && editor.getWrapBehavioursEnabled()) { - return { - text: '[' + selected + ']', - selection: false - }; - } else if (CstyleBehaviour.isSaneInsertion(editor, session)) { - CstyleBehaviour.recordAutoInsert(editor, session, "]"); - return { - text: '[]', - selection: [1, 1] - }; - } - } else if (text == ']') { - var cursor = editor.getCursorPosition(); - var line = session.doc.getLine(cursor.row); - var rightChar = line.substring(cursor.column, cursor.column + 1); - if (rightChar == ']') { - var matching = session.$findOpeningBracket(']', {column: cursor.column + 1, row: cursor.row}); - if (matching !== null && CstyleBehaviour.isAutoInsertedClosing(cursor, line, text)) { - CstyleBehaviour.popAutoInsertedClosing(); - return { - text: '', - selection: [1, 1] - }; - } - } - } - }); - - this.add("brackets", "deletion", function (state, action, editor, session, range) { - var selected = session.doc.getTextRange(range); - if (!range.isMultiLine() && selected == '[') { - var line = session.doc.getLine(range.start.row); - var rightChar = line.substring(range.start.column + 1, range.start.column + 2); - if (rightChar == ']') { - range.end.column++; - return range; - } - } - }); - - this.add("string_dquotes", "insertion", function (state, action, editor, session, text) { - if (text == '"' || text == "'") { - var quote = text; - var selection = editor.getSelectionRange(); - var selected = session.doc.getTextRange(selection); - if (selected !== "" && selected !== "'" && selected != '"' && editor.getWrapBehavioursEnabled()) { - return { - text: quote + selected + quote, - selection: false - }; - } else { - var cursor = editor.getCursorPosition(); - var line = session.doc.getLine(cursor.row); - var leftChar = line.substring(cursor.column-1, cursor.column); - if (leftChar == '\\') { - return null; - } - var tokens = session.getTokens(selection.start.row); - var col = 0, token; - var quotepos = -1; // Track whether we're inside an open quote. - - for (var x = 0; x < tokens.length; x++) { - token = tokens[x]; - if (token.type == "string") { - quotepos = -1; - } else if (quotepos < 0) { - quotepos = token.value.indexOf(quote); - } - if ((token.value.length + col) > selection.start.column) { - break; - } - col += tokens[x].value.length; - } - if (!token || (quotepos < 0 && token.type !== "comment" && (token.type !== "string" || ((selection.start.column !== token.value.length+col-1) && token.value.lastIndexOf(quote) === token.value.length-1)))) { - if (!CstyleBehaviour.isSaneInsertion(editor, session)) - return; - return { - text: quote + quote, - selection: [1,1] - }; - } else if (token && token.type === "string") { - var rightChar = line.substring(cursor.column, cursor.column + 1); - if (rightChar == quote) { - return { - text: '', - selection: [1, 1] - }; - } - } - } - } - }); - - this.add("string_dquotes", "deletion", function (state, action, editor, session, range) { - var selected = session.doc.getTextRange(range); - if (!range.isMultiLine() && (selected == '"' || selected == "'")) { - var line = session.doc.getLine(range.start.row); - var rightChar = line.substring(range.start.column + 1, range.start.column + 2); - if (rightChar == selected) { - range.end.column++; - return range; - } - } - }); - -}; - -oop.inherits(CstyleBehaviour, Behaviour); - -exports.CstyleBehaviour = CstyleBehaviour; -}); - -ace.define('ace/mode/folding/cstyle', ['require', 'exports', 'module' , 'ace/lib/oop', 'ace/range', 'ace/mode/folding/fold_mode'], function(require, exports, module) { - - -var oop = require("../../lib/oop"); -var Range = require("../../range").Range; -var BaseFoldMode = require("./fold_mode").FoldMode; - -var FoldMode = exports.FoldMode = function(commentRegex) { - if (commentRegex) { - this.foldingStartMarker = new RegExp( - this.foldingStartMarker.source.replace(/\|[^|]*?$/, "|" + commentRegex.start) - ); - this.foldingStopMarker = new RegExp( - this.foldingStopMarker.source.replace(/\|[^|]*?$/, "|" + commentRegex.end) - ); - } -}; -oop.inherits(FoldMode, BaseFoldMode); - -(function() { - - this.foldingStartMarker = /(\{|\[)[^\}\]]*$|^\s*(\/\*)/; - this.foldingStopMarker = /^[^\[\{]*(\}|\])|^[\s\*]*(\*\/)/; - - this.getFoldWidgetRange = function(session, foldStyle, row, forceMultiline) { - var line = session.getLine(row); - var match = line.match(this.foldingStartMarker); - if (match) { - var i = match.index; - - if (match[1]) - return this.openingBracketBlock(session, match[1], row, i); - - var range = session.getCommentFoldRange(row, i + match[0].length, 1); - - if (range && !range.isMultiLine()) { - if (forceMultiline) { - range = this.getSectionRange(session, row); - } else if (foldStyle != "all") - range = null; - } - - return range; - } - - if (foldStyle === "markbegin") - return; - - var match = line.match(this.foldingStopMarker); - if (match) { - var i = match.index + match[0].length; - - if (match[1]) - return this.closingBracketBlock(session, match[1], row, i); - - return session.getCommentFoldRange(row, i, -1); - } - }; - - this.getSectionRange = function(session, row) { - var line = session.getLine(row); - var startIndent = line.search(/\S/); - var startRow = row; - var startColumn = line.length; - row = row + 1; - var endRow = row; - var maxRow = session.getLength(); - while (++row < maxRow) { - line = session.getLine(row); - var indent = line.search(/\S/); - if (indent === -1) - continue; - if (startIndent > indent) - break; - var subRange = this.getFoldWidgetRange(session, "all", row); - - if (subRange) { - if (subRange.start.row <= startRow) { - break; - } else if (subRange.isMultiLine()) { - row = subRange.end.row; - } else if (startIndent == indent) { - break; - } - } - endRow = row; - } - - return new Range(startRow, startColumn, endRow, session.getLine(endRow).length); - }; - -}).call(FoldMode.prototype); - -}); - -ace.define('ace/mode/css', ['require', 'exports', 'module' , 'ace/lib/oop', 'ace/mode/text', 'ace/tokenizer', 'ace/mode/css_highlight_rules', 'ace/mode/matching_brace_outdent', 'ace/worker/worker_client', 'ace/mode/behaviour/css', 'ace/mode/folding/cstyle'], function(require, exports, module) { - - -var oop = require("../lib/oop"); -var TextMode = require("./text").Mode; -var Tokenizer = require("../tokenizer").Tokenizer; -var CssHighlightRules = require("./css_highlight_rules").CssHighlightRules; -var MatchingBraceOutdent = require("./matching_brace_outdent").MatchingBraceOutdent; -var WorkerClient = require("../worker/worker_client").WorkerClient; -var CssBehaviour = require("./behaviour/css").CssBehaviour; -var CStyleFoldMode = require("./folding/cstyle").FoldMode; - -var Mode = function() { - this.HighlightRules = CssHighlightRules; - this.$outdent = new MatchingBraceOutdent(); - this.$behaviour = new CssBehaviour(); - this.foldingRules = new CStyleFoldMode(); -}; -oop.inherits(Mode, TextMode); - -(function() { - - this.foldingRules = "cStyle"; - this.blockComment = {start: "/*", end: "*/"}; - - this.getNextLineIndent = function(state, line, tab) { - var indent = this.$getIndent(line); - var tokens = this.getTokenizer().getLineTokens(line, state).tokens; - if (tokens.length && tokens[tokens.length-1].type == "comment") { - return indent; - } - - var match = line.match(/^.*\{\s*$/); - if (match) { - indent += tab; - } - - return indent; - }; - - this.checkOutdent = function(state, line, input) { - return this.$outdent.checkOutdent(line, input); - }; - - this.autoOutdent = function(state, doc, row) { - this.$outdent.autoOutdent(doc, row); - }; - - this.createWorker = function(session) { - var worker = new WorkerClient(["ace"], "ace/mode/css_worker", "Worker"); - worker.attachToDocument(session.getDocument()); - - worker.on("csslint", function(e) { - session.setAnnotations(e.data); - }); - - worker.on("terminate", function() { - session.clearAnnotations(); - }); - - return worker; - }; - - this.$id = "ace/mode/css"; -}).call(Mode.prototype); - -exports.Mode = Mode; - -}); - -ace.define('ace/mode/css_highlight_rules', ['require', 'exports', 'module' , 'ace/lib/oop', 'ace/lib/lang', 'ace/mode/text_highlight_rules'], function(require, exports, module) { - - -var oop = require("../lib/oop"); -var lang = require("../lib/lang"); -var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; -var supportType = exports.supportType = "animation-fill-mode|alignment-adjust|alignment-baseline|animation-delay|animation-direction|animation-duration|animation-iteration-count|animation-name|animation-play-state|animation-timing-function|animation|appearance|azimuth|backface-visibility|background-attachment|background-break|background-clip|background-color|background-image|background-origin|background-position|background-repeat|background-size|background|baseline-shift|binding|bleed|bookmark-label|bookmark-level|bookmark-state|bookmark-target|border-bottom|border-bottom-color|border-bottom-left-radius|border-bottom-right-radius|border-bottom-style|border-bottom-width|border-collapse|border-color|border-image|border-image-outset|border-image-repeat|border-image-slice|border-image-source|border-image-width|border-left|border-left-color|border-left-style|border-left-width|border-radius|border-right|border-right-color|border-right-style|border-right-width|border-spacing|border-style|border-top|border-top-color|border-top-left-radius|border-top-right-radius|border-top-style|border-top-width|border-width|border|bottom|box-align|box-decoration-break|box-direction|box-flex-group|box-flex|box-lines|box-ordinal-group|box-orient|box-pack|box-shadow|box-sizing|break-after|break-before|break-inside|caption-side|clear|clip|color-profile|color|column-count|column-fill|column-gap|column-rule|column-rule-color|column-rule-style|column-rule-width|column-span|column-width|columns|content|counter-increment|counter-reset|crop|cue-after|cue-before|cue|cursor|direction|display|dominant-baseline|drop-initial-after-adjust|drop-initial-after-align|drop-initial-before-adjust|drop-initial-before-align|drop-initial-size|drop-initial-value|elevation|empty-cells|fit|fit-position|float-offset|float|font-family|font-size|font-size-adjust|font-stretch|font-style|font-variant|font-weight|font|grid-columns|grid-rows|hanging-punctuation|height|hyphenate-after|hyphenate-before|hyphenate-character|hyphenate-lines|hyphenate-resource|hyphens|icon|image-orientation|image-rendering|image-resolution|inline-box-align|left|letter-spacing|line-height|line-stacking-ruby|line-stacking-shift|line-stacking-strategy|line-stacking|list-style-image|list-style-position|list-style-type|list-style|margin-bottom|margin-left|margin-right|margin-top|margin|mark-after|mark-before|mark|marks|marquee-direction|marquee-play-count|marquee-speed|marquee-style|max-height|max-width|min-height|min-width|move-to|nav-down|nav-index|nav-left|nav-right|nav-up|opacity|orphans|outline-color|outline-offset|outline-style|outline-width|outline|overflow-style|overflow-x|overflow-y|overflow|padding-bottom|padding-left|padding-right|padding-top|padding|page-break-after|page-break-before|page-break-inside|page-policy|page|pause-after|pause-before|pause|perspective-origin|perspective|phonemes|pitch-range|pitch|play-during|pointer-events|position|presentation-level|punctuation-trim|quotes|rendering-intent|resize|rest-after|rest-before|rest|richness|right|rotation-point|rotation|ruby-align|ruby-overhang|ruby-position|ruby-span|size|speak-header|speak-numeral|speak-punctuation|speak|speech-rate|stress|string-set|table-layout|target-name|target-new|target-position|target|text-align-last|text-align|text-decoration|text-emphasis|text-height|text-indent|text-justify|text-outline|text-shadow|text-transform|text-wrap|top|transform-origin|transform-style|transform|transition-delay|transition-duration|transition-property|transition-timing-function|transition|unicode-bidi|vertical-align|visibility|voice-balance|voice-duration|voice-family|voice-pitch-range|voice-pitch|voice-rate|voice-stress|voice-volume|volume|white-space-collapse|white-space|widows|width|word-break|word-spacing|word-wrap|z-index"; -var supportFunction = exports.supportFunction = "rgb|rgba|url|attr|counter|counters"; -var supportConstant = exports.supportConstant = "absolute|after-edge|after|all-scroll|all|alphabetic|always|antialiased|armenian|auto|avoid-column|avoid-page|avoid|balance|baseline|before-edge|before|below|bidi-override|block-line-height|block|bold|bolder|border-box|both|bottom|box|break-all|break-word|capitalize|caps-height|caption|center|central|char|circle|cjk-ideographic|clone|close-quote|col-resize|collapse|column|consider-shifts|contain|content-box|cover|crosshair|cubic-bezier|dashed|decimal-leading-zero|decimal|default|disabled|disc|disregard-shifts|distribute-all-lines|distribute-letter|distribute-space|distribute|dotted|double|e-resize|ease-in|ease-in-out|ease-out|ease|ellipsis|end|exclude-ruby|fill|fixed|georgian|glyphs|grid-height|groove|hand|hanging|hebrew|help|hidden|hiragana-iroha|hiragana|horizontal|icon|ideograph-alpha|ideograph-numeric|ideograph-parenthesis|ideograph-space|ideographic|inactive|include-ruby|inherit|initial|inline-block|inline-box|inline-line-height|inline-table|inline|inset|inside|inter-ideograph|inter-word|invert|italic|justify|katakana-iroha|katakana|keep-all|last|left|lighter|line-edge|line-through|line|linear|list-item|local|loose|lower-alpha|lower-greek|lower-latin|lower-roman|lowercase|lr-tb|ltr|mathematical|max-height|max-size|medium|menu|message-box|middle|move|n-resize|ne-resize|newspaper|no-change|no-close-quote|no-drop|no-open-quote|no-repeat|none|normal|not-allowed|nowrap|nw-resize|oblique|open-quote|outset|outside|overline|padding-box|page|pointer|pre-line|pre-wrap|pre|preserve-3d|progress|relative|repeat-x|repeat-y|repeat|replaced|reset-size|ridge|right|round|row-resize|rtl|s-resize|scroll|se-resize|separate|slice|small-caps|small-caption|solid|space|square|start|static|status-bar|step-end|step-start|steps|stretch|strict|sub|super|sw-resize|table-caption|table-cell|table-column-group|table-column|table-footer-group|table-header-group|table-row-group|table-row|table|tb-rl|text-after-edge|text-before-edge|text-bottom|text-size|text-top|text|thick|thin|transparent|underline|upper-alpha|upper-latin|upper-roman|uppercase|use-script|vertical-ideographic|vertical-text|visible|w-resize|wait|whitespace|z-index|zero"; -var supportConstantColor = exports.supportConstantColor = "aqua|black|blue|fuchsia|gray|green|lime|maroon|navy|olive|orange|purple|red|silver|teal|white|yellow"; -var supportConstantFonts = exports.supportConstantFonts = "arial|century|comic|courier|garamond|georgia|helvetica|impact|lucida|symbol|system|tahoma|times|trebuchet|utopia|verdana|webdings|sans-serif|serif|monospace"; - -var numRe = exports.numRe = "\\-?(?:(?:[0-9]+)|(?:[0-9]*\\.[0-9]+))"; -var pseudoElements = exports.pseudoElements = "(\\:+)\\b(after|before|first-letter|first-line|moz-selection|selection)\\b"; -var pseudoClasses = exports.pseudoClasses = "(:)\\b(active|checked|disabled|empty|enabled|first-child|first-of-type|focus|hover|indeterminate|invalid|last-child|last-of-type|link|not|nth-child|nth-last-child|nth-last-of-type|nth-of-type|only-child|only-of-type|required|root|target|valid|visited)\\b"; - -var CssHighlightRules = function() { - - var keywordMapper = this.createKeywordMapper({ - "support.function": supportFunction, - "support.constant": supportConstant, - "support.type": supportType, - "support.constant.color": supportConstantColor, - "support.constant.fonts": supportConstantFonts - }, "text", true); - - this.$rules = { - "start" : [{ - token : "comment", // multi line comment - regex : "\\/\\*", - push : "comment" - }, { - token: "paren.lparen", - regex: "\\{", - push: "ruleset" - }, { - token: "string", - regex: "@.*?{", - push: "media" - }, { - token: "keyword", - regex: "#[a-z0-9-_]+" - }, { - token: "variable", - regex: "\\.[a-z0-9-_]+" - }, { - token: "string", - regex: ":[a-z0-9-_]+" - }, { - token: "constant", - regex: "[a-z0-9-_]+" - }, { - caseInsensitive: true - }], - - "media" : [{ - token : "comment", // multi line comment - regex : "\\/\\*", - push : "comment" - }, { - token: "paren.lparen", - regex: "\\{", - push: "ruleset" - }, { - token: "string", - regex: "\\}", - next: "pop" - }, { - token: "keyword", - regex: "#[a-z0-9-_]+" - }, { - token: "variable", - regex: "\\.[a-z0-9-_]+" - }, { - token: "string", - regex: ":[a-z0-9-_]+" - }, { - token: "constant", - regex: "[a-z0-9-_]+" - }, { - caseInsensitive: true - }], - - "comment" : [{ - token : "comment", - regex : "\\*\\/", - next : "pop" - }, { - defaultToken : "comment" - }], - - "ruleset" : [ - { - token : "paren.rparen", - regex : "\\}", - next: "pop" - }, { - token : "comment", // multi line comment - regex : "\\/\\*", - push : "comment" - }, { - token : "string", // single line - regex : '["](?:(?:\\\\.)|(?:[^"\\\\]))*?["]' - }, { - token : "string", // single line - regex : "['](?:(?:\\\\.)|(?:[^'\\\\]))*?[']" - }, { - token : ["constant.numeric", "keyword"], - regex : "(" + numRe + ")(ch|cm|deg|em|ex|fr|gd|grad|Hz|in|kHz|mm|ms|pc|pt|px|rad|rem|s|turn|vh|vm|vw|%)" - }, { - token : "constant.numeric", - regex : numRe - }, { - token : "constant.numeric", // hex6 color - regex : "#[a-f0-9]{6}" - }, { - token : "constant.numeric", // hex3 color - regex : "#[a-f0-9]{3}" - }, { - token : ["punctuation", "entity.other.attribute-name.pseudo-element.css"], - regex : pseudoElements - }, { - token : ["punctuation", "entity.other.attribute-name.pseudo-class.css"], - regex : pseudoClasses - }, { - token : ["support.function", "string", "support.function"], - regex : "(url\\()(.*)(\\))" - }, { - token : keywordMapper, - regex : "\\-?[a-zA-Z_][a-zA-Z0-9_\\-]*" - }, { - caseInsensitive: true - }] - }; - - this.normalizeRules(); -}; - -oop.inherits(CssHighlightRules, TextHighlightRules); - -exports.CssHighlightRules = CssHighlightRules; - -}); - -ace.define('ace/mode/behaviour/css', ['require', 'exports', 'module' , 'ace/lib/oop', 'ace/mode/behaviour', 'ace/mode/behaviour/cstyle', 'ace/token_iterator'], function(require, exports, module) { - - -var oop = require("../../lib/oop"); -var Behaviour = require("../behaviour").Behaviour; -var CstyleBehaviour = require("./cstyle").CstyleBehaviour; -var TokenIterator = require("../../token_iterator").TokenIterator; - -var CssBehaviour = function () { - - this.inherit(CstyleBehaviour); - - this.add("colon", "insertion", function (state, action, editor, session, text) { - if (text === ':') { - var cursor = editor.getCursorPosition(); - var iterator = new TokenIterator(session, cursor.row, cursor.column); - var token = iterator.getCurrentToken(); - if (token && token.value.match(/\s+/)) { - token = iterator.stepBackward(); - } - if (token && token.type === 'support.type') { - var line = session.doc.getLine(cursor.row); - var rightChar = line.substring(cursor.column, cursor.column + 1); - if (rightChar === ':') { - return { - text: '', - selection: [1, 1] - } - } - if (!line.substring(cursor.column).match(/^\s*;/)) { - return { - text: ':;', - selection: [1, 1] - } - } - } - } - }); - - this.add("colon", "deletion", function (state, action, editor, session, range) { - var selected = session.doc.getTextRange(range); - if (!range.isMultiLine() && selected === ':') { - var cursor = editor.getCursorPosition(); - var iterator = new TokenIterator(session, cursor.row, cursor.column); - var token = iterator.getCurrentToken(); - if (token && token.value.match(/\s+/)) { - token = iterator.stepBackward(); - } - if (token && token.type === 'support.type') { - var line = session.doc.getLine(range.start.row); - var rightChar = line.substring(range.end.column, range.end.column + 1); - if (rightChar === ';') { - range.end.column ++; - return range; - } - } - } - }); - - this.add("semicolon", "insertion", function (state, action, editor, session, text) { - if (text === ';') { - var cursor = editor.getCursorPosition(); - var line = session.doc.getLine(cursor.row); - var rightChar = line.substring(cursor.column, cursor.column + 1); - if (rightChar === ';') { - return { - text: '', - selection: [1, 1] - } - } - } - }); - -} -oop.inherits(CssBehaviour, CstyleBehaviour); - -exports.CssBehaviour = CssBehaviour; -}); - -ace.define('ace/mode/html_highlight_rules', ['require', 'exports', 'module' , 'ace/lib/oop', 'ace/lib/lang', 'ace/mode/css_highlight_rules', 'ace/mode/javascript_highlight_rules', 'ace/mode/xml_highlight_rules'], function(require, exports, module) { - - -var oop = require("../lib/oop"); -var lang = require("../lib/lang"); -var CssHighlightRules = require("./css_highlight_rules").CssHighlightRules; -var JavaScriptHighlightRules = require("./javascript_highlight_rules").JavaScriptHighlightRules; -var XmlHighlightRules = require("./xml_highlight_rules").XmlHighlightRules; - -var tagMap = lang.createMap({ - a : 'anchor', - button : 'form', - form : 'form', - img : 'image', - input : 'form', - label : 'form', - option : 'form', - script : 'script', - select : 'form', - textarea : 'form', - style : 'style', - table : 'table', - tbody : 'table', - td : 'table', - tfoot : 'table', - th : 'table', - tr : 'table' -}); - -var HtmlHighlightRules = function() { - XmlHighlightRules.call(this); - - this.addRules({ - attributes: [{ - include : "space" - }, { - token : "entity.other.attribute-name", - regex : "[-_a-zA-Z0-9:]+" - }, { - token : "keyword.operator.separator", - regex : "=", - push : [{ - include: "space" - }, { - token : "string", - regex : "[^<>='\"`\\s]+", - next : "pop" - }, { - token : "empty", - regex : "", - next : "pop" - }] - }, { - include : "string" - }], - tag: [{ - token : function(start, tag) { - var group = tagMap[tag]; - return ["meta.tag.punctuation.begin", - "meta.tag.name" + (group ? "." + group : "")]; - }, - regex : "(<)([-_a-zA-Z0-9:]+)", - next: "start_tag_stuff" - }, { - token : function(start, tag) { - var group = tagMap[tag]; - return ["meta.tag.punctuation.begin", - "meta.tag.name" + (group ? "." + group : "")]; - }, - regex : "(", next : "start"} - ], - end_tag_stuff: [ - {include : "space"}, - {token : "meta.tag.punctuation.end", regex : ">", next : "start"} - ] - }); - - this.embedTagRules(CssHighlightRules, "css-", "style"); - this.embedTagRules(JavaScriptHighlightRules, "js-", "script"); - - if (this.constructor === HtmlHighlightRules) - this.normalizeRules(); -}; - -oop.inherits(HtmlHighlightRules, XmlHighlightRules); - -exports.HtmlHighlightRules = HtmlHighlightRules; -}); - -ace.define('ace/mode/xml_highlight_rules', ['require', 'exports', 'module' , 'ace/lib/oop', 'ace/mode/xml_util', 'ace/mode/text_highlight_rules'], function(require, exports, module) { - - -var oop = require("../lib/oop"); -var xmlUtil = require("./xml_util"); -var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; - -var XmlHighlightRules = function(normalize) { - this.$rules = { - start : [ - {token : "punctuation.string.begin", regex : "<\\!\\[CDATA\\[", next : "cdata"}, - { - token : ["punctuation.instruction.begin", "keyword.instruction"], - regex : "(<\\?)(xml)(?=[\\s])", next : "xml_declaration" - }, - { - token : ["punctuation.instruction.begin", "keyword.instruction"], - regex : "(<\\?)([-_a-zA-Z0-9]+)", next : "instruction" - }, - {token : "comment", regex : "<\\!--", next : "comment"}, - { - token : ["punctuation.doctype.begin", "meta.tag.doctype"], - regex : "(<\\!)(DOCTYPE)(?=[\\s])", next : "doctype" - }, - {include : "tag"}, - {include : "reference"} - ], - - xml_declaration : [ - {include : "attributes"}, - {include : "instruction"} - ], - - instruction : [ - {token : "punctuation.instruction.end", regex : "\\?>", next : "start"} - ], - - doctype : [ - {include : "space"}, - {include : "string"}, - {token : "punctuation.doctype.end", regex : ">", next : "start"}, - {token : "xml-pe", regex : "[-_a-zA-Z0-9:]+"}, - {token : "punctuation.begin", regex : "\\[", push : "declarations"} - ], - - declarations : [{ - token : "text", - regex : "\\s+" - }, { - token: "punctuation.end", - regex: "]", - next: "pop" - }, { - token : ["punctuation.begin", "keyword"], - regex : "(<\\!)([-_a-zA-Z0-9]+)", - push : [{ - token : "text", - regex : "\\s+" - }, - { - token : "punctuation.end", - regex : ">", - next : "pop" - }, - {include : "string"}] - }], - - cdata : [ - {token : "string.end", regex : "\\]\\]>", next : "start"}, - {token : "text", regex : "\\s+"}, - {token : "text", regex : "(?:[^\\]]|\\](?!\\]>))+"} - ], - - comment : [ - {token : "comment", regex : "-->", next : "start"}, - {defaultToken : "comment"} - ], - - tag : [{ - token : ["meta.tag.punctuation.begin", "meta.tag.name"], - regex : "(<)((?:[-_a-zA-Z0-9]+:)?[-_a-zA-Z0-9]+)", - next: [ - {include : "attributes"}, - {token : "meta.tag.punctuation.end", regex : "/?>", next : "start"} - ] - }, { - token : ["meta.tag.punctuation.begin", "meta.tag.name"], - regex : "(", next : "start"} - ] - }], - - space : [ - {token : "text", regex : "\\s+"} - ], - - reference : [{ - token : "constant.language.escape", - regex : "(?:&#[0-9]+;)|(?:&#x[0-9a-fA-F]+;)|(?:&[a-zA-Z0-9_:\\.-]+;)" - }, { - token : "text", regex : "&" - }], - - string: [{ - token : "string", - regex : "'", - push : "qstring_inner" - }, { - token : "string", - regex : '"', - push : "qqstring_inner" - }], - - qstring_inner: [ - {token : "string", regex: "'", next: "pop"}, - {include : "reference"}, - {defaultToken : "string"} - ], - - qqstring_inner: [ - {token : "string", regex: '"', next: "pop"}, - {include : "reference"}, - {defaultToken : "string"} - ], - - attributes: [{ - token : "entity.other.attribute-name", - regex : "(?:[-_a-zA-Z0-9]+:)?[-_a-zA-Z0-9]+" - }, { - token : "keyword.operator.separator", - regex : "=" - }, { - include : "space" - }, { - include : "string" - }] - }; - - if (this.constructor === XmlHighlightRules) - this.normalizeRules(); -}; - - -(function() { - - this.embedTagRules = function(HighlightRules, prefix, tag){ - this.$rules.tag.unshift({ - token : ["meta.tag.punctuation.begin", "meta.tag.name." + tag], - regex : "(<)(" + tag + ")", - next: [ - {include : "space"}, - {include : "attributes"}, - {token : "meta.tag.punctuation.end", regex : "/?>", next : prefix + "start"} - ] - }); - - this.$rules[tag + "-end"] = [ - {include : "space"}, - {token : "meta.tag.punctuation.end", regex : ">", next: "start", - onMatch : function(value, currentState, stack) { - stack.splice(0); - return this.token; - }} - ] - - this.embedRules(HighlightRules, prefix, [{ - token: ["meta.tag.punctuation.begin", "meta.tag.name." + tag], - regex : "(" - }]); - }; - -}).call(TextHighlightRules.prototype); - -oop.inherits(XmlHighlightRules, TextHighlightRules); - -exports.XmlHighlightRules = XmlHighlightRules; -}); - -ace.define('ace/mode/xml_util', ['require', 'exports', 'module' ], function(require, exports, module) { - - -function string(state) { - return [{ - token : "string", - regex : '"', - next : state + "_qqstring" - }, { - token : "string", - regex : "'", - next : state + "_qstring" - }]; -} - -function multiLineString(quote, state) { - return [ - {token : "string", regex : quote, next : state}, - { - token : "constant.language.escape", - regex : "(?:&#[0-9]+;)|(?:&#x[0-9a-fA-F]+;)|(?:&[a-zA-Z0-9_:\\.-]+;)" - }, - {defaultToken : "string"} - ]; -} - -exports.tag = function(states, name, nextState, tagMap) { - states[name] = [{ - token : "text", - regex : "\\s+" - }, { - - token : !tagMap ? "meta.tag.tag-name" : function(value) { - if (tagMap[value]) - return "meta.tag.tag-name." + tagMap[value]; - else - return "meta.tag.tag-name"; - }, - regex : "[-_a-zA-Z0-9:]+", - next : name + "_embed_attribute_list" - }, { - token: "empty", - regex: "", - next : name + "_embed_attribute_list" - }]; - - states[name + "_qstring"] = multiLineString("'", name + "_embed_attribute_list"); - states[name + "_qqstring"] = multiLineString("\"", name + "_embed_attribute_list"); - - states[name + "_embed_attribute_list"] = [{ - token : "meta.tag.r", - regex : "/?>", - next : nextState - }, { - token : "keyword.operator", - regex : "=" - }, { - token : "entity.other.attribute-name", - regex : "[-_a-zA-Z0-9:]+" - }, { - token : "constant.numeric", // float - regex : "[+-]?\\d+(?:(?:\\.\\d*)?(?:[eE][+-]?\\d+)?)?\\b" - }, { - token : "text", - regex : "\\s+" - }].concat(string(name)); -}; - -}); - -ace.define('ace/mode/behaviour/html', ['require', 'exports', 'module' , 'ace/lib/oop', 'ace/mode/behaviour/xml', 'ace/mode/behaviour/cstyle', 'ace/token_iterator'], function(require, exports, module) { - - -var oop = require("../../lib/oop"); -var XmlBehaviour = require("../behaviour/xml").XmlBehaviour; -var CstyleBehaviour = require("./cstyle").CstyleBehaviour; -var TokenIterator = require("../../token_iterator").TokenIterator; -var voidElements = ['area', 'base', 'br', 'col', 'command', 'embed', 'hr', 'img', 'input', 'keygen', 'link', 'meta', 'param', 'source', 'track', 'wbr']; - -function hasType(token, type) { - var tokenTypes = token.type.split('.'); - return type.split('.').every(function(type){ - return (tokenTypes.indexOf(type) !== -1); - }); - return hasType; -} - -var HtmlBehaviour = function () { - - this.inherit(XmlBehaviour); // Get xml behaviour - - this.add("autoclosing", "insertion", function (state, action, editor, session, text) { - if (text == '>') { - var position = editor.getCursorPosition(); - var iterator = new TokenIterator(session, position.row, position.column); - var token = iterator.getCurrentToken(); - - if (token && hasType(token, 'string') && iterator.getCurrentTokenColumn() + token.value.length > position.column) - return; - var atCursor = false; - if (!token || !hasType(token, 'meta.tag') && !(hasType(token, 'text') && token.value.match('/'))){ - do { - token = iterator.stepBackward(); - } while (token && (hasType(token, 'string') || hasType(token, 'keyword.operator') || hasType(token, 'entity.attribute-name') || hasType(token, 'text'))); - } else { - atCursor = true; - } - if (!token || !hasType(token, 'meta.tag.name') || iterator.stepBackward().value.match('/')) { - return; - } - var element = token.value; - if (atCursor){ - var element = element.substring(0, position.column - token.start); - } - if (voidElements.indexOf(element) !== -1){ - return; - } - return { - text: '>' + '', - selection: [1, 1] - } - } - }); -} -oop.inherits(HtmlBehaviour, XmlBehaviour); - -exports.HtmlBehaviour = HtmlBehaviour; -}); - -ace.define('ace/mode/behaviour/xml', ['require', 'exports', 'module' , 'ace/lib/oop', 'ace/mode/behaviour', 'ace/mode/behaviour/cstyle', 'ace/token_iterator'], function(require, exports, module) { - - -var oop = require("../../lib/oop"); -var Behaviour = require("../behaviour").Behaviour; -var CstyleBehaviour = require("./cstyle").CstyleBehaviour; -var TokenIterator = require("../../token_iterator").TokenIterator; - -function hasType(token, type) { - var tokenTypes = token.type.split('.'); - return type.split('.').every(function(type){ - return (tokenTypes.indexOf(type) !== -1); - }); - return hasType; -} - -var XmlBehaviour = function () { - - this.inherit(CstyleBehaviour, ["string_dquotes"]); // Get string behaviour - - this.add("autoclosing", "insertion", function (state, action, editor, session, text) { - if (text == '>') { - var position = editor.getCursorPosition(); - var iterator = new TokenIterator(session, position.row, position.column); - var token = iterator.getCurrentToken(); - - if (token && hasType(token, 'string') && iterator.getCurrentTokenColumn() + token.value.length > position.column) - return; - var atCursor = false; - if (!token || !hasType(token, 'meta.tag') && !(hasType(token, 'text') && token.value.match('/'))){ - do { - token = iterator.stepBackward(); - } while (token && (hasType(token, 'string') || hasType(token, 'keyword.operator') || hasType(token, 'entity.attribute-name') || hasType(token, 'text'))); - } else { - atCursor = true; - } - if (!token || !hasType(token, 'meta.tag.name') || iterator.stepBackward().value.match('/')) { - return; - } - var tag = token.value; - if (atCursor){ - var tag = tag.substring(0, position.column - token.start); - } - - return { - text: '>' + '', - selection: [1, 1] - } - } - }); - - this.add('autoindent', 'insertion', function (state, action, editor, session, text) { - if (text == "\n") { - var cursor = editor.getCursorPosition(); - var line = session.getLine(cursor.row); - var rightChars = line.substring(cursor.column, cursor.column + 2); - if (rightChars == '?)/; - this._parseTag = function(tag) { - - var match = tag.match(this.tagRe); - var column = 0; - - return { - value: tag, - match: match ? match[2] : "", - closing: match ? !!match[3] : false, - selfClosing: match ? !!match[5] || match[2] == "/>" : false, - tagName: match ? match[4] : "", - column: match[1] ? column + match[1].length : column - }; - }; - this._readTagForward = function(iterator) { - var token = iterator.getCurrentToken(); - if (!token) - return null; - - var value = ""; - var start; - - do { - if (token.type.lastIndexOf("meta.tag", 0) === 0) { - if (!start) { - var start = { - row: iterator.getCurrentTokenRow(), - column: iterator.getCurrentTokenColumn() - }; - } - value += token.value; - if (value.indexOf(">") !== -1) { - var tag = this._parseTag(value); - tag.start = start; - tag.end = { - row: iterator.getCurrentTokenRow(), - column: iterator.getCurrentTokenColumn() + token.value.length - }; - iterator.stepForward(); - return tag; - } - } - } while(token = iterator.stepForward()); - - return null; - }; - - this._readTagBackward = function(iterator) { - var token = iterator.getCurrentToken(); - if (!token) - return null; - - var value = ""; - var end; - - do { - if (token.type.lastIndexOf("meta.tag", 0) === 0) { - if (!end) { - end = { - row: iterator.getCurrentTokenRow(), - column: iterator.getCurrentTokenColumn() + token.value.length - }; - } - value = token.value + value; - if (value.indexOf("<") !== -1) { - var tag = this._parseTag(value); - tag.end = end; - tag.start = { - row: iterator.getCurrentTokenRow(), - column: iterator.getCurrentTokenColumn() - }; - iterator.stepBackward(); - return tag; - } - } - } while(token = iterator.stepBackward()); - - return null; - }; - - this._pop = function(stack, tag) { - while (stack.length) { - - var top = stack[stack.length-1]; - if (!tag || top.tagName == tag.tagName) { - return stack.pop(); - } - else if (this.voidElements[tag.tagName]) { - return; - } - else if (this.voidElements[top.tagName]) { - stack.pop(); - continue; - } else { - return null; - } - } - }; - - this.getFoldWidgetRange = function(session, foldStyle, row) { - var firstTag = this._getFirstTagInLine(session, row); - - if (!firstTag.match) - return null; - - var isBackward = firstTag.closing || firstTag.selfClosing; - var stack = []; - var tag; - - if (!isBackward) { - var iterator = new TokenIterator(session, row, firstTag.column); - var start = { - row: row, - column: firstTag.column + firstTag.tagName.length + 2 - }; - while (tag = this._readTagForward(iterator)) { - if (tag.selfClosing) { - if (!stack.length) { - tag.start.column += tag.tagName.length + 2; - tag.end.column -= 2; - return Range.fromPoints(tag.start, tag.end); - } else - continue; - } - - if (tag.closing) { - this._pop(stack, tag); - if (stack.length == 0) - return Range.fromPoints(start, tag.start); - } - else { - stack.push(tag) - } - } - } - else { - var iterator = new TokenIterator(session, row, firstTag.column + firstTag.match.length); - var end = { - row: row, - column: firstTag.column - }; - - while (tag = this._readTagBackward(iterator)) { - if (tag.selfClosing) { - if (!stack.length) { - tag.start.column += tag.tagName.length + 2; - tag.end.column -= 2; - return Range.fromPoints(tag.start, tag.end); - } else - continue; - } - - if (!tag.closing) { - this._pop(stack, tag); - if (stack.length == 0) { - tag.start.column += tag.tagName.length + 2; - return Range.fromPoints(tag.start, end); - } - } - else { - stack.push(tag) - } - } - } - - }; - -}).call(FoldMode.prototype); - -}); - -ace.define('ace/mode/html_completions', ['require', 'exports', 'module' , 'ace/token_iterator'], function(require, exports, module) { - - -var TokenIterator = require("../token_iterator").TokenIterator; - -var commonAttributes = [ - "accesskey", - "class", - "contenteditable", - "contextmenu", - "dir", - "draggable", - "dropzone", - "hidden", - "id", - "lang", - "spellcheck", - "style", - "tabindex", - "title", - "translate" -]; - -var eventAttributes = [ - "onabort", - "onblur", - "oncancel", - "oncanplay", - "oncanplaythrough", - "onchange", - "onclick", - "onclose", - "oncontextmenu", - "oncuechange", - "ondblclick", - "ondrag", - "ondragend", - "ondragenter", - "ondragleave", - "ondragover", - "ondragstart", - "ondrop", - "ondurationchange", - "onemptied", - "onended", - "onerror", - "onfocus", - "oninput", - "oninvalid", - "onkeydown", - "onkeypress", - "onkeyup", - "onload", - "onloadeddata", - "onloadedmetadata", - "onloadstart", - "onmousedown", - "onmousemove", - "onmouseout", - "onmouseover", - "onmouseup", - "onmousewheel", - "onpause", - "onplay", - "onplaying", - "onprogress", - "onratechange", - "onreset", - "onscroll", - "onseeked", - "onseeking", - "onselect", - "onshow", - "onstalled", - "onsubmit", - "onsuspend", - "ontimeupdate", - "onvolumechange", - "onwaiting" -]; - -var globalAttributes = commonAttributes.concat(eventAttributes); - -var attributeMap = { - "html": ["manifest"], - "head": [], - "title": [], - "base": ["href", "target"], - "link": ["href", "hreflang", "rel", "media", "type", "sizes"], - "meta": ["http-equiv", "name", "content", "charset"], - "style": ["type", "media", "scoped"], - "script": ["charset", "type", "src", "defer", "async"], - "noscript": ["href"], - "body": ["onafterprint", "onbeforeprint", "onbeforeunload", "onhashchange", "onmessage", "onoffline", "onpopstate", "onredo", "onresize", "onstorage", "onundo", "onunload"], - "section": [], - "nav": [], - "article": ["pubdate"], - "aside": [], - "h1": [], - "h2": [], - "h3": [], - "h4": [], - "h5": [], - "h6": [], - "header": [], - "footer": [], - "address": [], - "main": [], - "p": [], - "hr": [], - "pre": [], - "blockquote": ["cite"], - "ol": ["start", "reversed"], - "ul": [], - "li": ["value"], - "dl": [], - "dt": [], - "dd": [], - "figure": [], - "figcaption": [], - "div": [], - "a": ["href", "target", "ping", "rel", "media", "hreflang", "type"], - "em": [], - "strong": [], - "small": [], - "s": [], - "cite": [], - "q": ["cite"], - "dfn": [], - "abbr": [], - "data": [], - "time": ["datetime"], - "code": [], - "var": [], - "samp": [], - "kbd": [], - "sub": [], - "sup": [], - "i": [], - "b": [], - "u": [], - "mark": [], - "ruby": [], - "rt": [], - "rp": [], - "bdi": [], - "bdo": [], - "span": [], - "br": [], - "wbr": [], - "ins": ["cite", "datetime"], - "del": ["cite", "datetime"], - "img": ["alt", "src", "height", "width", "usemap", "ismap"], - "iframe": ["name", "src", "height", "width", "sandbox", "seamless"], - "embed": ["src", "height", "width", "type"], - "object": ["param", "data", "type", "height" , "width", "usemap", "name", "form", "classid"], - "param": ["name", "value"], - "video": ["src", "autobuffer", "autoplay", "loop", "controls", "width", "height", "poster"], - "audio": ["src", "autobuffer", "autoplay", "loop", "controls"], - "source": ["src", "type", "media"], - "track": ["kind", "src", "srclang", "label", "default"], - "canvas": ["width", "height"], - "map": ["name"], - "area": ["shape", "coords", "href", "hreflang", "alt", "target", "media", "rel", "ping", "type"], - "svg": [], - "math": [], - "table": ["summary"], - "caption": [], - "colgroup": ["span"], - "col": ["span"], - "tbody": [], - "thead": [], - "tfoot": [], - "tr": [], - "td": ["headers", "rowspan", "colspan"], - "th": ["headers", "rowspan", "colspan", "scope"], - "form": ["accept-charset", "action", "autocomplete", "enctype", "method", "name", "novalidate", "target"], - "fieldset": ["disabled", "form", "name"], - "legend": [], - "label": ["form", "for"], - "input": ["type", "accept", "alt", "autocomplete", "checked", "disabled", "form", "formaction", "formenctype", "formmethod", "formnovalidate", "formtarget", "height", "list", "max", "maxlength", "min", "multiple", "pattern", "placeholder", "readonly", "required", "size", "src", "step", "width", "files", "value"], - "button": ["autofocus", "disabled", "form", "formaction", "formenctype", "formmethod", "formnovalidate", "formtarget", "name", "value", "type"], - "select": ["autofocus", "disabled", "form", "multiple", "name", "size"], - "datalist": [], - "optgroup": ["disabled", "label"], - "option": ["disabled", "selected", "label", "value"], - "textarea": ["autofocus", "disabled", "form", "maxlength", "name", "placeholder", "readonly", "required", "rows", "cols", "wrap"], - "keygen": ["autofocus", "challenge", "disabled", "form", "keytype", "name"], - "output": ["for", "form", "name"], - "progress": ["value", "max"], - "meter": ["value", "min", "max", "low", "high", "optimum"], - "details": ["open"], - "summary": [], - "command": ["type", "label", "icon", "disabled", "checked", "radiogroup", "command"], - "menu": ["type", "label"], - "dialog": ["open"] -}; - -var allElements = Object.keys(attributeMap); - -function hasType(token, type) { - var tokenTypes = token.type.split('.'); - return type.split('.').every(function(type){ - return (tokenTypes.indexOf(type) !== -1); - }); -} - -function findTagName(session, pos) { - var iterator = new TokenIterator(session, pos.row, pos.column); - var token = iterator.getCurrentToken(); - if (!token || !hasType(token, 'tag') && !(hasType(token, 'text') && token.value.match('/'))){ - do { - token = iterator.stepBackward(); - } while (token && (hasType(token, 'string') || hasType(token, 'operator') || hasType(token, 'attribute-name') || hasType(token, 'text'))); - } - if (token && hasType(token, 'tag-name') && !iterator.stepBackward().value.match('/')) - return token.value; -} - -var HtmlCompletions = function() { - -}; - -(function() { - - this.getCompletions = function(state, session, pos, prefix) { - var token = session.getTokenAt(pos.row, pos.column); - - if (!token) - return []; - if (hasType(token, "tag-name") || (token.value == '<' && hasType(token, "text"))) - return this.getTagCompletions(state, session, pos, prefix); - if (hasType(token, 'text') || hasType(token, 'attribute-name')) - return this.getAttributeCompetions(state, session, pos, prefix); - - return []; - }; - - this.getTagCompletions = function(state, session, pos, prefix) { - var elements = allElements; - if (prefix) { - elements = elements.filter(function(element){ - return element.indexOf(prefix) === 0; - }); - } - return elements.map(function(element){ - return { - value: element, - meta: "tag" - }; - }); - }; - - this.getAttributeCompetions = function(state, session, pos, prefix) { - var tagName = findTagName(session, pos); - if (!tagName) - return []; - var attributes = globalAttributes; - if (tagName in attributeMap) { - attributes = attributes.concat(attributeMap[tagName]); - } - if (prefix) { - attributes = attributes.filter(function(attribute){ - return attribute.indexOf(prefix) === 0; - }); - } - return attributes.map(function(attribute){ - return { - caption: attribute, - snippet: attribute + '="$0"', - meta: "attribute" - }; - }); - }; - -}).call(HtmlCompletions.prototype); - -exports.HtmlCompletions = HtmlCompletions; -}); - -ace.define('ace/mode/soy_template_highlight_rules', ['require', 'exports', 'module' , 'ace/lib/oop', 'ace/mode/html_highlight_rules'], function(require, exports, module) { - - -var oop = require("../lib/oop"); -var HtmlHighlightRules = require("./html_highlight_rules").HtmlHighlightRules; - -var SoyTemplateHighlightRules = function() { - HtmlHighlightRules.call(this); - - var soyRules = { start: - [ { include: '#template' }, - { include: '#if' }, - { include: '#comment-line' }, - { include: '#comment-block' }, - { include: '#comment-doc' }, - { include: '#call' }, - { include: '#css' }, - { include: '#param' }, - { include: '#print' }, - { include: '#msg' }, - { include: '#for' }, - { include: '#foreach' }, - { include: '#switch' }, - { include: '#tag' }, - { include: 'text.html.basic' } ], - '#call': - [ { token: - [ 'punctuation.definition.tag.begin.soy', - 'meta.tag.call.soy' ], - regex: '(\\{/?)(\\s*)(?=call|delcall)', - push: - [ { token: 'punctuation.definition.tag.end.soy', - regex: '\\}', - next: 'pop' }, - { include: '#string-quoted-single' }, - { include: '#string-quoted-double' }, - { token: ['entity.name.tag.soy', 'variable.parameter.soy'], - regex: '(call|delcall)(\\s+[\\.\\w]+)'}, - { token: - [ 'entity.other.attribute-name.soy', - 'text', - 'keyword.operator.soy' ], - regex: '\\b(data)(\\s*)(=)' }, - { defaultToken: 'meta.tag.call.soy' } ] } ], - '#comment-line': - [ { token: - [ 'comment.line.double-slash.soy', - 'punctuation.definition.comment.soy', - 'comment.line.double-slash.soy' ], - regex: '(\\s+)(//)(.*$)' } ], - '#comment-block': - [ { token: 'punctuation.definition.comment.begin.soy', - regex: '/\\*(?!\\*)', - push: - [ { token: 'punctuation.definition.comment.end.soy', - regex: '\\*/', - next: 'pop' }, - { defaultToken: 'comment.block.soy' } ] } ], - '#comment-doc': - [ { token: 'punctuation.definition.comment.begin.soy', - regex: '/\\*\\*(?!/)', - push: - [ { token: 'punctuation.definition.comment.end.soy', - regex: '\\*/', - next: 'pop' }, - { token: [ 'support.type.soy', 'text', 'variable.parameter.soy' ], - regex: '(@param|@param\\?)(\\s+)(\\w+)' }, - { defaultToken: 'comment.block.documentation.soy' } ] } ], - '#css': - [ { token: - [ 'punctuation.definition.tag.begin.soy', - 'meta.tag.css.soy', - 'entity.name.tag.soy' ], - regex: '(\\{/?)(\\s*)(css)\\b', - push: - [ { token: 'punctuation.definition.tag.end.soy', - regex: '\\}', - next: 'pop' }, - { token: 'support.constant.soy', - regex: '\\b(?:LITERAL|REFERENCE|BACKEND_SPECIFIC|GOOG)\\b' }, - { defaultToken: 'meta.tag.css.soy' } ] } ], - '#for': - [ { token: - [ 'punctuation.definition.tag.begin.soy', - 'meta.tag.for.soy', - 'entity.name.tag.soy' ], - regex: '(\\{/?)(\\s*)(for)\\b', - push: - [ { token: 'punctuation.definition.tag.end.soy', - regex: '\\}', - next: 'pop' }, - { token: 'keyword.operator.soy', regex: '\\bin\\b' }, - { token: 'support.function.soy', regex: '\\brange\\b' }, - { include: '#variable' }, - { include: '#number' }, - { include: '#primitive' }, - { defaultToken: 'meta.tag.for.soy' } ] } ], - '#foreach': - [ { token: - [ 'punctuation.definition.tag.begin.soy', - 'meta.tag.foreach.soy', - 'entity.name.tag.soy' ], - regex: '(\\{/?)(\\s*)(foreach)\\b', - push: - [ { token: 'punctuation.definition.tag.end.soy', - regex: '\\}', - next: 'pop' }, - { token: 'keyword.operator.soy', regex: '\\bin\\b' }, - { include: '#variable' }, - { defaultToken: 'meta.tag.foreach.soy' } ] } ], - '#function': - [ { token: 'support.function.soy', - regex: '\\b(?:isFirst|isLast|index|hasData|length|keys|round|floor|ceiling|min|max|randomInt)\\b' } ], - '#if': - [ { token: - [ 'punctuation.definition.tag.begin.soy', - 'meta.tag.if.soy', - 'entity.name.tag.soy' ], - regex: '(\\{/?)(\\s*)(if|elseif)\\b', - push: - [ { token: 'punctuation.definition.tag.end.soy', - regex: '\\}', - next: 'pop' }, - { include: '#variable' }, - { include: '#operator' }, - { include: '#function' }, - { include: '#string-quoted-single' }, - { include: '#string-quoted-double' }, - { defaultToken: 'meta.tag.if.soy' } ] } ], - '#namespace': - [ { token: [ 'entity.name.tag.soy', 'text', 'variable.parameter.soy' ], - regex: '(namespace|delpackage)(\\s+)([\\w\\.]+)' } ], - '#number': [ { token: 'constant.numeric', regex: '[\\d]+' } ], - '#operator': - [ { token: 'keyword.operator.soy', - regex: '==|!=|\\band\\b|\\bor\\b|\\bnot\\b|-|\\+|/|\\?:' } ], - '#param': - [ { token: - [ 'punctuation.definition.tag.begin.soy', - 'meta.tag.param.soy', - 'entity.name.tag.soy' ], - regex: '(\\{/?)(\\s*)(param)', - push: - [ { token: 'punctuation.definition.tag.end.soy', - regex: '\\}', - next: 'pop' }, - { include: '#variable' }, - { token: - [ 'entity.other.attribute-name.soy', - 'text', - 'keyword.operator.soy' ], - regex: '\\b([\\w]*)(\\s*)((?::)?)' }, - { defaultToken: 'meta.tag.param.soy' } ] } ], - '#primitive': - [ { token: 'constant.language.soy', - regex: '\\b(?:null|false|true)\\b' } ], - '#msg': - [ { token: - [ 'punctuation.definition.tag.begin.soy', - 'meta.tag.msg.soy', - 'entity.name.tag.soy' ], - regex: '(\\{/?)(\\s*)(msg)\\b', - push: - [ { token: 'punctuation.definition.tag.end.soy', - regex: '\\}', - next: 'pop' }, - { include: '#string-quoted-single' }, - { include: '#string-quoted-double' }, - { token: - [ 'entity.other.attribute-name.soy', - 'text', - 'keyword.operator.soy' ], - regex: '\\b(meaning|desc)(\\s*)(=)' }, - { defaultToken: 'meta.tag.msg.soy' } ] } ], - '#print': - [ { token: - [ 'punctuation.definition.tag.begin.soy', - 'meta.tag.print.soy', - 'entity.name.tag.soy' ], - regex: '(\\{/?)(\\s*)(print)\\b', - push: - [ { token: 'punctuation.definition.tag.end.soy', - regex: '\\}', - next: 'pop' }, - { include: '#variable' }, - { include: '#print-parameter' }, - { include: '#number' }, - { include: '#primitive' }, - { include: '#attribute-lookup' }, - { defaultToken: 'meta.tag.print.soy' } ] } ], - '#print-parameter': - [ { token: 'keyword.operator.soy', regex: '\\|' }, - { token: 'variable.parameter.soy', - regex: 'noAutoescape|id|escapeHtml|escapeJs|insertWorkBreaks|truncate' } ], - '#special-character': - [ { token: 'support.constant.soy', - regex: '\\bsp\\b|\\bnil\\b|\\\\r|\\\\n|\\\\t|\\blb\\b|\\brb\\b' } ], - '#string-quoted-double': [ { token: 'string.quoted.double', regex: '"[^"]*"' } ], - '#string-quoted-single': [ { token: 'string.quoted.single', regex: '\'[^\']*\'' } ], - '#switch': - [ { token: - [ 'punctuation.definition.tag.begin.soy', - 'meta.tag.switch.soy', - 'entity.name.tag.soy' ], - regex: '(\\{/?)(\\s*)(switch|case)\\b', - push: - [ { token: 'punctuation.definition.tag.end.soy', - regex: '\\}', - next: 'pop' }, - { include: '#variable' }, - { include: '#function' }, - { include: '#number' }, - { include: '#string-quoted-single' }, - { include: '#string-quoted-double' }, - { defaultToken: 'meta.tag.switch.soy' } ] } ], - '#attribute-lookup': - [ { token: 'punctuation.definition.attribute-lookup.begin.soy', - regex: '\\[', - push: - [ { token: 'punctuation.definition.attribute-lookup.end.soy', - regex: '\\]', - next: 'pop' }, - { include: '#variable' }, - { include: '#function' }, - { include: '#operator' }, - { include: '#number' }, - { include: '#primitive' }, - { include: '#string-quoted-single' }, - { include: '#string-quoted-double' } ] } ], - '#tag': - [ { token: 'punctuation.definition.tag.begin.soy', - regex: '\\{', - push: - [ { token: 'punctuation.definition.tag.end.soy', - regex: '\\}', - next: 'pop' }, - { include: '#namespace' }, - { include: '#variable' }, - { include: '#special-character' }, - { include: '#tag-simple' }, - { include: '#function' }, - { include: '#operator' }, - { include: '#attribute-lookup' }, - { include: '#number' }, - { include: '#primitive' }, - { include: '#print-parameter' } ] } ], - '#tag-simple': - [ { token: 'entity.name.tag.soy', - regex: '{{\\s*(?:literal|else|ifempty|default)\\s*(?=\\})'} ], - '#template': - [ { token: - [ 'punctuation.definition.tag.begin.soy', - 'meta.tag.template.soy' ], - regex: '(\\{/?)(\\s*)(?=template|deltemplate)', - push: - [ { token: 'punctuation.definition.tag.end.soy', - regex: '\\}', - next: 'pop' }, - { token: ['entity.name.tag.soy', 'text', 'entity.name.function.soy' ], - regex: '(template|deltemplate)(\\s+)([\\.\\w]+)', - originalRegex: '(?<=template|deltemplate)\\s+([\\.\\w]+)' }, - { token: - [ 'entity.other.attribute-name.soy', - 'text', - 'keyword.operator.soy', - 'text', - 'string.quoted.double.soy' ], - regex: '\\b(private)(\\s*)(=)(\\s*)("true"|"false")' }, - { token: - [ 'entity.other.attribute-name.soy', - 'text', - 'keyword.operator.soy', - 'text', - 'string.quoted.single.soy' ], - regex: '\\b(private)(\\s*)(=)(\\s*)(\'true\'|\'false\')' }, - { token: - [ 'entity.other.attribute-name.soy', - 'text', - 'keyword.operator.soy', - 'text', - 'string.quoted.double.soy' ], - regex: '\\b(autoescape)(\\s*)(=)(\\s*)("true"|"false"|"contextual")' }, - { token: - [ 'entity.other.attribute-name.soy', - 'text', - 'keyword.operator.soy', - 'text', - 'string.quoted.single.soy' ], - regex: '\\b(autoescape)(\\s*)(=)(\\s*)(\'true\'|\'false\'|\'contextual\')' }, - { defaultToken: 'meta.tag.template.soy' } ] } ], - '#variable': [ { token: 'variable.other.soy', regex: '\\$[\\w\\.]+' } ] } - - - for (var i in soyRules) { - if (this.$rules[i]) { - this.$rules[i].unshift.call(this.$rules[i], soyRules[i]); - } else { - this.$rules[i] = soyRules[i]; - } - } - - this.normalizeRules(); -}; - -SoyTemplateHighlightRules.metaData = { comment: 'SoyTemplate', - fileTypes: [ 'soy' ], - firstLineMatch: '\\{\\s*namespace\\b', - foldingStartMarker: '\\{\\s*template\\s+[^\\}]*\\}', - foldingStopMarker: '\\{\\s*/\\s*template\\s*\\}', - name: 'SoyTemplate', - scopeName: 'source.soy' } - - -oop.inherits(SoyTemplateHighlightRules, HtmlHighlightRules); - -exports.SoyTemplateHighlightRules = SoyTemplateHighlightRules; -}); \ No newline at end of file diff --git a/IDE/jsrealb-ide/ace-src-noconflict/mode-space.js b/IDE/jsrealb-ide/ace-src-noconflict/mode-space.js deleted file mode 100644 index c8926938..00000000 --- a/IDE/jsrealb-ide/ace-src-noconflict/mode-space.js +++ /dev/null @@ -1,160 +0,0 @@ -ace.define('ace/mode/space', ['require', 'exports', 'module' , 'ace/lib/oop', 'ace/mode/text', 'ace/tokenizer', 'ace/mode/folding/coffee', 'ace/mode/space_highlight_rules'], function(require, exports, module) { - -var oop = require("../lib/oop"); -var TextMode = require("./text").Mode; -var Tokenizer = require("../tokenizer").Tokenizer; -var FoldMode = require("./folding/coffee").FoldMode; -var SpaceHighlightRules = require("./space_highlight_rules").SpaceHighlightRules; -var Mode = function() { - var highlighter = new SpaceHighlightRules(); - this.$tokenizer = new Tokenizer(highlighter.getRules()); - this.foldingRules = new FoldMode(); -}; -oop.inherits(Mode, TextMode); -(function() { - - this.$id = "ace/mode/space"; -}).call(Mode.prototype); -exports.Mode = Mode; -}); - -ace.define('ace/mode/folding/coffee', ['require', 'exports', 'module' , 'ace/lib/oop', 'ace/mode/folding/fold_mode', 'ace/range'], function(require, exports, module) { - - -var oop = require("../../lib/oop"); -var BaseFoldMode = require("./fold_mode").FoldMode; -var Range = require("../../range").Range; - -var FoldMode = exports.FoldMode = function() {}; -oop.inherits(FoldMode, BaseFoldMode); - -(function() { - - this.getFoldWidgetRange = function(session, foldStyle, row) { - var range = this.indentationBlock(session, row); - if (range) - return range; - - var re = /\S/; - var line = session.getLine(row); - var startLevel = line.search(re); - if (startLevel == -1 || line[startLevel] != "#") - return; - - var startColumn = line.length; - var maxRow = session.getLength(); - var startRow = row; - var endRow = row; - - while (++row < maxRow) { - line = session.getLine(row); - var level = line.search(re); - - if (level == -1) - continue; - - if (line[level] != "#") - break; - - endRow = row; - } - - if (endRow > startRow) { - var endColumn = session.getLine(endRow).length; - return new Range(startRow, startColumn, endRow, endColumn); - } - }; - this.getFoldWidget = function(session, foldStyle, row) { - var line = session.getLine(row); - var indent = line.search(/\S/); - var next = session.getLine(row + 1); - var prev = session.getLine(row - 1); - var prevIndent = prev.search(/\S/); - var nextIndent = next.search(/\S/); - - if (indent == -1) { - session.foldWidgets[row - 1] = prevIndent!= -1 && prevIndent < nextIndent ? "start" : ""; - return ""; - } - if (prevIndent == -1) { - if (indent == nextIndent && line[indent] == "#" && next[indent] == "#") { - session.foldWidgets[row - 1] = ""; - session.foldWidgets[row + 1] = ""; - return "start"; - } - } else if (prevIndent == indent && line[indent] == "#" && prev[indent] == "#") { - if (session.getLine(row - 2).search(/\S/) == -1) { - session.foldWidgets[row - 1] = "start"; - session.foldWidgets[row + 1] = ""; - return ""; - } - } - - if (prevIndent!= -1 && prevIndent < indent) - session.foldWidgets[row - 1] = "start"; - else - session.foldWidgets[row - 1] = ""; - - if (indent < nextIndent) - return "start"; - else - return ""; - }; - -}).call(FoldMode.prototype); - -}); -ace.define('ace/mode/space_highlight_rules', ['require', 'exports', 'module' , 'ace/lib/oop', 'ace/mode/text_highlight_rules'], function(require, exports, module) { - - -var oop = require("../lib/oop"); -var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; - -var SpaceHighlightRules = function() { - this.$rules = { - "start" : [ - { - token : "empty_line", - regex : / */, - next : "key" - }, - { - token : "empty_line", - regex : /$/, - next : "key" - } - ], - "key" : [ - { - token : "variable", - regex : /\S+/ - }, - { - token : "empty_line", - regex : /$/, - next : "start" - },{ - token : "keyword.operator", - regex : / /, - next : "value" - } - ], - "value" : [ - { - token : "keyword.operator", - regex : /$/, - next : "start" - }, - { - token : "string", - regex : /[^$]/ - } - ] - }; - -}; - -oop.inherits(SpaceHighlightRules, TextHighlightRules); - -exports.SpaceHighlightRules = SpaceHighlightRules; -}); diff --git a/IDE/jsrealb-ide/ace-src-noconflict/mode-sql.js b/IDE/jsrealb-ide/ace-src-noconflict/mode-sql.js deleted file mode 100644 index 5267b42a..00000000 --- a/IDE/jsrealb-ide/ace-src-noconflict/mode-sql.js +++ /dev/null @@ -1,119 +0,0 @@ -/* ***** BEGIN LICENSE BLOCK ***** - * Distributed under the BSD license: - * - * Copyright (c) 2010, Ajax.org B.V. - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are met: - * * Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * * Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * * Neither the name of Ajax.org B.V. nor the - * names of its contributors may be used to endorse or promote products - * derived from this software without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND - * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED - * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE - * DISCLAIMED. IN NO EVENT SHALL AJAX.ORG B.V. BE LIABLE FOR ANY - * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES - * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; - * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND - * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - * - * ***** END LICENSE BLOCK ***** */ - -ace.define('ace/mode/sql', ['require', 'exports', 'module' , 'ace/lib/oop', 'ace/mode/text', 'ace/tokenizer', 'ace/mode/sql_highlight_rules', 'ace/range'], function(require, exports, module) { - - -var oop = require("../lib/oop"); -var TextMode = require("./text").Mode; -var Tokenizer = require("../tokenizer").Tokenizer; -var SqlHighlightRules = require("./sql_highlight_rules").SqlHighlightRules; -var Range = require("../range").Range; - -var Mode = function() { - this.HighlightRules = SqlHighlightRules; -}; -oop.inherits(Mode, TextMode); - -(function() { - - this.lineCommentStart = "--"; - - this.$id = "ace/mode/sql"; -}).call(Mode.prototype); - -exports.Mode = Mode; - -}); - -ace.define('ace/mode/sql_highlight_rules', ['require', 'exports', 'module' , 'ace/lib/oop', 'ace/mode/text_highlight_rules'], function(require, exports, module) { - - -var oop = require("../lib/oop"); -var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; - -var SqlHighlightRules = function() { - - var keywords = ( - "select|insert|update|delete|from|where|and|or|group|by|order|limit|offset|having|as|case|" + - "when|else|end|type|left|right|join|on|outer|desc|asc" - ); - - var builtinConstants = ( - "true|false|null" - ); - - var builtinFunctions = ( - "count|min|max|avg|sum|rank|now|coalesce" - ); - - var keywordMapper = this.createKeywordMapper({ - "support.function": builtinFunctions, - "keyword": keywords, - "constant.language": builtinConstants - }, "identifier", true); - - this.$rules = { - "start" : [ { - token : "comment", - regex : "--.*$" - }, { - token : "string", // " string - regex : '".*?"' - }, { - token : "string", // ' string - regex : "'.*?'" - }, { - token : "constant.numeric", // float - regex : "[+-]?\\d+(?:(?:\\.\\d*)?(?:[eE][+-]?\\d+)?)?\\b" - }, { - token : keywordMapper, - regex : "[a-zA-Z_$][a-zA-Z0-9_$]*\\b" - }, { - token : "keyword.operator", - regex : "\\+|\\-|\\/|\\/\\/|%|<@>|@>|<@|&|\\^|~|<|>|<=|=>|==|!=|<>|=" - }, { - token : "paren.lparen", - regex : "[\\(]" - }, { - token : "paren.rparen", - regex : "[\\)]" - }, { - token : "text", - regex : "\\s+" - } ] - }; -}; - -oop.inherits(SqlHighlightRules, TextHighlightRules); - -exports.SqlHighlightRules = SqlHighlightRules; -}); - diff --git a/IDE/jsrealb-ide/ace-src-noconflict/mode-stylus.js b/IDE/jsrealb-ide/ace-src-noconflict/mode-stylus.js deleted file mode 100644 index 55d73ed7..00000000 --- a/IDE/jsrealb-ide/ace-src-noconflict/mode-stylus.js +++ /dev/null @@ -1,447 +0,0 @@ -/* ***** BEGIN LICENSE BLOCK ***** - * Distributed under the BSD license: - * - * Copyright (c) 2012, Ajax.org B.V. - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are met: - * * Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * * Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * * Neither the name of Ajax.org B.V. nor the - * names of its contributors may be used to endorse or promote products - * derived from this software without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND - * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED - * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE - * DISCLAIMED. IN NO EVENT SHALL AJAX.ORG B.V. BE LIABLE FOR ANY - * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES - * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; - * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND - * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - * - * - * Contributor(s): - * - * - * - * ***** END LICENSE BLOCK ***** */ - -ace.define('ace/mode/stylus', ['require', 'exports', 'module' , 'ace/lib/oop', 'ace/mode/text', 'ace/tokenizer', 'ace/mode/stylus_highlight_rules', 'ace/mode/folding/coffee'], function(require, exports, module) { - - -var oop = require("../lib/oop"); -var TextMode = require("./text").Mode; -var Tokenizer = require("../tokenizer").Tokenizer; -var StylusHighlightRules = require("./stylus_highlight_rules").StylusHighlightRules; -var FoldMode = require("./folding/coffee").FoldMode; - -var Mode = function() { - this.HighlightRules = StylusHighlightRules; - this.foldingRules = new FoldMode(); -}; -oop.inherits(Mode, TextMode); - -(function() { - this.$id = "ace/mode/stylus"; -}).call(Mode.prototype); - -exports.Mode = Mode; -}); - -ace.define('ace/mode/stylus_highlight_rules', ['require', 'exports', 'module' , 'ace/lib/oop', 'ace/mode/text_highlight_rules', 'ace/mode/css_highlight_rules'], function(require, exports, module) { - - -var oop = require("../lib/oop"); -var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; -var CssHighlightRules = require("./css_highlight_rules"); - -var StylusHighlightRules = function() { - - var keywordMapper = this.createKeywordMapper({ - "support.type": CssHighlightRules.supportType, - "support.function": CssHighlightRules.supportFunction, - "support.constant": CssHighlightRules.supportConstant, - "support.constant.color": CssHighlightRules.supportConstantColor, - "support.constant.fonts": CssHighlightRules.supportConstantFonts - }, "text", true); - - this.$rules = { - start: [ - { - token : "comment", - regex : /\/\/.*$/ - }, - { - token : "comment", // multi line comment - regex : /\/\*/, - next : "comment" - }, - { - token: ["entity.name.function.stylus", "text"], - regex: "^([-a-zA-Z_][-\\w]*)?(\\()" - }, - { - token: ["entity.other.attribute-name.class.stylus"], - regex: "\\.-?[_a-zA-Z]+[_a-zA-Z0-9-]*" - }, - { - token: ["entity.language.stylus"], - regex: "^ *&" - }, - { - token: ["variable.language.stylus"], - regex: "(arguments)" - }, - { - token: ["keyword.stylus"], - regex: "@[-\\w]+" - }, - { - token : ["punctuation", "entity.other.attribute-name.pseudo-element.css"], - regex : CssHighlightRules.pseudoElements - }, { - token : ["punctuation", "entity.other.attribute-name.pseudo-class.css"], - regex : CssHighlightRules.pseudoClasses - }, - { - token: ["entity.name.tag.stylus"], - regex: "(?:\\b)(a|abbr|acronym|address|area|article|aside|audio|b|base|big|blockquote|body|br|button|canvas|caption|cite|code|col|colgroup|datalist|dd|del|details|dfn|dialog|div|dl|dt|em|eventsource|fieldset|figure|figcaption|footer|form|frame|frameset|(?:h[1-6])|head|header|hgroup|hr|html|i|iframe|img|input|ins|kbd|label|legend|li|link|map|mark|menu|meta|meter|nav|noframes|noscript|object|ol|optgroup|option|output|p|param|pre|progress|q|samp|script|section|select|small|span|strike|strong|style|sub|summary|sup|table|tbody|td|textarea|tfoot|th|thead|time|title|tr|tt|ul|var|video)(?:\\b)" - }, - { - token : "constant.numeric", // hex6 color - regex : "#[a-f0-9]{6}" - }, - { - token : "constant.numeric", // hex3 color - regex : "#[a-f0-9]{3}" - }, - { - token: ["punctuation.definition.entity.stylus", "entity.other.attribute-name.id.stylus"], - regex: "(#)([a-zA-Z][a-zA-Z0-9_-]*)" - }, - { - token: "meta.vendor-prefix.stylus", - regex: "-webkit-|-moz\\-|-ms-|-o-" - }, - { - token: "keyword.control.stylus", - regex: "(?:!important|for|in|return|true|false|null|if|else|unless|return)\\b" - }, - { - token: "keyword.operator.stylus", - regex: "!|~|\\+|-|(?:\\*)?\\*|\\/|%|(?:\\.)\\.\\.|<|>|(?:=|:|\\?|\\+|-|\\*|\\/|%|<|>)?=|!=" - }, - { - token: "keyword.operator.stylus", - regex: "(?:in|is(?:nt)?|not)\\b" - }, - { - token : "string", - regex : "'(?=.)", - next : "qstring" - }, { - token : "string", - regex : '"(?=.)', - next : "qqstring" - }, - { - token : "constant.numeric", - regex : CssHighlightRules.numRe - }, - { - token : "keyword", - regex : "(?:ch|cm|deg|em|ex|fr|gd|grad|Hz|in|kHz|mm|ms|pc|pt|px|rad|rem|s|turn|vh|vm|vw|%)\\b" - }, - { - token : keywordMapper, - regex : "\\-?[a-zA-Z_][a-zA-Z0-9_\\-]*" - } - ], - "comment" : [ - { - token : "comment", // closing comment - regex : ".*?\\*\\/", - next : "start" - }, { - token : "comment", // comment spanning whole line - regex : ".+" - } - ], - "qqstring" : [ - { - token : "string", - regex : '[^"\\\\]+' - }, - { - token : "string", - regex : "\\\\$", - next : "qqstring" - }, - { - token : "string", - regex : '"|$', - next : "start" - } - ], - "qstring" : [ - { - token : "string", - regex : "[^'\\\\]+" - }, - { - token : "string", - regex : "\\\\$", - next : "qstring" - }, - { - token : "string", - regex : "'|$", - next : "start" - } - ] -} - -}; - -oop.inherits(StylusHighlightRules, TextHighlightRules); - -exports.StylusHighlightRules = StylusHighlightRules; -}); - -ace.define('ace/mode/css_highlight_rules', ['require', 'exports', 'module' , 'ace/lib/oop', 'ace/lib/lang', 'ace/mode/text_highlight_rules'], function(require, exports, module) { - - -var oop = require("../lib/oop"); -var lang = require("../lib/lang"); -var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; -var supportType = exports.supportType = "animation-fill-mode|alignment-adjust|alignment-baseline|animation-delay|animation-direction|animation-duration|animation-iteration-count|animation-name|animation-play-state|animation-timing-function|animation|appearance|azimuth|backface-visibility|background-attachment|background-break|background-clip|background-color|background-image|background-origin|background-position|background-repeat|background-size|background|baseline-shift|binding|bleed|bookmark-label|bookmark-level|bookmark-state|bookmark-target|border-bottom|border-bottom-color|border-bottom-left-radius|border-bottom-right-radius|border-bottom-style|border-bottom-width|border-collapse|border-color|border-image|border-image-outset|border-image-repeat|border-image-slice|border-image-source|border-image-width|border-left|border-left-color|border-left-style|border-left-width|border-radius|border-right|border-right-color|border-right-style|border-right-width|border-spacing|border-style|border-top|border-top-color|border-top-left-radius|border-top-right-radius|border-top-style|border-top-width|border-width|border|bottom|box-align|box-decoration-break|box-direction|box-flex-group|box-flex|box-lines|box-ordinal-group|box-orient|box-pack|box-shadow|box-sizing|break-after|break-before|break-inside|caption-side|clear|clip|color-profile|color|column-count|column-fill|column-gap|column-rule|column-rule-color|column-rule-style|column-rule-width|column-span|column-width|columns|content|counter-increment|counter-reset|crop|cue-after|cue-before|cue|cursor|direction|display|dominant-baseline|drop-initial-after-adjust|drop-initial-after-align|drop-initial-before-adjust|drop-initial-before-align|drop-initial-size|drop-initial-value|elevation|empty-cells|fit|fit-position|float-offset|float|font-family|font-size|font-size-adjust|font-stretch|font-style|font-variant|font-weight|font|grid-columns|grid-rows|hanging-punctuation|height|hyphenate-after|hyphenate-before|hyphenate-character|hyphenate-lines|hyphenate-resource|hyphens|icon|image-orientation|image-rendering|image-resolution|inline-box-align|left|letter-spacing|line-height|line-stacking-ruby|line-stacking-shift|line-stacking-strategy|line-stacking|list-style-image|list-style-position|list-style-type|list-style|margin-bottom|margin-left|margin-right|margin-top|margin|mark-after|mark-before|mark|marks|marquee-direction|marquee-play-count|marquee-speed|marquee-style|max-height|max-width|min-height|min-width|move-to|nav-down|nav-index|nav-left|nav-right|nav-up|opacity|orphans|outline-color|outline-offset|outline-style|outline-width|outline|overflow-style|overflow-x|overflow-y|overflow|padding-bottom|padding-left|padding-right|padding-top|padding|page-break-after|page-break-before|page-break-inside|page-policy|page|pause-after|pause-before|pause|perspective-origin|perspective|phonemes|pitch-range|pitch|play-during|pointer-events|position|presentation-level|punctuation-trim|quotes|rendering-intent|resize|rest-after|rest-before|rest|richness|right|rotation-point|rotation|ruby-align|ruby-overhang|ruby-position|ruby-span|size|speak-header|speak-numeral|speak-punctuation|speak|speech-rate|stress|string-set|table-layout|target-name|target-new|target-position|target|text-align-last|text-align|text-decoration|text-emphasis|text-height|text-indent|text-justify|text-outline|text-shadow|text-transform|text-wrap|top|transform-origin|transform-style|transform|transition-delay|transition-duration|transition-property|transition-timing-function|transition|unicode-bidi|vertical-align|visibility|voice-balance|voice-duration|voice-family|voice-pitch-range|voice-pitch|voice-rate|voice-stress|voice-volume|volume|white-space-collapse|white-space|widows|width|word-break|word-spacing|word-wrap|z-index"; -var supportFunction = exports.supportFunction = "rgb|rgba|url|attr|counter|counters"; -var supportConstant = exports.supportConstant = "absolute|after-edge|after|all-scroll|all|alphabetic|always|antialiased|armenian|auto|avoid-column|avoid-page|avoid|balance|baseline|before-edge|before|below|bidi-override|block-line-height|block|bold|bolder|border-box|both|bottom|box|break-all|break-word|capitalize|caps-height|caption|center|central|char|circle|cjk-ideographic|clone|close-quote|col-resize|collapse|column|consider-shifts|contain|content-box|cover|crosshair|cubic-bezier|dashed|decimal-leading-zero|decimal|default|disabled|disc|disregard-shifts|distribute-all-lines|distribute-letter|distribute-space|distribute|dotted|double|e-resize|ease-in|ease-in-out|ease-out|ease|ellipsis|end|exclude-ruby|fill|fixed|georgian|glyphs|grid-height|groove|hand|hanging|hebrew|help|hidden|hiragana-iroha|hiragana|horizontal|icon|ideograph-alpha|ideograph-numeric|ideograph-parenthesis|ideograph-space|ideographic|inactive|include-ruby|inherit|initial|inline-block|inline-box|inline-line-height|inline-table|inline|inset|inside|inter-ideograph|inter-word|invert|italic|justify|katakana-iroha|katakana|keep-all|last|left|lighter|line-edge|line-through|line|linear|list-item|local|loose|lower-alpha|lower-greek|lower-latin|lower-roman|lowercase|lr-tb|ltr|mathematical|max-height|max-size|medium|menu|message-box|middle|move|n-resize|ne-resize|newspaper|no-change|no-close-quote|no-drop|no-open-quote|no-repeat|none|normal|not-allowed|nowrap|nw-resize|oblique|open-quote|outset|outside|overline|padding-box|page|pointer|pre-line|pre-wrap|pre|preserve-3d|progress|relative|repeat-x|repeat-y|repeat|replaced|reset-size|ridge|right|round|row-resize|rtl|s-resize|scroll|se-resize|separate|slice|small-caps|small-caption|solid|space|square|start|static|status-bar|step-end|step-start|steps|stretch|strict|sub|super|sw-resize|table-caption|table-cell|table-column-group|table-column|table-footer-group|table-header-group|table-row-group|table-row|table|tb-rl|text-after-edge|text-before-edge|text-bottom|text-size|text-top|text|thick|thin|transparent|underline|upper-alpha|upper-latin|upper-roman|uppercase|use-script|vertical-ideographic|vertical-text|visible|w-resize|wait|whitespace|z-index|zero"; -var supportConstantColor = exports.supportConstantColor = "aqua|black|blue|fuchsia|gray|green|lime|maroon|navy|olive|orange|purple|red|silver|teal|white|yellow"; -var supportConstantFonts = exports.supportConstantFonts = "arial|century|comic|courier|garamond|georgia|helvetica|impact|lucida|symbol|system|tahoma|times|trebuchet|utopia|verdana|webdings|sans-serif|serif|monospace"; - -var numRe = exports.numRe = "\\-?(?:(?:[0-9]+)|(?:[0-9]*\\.[0-9]+))"; -var pseudoElements = exports.pseudoElements = "(\\:+)\\b(after|before|first-letter|first-line|moz-selection|selection)\\b"; -var pseudoClasses = exports.pseudoClasses = "(:)\\b(active|checked|disabled|empty|enabled|first-child|first-of-type|focus|hover|indeterminate|invalid|last-child|last-of-type|link|not|nth-child|nth-last-child|nth-last-of-type|nth-of-type|only-child|only-of-type|required|root|target|valid|visited)\\b"; - -var CssHighlightRules = function() { - - var keywordMapper = this.createKeywordMapper({ - "support.function": supportFunction, - "support.constant": supportConstant, - "support.type": supportType, - "support.constant.color": supportConstantColor, - "support.constant.fonts": supportConstantFonts - }, "text", true); - - this.$rules = { - "start" : [{ - token : "comment", // multi line comment - regex : "\\/\\*", - push : "comment" - }, { - token: "paren.lparen", - regex: "\\{", - push: "ruleset" - }, { - token: "string", - regex: "@.*?{", - push: "media" - }, { - token: "keyword", - regex: "#[a-z0-9-_]+" - }, { - token: "variable", - regex: "\\.[a-z0-9-_]+" - }, { - token: "string", - regex: ":[a-z0-9-_]+" - }, { - token: "constant", - regex: "[a-z0-9-_]+" - }, { - caseInsensitive: true - }], - - "media" : [{ - token : "comment", // multi line comment - regex : "\\/\\*", - push : "comment" - }, { - token: "paren.lparen", - regex: "\\{", - push: "ruleset" - }, { - token: "string", - regex: "\\}", - next: "pop" - }, { - token: "keyword", - regex: "#[a-z0-9-_]+" - }, { - token: "variable", - regex: "\\.[a-z0-9-_]+" - }, { - token: "string", - regex: ":[a-z0-9-_]+" - }, { - token: "constant", - regex: "[a-z0-9-_]+" - }, { - caseInsensitive: true - }], - - "comment" : [{ - token : "comment", - regex : "\\*\\/", - next : "pop" - }, { - defaultToken : "comment" - }], - - "ruleset" : [ - { - token : "paren.rparen", - regex : "\\}", - next: "pop" - }, { - token : "comment", // multi line comment - regex : "\\/\\*", - push : "comment" - }, { - token : "string", // single line - regex : '["](?:(?:\\\\.)|(?:[^"\\\\]))*?["]' - }, { - token : "string", // single line - regex : "['](?:(?:\\\\.)|(?:[^'\\\\]))*?[']" - }, { - token : ["constant.numeric", "keyword"], - regex : "(" + numRe + ")(ch|cm|deg|em|ex|fr|gd|grad|Hz|in|kHz|mm|ms|pc|pt|px|rad|rem|s|turn|vh|vm|vw|%)" - }, { - token : "constant.numeric", - regex : numRe - }, { - token : "constant.numeric", // hex6 color - regex : "#[a-f0-9]{6}" - }, { - token : "constant.numeric", // hex3 color - regex : "#[a-f0-9]{3}" - }, { - token : ["punctuation", "entity.other.attribute-name.pseudo-element.css"], - regex : pseudoElements - }, { - token : ["punctuation", "entity.other.attribute-name.pseudo-class.css"], - regex : pseudoClasses - }, { - token : ["support.function", "string", "support.function"], - regex : "(url\\()(.*)(\\))" - }, { - token : keywordMapper, - regex : "\\-?[a-zA-Z_][a-zA-Z0-9_\\-]*" - }, { - caseInsensitive: true - }] - }; - - this.normalizeRules(); -}; - -oop.inherits(CssHighlightRules, TextHighlightRules); - -exports.CssHighlightRules = CssHighlightRules; - -}); - -ace.define('ace/mode/folding/coffee', ['require', 'exports', 'module' , 'ace/lib/oop', 'ace/mode/folding/fold_mode', 'ace/range'], function(require, exports, module) { - - -var oop = require("../../lib/oop"); -var BaseFoldMode = require("./fold_mode").FoldMode; -var Range = require("../../range").Range; - -var FoldMode = exports.FoldMode = function() {}; -oop.inherits(FoldMode, BaseFoldMode); - -(function() { - - this.getFoldWidgetRange = function(session, foldStyle, row) { - var range = this.indentationBlock(session, row); - if (range) - return range; - - var re = /\S/; - var line = session.getLine(row); - var startLevel = line.search(re); - if (startLevel == -1 || line[startLevel] != "#") - return; - - var startColumn = line.length; - var maxRow = session.getLength(); - var startRow = row; - var endRow = row; - - while (++row < maxRow) { - line = session.getLine(row); - var level = line.search(re); - - if (level == -1) - continue; - - if (line[level] != "#") - break; - - endRow = row; - } - - if (endRow > startRow) { - var endColumn = session.getLine(endRow).length; - return new Range(startRow, startColumn, endRow, endColumn); - } - }; - this.getFoldWidget = function(session, foldStyle, row) { - var line = session.getLine(row); - var indent = line.search(/\S/); - var next = session.getLine(row + 1); - var prev = session.getLine(row - 1); - var prevIndent = prev.search(/\S/); - var nextIndent = next.search(/\S/); - - if (indent == -1) { - session.foldWidgets[row - 1] = prevIndent!= -1 && prevIndent < nextIndent ? "start" : ""; - return ""; - } - if (prevIndent == -1) { - if (indent == nextIndent && line[indent] == "#" && next[indent] == "#") { - session.foldWidgets[row - 1] = ""; - session.foldWidgets[row + 1] = ""; - return "start"; - } - } else if (prevIndent == indent && line[indent] == "#" && prev[indent] == "#") { - if (session.getLine(row - 2).search(/\S/) == -1) { - session.foldWidgets[row - 1] = "start"; - session.foldWidgets[row + 1] = ""; - return ""; - } - } - - if (prevIndent!= -1 && prevIndent < indent) - session.foldWidgets[row - 1] = "start"; - else - session.foldWidgets[row - 1] = ""; - - if (indent < nextIndent) - return "start"; - else - return ""; - }; - -}).call(FoldMode.prototype); - -}); diff --git a/IDE/jsrealb-ide/ace-src-noconflict/mode-svg.js b/IDE/jsrealb-ide/ace-src-noconflict/mode-svg.js deleted file mode 100644 index 7f1ea62c..00000000 --- a/IDE/jsrealb-ide/ace-src-noconflict/mode-svg.js +++ /dev/null @@ -1,1628 +0,0 @@ -/* ***** BEGIN LICENSE BLOCK ***** - * Distributed under the BSD license: - * - * Copyright (c) 2010, Ajax.org B.V. - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are met: - * * Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * * Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * * Neither the name of Ajax.org B.V. nor the - * names of its contributors may be used to endorse or promote products - * derived from this software without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND - * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED - * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE - * DISCLAIMED. IN NO EVENT SHALL AJAX.ORG B.V. BE LIABLE FOR ANY - * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES - * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; - * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND - * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - * - * ***** END LICENSE BLOCK ***** */ - -ace.define('ace/mode/svg', ['require', 'exports', 'module' , 'ace/lib/oop', 'ace/mode/xml', 'ace/mode/javascript', 'ace/tokenizer', 'ace/mode/svg_highlight_rules', 'ace/mode/folding/mixed', 'ace/mode/folding/xml', 'ace/mode/folding/cstyle'], function(require, exports, module) { - - -var oop = require("../lib/oop"); -var XmlMode = require("./xml").Mode; -var JavaScriptMode = require("./javascript").Mode; -var Tokenizer = require("../tokenizer").Tokenizer; -var SvgHighlightRules = require("./svg_highlight_rules").SvgHighlightRules; -var MixedFoldMode = require("./folding/mixed").FoldMode; -var XmlFoldMode = require("./folding/xml").FoldMode; -var CStyleFoldMode = require("./folding/cstyle").FoldMode; - -var Mode = function() { - XmlMode.call(this); - - this.HighlightRules = SvgHighlightRules; - - this.createModeDelegates({ - "js-": JavaScriptMode - }); - - this.foldingRules = new MixedFoldMode(new XmlFoldMode({}), { - "js-": new CStyleFoldMode() - }); -}; - -oop.inherits(Mode, XmlMode); - -(function() { - - this.getNextLineIndent = function(state, line, tab) { - return this.$getIndent(line); - }; - - - this.$id = "ace/mode/svg"; -}).call(Mode.prototype); - -exports.Mode = Mode; -}); - -ace.define('ace/mode/xml', ['require', 'exports', 'module' , 'ace/lib/oop', 'ace/mode/text', 'ace/tokenizer', 'ace/mode/xml_highlight_rules', 'ace/mode/behaviour/xml', 'ace/mode/folding/xml'], function(require, exports, module) { - - -var oop = require("../lib/oop"); -var TextMode = require("./text").Mode; -var Tokenizer = require("../tokenizer").Tokenizer; -var XmlHighlightRules = require("./xml_highlight_rules").XmlHighlightRules; -var XmlBehaviour = require("./behaviour/xml").XmlBehaviour; -var XmlFoldMode = require("./folding/xml").FoldMode; - -var Mode = function() { - this.HighlightRules = XmlHighlightRules; - this.$behaviour = new XmlBehaviour(); - this.foldingRules = new XmlFoldMode(); -}; - -oop.inherits(Mode, TextMode); - -(function() { - - this.blockComment = {start: ""}; - - this.$id = "ace/mode/xml"; -}).call(Mode.prototype); - -exports.Mode = Mode; -}); - -ace.define('ace/mode/xml_highlight_rules', ['require', 'exports', 'module' , 'ace/lib/oop', 'ace/mode/xml_util', 'ace/mode/text_highlight_rules'], function(require, exports, module) { - - -var oop = require("../lib/oop"); -var xmlUtil = require("./xml_util"); -var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; - -var XmlHighlightRules = function(normalize) { - this.$rules = { - start : [ - {token : "punctuation.string.begin", regex : "<\\!\\[CDATA\\[", next : "cdata"}, - { - token : ["punctuation.instruction.begin", "keyword.instruction"], - regex : "(<\\?)(xml)(?=[\\s])", next : "xml_declaration" - }, - { - token : ["punctuation.instruction.begin", "keyword.instruction"], - regex : "(<\\?)([-_a-zA-Z0-9]+)", next : "instruction" - }, - {token : "comment", regex : "<\\!--", next : "comment"}, - { - token : ["punctuation.doctype.begin", "meta.tag.doctype"], - regex : "(<\\!)(DOCTYPE)(?=[\\s])", next : "doctype" - }, - {include : "tag"}, - {include : "reference"} - ], - - xml_declaration : [ - {include : "attributes"}, - {include : "instruction"} - ], - - instruction : [ - {token : "punctuation.instruction.end", regex : "\\?>", next : "start"} - ], - - doctype : [ - {include : "space"}, - {include : "string"}, - {token : "punctuation.doctype.end", regex : ">", next : "start"}, - {token : "xml-pe", regex : "[-_a-zA-Z0-9:]+"}, - {token : "punctuation.begin", regex : "\\[", push : "declarations"} - ], - - declarations : [{ - token : "text", - regex : "\\s+" - }, { - token: "punctuation.end", - regex: "]", - next: "pop" - }, { - token : ["punctuation.begin", "keyword"], - regex : "(<\\!)([-_a-zA-Z0-9]+)", - push : [{ - token : "text", - regex : "\\s+" - }, - { - token : "punctuation.end", - regex : ">", - next : "pop" - }, - {include : "string"}] - }], - - cdata : [ - {token : "string.end", regex : "\\]\\]>", next : "start"}, - {token : "text", regex : "\\s+"}, - {token : "text", regex : "(?:[^\\]]|\\](?!\\]>))+"} - ], - - comment : [ - {token : "comment", regex : "-->", next : "start"}, - {defaultToken : "comment"} - ], - - tag : [{ - token : ["meta.tag.punctuation.begin", "meta.tag.name"], - regex : "(<)((?:[-_a-zA-Z0-9]+:)?[-_a-zA-Z0-9]+)", - next: [ - {include : "attributes"}, - {token : "meta.tag.punctuation.end", regex : "/?>", next : "start"} - ] - }, { - token : ["meta.tag.punctuation.begin", "meta.tag.name"], - regex : "(", next : "start"} - ] - }], - - space : [ - {token : "text", regex : "\\s+"} - ], - - reference : [{ - token : "constant.language.escape", - regex : "(?:&#[0-9]+;)|(?:&#x[0-9a-fA-F]+;)|(?:&[a-zA-Z0-9_:\\.-]+;)" - }, { - token : "text", regex : "&" - }], - - string: [{ - token : "string", - regex : "'", - push : "qstring_inner" - }, { - token : "string", - regex : '"', - push : "qqstring_inner" - }], - - qstring_inner: [ - {token : "string", regex: "'", next: "pop"}, - {include : "reference"}, - {defaultToken : "string"} - ], - - qqstring_inner: [ - {token : "string", regex: '"', next: "pop"}, - {include : "reference"}, - {defaultToken : "string"} - ], - - attributes: [{ - token : "entity.other.attribute-name", - regex : "(?:[-_a-zA-Z0-9]+:)?[-_a-zA-Z0-9]+" - }, { - token : "keyword.operator.separator", - regex : "=" - }, { - include : "space" - }, { - include : "string" - }] - }; - - if (this.constructor === XmlHighlightRules) - this.normalizeRules(); -}; - - -(function() { - - this.embedTagRules = function(HighlightRules, prefix, tag){ - this.$rules.tag.unshift({ - token : ["meta.tag.punctuation.begin", "meta.tag.name." + tag], - regex : "(<)(" + tag + ")", - next: [ - {include : "space"}, - {include : "attributes"}, - {token : "meta.tag.punctuation.end", regex : "/?>", next : prefix + "start"} - ] - }); - - this.$rules[tag + "-end"] = [ - {include : "space"}, - {token : "meta.tag.punctuation.end", regex : ">", next: "start", - onMatch : function(value, currentState, stack) { - stack.splice(0); - return this.token; - }} - ] - - this.embedRules(HighlightRules, prefix, [{ - token: ["meta.tag.punctuation.begin", "meta.tag.name." + tag], - regex : "(" - }]); - }; - -}).call(TextHighlightRules.prototype); - -oop.inherits(XmlHighlightRules, TextHighlightRules); - -exports.XmlHighlightRules = XmlHighlightRules; -}); - -ace.define('ace/mode/xml_util', ['require', 'exports', 'module' ], function(require, exports, module) { - - -function string(state) { - return [{ - token : "string", - regex : '"', - next : state + "_qqstring" - }, { - token : "string", - regex : "'", - next : state + "_qstring" - }]; -} - -function multiLineString(quote, state) { - return [ - {token : "string", regex : quote, next : state}, - { - token : "constant.language.escape", - regex : "(?:&#[0-9]+;)|(?:&#x[0-9a-fA-F]+;)|(?:&[a-zA-Z0-9_:\\.-]+;)" - }, - {defaultToken : "string"} - ]; -} - -exports.tag = function(states, name, nextState, tagMap) { - states[name] = [{ - token : "text", - regex : "\\s+" - }, { - - token : !tagMap ? "meta.tag.tag-name" : function(value) { - if (tagMap[value]) - return "meta.tag.tag-name." + tagMap[value]; - else - return "meta.tag.tag-name"; - }, - regex : "[-_a-zA-Z0-9:]+", - next : name + "_embed_attribute_list" - }, { - token: "empty", - regex: "", - next : name + "_embed_attribute_list" - }]; - - states[name + "_qstring"] = multiLineString("'", name + "_embed_attribute_list"); - states[name + "_qqstring"] = multiLineString("\"", name + "_embed_attribute_list"); - - states[name + "_embed_attribute_list"] = [{ - token : "meta.tag.r", - regex : "/?>", - next : nextState - }, { - token : "keyword.operator", - regex : "=" - }, { - token : "entity.other.attribute-name", - regex : "[-_a-zA-Z0-9:]+" - }, { - token : "constant.numeric", // float - regex : "[+-]?\\d+(?:(?:\\.\\d*)?(?:[eE][+-]?\\d+)?)?\\b" - }, { - token : "text", - regex : "\\s+" - }].concat(string(name)); -}; - -}); - -ace.define('ace/mode/behaviour/xml', ['require', 'exports', 'module' , 'ace/lib/oop', 'ace/mode/behaviour', 'ace/mode/behaviour/cstyle', 'ace/token_iterator'], function(require, exports, module) { - - -var oop = require("../../lib/oop"); -var Behaviour = require("../behaviour").Behaviour; -var CstyleBehaviour = require("./cstyle").CstyleBehaviour; -var TokenIterator = require("../../token_iterator").TokenIterator; - -function hasType(token, type) { - var tokenTypes = token.type.split('.'); - return type.split('.').every(function(type){ - return (tokenTypes.indexOf(type) !== -1); - }); - return hasType; -} - -var XmlBehaviour = function () { - - this.inherit(CstyleBehaviour, ["string_dquotes"]); // Get string behaviour - - this.add("autoclosing", "insertion", function (state, action, editor, session, text) { - if (text == '>') { - var position = editor.getCursorPosition(); - var iterator = new TokenIterator(session, position.row, position.column); - var token = iterator.getCurrentToken(); - - if (token && hasType(token, 'string') && iterator.getCurrentTokenColumn() + token.value.length > position.column) - return; - var atCursor = false; - if (!token || !hasType(token, 'meta.tag') && !(hasType(token, 'text') && token.value.match('/'))){ - do { - token = iterator.stepBackward(); - } while (token && (hasType(token, 'string') || hasType(token, 'keyword.operator') || hasType(token, 'entity.attribute-name') || hasType(token, 'text'))); - } else { - atCursor = true; - } - if (!token || !hasType(token, 'meta.tag.name') || iterator.stepBackward().value.match('/')) { - return; - } - var tag = token.value; - if (atCursor){ - var tag = tag.substring(0, position.column - token.start); - } - - return { - text: '>' + '', - selection: [1, 1] - } - } - }); - - this.add('autoindent', 'insertion', function (state, action, editor, session, text) { - if (text == "\n") { - var cursor = editor.getCursorPosition(); - var line = session.getLine(cursor.row); - var rightChars = line.substring(cursor.column, cursor.column + 2); - if (rightChars == ' -1; - }; - - CstyleBehaviour.recordAutoInsert = function(editor, session, bracket) { - var cursor = editor.getCursorPosition(); - var line = session.doc.getLine(cursor.row); - if (!this.isAutoInsertedClosing(cursor, line, autoInsertedLineEnd[0])) - autoInsertedBrackets = 0; - autoInsertedRow = cursor.row; - autoInsertedLineEnd = bracket + line.substr(cursor.column); - autoInsertedBrackets++; - }; - - CstyleBehaviour.recordMaybeInsert = function(editor, session, bracket) { - var cursor = editor.getCursorPosition(); - var line = session.doc.getLine(cursor.row); - if (!this.isMaybeInsertedClosing(cursor, line)) - maybeInsertedBrackets = 0; - maybeInsertedRow = cursor.row; - maybeInsertedLineStart = line.substr(0, cursor.column) + bracket; - maybeInsertedLineEnd = line.substr(cursor.column); - maybeInsertedBrackets++; - }; - - CstyleBehaviour.isAutoInsertedClosing = function(cursor, line, bracket) { - return autoInsertedBrackets > 0 && - cursor.row === autoInsertedRow && - bracket === autoInsertedLineEnd[0] && - line.substr(cursor.column) === autoInsertedLineEnd; - }; - - CstyleBehaviour.isMaybeInsertedClosing = function(cursor, line) { - return maybeInsertedBrackets > 0 && - cursor.row === maybeInsertedRow && - line.substr(cursor.column) === maybeInsertedLineEnd && - line.substr(0, cursor.column) == maybeInsertedLineStart; - }; - - CstyleBehaviour.popAutoInsertedClosing = function() { - autoInsertedLineEnd = autoInsertedLineEnd.substr(1); - autoInsertedBrackets--; - }; - - CstyleBehaviour.clearMaybeInsertedClosing = function() { - maybeInsertedBrackets = 0; - maybeInsertedRow = -1; - }; - - this.add("braces", "insertion", function (state, action, editor, session, text) { - var cursor = editor.getCursorPosition(); - var line = session.doc.getLine(cursor.row); - if (text == '{') { - var selection = editor.getSelectionRange(); - var selected = session.doc.getTextRange(selection); - if (selected !== "" && selected !== "{" && editor.getWrapBehavioursEnabled()) { - return { - text: '{' + selected + '}', - selection: false - }; - } else if (CstyleBehaviour.isSaneInsertion(editor, session)) { - if (/[\]\}\)]/.test(line[cursor.column]) || editor.inMultiSelectMode) { - CstyleBehaviour.recordAutoInsert(editor, session, "}"); - return { - text: '{}', - selection: [1, 1] - }; - } else { - CstyleBehaviour.recordMaybeInsert(editor, session, "{"); - return { - text: '{', - selection: [1, 1] - }; - } - } - } else if (text == '}') { - var rightChar = line.substring(cursor.column, cursor.column + 1); - if (rightChar == '}') { - var matching = session.$findOpeningBracket('}', {column: cursor.column + 1, row: cursor.row}); - if (matching !== null && CstyleBehaviour.isAutoInsertedClosing(cursor, line, text)) { - CstyleBehaviour.popAutoInsertedClosing(); - return { - text: '', - selection: [1, 1] - }; - } - } - } else if (text == "\n" || text == "\r\n") { - var closing = ""; - if (CstyleBehaviour.isMaybeInsertedClosing(cursor, line)) { - closing = lang.stringRepeat("}", maybeInsertedBrackets); - CstyleBehaviour.clearMaybeInsertedClosing(); - } - var rightChar = line.substring(cursor.column, cursor.column + 1); - if (rightChar === '}') { - var openBracePos = session.findMatchingBracket({row: cursor.row, column: cursor.column+1}, '}'); - if (!openBracePos) - return null; - var next_indent = this.$getIndent(session.getLine(openBracePos.row)); - } else if (closing) { - var next_indent = this.$getIndent(line); - } else { - return; - } - var indent = next_indent + session.getTabString(); - - return { - text: '\n' + indent + '\n' + next_indent + closing, - selection: [1, indent.length, 1, indent.length] - }; - } else { - CstyleBehaviour.clearMaybeInsertedClosing(); - } - }); - - this.add("braces", "deletion", function (state, action, editor, session, range) { - var selected = session.doc.getTextRange(range); - if (!range.isMultiLine() && selected == '{') { - var line = session.doc.getLine(range.start.row); - var rightChar = line.substring(range.end.column, range.end.column + 1); - if (rightChar == '}') { - range.end.column++; - return range; - } else { - maybeInsertedBrackets--; - } - } - }); - - this.add("parens", "insertion", function (state, action, editor, session, text) { - if (text == '(') { - var selection = editor.getSelectionRange(); - var selected = session.doc.getTextRange(selection); - if (selected !== "" && editor.getWrapBehavioursEnabled()) { - return { - text: '(' + selected + ')', - selection: false - }; - } else if (CstyleBehaviour.isSaneInsertion(editor, session)) { - CstyleBehaviour.recordAutoInsert(editor, session, ")"); - return { - text: '()', - selection: [1, 1] - }; - } - } else if (text == ')') { - var cursor = editor.getCursorPosition(); - var line = session.doc.getLine(cursor.row); - var rightChar = line.substring(cursor.column, cursor.column + 1); - if (rightChar == ')') { - var matching = session.$findOpeningBracket(')', {column: cursor.column + 1, row: cursor.row}); - if (matching !== null && CstyleBehaviour.isAutoInsertedClosing(cursor, line, text)) { - CstyleBehaviour.popAutoInsertedClosing(); - return { - text: '', - selection: [1, 1] - }; - } - } - } - }); - - this.add("parens", "deletion", function (state, action, editor, session, range) { - var selected = session.doc.getTextRange(range); - if (!range.isMultiLine() && selected == '(') { - var line = session.doc.getLine(range.start.row); - var rightChar = line.substring(range.start.column + 1, range.start.column + 2); - if (rightChar == ')') { - range.end.column++; - return range; - } - } - }); - - this.add("brackets", "insertion", function (state, action, editor, session, text) { - if (text == '[') { - var selection = editor.getSelectionRange(); - var selected = session.doc.getTextRange(selection); - if (selected !== "" && editor.getWrapBehavioursEnabled()) { - return { - text: '[' + selected + ']', - selection: false - }; - } else if (CstyleBehaviour.isSaneInsertion(editor, session)) { - CstyleBehaviour.recordAutoInsert(editor, session, "]"); - return { - text: '[]', - selection: [1, 1] - }; - } - } else if (text == ']') { - var cursor = editor.getCursorPosition(); - var line = session.doc.getLine(cursor.row); - var rightChar = line.substring(cursor.column, cursor.column + 1); - if (rightChar == ']') { - var matching = session.$findOpeningBracket(']', {column: cursor.column + 1, row: cursor.row}); - if (matching !== null && CstyleBehaviour.isAutoInsertedClosing(cursor, line, text)) { - CstyleBehaviour.popAutoInsertedClosing(); - return { - text: '', - selection: [1, 1] - }; - } - } - } - }); - - this.add("brackets", "deletion", function (state, action, editor, session, range) { - var selected = session.doc.getTextRange(range); - if (!range.isMultiLine() && selected == '[') { - var line = session.doc.getLine(range.start.row); - var rightChar = line.substring(range.start.column + 1, range.start.column + 2); - if (rightChar == ']') { - range.end.column++; - return range; - } - } - }); - - this.add("string_dquotes", "insertion", function (state, action, editor, session, text) { - if (text == '"' || text == "'") { - var quote = text; - var selection = editor.getSelectionRange(); - var selected = session.doc.getTextRange(selection); - if (selected !== "" && selected !== "'" && selected != '"' && editor.getWrapBehavioursEnabled()) { - return { - text: quote + selected + quote, - selection: false - }; - } else { - var cursor = editor.getCursorPosition(); - var line = session.doc.getLine(cursor.row); - var leftChar = line.substring(cursor.column-1, cursor.column); - if (leftChar == '\\') { - return null; - } - var tokens = session.getTokens(selection.start.row); - var col = 0, token; - var quotepos = -1; // Track whether we're inside an open quote. - - for (var x = 0; x < tokens.length; x++) { - token = tokens[x]; - if (token.type == "string") { - quotepos = -1; - } else if (quotepos < 0) { - quotepos = token.value.indexOf(quote); - } - if ((token.value.length + col) > selection.start.column) { - break; - } - col += tokens[x].value.length; - } - if (!token || (quotepos < 0 && token.type !== "comment" && (token.type !== "string" || ((selection.start.column !== token.value.length+col-1) && token.value.lastIndexOf(quote) === token.value.length-1)))) { - if (!CstyleBehaviour.isSaneInsertion(editor, session)) - return; - return { - text: quote + quote, - selection: [1,1] - }; - } else if (token && token.type === "string") { - var rightChar = line.substring(cursor.column, cursor.column + 1); - if (rightChar == quote) { - return { - text: '', - selection: [1, 1] - }; - } - } - } - } - }); - - this.add("string_dquotes", "deletion", function (state, action, editor, session, range) { - var selected = session.doc.getTextRange(range); - if (!range.isMultiLine() && (selected == '"' || selected == "'")) { - var line = session.doc.getLine(range.start.row); - var rightChar = line.substring(range.start.column + 1, range.start.column + 2); - if (rightChar == selected) { - range.end.column++; - return range; - } - } - }); - -}; - -oop.inherits(CstyleBehaviour, Behaviour); - -exports.CstyleBehaviour = CstyleBehaviour; -}); - -ace.define('ace/mode/folding/xml', ['require', 'exports', 'module' , 'ace/lib/oop', 'ace/lib/lang', 'ace/range', 'ace/mode/folding/fold_mode', 'ace/token_iterator'], function(require, exports, module) { - - -var oop = require("../../lib/oop"); -var lang = require("../../lib/lang"); -var Range = require("../../range").Range; -var BaseFoldMode = require("./fold_mode").FoldMode; -var TokenIterator = require("../../token_iterator").TokenIterator; - -var FoldMode = exports.FoldMode = function(voidElements) { - BaseFoldMode.call(this); - this.voidElements = voidElements || {}; -}; -oop.inherits(FoldMode, BaseFoldMode); - -(function() { - - this.getFoldWidget = function(session, foldStyle, row) { - var tag = this._getFirstTagInLine(session, row); - - if (tag.closing) - return foldStyle == "markbeginend" ? "end" : ""; - - if (!tag.tagName || this.voidElements[tag.tagName.toLowerCase()]) - return ""; - - if (tag.selfClosing) - return ""; - - if (tag.value.indexOf("/" + tag.tagName) !== -1) - return ""; - - return "start"; - }; - - this._getFirstTagInLine = function(session, row) { - var tokens = session.getTokens(row); - var value = ""; - for (var i = 0; i < tokens.length; i++) { - var token = tokens[i]; - if (token.type.lastIndexOf("meta.tag", 0) === 0) - value += token.value; - else - value += lang.stringRepeat(" ", token.value.length); - } - - return this._parseTag(value); - }; - - this.tagRe = /^(\s*)(?)/; - this._parseTag = function(tag) { - - var match = tag.match(this.tagRe); - var column = 0; - - return { - value: tag, - match: match ? match[2] : "", - closing: match ? !!match[3] : false, - selfClosing: match ? !!match[5] || match[2] == "/>" : false, - tagName: match ? match[4] : "", - column: match[1] ? column + match[1].length : column - }; - }; - this._readTagForward = function(iterator) { - var token = iterator.getCurrentToken(); - if (!token) - return null; - - var value = ""; - var start; - - do { - if (token.type.lastIndexOf("meta.tag", 0) === 0) { - if (!start) { - var start = { - row: iterator.getCurrentTokenRow(), - column: iterator.getCurrentTokenColumn() - }; - } - value += token.value; - if (value.indexOf(">") !== -1) { - var tag = this._parseTag(value); - tag.start = start; - tag.end = { - row: iterator.getCurrentTokenRow(), - column: iterator.getCurrentTokenColumn() + token.value.length - }; - iterator.stepForward(); - return tag; - } - } - } while(token = iterator.stepForward()); - - return null; - }; - - this._readTagBackward = function(iterator) { - var token = iterator.getCurrentToken(); - if (!token) - return null; - - var value = ""; - var end; - - do { - if (token.type.lastIndexOf("meta.tag", 0) === 0) { - if (!end) { - end = { - row: iterator.getCurrentTokenRow(), - column: iterator.getCurrentTokenColumn() + token.value.length - }; - } - value = token.value + value; - if (value.indexOf("<") !== -1) { - var tag = this._parseTag(value); - tag.end = end; - tag.start = { - row: iterator.getCurrentTokenRow(), - column: iterator.getCurrentTokenColumn() - }; - iterator.stepBackward(); - return tag; - } - } - } while(token = iterator.stepBackward()); - - return null; - }; - - this._pop = function(stack, tag) { - while (stack.length) { - - var top = stack[stack.length-1]; - if (!tag || top.tagName == tag.tagName) { - return stack.pop(); - } - else if (this.voidElements[tag.tagName]) { - return; - } - else if (this.voidElements[top.tagName]) { - stack.pop(); - continue; - } else { - return null; - } - } - }; - - this.getFoldWidgetRange = function(session, foldStyle, row) { - var firstTag = this._getFirstTagInLine(session, row); - - if (!firstTag.match) - return null; - - var isBackward = firstTag.closing || firstTag.selfClosing; - var stack = []; - var tag; - - if (!isBackward) { - var iterator = new TokenIterator(session, row, firstTag.column); - var start = { - row: row, - column: firstTag.column + firstTag.tagName.length + 2 - }; - while (tag = this._readTagForward(iterator)) { - if (tag.selfClosing) { - if (!stack.length) { - tag.start.column += tag.tagName.length + 2; - tag.end.column -= 2; - return Range.fromPoints(tag.start, tag.end); - } else - continue; - } - - if (tag.closing) { - this._pop(stack, tag); - if (stack.length == 0) - return Range.fromPoints(start, tag.start); - } - else { - stack.push(tag) - } - } - } - else { - var iterator = new TokenIterator(session, row, firstTag.column + firstTag.match.length); - var end = { - row: row, - column: firstTag.column - }; - - while (tag = this._readTagBackward(iterator)) { - if (tag.selfClosing) { - if (!stack.length) { - tag.start.column += tag.tagName.length + 2; - tag.end.column -= 2; - return Range.fromPoints(tag.start, tag.end); - } else - continue; - } - - if (!tag.closing) { - this._pop(stack, tag); - if (stack.length == 0) { - tag.start.column += tag.tagName.length + 2; - return Range.fromPoints(tag.start, end); - } - } - else { - stack.push(tag) - } - } - } - - }; - -}).call(FoldMode.prototype); - -}); - -ace.define('ace/mode/javascript', ['require', 'exports', 'module' , 'ace/lib/oop', 'ace/mode/text', 'ace/tokenizer', 'ace/mode/javascript_highlight_rules', 'ace/mode/matching_brace_outdent', 'ace/range', 'ace/worker/worker_client', 'ace/mode/behaviour/cstyle', 'ace/mode/folding/cstyle'], function(require, exports, module) { - - -var oop = require("../lib/oop"); -var TextMode = require("./text").Mode; -var Tokenizer = require("../tokenizer").Tokenizer; -var JavaScriptHighlightRules = require("./javascript_highlight_rules").JavaScriptHighlightRules; -var MatchingBraceOutdent = require("./matching_brace_outdent").MatchingBraceOutdent; -var Range = require("../range").Range; -var WorkerClient = require("../worker/worker_client").WorkerClient; -var CstyleBehaviour = require("./behaviour/cstyle").CstyleBehaviour; -var CStyleFoldMode = require("./folding/cstyle").FoldMode; - -var Mode = function() { - this.HighlightRules = JavaScriptHighlightRules; - - this.$outdent = new MatchingBraceOutdent(); - this.$behaviour = new CstyleBehaviour(); - this.foldingRules = new CStyleFoldMode(); -}; -oop.inherits(Mode, TextMode); - -(function() { - - this.lineCommentStart = "//"; - this.blockComment = {start: "/*", end: "*/"}; - - this.getNextLineIndent = function(state, line, tab) { - var indent = this.$getIndent(line); - - var tokenizedLine = this.getTokenizer().getLineTokens(line, state); - var tokens = tokenizedLine.tokens; - var endState = tokenizedLine.state; - - if (tokens.length && tokens[tokens.length-1].type == "comment") { - return indent; - } - - if (state == "start" || state == "no_regex") { - var match = line.match(/^.*(?:\bcase\b.*\:|[\{\(\[])\s*$/); - if (match) { - indent += tab; - } - } else if (state == "doc-start") { - if (endState == "start" || endState == "no_regex") { - return ""; - } - var match = line.match(/^\s*(\/?)\*/); - if (match) { - if (match[1]) { - indent += " "; - } - indent += "* "; - } - } - - return indent; - }; - - this.checkOutdent = function(state, line, input) { - return this.$outdent.checkOutdent(line, input); - }; - - this.autoOutdent = function(state, doc, row) { - this.$outdent.autoOutdent(doc, row); - }; - - this.createWorker = function(session) { - var worker = new WorkerClient(["ace"], "ace/mode/javascript_worker", "JavaScriptWorker"); - worker.attachToDocument(session.getDocument()); - - worker.on("jslint", function(results) { - session.setAnnotations(results.data); - }); - - worker.on("terminate", function() { - session.clearAnnotations(); - }); - - return worker; - }; - - this.$id = "ace/mode/javascript"; -}).call(Mode.prototype); - -exports.Mode = Mode; -}); - -ace.define('ace/mode/javascript_highlight_rules', ['require', 'exports', 'module' , 'ace/lib/oop', 'ace/mode/doc_comment_highlight_rules', 'ace/mode/text_highlight_rules'], function(require, exports, module) { - - -var oop = require("../lib/oop"); -var DocCommentHighlightRules = require("./doc_comment_highlight_rules").DocCommentHighlightRules; -var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; - -var JavaScriptHighlightRules = function() { - var keywordMapper = this.createKeywordMapper({ - "variable.language": - "Array|Boolean|Date|Function|Iterator|Number|Object|RegExp|String|Proxy|" + // Constructors - "Namespace|QName|XML|XMLList|" + // E4X - "ArrayBuffer|Float32Array|Float64Array|Int16Array|Int32Array|Int8Array|" + - "Uint16Array|Uint32Array|Uint8Array|Uint8ClampedArray|" + - "Error|EvalError|InternalError|RangeError|ReferenceError|StopIteration|" + // Errors - "SyntaxError|TypeError|URIError|" + - "decodeURI|decodeURIComponent|encodeURI|encodeURIComponent|eval|isFinite|" + // Non-constructor functions - "isNaN|parseFloat|parseInt|" + - "JSON|Math|" + // Other - "this|arguments|prototype|window|document" , // Pseudo - "keyword": - "const|yield|import|get|set|" + - "break|case|catch|continue|default|delete|do|else|finally|for|function|" + - "if|in|instanceof|new|return|switch|throw|try|typeof|let|var|while|with|debugger|" + - "__parent__|__count__|escape|unescape|with|__proto__|" + - "class|enum|extends|super|export|implements|private|public|interface|package|protected|static", - "storage.type": - "const|let|var|function", - "constant.language": - "null|Infinity|NaN|undefined", - "support.function": - "alert", - "constant.language.boolean": "true|false" - }, "identifier"); - var kwBeforeRe = "case|do|else|finally|in|instanceof|return|throw|try|typeof|yield|void"; - var identifierRe = "[a-zA-Z\\$_\u00a1-\uffff][a-zA-Z\\d\\$_\u00a1-\uffff]*\\b"; - - var escapedRe = "\\\\(?:x[0-9a-fA-F]{2}|" + // hex - "u[0-9a-fA-F]{4}|" + // unicode - "[0-2][0-7]{0,2}|" + // oct - "3[0-6][0-7]?|" + // oct - "37[0-7]?|" + // oct - "[4-7][0-7]?|" + //oct - ".)"; - - this.$rules = { - "no_regex" : [ - { - token : "comment", - regex : "\\/\\/", - next : "line_comment" - }, - DocCommentHighlightRules.getStartRule("doc-start"), - { - token : "comment", // multi line comment - regex : /\/\*/, - next : "comment" - }, { - token : "string", - regex : "'(?=.)", - next : "qstring" - }, { - token : "string", - regex : '"(?=.)', - next : "qqstring" - }, { - token : "constant.numeric", // hex - regex : /0[xX][0-9a-fA-F]+\b/ - }, { - token : "constant.numeric", // float - regex : /[+-]?\d+(?:(?:\.\d*)?(?:[eE][+-]?\d+)?)?\b/ - }, { - token : [ - "storage.type", "punctuation.operator", "support.function", - "punctuation.operator", "entity.name.function", "text","keyword.operator" - ], - regex : "(" + identifierRe + ")(\\.)(prototype)(\\.)(" + identifierRe +")(\\s*)(=)", - next: "function_arguments" - }, { - token : [ - "storage.type", "punctuation.operator", "entity.name.function", "text", - "keyword.operator", "text", "storage.type", "text", "paren.lparen" - ], - regex : "(" + identifierRe + ")(\\.)(" + identifierRe +")(\\s*)(=)(\\s*)(function)(\\s*)(\\()", - next: "function_arguments" - }, { - token : [ - "entity.name.function", "text", "keyword.operator", "text", "storage.type", - "text", "paren.lparen" - ], - regex : "(" + identifierRe +")(\\s*)(=)(\\s*)(function)(\\s*)(\\()", - next: "function_arguments" - }, { - token : [ - "storage.type", "punctuation.operator", "entity.name.function", "text", - "keyword.operator", "text", - "storage.type", "text", "entity.name.function", "text", "paren.lparen" - ], - regex : "(" + identifierRe + ")(\\.)(" + identifierRe +")(\\s*)(=)(\\s*)(function)(\\s+)(\\w+)(\\s*)(\\()", - next: "function_arguments" - }, { - token : [ - "storage.type", "text", "entity.name.function", "text", "paren.lparen" - ], - regex : "(function)(\\s+)(" + identifierRe + ")(\\s*)(\\()", - next: "function_arguments" - }, { - token : [ - "entity.name.function", "text", "punctuation.operator", - "text", "storage.type", "text", "paren.lparen" - ], - regex : "(" + identifierRe + ")(\\s*)(:)(\\s*)(function)(\\s*)(\\()", - next: "function_arguments" - }, { - token : [ - "text", "text", "storage.type", "text", "paren.lparen" - ], - regex : "(:)(\\s*)(function)(\\s*)(\\()", - next: "function_arguments" - }, { - token : "keyword", - regex : "(?:" + kwBeforeRe + ")\\b", - next : "start" - }, { - token : ["punctuation.operator", "support.function"], - regex : /(\.)(s(?:h(?:ift|ow(?:Mod(?:elessDialog|alDialog)|Help))|croll(?:X|By(?:Pages|Lines)?|Y|To)?|t(?:op|rike)|i(?:n|zeToContent|debar|gnText)|ort|u(?:p|b(?:str(?:ing)?)?)|pli(?:ce|t)|e(?:nd|t(?:Re(?:sizable|questHeader)|M(?:i(?:nutes|lliseconds)|onth)|Seconds|Ho(?:tKeys|urs)|Year|Cursor|Time(?:out)?|Interval|ZOptions|Date|UTC(?:M(?:i(?:nutes|lliseconds)|onth)|Seconds|Hours|Date|FullYear)|FullYear|Active)|arch)|qrt|lice|avePreferences|mall)|h(?:ome|andleEvent)|navigate|c(?:har(?:CodeAt|At)|o(?:s|n(?:cat|textual|firm)|mpile)|eil|lear(?:Timeout|Interval)?|a(?:ptureEvents|ll)|reate(?:StyleSheet|Popup|EventObject))|t(?:o(?:GMTString|S(?:tring|ource)|U(?:TCString|pperCase)|Lo(?:caleString|werCase))|est|a(?:n|int(?:Enabled)?))|i(?:s(?:NaN|Finite)|ndexOf|talics)|d(?:isableExternalCapture|ump|etachEvent)|u(?:n(?:shift|taint|escape|watch)|pdateCommands)|j(?:oin|avaEnabled)|p(?:o(?:p|w)|ush|lugins.refresh|a(?:ddings|rse(?:Int|Float)?)|r(?:int|ompt|eference))|e(?:scape|nableExternalCapture|val|lementFromPoint|x(?:p|ec(?:Script|Command)?))|valueOf|UTC|queryCommand(?:State|Indeterm|Enabled|Value)|f(?:i(?:nd|le(?:ModifiedDate|Size|CreatedDate|UpdatedDate)|xed)|o(?:nt(?:size|color)|rward)|loor|romCharCode)|watch|l(?:ink|o(?:ad|g)|astIndexOf)|a(?:sin|nchor|cos|t(?:tachEvent|ob|an(?:2)?)|pply|lert|b(?:s|ort))|r(?:ou(?:nd|teEvents)|e(?:size(?:By|To)|calc|turnValue|place|verse|l(?:oad|ease(?:Capture|Events)))|andom)|g(?:o|et(?:ResponseHeader|M(?:i(?:nutes|lliseconds)|onth)|Se(?:conds|lection)|Hours|Year|Time(?:zoneOffset)?|Da(?:y|te)|UTC(?:M(?:i(?:nutes|lliseconds)|onth)|Seconds|Hours|Da(?:y|te)|FullYear)|FullYear|A(?:ttention|llResponseHeaders)))|m(?:in|ove(?:B(?:y|elow)|To(?:Absolute)?|Above)|ergeAttributes|a(?:tch|rgins|x))|b(?:toa|ig|o(?:ld|rderWidths)|link|ack))\b(?=\()/ - }, { - token : ["punctuation.operator", "support.function.dom"], - regex : /(\.)(s(?:ub(?:stringData|mit)|plitText|e(?:t(?:NamedItem|Attribute(?:Node)?)|lect))|has(?:ChildNodes|Feature)|namedItem|c(?:l(?:ick|o(?:se|neNode))|reate(?:C(?:omment|DATASection|aption)|T(?:Head|extNode|Foot)|DocumentFragment|ProcessingInstruction|E(?:ntityReference|lement)|Attribute))|tabIndex|i(?:nsert(?:Row|Before|Cell|Data)|tem)|open|delete(?:Row|C(?:ell|aption)|T(?:Head|Foot)|Data)|focus|write(?:ln)?|a(?:dd|ppend(?:Child|Data))|re(?:set|place(?:Child|Data)|move(?:NamedItem|Child|Attribute(?:Node)?)?)|get(?:NamedItem|Element(?:sBy(?:Name|TagName)|ById)|Attribute(?:Node)?)|blur)\b(?=\()/ - }, { - token : ["punctuation.operator", "support.constant"], - regex : /(\.)(s(?:ystemLanguage|cr(?:ipts|ollbars|een(?:X|Y|Top|Left))|t(?:yle(?:Sheets)?|atus(?:Text|bar)?)|ibling(?:Below|Above)|ource|uffixes|e(?:curity(?:Policy)?|l(?:ection|f)))|h(?:istory|ost(?:name)?|as(?:h|Focus))|y|X(?:MLDocument|SLDocument)|n(?:ext|ame(?:space(?:s|URI)|Prop))|M(?:IN_VALUE|AX_VALUE)|c(?:haracterSet|o(?:n(?:structor|trollers)|okieEnabled|lorDepth|mp(?:onents|lete))|urrent|puClass|l(?:i(?:p(?:boardData)?|entInformation)|osed|asses)|alle(?:e|r)|rypto)|t(?:o(?:olbar|p)|ext(?:Transform|Indent|Decoration|Align)|ags)|SQRT(?:1_2|2)|i(?:n(?:ner(?:Height|Width)|put)|ds|gnoreCase)|zIndex|o(?:scpu|n(?:readystatechange|Line)|uter(?:Height|Width)|p(?:sProfile|ener)|ffscreenBuffering)|NEGATIVE_INFINITY|d(?:i(?:splay|alog(?:Height|Top|Width|Left|Arguments)|rectories)|e(?:scription|fault(?:Status|Ch(?:ecked|arset)|View)))|u(?:ser(?:Profile|Language|Agent)|n(?:iqueID|defined)|pdateInterval)|_content|p(?:ixelDepth|ort|ersonalbar|kcs11|l(?:ugins|atform)|a(?:thname|dding(?:Right|Bottom|Top|Left)|rent(?:Window|Layer)?|ge(?:X(?:Offset)?|Y(?:Offset)?))|r(?:o(?:to(?:col|type)|duct(?:Sub)?|mpter)|e(?:vious|fix)))|e(?:n(?:coding|abledPlugin)|x(?:ternal|pando)|mbeds)|v(?:isibility|endor(?:Sub)?|Linkcolor)|URLUnencoded|P(?:I|OSITIVE_INFINITY)|f(?:ilename|o(?:nt(?:Size|Family|Weight)|rmName)|rame(?:s|Element)|gColor)|E|whiteSpace|l(?:i(?:stStyleType|n(?:eHeight|kColor))|o(?:ca(?:tion(?:bar)?|lName)|wsrc)|e(?:ngth|ft(?:Context)?)|a(?:st(?:M(?:odified|atch)|Index|Paren)|yer(?:s|X)|nguage))|a(?:pp(?:MinorVersion|Name|Co(?:deName|re)|Version)|vail(?:Height|Top|Width|Left)|ll|r(?:ity|guments)|Linkcolor|bove)|r(?:ight(?:Context)?|e(?:sponse(?:XML|Text)|adyState))|global|x|m(?:imeTypes|ultiline|enubar|argin(?:Right|Bottom|Top|Left))|L(?:N(?:10|2)|OG(?:10E|2E))|b(?:o(?:ttom|rder(?:Width|RightWidth|BottomWidth|Style|Color|TopWidth|LeftWidth))|ufferDepth|elow|ackground(?:Color|Image)))\b/ - }, { - token : ["storage.type", "punctuation.operator", "support.function.firebug"], - regex : /(console)(\.)(warn|info|log|error|time|timeEnd|assert)\b/ - }, { - token : keywordMapper, - regex : identifierRe - }, { - token : "keyword.operator", - regex : /--|\+\+|[!$%&*+\-~]|===|==|=|!=|!==|<=|>=|<<=|>>=|>>>=|<>|<|>|!|&&|\|\||\?\:|\*=|%=|\+=|\-=|&=|\^=/, - next : "start" - }, { - token : "punctuation.operator", - regex : /\?|\:|\,|\;|\./, - next : "start" - }, { - token : "paren.lparen", - regex : /[\[({]/, - next : "start" - }, { - token : "paren.rparen", - regex : /[\])}]/ - }, { - token : "keyword.operator", - regex : /\/=?/, - next : "start" - }, { - token: "comment", - regex: /^#!.*$/ - } - ], - "start": [ - DocCommentHighlightRules.getStartRule("doc-start"), - { - token : "comment", // multi line comment - regex : "\\/\\*", - next : "comment_regex_allowed" - }, { - token : "comment", - regex : "\\/\\/", - next : "line_comment_regex_allowed" - }, { - token: "string.regexp", - regex: "\\/", - next: "regex" - }, { - token : "text", - regex : "\\s+|^$", - next : "start" - }, { - token: "empty", - regex: "", - next: "no_regex" - } - ], - "regex": [ - { - token: "regexp.keyword.operator", - regex: "\\\\(?:u[\\da-fA-F]{4}|x[\\da-fA-F]{2}|.)" - }, { - token: "string.regexp", - regex: "/[sxngimy]*", - next: "no_regex" - }, { - token : "invalid", - regex: /\{\d+\b,?\d*\}[+*]|[+*$^?][+*]|[$^][?]|\?{3,}/ - }, { - token : "constant.language.escape", - regex: /\(\?[:=!]|\)|\{\d+\b,?\d*\}|[+*]\?|[()$^+*?.]/ - }, { - token : "constant.language.delimiter", - regex: /\|/ - }, { - token: "constant.language.escape", - regex: /\[\^?/, - next: "regex_character_class" - }, { - token: "empty", - regex: "$", - next: "no_regex" - }, { - defaultToken: "string.regexp" - } - ], - "regex_character_class": [ - { - token: "regexp.keyword.operator", - regex: "\\\\(?:u[\\da-fA-F]{4}|x[\\da-fA-F]{2}|.)" - }, { - token: "constant.language.escape", - regex: "]", - next: "regex" - }, { - token: "constant.language.escape", - regex: "-" - }, { - token: "empty", - regex: "$", - next: "no_regex" - }, { - defaultToken: "string.regexp.charachterclass" - } - ], - "function_arguments": [ - { - token: "variable.parameter", - regex: identifierRe - }, { - token: "punctuation.operator", - regex: "[, ]+" - }, { - token: "punctuation.operator", - regex: "$" - }, { - token: "empty", - regex: "", - next: "no_regex" - } - ], - "comment_regex_allowed" : [ - {token : "comment", regex : "\\*\\/", next : "start"}, - {defaultToken : "comment"} - ], - "comment" : [ - {token : "comment", regex : "\\*\\/", next : "no_regex"}, - {defaultToken : "comment"} - ], - "line_comment_regex_allowed" : [ - {token : "comment", regex : "$|^", next : "start"}, - {defaultToken : "comment"} - ], - "line_comment" : [ - {token : "comment", regex : "$|^", next : "no_regex"}, - {defaultToken : "comment"} - ], - "qqstring" : [ - { - token : "constant.language.escape", - regex : escapedRe - }, { - token : "string", - regex : "\\\\$", - next : "qqstring" - }, { - token : "string", - regex : '"|$', - next : "no_regex" - }, { - defaultToken: "string" - } - ], - "qstring" : [ - { - token : "constant.language.escape", - regex : escapedRe - }, { - token : "string", - regex : "\\\\$", - next : "qstring" - }, { - token : "string", - regex : "'|$", - next : "no_regex" - }, { - defaultToken: "string" - } - ] - }; - - this.embedRules(DocCommentHighlightRules, "doc-", - [ DocCommentHighlightRules.getEndRule("no_regex") ]); -}; - -oop.inherits(JavaScriptHighlightRules, TextHighlightRules); - -exports.JavaScriptHighlightRules = JavaScriptHighlightRules; -}); - -ace.define('ace/mode/doc_comment_highlight_rules', ['require', 'exports', 'module' , 'ace/lib/oop', 'ace/mode/text_highlight_rules'], function(require, exports, module) { - - -var oop = require("../lib/oop"); -var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; - -var DocCommentHighlightRules = function() { - - this.$rules = { - "start" : [ { - token : "comment.doc.tag", - regex : "@[\\w\\d_]+" // TODO: fix email addresses - }, { - token : "comment.doc.tag", - regex : "\\bTODO\\b" - }, { - defaultToken : "comment.doc" - }] - }; -}; - -oop.inherits(DocCommentHighlightRules, TextHighlightRules); - -DocCommentHighlightRules.getStartRule = function(start) { - return { - token : "comment.doc", // doc comment - regex : "\\/\\*(?=\\*)", - next : start - }; -}; - -DocCommentHighlightRules.getEndRule = function (start) { - return { - token : "comment.doc", // closing comment - regex : "\\*\\/", - next : start - }; -}; - - -exports.DocCommentHighlightRules = DocCommentHighlightRules; - -}); - -ace.define('ace/mode/matching_brace_outdent', ['require', 'exports', 'module' , 'ace/range'], function(require, exports, module) { - - -var Range = require("../range").Range; - -var MatchingBraceOutdent = function() {}; - -(function() { - - this.checkOutdent = function(line, input) { - if (! /^\s+$/.test(line)) - return false; - - return /^\s*\}/.test(input); - }; - - this.autoOutdent = function(doc, row) { - var line = doc.getLine(row); - var match = line.match(/^(\s*\})/); - - if (!match) return 0; - - var column = match[1].length; - var openBracePos = doc.findMatchingBracket({row: row, column: column}); - - if (!openBracePos || openBracePos.row == row) return 0; - - var indent = this.$getIndent(doc.getLine(openBracePos.row)); - doc.replace(new Range(row, 0, row, column-1), indent); - }; - - this.$getIndent = function(line) { - return line.match(/^\s*/)[0]; - }; - -}).call(MatchingBraceOutdent.prototype); - -exports.MatchingBraceOutdent = MatchingBraceOutdent; -}); - -ace.define('ace/mode/folding/cstyle', ['require', 'exports', 'module' , 'ace/lib/oop', 'ace/range', 'ace/mode/folding/fold_mode'], function(require, exports, module) { - - -var oop = require("../../lib/oop"); -var Range = require("../../range").Range; -var BaseFoldMode = require("./fold_mode").FoldMode; - -var FoldMode = exports.FoldMode = function(commentRegex) { - if (commentRegex) { - this.foldingStartMarker = new RegExp( - this.foldingStartMarker.source.replace(/\|[^|]*?$/, "|" + commentRegex.start) - ); - this.foldingStopMarker = new RegExp( - this.foldingStopMarker.source.replace(/\|[^|]*?$/, "|" + commentRegex.end) - ); - } -}; -oop.inherits(FoldMode, BaseFoldMode); - -(function() { - - this.foldingStartMarker = /(\{|\[)[^\}\]]*$|^\s*(\/\*)/; - this.foldingStopMarker = /^[^\[\{]*(\}|\])|^[\s\*]*(\*\/)/; - - this.getFoldWidgetRange = function(session, foldStyle, row, forceMultiline) { - var line = session.getLine(row); - var match = line.match(this.foldingStartMarker); - if (match) { - var i = match.index; - - if (match[1]) - return this.openingBracketBlock(session, match[1], row, i); - - var range = session.getCommentFoldRange(row, i + match[0].length, 1); - - if (range && !range.isMultiLine()) { - if (forceMultiline) { - range = this.getSectionRange(session, row); - } else if (foldStyle != "all") - range = null; - } - - return range; - } - - if (foldStyle === "markbegin") - return; - - var match = line.match(this.foldingStopMarker); - if (match) { - var i = match.index + match[0].length; - - if (match[1]) - return this.closingBracketBlock(session, match[1], row, i); - - return session.getCommentFoldRange(row, i, -1); - } - }; - - this.getSectionRange = function(session, row) { - var line = session.getLine(row); - var startIndent = line.search(/\S/); - var startRow = row; - var startColumn = line.length; - row = row + 1; - var endRow = row; - var maxRow = session.getLength(); - while (++row < maxRow) { - line = session.getLine(row); - var indent = line.search(/\S/); - if (indent === -1) - continue; - if (startIndent > indent) - break; - var subRange = this.getFoldWidgetRange(session, "all", row); - - if (subRange) { - if (subRange.start.row <= startRow) { - break; - } else if (subRange.isMultiLine()) { - row = subRange.end.row; - } else if (startIndent == indent) { - break; - } - } - endRow = row; - } - - return new Range(startRow, startColumn, endRow, session.getLine(endRow).length); - }; - -}).call(FoldMode.prototype); - -}); - -ace.define('ace/mode/svg_highlight_rules', ['require', 'exports', 'module' , 'ace/lib/oop', 'ace/mode/javascript_highlight_rules', 'ace/mode/xml_highlight_rules'], function(require, exports, module) { - - -var oop = require("../lib/oop"); -var JavaScriptHighlightRules = require("./javascript_highlight_rules").JavaScriptHighlightRules; -var XmlHighlightRules = require("./xml_highlight_rules").XmlHighlightRules; - -var SvgHighlightRules = function() { - XmlHighlightRules.call(this); - - this.embedTagRules(JavaScriptHighlightRules, "js-", "script"); - - this.normalizeRules(); -}; - -oop.inherits(SvgHighlightRules, XmlHighlightRules); - -exports.SvgHighlightRules = SvgHighlightRules; -}); - -ace.define('ace/mode/folding/mixed', ['require', 'exports', 'module' , 'ace/lib/oop', 'ace/mode/folding/fold_mode'], function(require, exports, module) { - - -var oop = require("../../lib/oop"); -var BaseFoldMode = require("./fold_mode").FoldMode; - -var FoldMode = exports.FoldMode = function(defaultMode, subModes) { - this.defaultMode = defaultMode; - this.subModes = subModes; -}; -oop.inherits(FoldMode, BaseFoldMode); - -(function() { - - - this.$getMode = function(state) { - if (typeof state != "string") - state = state[0]; - for (var key in this.subModes) { - if (state.indexOf(key) === 0) - return this.subModes[key]; - } - return null; - }; - - this.$tryMode = function(state, session, foldStyle, row) { - var mode = this.$getMode(state); - return (mode ? mode.getFoldWidget(session, foldStyle, row) : ""); - }; - - this.getFoldWidget = function(session, foldStyle, row) { - return ( - this.$tryMode(session.getState(row-1), session, foldStyle, row) || - this.$tryMode(session.getState(row), session, foldStyle, row) || - this.defaultMode.getFoldWidget(session, foldStyle, row) - ); - }; - - this.getFoldWidgetRange = function(session, foldStyle, row) { - var mode = this.$getMode(session.getState(row-1)); - - if (!mode || !mode.getFoldWidget(session, foldStyle, row)) - mode = this.$getMode(session.getState(row)); - - if (!mode || !mode.getFoldWidget(session, foldStyle, row)) - mode = this.defaultMode; - - return mode.getFoldWidgetRange(session, foldStyle, row); - }; - -}).call(FoldMode.prototype); - -}); diff --git a/IDE/jsrealb-ide/ace-src-noconflict/mode-tcl.js b/IDE/jsrealb-ide/ace-src-noconflict/mode-tcl.js deleted file mode 100644 index aebee1c7..00000000 --- a/IDE/jsrealb-ide/ace-src-noconflict/mode-tcl.js +++ /dev/null @@ -1,361 +0,0 @@ -/* ***** BEGIN LICENSE BLOCK ***** - * Distributed under the BSD license: - * - * Copyright (c) 2010, Ajax.org B.V. - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are met: - * * Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * * Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * * Neither the name of Ajax.org B.V. nor the - * names of its contributors may be used to endorse or promote products - * derived from this software without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND - * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED - * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE - * DISCLAIMED. IN NO EVENT SHALL AJAX.ORG B.V. BE LIABLE FOR ANY - * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES - * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; - * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND - * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - * - * ***** END LICENSE BLOCK ***** */ - -ace.define('ace/mode/tcl', ['require', 'exports', 'module' , 'ace/lib/oop', 'ace/mode/text', 'ace/tokenizer', 'ace/mode/folding/cstyle', 'ace/mode/tcl_highlight_rules', 'ace/mode/matching_brace_outdent', 'ace/range'], function(require, exports, module) { - - -var oop = require("../lib/oop"); -var TextMode = require("./text").Mode; -var Tokenizer = require("../tokenizer").Tokenizer; -var CStyleFoldMode = require("./folding/cstyle").FoldMode; -var TclHighlightRules = require("./tcl_highlight_rules").TclHighlightRules; -var MatchingBraceOutdent = require("./matching_brace_outdent").MatchingBraceOutdent; -var Range = require("../range").Range; - -var Mode = function() { - this.HighlightRules = TclHighlightRules; - this.$outdent = new MatchingBraceOutdent(); - this.foldingRules = new CStyleFoldMode(); -}; -oop.inherits(Mode, TextMode); - -(function() { - - this.lineCommentStart = "#"; - - this.getNextLineIndent = function(state, line, tab) { - var indent = this.$getIndent(line); - - var tokenizedLine = this.getTokenizer().getLineTokens(line, state); - var tokens = tokenizedLine.tokens; - - if (tokens.length && tokens[tokens.length-1].type == "comment") { - return indent; - } - - if (state == "start") { - var match = line.match(/^.*[\{\(\[]\s*$/); - if (match) { - indent += tab; - } - } - - return indent; - }; - - this.checkOutdent = function(state, line, input) { - return this.$outdent.checkOutdent(line, input); - }; - - this.autoOutdent = function(state, doc, row) { - this.$outdent.autoOutdent(doc, row); - }; - - this.$id = "ace/mode/tcl"; -}).call(Mode.prototype); - -exports.Mode = Mode; -}); - -ace.define('ace/mode/folding/cstyle', ['require', 'exports', 'module' , 'ace/lib/oop', 'ace/range', 'ace/mode/folding/fold_mode'], function(require, exports, module) { - - -var oop = require("../../lib/oop"); -var Range = require("../../range").Range; -var BaseFoldMode = require("./fold_mode").FoldMode; - -var FoldMode = exports.FoldMode = function(commentRegex) { - if (commentRegex) { - this.foldingStartMarker = new RegExp( - this.foldingStartMarker.source.replace(/\|[^|]*?$/, "|" + commentRegex.start) - ); - this.foldingStopMarker = new RegExp( - this.foldingStopMarker.source.replace(/\|[^|]*?$/, "|" + commentRegex.end) - ); - } -}; -oop.inherits(FoldMode, BaseFoldMode); - -(function() { - - this.foldingStartMarker = /(\{|\[)[^\}\]]*$|^\s*(\/\*)/; - this.foldingStopMarker = /^[^\[\{]*(\}|\])|^[\s\*]*(\*\/)/; - - this.getFoldWidgetRange = function(session, foldStyle, row, forceMultiline) { - var line = session.getLine(row); - var match = line.match(this.foldingStartMarker); - if (match) { - var i = match.index; - - if (match[1]) - return this.openingBracketBlock(session, match[1], row, i); - - var range = session.getCommentFoldRange(row, i + match[0].length, 1); - - if (range && !range.isMultiLine()) { - if (forceMultiline) { - range = this.getSectionRange(session, row); - } else if (foldStyle != "all") - range = null; - } - - return range; - } - - if (foldStyle === "markbegin") - return; - - var match = line.match(this.foldingStopMarker); - if (match) { - var i = match.index + match[0].length; - - if (match[1]) - return this.closingBracketBlock(session, match[1], row, i); - - return session.getCommentFoldRange(row, i, -1); - } - }; - - this.getSectionRange = function(session, row) { - var line = session.getLine(row); - var startIndent = line.search(/\S/); - var startRow = row; - var startColumn = line.length; - row = row + 1; - var endRow = row; - var maxRow = session.getLength(); - while (++row < maxRow) { - line = session.getLine(row); - var indent = line.search(/\S/); - if (indent === -1) - continue; - if (startIndent > indent) - break; - var subRange = this.getFoldWidgetRange(session, "all", row); - - if (subRange) { - if (subRange.start.row <= startRow) { - break; - } else if (subRange.isMultiLine()) { - row = subRange.end.row; - } else if (startIndent == indent) { - break; - } - } - endRow = row; - } - - return new Range(startRow, startColumn, endRow, session.getLine(endRow).length); - }; - -}).call(FoldMode.prototype); - -}); - -ace.define('ace/mode/tcl_highlight_rules', ['require', 'exports', 'module' , 'ace/lib/oop', 'ace/mode/text_highlight_rules'], function(require, exports, module) { - - -var oop = require("../lib/oop"); -var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; - -var TclHighlightRules = function() { - - this.$rules = { - "start" : [ - { - token : "comment", - regex : "#.*\\\\$", - next : "commentfollow" - }, { - token : "comment", - regex : "#.*$" - }, { - token : "support.function", - regex : '[\\\\]$', - next : "splitlineStart" - }, { - token : "text", - regex : '[\\\\](?:["]|[{]|[}]|[[]|[]]|[$]|[\])' - }, { - token : "text", // last value before command - regex : '^|[^{][;][^}]|[/\r/]', - next : "commandItem" - }, { - token : "string", // single line - regex : '[ ]*["](?:(?:\\\\.)|(?:[^"\\\\]))*?["]' - }, { - token : "string", // multi line """ string start - regex : '[ ]*["]', - next : "qqstring" - }, { - token : "variable.instance", - regex : "[$]", - next : "variable" - }, { - token : "support.function", - regex : "!|\\$|%|&|\\*|\\-\\-|\\-|\\+\\+|\\+|~|===|==|=|!=|!==|<=|>=|<<=|>>=|>>>=|<>|<|>|!|&&|\\|\\||\\?\\:|\\*=|%=|\\+=|\\-=|&=|\\^=|{\\*}|;|::" - }, { - token : "identifier", - regex : "[a-zA-Z_$][a-zA-Z0-9_$]*\\b" - }, { - token : "paren.lparen", - regex : "[[{]", - next : "commandItem" - }, { - token : "paren.lparen", - regex : "[(]" - }, { - token : "paren.rparen", - regex : "[\\])}]" - }, { - token : "text", - regex : "\\s+" - } - ], - "commandItem" : [ - { - token : "comment", - regex : "#.*\\\\$", - next : "commentfollow" - }, { - token : "comment", - regex : "#.*$", - next : "start" - }, { - token : "string", // single line - regex : '[ ]*["](?:(?:\\\\.)|(?:[^"\\\\]))*?["]' - }, { - token : "variable.instance", - regex : "[$]", - next : "variable" - }, { - token : "support.function", - regex : "(?:[:][:])[a-zA-Z0-9_/]+(?:[:][:])", - next : "commandItem" - }, { - token : "support.function", - regex : "[a-zA-Z0-9_/]+(?:[:][:])", - next : "commandItem" - }, { - token : "support.function", - regex : "(?:[:][:])", - next : "commandItem" - }, { - token : "paren.rparen", - regex : "[\\])}]" - }, { - token : "support.function", - regex : "!|\\$|%|&|\\*|\\-\\-|\\-|\\+\\+|\\+|~|===|==|=|!=|!==|<=|>=|<<=|>>=|>>>=|<>|<|>|!|&&|\\|\\||\\?\\:|\\*=|%=|\\+=|\\-=|&=|\\^=|{\\*}|;|::" - }, { - token : "keyword", - regex : "[a-zA-Z0-9_/]+", - next : "start" - } ], - "commentfollow" : [ - { - token : "comment", - regex : ".*\\\\$", - next : "commentfollow" - }, { - token : "comment", - regex : '.+', - next : "start" - } ], - "splitlineStart" : [ - { - token : "text", - regex : "^.", - next : "start" - }], - "variable" : [ - { - token : "variable.instance", // variable tcl - regex : "[a-zA-Z_\\d]+(?:[(][a-zA-Z_\\d]+[)])?", - next : "start" - }, { - token : "variable.instance", // variable tcl with braces - regex : "{?[a-zA-Z_\\d]+}?", - next : "start" - }], - "qqstring" : [ { - token : "string", // multi line """ string end - regex : '(?:[^\\\\]|\\\\.)*?["]', - next : "start" - }, { - token : "string", - regex : '.+' - } ] - }; -}; - -oop.inherits(TclHighlightRules, TextHighlightRules); - -exports.TclHighlightRules = TclHighlightRules; -}); - -ace.define('ace/mode/matching_brace_outdent', ['require', 'exports', 'module' , 'ace/range'], function(require, exports, module) { - - -var Range = require("../range").Range; - -var MatchingBraceOutdent = function() {}; - -(function() { - - this.checkOutdent = function(line, input) { - if (! /^\s+$/.test(line)) - return false; - - return /^\s*\}/.test(input); - }; - - this.autoOutdent = function(doc, row) { - var line = doc.getLine(row); - var match = line.match(/^(\s*\})/); - - if (!match) return 0; - - var column = match[1].length; - var openBracePos = doc.findMatchingBracket({row: row, column: column}); - - if (!openBracePos || openBracePos.row == row) return 0; - - var indent = this.$getIndent(doc.getLine(openBracePos.row)); - doc.replace(new Range(row, 0, row, column-1), indent); - }; - - this.$getIndent = function(line) { - return line.match(/^\s*/)[0]; - }; - -}).call(MatchingBraceOutdent.prototype); - -exports.MatchingBraceOutdent = MatchingBraceOutdent; -}); diff --git a/IDE/jsrealb-ide/ace-src-noconflict/mode-tex.js b/IDE/jsrealb-ide/ace-src-noconflict/mode-tex.js deleted file mode 100644 index d8809a1b..00000000 --- a/IDE/jsrealb-ide/ace-src-noconflict/mode-tex.js +++ /dev/null @@ -1,187 +0,0 @@ -/* - * tex.js - * - * Copyright (C) 2009-11 by RStudio, Inc. - * - * The Initial Developer of the Original Code is - * Ajax.org B.V. - * Portions created by the Initial Developer are Copyright (C) 2010 - * the Initial Developer. All Rights Reserved. - * - * Distributed under the BSD license: - * - * Copyright (c) 2010, Ajax.org B.V. - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are met: - * * Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * * Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * * Neither the name of Ajax.org B.V. nor the - * names of its contributors may be used to endorse or promote products - * derived from this software without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND - * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED - * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE - * DISCLAIMED. IN NO EVENT SHALL AJAX.ORG B.V. BE LIABLE FOR ANY - * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES - * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; - * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND - * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF - * - */ -ace.define('ace/mode/tex', ['require', 'exports', 'module' , 'ace/lib/oop', 'ace/mode/text', 'ace/tokenizer', 'ace/mode/text_highlight_rules', 'ace/mode/tex_highlight_rules', 'ace/mode/matching_brace_outdent'], function(require, exports, module) { - - -var oop = require("../lib/oop"); -var TextMode = require("./text").Mode; -var Tokenizer = require("../tokenizer").Tokenizer; -var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; -var TexHighlightRules = require("./tex_highlight_rules").TexHighlightRules; -var MatchingBraceOutdent = require("./matching_brace_outdent").MatchingBraceOutdent; - -var Mode = function(suppressHighlighting) { - if (suppressHighlighting) - this.HighlightRules = TextHighlightRules; - else - this.HighlightRules = TexHighlightRules; - this.$outdent = new MatchingBraceOutdent(); -}; -oop.inherits(Mode, TextMode); - -(function() { - this.getNextLineIndent = function(state, line, tab) { - return this.$getIndent(line); - }; - - this.allowAutoInsert = function() { - return false; - }; - this.$id = "ace/mode/tex"; -}).call(Mode.prototype); - -exports.Mode = Mode; -}); -ace.define('ace/mode/tex_highlight_rules', ['require', 'exports', 'module' , 'ace/lib/oop', 'ace/lib/lang', 'ace/mode/text_highlight_rules'], function(require, exports, module) { - - -var oop = require("../lib/oop"); -var lang = require("../lib/lang"); -var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; - -var TexHighlightRules = function(textClass) { - - if (!textClass) - textClass = "text"; - - this.$rules = { - "start" : [ - { - token : "comment", - regex : "%.*$" - }, { - token : textClass, // non-command - regex : "\\\\[$&%#\\{\\}]" - }, { - token : "keyword", // command - regex : "\\\\(?:documentclass|usepackage|newcounter|setcounter|addtocounter|value|arabic|stepcounter|newenvironment|renewenvironment|ref|vref|eqref|pageref|label|cite[a-zA-Z]*|tag|begin|end|bibitem)\\b", - next : "nospell" - }, { - token : "keyword", // command - regex : "\\\\(?:[a-zA-z0-9]+|[^a-zA-z0-9])" - }, { - token : "paren.keyword.operator", - regex : "[[({]" - }, { - token : "paren.keyword.operator", - regex : "[\\])}]" - }, { - token : textClass, - regex : "\\s+" - } - ], - "nospell" : [ - { - token : "comment", - regex : "%.*$", - next : "start" - }, { - token : "nospell." + textClass, // non-command - regex : "\\\\[$&%#\\{\\}]" - }, { - token : "keyword", // command - regex : "\\\\(?:documentclass|usepackage|newcounter|setcounter|addtocounter|value|arabic|stepcounter|newenvironment|renewenvironment|ref|vref|eqref|pageref|label|cite[a-zA-Z]*|tag|begin|end|bibitem)\\b" - }, { - token : "keyword", // command - regex : "\\\\(?:[a-zA-z0-9]+|[^a-zA-z0-9])", - next : "start" - }, { - token : "paren.keyword.operator", - regex : "[[({]" - }, { - token : "paren.keyword.operator", - regex : "[\\])]" - }, { - token : "paren.keyword.operator", - regex : "}", - next : "start" - }, { - token : "nospell." + textClass, - regex : "\\s+" - }, { - token : "nospell." + textClass, - regex : "\\w+" - } - ] - }; -}; - -oop.inherits(TexHighlightRules, TextHighlightRules); - -exports.TexHighlightRules = TexHighlightRules; -}); - -ace.define('ace/mode/matching_brace_outdent', ['require', 'exports', 'module' , 'ace/range'], function(require, exports, module) { - - -var Range = require("../range").Range; - -var MatchingBraceOutdent = function() {}; - -(function() { - - this.checkOutdent = function(line, input) { - if (! /^\s+$/.test(line)) - return false; - - return /^\s*\}/.test(input); - }; - - this.autoOutdent = function(doc, row) { - var line = doc.getLine(row); - var match = line.match(/^(\s*\})/); - - if (!match) return 0; - - var column = match[1].length; - var openBracePos = doc.findMatchingBracket({row: row, column: column}); - - if (!openBracePos || openBracePos.row == row) return 0; - - var indent = this.$getIndent(doc.getLine(openBracePos.row)); - doc.replace(new Range(row, 0, row, column-1), indent); - }; - - this.$getIndent = function(line) { - return line.match(/^\s*/)[0]; - }; - -}).call(MatchingBraceOutdent.prototype); - -exports.MatchingBraceOutdent = MatchingBraceOutdent; -}); diff --git a/IDE/jsrealb-ide/ace-src-noconflict/mode-text.js b/IDE/jsrealb-ide/ace-src-noconflict/mode-text.js deleted file mode 100644 index e69de29b..00000000 diff --git a/IDE/jsrealb-ide/ace-src-noconflict/mode-textile.js b/IDE/jsrealb-ide/ace-src-noconflict/mode-textile.js deleted file mode 100644 index 784e9725..00000000 --- a/IDE/jsrealb-ide/ace-src-noconflict/mode-textile.js +++ /dev/null @@ -1,171 +0,0 @@ -/* ***** BEGIN LICENSE BLOCK ***** - * Distributed under the BSD license: - * - * Copyright (c) 2010, Ajax.org B.V. - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are met: - * * Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * * Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * * Neither the name of Ajax.org B.V. nor the - * names of its contributors may be used to endorse or promote products - * derived from this software without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND - * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED - * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE - * DISCLAIMED. IN NO EVENT SHALL AJAX.ORG B.V. BE LIABLE FOR ANY - * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES - * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; - * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND - * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - * - * ***** END LICENSE BLOCK ***** */ - -ace.define('ace/mode/textile', ['require', 'exports', 'module' , 'ace/lib/oop', 'ace/mode/text', 'ace/tokenizer', 'ace/mode/textile_highlight_rules', 'ace/mode/matching_brace_outdent'], function(require, exports, module) { - - -var oop = require("../lib/oop"); -var TextMode = require("./text").Mode; -var Tokenizer = require("../tokenizer").Tokenizer; -var TextileHighlightRules = require("./textile_highlight_rules").TextileHighlightRules; -var MatchingBraceOutdent = require("./matching_brace_outdent").MatchingBraceOutdent; - -var Mode = function() { - this.HighlightRules = TextileHighlightRules; - this.$outdent = new MatchingBraceOutdent(); -}; -oop.inherits(Mode, TextMode); - -(function() { - this.getNextLineIndent = function(state, line, tab) { - if (state == "intag") - return tab; - - return ""; - }; - - this.checkOutdent = function(state, line, input) { - return this.$outdent.checkOutdent(line, input); - }; - - this.autoOutdent = function(state, doc, row) { - this.$outdent.autoOutdent(doc, row); - }; - - this.$id = "ace/mode/textile"; -}).call(Mode.prototype); - -exports.Mode = Mode; - -}); - -ace.define('ace/mode/textile_highlight_rules', ['require', 'exports', 'module' , 'ace/lib/oop', 'ace/mode/text_highlight_rules'], function(require, exports, module) { - - -var oop = require("../lib/oop"); -var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; - -var TextileHighlightRules = function() { - this.$rules = { - "start" : [ - { - token : function(value) { - if (value.charAt(0) == "h") - return "markup.heading." + value.charAt(1); - else - return "markup.heading"; - }, - regex : "h1|h2|h3|h4|h5|h6|bq|p|bc|pre", - next : "blocktag" - }, - { - token : "keyword", - regex : "[\\*]+|[#]+" - }, - { - token : "text", - regex : ".+" - } - ], - "blocktag" : [ - { - token : "keyword", - regex : "\\. ", - next : "start" - }, - { - token : "keyword", - regex : "\\(", - next : "blocktagproperties" - } - ], - "blocktagproperties" : [ - { - token : "keyword", - regex : "\\)", - next : "blocktag" - }, - { - token : "string", - regex : "[a-zA-Z0-9\\-_]+" - }, - { - token : "keyword", - regex : "#" - } - ] - }; -}; - -oop.inherits(TextileHighlightRules, TextHighlightRules); - -exports.TextileHighlightRules = TextileHighlightRules; - -}); - -ace.define('ace/mode/matching_brace_outdent', ['require', 'exports', 'module' , 'ace/range'], function(require, exports, module) { - - -var Range = require("../range").Range; - -var MatchingBraceOutdent = function() {}; - -(function() { - - this.checkOutdent = function(line, input) { - if (! /^\s+$/.test(line)) - return false; - - return /^\s*\}/.test(input); - }; - - this.autoOutdent = function(doc, row) { - var line = doc.getLine(row); - var match = line.match(/^(\s*\})/); - - if (!match) return 0; - - var column = match[1].length; - var openBracePos = doc.findMatchingBracket({row: row, column: column}); - - if (!openBracePos || openBracePos.row == row) return 0; - - var indent = this.$getIndent(doc.getLine(openBracePos.row)); - doc.replace(new Range(row, 0, row, column-1), indent); - }; - - this.$getIndent = function(line) { - return line.match(/^\s*/)[0]; - }; - -}).call(MatchingBraceOutdent.prototype); - -exports.MatchingBraceOutdent = MatchingBraceOutdent; -}); diff --git a/IDE/jsrealb-ide/ace-src-noconflict/mode-toml.js b/IDE/jsrealb-ide/ace-src-noconflict/mode-toml.js deleted file mode 100644 index 631adc63..00000000 --- a/IDE/jsrealb-ide/ace-src-noconflict/mode-toml.js +++ /dev/null @@ -1,177 +0,0 @@ -/* ***** BEGIN LICENSE BLOCK ***** - * Distributed under the BSD license: - * - * Copyright (c) 2013, Ajax.org B.V. - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are met: - * * Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * * Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * * Neither the name of Ajax.org B.V. nor the - * names of its contributors may be used to endorse or promote products - * derived from this software without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND - * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED - * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE - * DISCLAIMED. IN NO EVENT SHALL AJAX.ORG B.V. BE LIABLE FOR ANY - * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES - * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; - * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND - * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - * - * - * Contributor(s): - * - * Garen J. Torikian - * - * ***** END LICENSE BLOCK ***** */ - -ace.define('ace/mode/toml', ['require', 'exports', 'module' , 'ace/lib/oop', 'ace/mode/text', 'ace/tokenizer', 'ace/mode/toml_highlight_rules', 'ace/mode/folding/ini'], function(require, exports, module) { - - -var oop = require("../lib/oop"); -var TextMode = require("./text").Mode; -var Tokenizer = require("../tokenizer").Tokenizer; -var TomlHighlightRules = require("./toml_highlight_rules").TomlHighlightRules; -var FoldMode = require("./folding/ini").FoldMode; - -var Mode = function() { - this.HighlightRules = TomlHighlightRules; - this.foldingRules = new FoldMode(); -}; -oop.inherits(Mode, TextMode); - -(function() { - this.lineCommentStart = "#"; - this.$id = "ace/mode/toml"; -}).call(Mode.prototype); - -exports.Mode = Mode; -}); - -ace.define('ace/mode/toml_highlight_rules', ['require', 'exports', 'module' , 'ace/lib/oop', 'ace/mode/text_highlight_rules'], function(require, exports, module) { - - -var oop = require("../lib/oop"); -var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; - -var TomlHighlightRules = function() { - var keywordMapper = this.createKeywordMapper({ - "constant.language.boolean": "true|false" - }, "identifier"); - - var identifierRe = "[a-zA-Z\\$_\u00a1-\uffff][a-zA-Z\\d\\$_\u00a1-\uffff]*\\b"; - - this.$rules = { - "start": [ - { - token: "comment.toml", - regex: /#.*$/ - }, - { - token : "string", - regex : '"(?=.)', - next : "qqstring" - }, - { - token: ["variable.keygroup.toml"], - regex: "(?:^\\s*)(\\[([^\\]]+)\\])" - }, - { - token : keywordMapper, - regex : identifierRe - }, - { - token : "support.date.toml", - regex: "\\d{4}-\\d{2}-\\d{2}(T)\\d{2}:\\d{2}:\\d{2}(Z)" - }, - { - token: "constant.numeric.toml", - regex: "-?\\d+(\\.?\\d+)?" - } - ], - "qqstring" : [ - { - token : "string", - regex : "\\\\$", - next : "qqstring" - }, - { - token : "constant.language.escape", - regex : '\\\\[0tnr"\\\\]' - }, - { - token : "string", - regex : '"|$', - next : "start" - }, - { - defaultToken: "string" - } - ] - } - -}; - -oop.inherits(TomlHighlightRules, TextHighlightRules); - -exports.TomlHighlightRules = TomlHighlightRules; -}); - -ace.define('ace/mode/folding/ini', ['require', 'exports', 'module' , 'ace/lib/oop', 'ace/range', 'ace/mode/folding/fold_mode'], function(require, exports, module) { - - -var oop = require("../../lib/oop"); -var Range = require("../../range").Range; -var BaseFoldMode = require("./fold_mode").FoldMode; - -var FoldMode = exports.FoldMode = function() { -}; -oop.inherits(FoldMode, BaseFoldMode); - -(function() { - - this.foldingStartMarker = /^\s*\[([^\])]*)]\s*(?:$|[;#])/; - - this.getFoldWidgetRange = function(session, foldStyle, row) { - var re = this.foldingStartMarker; - var line = session.getLine(row); - - var m = line.match(re); - - if (!m) return; - - var startName = m[1] + "."; - - var startColumn = line.length; - var maxRow = session.getLength(); - var startRow = row; - var endRow = row; - - while (++row < maxRow) { - line = session.getLine(row); - if (/^\s*$/.test(line)) - continue; - m = line.match(re); - if (m && m[1].lastIndexOf(startName, 0) !== 0) - break; - - endRow = row; - } - - if (endRow > startRow) { - var endColumn = session.getLine(endRow).length; - return new Range(startRow, startColumn, endRow, endColumn); - } - }; - -}).call(FoldMode.prototype); - -}); diff --git a/IDE/jsrealb-ide/ace-src-noconflict/mode-twig.js b/IDE/jsrealb-ide/ace-src-noconflict/mode-twig.js deleted file mode 100644 index 0df1b4fd..00000000 --- a/IDE/jsrealb-ide/ace-src-noconflict/mode-twig.js +++ /dev/null @@ -1,2228 +0,0 @@ -/* ***** BEGIN LICENSE BLOCK ***** - * Distributed under the BSD license: - * - * Copyright (c) 2013, Ajax.org B.V. - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are met: - * * Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * * Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * * Neither the name of Ajax.org B.V. nor the - * names of its contributors may be used to endorse or promote products - * derived from this software without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND - * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED - * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE - * DISCLAIMED. IN NO EVENT SHALL AJAX.ORG B.V. BE LIABLE FOR ANY - * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES - * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; - * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND - * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - * - * ***** END LICENSE BLOCK ***** */ - -ace.define('ace/mode/twig', ['require', 'exports', 'module' , 'ace/lib/oop', 'ace/mode/text', 'ace/mode/javascript', 'ace/mode/css', 'ace/tokenizer', 'ace/mode/twig_highlight_rules', 'ace/mode/behaviour/html', 'ace/mode/folding/html', 'ace/mode/matching_brace_outdent'], function(require, exports, module) { - - -var oop = require("../lib/oop"); -var TextMode = require("./text").Mode; -var JavaScriptMode = require("./javascript").Mode; -var CssMode = require("./css").Mode; -var Tokenizer = require("../tokenizer").Tokenizer; -var TwigHighlightRules = require("./twig_highlight_rules").TwigHighlightRules; -var HtmlBehaviour = require("./behaviour/html").HtmlBehaviour; -var HtmlFoldMode = require("./folding/html").FoldMode; -var MatchingBraceOutdent = require("./matching_brace_outdent").MatchingBraceOutdent; - -var Mode = function() { - this.HighlightRules = TwigHighlightRules; - this.$outdent = new MatchingBraceOutdent(); - this.$behaviour = new HtmlBehaviour(); - - this.createModeDelegates({ - "js-": JavaScriptMode, - "css-": CssMode - }); - - this.foldingRules = new HtmlFoldMode(); -}; -oop.inherits(Mode, TextMode); - -(function() { - this.blockComment = {start: "{#", end: "#}"}; - - this.getNextLineIndent = function(state, line, tab) { - var indent = this.$getIndent(line); - - var tokenizedLine = this.getTokenizer().getLineTokens(line, state); - var tokens = tokenizedLine.tokens; - var endState = tokenizedLine.state; - - if (tokens.length && tokens[tokens.length-1].type == "comment") { - return indent; - } - - if (state == "start") { - var match = line.match(/^.*[\{\(\[]\s*$/); - if (match) { - indent += tab; - } - } - - return indent; - }; - - this.checkOutdent = function(state, line, input) { - return this.$outdent.checkOutdent(line, input); - }; - - this.autoOutdent = function(state, doc, row) { - this.$outdent.autoOutdent(doc, row); - }; - this.$id = "ace/mode/twig"; -}).call(Mode.prototype); - -exports.Mode = Mode; -}); - -ace.define('ace/mode/javascript', ['require', 'exports', 'module' , 'ace/lib/oop', 'ace/mode/text', 'ace/tokenizer', 'ace/mode/javascript_highlight_rules', 'ace/mode/matching_brace_outdent', 'ace/range', 'ace/worker/worker_client', 'ace/mode/behaviour/cstyle', 'ace/mode/folding/cstyle'], function(require, exports, module) { - - -var oop = require("../lib/oop"); -var TextMode = require("./text").Mode; -var Tokenizer = require("../tokenizer").Tokenizer; -var JavaScriptHighlightRules = require("./javascript_highlight_rules").JavaScriptHighlightRules; -var MatchingBraceOutdent = require("./matching_brace_outdent").MatchingBraceOutdent; -var Range = require("../range").Range; -var WorkerClient = require("../worker/worker_client").WorkerClient; -var CstyleBehaviour = require("./behaviour/cstyle").CstyleBehaviour; -var CStyleFoldMode = require("./folding/cstyle").FoldMode; - -var Mode = function() { - this.HighlightRules = JavaScriptHighlightRules; - - this.$outdent = new MatchingBraceOutdent(); - this.$behaviour = new CstyleBehaviour(); - this.foldingRules = new CStyleFoldMode(); -}; -oop.inherits(Mode, TextMode); - -(function() { - - this.lineCommentStart = "//"; - this.blockComment = {start: "/*", end: "*/"}; - - this.getNextLineIndent = function(state, line, tab) { - var indent = this.$getIndent(line); - - var tokenizedLine = this.getTokenizer().getLineTokens(line, state); - var tokens = tokenizedLine.tokens; - var endState = tokenizedLine.state; - - if (tokens.length && tokens[tokens.length-1].type == "comment") { - return indent; - } - - if (state == "start" || state == "no_regex") { - var match = line.match(/^.*(?:\bcase\b.*\:|[\{\(\[])\s*$/); - if (match) { - indent += tab; - } - } else if (state == "doc-start") { - if (endState == "start" || endState == "no_regex") { - return ""; - } - var match = line.match(/^\s*(\/?)\*/); - if (match) { - if (match[1]) { - indent += " "; - } - indent += "* "; - } - } - - return indent; - }; - - this.checkOutdent = function(state, line, input) { - return this.$outdent.checkOutdent(line, input); - }; - - this.autoOutdent = function(state, doc, row) { - this.$outdent.autoOutdent(doc, row); - }; - - this.createWorker = function(session) { - var worker = new WorkerClient(["ace"], "ace/mode/javascript_worker", "JavaScriptWorker"); - worker.attachToDocument(session.getDocument()); - - worker.on("jslint", function(results) { - session.setAnnotations(results.data); - }); - - worker.on("terminate", function() { - session.clearAnnotations(); - }); - - return worker; - }; - - this.$id = "ace/mode/javascript"; -}).call(Mode.prototype); - -exports.Mode = Mode; -}); - -ace.define('ace/mode/javascript_highlight_rules', ['require', 'exports', 'module' , 'ace/lib/oop', 'ace/mode/doc_comment_highlight_rules', 'ace/mode/text_highlight_rules'], function(require, exports, module) { - - -var oop = require("../lib/oop"); -var DocCommentHighlightRules = require("./doc_comment_highlight_rules").DocCommentHighlightRules; -var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; - -var JavaScriptHighlightRules = function() { - var keywordMapper = this.createKeywordMapper({ - "variable.language": - "Array|Boolean|Date|Function|Iterator|Number|Object|RegExp|String|Proxy|" + // Constructors - "Namespace|QName|XML|XMLList|" + // E4X - "ArrayBuffer|Float32Array|Float64Array|Int16Array|Int32Array|Int8Array|" + - "Uint16Array|Uint32Array|Uint8Array|Uint8ClampedArray|" + - "Error|EvalError|InternalError|RangeError|ReferenceError|StopIteration|" + // Errors - "SyntaxError|TypeError|URIError|" + - "decodeURI|decodeURIComponent|encodeURI|encodeURIComponent|eval|isFinite|" + // Non-constructor functions - "isNaN|parseFloat|parseInt|" + - "JSON|Math|" + // Other - "this|arguments|prototype|window|document" , // Pseudo - "keyword": - "const|yield|import|get|set|" + - "break|case|catch|continue|default|delete|do|else|finally|for|function|" + - "if|in|instanceof|new|return|switch|throw|try|typeof|let|var|while|with|debugger|" + - "__parent__|__count__|escape|unescape|with|__proto__|" + - "class|enum|extends|super|export|implements|private|public|interface|package|protected|static", - "storage.type": - "const|let|var|function", - "constant.language": - "null|Infinity|NaN|undefined", - "support.function": - "alert", - "constant.language.boolean": "true|false" - }, "identifier"); - var kwBeforeRe = "case|do|else|finally|in|instanceof|return|throw|try|typeof|yield|void"; - var identifierRe = "[a-zA-Z\\$_\u00a1-\uffff][a-zA-Z\\d\\$_\u00a1-\uffff]*\\b"; - - var escapedRe = "\\\\(?:x[0-9a-fA-F]{2}|" + // hex - "u[0-9a-fA-F]{4}|" + // unicode - "[0-2][0-7]{0,2}|" + // oct - "3[0-6][0-7]?|" + // oct - "37[0-7]?|" + // oct - "[4-7][0-7]?|" + //oct - ".)"; - - this.$rules = { - "no_regex" : [ - { - token : "comment", - regex : "\\/\\/", - next : "line_comment" - }, - DocCommentHighlightRules.getStartRule("doc-start"), - { - token : "comment", // multi line comment - regex : /\/\*/, - next : "comment" - }, { - token : "string", - regex : "'(?=.)", - next : "qstring" - }, { - token : "string", - regex : '"(?=.)', - next : "qqstring" - }, { - token : "constant.numeric", // hex - regex : /0[xX][0-9a-fA-F]+\b/ - }, { - token : "constant.numeric", // float - regex : /[+-]?\d+(?:(?:\.\d*)?(?:[eE][+-]?\d+)?)?\b/ - }, { - token : [ - "storage.type", "punctuation.operator", "support.function", - "punctuation.operator", "entity.name.function", "text","keyword.operator" - ], - regex : "(" + identifierRe + ")(\\.)(prototype)(\\.)(" + identifierRe +")(\\s*)(=)", - next: "function_arguments" - }, { - token : [ - "storage.type", "punctuation.operator", "entity.name.function", "text", - "keyword.operator", "text", "storage.type", "text", "paren.lparen" - ], - regex : "(" + identifierRe + ")(\\.)(" + identifierRe +")(\\s*)(=)(\\s*)(function)(\\s*)(\\()", - next: "function_arguments" - }, { - token : [ - "entity.name.function", "text", "keyword.operator", "text", "storage.type", - "text", "paren.lparen" - ], - regex : "(" + identifierRe +")(\\s*)(=)(\\s*)(function)(\\s*)(\\()", - next: "function_arguments" - }, { - token : [ - "storage.type", "punctuation.operator", "entity.name.function", "text", - "keyword.operator", "text", - "storage.type", "text", "entity.name.function", "text", "paren.lparen" - ], - regex : "(" + identifierRe + ")(\\.)(" + identifierRe +")(\\s*)(=)(\\s*)(function)(\\s+)(\\w+)(\\s*)(\\()", - next: "function_arguments" - }, { - token : [ - "storage.type", "text", "entity.name.function", "text", "paren.lparen" - ], - regex : "(function)(\\s+)(" + identifierRe + ")(\\s*)(\\()", - next: "function_arguments" - }, { - token : [ - "entity.name.function", "text", "punctuation.operator", - "text", "storage.type", "text", "paren.lparen" - ], - regex : "(" + identifierRe + ")(\\s*)(:)(\\s*)(function)(\\s*)(\\()", - next: "function_arguments" - }, { - token : [ - "text", "text", "storage.type", "text", "paren.lparen" - ], - regex : "(:)(\\s*)(function)(\\s*)(\\()", - next: "function_arguments" - }, { - token : "keyword", - regex : "(?:" + kwBeforeRe + ")\\b", - next : "start" - }, { - token : ["punctuation.operator", "support.function"], - regex : /(\.)(s(?:h(?:ift|ow(?:Mod(?:elessDialog|alDialog)|Help))|croll(?:X|By(?:Pages|Lines)?|Y|To)?|t(?:op|rike)|i(?:n|zeToContent|debar|gnText)|ort|u(?:p|b(?:str(?:ing)?)?)|pli(?:ce|t)|e(?:nd|t(?:Re(?:sizable|questHeader)|M(?:i(?:nutes|lliseconds)|onth)|Seconds|Ho(?:tKeys|urs)|Year|Cursor|Time(?:out)?|Interval|ZOptions|Date|UTC(?:M(?:i(?:nutes|lliseconds)|onth)|Seconds|Hours|Date|FullYear)|FullYear|Active)|arch)|qrt|lice|avePreferences|mall)|h(?:ome|andleEvent)|navigate|c(?:har(?:CodeAt|At)|o(?:s|n(?:cat|textual|firm)|mpile)|eil|lear(?:Timeout|Interval)?|a(?:ptureEvents|ll)|reate(?:StyleSheet|Popup|EventObject))|t(?:o(?:GMTString|S(?:tring|ource)|U(?:TCString|pperCase)|Lo(?:caleString|werCase))|est|a(?:n|int(?:Enabled)?))|i(?:s(?:NaN|Finite)|ndexOf|talics)|d(?:isableExternalCapture|ump|etachEvent)|u(?:n(?:shift|taint|escape|watch)|pdateCommands)|j(?:oin|avaEnabled)|p(?:o(?:p|w)|ush|lugins.refresh|a(?:ddings|rse(?:Int|Float)?)|r(?:int|ompt|eference))|e(?:scape|nableExternalCapture|val|lementFromPoint|x(?:p|ec(?:Script|Command)?))|valueOf|UTC|queryCommand(?:State|Indeterm|Enabled|Value)|f(?:i(?:nd|le(?:ModifiedDate|Size|CreatedDate|UpdatedDate)|xed)|o(?:nt(?:size|color)|rward)|loor|romCharCode)|watch|l(?:ink|o(?:ad|g)|astIndexOf)|a(?:sin|nchor|cos|t(?:tachEvent|ob|an(?:2)?)|pply|lert|b(?:s|ort))|r(?:ou(?:nd|teEvents)|e(?:size(?:By|To)|calc|turnValue|place|verse|l(?:oad|ease(?:Capture|Events)))|andom)|g(?:o|et(?:ResponseHeader|M(?:i(?:nutes|lliseconds)|onth)|Se(?:conds|lection)|Hours|Year|Time(?:zoneOffset)?|Da(?:y|te)|UTC(?:M(?:i(?:nutes|lliseconds)|onth)|Seconds|Hours|Da(?:y|te)|FullYear)|FullYear|A(?:ttention|llResponseHeaders)))|m(?:in|ove(?:B(?:y|elow)|To(?:Absolute)?|Above)|ergeAttributes|a(?:tch|rgins|x))|b(?:toa|ig|o(?:ld|rderWidths)|link|ack))\b(?=\()/ - }, { - token : ["punctuation.operator", "support.function.dom"], - regex : /(\.)(s(?:ub(?:stringData|mit)|plitText|e(?:t(?:NamedItem|Attribute(?:Node)?)|lect))|has(?:ChildNodes|Feature)|namedItem|c(?:l(?:ick|o(?:se|neNode))|reate(?:C(?:omment|DATASection|aption)|T(?:Head|extNode|Foot)|DocumentFragment|ProcessingInstruction|E(?:ntityReference|lement)|Attribute))|tabIndex|i(?:nsert(?:Row|Before|Cell|Data)|tem)|open|delete(?:Row|C(?:ell|aption)|T(?:Head|Foot)|Data)|focus|write(?:ln)?|a(?:dd|ppend(?:Child|Data))|re(?:set|place(?:Child|Data)|move(?:NamedItem|Child|Attribute(?:Node)?)?)|get(?:NamedItem|Element(?:sBy(?:Name|TagName)|ById)|Attribute(?:Node)?)|blur)\b(?=\()/ - }, { - token : ["punctuation.operator", "support.constant"], - regex : /(\.)(s(?:ystemLanguage|cr(?:ipts|ollbars|een(?:X|Y|Top|Left))|t(?:yle(?:Sheets)?|atus(?:Text|bar)?)|ibling(?:Below|Above)|ource|uffixes|e(?:curity(?:Policy)?|l(?:ection|f)))|h(?:istory|ost(?:name)?|as(?:h|Focus))|y|X(?:MLDocument|SLDocument)|n(?:ext|ame(?:space(?:s|URI)|Prop))|M(?:IN_VALUE|AX_VALUE)|c(?:haracterSet|o(?:n(?:structor|trollers)|okieEnabled|lorDepth|mp(?:onents|lete))|urrent|puClass|l(?:i(?:p(?:boardData)?|entInformation)|osed|asses)|alle(?:e|r)|rypto)|t(?:o(?:olbar|p)|ext(?:Transform|Indent|Decoration|Align)|ags)|SQRT(?:1_2|2)|i(?:n(?:ner(?:Height|Width)|put)|ds|gnoreCase)|zIndex|o(?:scpu|n(?:readystatechange|Line)|uter(?:Height|Width)|p(?:sProfile|ener)|ffscreenBuffering)|NEGATIVE_INFINITY|d(?:i(?:splay|alog(?:Height|Top|Width|Left|Arguments)|rectories)|e(?:scription|fault(?:Status|Ch(?:ecked|arset)|View)))|u(?:ser(?:Profile|Language|Agent)|n(?:iqueID|defined)|pdateInterval)|_content|p(?:ixelDepth|ort|ersonalbar|kcs11|l(?:ugins|atform)|a(?:thname|dding(?:Right|Bottom|Top|Left)|rent(?:Window|Layer)?|ge(?:X(?:Offset)?|Y(?:Offset)?))|r(?:o(?:to(?:col|type)|duct(?:Sub)?|mpter)|e(?:vious|fix)))|e(?:n(?:coding|abledPlugin)|x(?:ternal|pando)|mbeds)|v(?:isibility|endor(?:Sub)?|Linkcolor)|URLUnencoded|P(?:I|OSITIVE_INFINITY)|f(?:ilename|o(?:nt(?:Size|Family|Weight)|rmName)|rame(?:s|Element)|gColor)|E|whiteSpace|l(?:i(?:stStyleType|n(?:eHeight|kColor))|o(?:ca(?:tion(?:bar)?|lName)|wsrc)|e(?:ngth|ft(?:Context)?)|a(?:st(?:M(?:odified|atch)|Index|Paren)|yer(?:s|X)|nguage))|a(?:pp(?:MinorVersion|Name|Co(?:deName|re)|Version)|vail(?:Height|Top|Width|Left)|ll|r(?:ity|guments)|Linkcolor|bove)|r(?:ight(?:Context)?|e(?:sponse(?:XML|Text)|adyState))|global|x|m(?:imeTypes|ultiline|enubar|argin(?:Right|Bottom|Top|Left))|L(?:N(?:10|2)|OG(?:10E|2E))|b(?:o(?:ttom|rder(?:Width|RightWidth|BottomWidth|Style|Color|TopWidth|LeftWidth))|ufferDepth|elow|ackground(?:Color|Image)))\b/ - }, { - token : ["storage.type", "punctuation.operator", "support.function.firebug"], - regex : /(console)(\.)(warn|info|log|error|time|timeEnd|assert)\b/ - }, { - token : keywordMapper, - regex : identifierRe - }, { - token : "keyword.operator", - regex : /--|\+\+|[!$%&*+\-~]|===|==|=|!=|!==|<=|>=|<<=|>>=|>>>=|<>|<|>|!|&&|\|\||\?\:|\*=|%=|\+=|\-=|&=|\^=/, - next : "start" - }, { - token : "punctuation.operator", - regex : /\?|\:|\,|\;|\./, - next : "start" - }, { - token : "paren.lparen", - regex : /[\[({]/, - next : "start" - }, { - token : "paren.rparen", - regex : /[\])}]/ - }, { - token : "keyword.operator", - regex : /\/=?/, - next : "start" - }, { - token: "comment", - regex: /^#!.*$/ - } - ], - "start": [ - DocCommentHighlightRules.getStartRule("doc-start"), - { - token : "comment", // multi line comment - regex : "\\/\\*", - next : "comment_regex_allowed" - }, { - token : "comment", - regex : "\\/\\/", - next : "line_comment_regex_allowed" - }, { - token: "string.regexp", - regex: "\\/", - next: "regex" - }, { - token : "text", - regex : "\\s+|^$", - next : "start" - }, { - token: "empty", - regex: "", - next: "no_regex" - } - ], - "regex": [ - { - token: "regexp.keyword.operator", - regex: "\\\\(?:u[\\da-fA-F]{4}|x[\\da-fA-F]{2}|.)" - }, { - token: "string.regexp", - regex: "/[sxngimy]*", - next: "no_regex" - }, { - token : "invalid", - regex: /\{\d+\b,?\d*\}[+*]|[+*$^?][+*]|[$^][?]|\?{3,}/ - }, { - token : "constant.language.escape", - regex: /\(\?[:=!]|\)|\{\d+\b,?\d*\}|[+*]\?|[()$^+*?.]/ - }, { - token : "constant.language.delimiter", - regex: /\|/ - }, { - token: "constant.language.escape", - regex: /\[\^?/, - next: "regex_character_class" - }, { - token: "empty", - regex: "$", - next: "no_regex" - }, { - defaultToken: "string.regexp" - } - ], - "regex_character_class": [ - { - token: "regexp.keyword.operator", - regex: "\\\\(?:u[\\da-fA-F]{4}|x[\\da-fA-F]{2}|.)" - }, { - token: "constant.language.escape", - regex: "]", - next: "regex" - }, { - token: "constant.language.escape", - regex: "-" - }, { - token: "empty", - regex: "$", - next: "no_regex" - }, { - defaultToken: "string.regexp.charachterclass" - } - ], - "function_arguments": [ - { - token: "variable.parameter", - regex: identifierRe - }, { - token: "punctuation.operator", - regex: "[, ]+" - }, { - token: "punctuation.operator", - regex: "$" - }, { - token: "empty", - regex: "", - next: "no_regex" - } - ], - "comment_regex_allowed" : [ - {token : "comment", regex : "\\*\\/", next : "start"}, - {defaultToken : "comment"} - ], - "comment" : [ - {token : "comment", regex : "\\*\\/", next : "no_regex"}, - {defaultToken : "comment"} - ], - "line_comment_regex_allowed" : [ - {token : "comment", regex : "$|^", next : "start"}, - {defaultToken : "comment"} - ], - "line_comment" : [ - {token : "comment", regex : "$|^", next : "no_regex"}, - {defaultToken : "comment"} - ], - "qqstring" : [ - { - token : "constant.language.escape", - regex : escapedRe - }, { - token : "string", - regex : "\\\\$", - next : "qqstring" - }, { - token : "string", - regex : '"|$', - next : "no_regex" - }, { - defaultToken: "string" - } - ], - "qstring" : [ - { - token : "constant.language.escape", - regex : escapedRe - }, { - token : "string", - regex : "\\\\$", - next : "qstring" - }, { - token : "string", - regex : "'|$", - next : "no_regex" - }, { - defaultToken: "string" - } - ] - }; - - this.embedRules(DocCommentHighlightRules, "doc-", - [ DocCommentHighlightRules.getEndRule("no_regex") ]); -}; - -oop.inherits(JavaScriptHighlightRules, TextHighlightRules); - -exports.JavaScriptHighlightRules = JavaScriptHighlightRules; -}); - -ace.define('ace/mode/doc_comment_highlight_rules', ['require', 'exports', 'module' , 'ace/lib/oop', 'ace/mode/text_highlight_rules'], function(require, exports, module) { - - -var oop = require("../lib/oop"); -var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; - -var DocCommentHighlightRules = function() { - - this.$rules = { - "start" : [ { - token : "comment.doc.tag", - regex : "@[\\w\\d_]+" // TODO: fix email addresses - }, { - token : "comment.doc.tag", - regex : "\\bTODO\\b" - }, { - defaultToken : "comment.doc" - }] - }; -}; - -oop.inherits(DocCommentHighlightRules, TextHighlightRules); - -DocCommentHighlightRules.getStartRule = function(start) { - return { - token : "comment.doc", // doc comment - regex : "\\/\\*(?=\\*)", - next : start - }; -}; - -DocCommentHighlightRules.getEndRule = function (start) { - return { - token : "comment.doc", // closing comment - regex : "\\*\\/", - next : start - }; -}; - - -exports.DocCommentHighlightRules = DocCommentHighlightRules; - -}); - -ace.define('ace/mode/matching_brace_outdent', ['require', 'exports', 'module' , 'ace/range'], function(require, exports, module) { - - -var Range = require("../range").Range; - -var MatchingBraceOutdent = function() {}; - -(function() { - - this.checkOutdent = function(line, input) { - if (! /^\s+$/.test(line)) - return false; - - return /^\s*\}/.test(input); - }; - - this.autoOutdent = function(doc, row) { - var line = doc.getLine(row); - var match = line.match(/^(\s*\})/); - - if (!match) return 0; - - var column = match[1].length; - var openBracePos = doc.findMatchingBracket({row: row, column: column}); - - if (!openBracePos || openBracePos.row == row) return 0; - - var indent = this.$getIndent(doc.getLine(openBracePos.row)); - doc.replace(new Range(row, 0, row, column-1), indent); - }; - - this.$getIndent = function(line) { - return line.match(/^\s*/)[0]; - }; - -}).call(MatchingBraceOutdent.prototype); - -exports.MatchingBraceOutdent = MatchingBraceOutdent; -}); - -ace.define('ace/mode/behaviour/cstyle', ['require', 'exports', 'module' , 'ace/lib/oop', 'ace/mode/behaviour', 'ace/token_iterator', 'ace/lib/lang'], function(require, exports, module) { - - -var oop = require("../../lib/oop"); -var Behaviour = require("../behaviour").Behaviour; -var TokenIterator = require("../../token_iterator").TokenIterator; -var lang = require("../../lib/lang"); - -var SAFE_INSERT_IN_TOKENS = - ["text", "paren.rparen", "punctuation.operator"]; -var SAFE_INSERT_BEFORE_TOKENS = - ["text", "paren.rparen", "punctuation.operator", "comment"]; - - -var autoInsertedBrackets = 0; -var autoInsertedRow = -1; -var autoInsertedLineEnd = ""; -var maybeInsertedBrackets = 0; -var maybeInsertedRow = -1; -var maybeInsertedLineStart = ""; -var maybeInsertedLineEnd = ""; - -var CstyleBehaviour = function () { - - CstyleBehaviour.isSaneInsertion = function(editor, session) { - var cursor = editor.getCursorPosition(); - var iterator = new TokenIterator(session, cursor.row, cursor.column); - if (!this.$matchTokenType(iterator.getCurrentToken() || "text", SAFE_INSERT_IN_TOKENS)) { - var iterator2 = new TokenIterator(session, cursor.row, cursor.column + 1); - if (!this.$matchTokenType(iterator2.getCurrentToken() || "text", SAFE_INSERT_IN_TOKENS)) - return false; - } - iterator.stepForward(); - return iterator.getCurrentTokenRow() !== cursor.row || - this.$matchTokenType(iterator.getCurrentToken() || "text", SAFE_INSERT_BEFORE_TOKENS); - }; - - CstyleBehaviour.$matchTokenType = function(token, types) { - return types.indexOf(token.type || token) > -1; - }; - - CstyleBehaviour.recordAutoInsert = function(editor, session, bracket) { - var cursor = editor.getCursorPosition(); - var line = session.doc.getLine(cursor.row); - if (!this.isAutoInsertedClosing(cursor, line, autoInsertedLineEnd[0])) - autoInsertedBrackets = 0; - autoInsertedRow = cursor.row; - autoInsertedLineEnd = bracket + line.substr(cursor.column); - autoInsertedBrackets++; - }; - - CstyleBehaviour.recordMaybeInsert = function(editor, session, bracket) { - var cursor = editor.getCursorPosition(); - var line = session.doc.getLine(cursor.row); - if (!this.isMaybeInsertedClosing(cursor, line)) - maybeInsertedBrackets = 0; - maybeInsertedRow = cursor.row; - maybeInsertedLineStart = line.substr(0, cursor.column) + bracket; - maybeInsertedLineEnd = line.substr(cursor.column); - maybeInsertedBrackets++; - }; - - CstyleBehaviour.isAutoInsertedClosing = function(cursor, line, bracket) { - return autoInsertedBrackets > 0 && - cursor.row === autoInsertedRow && - bracket === autoInsertedLineEnd[0] && - line.substr(cursor.column) === autoInsertedLineEnd; - }; - - CstyleBehaviour.isMaybeInsertedClosing = function(cursor, line) { - return maybeInsertedBrackets > 0 && - cursor.row === maybeInsertedRow && - line.substr(cursor.column) === maybeInsertedLineEnd && - line.substr(0, cursor.column) == maybeInsertedLineStart; - }; - - CstyleBehaviour.popAutoInsertedClosing = function() { - autoInsertedLineEnd = autoInsertedLineEnd.substr(1); - autoInsertedBrackets--; - }; - - CstyleBehaviour.clearMaybeInsertedClosing = function() { - maybeInsertedBrackets = 0; - maybeInsertedRow = -1; - }; - - this.add("braces", "insertion", function (state, action, editor, session, text) { - var cursor = editor.getCursorPosition(); - var line = session.doc.getLine(cursor.row); - if (text == '{') { - var selection = editor.getSelectionRange(); - var selected = session.doc.getTextRange(selection); - if (selected !== "" && selected !== "{" && editor.getWrapBehavioursEnabled()) { - return { - text: '{' + selected + '}', - selection: false - }; - } else if (CstyleBehaviour.isSaneInsertion(editor, session)) { - if (/[\]\}\)]/.test(line[cursor.column]) || editor.inMultiSelectMode) { - CstyleBehaviour.recordAutoInsert(editor, session, "}"); - return { - text: '{}', - selection: [1, 1] - }; - } else { - CstyleBehaviour.recordMaybeInsert(editor, session, "{"); - return { - text: '{', - selection: [1, 1] - }; - } - } - } else if (text == '}') { - var rightChar = line.substring(cursor.column, cursor.column + 1); - if (rightChar == '}') { - var matching = session.$findOpeningBracket('}', {column: cursor.column + 1, row: cursor.row}); - if (matching !== null && CstyleBehaviour.isAutoInsertedClosing(cursor, line, text)) { - CstyleBehaviour.popAutoInsertedClosing(); - return { - text: '', - selection: [1, 1] - }; - } - } - } else if (text == "\n" || text == "\r\n") { - var closing = ""; - if (CstyleBehaviour.isMaybeInsertedClosing(cursor, line)) { - closing = lang.stringRepeat("}", maybeInsertedBrackets); - CstyleBehaviour.clearMaybeInsertedClosing(); - } - var rightChar = line.substring(cursor.column, cursor.column + 1); - if (rightChar === '}') { - var openBracePos = session.findMatchingBracket({row: cursor.row, column: cursor.column+1}, '}'); - if (!openBracePos) - return null; - var next_indent = this.$getIndent(session.getLine(openBracePos.row)); - } else if (closing) { - var next_indent = this.$getIndent(line); - } else { - return; - } - var indent = next_indent + session.getTabString(); - - return { - text: '\n' + indent + '\n' + next_indent + closing, - selection: [1, indent.length, 1, indent.length] - }; - } else { - CstyleBehaviour.clearMaybeInsertedClosing(); - } - }); - - this.add("braces", "deletion", function (state, action, editor, session, range) { - var selected = session.doc.getTextRange(range); - if (!range.isMultiLine() && selected == '{') { - var line = session.doc.getLine(range.start.row); - var rightChar = line.substring(range.end.column, range.end.column + 1); - if (rightChar == '}') { - range.end.column++; - return range; - } else { - maybeInsertedBrackets--; - } - } - }); - - this.add("parens", "insertion", function (state, action, editor, session, text) { - if (text == '(') { - var selection = editor.getSelectionRange(); - var selected = session.doc.getTextRange(selection); - if (selected !== "" && editor.getWrapBehavioursEnabled()) { - return { - text: '(' + selected + ')', - selection: false - }; - } else if (CstyleBehaviour.isSaneInsertion(editor, session)) { - CstyleBehaviour.recordAutoInsert(editor, session, ")"); - return { - text: '()', - selection: [1, 1] - }; - } - } else if (text == ')') { - var cursor = editor.getCursorPosition(); - var line = session.doc.getLine(cursor.row); - var rightChar = line.substring(cursor.column, cursor.column + 1); - if (rightChar == ')') { - var matching = session.$findOpeningBracket(')', {column: cursor.column + 1, row: cursor.row}); - if (matching !== null && CstyleBehaviour.isAutoInsertedClosing(cursor, line, text)) { - CstyleBehaviour.popAutoInsertedClosing(); - return { - text: '', - selection: [1, 1] - }; - } - } - } - }); - - this.add("parens", "deletion", function (state, action, editor, session, range) { - var selected = session.doc.getTextRange(range); - if (!range.isMultiLine() && selected == '(') { - var line = session.doc.getLine(range.start.row); - var rightChar = line.substring(range.start.column + 1, range.start.column + 2); - if (rightChar == ')') { - range.end.column++; - return range; - } - } - }); - - this.add("brackets", "insertion", function (state, action, editor, session, text) { - if (text == '[') { - var selection = editor.getSelectionRange(); - var selected = session.doc.getTextRange(selection); - if (selected !== "" && editor.getWrapBehavioursEnabled()) { - return { - text: '[' + selected + ']', - selection: false - }; - } else if (CstyleBehaviour.isSaneInsertion(editor, session)) { - CstyleBehaviour.recordAutoInsert(editor, session, "]"); - return { - text: '[]', - selection: [1, 1] - }; - } - } else if (text == ']') { - var cursor = editor.getCursorPosition(); - var line = session.doc.getLine(cursor.row); - var rightChar = line.substring(cursor.column, cursor.column + 1); - if (rightChar == ']') { - var matching = session.$findOpeningBracket(']', {column: cursor.column + 1, row: cursor.row}); - if (matching !== null && CstyleBehaviour.isAutoInsertedClosing(cursor, line, text)) { - CstyleBehaviour.popAutoInsertedClosing(); - return { - text: '', - selection: [1, 1] - }; - } - } - } - }); - - this.add("brackets", "deletion", function (state, action, editor, session, range) { - var selected = session.doc.getTextRange(range); - if (!range.isMultiLine() && selected == '[') { - var line = session.doc.getLine(range.start.row); - var rightChar = line.substring(range.start.column + 1, range.start.column + 2); - if (rightChar == ']') { - range.end.column++; - return range; - } - } - }); - - this.add("string_dquotes", "insertion", function (state, action, editor, session, text) { - if (text == '"' || text == "'") { - var quote = text; - var selection = editor.getSelectionRange(); - var selected = session.doc.getTextRange(selection); - if (selected !== "" && selected !== "'" && selected != '"' && editor.getWrapBehavioursEnabled()) { - return { - text: quote + selected + quote, - selection: false - }; - } else { - var cursor = editor.getCursorPosition(); - var line = session.doc.getLine(cursor.row); - var leftChar = line.substring(cursor.column-1, cursor.column); - if (leftChar == '\\') { - return null; - } - var tokens = session.getTokens(selection.start.row); - var col = 0, token; - var quotepos = -1; // Track whether we're inside an open quote. - - for (var x = 0; x < tokens.length; x++) { - token = tokens[x]; - if (token.type == "string") { - quotepos = -1; - } else if (quotepos < 0) { - quotepos = token.value.indexOf(quote); - } - if ((token.value.length + col) > selection.start.column) { - break; - } - col += tokens[x].value.length; - } - if (!token || (quotepos < 0 && token.type !== "comment" && (token.type !== "string" || ((selection.start.column !== token.value.length+col-1) && token.value.lastIndexOf(quote) === token.value.length-1)))) { - if (!CstyleBehaviour.isSaneInsertion(editor, session)) - return; - return { - text: quote + quote, - selection: [1,1] - }; - } else if (token && token.type === "string") { - var rightChar = line.substring(cursor.column, cursor.column + 1); - if (rightChar == quote) { - return { - text: '', - selection: [1, 1] - }; - } - } - } - } - }); - - this.add("string_dquotes", "deletion", function (state, action, editor, session, range) { - var selected = session.doc.getTextRange(range); - if (!range.isMultiLine() && (selected == '"' || selected == "'")) { - var line = session.doc.getLine(range.start.row); - var rightChar = line.substring(range.start.column + 1, range.start.column + 2); - if (rightChar == selected) { - range.end.column++; - return range; - } - } - }); - -}; - -oop.inherits(CstyleBehaviour, Behaviour); - -exports.CstyleBehaviour = CstyleBehaviour; -}); - -ace.define('ace/mode/folding/cstyle', ['require', 'exports', 'module' , 'ace/lib/oop', 'ace/range', 'ace/mode/folding/fold_mode'], function(require, exports, module) { - - -var oop = require("../../lib/oop"); -var Range = require("../../range").Range; -var BaseFoldMode = require("./fold_mode").FoldMode; - -var FoldMode = exports.FoldMode = function(commentRegex) { - if (commentRegex) { - this.foldingStartMarker = new RegExp( - this.foldingStartMarker.source.replace(/\|[^|]*?$/, "|" + commentRegex.start) - ); - this.foldingStopMarker = new RegExp( - this.foldingStopMarker.source.replace(/\|[^|]*?$/, "|" + commentRegex.end) - ); - } -}; -oop.inherits(FoldMode, BaseFoldMode); - -(function() { - - this.foldingStartMarker = /(\{|\[)[^\}\]]*$|^\s*(\/\*)/; - this.foldingStopMarker = /^[^\[\{]*(\}|\])|^[\s\*]*(\*\/)/; - - this.getFoldWidgetRange = function(session, foldStyle, row, forceMultiline) { - var line = session.getLine(row); - var match = line.match(this.foldingStartMarker); - if (match) { - var i = match.index; - - if (match[1]) - return this.openingBracketBlock(session, match[1], row, i); - - var range = session.getCommentFoldRange(row, i + match[0].length, 1); - - if (range && !range.isMultiLine()) { - if (forceMultiline) { - range = this.getSectionRange(session, row); - } else if (foldStyle != "all") - range = null; - } - - return range; - } - - if (foldStyle === "markbegin") - return; - - var match = line.match(this.foldingStopMarker); - if (match) { - var i = match.index + match[0].length; - - if (match[1]) - return this.closingBracketBlock(session, match[1], row, i); - - return session.getCommentFoldRange(row, i, -1); - } - }; - - this.getSectionRange = function(session, row) { - var line = session.getLine(row); - var startIndent = line.search(/\S/); - var startRow = row; - var startColumn = line.length; - row = row + 1; - var endRow = row; - var maxRow = session.getLength(); - while (++row < maxRow) { - line = session.getLine(row); - var indent = line.search(/\S/); - if (indent === -1) - continue; - if (startIndent > indent) - break; - var subRange = this.getFoldWidgetRange(session, "all", row); - - if (subRange) { - if (subRange.start.row <= startRow) { - break; - } else if (subRange.isMultiLine()) { - row = subRange.end.row; - } else if (startIndent == indent) { - break; - } - } - endRow = row; - } - - return new Range(startRow, startColumn, endRow, session.getLine(endRow).length); - }; - -}).call(FoldMode.prototype); - -}); - -ace.define('ace/mode/css', ['require', 'exports', 'module' , 'ace/lib/oop', 'ace/mode/text', 'ace/tokenizer', 'ace/mode/css_highlight_rules', 'ace/mode/matching_brace_outdent', 'ace/worker/worker_client', 'ace/mode/behaviour/css', 'ace/mode/folding/cstyle'], function(require, exports, module) { - - -var oop = require("../lib/oop"); -var TextMode = require("./text").Mode; -var Tokenizer = require("../tokenizer").Tokenizer; -var CssHighlightRules = require("./css_highlight_rules").CssHighlightRules; -var MatchingBraceOutdent = require("./matching_brace_outdent").MatchingBraceOutdent; -var WorkerClient = require("../worker/worker_client").WorkerClient; -var CssBehaviour = require("./behaviour/css").CssBehaviour; -var CStyleFoldMode = require("./folding/cstyle").FoldMode; - -var Mode = function() { - this.HighlightRules = CssHighlightRules; - this.$outdent = new MatchingBraceOutdent(); - this.$behaviour = new CssBehaviour(); - this.foldingRules = new CStyleFoldMode(); -}; -oop.inherits(Mode, TextMode); - -(function() { - - this.foldingRules = "cStyle"; - this.blockComment = {start: "/*", end: "*/"}; - - this.getNextLineIndent = function(state, line, tab) { - var indent = this.$getIndent(line); - var tokens = this.getTokenizer().getLineTokens(line, state).tokens; - if (tokens.length && tokens[tokens.length-1].type == "comment") { - return indent; - } - - var match = line.match(/^.*\{\s*$/); - if (match) { - indent += tab; - } - - return indent; - }; - - this.checkOutdent = function(state, line, input) { - return this.$outdent.checkOutdent(line, input); - }; - - this.autoOutdent = function(state, doc, row) { - this.$outdent.autoOutdent(doc, row); - }; - - this.createWorker = function(session) { - var worker = new WorkerClient(["ace"], "ace/mode/css_worker", "Worker"); - worker.attachToDocument(session.getDocument()); - - worker.on("csslint", function(e) { - session.setAnnotations(e.data); - }); - - worker.on("terminate", function() { - session.clearAnnotations(); - }); - - return worker; - }; - - this.$id = "ace/mode/css"; -}).call(Mode.prototype); - -exports.Mode = Mode; - -}); - -ace.define('ace/mode/css_highlight_rules', ['require', 'exports', 'module' , 'ace/lib/oop', 'ace/lib/lang', 'ace/mode/text_highlight_rules'], function(require, exports, module) { - - -var oop = require("../lib/oop"); -var lang = require("../lib/lang"); -var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; -var supportType = exports.supportType = "animation-fill-mode|alignment-adjust|alignment-baseline|animation-delay|animation-direction|animation-duration|animation-iteration-count|animation-name|animation-play-state|animation-timing-function|animation|appearance|azimuth|backface-visibility|background-attachment|background-break|background-clip|background-color|background-image|background-origin|background-position|background-repeat|background-size|background|baseline-shift|binding|bleed|bookmark-label|bookmark-level|bookmark-state|bookmark-target|border-bottom|border-bottom-color|border-bottom-left-radius|border-bottom-right-radius|border-bottom-style|border-bottom-width|border-collapse|border-color|border-image|border-image-outset|border-image-repeat|border-image-slice|border-image-source|border-image-width|border-left|border-left-color|border-left-style|border-left-width|border-radius|border-right|border-right-color|border-right-style|border-right-width|border-spacing|border-style|border-top|border-top-color|border-top-left-radius|border-top-right-radius|border-top-style|border-top-width|border-width|border|bottom|box-align|box-decoration-break|box-direction|box-flex-group|box-flex|box-lines|box-ordinal-group|box-orient|box-pack|box-shadow|box-sizing|break-after|break-before|break-inside|caption-side|clear|clip|color-profile|color|column-count|column-fill|column-gap|column-rule|column-rule-color|column-rule-style|column-rule-width|column-span|column-width|columns|content|counter-increment|counter-reset|crop|cue-after|cue-before|cue|cursor|direction|display|dominant-baseline|drop-initial-after-adjust|drop-initial-after-align|drop-initial-before-adjust|drop-initial-before-align|drop-initial-size|drop-initial-value|elevation|empty-cells|fit|fit-position|float-offset|float|font-family|font-size|font-size-adjust|font-stretch|font-style|font-variant|font-weight|font|grid-columns|grid-rows|hanging-punctuation|height|hyphenate-after|hyphenate-before|hyphenate-character|hyphenate-lines|hyphenate-resource|hyphens|icon|image-orientation|image-rendering|image-resolution|inline-box-align|left|letter-spacing|line-height|line-stacking-ruby|line-stacking-shift|line-stacking-strategy|line-stacking|list-style-image|list-style-position|list-style-type|list-style|margin-bottom|margin-left|margin-right|margin-top|margin|mark-after|mark-before|mark|marks|marquee-direction|marquee-play-count|marquee-speed|marquee-style|max-height|max-width|min-height|min-width|move-to|nav-down|nav-index|nav-left|nav-right|nav-up|opacity|orphans|outline-color|outline-offset|outline-style|outline-width|outline|overflow-style|overflow-x|overflow-y|overflow|padding-bottom|padding-left|padding-right|padding-top|padding|page-break-after|page-break-before|page-break-inside|page-policy|page|pause-after|pause-before|pause|perspective-origin|perspective|phonemes|pitch-range|pitch|play-during|pointer-events|position|presentation-level|punctuation-trim|quotes|rendering-intent|resize|rest-after|rest-before|rest|richness|right|rotation-point|rotation|ruby-align|ruby-overhang|ruby-position|ruby-span|size|speak-header|speak-numeral|speak-punctuation|speak|speech-rate|stress|string-set|table-layout|target-name|target-new|target-position|target|text-align-last|text-align|text-decoration|text-emphasis|text-height|text-indent|text-justify|text-outline|text-shadow|text-transform|text-wrap|top|transform-origin|transform-style|transform|transition-delay|transition-duration|transition-property|transition-timing-function|transition|unicode-bidi|vertical-align|visibility|voice-balance|voice-duration|voice-family|voice-pitch-range|voice-pitch|voice-rate|voice-stress|voice-volume|volume|white-space-collapse|white-space|widows|width|word-break|word-spacing|word-wrap|z-index"; -var supportFunction = exports.supportFunction = "rgb|rgba|url|attr|counter|counters"; -var supportConstant = exports.supportConstant = "absolute|after-edge|after|all-scroll|all|alphabetic|always|antialiased|armenian|auto|avoid-column|avoid-page|avoid|balance|baseline|before-edge|before|below|bidi-override|block-line-height|block|bold|bolder|border-box|both|bottom|box|break-all|break-word|capitalize|caps-height|caption|center|central|char|circle|cjk-ideographic|clone|close-quote|col-resize|collapse|column|consider-shifts|contain|content-box|cover|crosshair|cubic-bezier|dashed|decimal-leading-zero|decimal|default|disabled|disc|disregard-shifts|distribute-all-lines|distribute-letter|distribute-space|distribute|dotted|double|e-resize|ease-in|ease-in-out|ease-out|ease|ellipsis|end|exclude-ruby|fill|fixed|georgian|glyphs|grid-height|groove|hand|hanging|hebrew|help|hidden|hiragana-iroha|hiragana|horizontal|icon|ideograph-alpha|ideograph-numeric|ideograph-parenthesis|ideograph-space|ideographic|inactive|include-ruby|inherit|initial|inline-block|inline-box|inline-line-height|inline-table|inline|inset|inside|inter-ideograph|inter-word|invert|italic|justify|katakana-iroha|katakana|keep-all|last|left|lighter|line-edge|line-through|line|linear|list-item|local|loose|lower-alpha|lower-greek|lower-latin|lower-roman|lowercase|lr-tb|ltr|mathematical|max-height|max-size|medium|menu|message-box|middle|move|n-resize|ne-resize|newspaper|no-change|no-close-quote|no-drop|no-open-quote|no-repeat|none|normal|not-allowed|nowrap|nw-resize|oblique|open-quote|outset|outside|overline|padding-box|page|pointer|pre-line|pre-wrap|pre|preserve-3d|progress|relative|repeat-x|repeat-y|repeat|replaced|reset-size|ridge|right|round|row-resize|rtl|s-resize|scroll|se-resize|separate|slice|small-caps|small-caption|solid|space|square|start|static|status-bar|step-end|step-start|steps|stretch|strict|sub|super|sw-resize|table-caption|table-cell|table-column-group|table-column|table-footer-group|table-header-group|table-row-group|table-row|table|tb-rl|text-after-edge|text-before-edge|text-bottom|text-size|text-top|text|thick|thin|transparent|underline|upper-alpha|upper-latin|upper-roman|uppercase|use-script|vertical-ideographic|vertical-text|visible|w-resize|wait|whitespace|z-index|zero"; -var supportConstantColor = exports.supportConstantColor = "aqua|black|blue|fuchsia|gray|green|lime|maroon|navy|olive|orange|purple|red|silver|teal|white|yellow"; -var supportConstantFonts = exports.supportConstantFonts = "arial|century|comic|courier|garamond|georgia|helvetica|impact|lucida|symbol|system|tahoma|times|trebuchet|utopia|verdana|webdings|sans-serif|serif|monospace"; - -var numRe = exports.numRe = "\\-?(?:(?:[0-9]+)|(?:[0-9]*\\.[0-9]+))"; -var pseudoElements = exports.pseudoElements = "(\\:+)\\b(after|before|first-letter|first-line|moz-selection|selection)\\b"; -var pseudoClasses = exports.pseudoClasses = "(:)\\b(active|checked|disabled|empty|enabled|first-child|first-of-type|focus|hover|indeterminate|invalid|last-child|last-of-type|link|not|nth-child|nth-last-child|nth-last-of-type|nth-of-type|only-child|only-of-type|required|root|target|valid|visited)\\b"; - -var CssHighlightRules = function() { - - var keywordMapper = this.createKeywordMapper({ - "support.function": supportFunction, - "support.constant": supportConstant, - "support.type": supportType, - "support.constant.color": supportConstantColor, - "support.constant.fonts": supportConstantFonts - }, "text", true); - - this.$rules = { - "start" : [{ - token : "comment", // multi line comment - regex : "\\/\\*", - push : "comment" - }, { - token: "paren.lparen", - regex: "\\{", - push: "ruleset" - }, { - token: "string", - regex: "@.*?{", - push: "media" - }, { - token: "keyword", - regex: "#[a-z0-9-_]+" - }, { - token: "variable", - regex: "\\.[a-z0-9-_]+" - }, { - token: "string", - regex: ":[a-z0-9-_]+" - }, { - token: "constant", - regex: "[a-z0-9-_]+" - }, { - caseInsensitive: true - }], - - "media" : [{ - token : "comment", // multi line comment - regex : "\\/\\*", - push : "comment" - }, { - token: "paren.lparen", - regex: "\\{", - push: "ruleset" - }, { - token: "string", - regex: "\\}", - next: "pop" - }, { - token: "keyword", - regex: "#[a-z0-9-_]+" - }, { - token: "variable", - regex: "\\.[a-z0-9-_]+" - }, { - token: "string", - regex: ":[a-z0-9-_]+" - }, { - token: "constant", - regex: "[a-z0-9-_]+" - }, { - caseInsensitive: true - }], - - "comment" : [{ - token : "comment", - regex : "\\*\\/", - next : "pop" - }, { - defaultToken : "comment" - }], - - "ruleset" : [ - { - token : "paren.rparen", - regex : "\\}", - next: "pop" - }, { - token : "comment", // multi line comment - regex : "\\/\\*", - push : "comment" - }, { - token : "string", // single line - regex : '["](?:(?:\\\\.)|(?:[^"\\\\]))*?["]' - }, { - token : "string", // single line - regex : "['](?:(?:\\\\.)|(?:[^'\\\\]))*?[']" - }, { - token : ["constant.numeric", "keyword"], - regex : "(" + numRe + ")(ch|cm|deg|em|ex|fr|gd|grad|Hz|in|kHz|mm|ms|pc|pt|px|rad|rem|s|turn|vh|vm|vw|%)" - }, { - token : "constant.numeric", - regex : numRe - }, { - token : "constant.numeric", // hex6 color - regex : "#[a-f0-9]{6}" - }, { - token : "constant.numeric", // hex3 color - regex : "#[a-f0-9]{3}" - }, { - token : ["punctuation", "entity.other.attribute-name.pseudo-element.css"], - regex : pseudoElements - }, { - token : ["punctuation", "entity.other.attribute-name.pseudo-class.css"], - regex : pseudoClasses - }, { - token : ["support.function", "string", "support.function"], - regex : "(url\\()(.*)(\\))" - }, { - token : keywordMapper, - regex : "\\-?[a-zA-Z_][a-zA-Z0-9_\\-]*" - }, { - caseInsensitive: true - }] - }; - - this.normalizeRules(); -}; - -oop.inherits(CssHighlightRules, TextHighlightRules); - -exports.CssHighlightRules = CssHighlightRules; - -}); - -ace.define('ace/mode/behaviour/css', ['require', 'exports', 'module' , 'ace/lib/oop', 'ace/mode/behaviour', 'ace/mode/behaviour/cstyle', 'ace/token_iterator'], function(require, exports, module) { - - -var oop = require("../../lib/oop"); -var Behaviour = require("../behaviour").Behaviour; -var CstyleBehaviour = require("./cstyle").CstyleBehaviour; -var TokenIterator = require("../../token_iterator").TokenIterator; - -var CssBehaviour = function () { - - this.inherit(CstyleBehaviour); - - this.add("colon", "insertion", function (state, action, editor, session, text) { - if (text === ':') { - var cursor = editor.getCursorPosition(); - var iterator = new TokenIterator(session, cursor.row, cursor.column); - var token = iterator.getCurrentToken(); - if (token && token.value.match(/\s+/)) { - token = iterator.stepBackward(); - } - if (token && token.type === 'support.type') { - var line = session.doc.getLine(cursor.row); - var rightChar = line.substring(cursor.column, cursor.column + 1); - if (rightChar === ':') { - return { - text: '', - selection: [1, 1] - } - } - if (!line.substring(cursor.column).match(/^\s*;/)) { - return { - text: ':;', - selection: [1, 1] - } - } - } - } - }); - - this.add("colon", "deletion", function (state, action, editor, session, range) { - var selected = session.doc.getTextRange(range); - if (!range.isMultiLine() && selected === ':') { - var cursor = editor.getCursorPosition(); - var iterator = new TokenIterator(session, cursor.row, cursor.column); - var token = iterator.getCurrentToken(); - if (token && token.value.match(/\s+/)) { - token = iterator.stepBackward(); - } - if (token && token.type === 'support.type') { - var line = session.doc.getLine(range.start.row); - var rightChar = line.substring(range.end.column, range.end.column + 1); - if (rightChar === ';') { - range.end.column ++; - return range; - } - } - } - }); - - this.add("semicolon", "insertion", function (state, action, editor, session, text) { - if (text === ';') { - var cursor = editor.getCursorPosition(); - var line = session.doc.getLine(cursor.row); - var rightChar = line.substring(cursor.column, cursor.column + 1); - if (rightChar === ';') { - return { - text: '', - selection: [1, 1] - } - } - } - }); - -} -oop.inherits(CssBehaviour, CstyleBehaviour); - -exports.CssBehaviour = CssBehaviour; -}); - -ace.define('ace/mode/twig_highlight_rules', ['require', 'exports', 'module' , 'ace/lib/oop', 'ace/lib/lang', 'ace/mode/html_highlight_rules', 'ace/mode/text_highlight_rules'], function(require, exports, module) { - - -var oop = require("../lib/oop"); -var lang = require("../lib/lang"); -var HtmlHighlightRules = require("./html_highlight_rules").HtmlHighlightRules; -var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; - -var TwigHighlightRules = function() { - HtmlHighlightRules.call(this); - - var tags = "autoescape|block|do|embed|extends|filter|flush|for|from|if|import|include|macro|sandbox|set|spaceless|use|verbatim"; - tags = tags + "|end" + tags.replace(/\|/g, "|end"); - var filters = "abs|batch|capitalize|convert_encoding|date|date_modify|default|e|escape|first|format|join|json_encode|keys|last|length|lower|merge|nl2br|number_format|raw|replace|reverse|slice|sort|split|striptags|title|trim|upper|url_encode"; - var functions = "attribute|constant|cycle|date|dump|parent|random|range|template_from_string"; - var tests = "constant|divisibleby|sameas|defined|empty|even|iterable|odd"; - var constants = "null|none|true|false"; - var operators = "b-and|b-xor|b-or|in|is|and|or|not" - - var keywordMapper = this.createKeywordMapper({ - "keyword.control.twig": tags, - "support.function.twig": [filters, functions, tests].join("|"), - "keyword.operator.twig": operators, - "constant.language.twig": constants - }, "identifier"); - for (var rule in this.$rules) { - this.$rules[rule].unshift({ - token : "variable.other.readwrite.local.twig", - regex : "\\{\\{-?", - push : "twig-start" - }, { - token : "meta.tag.twig", - regex : "\\{%-?", - push : "twig-start" - }, { - token : "comment.block.twig", - regex : "\\{#-?", - push : "twig-comment" - }); - } - this.$rules["twig-comment"] = [{ - token : "comment.block.twig", - regex : ".*-?#\\}", - next : "pop" - }]; - - this.$rules["twig-start"] = [{ - token : "variable.other.readwrite.local.twig", - regex : "-?\\}\\}", - next : "pop" - }, { - token : "meta.tag.twig", - regex : "-?%\\}", - next : "pop" - }, { - token : "string", - regex : "'", - next : "twig-qstring" - }, { - token : "string", - regex : '"', - next : "twig-qqstring" - }, { - token : "constant.numeric", // hex - regex : "0[xX][0-9a-fA-F]+\\b" - }, { - token : "constant.numeric", // float - regex : "[+-]?\\d+(?:(?:\\.\\d*)?(?:[eE][+-]?\\d+)?)?\\b" - }, { - token : "constant.language.boolean", - regex : "(?:true|false)\\b" - }, { - token : keywordMapper, - regex : "[a-zA-Z_$][a-zA-Z0-9_$]*\\b" - }, { - token : "keyword.operator.assignment", - regex : "=|~" - }, { - token : "keyword.operator.comparison", - regex : "==|!=|<|>|>=|<=|===" - }, { - token : "keyword.operator.arithmetic", - regex : "\\+|-|/|%|//|\\*|\\*\\*" - }, { - token : "keyword.operator.other", - regex : "\\.\\.|\\|" - }, { - token : "punctuation.operator", - regex : /\?|\:|\,|\;|\./ - }, { - token : "paren.lparen", - regex : /[\[\({]/ - }, { - token : "paren.rparen", - regex : /[\])}]/ - }, { - token : "text", - regex : "\\s+" - } ]; - - this.$rules["twig-qqstring"] = [{ - token : "constant.language.escape", - regex : /\\[\\"$#ntr]|#{[^"}]*}/ - }, { - token : "string", - regex : '"', - next : "twig-start" - }, { - defaultToken : "string" - } - ]; - - this.$rules["twig-qstring"] = [{ - token : "constant.language.escape", - regex : /\\[\\'ntr]}/ - }, { - token : "string", - regex : "'", - next : "twig-start" - }, { - defaultToken : "string" - } - ]; - - this.normalizeRules(); -}; - -oop.inherits(TwigHighlightRules, TextHighlightRules); - -exports.TwigHighlightRules = TwigHighlightRules; -}); - -ace.define('ace/mode/html_highlight_rules', ['require', 'exports', 'module' , 'ace/lib/oop', 'ace/lib/lang', 'ace/mode/css_highlight_rules', 'ace/mode/javascript_highlight_rules', 'ace/mode/xml_highlight_rules'], function(require, exports, module) { - - -var oop = require("../lib/oop"); -var lang = require("../lib/lang"); -var CssHighlightRules = require("./css_highlight_rules").CssHighlightRules; -var JavaScriptHighlightRules = require("./javascript_highlight_rules").JavaScriptHighlightRules; -var XmlHighlightRules = require("./xml_highlight_rules").XmlHighlightRules; - -var tagMap = lang.createMap({ - a : 'anchor', - button : 'form', - form : 'form', - img : 'image', - input : 'form', - label : 'form', - option : 'form', - script : 'script', - select : 'form', - textarea : 'form', - style : 'style', - table : 'table', - tbody : 'table', - td : 'table', - tfoot : 'table', - th : 'table', - tr : 'table' -}); - -var HtmlHighlightRules = function() { - XmlHighlightRules.call(this); - - this.addRules({ - attributes: [{ - include : "space" - }, { - token : "entity.other.attribute-name", - regex : "[-_a-zA-Z0-9:]+" - }, { - token : "keyword.operator.separator", - regex : "=", - push : [{ - include: "space" - }, { - token : "string", - regex : "[^<>='\"`\\s]+", - next : "pop" - }, { - token : "empty", - regex : "", - next : "pop" - }] - }, { - include : "string" - }], - tag: [{ - token : function(start, tag) { - var group = tagMap[tag]; - return ["meta.tag.punctuation.begin", - "meta.tag.name" + (group ? "." + group : "")]; - }, - regex : "(<)([-_a-zA-Z0-9:]+)", - next: "start_tag_stuff" - }, { - token : function(start, tag) { - var group = tagMap[tag]; - return ["meta.tag.punctuation.begin", - "meta.tag.name" + (group ? "." + group : "")]; - }, - regex : "(", next : "start"} - ], - end_tag_stuff: [ - {include : "space"}, - {token : "meta.tag.punctuation.end", regex : ">", next : "start"} - ] - }); - - this.embedTagRules(CssHighlightRules, "css-", "style"); - this.embedTagRules(JavaScriptHighlightRules, "js-", "script"); - - if (this.constructor === HtmlHighlightRules) - this.normalizeRules(); -}; - -oop.inherits(HtmlHighlightRules, XmlHighlightRules); - -exports.HtmlHighlightRules = HtmlHighlightRules; -}); - -ace.define('ace/mode/xml_highlight_rules', ['require', 'exports', 'module' , 'ace/lib/oop', 'ace/mode/xml_util', 'ace/mode/text_highlight_rules'], function(require, exports, module) { - - -var oop = require("../lib/oop"); -var xmlUtil = require("./xml_util"); -var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; - -var XmlHighlightRules = function(normalize) { - this.$rules = { - start : [ - {token : "punctuation.string.begin", regex : "<\\!\\[CDATA\\[", next : "cdata"}, - { - token : ["punctuation.instruction.begin", "keyword.instruction"], - regex : "(<\\?)(xml)(?=[\\s])", next : "xml_declaration" - }, - { - token : ["punctuation.instruction.begin", "keyword.instruction"], - regex : "(<\\?)([-_a-zA-Z0-9]+)", next : "instruction" - }, - {token : "comment", regex : "<\\!--", next : "comment"}, - { - token : ["punctuation.doctype.begin", "meta.tag.doctype"], - regex : "(<\\!)(DOCTYPE)(?=[\\s])", next : "doctype" - }, - {include : "tag"}, - {include : "reference"} - ], - - xml_declaration : [ - {include : "attributes"}, - {include : "instruction"} - ], - - instruction : [ - {token : "punctuation.instruction.end", regex : "\\?>", next : "start"} - ], - - doctype : [ - {include : "space"}, - {include : "string"}, - {token : "punctuation.doctype.end", regex : ">", next : "start"}, - {token : "xml-pe", regex : "[-_a-zA-Z0-9:]+"}, - {token : "punctuation.begin", regex : "\\[", push : "declarations"} - ], - - declarations : [{ - token : "text", - regex : "\\s+" - }, { - token: "punctuation.end", - regex: "]", - next: "pop" - }, { - token : ["punctuation.begin", "keyword"], - regex : "(<\\!)([-_a-zA-Z0-9]+)", - push : [{ - token : "text", - regex : "\\s+" - }, - { - token : "punctuation.end", - regex : ">", - next : "pop" - }, - {include : "string"}] - }], - - cdata : [ - {token : "string.end", regex : "\\]\\]>", next : "start"}, - {token : "text", regex : "\\s+"}, - {token : "text", regex : "(?:[^\\]]|\\](?!\\]>))+"} - ], - - comment : [ - {token : "comment", regex : "-->", next : "start"}, - {defaultToken : "comment"} - ], - - tag : [{ - token : ["meta.tag.punctuation.begin", "meta.tag.name"], - regex : "(<)((?:[-_a-zA-Z0-9]+:)?[-_a-zA-Z0-9]+)", - next: [ - {include : "attributes"}, - {token : "meta.tag.punctuation.end", regex : "/?>", next : "start"} - ] - }, { - token : ["meta.tag.punctuation.begin", "meta.tag.name"], - regex : "(", next : "start"} - ] - }], - - space : [ - {token : "text", regex : "\\s+"} - ], - - reference : [{ - token : "constant.language.escape", - regex : "(?:&#[0-9]+;)|(?:&#x[0-9a-fA-F]+;)|(?:&[a-zA-Z0-9_:\\.-]+;)" - }, { - token : "text", regex : "&" - }], - - string: [{ - token : "string", - regex : "'", - push : "qstring_inner" - }, { - token : "string", - regex : '"', - push : "qqstring_inner" - }], - - qstring_inner: [ - {token : "string", regex: "'", next: "pop"}, - {include : "reference"}, - {defaultToken : "string"} - ], - - qqstring_inner: [ - {token : "string", regex: '"', next: "pop"}, - {include : "reference"}, - {defaultToken : "string"} - ], - - attributes: [{ - token : "entity.other.attribute-name", - regex : "(?:[-_a-zA-Z0-9]+:)?[-_a-zA-Z0-9]+" - }, { - token : "keyword.operator.separator", - regex : "=" - }, { - include : "space" - }, { - include : "string" - }] - }; - - if (this.constructor === XmlHighlightRules) - this.normalizeRules(); -}; - - -(function() { - - this.embedTagRules = function(HighlightRules, prefix, tag){ - this.$rules.tag.unshift({ - token : ["meta.tag.punctuation.begin", "meta.tag.name." + tag], - regex : "(<)(" + tag + ")", - next: [ - {include : "space"}, - {include : "attributes"}, - {token : "meta.tag.punctuation.end", regex : "/?>", next : prefix + "start"} - ] - }); - - this.$rules[tag + "-end"] = [ - {include : "space"}, - {token : "meta.tag.punctuation.end", regex : ">", next: "start", - onMatch : function(value, currentState, stack) { - stack.splice(0); - return this.token; - }} - ] - - this.embedRules(HighlightRules, prefix, [{ - token: ["meta.tag.punctuation.begin", "meta.tag.name." + tag], - regex : "(" - }]); - }; - -}).call(TextHighlightRules.prototype); - -oop.inherits(XmlHighlightRules, TextHighlightRules); - -exports.XmlHighlightRules = XmlHighlightRules; -}); - -ace.define('ace/mode/xml_util', ['require', 'exports', 'module' ], function(require, exports, module) { - - -function string(state) { - return [{ - token : "string", - regex : '"', - next : state + "_qqstring" - }, { - token : "string", - regex : "'", - next : state + "_qstring" - }]; -} - -function multiLineString(quote, state) { - return [ - {token : "string", regex : quote, next : state}, - { - token : "constant.language.escape", - regex : "(?:&#[0-9]+;)|(?:&#x[0-9a-fA-F]+;)|(?:&[a-zA-Z0-9_:\\.-]+;)" - }, - {defaultToken : "string"} - ]; -} - -exports.tag = function(states, name, nextState, tagMap) { - states[name] = [{ - token : "text", - regex : "\\s+" - }, { - - token : !tagMap ? "meta.tag.tag-name" : function(value) { - if (tagMap[value]) - return "meta.tag.tag-name." + tagMap[value]; - else - return "meta.tag.tag-name"; - }, - regex : "[-_a-zA-Z0-9:]+", - next : name + "_embed_attribute_list" - }, { - token: "empty", - regex: "", - next : name + "_embed_attribute_list" - }]; - - states[name + "_qstring"] = multiLineString("'", name + "_embed_attribute_list"); - states[name + "_qqstring"] = multiLineString("\"", name + "_embed_attribute_list"); - - states[name + "_embed_attribute_list"] = [{ - token : "meta.tag.r", - regex : "/?>", - next : nextState - }, { - token : "keyword.operator", - regex : "=" - }, { - token : "entity.other.attribute-name", - regex : "[-_a-zA-Z0-9:]+" - }, { - token : "constant.numeric", // float - regex : "[+-]?\\d+(?:(?:\\.\\d*)?(?:[eE][+-]?\\d+)?)?\\b" - }, { - token : "text", - regex : "\\s+" - }].concat(string(name)); -}; - -}); - -ace.define('ace/mode/behaviour/html', ['require', 'exports', 'module' , 'ace/lib/oop', 'ace/mode/behaviour/xml', 'ace/mode/behaviour/cstyle', 'ace/token_iterator'], function(require, exports, module) { - - -var oop = require("../../lib/oop"); -var XmlBehaviour = require("../behaviour/xml").XmlBehaviour; -var CstyleBehaviour = require("./cstyle").CstyleBehaviour; -var TokenIterator = require("../../token_iterator").TokenIterator; -var voidElements = ['area', 'base', 'br', 'col', 'command', 'embed', 'hr', 'img', 'input', 'keygen', 'link', 'meta', 'param', 'source', 'track', 'wbr']; - -function hasType(token, type) { - var tokenTypes = token.type.split('.'); - return type.split('.').every(function(type){ - return (tokenTypes.indexOf(type) !== -1); - }); - return hasType; -} - -var HtmlBehaviour = function () { - - this.inherit(XmlBehaviour); // Get xml behaviour - - this.add("autoclosing", "insertion", function (state, action, editor, session, text) { - if (text == '>') { - var position = editor.getCursorPosition(); - var iterator = new TokenIterator(session, position.row, position.column); - var token = iterator.getCurrentToken(); - - if (token && hasType(token, 'string') && iterator.getCurrentTokenColumn() + token.value.length > position.column) - return; - var atCursor = false; - if (!token || !hasType(token, 'meta.tag') && !(hasType(token, 'text') && token.value.match('/'))){ - do { - token = iterator.stepBackward(); - } while (token && (hasType(token, 'string') || hasType(token, 'keyword.operator') || hasType(token, 'entity.attribute-name') || hasType(token, 'text'))); - } else { - atCursor = true; - } - if (!token || !hasType(token, 'meta.tag.name') || iterator.stepBackward().value.match('/')) { - return; - } - var element = token.value; - if (atCursor){ - var element = element.substring(0, position.column - token.start); - } - if (voidElements.indexOf(element) !== -1){ - return; - } - return { - text: '>' + '', - selection: [1, 1] - } - } - }); -} -oop.inherits(HtmlBehaviour, XmlBehaviour); - -exports.HtmlBehaviour = HtmlBehaviour; -}); - -ace.define('ace/mode/behaviour/xml', ['require', 'exports', 'module' , 'ace/lib/oop', 'ace/mode/behaviour', 'ace/mode/behaviour/cstyle', 'ace/token_iterator'], function(require, exports, module) { - - -var oop = require("../../lib/oop"); -var Behaviour = require("../behaviour").Behaviour; -var CstyleBehaviour = require("./cstyle").CstyleBehaviour; -var TokenIterator = require("../../token_iterator").TokenIterator; - -function hasType(token, type) { - var tokenTypes = token.type.split('.'); - return type.split('.').every(function(type){ - return (tokenTypes.indexOf(type) !== -1); - }); - return hasType; -} - -var XmlBehaviour = function () { - - this.inherit(CstyleBehaviour, ["string_dquotes"]); // Get string behaviour - - this.add("autoclosing", "insertion", function (state, action, editor, session, text) { - if (text == '>') { - var position = editor.getCursorPosition(); - var iterator = new TokenIterator(session, position.row, position.column); - var token = iterator.getCurrentToken(); - - if (token && hasType(token, 'string') && iterator.getCurrentTokenColumn() + token.value.length > position.column) - return; - var atCursor = false; - if (!token || !hasType(token, 'meta.tag') && !(hasType(token, 'text') && token.value.match('/'))){ - do { - token = iterator.stepBackward(); - } while (token && (hasType(token, 'string') || hasType(token, 'keyword.operator') || hasType(token, 'entity.attribute-name') || hasType(token, 'text'))); - } else { - atCursor = true; - } - if (!token || !hasType(token, 'meta.tag.name') || iterator.stepBackward().value.match('/')) { - return; - } - var tag = token.value; - if (atCursor){ - var tag = tag.substring(0, position.column - token.start); - } - - return { - text: '>' + '', - selection: [1, 1] - } - } - }); - - this.add('autoindent', 'insertion', function (state, action, editor, session, text) { - if (text == "\n") { - var cursor = editor.getCursorPosition(); - var line = session.getLine(cursor.row); - var rightChars = line.substring(cursor.column, cursor.column + 2); - if (rightChars == '?)/; - this._parseTag = function(tag) { - - var match = tag.match(this.tagRe); - var column = 0; - - return { - value: tag, - match: match ? match[2] : "", - closing: match ? !!match[3] : false, - selfClosing: match ? !!match[5] || match[2] == "/>" : false, - tagName: match ? match[4] : "", - column: match[1] ? column + match[1].length : column - }; - }; - this._readTagForward = function(iterator) { - var token = iterator.getCurrentToken(); - if (!token) - return null; - - var value = ""; - var start; - - do { - if (token.type.lastIndexOf("meta.tag", 0) === 0) { - if (!start) { - var start = { - row: iterator.getCurrentTokenRow(), - column: iterator.getCurrentTokenColumn() - }; - } - value += token.value; - if (value.indexOf(">") !== -1) { - var tag = this._parseTag(value); - tag.start = start; - tag.end = { - row: iterator.getCurrentTokenRow(), - column: iterator.getCurrentTokenColumn() + token.value.length - }; - iterator.stepForward(); - return tag; - } - } - } while(token = iterator.stepForward()); - - return null; - }; - - this._readTagBackward = function(iterator) { - var token = iterator.getCurrentToken(); - if (!token) - return null; - - var value = ""; - var end; - - do { - if (token.type.lastIndexOf("meta.tag", 0) === 0) { - if (!end) { - end = { - row: iterator.getCurrentTokenRow(), - column: iterator.getCurrentTokenColumn() + token.value.length - }; - } - value = token.value + value; - if (value.indexOf("<") !== -1) { - var tag = this._parseTag(value); - tag.end = end; - tag.start = { - row: iterator.getCurrentTokenRow(), - column: iterator.getCurrentTokenColumn() - }; - iterator.stepBackward(); - return tag; - } - } - } while(token = iterator.stepBackward()); - - return null; - }; - - this._pop = function(stack, tag) { - while (stack.length) { - - var top = stack[stack.length-1]; - if (!tag || top.tagName == tag.tagName) { - return stack.pop(); - } - else if (this.voidElements[tag.tagName]) { - return; - } - else if (this.voidElements[top.tagName]) { - stack.pop(); - continue; - } else { - return null; - } - } - }; - - this.getFoldWidgetRange = function(session, foldStyle, row) { - var firstTag = this._getFirstTagInLine(session, row); - - if (!firstTag.match) - return null; - - var isBackward = firstTag.closing || firstTag.selfClosing; - var stack = []; - var tag; - - if (!isBackward) { - var iterator = new TokenIterator(session, row, firstTag.column); - var start = { - row: row, - column: firstTag.column + firstTag.tagName.length + 2 - }; - while (tag = this._readTagForward(iterator)) { - if (tag.selfClosing) { - if (!stack.length) { - tag.start.column += tag.tagName.length + 2; - tag.end.column -= 2; - return Range.fromPoints(tag.start, tag.end); - } else - continue; - } - - if (tag.closing) { - this._pop(stack, tag); - if (stack.length == 0) - return Range.fromPoints(start, tag.start); - } - else { - stack.push(tag) - } - } - } - else { - var iterator = new TokenIterator(session, row, firstTag.column + firstTag.match.length); - var end = { - row: row, - column: firstTag.column - }; - - while (tag = this._readTagBackward(iterator)) { - if (tag.selfClosing) { - if (!stack.length) { - tag.start.column += tag.tagName.length + 2; - tag.end.column -= 2; - return Range.fromPoints(tag.start, tag.end); - } else - continue; - } - - if (!tag.closing) { - this._pop(stack, tag); - if (stack.length == 0) { - tag.start.column += tag.tagName.length + 2; - return Range.fromPoints(tag.start, end); - } - } - else { - stack.push(tag) - } - } - } - - }; - -}).call(FoldMode.prototype); - -}); diff --git a/IDE/jsrealb-ide/ace-src-noconflict/mode-typescript.js b/IDE/jsrealb-ide/ace-src-noconflict/mode-typescript.js deleted file mode 100644 index 167d76ab..00000000 --- a/IDE/jsrealb-ide/ace-src-noconflict/mode-typescript.js +++ /dev/null @@ -1,1018 +0,0 @@ -/* ***** BEGIN LICENSE BLOCK ***** - * Distributed under the BSD license: - * - * Copyright (c) 2012, Ajax.org B.V. - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are met: - * * Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * * Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * * Neither the name of Ajax.org B.V. nor the - * names of its contributors may be used to endorse or promote products - * derived from this software without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND - * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED - * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE - * DISCLAIMED. IN NO EVENT SHALL AJAX.ORG B.V. BE LIABLE FOR ANY - * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES - * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; - * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND - * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - * - * ***** END LICENSE BLOCK ***** */ - -ace.define('ace/mode/typescript', ['require', 'exports', 'module' , 'ace/lib/oop', 'ace/mode/javascript', 'ace/tokenizer', 'ace/mode/typescript_highlight_rules', 'ace/mode/behaviour/cstyle', 'ace/mode/folding/cstyle', 'ace/mode/matching_brace_outdent'], function(require, exports, module) { - - -var oop = require("../lib/oop"); -var jsMode = require("./javascript").Mode; -var Tokenizer = require("../tokenizer").Tokenizer; -var TypeScriptHighlightRules = require("./typescript_highlight_rules").TypeScriptHighlightRules; -var CstyleBehaviour = require("./behaviour/cstyle").CstyleBehaviour; -var CStyleFoldMode = require("./folding/cstyle").FoldMode; -var MatchingBraceOutdent = require("./matching_brace_outdent").MatchingBraceOutdent; - -var Mode = function() { - this.HighlightRules = TypeScriptHighlightRules; - - this.$outdent = new MatchingBraceOutdent(); - this.$behaviour = new CstyleBehaviour(); - this.foldingRules = new CStyleFoldMode(); -}; -oop.inherits(Mode, jsMode); - -(function() { - this.createWorker = function(session) { - return null; - }; - this.$id = "ace/mode/typescript"; -}).call(Mode.prototype); - -exports.Mode = Mode; -}); - -ace.define('ace/mode/javascript', ['require', 'exports', 'module' , 'ace/lib/oop', 'ace/mode/text', 'ace/tokenizer', 'ace/mode/javascript_highlight_rules', 'ace/mode/matching_brace_outdent', 'ace/range', 'ace/worker/worker_client', 'ace/mode/behaviour/cstyle', 'ace/mode/folding/cstyle'], function(require, exports, module) { - - -var oop = require("../lib/oop"); -var TextMode = require("./text").Mode; -var Tokenizer = require("../tokenizer").Tokenizer; -var JavaScriptHighlightRules = require("./javascript_highlight_rules").JavaScriptHighlightRules; -var MatchingBraceOutdent = require("./matching_brace_outdent").MatchingBraceOutdent; -var Range = require("../range").Range; -var WorkerClient = require("../worker/worker_client").WorkerClient; -var CstyleBehaviour = require("./behaviour/cstyle").CstyleBehaviour; -var CStyleFoldMode = require("./folding/cstyle").FoldMode; - -var Mode = function() { - this.HighlightRules = JavaScriptHighlightRules; - - this.$outdent = new MatchingBraceOutdent(); - this.$behaviour = new CstyleBehaviour(); - this.foldingRules = new CStyleFoldMode(); -}; -oop.inherits(Mode, TextMode); - -(function() { - - this.lineCommentStart = "//"; - this.blockComment = {start: "/*", end: "*/"}; - - this.getNextLineIndent = function(state, line, tab) { - var indent = this.$getIndent(line); - - var tokenizedLine = this.getTokenizer().getLineTokens(line, state); - var tokens = tokenizedLine.tokens; - var endState = tokenizedLine.state; - - if (tokens.length && tokens[tokens.length-1].type == "comment") { - return indent; - } - - if (state == "start" || state == "no_regex") { - var match = line.match(/^.*(?:\bcase\b.*\:|[\{\(\[])\s*$/); - if (match) { - indent += tab; - } - } else if (state == "doc-start") { - if (endState == "start" || endState == "no_regex") { - return ""; - } - var match = line.match(/^\s*(\/?)\*/); - if (match) { - if (match[1]) { - indent += " "; - } - indent += "* "; - } - } - - return indent; - }; - - this.checkOutdent = function(state, line, input) { - return this.$outdent.checkOutdent(line, input); - }; - - this.autoOutdent = function(state, doc, row) { - this.$outdent.autoOutdent(doc, row); - }; - - this.createWorker = function(session) { - var worker = new WorkerClient(["ace"], "ace/mode/javascript_worker", "JavaScriptWorker"); - worker.attachToDocument(session.getDocument()); - - worker.on("jslint", function(results) { - session.setAnnotations(results.data); - }); - - worker.on("terminate", function() { - session.clearAnnotations(); - }); - - return worker; - }; - - this.$id = "ace/mode/javascript"; -}).call(Mode.prototype); - -exports.Mode = Mode; -}); - -ace.define('ace/mode/javascript_highlight_rules', ['require', 'exports', 'module' , 'ace/lib/oop', 'ace/mode/doc_comment_highlight_rules', 'ace/mode/text_highlight_rules'], function(require, exports, module) { - - -var oop = require("../lib/oop"); -var DocCommentHighlightRules = require("./doc_comment_highlight_rules").DocCommentHighlightRules; -var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; - -var JavaScriptHighlightRules = function() { - var keywordMapper = this.createKeywordMapper({ - "variable.language": - "Array|Boolean|Date|Function|Iterator|Number|Object|RegExp|String|Proxy|" + // Constructors - "Namespace|QName|XML|XMLList|" + // E4X - "ArrayBuffer|Float32Array|Float64Array|Int16Array|Int32Array|Int8Array|" + - "Uint16Array|Uint32Array|Uint8Array|Uint8ClampedArray|" + - "Error|EvalError|InternalError|RangeError|ReferenceError|StopIteration|" + // Errors - "SyntaxError|TypeError|URIError|" + - "decodeURI|decodeURIComponent|encodeURI|encodeURIComponent|eval|isFinite|" + // Non-constructor functions - "isNaN|parseFloat|parseInt|" + - "JSON|Math|" + // Other - "this|arguments|prototype|window|document" , // Pseudo - "keyword": - "const|yield|import|get|set|" + - "break|case|catch|continue|default|delete|do|else|finally|for|function|" + - "if|in|instanceof|new|return|switch|throw|try|typeof|let|var|while|with|debugger|" + - "__parent__|__count__|escape|unescape|with|__proto__|" + - "class|enum|extends|super|export|implements|private|public|interface|package|protected|static", - "storage.type": - "const|let|var|function", - "constant.language": - "null|Infinity|NaN|undefined", - "support.function": - "alert", - "constant.language.boolean": "true|false" - }, "identifier"); - var kwBeforeRe = "case|do|else|finally|in|instanceof|return|throw|try|typeof|yield|void"; - var identifierRe = "[a-zA-Z\\$_\u00a1-\uffff][a-zA-Z\\d\\$_\u00a1-\uffff]*\\b"; - - var escapedRe = "\\\\(?:x[0-9a-fA-F]{2}|" + // hex - "u[0-9a-fA-F]{4}|" + // unicode - "[0-2][0-7]{0,2}|" + // oct - "3[0-6][0-7]?|" + // oct - "37[0-7]?|" + // oct - "[4-7][0-7]?|" + //oct - ".)"; - - this.$rules = { - "no_regex" : [ - { - token : "comment", - regex : "\\/\\/", - next : "line_comment" - }, - DocCommentHighlightRules.getStartRule("doc-start"), - { - token : "comment", // multi line comment - regex : /\/\*/, - next : "comment" - }, { - token : "string", - regex : "'(?=.)", - next : "qstring" - }, { - token : "string", - regex : '"(?=.)', - next : "qqstring" - }, { - token : "constant.numeric", // hex - regex : /0[xX][0-9a-fA-F]+\b/ - }, { - token : "constant.numeric", // float - regex : /[+-]?\d+(?:(?:\.\d*)?(?:[eE][+-]?\d+)?)?\b/ - }, { - token : [ - "storage.type", "punctuation.operator", "support.function", - "punctuation.operator", "entity.name.function", "text","keyword.operator" - ], - regex : "(" + identifierRe + ")(\\.)(prototype)(\\.)(" + identifierRe +")(\\s*)(=)", - next: "function_arguments" - }, { - token : [ - "storage.type", "punctuation.operator", "entity.name.function", "text", - "keyword.operator", "text", "storage.type", "text", "paren.lparen" - ], - regex : "(" + identifierRe + ")(\\.)(" + identifierRe +")(\\s*)(=)(\\s*)(function)(\\s*)(\\()", - next: "function_arguments" - }, { - token : [ - "entity.name.function", "text", "keyword.operator", "text", "storage.type", - "text", "paren.lparen" - ], - regex : "(" + identifierRe +")(\\s*)(=)(\\s*)(function)(\\s*)(\\()", - next: "function_arguments" - }, { - token : [ - "storage.type", "punctuation.operator", "entity.name.function", "text", - "keyword.operator", "text", - "storage.type", "text", "entity.name.function", "text", "paren.lparen" - ], - regex : "(" + identifierRe + ")(\\.)(" + identifierRe +")(\\s*)(=)(\\s*)(function)(\\s+)(\\w+)(\\s*)(\\()", - next: "function_arguments" - }, { - token : [ - "storage.type", "text", "entity.name.function", "text", "paren.lparen" - ], - regex : "(function)(\\s+)(" + identifierRe + ")(\\s*)(\\()", - next: "function_arguments" - }, { - token : [ - "entity.name.function", "text", "punctuation.operator", - "text", "storage.type", "text", "paren.lparen" - ], - regex : "(" + identifierRe + ")(\\s*)(:)(\\s*)(function)(\\s*)(\\()", - next: "function_arguments" - }, { - token : [ - "text", "text", "storage.type", "text", "paren.lparen" - ], - regex : "(:)(\\s*)(function)(\\s*)(\\()", - next: "function_arguments" - }, { - token : "keyword", - regex : "(?:" + kwBeforeRe + ")\\b", - next : "start" - }, { - token : ["punctuation.operator", "support.function"], - regex : /(\.)(s(?:h(?:ift|ow(?:Mod(?:elessDialog|alDialog)|Help))|croll(?:X|By(?:Pages|Lines)?|Y|To)?|t(?:op|rike)|i(?:n|zeToContent|debar|gnText)|ort|u(?:p|b(?:str(?:ing)?)?)|pli(?:ce|t)|e(?:nd|t(?:Re(?:sizable|questHeader)|M(?:i(?:nutes|lliseconds)|onth)|Seconds|Ho(?:tKeys|urs)|Year|Cursor|Time(?:out)?|Interval|ZOptions|Date|UTC(?:M(?:i(?:nutes|lliseconds)|onth)|Seconds|Hours|Date|FullYear)|FullYear|Active)|arch)|qrt|lice|avePreferences|mall)|h(?:ome|andleEvent)|navigate|c(?:har(?:CodeAt|At)|o(?:s|n(?:cat|textual|firm)|mpile)|eil|lear(?:Timeout|Interval)?|a(?:ptureEvents|ll)|reate(?:StyleSheet|Popup|EventObject))|t(?:o(?:GMTString|S(?:tring|ource)|U(?:TCString|pperCase)|Lo(?:caleString|werCase))|est|a(?:n|int(?:Enabled)?))|i(?:s(?:NaN|Finite)|ndexOf|talics)|d(?:isableExternalCapture|ump|etachEvent)|u(?:n(?:shift|taint|escape|watch)|pdateCommands)|j(?:oin|avaEnabled)|p(?:o(?:p|w)|ush|lugins.refresh|a(?:ddings|rse(?:Int|Float)?)|r(?:int|ompt|eference))|e(?:scape|nableExternalCapture|val|lementFromPoint|x(?:p|ec(?:Script|Command)?))|valueOf|UTC|queryCommand(?:State|Indeterm|Enabled|Value)|f(?:i(?:nd|le(?:ModifiedDate|Size|CreatedDate|UpdatedDate)|xed)|o(?:nt(?:size|color)|rward)|loor|romCharCode)|watch|l(?:ink|o(?:ad|g)|astIndexOf)|a(?:sin|nchor|cos|t(?:tachEvent|ob|an(?:2)?)|pply|lert|b(?:s|ort))|r(?:ou(?:nd|teEvents)|e(?:size(?:By|To)|calc|turnValue|place|verse|l(?:oad|ease(?:Capture|Events)))|andom)|g(?:o|et(?:ResponseHeader|M(?:i(?:nutes|lliseconds)|onth)|Se(?:conds|lection)|Hours|Year|Time(?:zoneOffset)?|Da(?:y|te)|UTC(?:M(?:i(?:nutes|lliseconds)|onth)|Seconds|Hours|Da(?:y|te)|FullYear)|FullYear|A(?:ttention|llResponseHeaders)))|m(?:in|ove(?:B(?:y|elow)|To(?:Absolute)?|Above)|ergeAttributes|a(?:tch|rgins|x))|b(?:toa|ig|o(?:ld|rderWidths)|link|ack))\b(?=\()/ - }, { - token : ["punctuation.operator", "support.function.dom"], - regex : /(\.)(s(?:ub(?:stringData|mit)|plitText|e(?:t(?:NamedItem|Attribute(?:Node)?)|lect))|has(?:ChildNodes|Feature)|namedItem|c(?:l(?:ick|o(?:se|neNode))|reate(?:C(?:omment|DATASection|aption)|T(?:Head|extNode|Foot)|DocumentFragment|ProcessingInstruction|E(?:ntityReference|lement)|Attribute))|tabIndex|i(?:nsert(?:Row|Before|Cell|Data)|tem)|open|delete(?:Row|C(?:ell|aption)|T(?:Head|Foot)|Data)|focus|write(?:ln)?|a(?:dd|ppend(?:Child|Data))|re(?:set|place(?:Child|Data)|move(?:NamedItem|Child|Attribute(?:Node)?)?)|get(?:NamedItem|Element(?:sBy(?:Name|TagName)|ById)|Attribute(?:Node)?)|blur)\b(?=\()/ - }, { - token : ["punctuation.operator", "support.constant"], - regex : /(\.)(s(?:ystemLanguage|cr(?:ipts|ollbars|een(?:X|Y|Top|Left))|t(?:yle(?:Sheets)?|atus(?:Text|bar)?)|ibling(?:Below|Above)|ource|uffixes|e(?:curity(?:Policy)?|l(?:ection|f)))|h(?:istory|ost(?:name)?|as(?:h|Focus))|y|X(?:MLDocument|SLDocument)|n(?:ext|ame(?:space(?:s|URI)|Prop))|M(?:IN_VALUE|AX_VALUE)|c(?:haracterSet|o(?:n(?:structor|trollers)|okieEnabled|lorDepth|mp(?:onents|lete))|urrent|puClass|l(?:i(?:p(?:boardData)?|entInformation)|osed|asses)|alle(?:e|r)|rypto)|t(?:o(?:olbar|p)|ext(?:Transform|Indent|Decoration|Align)|ags)|SQRT(?:1_2|2)|i(?:n(?:ner(?:Height|Width)|put)|ds|gnoreCase)|zIndex|o(?:scpu|n(?:readystatechange|Line)|uter(?:Height|Width)|p(?:sProfile|ener)|ffscreenBuffering)|NEGATIVE_INFINITY|d(?:i(?:splay|alog(?:Height|Top|Width|Left|Arguments)|rectories)|e(?:scription|fault(?:Status|Ch(?:ecked|arset)|View)))|u(?:ser(?:Profile|Language|Agent)|n(?:iqueID|defined)|pdateInterval)|_content|p(?:ixelDepth|ort|ersonalbar|kcs11|l(?:ugins|atform)|a(?:thname|dding(?:Right|Bottom|Top|Left)|rent(?:Window|Layer)?|ge(?:X(?:Offset)?|Y(?:Offset)?))|r(?:o(?:to(?:col|type)|duct(?:Sub)?|mpter)|e(?:vious|fix)))|e(?:n(?:coding|abledPlugin)|x(?:ternal|pando)|mbeds)|v(?:isibility|endor(?:Sub)?|Linkcolor)|URLUnencoded|P(?:I|OSITIVE_INFINITY)|f(?:ilename|o(?:nt(?:Size|Family|Weight)|rmName)|rame(?:s|Element)|gColor)|E|whiteSpace|l(?:i(?:stStyleType|n(?:eHeight|kColor))|o(?:ca(?:tion(?:bar)?|lName)|wsrc)|e(?:ngth|ft(?:Context)?)|a(?:st(?:M(?:odified|atch)|Index|Paren)|yer(?:s|X)|nguage))|a(?:pp(?:MinorVersion|Name|Co(?:deName|re)|Version)|vail(?:Height|Top|Width|Left)|ll|r(?:ity|guments)|Linkcolor|bove)|r(?:ight(?:Context)?|e(?:sponse(?:XML|Text)|adyState))|global|x|m(?:imeTypes|ultiline|enubar|argin(?:Right|Bottom|Top|Left))|L(?:N(?:10|2)|OG(?:10E|2E))|b(?:o(?:ttom|rder(?:Width|RightWidth|BottomWidth|Style|Color|TopWidth|LeftWidth))|ufferDepth|elow|ackground(?:Color|Image)))\b/ - }, { - token : ["storage.type", "punctuation.operator", "support.function.firebug"], - regex : /(console)(\.)(warn|info|log|error|time|timeEnd|assert)\b/ - }, { - token : keywordMapper, - regex : identifierRe - }, { - token : "keyword.operator", - regex : /--|\+\+|[!$%&*+\-~]|===|==|=|!=|!==|<=|>=|<<=|>>=|>>>=|<>|<|>|!|&&|\|\||\?\:|\*=|%=|\+=|\-=|&=|\^=/, - next : "start" - }, { - token : "punctuation.operator", - regex : /\?|\:|\,|\;|\./, - next : "start" - }, { - token : "paren.lparen", - regex : /[\[({]/, - next : "start" - }, { - token : "paren.rparen", - regex : /[\])}]/ - }, { - token : "keyword.operator", - regex : /\/=?/, - next : "start" - }, { - token: "comment", - regex: /^#!.*$/ - } - ], - "start": [ - DocCommentHighlightRules.getStartRule("doc-start"), - { - token : "comment", // multi line comment - regex : "\\/\\*", - next : "comment_regex_allowed" - }, { - token : "comment", - regex : "\\/\\/", - next : "line_comment_regex_allowed" - }, { - token: "string.regexp", - regex: "\\/", - next: "regex" - }, { - token : "text", - regex : "\\s+|^$", - next : "start" - }, { - token: "empty", - regex: "", - next: "no_regex" - } - ], - "regex": [ - { - token: "regexp.keyword.operator", - regex: "\\\\(?:u[\\da-fA-F]{4}|x[\\da-fA-F]{2}|.)" - }, { - token: "string.regexp", - regex: "/[sxngimy]*", - next: "no_regex" - }, { - token : "invalid", - regex: /\{\d+\b,?\d*\}[+*]|[+*$^?][+*]|[$^][?]|\?{3,}/ - }, { - token : "constant.language.escape", - regex: /\(\?[:=!]|\)|\{\d+\b,?\d*\}|[+*]\?|[()$^+*?.]/ - }, { - token : "constant.language.delimiter", - regex: /\|/ - }, { - token: "constant.language.escape", - regex: /\[\^?/, - next: "regex_character_class" - }, { - token: "empty", - regex: "$", - next: "no_regex" - }, { - defaultToken: "string.regexp" - } - ], - "regex_character_class": [ - { - token: "regexp.keyword.operator", - regex: "\\\\(?:u[\\da-fA-F]{4}|x[\\da-fA-F]{2}|.)" - }, { - token: "constant.language.escape", - regex: "]", - next: "regex" - }, { - token: "constant.language.escape", - regex: "-" - }, { - token: "empty", - regex: "$", - next: "no_regex" - }, { - defaultToken: "string.regexp.charachterclass" - } - ], - "function_arguments": [ - { - token: "variable.parameter", - regex: identifierRe - }, { - token: "punctuation.operator", - regex: "[, ]+" - }, { - token: "punctuation.operator", - regex: "$" - }, { - token: "empty", - regex: "", - next: "no_regex" - } - ], - "comment_regex_allowed" : [ - {token : "comment", regex : "\\*\\/", next : "start"}, - {defaultToken : "comment"} - ], - "comment" : [ - {token : "comment", regex : "\\*\\/", next : "no_regex"}, - {defaultToken : "comment"} - ], - "line_comment_regex_allowed" : [ - {token : "comment", regex : "$|^", next : "start"}, - {defaultToken : "comment"} - ], - "line_comment" : [ - {token : "comment", regex : "$|^", next : "no_regex"}, - {defaultToken : "comment"} - ], - "qqstring" : [ - { - token : "constant.language.escape", - regex : escapedRe - }, { - token : "string", - regex : "\\\\$", - next : "qqstring" - }, { - token : "string", - regex : '"|$', - next : "no_regex" - }, { - defaultToken: "string" - } - ], - "qstring" : [ - { - token : "constant.language.escape", - regex : escapedRe - }, { - token : "string", - regex : "\\\\$", - next : "qstring" - }, { - token : "string", - regex : "'|$", - next : "no_regex" - }, { - defaultToken: "string" - } - ] - }; - - this.embedRules(DocCommentHighlightRules, "doc-", - [ DocCommentHighlightRules.getEndRule("no_regex") ]); -}; - -oop.inherits(JavaScriptHighlightRules, TextHighlightRules); - -exports.JavaScriptHighlightRules = JavaScriptHighlightRules; -}); - -ace.define('ace/mode/doc_comment_highlight_rules', ['require', 'exports', 'module' , 'ace/lib/oop', 'ace/mode/text_highlight_rules'], function(require, exports, module) { - - -var oop = require("../lib/oop"); -var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; - -var DocCommentHighlightRules = function() { - - this.$rules = { - "start" : [ { - token : "comment.doc.tag", - regex : "@[\\w\\d_]+" // TODO: fix email addresses - }, { - token : "comment.doc.tag", - regex : "\\bTODO\\b" - }, { - defaultToken : "comment.doc" - }] - }; -}; - -oop.inherits(DocCommentHighlightRules, TextHighlightRules); - -DocCommentHighlightRules.getStartRule = function(start) { - return { - token : "comment.doc", // doc comment - regex : "\\/\\*(?=\\*)", - next : start - }; -}; - -DocCommentHighlightRules.getEndRule = function (start) { - return { - token : "comment.doc", // closing comment - regex : "\\*\\/", - next : start - }; -}; - - -exports.DocCommentHighlightRules = DocCommentHighlightRules; - -}); - -ace.define('ace/mode/matching_brace_outdent', ['require', 'exports', 'module' , 'ace/range'], function(require, exports, module) { - - -var Range = require("../range").Range; - -var MatchingBraceOutdent = function() {}; - -(function() { - - this.checkOutdent = function(line, input) { - if (! /^\s+$/.test(line)) - return false; - - return /^\s*\}/.test(input); - }; - - this.autoOutdent = function(doc, row) { - var line = doc.getLine(row); - var match = line.match(/^(\s*\})/); - - if (!match) return 0; - - var column = match[1].length; - var openBracePos = doc.findMatchingBracket({row: row, column: column}); - - if (!openBracePos || openBracePos.row == row) return 0; - - var indent = this.$getIndent(doc.getLine(openBracePos.row)); - doc.replace(new Range(row, 0, row, column-1), indent); - }; - - this.$getIndent = function(line) { - return line.match(/^\s*/)[0]; - }; - -}).call(MatchingBraceOutdent.prototype); - -exports.MatchingBraceOutdent = MatchingBraceOutdent; -}); - -ace.define('ace/mode/behaviour/cstyle', ['require', 'exports', 'module' , 'ace/lib/oop', 'ace/mode/behaviour', 'ace/token_iterator', 'ace/lib/lang'], function(require, exports, module) { - - -var oop = require("../../lib/oop"); -var Behaviour = require("../behaviour").Behaviour; -var TokenIterator = require("../../token_iterator").TokenIterator; -var lang = require("../../lib/lang"); - -var SAFE_INSERT_IN_TOKENS = - ["text", "paren.rparen", "punctuation.operator"]; -var SAFE_INSERT_BEFORE_TOKENS = - ["text", "paren.rparen", "punctuation.operator", "comment"]; - - -var autoInsertedBrackets = 0; -var autoInsertedRow = -1; -var autoInsertedLineEnd = ""; -var maybeInsertedBrackets = 0; -var maybeInsertedRow = -1; -var maybeInsertedLineStart = ""; -var maybeInsertedLineEnd = ""; - -var CstyleBehaviour = function () { - - CstyleBehaviour.isSaneInsertion = function(editor, session) { - var cursor = editor.getCursorPosition(); - var iterator = new TokenIterator(session, cursor.row, cursor.column); - if (!this.$matchTokenType(iterator.getCurrentToken() || "text", SAFE_INSERT_IN_TOKENS)) { - var iterator2 = new TokenIterator(session, cursor.row, cursor.column + 1); - if (!this.$matchTokenType(iterator2.getCurrentToken() || "text", SAFE_INSERT_IN_TOKENS)) - return false; - } - iterator.stepForward(); - return iterator.getCurrentTokenRow() !== cursor.row || - this.$matchTokenType(iterator.getCurrentToken() || "text", SAFE_INSERT_BEFORE_TOKENS); - }; - - CstyleBehaviour.$matchTokenType = function(token, types) { - return types.indexOf(token.type || token) > -1; - }; - - CstyleBehaviour.recordAutoInsert = function(editor, session, bracket) { - var cursor = editor.getCursorPosition(); - var line = session.doc.getLine(cursor.row); - if (!this.isAutoInsertedClosing(cursor, line, autoInsertedLineEnd[0])) - autoInsertedBrackets = 0; - autoInsertedRow = cursor.row; - autoInsertedLineEnd = bracket + line.substr(cursor.column); - autoInsertedBrackets++; - }; - - CstyleBehaviour.recordMaybeInsert = function(editor, session, bracket) { - var cursor = editor.getCursorPosition(); - var line = session.doc.getLine(cursor.row); - if (!this.isMaybeInsertedClosing(cursor, line)) - maybeInsertedBrackets = 0; - maybeInsertedRow = cursor.row; - maybeInsertedLineStart = line.substr(0, cursor.column) + bracket; - maybeInsertedLineEnd = line.substr(cursor.column); - maybeInsertedBrackets++; - }; - - CstyleBehaviour.isAutoInsertedClosing = function(cursor, line, bracket) { - return autoInsertedBrackets > 0 && - cursor.row === autoInsertedRow && - bracket === autoInsertedLineEnd[0] && - line.substr(cursor.column) === autoInsertedLineEnd; - }; - - CstyleBehaviour.isMaybeInsertedClosing = function(cursor, line) { - return maybeInsertedBrackets > 0 && - cursor.row === maybeInsertedRow && - line.substr(cursor.column) === maybeInsertedLineEnd && - line.substr(0, cursor.column) == maybeInsertedLineStart; - }; - - CstyleBehaviour.popAutoInsertedClosing = function() { - autoInsertedLineEnd = autoInsertedLineEnd.substr(1); - autoInsertedBrackets--; - }; - - CstyleBehaviour.clearMaybeInsertedClosing = function() { - maybeInsertedBrackets = 0; - maybeInsertedRow = -1; - }; - - this.add("braces", "insertion", function (state, action, editor, session, text) { - var cursor = editor.getCursorPosition(); - var line = session.doc.getLine(cursor.row); - if (text == '{') { - var selection = editor.getSelectionRange(); - var selected = session.doc.getTextRange(selection); - if (selected !== "" && selected !== "{" && editor.getWrapBehavioursEnabled()) { - return { - text: '{' + selected + '}', - selection: false - }; - } else if (CstyleBehaviour.isSaneInsertion(editor, session)) { - if (/[\]\}\)]/.test(line[cursor.column]) || editor.inMultiSelectMode) { - CstyleBehaviour.recordAutoInsert(editor, session, "}"); - return { - text: '{}', - selection: [1, 1] - }; - } else { - CstyleBehaviour.recordMaybeInsert(editor, session, "{"); - return { - text: '{', - selection: [1, 1] - }; - } - } - } else if (text == '}') { - var rightChar = line.substring(cursor.column, cursor.column + 1); - if (rightChar == '}') { - var matching = session.$findOpeningBracket('}', {column: cursor.column + 1, row: cursor.row}); - if (matching !== null && CstyleBehaviour.isAutoInsertedClosing(cursor, line, text)) { - CstyleBehaviour.popAutoInsertedClosing(); - return { - text: '', - selection: [1, 1] - }; - } - } - } else if (text == "\n" || text == "\r\n") { - var closing = ""; - if (CstyleBehaviour.isMaybeInsertedClosing(cursor, line)) { - closing = lang.stringRepeat("}", maybeInsertedBrackets); - CstyleBehaviour.clearMaybeInsertedClosing(); - } - var rightChar = line.substring(cursor.column, cursor.column + 1); - if (rightChar === '}') { - var openBracePos = session.findMatchingBracket({row: cursor.row, column: cursor.column+1}, '}'); - if (!openBracePos) - return null; - var next_indent = this.$getIndent(session.getLine(openBracePos.row)); - } else if (closing) { - var next_indent = this.$getIndent(line); - } else { - return; - } - var indent = next_indent + session.getTabString(); - - return { - text: '\n' + indent + '\n' + next_indent + closing, - selection: [1, indent.length, 1, indent.length] - }; - } else { - CstyleBehaviour.clearMaybeInsertedClosing(); - } - }); - - this.add("braces", "deletion", function (state, action, editor, session, range) { - var selected = session.doc.getTextRange(range); - if (!range.isMultiLine() && selected == '{') { - var line = session.doc.getLine(range.start.row); - var rightChar = line.substring(range.end.column, range.end.column + 1); - if (rightChar == '}') { - range.end.column++; - return range; - } else { - maybeInsertedBrackets--; - } - } - }); - - this.add("parens", "insertion", function (state, action, editor, session, text) { - if (text == '(') { - var selection = editor.getSelectionRange(); - var selected = session.doc.getTextRange(selection); - if (selected !== "" && editor.getWrapBehavioursEnabled()) { - return { - text: '(' + selected + ')', - selection: false - }; - } else if (CstyleBehaviour.isSaneInsertion(editor, session)) { - CstyleBehaviour.recordAutoInsert(editor, session, ")"); - return { - text: '()', - selection: [1, 1] - }; - } - } else if (text == ')') { - var cursor = editor.getCursorPosition(); - var line = session.doc.getLine(cursor.row); - var rightChar = line.substring(cursor.column, cursor.column + 1); - if (rightChar == ')') { - var matching = session.$findOpeningBracket(')', {column: cursor.column + 1, row: cursor.row}); - if (matching !== null && CstyleBehaviour.isAutoInsertedClosing(cursor, line, text)) { - CstyleBehaviour.popAutoInsertedClosing(); - return { - text: '', - selection: [1, 1] - }; - } - } - } - }); - - this.add("parens", "deletion", function (state, action, editor, session, range) { - var selected = session.doc.getTextRange(range); - if (!range.isMultiLine() && selected == '(') { - var line = session.doc.getLine(range.start.row); - var rightChar = line.substring(range.start.column + 1, range.start.column + 2); - if (rightChar == ')') { - range.end.column++; - return range; - } - } - }); - - this.add("brackets", "insertion", function (state, action, editor, session, text) { - if (text == '[') { - var selection = editor.getSelectionRange(); - var selected = session.doc.getTextRange(selection); - if (selected !== "" && editor.getWrapBehavioursEnabled()) { - return { - text: '[' + selected + ']', - selection: false - }; - } else if (CstyleBehaviour.isSaneInsertion(editor, session)) { - CstyleBehaviour.recordAutoInsert(editor, session, "]"); - return { - text: '[]', - selection: [1, 1] - }; - } - } else if (text == ']') { - var cursor = editor.getCursorPosition(); - var line = session.doc.getLine(cursor.row); - var rightChar = line.substring(cursor.column, cursor.column + 1); - if (rightChar == ']') { - var matching = session.$findOpeningBracket(']', {column: cursor.column + 1, row: cursor.row}); - if (matching !== null && CstyleBehaviour.isAutoInsertedClosing(cursor, line, text)) { - CstyleBehaviour.popAutoInsertedClosing(); - return { - text: '', - selection: [1, 1] - }; - } - } - } - }); - - this.add("brackets", "deletion", function (state, action, editor, session, range) { - var selected = session.doc.getTextRange(range); - if (!range.isMultiLine() && selected == '[') { - var line = session.doc.getLine(range.start.row); - var rightChar = line.substring(range.start.column + 1, range.start.column + 2); - if (rightChar == ']') { - range.end.column++; - return range; - } - } - }); - - this.add("string_dquotes", "insertion", function (state, action, editor, session, text) { - if (text == '"' || text == "'") { - var quote = text; - var selection = editor.getSelectionRange(); - var selected = session.doc.getTextRange(selection); - if (selected !== "" && selected !== "'" && selected != '"' && editor.getWrapBehavioursEnabled()) { - return { - text: quote + selected + quote, - selection: false - }; - } else { - var cursor = editor.getCursorPosition(); - var line = session.doc.getLine(cursor.row); - var leftChar = line.substring(cursor.column-1, cursor.column); - if (leftChar == '\\') { - return null; - } - var tokens = session.getTokens(selection.start.row); - var col = 0, token; - var quotepos = -1; // Track whether we're inside an open quote. - - for (var x = 0; x < tokens.length; x++) { - token = tokens[x]; - if (token.type == "string") { - quotepos = -1; - } else if (quotepos < 0) { - quotepos = token.value.indexOf(quote); - } - if ((token.value.length + col) > selection.start.column) { - break; - } - col += tokens[x].value.length; - } - if (!token || (quotepos < 0 && token.type !== "comment" && (token.type !== "string" || ((selection.start.column !== token.value.length+col-1) && token.value.lastIndexOf(quote) === token.value.length-1)))) { - if (!CstyleBehaviour.isSaneInsertion(editor, session)) - return; - return { - text: quote + quote, - selection: [1,1] - }; - } else if (token && token.type === "string") { - var rightChar = line.substring(cursor.column, cursor.column + 1); - if (rightChar == quote) { - return { - text: '', - selection: [1, 1] - }; - } - } - } - } - }); - - this.add("string_dquotes", "deletion", function (state, action, editor, session, range) { - var selected = session.doc.getTextRange(range); - if (!range.isMultiLine() && (selected == '"' || selected == "'")) { - var line = session.doc.getLine(range.start.row); - var rightChar = line.substring(range.start.column + 1, range.start.column + 2); - if (rightChar == selected) { - range.end.column++; - return range; - } - } - }); - -}; - -oop.inherits(CstyleBehaviour, Behaviour); - -exports.CstyleBehaviour = CstyleBehaviour; -}); - -ace.define('ace/mode/folding/cstyle', ['require', 'exports', 'module' , 'ace/lib/oop', 'ace/range', 'ace/mode/folding/fold_mode'], function(require, exports, module) { - - -var oop = require("../../lib/oop"); -var Range = require("../../range").Range; -var BaseFoldMode = require("./fold_mode").FoldMode; - -var FoldMode = exports.FoldMode = function(commentRegex) { - if (commentRegex) { - this.foldingStartMarker = new RegExp( - this.foldingStartMarker.source.replace(/\|[^|]*?$/, "|" + commentRegex.start) - ); - this.foldingStopMarker = new RegExp( - this.foldingStopMarker.source.replace(/\|[^|]*?$/, "|" + commentRegex.end) - ); - } -}; -oop.inherits(FoldMode, BaseFoldMode); - -(function() { - - this.foldingStartMarker = /(\{|\[)[^\}\]]*$|^\s*(\/\*)/; - this.foldingStopMarker = /^[^\[\{]*(\}|\])|^[\s\*]*(\*\/)/; - - this.getFoldWidgetRange = function(session, foldStyle, row, forceMultiline) { - var line = session.getLine(row); - var match = line.match(this.foldingStartMarker); - if (match) { - var i = match.index; - - if (match[1]) - return this.openingBracketBlock(session, match[1], row, i); - - var range = session.getCommentFoldRange(row, i + match[0].length, 1); - - if (range && !range.isMultiLine()) { - if (forceMultiline) { - range = this.getSectionRange(session, row); - } else if (foldStyle != "all") - range = null; - } - - return range; - } - - if (foldStyle === "markbegin") - return; - - var match = line.match(this.foldingStopMarker); - if (match) { - var i = match.index + match[0].length; - - if (match[1]) - return this.closingBracketBlock(session, match[1], row, i); - - return session.getCommentFoldRange(row, i, -1); - } - }; - - this.getSectionRange = function(session, row) { - var line = session.getLine(row); - var startIndent = line.search(/\S/); - var startRow = row; - var startColumn = line.length; - row = row + 1; - var endRow = row; - var maxRow = session.getLength(); - while (++row < maxRow) { - line = session.getLine(row); - var indent = line.search(/\S/); - if (indent === -1) - continue; - if (startIndent > indent) - break; - var subRange = this.getFoldWidgetRange(session, "all", row); - - if (subRange) { - if (subRange.start.row <= startRow) { - break; - } else if (subRange.isMultiLine()) { - row = subRange.end.row; - } else if (startIndent == indent) { - break; - } - } - endRow = row; - } - - return new Range(startRow, startColumn, endRow, session.getLine(endRow).length); - }; - -}).call(FoldMode.prototype); - -}); - - -ace.define('ace/mode/typescript_highlight_rules', ['require', 'exports', 'module' , 'ace/lib/oop', 'ace/mode/javascript_highlight_rules'], function(require, exports, module) { - - -var oop = require("../lib/oop"); -var JavaScriptHighlightRules = require("./javascript_highlight_rules").JavaScriptHighlightRules; - -var TypeScriptHighlightRules = function() { - - var tsRules = [ - { - token: ["keyword.operator.ts", "text", "variable.parameter.function.ts", "text"], - regex: "\\b(module)(\\s*)([a-zA-Z0-9_?.$][\\w?.$]*)(\\s*\\{)" - }, - { - token: ["storage.type.variable.ts", "text", "keyword.other.ts", "text"], - regex: "(super)(\\s*\\()([a-zA-Z0-9,_?.$\\s]+\\s*)(\\))" - }, - { - token: ["entity.name.function.ts","paren.lparen", "paren.rparen"], - regex: "([a-zA-Z_?.$][\\w?.$]*)(\\()(\\))" - }, - { - token: ["variable.parameter.function.ts", "text", "variable.parameter.function.ts"], - regex: "([a-zA-Z0-9_?.$][\\w?.$]*)(\\s*:\\s*)([a-zA-Z0-9_?.$][\\w?.$]*)" - }, - { - token: ["keyword.operator.ts"], - regex: "(?:\\b(constructor|declare|interface|as|AS|public|private|class|extends|export|super)\\b)" - }, - { - token: ["storage.type.variable.ts"], - regex: "(?:\\b(this\\.|string\\b|bool\\b|number)\\b)" - }, - { - token: ["keyword.operator.ts", "storage.type.variable.ts", "keyword.operator.ts", "storage.type.variable.ts"], - regex: "(class)(\\s+[a-zA-Z0-9_?.$][\\w?.$]*\\s+)(extends)(\\s+[a-zA-Z0-9_?.$][\\w?.$]*\\s+)?" - }, - { - token: "keyword", - regex: "(?:super|export|class|extends|import)\\b" - } - ]; - - var JSRules = new JavaScriptHighlightRules().getRules(); - - JSRules.start = tsRules.concat(JSRules.start); - this.$rules = JSRules; -}; - -oop.inherits(TypeScriptHighlightRules, JavaScriptHighlightRules); - -exports.TypeScriptHighlightRules = TypeScriptHighlightRules; -}); \ No newline at end of file diff --git a/IDE/jsrealb-ide/ace-src-noconflict/mode-vbscript.js b/IDE/jsrealb-ide/ace-src-noconflict/mode-vbscript.js deleted file mode 100644 index 85b741d4..00000000 --- a/IDE/jsrealb-ide/ace-src-noconflict/mode-vbscript.js +++ /dev/null @@ -1,250 +0,0 @@ -/* ***** BEGIN LICENSE BLOCK ***** - * Distributed under the BSD license: - * - * Copyright (c) 2012, Ajax.org B.V. - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are met: - * * Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * * Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * * Neither the name of Ajax.org B.V. nor the - * names of its contributors may be used to endorse or promote products - * derived from this software without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND - * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED - * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE - * DISCLAIMED. IN NO EVENT SHALL AJAX.ORG B.V. BE LIABLE FOR ANY - * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES - * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; - * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND - * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - * - * - * Contributor(s): - * - * - * - * ***** END LICENSE BLOCK ***** */ - -ace.define('ace/mode/vbscript', ['require', 'exports', 'module' , 'ace/lib/oop', 'ace/mode/text', 'ace/tokenizer', 'ace/mode/vbscript_highlight_rules'], function(require, exports, module) { - - -var oop = require("../lib/oop"); -var TextMode = require("./text").Mode; -var Tokenizer = require("../tokenizer").Tokenizer; -var VBScriptHighlightRules = require("./vbscript_highlight_rules").VBScriptHighlightRules; - -var Mode = function() { - this.HighlightRules = VBScriptHighlightRules; -}; -oop.inherits(Mode, TextMode); - -(function() { - - this.lineCommentStart = ["'", "REM"]; - - this.$id = "ace/mode/vbscript"; -}).call(Mode.prototype); - -exports.Mode = Mode; -}); - - -ace.define('ace/mode/vbscript_highlight_rules', ['require', 'exports', 'module' , 'ace/lib/oop', 'ace/mode/text_highlight_rules'], function(require, exports, module) { - - -var oop = require("../lib/oop"); -var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; - -var VBScriptHighlightRules = function() { - - this.$rules = { - "start": [ - { - token: [ - "meta.ending-space" - ], - regex: "$" - }, - { - token: [ - null - ], - regex: "^(?=\\t)", - next: "state_3" - }, - { - token: [null], - regex: "^(?= )", - next: "state_4" - }, - { - token: [ - "text", - "storage.type.function.asp", - "text", - "entity.name.function.asp", - "text", - "punctuation.definition.parameters.asp", - "variable.parameter.function.asp", - "punctuation.definition.parameters.asp" - ], - regex: "^(\\s*)(Function|Sub)(\\s*)([a-zA-Z_]\\w*)(\\s*)(\\()([^)]*)(\\))" - }, - { - token: "punctuation.definition.comment.asp", - regex: "'|REM", - next: "comment" - }, - { - token: [ - "keyword.control.asp" - ], - regex: "\\b(?:If|Then|Else|ElseIf|Else If|End If|While|Wend|For|To|Each|Case|Select|End Select|Return|Continue|Do|Until|Loop|Next|With|Exit Do|Exit For|Exit Function|Exit Property|Exit Sub|IIf)\\b" - }, - { - token: "keyword.operator.asp", - regex: "\\b(?:Mod|And|Not|Or|Xor|as)\\b" - }, - { - token: "storage.type.asp", - regex: "Dim|Call|Class|Const|Dim|Redim|Function|Sub|Private Sub|Public Sub|End sub|End Function|Set|Let|Get|New|Randomize|Option Explicit|On Error Resume Next|On Error GoTo" - }, - { - token: "storage.modifier.asp", - regex: "\\b(?:Private|Public|Default)\\b" - }, - { - token: "constant.language.asp", - regex: "\\b(?:Empty|False|Nothing|Null|True)\\b" - }, - { - token: "punctuation.definition.string.begin.asp", - regex: '"', - next: "string" - }, - { - token: [ - "punctuation.definition.variable.asp" - ], - regex: "(\\$)[a-zA-Z_x7f-xff][a-zA-Z0-9_x7f-xff]*?\\b\\s*" - }, - { - token: "support.class.asp", - regex: "\\b(?:Application|ObjectContext|Request|Response|Server|Session)\\b" - }, - { - token: "support.class.collection.asp", - regex: "\\b(?:Contents|StaticObjects|ClientCertificate|Cookies|Form|QueryString|ServerVariables)\\b" - }, - { - token: "support.constant.asp", - regex: "\\b(?:TotalBytes|Buffer|CacheControl|Charset|ContentType|Expires|ExpiresAbsolute|IsClientConnected|PICS|Status|ScriptTimeout|CodePage|LCID|SessionID|Timeout)\\b" - }, - { - token: "support.function.asp", - regex: "\\b(?:Lock|Unlock|SetAbort|SetComplete|BinaryRead|AddHeader|AppendToLog|BinaryWrite|Clear|End|Flush|Redirect|Write|CreateObject|HTMLEncode|MapPath|URLEncode|Abandon|Convert|Regex)\\b" - }, - { - token: "support.function.event.asp", - regex: "\\b(?:Application_OnEnd|Application_OnStart|OnTransactionAbort|OnTransactionCommit|Session_OnEnd|Session_OnStart)\\b" - }, - { - token: "support.function.vb.asp", - regex: "\\b(?:Array|Add|Asc|Atn|CBool|CByte|CCur|CDate|CDbl|Chr|CInt|CLng|Conversions|Cos|CreateObject|CSng|CStr|Date|DateAdd|DateDiff|DatePart|DateSerial|DateValue|Day|Derived|Math|Escape|Eval|Exists|Exp|Filter|FormatCurrency|FormatDateTime|FormatNumber|FormatPercent|GetLocale|GetObject|GetRef|Hex|Hour|InputBox|InStr|InStrRev|Int|Fix|IsArray|IsDate|IsEmpty|IsNull|IsNumeric|IsObject|Item|Items|Join|Keys|LBound|LCase|Left|Len|LoadPicture|Log|LTrim|RTrim|Trim|Maths|Mid|Minute|Month|MonthName|MsgBox|Now|Oct|Remove|RemoveAll|Replace|RGB|Right|Rnd|Round|ScriptEngine|ScriptEngineBuildVersion|ScriptEngineMajorVersion|ScriptEngineMinorVersion|Second|SetLocale|Sgn|Sin|Space|Split|Sqr|StrComp|String|StrReverse|Tan|Time|Timer|TimeSerial|TimeValue|TypeName|UBound|UCase|Unescape|VarType|Weekday|WeekdayName|Year)\\b" - }, - { - token: [ - "constant.numeric.asp" - ], - regex: "-?\\b(?:(?:0(?:x|X)[0-9a-fA-F]*)|(?:(?:[0-9]+\\.?[0-9]*)|(?:\\.[0-9]+))(?:(?:e|E)(?:\\+|-)?[0-9]+)?)(?:L|l|UL|ul|u|U|F|f)?\\b" - }, - { - token: "support.type.vb.asp", - regex: "\\b(?:vbtrue|vbfalse|vbcr|vbcrlf|vbformfeed|vblf|vbnewline|vbnullchar|vbnullstring|int32|vbtab|vbverticaltab|vbbinarycompare|vbtextcomparevbsunday|vbmonday|vbtuesday|vbwednesday|vbthursday|vbfriday|vbsaturday|vbusesystemdayofweek|vbfirstjan1|vbfirstfourdays|vbfirstfullweek|vbgeneraldate|vblongdate|vbshortdate|vblongtime|vbshorttime|vbobjecterror|vbEmpty|vbNull|vbInteger|vbLong|vbSingle|vbDouble|vbCurrency|vbDate|vbString|vbObject|vbError|vbBoolean|vbVariant|vbDataObject|vbDecimal|vbByte|vbArray)\\b" - }, - { - token: [ - "entity.name.function.asp" - ], - regex: "(?:(\\b[a-zA-Z_x7f-xff][a-zA-Z0-9_x7f-xff]*?\\b)(?=\\(\\)?))" - }, - { - token: [ - "keyword.operator.asp" - ], - regex: "\\-|\\+|\\*\\\/|\\>|\\<|\\=|\\&" - } - ], - "state_3": [ - { - token: [ - "meta.odd-tab.tabs", - "meta.even-tab.tabs" - ], - regex: "(\\t)(\\t)?" - }, - { - token: "meta.leading-space", - regex: "(?=[^\\t])", - next: "start" - }, - { - token: "meta.leading-space", - regex: ".", - next: "state_3" - } - ], - "state_4": [ - { - token: ["meta.odd-tab.spaces", "meta.even-tab.spaces"], - regex: "( )( )?" - }, - { - token: "meta.leading-space", - regex: "(?=[^ ])", - next: "start" - }, - { - defaultToken: "meta.leading-space" - } - ], - "comment": [ - { - token: "comment.line.apostrophe.asp", - regex: "$|(?=(?:%>))", - next: "start" - }, - { - defaultToken: "comment.line.apostrophe.asp" - } - ], - "string": [ - { - token: "constant.character.escape.apostrophe.asp", - regex: '""' - }, - { - token: "string.quoted.double.asp", - regex: '"', - next: "start" - }, - { - defaultToken: "string.quoted.double.asp" - } - ] -} - -}; - -oop.inherits(VBScriptHighlightRules, TextHighlightRules); - -exports.VBScriptHighlightRules = VBScriptHighlightRules; -}); \ No newline at end of file diff --git a/IDE/jsrealb-ide/ace-src-noconflict/mode-velocity.js b/IDE/jsrealb-ide/ace-src-noconflict/mode-velocity.js deleted file mode 100644 index 8b0462c6..00000000 --- a/IDE/jsrealb-ide/ace-src-noconflict/mode-velocity.js +++ /dev/null @@ -1,1621 +0,0 @@ -/* ***** BEGIN LICENSE BLOCK ***** - * Distributed under the BSD license: - * - * Copyright (c) 2012, Ajax.org B.V. - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are met: - * * Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * * Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * * Neither the name of Ajax.org B.V. nor the - * names of its contributors may be used to endorse or promote products - * derived from this software without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND - * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED - * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE - * DISCLAIMED. IN NO EVENT SHALL AJAX.ORG B.V. BE LIABLE FOR ANY - * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES - * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; - * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND - * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - * - * - * ***** END LICENSE BLOCK ***** */ - -ace.define('ace/mode/velocity', ['require', 'exports', 'module' , 'ace/lib/oop', 'ace/mode/text', 'ace/tokenizer', 'ace/mode/velocity_highlight_rules', 'ace/mode/folding/velocity', 'ace/mode/behaviour/html'], function(require, exports, module) { - - -var oop = require("../lib/oop"); -var TextMode = require("./text").Mode; -var Tokenizer = require("../tokenizer").Tokenizer; -var VelocityHighlightRules = require("./velocity_highlight_rules").VelocityHighlightRules; -var FoldMode = require("./folding/velocity").FoldMode; -var HtmlBehaviour = require("./behaviour/html").HtmlBehaviour; - -var Mode = function() { - this.HighlightRules = VelocityHighlightRules; - this.foldingRules = new FoldMode(); - this.$behaviour = new HtmlBehaviour(); -}; -oop.inherits(Mode, TextMode); - -(function() { - this.lineCommentStart = "##"; - this.blockComment = {start: "#*", end: "*#"}; - this.$id = "ace/mode/velocity"; -}).call(Mode.prototype); - -exports.Mode = Mode; -});ace.define('ace/mode/velocity_highlight_rules', ['require', 'exports', 'module' , 'ace/lib/oop', 'ace/lib/lang', 'ace/mode/text_highlight_rules', 'ace/mode/html_highlight_rules'], function(require, exports, module) { - - -var oop = require("../lib/oop"); -var lang = require("../lib/lang"); -var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; -var HtmlHighlightRules = require("./html_highlight_rules").HtmlHighlightRules; - -var VelocityHighlightRules = function() { - HtmlHighlightRules.call(this); - - var builtinConstants = lang.arrayToMap( - ('true|false|null').split('|') - ); - - var builtinFunctions = lang.arrayToMap( - ("_DateTool|_DisplayTool|_EscapeTool|_FieldTool|_MathTool|_NumberTool|_SerializerTool|_SortTool|_StringTool|_XPathTool").split('|') - ); - - var builtinVariables = lang.arrayToMap( - ('$contentRoot|$foreach').split('|') - ); - - var keywords = lang.arrayToMap( - ("#set|#macro|#include|#parse|" + - "#if|#elseif|#else|#foreach|" + - "#break|#end|#stop" - ).split('|') - ); - - this.$rules.start.push( - { - token : "comment", - regex : "##.*$" - },{ - token : "comment.block", // multi line comment - regex : "#\\*", - next : "vm_comment" - }, { - token : "string.regexp", - regex : "[/](?:(?:\\[(?:\\\\]|[^\\]])+\\])|(?:\\\\/|[^\\]/]))*[/]\\w*\\s*(?=[).,;]|$)" - }, { - token : "string", // single line - regex : '["](?:(?:\\\\.)|(?:[^"\\\\]))*?["]' - }, { - token : "string", // single line - regex : "['](?:(?:\\\\.)|(?:[^'\\\\]))*?[']" - }, { - token : "constant.numeric", // hex - regex : "0[xX][0-9a-fA-F]+\\b" - }, { - token : "constant.numeric", // float - regex : "[+-]?\\d+(?:(?:\\.\\d*)?(?:[eE][+-]?\\d+)?)?\\b" - }, { - token : "constant.language.boolean", - regex : "(?:true|false)\\b" - }, { - token : function(value) { - if (keywords.hasOwnProperty(value)) - return "keyword"; - else if (builtinConstants.hasOwnProperty(value)) - return "constant.language"; - else if (builtinVariables.hasOwnProperty(value)) - return "variable.language"; - else if (builtinFunctions.hasOwnProperty(value) || builtinFunctions.hasOwnProperty(value.substring(1))) - return "support.function"; - else if (value == "debugger") - return "invalid.deprecated"; - else - if(value.match(/^(\$[a-zA-Z_][a-zA-Z0-9_]*)$/)) - return "variable"; - return "identifier"; - }, - regex : "[a-zA-Z$#][a-zA-Z0-9_]*\\b" - }, { - token : "keyword.operator", - regex : "!|&|\\*|\\-|\\+|=|!=|<=|>=|<|>|&&|\\|\\|" - }, { - token : "lparen", - regex : "[[({]" - }, { - token : "rparen", - regex : "[\\])}]" - }, { - token : "text", - regex : "\\s+" - } - ); - - this.$rules["vm_comment"] = [ - { - token : "comment", // closing comment - regex : "\\*#|-->", - next : "start" - }, { - defaultToken: "comment" - } - ]; - - this.$rules["vm_start"] = [ - { - token: "variable", - regex: "}", - next: "pop" - }, { - token : "string.regexp", - regex : "[/](?:(?:\\[(?:\\\\]|[^\\]])+\\])|(?:\\\\/|[^\\]/]))*[/]\\w*\\s*(?=[).,;]|$)" - }, { - token : "string", // single line - regex : '["](?:(?:\\\\.)|(?:[^"\\\\]))*?["]' - }, { - token : "string", // single line - regex : "['](?:(?:\\\\.)|(?:[^'\\\\]))*?[']" - }, { - token : "constant.numeric", // hex - regex : "0[xX][0-9a-fA-F]+\\b" - }, { - token : "constant.numeric", // float - regex : "[+-]?\\d+(?:(?:\\.\\d*)?(?:[eE][+-]?\\d+)?)?\\b" - }, { - token : "constant.language.boolean", - regex : "(?:true|false)\\b" - }, { - token : function(value) { - if (keywords.hasOwnProperty(value)) - return "keyword"; - else if (builtinConstants.hasOwnProperty(value)) - return "constant.language"; - else if (builtinVariables.hasOwnProperty(value)) - return "variable.language"; - else if (builtinFunctions.hasOwnProperty(value) || builtinFunctions.hasOwnProperty(value.substring(1))) - return "support.function"; - else if (value == "debugger") - return "invalid.deprecated"; - else - if(value.match(/^(\$[a-zA-Z_$][a-zA-Z0-9_]*)$/)) - return "variable"; - return "identifier"; - }, - regex : "[a-zA-Z_$][a-zA-Z0-9_$]*\\b" - }, { - token : "keyword.operator", - regex : "!|&|\\*|\\-|\\+|=|!=|<=|>=|<|>|&&|\\|\\|" - }, { - token : "lparen", - regex : "[[({]" - }, { - token : "rparen", - regex : "[\\])}]" - }, { - token : "text", - regex : "\\s+" - } - ]; - - for (var i in this.$rules) { - this.$rules[i].unshift({ - token: "variable", - regex: "\\${", - push: "vm_start" - }); - } - - this.normalizeRules(); -}; - -oop.inherits(VelocityHighlightRules, TextHighlightRules); - -exports.VelocityHighlightRules = VelocityHighlightRules; -}); - -ace.define('ace/mode/html_highlight_rules', ['require', 'exports', 'module' , 'ace/lib/oop', 'ace/lib/lang', 'ace/mode/css_highlight_rules', 'ace/mode/javascript_highlight_rules', 'ace/mode/xml_highlight_rules'], function(require, exports, module) { - - -var oop = require("../lib/oop"); -var lang = require("../lib/lang"); -var CssHighlightRules = require("./css_highlight_rules").CssHighlightRules; -var JavaScriptHighlightRules = require("./javascript_highlight_rules").JavaScriptHighlightRules; -var XmlHighlightRules = require("./xml_highlight_rules").XmlHighlightRules; - -var tagMap = lang.createMap({ - a : 'anchor', - button : 'form', - form : 'form', - img : 'image', - input : 'form', - label : 'form', - option : 'form', - script : 'script', - select : 'form', - textarea : 'form', - style : 'style', - table : 'table', - tbody : 'table', - td : 'table', - tfoot : 'table', - th : 'table', - tr : 'table' -}); - -var HtmlHighlightRules = function() { - XmlHighlightRules.call(this); - - this.addRules({ - attributes: [{ - include : "space" - }, { - token : "entity.other.attribute-name", - regex : "[-_a-zA-Z0-9:]+" - }, { - token : "keyword.operator.separator", - regex : "=", - push : [{ - include: "space" - }, { - token : "string", - regex : "[^<>='\"`\\s]+", - next : "pop" - }, { - token : "empty", - regex : "", - next : "pop" - }] - }, { - include : "string" - }], - tag: [{ - token : function(start, tag) { - var group = tagMap[tag]; - return ["meta.tag.punctuation.begin", - "meta.tag.name" + (group ? "." + group : "")]; - }, - regex : "(<)([-_a-zA-Z0-9:]+)", - next: "start_tag_stuff" - }, { - token : function(start, tag) { - var group = tagMap[tag]; - return ["meta.tag.punctuation.begin", - "meta.tag.name" + (group ? "." + group : "")]; - }, - regex : "(", next : "start"} - ], - end_tag_stuff: [ - {include : "space"}, - {token : "meta.tag.punctuation.end", regex : ">", next : "start"} - ] - }); - - this.embedTagRules(CssHighlightRules, "css-", "style"); - this.embedTagRules(JavaScriptHighlightRules, "js-", "script"); - - if (this.constructor === HtmlHighlightRules) - this.normalizeRules(); -}; - -oop.inherits(HtmlHighlightRules, XmlHighlightRules); - -exports.HtmlHighlightRules = HtmlHighlightRules; -}); - -ace.define('ace/mode/css_highlight_rules', ['require', 'exports', 'module' , 'ace/lib/oop', 'ace/lib/lang', 'ace/mode/text_highlight_rules'], function(require, exports, module) { - - -var oop = require("../lib/oop"); -var lang = require("../lib/lang"); -var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; -var supportType = exports.supportType = "animation-fill-mode|alignment-adjust|alignment-baseline|animation-delay|animation-direction|animation-duration|animation-iteration-count|animation-name|animation-play-state|animation-timing-function|animation|appearance|azimuth|backface-visibility|background-attachment|background-break|background-clip|background-color|background-image|background-origin|background-position|background-repeat|background-size|background|baseline-shift|binding|bleed|bookmark-label|bookmark-level|bookmark-state|bookmark-target|border-bottom|border-bottom-color|border-bottom-left-radius|border-bottom-right-radius|border-bottom-style|border-bottom-width|border-collapse|border-color|border-image|border-image-outset|border-image-repeat|border-image-slice|border-image-source|border-image-width|border-left|border-left-color|border-left-style|border-left-width|border-radius|border-right|border-right-color|border-right-style|border-right-width|border-spacing|border-style|border-top|border-top-color|border-top-left-radius|border-top-right-radius|border-top-style|border-top-width|border-width|border|bottom|box-align|box-decoration-break|box-direction|box-flex-group|box-flex|box-lines|box-ordinal-group|box-orient|box-pack|box-shadow|box-sizing|break-after|break-before|break-inside|caption-side|clear|clip|color-profile|color|column-count|column-fill|column-gap|column-rule|column-rule-color|column-rule-style|column-rule-width|column-span|column-width|columns|content|counter-increment|counter-reset|crop|cue-after|cue-before|cue|cursor|direction|display|dominant-baseline|drop-initial-after-adjust|drop-initial-after-align|drop-initial-before-adjust|drop-initial-before-align|drop-initial-size|drop-initial-value|elevation|empty-cells|fit|fit-position|float-offset|float|font-family|font-size|font-size-adjust|font-stretch|font-style|font-variant|font-weight|font|grid-columns|grid-rows|hanging-punctuation|height|hyphenate-after|hyphenate-before|hyphenate-character|hyphenate-lines|hyphenate-resource|hyphens|icon|image-orientation|image-rendering|image-resolution|inline-box-align|left|letter-spacing|line-height|line-stacking-ruby|line-stacking-shift|line-stacking-strategy|line-stacking|list-style-image|list-style-position|list-style-type|list-style|margin-bottom|margin-left|margin-right|margin-top|margin|mark-after|mark-before|mark|marks|marquee-direction|marquee-play-count|marquee-speed|marquee-style|max-height|max-width|min-height|min-width|move-to|nav-down|nav-index|nav-left|nav-right|nav-up|opacity|orphans|outline-color|outline-offset|outline-style|outline-width|outline|overflow-style|overflow-x|overflow-y|overflow|padding-bottom|padding-left|padding-right|padding-top|padding|page-break-after|page-break-before|page-break-inside|page-policy|page|pause-after|pause-before|pause|perspective-origin|perspective|phonemes|pitch-range|pitch|play-during|pointer-events|position|presentation-level|punctuation-trim|quotes|rendering-intent|resize|rest-after|rest-before|rest|richness|right|rotation-point|rotation|ruby-align|ruby-overhang|ruby-position|ruby-span|size|speak-header|speak-numeral|speak-punctuation|speak|speech-rate|stress|string-set|table-layout|target-name|target-new|target-position|target|text-align-last|text-align|text-decoration|text-emphasis|text-height|text-indent|text-justify|text-outline|text-shadow|text-transform|text-wrap|top|transform-origin|transform-style|transform|transition-delay|transition-duration|transition-property|transition-timing-function|transition|unicode-bidi|vertical-align|visibility|voice-balance|voice-duration|voice-family|voice-pitch-range|voice-pitch|voice-rate|voice-stress|voice-volume|volume|white-space-collapse|white-space|widows|width|word-break|word-spacing|word-wrap|z-index"; -var supportFunction = exports.supportFunction = "rgb|rgba|url|attr|counter|counters"; -var supportConstant = exports.supportConstant = "absolute|after-edge|after|all-scroll|all|alphabetic|always|antialiased|armenian|auto|avoid-column|avoid-page|avoid|balance|baseline|before-edge|before|below|bidi-override|block-line-height|block|bold|bolder|border-box|both|bottom|box|break-all|break-word|capitalize|caps-height|caption|center|central|char|circle|cjk-ideographic|clone|close-quote|col-resize|collapse|column|consider-shifts|contain|content-box|cover|crosshair|cubic-bezier|dashed|decimal-leading-zero|decimal|default|disabled|disc|disregard-shifts|distribute-all-lines|distribute-letter|distribute-space|distribute|dotted|double|e-resize|ease-in|ease-in-out|ease-out|ease|ellipsis|end|exclude-ruby|fill|fixed|georgian|glyphs|grid-height|groove|hand|hanging|hebrew|help|hidden|hiragana-iroha|hiragana|horizontal|icon|ideograph-alpha|ideograph-numeric|ideograph-parenthesis|ideograph-space|ideographic|inactive|include-ruby|inherit|initial|inline-block|inline-box|inline-line-height|inline-table|inline|inset|inside|inter-ideograph|inter-word|invert|italic|justify|katakana-iroha|katakana|keep-all|last|left|lighter|line-edge|line-through|line|linear|list-item|local|loose|lower-alpha|lower-greek|lower-latin|lower-roman|lowercase|lr-tb|ltr|mathematical|max-height|max-size|medium|menu|message-box|middle|move|n-resize|ne-resize|newspaper|no-change|no-close-quote|no-drop|no-open-quote|no-repeat|none|normal|not-allowed|nowrap|nw-resize|oblique|open-quote|outset|outside|overline|padding-box|page|pointer|pre-line|pre-wrap|pre|preserve-3d|progress|relative|repeat-x|repeat-y|repeat|replaced|reset-size|ridge|right|round|row-resize|rtl|s-resize|scroll|se-resize|separate|slice|small-caps|small-caption|solid|space|square|start|static|status-bar|step-end|step-start|steps|stretch|strict|sub|super|sw-resize|table-caption|table-cell|table-column-group|table-column|table-footer-group|table-header-group|table-row-group|table-row|table|tb-rl|text-after-edge|text-before-edge|text-bottom|text-size|text-top|text|thick|thin|transparent|underline|upper-alpha|upper-latin|upper-roman|uppercase|use-script|vertical-ideographic|vertical-text|visible|w-resize|wait|whitespace|z-index|zero"; -var supportConstantColor = exports.supportConstantColor = "aqua|black|blue|fuchsia|gray|green|lime|maroon|navy|olive|orange|purple|red|silver|teal|white|yellow"; -var supportConstantFonts = exports.supportConstantFonts = "arial|century|comic|courier|garamond|georgia|helvetica|impact|lucida|symbol|system|tahoma|times|trebuchet|utopia|verdana|webdings|sans-serif|serif|monospace"; - -var numRe = exports.numRe = "\\-?(?:(?:[0-9]+)|(?:[0-9]*\\.[0-9]+))"; -var pseudoElements = exports.pseudoElements = "(\\:+)\\b(after|before|first-letter|first-line|moz-selection|selection)\\b"; -var pseudoClasses = exports.pseudoClasses = "(:)\\b(active|checked|disabled|empty|enabled|first-child|first-of-type|focus|hover|indeterminate|invalid|last-child|last-of-type|link|not|nth-child|nth-last-child|nth-last-of-type|nth-of-type|only-child|only-of-type|required|root|target|valid|visited)\\b"; - -var CssHighlightRules = function() { - - var keywordMapper = this.createKeywordMapper({ - "support.function": supportFunction, - "support.constant": supportConstant, - "support.type": supportType, - "support.constant.color": supportConstantColor, - "support.constant.fonts": supportConstantFonts - }, "text", true); - - this.$rules = { - "start" : [{ - token : "comment", // multi line comment - regex : "\\/\\*", - push : "comment" - }, { - token: "paren.lparen", - regex: "\\{", - push: "ruleset" - }, { - token: "string", - regex: "@.*?{", - push: "media" - }, { - token: "keyword", - regex: "#[a-z0-9-_]+" - }, { - token: "variable", - regex: "\\.[a-z0-9-_]+" - }, { - token: "string", - regex: ":[a-z0-9-_]+" - }, { - token: "constant", - regex: "[a-z0-9-_]+" - }, { - caseInsensitive: true - }], - - "media" : [{ - token : "comment", // multi line comment - regex : "\\/\\*", - push : "comment" - }, { - token: "paren.lparen", - regex: "\\{", - push: "ruleset" - }, { - token: "string", - regex: "\\}", - next: "pop" - }, { - token: "keyword", - regex: "#[a-z0-9-_]+" - }, { - token: "variable", - regex: "\\.[a-z0-9-_]+" - }, { - token: "string", - regex: ":[a-z0-9-_]+" - }, { - token: "constant", - regex: "[a-z0-9-_]+" - }, { - caseInsensitive: true - }], - - "comment" : [{ - token : "comment", - regex : "\\*\\/", - next : "pop" - }, { - defaultToken : "comment" - }], - - "ruleset" : [ - { - token : "paren.rparen", - regex : "\\}", - next: "pop" - }, { - token : "comment", // multi line comment - regex : "\\/\\*", - push : "comment" - }, { - token : "string", // single line - regex : '["](?:(?:\\\\.)|(?:[^"\\\\]))*?["]' - }, { - token : "string", // single line - regex : "['](?:(?:\\\\.)|(?:[^'\\\\]))*?[']" - }, { - token : ["constant.numeric", "keyword"], - regex : "(" + numRe + ")(ch|cm|deg|em|ex|fr|gd|grad|Hz|in|kHz|mm|ms|pc|pt|px|rad|rem|s|turn|vh|vm|vw|%)" - }, { - token : "constant.numeric", - regex : numRe - }, { - token : "constant.numeric", // hex6 color - regex : "#[a-f0-9]{6}" - }, { - token : "constant.numeric", // hex3 color - regex : "#[a-f0-9]{3}" - }, { - token : ["punctuation", "entity.other.attribute-name.pseudo-element.css"], - regex : pseudoElements - }, { - token : ["punctuation", "entity.other.attribute-name.pseudo-class.css"], - regex : pseudoClasses - }, { - token : ["support.function", "string", "support.function"], - regex : "(url\\()(.*)(\\))" - }, { - token : keywordMapper, - regex : "\\-?[a-zA-Z_][a-zA-Z0-9_\\-]*" - }, { - caseInsensitive: true - }] - }; - - this.normalizeRules(); -}; - -oop.inherits(CssHighlightRules, TextHighlightRules); - -exports.CssHighlightRules = CssHighlightRules; - -}); - -ace.define('ace/mode/javascript_highlight_rules', ['require', 'exports', 'module' , 'ace/lib/oop', 'ace/mode/doc_comment_highlight_rules', 'ace/mode/text_highlight_rules'], function(require, exports, module) { - - -var oop = require("../lib/oop"); -var DocCommentHighlightRules = require("./doc_comment_highlight_rules").DocCommentHighlightRules; -var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; - -var JavaScriptHighlightRules = function() { - var keywordMapper = this.createKeywordMapper({ - "variable.language": - "Array|Boolean|Date|Function|Iterator|Number|Object|RegExp|String|Proxy|" + // Constructors - "Namespace|QName|XML|XMLList|" + // E4X - "ArrayBuffer|Float32Array|Float64Array|Int16Array|Int32Array|Int8Array|" + - "Uint16Array|Uint32Array|Uint8Array|Uint8ClampedArray|" + - "Error|EvalError|InternalError|RangeError|ReferenceError|StopIteration|" + // Errors - "SyntaxError|TypeError|URIError|" + - "decodeURI|decodeURIComponent|encodeURI|encodeURIComponent|eval|isFinite|" + // Non-constructor functions - "isNaN|parseFloat|parseInt|" + - "JSON|Math|" + // Other - "this|arguments|prototype|window|document" , // Pseudo - "keyword": - "const|yield|import|get|set|" + - "break|case|catch|continue|default|delete|do|else|finally|for|function|" + - "if|in|instanceof|new|return|switch|throw|try|typeof|let|var|while|with|debugger|" + - "__parent__|__count__|escape|unescape|with|__proto__|" + - "class|enum|extends|super|export|implements|private|public|interface|package|protected|static", - "storage.type": - "const|let|var|function", - "constant.language": - "null|Infinity|NaN|undefined", - "support.function": - "alert", - "constant.language.boolean": "true|false" - }, "identifier"); - var kwBeforeRe = "case|do|else|finally|in|instanceof|return|throw|try|typeof|yield|void"; - var identifierRe = "[a-zA-Z\\$_\u00a1-\uffff][a-zA-Z\\d\\$_\u00a1-\uffff]*\\b"; - - var escapedRe = "\\\\(?:x[0-9a-fA-F]{2}|" + // hex - "u[0-9a-fA-F]{4}|" + // unicode - "[0-2][0-7]{0,2}|" + // oct - "3[0-6][0-7]?|" + // oct - "37[0-7]?|" + // oct - "[4-7][0-7]?|" + //oct - ".)"; - - this.$rules = { - "no_regex" : [ - { - token : "comment", - regex : "\\/\\/", - next : "line_comment" - }, - DocCommentHighlightRules.getStartRule("doc-start"), - { - token : "comment", // multi line comment - regex : /\/\*/, - next : "comment" - }, { - token : "string", - regex : "'(?=.)", - next : "qstring" - }, { - token : "string", - regex : '"(?=.)', - next : "qqstring" - }, { - token : "constant.numeric", // hex - regex : /0[xX][0-9a-fA-F]+\b/ - }, { - token : "constant.numeric", // float - regex : /[+-]?\d+(?:(?:\.\d*)?(?:[eE][+-]?\d+)?)?\b/ - }, { - token : [ - "storage.type", "punctuation.operator", "support.function", - "punctuation.operator", "entity.name.function", "text","keyword.operator" - ], - regex : "(" + identifierRe + ")(\\.)(prototype)(\\.)(" + identifierRe +")(\\s*)(=)", - next: "function_arguments" - }, { - token : [ - "storage.type", "punctuation.operator", "entity.name.function", "text", - "keyword.operator", "text", "storage.type", "text", "paren.lparen" - ], - regex : "(" + identifierRe + ")(\\.)(" + identifierRe +")(\\s*)(=)(\\s*)(function)(\\s*)(\\()", - next: "function_arguments" - }, { - token : [ - "entity.name.function", "text", "keyword.operator", "text", "storage.type", - "text", "paren.lparen" - ], - regex : "(" + identifierRe +")(\\s*)(=)(\\s*)(function)(\\s*)(\\()", - next: "function_arguments" - }, { - token : [ - "storage.type", "punctuation.operator", "entity.name.function", "text", - "keyword.operator", "text", - "storage.type", "text", "entity.name.function", "text", "paren.lparen" - ], - regex : "(" + identifierRe + ")(\\.)(" + identifierRe +")(\\s*)(=)(\\s*)(function)(\\s+)(\\w+)(\\s*)(\\()", - next: "function_arguments" - }, { - token : [ - "storage.type", "text", "entity.name.function", "text", "paren.lparen" - ], - regex : "(function)(\\s+)(" + identifierRe + ")(\\s*)(\\()", - next: "function_arguments" - }, { - token : [ - "entity.name.function", "text", "punctuation.operator", - "text", "storage.type", "text", "paren.lparen" - ], - regex : "(" + identifierRe + ")(\\s*)(:)(\\s*)(function)(\\s*)(\\()", - next: "function_arguments" - }, { - token : [ - "text", "text", "storage.type", "text", "paren.lparen" - ], - regex : "(:)(\\s*)(function)(\\s*)(\\()", - next: "function_arguments" - }, { - token : "keyword", - regex : "(?:" + kwBeforeRe + ")\\b", - next : "start" - }, { - token : ["punctuation.operator", "support.function"], - regex : /(\.)(s(?:h(?:ift|ow(?:Mod(?:elessDialog|alDialog)|Help))|croll(?:X|By(?:Pages|Lines)?|Y|To)?|t(?:op|rike)|i(?:n|zeToContent|debar|gnText)|ort|u(?:p|b(?:str(?:ing)?)?)|pli(?:ce|t)|e(?:nd|t(?:Re(?:sizable|questHeader)|M(?:i(?:nutes|lliseconds)|onth)|Seconds|Ho(?:tKeys|urs)|Year|Cursor|Time(?:out)?|Interval|ZOptions|Date|UTC(?:M(?:i(?:nutes|lliseconds)|onth)|Seconds|Hours|Date|FullYear)|FullYear|Active)|arch)|qrt|lice|avePreferences|mall)|h(?:ome|andleEvent)|navigate|c(?:har(?:CodeAt|At)|o(?:s|n(?:cat|textual|firm)|mpile)|eil|lear(?:Timeout|Interval)?|a(?:ptureEvents|ll)|reate(?:StyleSheet|Popup|EventObject))|t(?:o(?:GMTString|S(?:tring|ource)|U(?:TCString|pperCase)|Lo(?:caleString|werCase))|est|a(?:n|int(?:Enabled)?))|i(?:s(?:NaN|Finite)|ndexOf|talics)|d(?:isableExternalCapture|ump|etachEvent)|u(?:n(?:shift|taint|escape|watch)|pdateCommands)|j(?:oin|avaEnabled)|p(?:o(?:p|w)|ush|lugins.refresh|a(?:ddings|rse(?:Int|Float)?)|r(?:int|ompt|eference))|e(?:scape|nableExternalCapture|val|lementFromPoint|x(?:p|ec(?:Script|Command)?))|valueOf|UTC|queryCommand(?:State|Indeterm|Enabled|Value)|f(?:i(?:nd|le(?:ModifiedDate|Size|CreatedDate|UpdatedDate)|xed)|o(?:nt(?:size|color)|rward)|loor|romCharCode)|watch|l(?:ink|o(?:ad|g)|astIndexOf)|a(?:sin|nchor|cos|t(?:tachEvent|ob|an(?:2)?)|pply|lert|b(?:s|ort))|r(?:ou(?:nd|teEvents)|e(?:size(?:By|To)|calc|turnValue|place|verse|l(?:oad|ease(?:Capture|Events)))|andom)|g(?:o|et(?:ResponseHeader|M(?:i(?:nutes|lliseconds)|onth)|Se(?:conds|lection)|Hours|Year|Time(?:zoneOffset)?|Da(?:y|te)|UTC(?:M(?:i(?:nutes|lliseconds)|onth)|Seconds|Hours|Da(?:y|te)|FullYear)|FullYear|A(?:ttention|llResponseHeaders)))|m(?:in|ove(?:B(?:y|elow)|To(?:Absolute)?|Above)|ergeAttributes|a(?:tch|rgins|x))|b(?:toa|ig|o(?:ld|rderWidths)|link|ack))\b(?=\()/ - }, { - token : ["punctuation.operator", "support.function.dom"], - regex : /(\.)(s(?:ub(?:stringData|mit)|plitText|e(?:t(?:NamedItem|Attribute(?:Node)?)|lect))|has(?:ChildNodes|Feature)|namedItem|c(?:l(?:ick|o(?:se|neNode))|reate(?:C(?:omment|DATASection|aption)|T(?:Head|extNode|Foot)|DocumentFragment|ProcessingInstruction|E(?:ntityReference|lement)|Attribute))|tabIndex|i(?:nsert(?:Row|Before|Cell|Data)|tem)|open|delete(?:Row|C(?:ell|aption)|T(?:Head|Foot)|Data)|focus|write(?:ln)?|a(?:dd|ppend(?:Child|Data))|re(?:set|place(?:Child|Data)|move(?:NamedItem|Child|Attribute(?:Node)?)?)|get(?:NamedItem|Element(?:sBy(?:Name|TagName)|ById)|Attribute(?:Node)?)|blur)\b(?=\()/ - }, { - token : ["punctuation.operator", "support.constant"], - regex : /(\.)(s(?:ystemLanguage|cr(?:ipts|ollbars|een(?:X|Y|Top|Left))|t(?:yle(?:Sheets)?|atus(?:Text|bar)?)|ibling(?:Below|Above)|ource|uffixes|e(?:curity(?:Policy)?|l(?:ection|f)))|h(?:istory|ost(?:name)?|as(?:h|Focus))|y|X(?:MLDocument|SLDocument)|n(?:ext|ame(?:space(?:s|URI)|Prop))|M(?:IN_VALUE|AX_VALUE)|c(?:haracterSet|o(?:n(?:structor|trollers)|okieEnabled|lorDepth|mp(?:onents|lete))|urrent|puClass|l(?:i(?:p(?:boardData)?|entInformation)|osed|asses)|alle(?:e|r)|rypto)|t(?:o(?:olbar|p)|ext(?:Transform|Indent|Decoration|Align)|ags)|SQRT(?:1_2|2)|i(?:n(?:ner(?:Height|Width)|put)|ds|gnoreCase)|zIndex|o(?:scpu|n(?:readystatechange|Line)|uter(?:Height|Width)|p(?:sProfile|ener)|ffscreenBuffering)|NEGATIVE_INFINITY|d(?:i(?:splay|alog(?:Height|Top|Width|Left|Arguments)|rectories)|e(?:scription|fault(?:Status|Ch(?:ecked|arset)|View)))|u(?:ser(?:Profile|Language|Agent)|n(?:iqueID|defined)|pdateInterval)|_content|p(?:ixelDepth|ort|ersonalbar|kcs11|l(?:ugins|atform)|a(?:thname|dding(?:Right|Bottom|Top|Left)|rent(?:Window|Layer)?|ge(?:X(?:Offset)?|Y(?:Offset)?))|r(?:o(?:to(?:col|type)|duct(?:Sub)?|mpter)|e(?:vious|fix)))|e(?:n(?:coding|abledPlugin)|x(?:ternal|pando)|mbeds)|v(?:isibility|endor(?:Sub)?|Linkcolor)|URLUnencoded|P(?:I|OSITIVE_INFINITY)|f(?:ilename|o(?:nt(?:Size|Family|Weight)|rmName)|rame(?:s|Element)|gColor)|E|whiteSpace|l(?:i(?:stStyleType|n(?:eHeight|kColor))|o(?:ca(?:tion(?:bar)?|lName)|wsrc)|e(?:ngth|ft(?:Context)?)|a(?:st(?:M(?:odified|atch)|Index|Paren)|yer(?:s|X)|nguage))|a(?:pp(?:MinorVersion|Name|Co(?:deName|re)|Version)|vail(?:Height|Top|Width|Left)|ll|r(?:ity|guments)|Linkcolor|bove)|r(?:ight(?:Context)?|e(?:sponse(?:XML|Text)|adyState))|global|x|m(?:imeTypes|ultiline|enubar|argin(?:Right|Bottom|Top|Left))|L(?:N(?:10|2)|OG(?:10E|2E))|b(?:o(?:ttom|rder(?:Width|RightWidth|BottomWidth|Style|Color|TopWidth|LeftWidth))|ufferDepth|elow|ackground(?:Color|Image)))\b/ - }, { - token : ["storage.type", "punctuation.operator", "support.function.firebug"], - regex : /(console)(\.)(warn|info|log|error|time|timeEnd|assert)\b/ - }, { - token : keywordMapper, - regex : identifierRe - }, { - token : "keyword.operator", - regex : /--|\+\+|[!$%&*+\-~]|===|==|=|!=|!==|<=|>=|<<=|>>=|>>>=|<>|<|>|!|&&|\|\||\?\:|\*=|%=|\+=|\-=|&=|\^=/, - next : "start" - }, { - token : "punctuation.operator", - regex : /\?|\:|\,|\;|\./, - next : "start" - }, { - token : "paren.lparen", - regex : /[\[({]/, - next : "start" - }, { - token : "paren.rparen", - regex : /[\])}]/ - }, { - token : "keyword.operator", - regex : /\/=?/, - next : "start" - }, { - token: "comment", - regex: /^#!.*$/ - } - ], - "start": [ - DocCommentHighlightRules.getStartRule("doc-start"), - { - token : "comment", // multi line comment - regex : "\\/\\*", - next : "comment_regex_allowed" - }, { - token : "comment", - regex : "\\/\\/", - next : "line_comment_regex_allowed" - }, { - token: "string.regexp", - regex: "\\/", - next: "regex" - }, { - token : "text", - regex : "\\s+|^$", - next : "start" - }, { - token: "empty", - regex: "", - next: "no_regex" - } - ], - "regex": [ - { - token: "regexp.keyword.operator", - regex: "\\\\(?:u[\\da-fA-F]{4}|x[\\da-fA-F]{2}|.)" - }, { - token: "string.regexp", - regex: "/[sxngimy]*", - next: "no_regex" - }, { - token : "invalid", - regex: /\{\d+\b,?\d*\}[+*]|[+*$^?][+*]|[$^][?]|\?{3,}/ - }, { - token : "constant.language.escape", - regex: /\(\?[:=!]|\)|\{\d+\b,?\d*\}|[+*]\?|[()$^+*?.]/ - }, { - token : "constant.language.delimiter", - regex: /\|/ - }, { - token: "constant.language.escape", - regex: /\[\^?/, - next: "regex_character_class" - }, { - token: "empty", - regex: "$", - next: "no_regex" - }, { - defaultToken: "string.regexp" - } - ], - "regex_character_class": [ - { - token: "regexp.keyword.operator", - regex: "\\\\(?:u[\\da-fA-F]{4}|x[\\da-fA-F]{2}|.)" - }, { - token: "constant.language.escape", - regex: "]", - next: "regex" - }, { - token: "constant.language.escape", - regex: "-" - }, { - token: "empty", - regex: "$", - next: "no_regex" - }, { - defaultToken: "string.regexp.charachterclass" - } - ], - "function_arguments": [ - { - token: "variable.parameter", - regex: identifierRe - }, { - token: "punctuation.operator", - regex: "[, ]+" - }, { - token: "punctuation.operator", - regex: "$" - }, { - token: "empty", - regex: "", - next: "no_regex" - } - ], - "comment_regex_allowed" : [ - {token : "comment", regex : "\\*\\/", next : "start"}, - {defaultToken : "comment"} - ], - "comment" : [ - {token : "comment", regex : "\\*\\/", next : "no_regex"}, - {defaultToken : "comment"} - ], - "line_comment_regex_allowed" : [ - {token : "comment", regex : "$|^", next : "start"}, - {defaultToken : "comment"} - ], - "line_comment" : [ - {token : "comment", regex : "$|^", next : "no_regex"}, - {defaultToken : "comment"} - ], - "qqstring" : [ - { - token : "constant.language.escape", - regex : escapedRe - }, { - token : "string", - regex : "\\\\$", - next : "qqstring" - }, { - token : "string", - regex : '"|$', - next : "no_regex" - }, { - defaultToken: "string" - } - ], - "qstring" : [ - { - token : "constant.language.escape", - regex : escapedRe - }, { - token : "string", - regex : "\\\\$", - next : "qstring" - }, { - token : "string", - regex : "'|$", - next : "no_regex" - }, { - defaultToken: "string" - } - ] - }; - - this.embedRules(DocCommentHighlightRules, "doc-", - [ DocCommentHighlightRules.getEndRule("no_regex") ]); -}; - -oop.inherits(JavaScriptHighlightRules, TextHighlightRules); - -exports.JavaScriptHighlightRules = JavaScriptHighlightRules; -}); - -ace.define('ace/mode/doc_comment_highlight_rules', ['require', 'exports', 'module' , 'ace/lib/oop', 'ace/mode/text_highlight_rules'], function(require, exports, module) { - - -var oop = require("../lib/oop"); -var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; - -var DocCommentHighlightRules = function() { - - this.$rules = { - "start" : [ { - token : "comment.doc.tag", - regex : "@[\\w\\d_]+" // TODO: fix email addresses - }, { - token : "comment.doc.tag", - regex : "\\bTODO\\b" - }, { - defaultToken : "comment.doc" - }] - }; -}; - -oop.inherits(DocCommentHighlightRules, TextHighlightRules); - -DocCommentHighlightRules.getStartRule = function(start) { - return { - token : "comment.doc", // doc comment - regex : "\\/\\*(?=\\*)", - next : start - }; -}; - -DocCommentHighlightRules.getEndRule = function (start) { - return { - token : "comment.doc", // closing comment - regex : "\\*\\/", - next : start - }; -}; - - -exports.DocCommentHighlightRules = DocCommentHighlightRules; - -}); - -ace.define('ace/mode/xml_highlight_rules', ['require', 'exports', 'module' , 'ace/lib/oop', 'ace/mode/xml_util', 'ace/mode/text_highlight_rules'], function(require, exports, module) { - - -var oop = require("../lib/oop"); -var xmlUtil = require("./xml_util"); -var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; - -var XmlHighlightRules = function(normalize) { - this.$rules = { - start : [ - {token : "punctuation.string.begin", regex : "<\\!\\[CDATA\\[", next : "cdata"}, - { - token : ["punctuation.instruction.begin", "keyword.instruction"], - regex : "(<\\?)(xml)(?=[\\s])", next : "xml_declaration" - }, - { - token : ["punctuation.instruction.begin", "keyword.instruction"], - regex : "(<\\?)([-_a-zA-Z0-9]+)", next : "instruction" - }, - {token : "comment", regex : "<\\!--", next : "comment"}, - { - token : ["punctuation.doctype.begin", "meta.tag.doctype"], - regex : "(<\\!)(DOCTYPE)(?=[\\s])", next : "doctype" - }, - {include : "tag"}, - {include : "reference"} - ], - - xml_declaration : [ - {include : "attributes"}, - {include : "instruction"} - ], - - instruction : [ - {token : "punctuation.instruction.end", regex : "\\?>", next : "start"} - ], - - doctype : [ - {include : "space"}, - {include : "string"}, - {token : "punctuation.doctype.end", regex : ">", next : "start"}, - {token : "xml-pe", regex : "[-_a-zA-Z0-9:]+"}, - {token : "punctuation.begin", regex : "\\[", push : "declarations"} - ], - - declarations : [{ - token : "text", - regex : "\\s+" - }, { - token: "punctuation.end", - regex: "]", - next: "pop" - }, { - token : ["punctuation.begin", "keyword"], - regex : "(<\\!)([-_a-zA-Z0-9]+)", - push : [{ - token : "text", - regex : "\\s+" - }, - { - token : "punctuation.end", - regex : ">", - next : "pop" - }, - {include : "string"}] - }], - - cdata : [ - {token : "string.end", regex : "\\]\\]>", next : "start"}, - {token : "text", regex : "\\s+"}, - {token : "text", regex : "(?:[^\\]]|\\](?!\\]>))+"} - ], - - comment : [ - {token : "comment", regex : "-->", next : "start"}, - {defaultToken : "comment"} - ], - - tag : [{ - token : ["meta.tag.punctuation.begin", "meta.tag.name"], - regex : "(<)((?:[-_a-zA-Z0-9]+:)?[-_a-zA-Z0-9]+)", - next: [ - {include : "attributes"}, - {token : "meta.tag.punctuation.end", regex : "/?>", next : "start"} - ] - }, { - token : ["meta.tag.punctuation.begin", "meta.tag.name"], - regex : "(", next : "start"} - ] - }], - - space : [ - {token : "text", regex : "\\s+"} - ], - - reference : [{ - token : "constant.language.escape", - regex : "(?:&#[0-9]+;)|(?:&#x[0-9a-fA-F]+;)|(?:&[a-zA-Z0-9_:\\.-]+;)" - }, { - token : "text", regex : "&" - }], - - string: [{ - token : "string", - regex : "'", - push : "qstring_inner" - }, { - token : "string", - regex : '"', - push : "qqstring_inner" - }], - - qstring_inner: [ - {token : "string", regex: "'", next: "pop"}, - {include : "reference"}, - {defaultToken : "string"} - ], - - qqstring_inner: [ - {token : "string", regex: '"', next: "pop"}, - {include : "reference"}, - {defaultToken : "string"} - ], - - attributes: [{ - token : "entity.other.attribute-name", - regex : "(?:[-_a-zA-Z0-9]+:)?[-_a-zA-Z0-9]+" - }, { - token : "keyword.operator.separator", - regex : "=" - }, { - include : "space" - }, { - include : "string" - }] - }; - - if (this.constructor === XmlHighlightRules) - this.normalizeRules(); -}; - - -(function() { - - this.embedTagRules = function(HighlightRules, prefix, tag){ - this.$rules.tag.unshift({ - token : ["meta.tag.punctuation.begin", "meta.tag.name." + tag], - regex : "(<)(" + tag + ")", - next: [ - {include : "space"}, - {include : "attributes"}, - {token : "meta.tag.punctuation.end", regex : "/?>", next : prefix + "start"} - ] - }); - - this.$rules[tag + "-end"] = [ - {include : "space"}, - {token : "meta.tag.punctuation.end", regex : ">", next: "start", - onMatch : function(value, currentState, stack) { - stack.splice(0); - return this.token; - }} - ] - - this.embedRules(HighlightRules, prefix, [{ - token: ["meta.tag.punctuation.begin", "meta.tag.name." + tag], - regex : "(" - }]); - }; - -}).call(TextHighlightRules.prototype); - -oop.inherits(XmlHighlightRules, TextHighlightRules); - -exports.XmlHighlightRules = XmlHighlightRules; -}); - -ace.define('ace/mode/xml_util', ['require', 'exports', 'module' ], function(require, exports, module) { - - -function string(state) { - return [{ - token : "string", - regex : '"', - next : state + "_qqstring" - }, { - token : "string", - regex : "'", - next : state + "_qstring" - }]; -} - -function multiLineString(quote, state) { - return [ - {token : "string", regex : quote, next : state}, - { - token : "constant.language.escape", - regex : "(?:&#[0-9]+;)|(?:&#x[0-9a-fA-F]+;)|(?:&[a-zA-Z0-9_:\\.-]+;)" - }, - {defaultToken : "string"} - ]; -} - -exports.tag = function(states, name, nextState, tagMap) { - states[name] = [{ - token : "text", - regex : "\\s+" - }, { - - token : !tagMap ? "meta.tag.tag-name" : function(value) { - if (tagMap[value]) - return "meta.tag.tag-name." + tagMap[value]; - else - return "meta.tag.tag-name"; - }, - regex : "[-_a-zA-Z0-9:]+", - next : name + "_embed_attribute_list" - }, { - token: "empty", - regex: "", - next : name + "_embed_attribute_list" - }]; - - states[name + "_qstring"] = multiLineString("'", name + "_embed_attribute_list"); - states[name + "_qqstring"] = multiLineString("\"", name + "_embed_attribute_list"); - - states[name + "_embed_attribute_list"] = [{ - token : "meta.tag.r", - regex : "/?>", - next : nextState - }, { - token : "keyword.operator", - regex : "=" - }, { - token : "entity.other.attribute-name", - regex : "[-_a-zA-Z0-9:]+" - }, { - token : "constant.numeric", // float - regex : "[+-]?\\d+(?:(?:\\.\\d*)?(?:[eE][+-]?\\d+)?)?\\b" - }, { - token : "text", - regex : "\\s+" - }].concat(string(name)); -}; - -}); - -ace.define('ace/mode/folding/velocity', ['require', 'exports', 'module' , 'ace/lib/oop', 'ace/mode/folding/fold_mode', 'ace/range'], function(require, exports, module) { - - -var oop = require("../../lib/oop"); -var BaseFoldMode = require("./fold_mode").FoldMode; -var Range = require("../../range").Range; - -var FoldMode = exports.FoldMode = function() {}; -oop.inherits(FoldMode, BaseFoldMode); - -(function() { - - this.getFoldWidgetRange = function(session, foldStyle, row) { - var range = this.indentationBlock(session, row); - if (range) - return range; - - var re = /\S/; - var line = session.getLine(row); - var startLevel = line.search(re); - if (startLevel == -1 || line[startLevel] != "##") - return; - - var startColumn = line.length; - var maxRow = session.getLength(); - var startRow = row; - var endRow = row; - - while (++row < maxRow) { - line = session.getLine(row); - var level = line.search(re); - - if (level == -1) - continue; - - if (line[level] != "##") - break; - - endRow = row; - } - - if (endRow > startRow) { - var endColumn = session.getLine(endRow).length; - return new Range(startRow, startColumn, endRow, endColumn); - } - }; - this.getFoldWidget = function(session, foldStyle, row) { - var line = session.getLine(row); - var indent = line.search(/\S/); - var next = session.getLine(row + 1); - var prev = session.getLine(row - 1); - var prevIndent = prev.search(/\S/); - var nextIndent = next.search(/\S/); - - if (indent == -1) { - session.foldWidgets[row - 1] = prevIndent!= -1 && prevIndent < nextIndent ? "start" : ""; - return ""; - } - if (prevIndent == -1) { - if (indent == nextIndent && line[indent] == "##" && next[indent] == "##") { - session.foldWidgets[row - 1] = ""; - session.foldWidgets[row + 1] = ""; - return "start"; - } - } else if (prevIndent == indent && line[indent] == "##" && prev[indent] == "##") { - if (session.getLine(row - 2).search(/\S/) == -1) { - session.foldWidgets[row - 1] = "start"; - session.foldWidgets[row + 1] = ""; - return ""; - } - } - - if (prevIndent!= -1 && prevIndent < indent) - session.foldWidgets[row - 1] = "start"; - else - session.foldWidgets[row - 1] = ""; - - if (indent < nextIndent) - return "start"; - else - return ""; - }; - -}).call(FoldMode.prototype); - -}); - -ace.define('ace/mode/behaviour/html', ['require', 'exports', 'module' , 'ace/lib/oop', 'ace/mode/behaviour/xml', 'ace/mode/behaviour/cstyle', 'ace/token_iterator'], function(require, exports, module) { - - -var oop = require("../../lib/oop"); -var XmlBehaviour = require("../behaviour/xml").XmlBehaviour; -var CstyleBehaviour = require("./cstyle").CstyleBehaviour; -var TokenIterator = require("../../token_iterator").TokenIterator; -var voidElements = ['area', 'base', 'br', 'col', 'command', 'embed', 'hr', 'img', 'input', 'keygen', 'link', 'meta', 'param', 'source', 'track', 'wbr']; - -function hasType(token, type) { - var tokenTypes = token.type.split('.'); - return type.split('.').every(function(type){ - return (tokenTypes.indexOf(type) !== -1); - }); - return hasType; -} - -var HtmlBehaviour = function () { - - this.inherit(XmlBehaviour); // Get xml behaviour - - this.add("autoclosing", "insertion", function (state, action, editor, session, text) { - if (text == '>') { - var position = editor.getCursorPosition(); - var iterator = new TokenIterator(session, position.row, position.column); - var token = iterator.getCurrentToken(); - - if (token && hasType(token, 'string') && iterator.getCurrentTokenColumn() + token.value.length > position.column) - return; - var atCursor = false; - if (!token || !hasType(token, 'meta.tag') && !(hasType(token, 'text') && token.value.match('/'))){ - do { - token = iterator.stepBackward(); - } while (token && (hasType(token, 'string') || hasType(token, 'keyword.operator') || hasType(token, 'entity.attribute-name') || hasType(token, 'text'))); - } else { - atCursor = true; - } - if (!token || !hasType(token, 'meta.tag.name') || iterator.stepBackward().value.match('/')) { - return; - } - var element = token.value; - if (atCursor){ - var element = element.substring(0, position.column - token.start); - } - if (voidElements.indexOf(element) !== -1){ - return; - } - return { - text: '>' + '', - selection: [1, 1] - } - } - }); -} -oop.inherits(HtmlBehaviour, XmlBehaviour); - -exports.HtmlBehaviour = HtmlBehaviour; -}); - -ace.define('ace/mode/behaviour/xml', ['require', 'exports', 'module' , 'ace/lib/oop', 'ace/mode/behaviour', 'ace/mode/behaviour/cstyle', 'ace/token_iterator'], function(require, exports, module) { - - -var oop = require("../../lib/oop"); -var Behaviour = require("../behaviour").Behaviour; -var CstyleBehaviour = require("./cstyle").CstyleBehaviour; -var TokenIterator = require("../../token_iterator").TokenIterator; - -function hasType(token, type) { - var tokenTypes = token.type.split('.'); - return type.split('.').every(function(type){ - return (tokenTypes.indexOf(type) !== -1); - }); - return hasType; -} - -var XmlBehaviour = function () { - - this.inherit(CstyleBehaviour, ["string_dquotes"]); // Get string behaviour - - this.add("autoclosing", "insertion", function (state, action, editor, session, text) { - if (text == '>') { - var position = editor.getCursorPosition(); - var iterator = new TokenIterator(session, position.row, position.column); - var token = iterator.getCurrentToken(); - - if (token && hasType(token, 'string') && iterator.getCurrentTokenColumn() + token.value.length > position.column) - return; - var atCursor = false; - if (!token || !hasType(token, 'meta.tag') && !(hasType(token, 'text') && token.value.match('/'))){ - do { - token = iterator.stepBackward(); - } while (token && (hasType(token, 'string') || hasType(token, 'keyword.operator') || hasType(token, 'entity.attribute-name') || hasType(token, 'text'))); - } else { - atCursor = true; - } - if (!token || !hasType(token, 'meta.tag.name') || iterator.stepBackward().value.match('/')) { - return; - } - var tag = token.value; - if (atCursor){ - var tag = tag.substring(0, position.column - token.start); - } - - return { - text: '>' + '', - selection: [1, 1] - } - } - }); - - this.add('autoindent', 'insertion', function (state, action, editor, session, text) { - if (text == "\n") { - var cursor = editor.getCursorPosition(); - var line = session.getLine(cursor.row); - var rightChars = line.substring(cursor.column, cursor.column + 2); - if (rightChars == ' -1; - }; - - CstyleBehaviour.recordAutoInsert = function(editor, session, bracket) { - var cursor = editor.getCursorPosition(); - var line = session.doc.getLine(cursor.row); - if (!this.isAutoInsertedClosing(cursor, line, autoInsertedLineEnd[0])) - autoInsertedBrackets = 0; - autoInsertedRow = cursor.row; - autoInsertedLineEnd = bracket + line.substr(cursor.column); - autoInsertedBrackets++; - }; - - CstyleBehaviour.recordMaybeInsert = function(editor, session, bracket) { - var cursor = editor.getCursorPosition(); - var line = session.doc.getLine(cursor.row); - if (!this.isMaybeInsertedClosing(cursor, line)) - maybeInsertedBrackets = 0; - maybeInsertedRow = cursor.row; - maybeInsertedLineStart = line.substr(0, cursor.column) + bracket; - maybeInsertedLineEnd = line.substr(cursor.column); - maybeInsertedBrackets++; - }; - - CstyleBehaviour.isAutoInsertedClosing = function(cursor, line, bracket) { - return autoInsertedBrackets > 0 && - cursor.row === autoInsertedRow && - bracket === autoInsertedLineEnd[0] && - line.substr(cursor.column) === autoInsertedLineEnd; - }; - - CstyleBehaviour.isMaybeInsertedClosing = function(cursor, line) { - return maybeInsertedBrackets > 0 && - cursor.row === maybeInsertedRow && - line.substr(cursor.column) === maybeInsertedLineEnd && - line.substr(0, cursor.column) == maybeInsertedLineStart; - }; - - CstyleBehaviour.popAutoInsertedClosing = function() { - autoInsertedLineEnd = autoInsertedLineEnd.substr(1); - autoInsertedBrackets--; - }; - - CstyleBehaviour.clearMaybeInsertedClosing = function() { - maybeInsertedBrackets = 0; - maybeInsertedRow = -1; - }; - - this.add("braces", "insertion", function (state, action, editor, session, text) { - var cursor = editor.getCursorPosition(); - var line = session.doc.getLine(cursor.row); - if (text == '{') { - var selection = editor.getSelectionRange(); - var selected = session.doc.getTextRange(selection); - if (selected !== "" && selected !== "{" && editor.getWrapBehavioursEnabled()) { - return { - text: '{' + selected + '}', - selection: false - }; - } else if (CstyleBehaviour.isSaneInsertion(editor, session)) { - if (/[\]\}\)]/.test(line[cursor.column]) || editor.inMultiSelectMode) { - CstyleBehaviour.recordAutoInsert(editor, session, "}"); - return { - text: '{}', - selection: [1, 1] - }; - } else { - CstyleBehaviour.recordMaybeInsert(editor, session, "{"); - return { - text: '{', - selection: [1, 1] - }; - } - } - } else if (text == '}') { - var rightChar = line.substring(cursor.column, cursor.column + 1); - if (rightChar == '}') { - var matching = session.$findOpeningBracket('}', {column: cursor.column + 1, row: cursor.row}); - if (matching !== null && CstyleBehaviour.isAutoInsertedClosing(cursor, line, text)) { - CstyleBehaviour.popAutoInsertedClosing(); - return { - text: '', - selection: [1, 1] - }; - } - } - } else if (text == "\n" || text == "\r\n") { - var closing = ""; - if (CstyleBehaviour.isMaybeInsertedClosing(cursor, line)) { - closing = lang.stringRepeat("}", maybeInsertedBrackets); - CstyleBehaviour.clearMaybeInsertedClosing(); - } - var rightChar = line.substring(cursor.column, cursor.column + 1); - if (rightChar === '}') { - var openBracePos = session.findMatchingBracket({row: cursor.row, column: cursor.column+1}, '}'); - if (!openBracePos) - return null; - var next_indent = this.$getIndent(session.getLine(openBracePos.row)); - } else if (closing) { - var next_indent = this.$getIndent(line); - } else { - return; - } - var indent = next_indent + session.getTabString(); - - return { - text: '\n' + indent + '\n' + next_indent + closing, - selection: [1, indent.length, 1, indent.length] - }; - } else { - CstyleBehaviour.clearMaybeInsertedClosing(); - } - }); - - this.add("braces", "deletion", function (state, action, editor, session, range) { - var selected = session.doc.getTextRange(range); - if (!range.isMultiLine() && selected == '{') { - var line = session.doc.getLine(range.start.row); - var rightChar = line.substring(range.end.column, range.end.column + 1); - if (rightChar == '}') { - range.end.column++; - return range; - } else { - maybeInsertedBrackets--; - } - } - }); - - this.add("parens", "insertion", function (state, action, editor, session, text) { - if (text == '(') { - var selection = editor.getSelectionRange(); - var selected = session.doc.getTextRange(selection); - if (selected !== "" && editor.getWrapBehavioursEnabled()) { - return { - text: '(' + selected + ')', - selection: false - }; - } else if (CstyleBehaviour.isSaneInsertion(editor, session)) { - CstyleBehaviour.recordAutoInsert(editor, session, ")"); - return { - text: '()', - selection: [1, 1] - }; - } - } else if (text == ')') { - var cursor = editor.getCursorPosition(); - var line = session.doc.getLine(cursor.row); - var rightChar = line.substring(cursor.column, cursor.column + 1); - if (rightChar == ')') { - var matching = session.$findOpeningBracket(')', {column: cursor.column + 1, row: cursor.row}); - if (matching !== null && CstyleBehaviour.isAutoInsertedClosing(cursor, line, text)) { - CstyleBehaviour.popAutoInsertedClosing(); - return { - text: '', - selection: [1, 1] - }; - } - } - } - }); - - this.add("parens", "deletion", function (state, action, editor, session, range) { - var selected = session.doc.getTextRange(range); - if (!range.isMultiLine() && selected == '(') { - var line = session.doc.getLine(range.start.row); - var rightChar = line.substring(range.start.column + 1, range.start.column + 2); - if (rightChar == ')') { - range.end.column++; - return range; - } - } - }); - - this.add("brackets", "insertion", function (state, action, editor, session, text) { - if (text == '[') { - var selection = editor.getSelectionRange(); - var selected = session.doc.getTextRange(selection); - if (selected !== "" && editor.getWrapBehavioursEnabled()) { - return { - text: '[' + selected + ']', - selection: false - }; - } else if (CstyleBehaviour.isSaneInsertion(editor, session)) { - CstyleBehaviour.recordAutoInsert(editor, session, "]"); - return { - text: '[]', - selection: [1, 1] - }; - } - } else if (text == ']') { - var cursor = editor.getCursorPosition(); - var line = session.doc.getLine(cursor.row); - var rightChar = line.substring(cursor.column, cursor.column + 1); - if (rightChar == ']') { - var matching = session.$findOpeningBracket(']', {column: cursor.column + 1, row: cursor.row}); - if (matching !== null && CstyleBehaviour.isAutoInsertedClosing(cursor, line, text)) { - CstyleBehaviour.popAutoInsertedClosing(); - return { - text: '', - selection: [1, 1] - }; - } - } - } - }); - - this.add("brackets", "deletion", function (state, action, editor, session, range) { - var selected = session.doc.getTextRange(range); - if (!range.isMultiLine() && selected == '[') { - var line = session.doc.getLine(range.start.row); - var rightChar = line.substring(range.start.column + 1, range.start.column + 2); - if (rightChar == ']') { - range.end.column++; - return range; - } - } - }); - - this.add("string_dquotes", "insertion", function (state, action, editor, session, text) { - if (text == '"' || text == "'") { - var quote = text; - var selection = editor.getSelectionRange(); - var selected = session.doc.getTextRange(selection); - if (selected !== "" && selected !== "'" && selected != '"' && editor.getWrapBehavioursEnabled()) { - return { - text: quote + selected + quote, - selection: false - }; - } else { - var cursor = editor.getCursorPosition(); - var line = session.doc.getLine(cursor.row); - var leftChar = line.substring(cursor.column-1, cursor.column); - if (leftChar == '\\') { - return null; - } - var tokens = session.getTokens(selection.start.row); - var col = 0, token; - var quotepos = -1; // Track whether we're inside an open quote. - - for (var x = 0; x < tokens.length; x++) { - token = tokens[x]; - if (token.type == "string") { - quotepos = -1; - } else if (quotepos < 0) { - quotepos = token.value.indexOf(quote); - } - if ((token.value.length + col) > selection.start.column) { - break; - } - col += tokens[x].value.length; - } - if (!token || (quotepos < 0 && token.type !== "comment" && (token.type !== "string" || ((selection.start.column !== token.value.length+col-1) && token.value.lastIndexOf(quote) === token.value.length-1)))) { - if (!CstyleBehaviour.isSaneInsertion(editor, session)) - return; - return { - text: quote + quote, - selection: [1,1] - }; - } else if (token && token.type === "string") { - var rightChar = line.substring(cursor.column, cursor.column + 1); - if (rightChar == quote) { - return { - text: '', - selection: [1, 1] - }; - } - } - } - } - }); - - this.add("string_dquotes", "deletion", function (state, action, editor, session, range) { - var selected = session.doc.getTextRange(range); - if (!range.isMultiLine() && (selected == '"' || selected == "'")) { - var line = session.doc.getLine(range.start.row); - var rightChar = line.substring(range.start.column + 1, range.start.column + 2); - if (rightChar == selected) { - range.end.column++; - return range; - } - } - }); - -}; - -oop.inherits(CstyleBehaviour, Behaviour); - -exports.CstyleBehaviour = CstyleBehaviour; -}); diff --git a/IDE/jsrealb-ide/ace-src-noconflict/mode-verilog.js b/IDE/jsrealb-ide/ace-src-noconflict/mode-verilog.js deleted file mode 100644 index 2d4bb2bc..00000000 --- a/IDE/jsrealb-ide/ace-src-noconflict/mode-verilog.js +++ /dev/null @@ -1,127 +0,0 @@ -/* ***** BEGIN LICENSE BLOCK ***** - * Distributed under the BSD license: - * - * Copyright (c) 2010, Ajax.org B.V. - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are met: - * * Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * * Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * * Neither the name of Ajax.org B.V. nor the - * names of its contributors may be used to endorse or promote products - * derived from this software without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND - * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED - * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE - * DISCLAIMED. IN NO EVENT SHALL AJAX.ORG B.V. BE LIABLE FOR ANY - * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES - * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; - * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND - * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - * - * ***** END LICENSE BLOCK ***** */ - -ace.define('ace/mode/verilog', ['require', 'exports', 'module' , 'ace/lib/oop', 'ace/mode/text', 'ace/tokenizer', 'ace/mode/verilog_highlight_rules', 'ace/range'], function(require, exports, module) { - - -var oop = require("../lib/oop"); -var TextMode = require("./text").Mode; -var Tokenizer = require("../tokenizer").Tokenizer; -var VerilogHighlightRules = require("./verilog_highlight_rules").VerilogHighlightRules; -var Range = require("../range").Range; - -var Mode = function() { - this.HighlightRules = VerilogHighlightRules; -}; -oop.inherits(Mode, TextMode); - -(function() { - - this.lineCommentStart = "//"; - this.blockComment = {start: "/*", end: "*/"}; - - this.$id = "ace/mode/verilog"; -}).call(Mode.prototype); - -exports.Mode = Mode; - -}); - - -ace.define('ace/mode/verilog_highlight_rules', ['require', 'exports', 'module' , 'ace/lib/oop', 'ace/mode/text_highlight_rules'], function(require, exports, module) { - - -var oop = require("../lib/oop"); -var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; - -var VerilogHighlightRules = function() { -var keywords = "always|and|assign|automatic|begin|buf|bufif0|bufif1|case|casex|casez|cell|cmos|config|" + - "deassign|default|defparam|design|disable|edge|else|end|endcase|endconfig|endfunction|endgenerate|endmodule|" + - "endprimitive|endspecify|endtable|endtask|event|for|force|forever|fork|function|generate|genvar|highz0|" + - "highz1|if|ifnone|incdir|include|initial|inout|input|instance|integer|join|large|liblist|library|localparam|" + - "macromodule|medium|module|nand|negedge|nmos|nor|noshowcancelled|not|notif0|notif1|or|output|parameter|pmos|" + - "posedge|primitive|pull0|pull1|pulldown|pullup|pulsestyle_onevent|pulsestyle_ondetect|rcmos|real|realtime|" + - "reg|release|repeat|rnmos|rpmos|rtran|rtranif0|rtranif1|scalared|showcancelled|signed|small|specify|specparam|" + - "strong0|strong1|supply0|supply1|table|task|time|tran|tranif0|tranif1|tri|tri0|tri1|triand|trior|trireg|" + - "unsigned|use|vectored|wait|wand|weak0|weak1|while|wire|wor|xnor|xor" + - "begin|bufif0|bufif1|case|casex|casez|config|else|end|endcase|endconfig|endfunction|" + - "endgenerate|endmodule|endprimitive|endspecify|endtable|endtask|for|forever|function|generate|if|ifnone|" + - "macromodule|module|primitive|repeat|specify|table|task|while"; - - var builtinConstants = ( - "true|false|null" - ); - - var builtinFunctions = ( - "count|min|max|avg|sum|rank|now|coalesce|main" - ); - - var keywordMapper = this.createKeywordMapper({ - "support.function": builtinFunctions, - "keyword": keywords, - "constant.language": builtinConstants - }, "identifier", true); - - this.$rules = { - "start" : [ { - token : "comment", - regex : "//.*$" - }, { - token : "string", // " string - regex : '".*?"' - }, { - token : "string", // ' string - regex : "'.*?'" - }, { - token : "constant.numeric", // float - regex : "[+-]?\\d+(?:(?:\\.\\d*)?(?:[eE][+-]?\\d+)?)?\\b" - }, { - token : keywordMapper, - regex : "[a-zA-Z_$][a-zA-Z0-9_$]*\\b" - }, { - token : "keyword.operator", - regex : "\\+|\\-|\\/|\\/\\/|%|<@>|@>|<@|&|\\^|~|<|>|<=|=>|==|!=|<>|=" - }, { - token : "paren.lparen", - regex : "[\\(]" - }, { - token : "paren.rparen", - regex : "[\\)]" - }, { - token : "text", - regex : "\\s+" - } ] - }; -}; - -oop.inherits(VerilogHighlightRules, TextHighlightRules); - -exports.VerilogHighlightRules = VerilogHighlightRules; -}); diff --git a/IDE/jsrealb-ide/ace-src-noconflict/mode-vhdl.js b/IDE/jsrealb-ide/ace-src-noconflict/mode-vhdl.js deleted file mode 100644 index 57137d24..00000000 --- a/IDE/jsrealb-ide/ace-src-noconflict/mode-vhdl.js +++ /dev/null @@ -1,139 +0,0 @@ -/* ***** BEGIN LICENSE BLOCK ***** - * Distributed under the BSD license: - * - * Copyright (c) 2013, Ajax.org B.V. - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are met: - * * Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * * Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * * Neither the name of Ajax.org B.V. nor the - * names of its contributors may be used to endorse or promote products - * derived from this software without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND - * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED - * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE - * DISCLAIMED. IN NO EVENT SHALL AJAX.ORG B.V. BE LIABLE FOR ANY - * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES - * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; - * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND - * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - * - * ***** END LICENSE BLOCK ***** */ -ace.define('ace/mode/vhdl', ['require', 'exports', 'module' , 'ace/lib/oop', 'ace/mode/text', 'ace/tokenizer', 'ace/mode/vhdl_highlight_rules', 'ace/range'], function(require, exports, module) { - - -var oop = require("../lib/oop"); -var TextMode = require("./text").Mode; -var Tokenizer = require("../tokenizer").Tokenizer; -var VHDLHighlightRules = require("./vhdl_highlight_rules").VHDLHighlightRules; -var Range = require("../range").Range; - -var Mode = function() { - this.HighlightRules = VHDLHighlightRules; -}; -oop.inherits(Mode, TextMode); - -(function() { - - this.lineCommentStart = "--"; - - this.$id = "ace/mode/vhdl"; -}).call(Mode.prototype); - -exports.Mode = Mode; - -}); -ace.define('ace/mode/vhdl_highlight_rules', ['require', 'exports', 'module' , 'ace/lib/oop', 'ace/mode/text_highlight_rules'], function(require, exports, module) { - - -var oop = require("../lib/oop"); -var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; - -var VHDLHighlightRules = function() { - - - - var keywords = "access|after|ailas|all|architecture|assert|attribute|"+ - "begin|block|buffer|bus|case|component|configuration|"+ - "disconnect|downto|else|elsif|end|entity|file|for|function|"+ - "generate|generic|guarded|if|impure|in|inertial|inout|is|"+ - "label|linkage|literal|loop|mapnew|next|of|on|open|"+ - "others|out|port|process|pure|range|record|reject|"+ - "report|return|select|shared|subtype|then|to|transport|"+ - "type|unaffected|united|until|wait|when|while|with"; - - var storageType = "bit|bit_vector|boolean|character|integer|line|natural|"+ - "positive|real|register|severity|signal|signed|"+ - "std_logic|std_logic_vector|string||text|time|unsigned|"+ - "variable"; - - var storageModifiers = "array|constant"; - - var keywordOperators = "abs|and|mod|nand|nor|not|rem|rol|ror|sla|sll|sra"+ - "srl|xnor|xor"; - - var builtinConstants = ( - "true|false|null" - ); - - - var keywordMapper = this.createKeywordMapper({ - "keyword.operator": keywordOperators, - "keyword": keywords, - "constant.language": builtinConstants, - "storage.modifier": storageModifiers, - "storage.type": storageType - }, "identifier", true); - - this.$rules = { - "start" : [ { - token : "comment", - regex : "--.*$" - }, { - token : "string", // " string - regex : '".*?"' - }, { - token : "string", // ' string - regex : "'.*?'" - }, { - token : "constant.numeric", // float - regex : "[+-]?\\d+(?:(?:\\.\\d*)?(?:[eE][+-]?\\d+)?)?\\b" - }, { - token : "keyword", // pre-compiler directives - regex : "\\s*(?:library|package|use)\\b", - }, { - token : keywordMapper, - regex : "[a-zA-Z_$][a-zA-Z0-9_$]*\\b" - }, { - token : "keyword.operator", - regex : "&|\\*|\\+|\\-|\\/|<|=|>|\\||=>|\\*\\*|:=|\\/=|>=|<=|<>" - }, { - token : "punctuation.operator", - regex : "\\'|\\:|\\,|\\;|\\." - },{ - token : "paren.lparen", - regex : "[[(]" - }, { - token : "paren.rparen", - regex : "[\\])]" - }, { - token : "text", - regex : "\\s+" - } ], - - - }; -}; - -oop.inherits(VHDLHighlightRules, TextHighlightRules); - -exports.VHDLHighlightRules = VHDLHighlightRules; -}); diff --git a/IDE/jsrealb-ide/ace-src-noconflict/mode-xml.js b/IDE/jsrealb-ide/ace-src-noconflict/mode-xml.js deleted file mode 100644 index 4bedec78..00000000 --- a/IDE/jsrealb-ide/ace-src-noconflict/mode-xml.js +++ /dev/null @@ -1,937 +0,0 @@ -/* ***** BEGIN LICENSE BLOCK ***** - * Distributed under the BSD license: - * - * Copyright (c) 2010, Ajax.org B.V. - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are met: - * * Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * * Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * * Neither the name of Ajax.org B.V. nor the - * names of its contributors may be used to endorse or promote products - * derived from this software without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND - * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED - * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE - * DISCLAIMED. IN NO EVENT SHALL AJAX.ORG B.V. BE LIABLE FOR ANY - * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES - * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; - * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND - * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - * - * ***** END LICENSE BLOCK ***** */ - -ace.define('ace/mode/xml', ['require', 'exports', 'module' , 'ace/lib/oop', 'ace/mode/text', 'ace/tokenizer', 'ace/mode/xml_highlight_rules', 'ace/mode/behaviour/xml', 'ace/mode/folding/xml'], function(require, exports, module) { - - -var oop = require("../lib/oop"); -var TextMode = require("./text").Mode; -var Tokenizer = require("../tokenizer").Tokenizer; -var XmlHighlightRules = require("./xml_highlight_rules").XmlHighlightRules; -var XmlBehaviour = require("./behaviour/xml").XmlBehaviour; -var XmlFoldMode = require("./folding/xml").FoldMode; - -var Mode = function() { - this.HighlightRules = XmlHighlightRules; - this.$behaviour = new XmlBehaviour(); - this.foldingRules = new XmlFoldMode(); -}; - -oop.inherits(Mode, TextMode); - -(function() { - - this.blockComment = {start: ""}; - - this.$id = "ace/mode/xml"; -}).call(Mode.prototype); - -exports.Mode = Mode; -}); - -ace.define('ace/mode/xml_highlight_rules', ['require', 'exports', 'module' , 'ace/lib/oop', 'ace/mode/xml_util', 'ace/mode/text_highlight_rules'], function(require, exports, module) { - - -var oop = require("../lib/oop"); -var xmlUtil = require("./xml_util"); -var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; - -var XmlHighlightRules = function(normalize) { - this.$rules = { - start : [ - {token : "punctuation.string.begin", regex : "<\\!\\[CDATA\\[", next : "cdata"}, - { - token : ["punctuation.instruction.begin", "keyword.instruction"], - regex : "(<\\?)(xml)(?=[\\s])", next : "xml_declaration" - }, - { - token : ["punctuation.instruction.begin", "keyword.instruction"], - regex : "(<\\?)([-_a-zA-Z0-9]+)", next : "instruction" - }, - {token : "comment", regex : "<\\!--", next : "comment"}, - { - token : ["punctuation.doctype.begin", "meta.tag.doctype"], - regex : "(<\\!)(DOCTYPE)(?=[\\s])", next : "doctype" - }, - {include : "tag"}, - {include : "reference"} - ], - - xml_declaration : [ - {include : "attributes"}, - {include : "instruction"} - ], - - instruction : [ - {token : "punctuation.instruction.end", regex : "\\?>", next : "start"} - ], - - doctype : [ - {include : "space"}, - {include : "string"}, - {token : "punctuation.doctype.end", regex : ">", next : "start"}, - {token : "xml-pe", regex : "[-_a-zA-Z0-9:]+"}, - {token : "punctuation.begin", regex : "\\[", push : "declarations"} - ], - - declarations : [{ - token : "text", - regex : "\\s+" - }, { - token: "punctuation.end", - regex: "]", - next: "pop" - }, { - token : ["punctuation.begin", "keyword"], - regex : "(<\\!)([-_a-zA-Z0-9]+)", - push : [{ - token : "text", - regex : "\\s+" - }, - { - token : "punctuation.end", - regex : ">", - next : "pop" - }, - {include : "string"}] - }], - - cdata : [ - {token : "string.end", regex : "\\]\\]>", next : "start"}, - {token : "text", regex : "\\s+"}, - {token : "text", regex : "(?:[^\\]]|\\](?!\\]>))+"} - ], - - comment : [ - {token : "comment", regex : "-->", next : "start"}, - {defaultToken : "comment"} - ], - - tag : [{ - token : ["meta.tag.punctuation.begin", "meta.tag.name"], - regex : "(<)((?:[-_a-zA-Z0-9]+:)?[-_a-zA-Z0-9]+)", - next: [ - {include : "attributes"}, - {token : "meta.tag.punctuation.end", regex : "/?>", next : "start"} - ] - }, { - token : ["meta.tag.punctuation.begin", "meta.tag.name"], - regex : "(", next : "start"} - ] - }], - - space : [ - {token : "text", regex : "\\s+"} - ], - - reference : [{ - token : "constant.language.escape", - regex : "(?:&#[0-9]+;)|(?:&#x[0-9a-fA-F]+;)|(?:&[a-zA-Z0-9_:\\.-]+;)" - }, { - token : "text", regex : "&" - }], - - string: [{ - token : "string", - regex : "'", - push : "qstring_inner" - }, { - token : "string", - regex : '"', - push : "qqstring_inner" - }], - - qstring_inner: [ - {token : "string", regex: "'", next: "pop"}, - {include : "reference"}, - {defaultToken : "string"} - ], - - qqstring_inner: [ - {token : "string", regex: '"', next: "pop"}, - {include : "reference"}, - {defaultToken : "string"} - ], - - attributes: [{ - token : "entity.other.attribute-name", - regex : "(?:[-_a-zA-Z0-9]+:)?[-_a-zA-Z0-9]+" - }, { - token : "keyword.operator.separator", - regex : "=" - }, { - include : "space" - }, { - include : "string" - }] - }; - - if (this.constructor === XmlHighlightRules) - this.normalizeRules(); -}; - - -(function() { - - this.embedTagRules = function(HighlightRules, prefix, tag){ - this.$rules.tag.unshift({ - token : ["meta.tag.punctuation.begin", "meta.tag.name." + tag], - regex : "(<)(" + tag + ")", - next: [ - {include : "space"}, - {include : "attributes"}, - {token : "meta.tag.punctuation.end", regex : "/?>", next : prefix + "start"} - ] - }); - - this.$rules[tag + "-end"] = [ - {include : "space"}, - {token : "meta.tag.punctuation.end", regex : ">", next: "start", - onMatch : function(value, currentState, stack) { - stack.splice(0); - return this.token; - }} - ] - - this.embedRules(HighlightRules, prefix, [{ - token: ["meta.tag.punctuation.begin", "meta.tag.name." + tag], - regex : "(" - }]); - }; - -}).call(TextHighlightRules.prototype); - -oop.inherits(XmlHighlightRules, TextHighlightRules); - -exports.XmlHighlightRules = XmlHighlightRules; -}); - -ace.define('ace/mode/xml_util', ['require', 'exports', 'module' ], function(require, exports, module) { - - -function string(state) { - return [{ - token : "string", - regex : '"', - next : state + "_qqstring" - }, { - token : "string", - regex : "'", - next : state + "_qstring" - }]; -} - -function multiLineString(quote, state) { - return [ - {token : "string", regex : quote, next : state}, - { - token : "constant.language.escape", - regex : "(?:&#[0-9]+;)|(?:&#x[0-9a-fA-F]+;)|(?:&[a-zA-Z0-9_:\\.-]+;)" - }, - {defaultToken : "string"} - ]; -} - -exports.tag = function(states, name, nextState, tagMap) { - states[name] = [{ - token : "text", - regex : "\\s+" - }, { - - token : !tagMap ? "meta.tag.tag-name" : function(value) { - if (tagMap[value]) - return "meta.tag.tag-name." + tagMap[value]; - else - return "meta.tag.tag-name"; - }, - regex : "[-_a-zA-Z0-9:]+", - next : name + "_embed_attribute_list" - }, { - token: "empty", - regex: "", - next : name + "_embed_attribute_list" - }]; - - states[name + "_qstring"] = multiLineString("'", name + "_embed_attribute_list"); - states[name + "_qqstring"] = multiLineString("\"", name + "_embed_attribute_list"); - - states[name + "_embed_attribute_list"] = [{ - token : "meta.tag.r", - regex : "/?>", - next : nextState - }, { - token : "keyword.operator", - regex : "=" - }, { - token : "entity.other.attribute-name", - regex : "[-_a-zA-Z0-9:]+" - }, { - token : "constant.numeric", // float - regex : "[+-]?\\d+(?:(?:\\.\\d*)?(?:[eE][+-]?\\d+)?)?\\b" - }, { - token : "text", - regex : "\\s+" - }].concat(string(name)); -}; - -}); - -ace.define('ace/mode/behaviour/xml', ['require', 'exports', 'module' , 'ace/lib/oop', 'ace/mode/behaviour', 'ace/mode/behaviour/cstyle', 'ace/token_iterator'], function(require, exports, module) { - - -var oop = require("../../lib/oop"); -var Behaviour = require("../behaviour").Behaviour; -var CstyleBehaviour = require("./cstyle").CstyleBehaviour; -var TokenIterator = require("../../token_iterator").TokenIterator; - -function hasType(token, type) { - var tokenTypes = token.type.split('.'); - return type.split('.').every(function(type){ - return (tokenTypes.indexOf(type) !== -1); - }); - return hasType; -} - -var XmlBehaviour = function () { - - this.inherit(CstyleBehaviour, ["string_dquotes"]); // Get string behaviour - - this.add("autoclosing", "insertion", function (state, action, editor, session, text) { - if (text == '>') { - var position = editor.getCursorPosition(); - var iterator = new TokenIterator(session, position.row, position.column); - var token = iterator.getCurrentToken(); - - if (token && hasType(token, 'string') && iterator.getCurrentTokenColumn() + token.value.length > position.column) - return; - var atCursor = false; - if (!token || !hasType(token, 'meta.tag') && !(hasType(token, 'text') && token.value.match('/'))){ - do { - token = iterator.stepBackward(); - } while (token && (hasType(token, 'string') || hasType(token, 'keyword.operator') || hasType(token, 'entity.attribute-name') || hasType(token, 'text'))); - } else { - atCursor = true; - } - if (!token || !hasType(token, 'meta.tag.name') || iterator.stepBackward().value.match('/')) { - return; - } - var tag = token.value; - if (atCursor){ - var tag = tag.substring(0, position.column - token.start); - } - - return { - text: '>' + '', - selection: [1, 1] - } - } - }); - - this.add('autoindent', 'insertion', function (state, action, editor, session, text) { - if (text == "\n") { - var cursor = editor.getCursorPosition(); - var line = session.getLine(cursor.row); - var rightChars = line.substring(cursor.column, cursor.column + 2); - if (rightChars == ' -1; - }; - - CstyleBehaviour.recordAutoInsert = function(editor, session, bracket) { - var cursor = editor.getCursorPosition(); - var line = session.doc.getLine(cursor.row); - if (!this.isAutoInsertedClosing(cursor, line, autoInsertedLineEnd[0])) - autoInsertedBrackets = 0; - autoInsertedRow = cursor.row; - autoInsertedLineEnd = bracket + line.substr(cursor.column); - autoInsertedBrackets++; - }; - - CstyleBehaviour.recordMaybeInsert = function(editor, session, bracket) { - var cursor = editor.getCursorPosition(); - var line = session.doc.getLine(cursor.row); - if (!this.isMaybeInsertedClosing(cursor, line)) - maybeInsertedBrackets = 0; - maybeInsertedRow = cursor.row; - maybeInsertedLineStart = line.substr(0, cursor.column) + bracket; - maybeInsertedLineEnd = line.substr(cursor.column); - maybeInsertedBrackets++; - }; - - CstyleBehaviour.isAutoInsertedClosing = function(cursor, line, bracket) { - return autoInsertedBrackets > 0 && - cursor.row === autoInsertedRow && - bracket === autoInsertedLineEnd[0] && - line.substr(cursor.column) === autoInsertedLineEnd; - }; - - CstyleBehaviour.isMaybeInsertedClosing = function(cursor, line) { - return maybeInsertedBrackets > 0 && - cursor.row === maybeInsertedRow && - line.substr(cursor.column) === maybeInsertedLineEnd && - line.substr(0, cursor.column) == maybeInsertedLineStart; - }; - - CstyleBehaviour.popAutoInsertedClosing = function() { - autoInsertedLineEnd = autoInsertedLineEnd.substr(1); - autoInsertedBrackets--; - }; - - CstyleBehaviour.clearMaybeInsertedClosing = function() { - maybeInsertedBrackets = 0; - maybeInsertedRow = -1; - }; - - this.add("braces", "insertion", function (state, action, editor, session, text) { - var cursor = editor.getCursorPosition(); - var line = session.doc.getLine(cursor.row); - if (text == '{') { - var selection = editor.getSelectionRange(); - var selected = session.doc.getTextRange(selection); - if (selected !== "" && selected !== "{" && editor.getWrapBehavioursEnabled()) { - return { - text: '{' + selected + '}', - selection: false - }; - } else if (CstyleBehaviour.isSaneInsertion(editor, session)) { - if (/[\]\}\)]/.test(line[cursor.column]) || editor.inMultiSelectMode) { - CstyleBehaviour.recordAutoInsert(editor, session, "}"); - return { - text: '{}', - selection: [1, 1] - }; - } else { - CstyleBehaviour.recordMaybeInsert(editor, session, "{"); - return { - text: '{', - selection: [1, 1] - }; - } - } - } else if (text == '}') { - var rightChar = line.substring(cursor.column, cursor.column + 1); - if (rightChar == '}') { - var matching = session.$findOpeningBracket('}', {column: cursor.column + 1, row: cursor.row}); - if (matching !== null && CstyleBehaviour.isAutoInsertedClosing(cursor, line, text)) { - CstyleBehaviour.popAutoInsertedClosing(); - return { - text: '', - selection: [1, 1] - }; - } - } - } else if (text == "\n" || text == "\r\n") { - var closing = ""; - if (CstyleBehaviour.isMaybeInsertedClosing(cursor, line)) { - closing = lang.stringRepeat("}", maybeInsertedBrackets); - CstyleBehaviour.clearMaybeInsertedClosing(); - } - var rightChar = line.substring(cursor.column, cursor.column + 1); - if (rightChar === '}') { - var openBracePos = session.findMatchingBracket({row: cursor.row, column: cursor.column+1}, '}'); - if (!openBracePos) - return null; - var next_indent = this.$getIndent(session.getLine(openBracePos.row)); - } else if (closing) { - var next_indent = this.$getIndent(line); - } else { - return; - } - var indent = next_indent + session.getTabString(); - - return { - text: '\n' + indent + '\n' + next_indent + closing, - selection: [1, indent.length, 1, indent.length] - }; - } else { - CstyleBehaviour.clearMaybeInsertedClosing(); - } - }); - - this.add("braces", "deletion", function (state, action, editor, session, range) { - var selected = session.doc.getTextRange(range); - if (!range.isMultiLine() && selected == '{') { - var line = session.doc.getLine(range.start.row); - var rightChar = line.substring(range.end.column, range.end.column + 1); - if (rightChar == '}') { - range.end.column++; - return range; - } else { - maybeInsertedBrackets--; - } - } - }); - - this.add("parens", "insertion", function (state, action, editor, session, text) { - if (text == '(') { - var selection = editor.getSelectionRange(); - var selected = session.doc.getTextRange(selection); - if (selected !== "" && editor.getWrapBehavioursEnabled()) { - return { - text: '(' + selected + ')', - selection: false - }; - } else if (CstyleBehaviour.isSaneInsertion(editor, session)) { - CstyleBehaviour.recordAutoInsert(editor, session, ")"); - return { - text: '()', - selection: [1, 1] - }; - } - } else if (text == ')') { - var cursor = editor.getCursorPosition(); - var line = session.doc.getLine(cursor.row); - var rightChar = line.substring(cursor.column, cursor.column + 1); - if (rightChar == ')') { - var matching = session.$findOpeningBracket(')', {column: cursor.column + 1, row: cursor.row}); - if (matching !== null && CstyleBehaviour.isAutoInsertedClosing(cursor, line, text)) { - CstyleBehaviour.popAutoInsertedClosing(); - return { - text: '', - selection: [1, 1] - }; - } - } - } - }); - - this.add("parens", "deletion", function (state, action, editor, session, range) { - var selected = session.doc.getTextRange(range); - if (!range.isMultiLine() && selected == '(') { - var line = session.doc.getLine(range.start.row); - var rightChar = line.substring(range.start.column + 1, range.start.column + 2); - if (rightChar == ')') { - range.end.column++; - return range; - } - } - }); - - this.add("brackets", "insertion", function (state, action, editor, session, text) { - if (text == '[') { - var selection = editor.getSelectionRange(); - var selected = session.doc.getTextRange(selection); - if (selected !== "" && editor.getWrapBehavioursEnabled()) { - return { - text: '[' + selected + ']', - selection: false - }; - } else if (CstyleBehaviour.isSaneInsertion(editor, session)) { - CstyleBehaviour.recordAutoInsert(editor, session, "]"); - return { - text: '[]', - selection: [1, 1] - }; - } - } else if (text == ']') { - var cursor = editor.getCursorPosition(); - var line = session.doc.getLine(cursor.row); - var rightChar = line.substring(cursor.column, cursor.column + 1); - if (rightChar == ']') { - var matching = session.$findOpeningBracket(']', {column: cursor.column + 1, row: cursor.row}); - if (matching !== null && CstyleBehaviour.isAutoInsertedClosing(cursor, line, text)) { - CstyleBehaviour.popAutoInsertedClosing(); - return { - text: '', - selection: [1, 1] - }; - } - } - } - }); - - this.add("brackets", "deletion", function (state, action, editor, session, range) { - var selected = session.doc.getTextRange(range); - if (!range.isMultiLine() && selected == '[') { - var line = session.doc.getLine(range.start.row); - var rightChar = line.substring(range.start.column + 1, range.start.column + 2); - if (rightChar == ']') { - range.end.column++; - return range; - } - } - }); - - this.add("string_dquotes", "insertion", function (state, action, editor, session, text) { - if (text == '"' || text == "'") { - var quote = text; - var selection = editor.getSelectionRange(); - var selected = session.doc.getTextRange(selection); - if (selected !== "" && selected !== "'" && selected != '"' && editor.getWrapBehavioursEnabled()) { - return { - text: quote + selected + quote, - selection: false - }; - } else { - var cursor = editor.getCursorPosition(); - var line = session.doc.getLine(cursor.row); - var leftChar = line.substring(cursor.column-1, cursor.column); - if (leftChar == '\\') { - return null; - } - var tokens = session.getTokens(selection.start.row); - var col = 0, token; - var quotepos = -1; // Track whether we're inside an open quote. - - for (var x = 0; x < tokens.length; x++) { - token = tokens[x]; - if (token.type == "string") { - quotepos = -1; - } else if (quotepos < 0) { - quotepos = token.value.indexOf(quote); - } - if ((token.value.length + col) > selection.start.column) { - break; - } - col += tokens[x].value.length; - } - if (!token || (quotepos < 0 && token.type !== "comment" && (token.type !== "string" || ((selection.start.column !== token.value.length+col-1) && token.value.lastIndexOf(quote) === token.value.length-1)))) { - if (!CstyleBehaviour.isSaneInsertion(editor, session)) - return; - return { - text: quote + quote, - selection: [1,1] - }; - } else if (token && token.type === "string") { - var rightChar = line.substring(cursor.column, cursor.column + 1); - if (rightChar == quote) { - return { - text: '', - selection: [1, 1] - }; - } - } - } - } - }); - - this.add("string_dquotes", "deletion", function (state, action, editor, session, range) { - var selected = session.doc.getTextRange(range); - if (!range.isMultiLine() && (selected == '"' || selected == "'")) { - var line = session.doc.getLine(range.start.row); - var rightChar = line.substring(range.start.column + 1, range.start.column + 2); - if (rightChar == selected) { - range.end.column++; - return range; - } - } - }); - -}; - -oop.inherits(CstyleBehaviour, Behaviour); - -exports.CstyleBehaviour = CstyleBehaviour; -}); - -ace.define('ace/mode/folding/xml', ['require', 'exports', 'module' , 'ace/lib/oop', 'ace/lib/lang', 'ace/range', 'ace/mode/folding/fold_mode', 'ace/token_iterator'], function(require, exports, module) { - - -var oop = require("../../lib/oop"); -var lang = require("../../lib/lang"); -var Range = require("../../range").Range; -var BaseFoldMode = require("./fold_mode").FoldMode; -var TokenIterator = require("../../token_iterator").TokenIterator; - -var FoldMode = exports.FoldMode = function(voidElements) { - BaseFoldMode.call(this); - this.voidElements = voidElements || {}; -}; -oop.inherits(FoldMode, BaseFoldMode); - -(function() { - - this.getFoldWidget = function(session, foldStyle, row) { - var tag = this._getFirstTagInLine(session, row); - - if (tag.closing) - return foldStyle == "markbeginend" ? "end" : ""; - - if (!tag.tagName || this.voidElements[tag.tagName.toLowerCase()]) - return ""; - - if (tag.selfClosing) - return ""; - - if (tag.value.indexOf("/" + tag.tagName) !== -1) - return ""; - - return "start"; - }; - - this._getFirstTagInLine = function(session, row) { - var tokens = session.getTokens(row); - var value = ""; - for (var i = 0; i < tokens.length; i++) { - var token = tokens[i]; - if (token.type.lastIndexOf("meta.tag", 0) === 0) - value += token.value; - else - value += lang.stringRepeat(" ", token.value.length); - } - - return this._parseTag(value); - }; - - this.tagRe = /^(\s*)(?)/; - this._parseTag = function(tag) { - - var match = tag.match(this.tagRe); - var column = 0; - - return { - value: tag, - match: match ? match[2] : "", - closing: match ? !!match[3] : false, - selfClosing: match ? !!match[5] || match[2] == "/>" : false, - tagName: match ? match[4] : "", - column: match[1] ? column + match[1].length : column - }; - }; - this._readTagForward = function(iterator) { - var token = iterator.getCurrentToken(); - if (!token) - return null; - - var value = ""; - var start; - - do { - if (token.type.lastIndexOf("meta.tag", 0) === 0) { - if (!start) { - var start = { - row: iterator.getCurrentTokenRow(), - column: iterator.getCurrentTokenColumn() - }; - } - value += token.value; - if (value.indexOf(">") !== -1) { - var tag = this._parseTag(value); - tag.start = start; - tag.end = { - row: iterator.getCurrentTokenRow(), - column: iterator.getCurrentTokenColumn() + token.value.length - }; - iterator.stepForward(); - return tag; - } - } - } while(token = iterator.stepForward()); - - return null; - }; - - this._readTagBackward = function(iterator) { - var token = iterator.getCurrentToken(); - if (!token) - return null; - - var value = ""; - var end; - - do { - if (token.type.lastIndexOf("meta.tag", 0) === 0) { - if (!end) { - end = { - row: iterator.getCurrentTokenRow(), - column: iterator.getCurrentTokenColumn() + token.value.length - }; - } - value = token.value + value; - if (value.indexOf("<") !== -1) { - var tag = this._parseTag(value); - tag.end = end; - tag.start = { - row: iterator.getCurrentTokenRow(), - column: iterator.getCurrentTokenColumn() - }; - iterator.stepBackward(); - return tag; - } - } - } while(token = iterator.stepBackward()); - - return null; - }; - - this._pop = function(stack, tag) { - while (stack.length) { - - var top = stack[stack.length-1]; - if (!tag || top.tagName == tag.tagName) { - return stack.pop(); - } - else if (this.voidElements[tag.tagName]) { - return; - } - else if (this.voidElements[top.tagName]) { - stack.pop(); - continue; - } else { - return null; - } - } - }; - - this.getFoldWidgetRange = function(session, foldStyle, row) { - var firstTag = this._getFirstTagInLine(session, row); - - if (!firstTag.match) - return null; - - var isBackward = firstTag.closing || firstTag.selfClosing; - var stack = []; - var tag; - - if (!isBackward) { - var iterator = new TokenIterator(session, row, firstTag.column); - var start = { - row: row, - column: firstTag.column + firstTag.tagName.length + 2 - }; - while (tag = this._readTagForward(iterator)) { - if (tag.selfClosing) { - if (!stack.length) { - tag.start.column += tag.tagName.length + 2; - tag.end.column -= 2; - return Range.fromPoints(tag.start, tag.end); - } else - continue; - } - - if (tag.closing) { - this._pop(stack, tag); - if (stack.length == 0) - return Range.fromPoints(start, tag.start); - } - else { - stack.push(tag) - } - } - } - else { - var iterator = new TokenIterator(session, row, firstTag.column + firstTag.match.length); - var end = { - row: row, - column: firstTag.column - }; - - while (tag = this._readTagBackward(iterator)) { - if (tag.selfClosing) { - if (!stack.length) { - tag.start.column += tag.tagName.length + 2; - tag.end.column -= 2; - return Range.fromPoints(tag.start, tag.end); - } else - continue; - } - - if (!tag.closing) { - this._pop(stack, tag); - if (stack.length == 0) { - tag.start.column += tag.tagName.length + 2; - return Range.fromPoints(tag.start, end); - } - } - else { - stack.push(tag) - } - } - } - - }; - -}).call(FoldMode.prototype); - -}); diff --git a/IDE/jsrealb-ide/ace-src-noconflict/mode-xquery.js b/IDE/jsrealb-ide/ace-src-noconflict/mode-xquery.js deleted file mode 100644 index 0bc67d7b..00000000 --- a/IDE/jsrealb-ide/ace-src-noconflict/mode-xquery.js +++ /dev/null @@ -1,2795 +0,0 @@ -/* ***** BEGIN LICENSE BLOCK ***** - * Distributed under the BSD license: - * - * Copyright (c) 2010, Ajax.org B.V. - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are met: - * * Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * * Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * * Neither the name of Ajax.org B.V. nor the - * names of its contributors may be used to endorse or promote products - * derived from this software without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND - * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED - * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE - * DISCLAIMED. IN NO EVENT SHALL AJAX.ORG B.V. BE LIABLE FOR ANY - * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES - * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; - * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND - * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - * - * ***** END LICENSE BLOCK ***** */ -ace.define('ace/mode/xquery', ['require', 'exports', 'module' , 'ace/worker/worker_client', 'ace/lib/oop', 'ace/mode/text', 'ace/mode/xquery/XQueryLexer', 'ace/range', 'ace/mode/behaviour/xquery', 'ace/mode/folding/cstyle'], function(require, exports, module) { - - -var WorkerClient = require("../worker/worker_client").WorkerClient; -var oop = require("../lib/oop"); -var TextMode = require("./text").Mode; -var XQueryLexer = require("./xquery/XQueryLexer").XQueryLexer; -var Range = require("../range").Range; -var XQueryBehaviour = require("./behaviour/xquery").XQueryBehaviour; -var CStyleFoldMode = require("./folding/cstyle").FoldMode; - - -var Mode = function() { - this.$tokenizer = new XQueryLexer(); - this.$behaviour = new XQueryBehaviour(); - this.foldingRules = new CStyleFoldMode(); -}; - -oop.inherits(Mode, TextMode); - -(function() { - - this.getNextLineIndent = function(state, line, tab) { - var indent = this.$getIndent(line); - var match = line.match(/\s*(?:then|else|return|[{\(]|<\w+>)\s*$/); - if (match) - indent += tab; - return indent; - }; - - this.checkOutdent = function(state, line, input) { - if (! /^\s+$/.test(line)) - return false; - - return /^\s*[\}\)]/.test(input); - }; - - this.autoOutdent = function(state, doc, row) { - var line = doc.getLine(row); - var match = line.match(/^(\s*[\}\)])/); - - if (!match) return 0; - - var column = match[1].length; - var openBracePos = doc.findMatchingBracket({row: row, column: column}); - - if (!openBracePos || openBracePos.row == row) return 0; - - var indent = this.$getIndent(doc.getLine(openBracePos.row)); - doc.replace(new Range(row, 0, row, column-1), indent); - }; - - this.toggleCommentLines = function(state, doc, startRow, endRow) { - var i, line; - var outdent = true; - var re = /^\s*\(:(.*):\)/; - - for (i=startRow; i<= endRow; i++) { - if (!re.test(doc.getLine(i))) { - outdent = false; - break; - } - } - - var range = new Range(0, 0, 0, 0); - for (i=startRow; i<= endRow; i++) { - line = doc.getLine(i); - range.start.row = i; - range.end.row = i; - range.end.column = line.length; - - doc.replace(range, outdent ? line.match(re)[1] : "(:" + line + ":)"); - } - }; - - this.createWorker = function(session) { - - var worker = new WorkerClient(["ace"], "ace/mode/xquery_worker", "XQueryWorker"); - var that = this; - - worker.attachToDocument(session.getDocument()); - - worker.on("error", function(e) { - session.setAnnotations([e.data]); - }); - - worker.on("ok", function(e) { - session.clearAnnotations(); - }); - - worker.on("highlight", function(tokens) { - that.$tokenizer.tokens = tokens.data.tokens; - that.$tokenizer.lines = session.getDocument().getAllLines(); - - var rows = Object.keys(that.$tokenizer.tokens); - for(var i=0; i < rows.length; i++) { - var row = parseInt(rows[i]); - delete session.bgTokenizer.lines[row]; - delete session.bgTokenizer.states[row]; - session.bgTokenizer.fireUpdateEvent(row, row); - } - }); - - return worker; - }; - - this.$id = "ace/mode/xquery"; -}).call(Mode.prototype); - -exports.Mode = Mode; -}); - -ace.define('ace/mode/xquery/XQueryLexer', ['require', 'exports', 'module' , 'ace/mode/xquery/XQueryTokenizer'], function(require, exports, module) { - - var XQueryTokenizer = require("./XQueryTokenizer").XQueryTokenizer; - - var TokenHandler = function(code) { - - var input = code; - - this.tokens = []; - - this.reset = function(code) { - input = input; - this.tokens = []; - }; - - this.startNonterminal = function(name, begin) {}; - - this.endNonterminal = function(name, end) {}; - - this.terminal = function(name, begin, end) { - this.tokens.push({ - name: name, - value: input.substring(begin, end) - }); - }; - - this.whitespace = function(begin, end) { - this.tokens.push({ - name: "WS", - value: input.substring(begin, end) - }); - }; - }; - - var keys = "after|ancestor|ancestor-or-self|and|as|ascending|attribute|before|case|cast|castable|child|collation|comment|copy|count|declare|default|delete|descendant|descendant-or-self|descending|div|document|document-node|element|else|empty|empty-sequence|end|eq|every|except|first|following|following-sibling|for|function|ge|group|gt|idiv|if|import|insert|instance|intersect|into|is|item|last|le|let|lt|mod|modify|module|namespace|namespace-node|ne|node|only|or|order|ordered|parent|preceding|preceding-sibling|processing-instruction|rename|replace|return|satisfies|schema-attribute|schema-element|self|some|stable|start|switch|text|to|treat|try|typeswitch|union|unordered|validate|where|with|xquery|contains|paragraphs|sentences|times|words|by|collectionreturn|variable|version|option|when|encoding|toswitch|catch|tumbling|sliding|window|at|using|stemming|collection|schema|while|on|nodes|index|external|then|in|updating|value|of|containsbreak|loop|continue|exit|returning|append|json|position|strict".split("|"); - var keywords = keys.map( - function(val) { return { name: "'" + val + "'", token: "keyword" }; } - ); - - var ncnames = keys.map( - function(val) { return { name: "'" + val + "'", token: "text", next: function(stack){ stack.pop(); } }; } - ); - - var cdata = "constant.language"; - var number = "constant"; - var xmlcomment = "comment"; - var pi = "xml-pe"; - var pragma = "constant.buildin"; - - var Rules = { - start: [ - { name: "'(#'", token: pragma, next: function(stack){ stack.push("Pragma"); } }, - { name: "'(:'", token: "comment", next: function(stack){ stack.push("Comment"); } }, - { name: "'(:~'", token: "comment.doc", next: function(stack){ stack.push("CommentDoc"); } }, - { name: "''", token: xmlcomment, next: function(stack){ stack.pop(); } } - ], - CData: [ - { name: "CDataSectionContents", token: cdata }, - { name: "']]>'", token: cdata, next: function(stack){ stack.pop(); } } - ], - PI: [ - { name: "DirPIContents", token: pi }, - { name: "'?'", token: pi }, - { name: "'?>'", token: pi, next: function(stack){ stack.pop(); } } - ], - AposString: [ - { name: "''''", token: "string", next: function(stack){ stack.pop(); } }, - { name: "PredefinedEntityRef", token: "constant.language.escape" }, - { name: "CharRef", token: "constant.language.escape" }, - { name: "EscapeApos", token: "constant.language.escape" }, - { name: "AposChar", token: "string" } - ], - QuotString: [ - { name: "'\"'", token: "string", next: function(stack){ stack.pop(); } }, - { name: "PredefinedEntityRef", token: "constant.language.escape" }, - { name: "CharRef", token: "constant.language.escape" }, - { name: "EscapeQuot", token: "constant.language.escape" }, - { name: "QuotChar", token: "string" } - ] - }; - -exports.XQueryLexer = function() { - - this.tokens = []; - - this.getLineTokens = function(line, state, row) { - state = (state === "start" || !state) ? '["start"]' : state; - var stack = JSON.parse(state); - var h = new TokenHandler(line); - var tokenizer = new XQueryTokenizer(line, h); - var tokens = []; - - while(true) { - var currentState = stack[stack.length - 1]; - try { - - h.tokens = []; - tokenizer["parse_" + currentState](); - var info = null; - - if(h.tokens.length > 1 && h.tokens[0].name === "WS") { - tokens.push({ - type: "text", - value: h.tokens[0].value - }); - h.tokens.splice(0, 1); - } - - var token = h.tokens[0]; - var rules = Rules[currentState]; - for(var k = 0; k < rules.length; k++) { - var rule = Rules[currentState][k]; - if((typeof(rule.name) === "function" && rule.name(token)) || rule.name === token.name) { - info = rule; - break; - } - } - - if(token.name === "EOF") { break; } - if(token.value === "") { throw "Encountered empty string lexical rule."; } - - tokens.push({ - type: info === null ? "text" : (typeof(info.token) === "function" ? info.token(token.value) : info.token), - value: token.value - }); - - if(info && info.next) { - info.next(stack); - } - - } catch(e) { - if(e instanceof tokenizer.ParseException) { - var index = 0; - for(var i=0; i < tokens.length; i++) { - index += tokens[i].value.length; - } - tokens.push({ type: "text", value: line.substring(index) }); - return { - tokens: tokens, - state: JSON.stringify(["start"]) - }; - } else { - throw e; - } - } - } - - - if(this.tokens[row] !== undefined) { - var cachedLine = this.lines[row]; - var begin = sharedStart([line, cachedLine]); - var diff = cachedLine.length - line.length; - var idx = 0; - var col = 0; - for(var i = 0; i < tokens.length; i++) { - var token = tokens[i]; - for(var j = 0; j < this.tokens[row].length; j++) { - var semanticToken = this.tokens[row][j]; - if( - ((col + token.value.length) <= begin.length && semanticToken.sc === col && semanticToken.ec === (col + token.value.length)) || - (semanticToken.sc === (col + diff) && semanticToken.ec === (col + token.value.length + diff)) - ) { - idx = i; - tokens[i].type = semanticToken.type; - } - } - col += token.value.length; - } - } - - return { - tokens: tokens, - state: JSON.stringify(stack) - }; - }; - - function sharedStart(A) { - var tem1, tem2, s, A = A.slice(0).sort(); - tem1 = A[0]; - s = tem1.length; - tem2 = A.pop(); - while(s && tem2.indexOf(tem1) == -1) { - tem1 = tem1.substring(0, --s); - } - return tem1; - } -}; -}); - - ace.define('ace/mode/xquery/XQueryTokenizer', ['require', 'exports', 'module' ], function(require, exports, module) { - var XQueryTokenizer = exports.XQueryTokenizer = function XQueryTokenizer(string, parsingEventHandler) - { - init(string, parsingEventHandler); - var self = this; - - this.ParseException = function(b, e, s, o, x) - { - var - begin = b, - end = e, - state = s, - offending = o, - expected = x; - - this.getBegin = function() {return begin;}; - this.getEnd = function() {return end;}; - this.getState = function() {return state;}; - this.getExpected = function() {return expected;}; - this.getOffending = function() {return offending;}; - - this.getMessage = function() - { - return offending < 0 ? "lexical analysis failed" : "syntax error"; - }; - }; - - function init(string, parsingEventHandler) - { - eventHandler = parsingEventHandler; - input = string; - size = string.length; - reset(0, 0, 0); - } - - this.getInput = function() - { - return input; - }; - - function reset(l, b, e) - { - b0 = b; e0 = b; - l1 = l; b1 = b; e1 = e; - end = e; - eventHandler.reset(input); - } - - this.getOffendingToken = function(e) - { - var o = e.getOffending(); - return o >= 0 ? XQueryTokenizer.TOKEN[o] : null; - }; - - this.getExpectedTokenSet = function(e) - { - var expected; - if (e.getExpected() < 0) - { - expected = XQueryTokenizer.getTokenSet(- e.getState()); - } - else - { - expected = [XQueryTokenizer.TOKEN[e.getExpected()]]; - } - return expected; - }; - - this.getErrorMessage = function(e) - { - var tokenSet = this.getExpectedTokenSet(e); - var found = this.getOffendingToken(e); - var prefix = input.substring(0, e.getBegin()); - var lines = prefix.split("\n"); - var line = lines.length; - var column = lines[line - 1].length + 1; - var size = e.getEnd() - e.getBegin(); - return e.getMessage() - + (found == null ? "" : ", found " + found) - + "\nwhile expecting " - + (tokenSet.length == 1 ? tokenSet[0] : ("[" + tokenSet.join(", ") + "]")) - + "\n" - + (size == 0 || found != null ? "" : "after successfully scanning " + size + " characters beginning ") - + "at line " + line + ", column " + column + ":\n..." - + input.substring(e.getBegin(), Math.min(input.length, e.getBegin() + 64)) - + "..."; - }; - - this.parse_start = function() - { - eventHandler.startNonterminal("start", e0); - lookahead1W(14); // ModuleDecl | Annotation | OptionDecl | Operator | Variable | Tag | AttrTest | - switch (l1) - { - case 55: // '' | '=' | '>' - switch (l1) - { - case 58: // '>' - shift(58); // '>' - break; - case 50: // '/>' - shift(50); // '/>' - break; - case 27: // QName - shift(27); // QName - break; - case 57: // '=' - shift(57); // '=' - break; - case 35: // '"' - shift(35); // '"' - break; - case 38: // "'" - shift(38); // "'" - break; - default: - shift(33); // EOF - } - eventHandler.endNonterminal("StartTag", e0); - }; - - this.parse_TagContent = function() - { - eventHandler.startNonterminal("TagContent", e0); - lookahead1(11); // Tag | EndTag | PredefinedEntityRef | ElementContentChar | CharRef | EOF | - switch (l1) - { - case 23: // ElementContentChar - shift(23); // ElementContentChar - break; - case 6: // Tag - shift(6); // Tag - break; - case 7: // EndTag - shift(7); // EndTag - break; - case 55: // '' - switch (l1) - { - case 11: // CDataSectionContents - shift(11); // CDataSectionContents - break; - case 64: // ']]>' - shift(64); // ']]>' - break; - default: - shift(33); // EOF - } - eventHandler.endNonterminal("CData", e0); - }; - - this.parse_XMLComment = function() - { - eventHandler.startNonterminal("XMLComment", e0); - lookahead1(0); // DirCommentContents | EOF | '-->' - switch (l1) - { - case 9: // DirCommentContents - shift(9); // DirCommentContents - break; - case 47: // '-->' - shift(47); // '-->' - break; - default: - shift(33); // EOF - } - eventHandler.endNonterminal("XMLComment", e0); - }; - - this.parse_PI = function() - { - eventHandler.startNonterminal("PI", e0); - lookahead1(3); // DirPIContents | EOF | '?' | '?>' - switch (l1) - { - case 10: // DirPIContents - shift(10); // DirPIContents - break; - case 59: // '?' - shift(59); // '?' - break; - case 60: // '?>' - shift(60); // '?>' - break; - default: - shift(33); // EOF - } - eventHandler.endNonterminal("PI", e0); - }; - - this.parse_Pragma = function() - { - eventHandler.startNonterminal("Pragma", e0); - lookahead1(2); // PragmaContents | EOF | '#' | '#)' - switch (l1) - { - case 8: // PragmaContents - shift(8); // PragmaContents - break; - case 36: // '#' - shift(36); // '#' - break; - case 37: // '#)' - shift(37); // '#)' - break; - default: - shift(33); // EOF - } - eventHandler.endNonterminal("Pragma", e0); - }; - - this.parse_Comment = function() - { - eventHandler.startNonterminal("Comment", e0); - lookahead1(4); // CommentContents | EOF | '(:' | ':)' - switch (l1) - { - case 52: // ':)' - shift(52); // ':)' - break; - case 41: // '(:' - shift(41); // '(:' - break; - case 30: // CommentContents - shift(30); // CommentContents - break; - default: - shift(33); // EOF - } - eventHandler.endNonterminal("Comment", e0); - }; - - this.parse_CommentDoc = function() - { - eventHandler.startNonterminal("CommentDoc", e0); - lookahead1(5); // DocTag | DocCommentContents | EOF | '(:' | ':)' - switch (l1) - { - case 31: // DocTag - shift(31); // DocTag - break; - case 32: // DocCommentContents - shift(32); // DocCommentContents - break; - case 52: // ':)' - shift(52); // ':)' - break; - case 41: // '(:' - shift(41); // '(:' - break; - default: - shift(33); // EOF - } - eventHandler.endNonterminal("CommentDoc", e0); - }; - - this.parse_QuotString = function() - { - eventHandler.startNonterminal("QuotString", e0); - lookahead1(6); // PredefinedEntityRef | EscapeQuot | QuotChar | CharRef | EOF | '"' - switch (l1) - { - case 18: // PredefinedEntityRef - shift(18); // PredefinedEntityRef - break; - case 29: // CharRef - shift(29); // CharRef - break; - case 19: // EscapeQuot - shift(19); // EscapeQuot - break; - case 21: // QuotChar - shift(21); // QuotChar - break; - case 35: // '"' - shift(35); // '"' - break; - default: - shift(33); // EOF - } - eventHandler.endNonterminal("QuotString", e0); - }; - - this.parse_AposString = function() - { - eventHandler.startNonterminal("AposString", e0); - lookahead1(7); // PredefinedEntityRef | EscapeApos | AposChar | CharRef | EOF | "'" - switch (l1) - { - case 18: // PredefinedEntityRef - shift(18); // PredefinedEntityRef - break; - case 29: // CharRef - shift(29); // CharRef - break; - case 20: // EscapeApos - shift(20); // EscapeApos - break; - case 22: // AposChar - shift(22); // AposChar - break; - case 38: // "'" - shift(38); // "'" - break; - default: - shift(33); // EOF - } - eventHandler.endNonterminal("AposString", e0); - }; - - this.parse_Prefix = function() - { - eventHandler.startNonterminal("Prefix", e0); - lookahead1W(13); // NCName^Token | S^WS | 'after' | 'allowing' | 'ancestor' | 'ancestor-or-self' | - whitespace(); - parse_NCName(); - eventHandler.endNonterminal("Prefix", e0); - }; - - this.parse__EQName = function() - { - eventHandler.startNonterminal("_EQName", e0); - lookahead1W(12); // EQName^Token | S^WS | 'after' | 'allowing' | 'ancestor' | 'ancestor-or-self' | - whitespace(); - parse_EQName(); - eventHandler.endNonterminal("_EQName", e0); - }; - - function parse_EQName() - { - eventHandler.startNonterminal("EQName", e0); - switch (l1) - { - case 77: // 'attribute' - shift(77); // 'attribute' - break; - case 91: // 'comment' - shift(91); // 'comment' - break; - case 115: // 'document-node' - shift(115); // 'document-node' - break; - case 116: // 'element' - shift(116); // 'element' - break; - case 119: // 'empty-sequence' - shift(119); // 'empty-sequence' - break; - case 140: // 'function' - shift(140); // 'function' - break; - case 147: // 'if' - shift(147); // 'if' - break; - case 160: // 'item' - shift(160); // 'item' - break; - case 180: // 'namespace-node' - shift(180); // 'namespace-node' - break; - case 186: // 'node' - shift(186); // 'node' - break; - case 211: // 'processing-instruction' - shift(211); // 'processing-instruction' - break; - case 221: // 'schema-attribute' - shift(221); // 'schema-attribute' - break; - case 222: // 'schema-element' - shift(222); // 'schema-element' - break; - case 238: // 'switch' - shift(238); // 'switch' - break; - case 239: // 'text' - shift(239); // 'text' - break; - case 248: // 'typeswitch' - shift(248); // 'typeswitch' - break; - default: - parse_FunctionName(); - } - eventHandler.endNonterminal("EQName", e0); - } - - function parse_FunctionName() - { - eventHandler.startNonterminal("FunctionName", e0); - switch (l1) - { - case 14: // EQName^Token - shift(14); // EQName^Token - break; - case 65: // 'after' - shift(65); // 'after' - break; - case 68: // 'ancestor' - shift(68); // 'ancestor' - break; - case 69: // 'ancestor-or-self' - shift(69); // 'ancestor-or-self' - break; - case 70: // 'and' - shift(70); // 'and' - break; - case 74: // 'as' - shift(74); // 'as' - break; - case 75: // 'ascending' - shift(75); // 'ascending' - break; - case 79: // 'before' - shift(79); // 'before' - break; - case 83: // 'case' - shift(83); // 'case' - break; - case 84: // 'cast' - shift(84); // 'cast' - break; - case 85: // 'castable' - shift(85); // 'castable' - break; - case 88: // 'child' - shift(88); // 'child' - break; - case 89: // 'collation' - shift(89); // 'collation' - break; - case 98: // 'copy' - shift(98); // 'copy' - break; - case 100: // 'count' - shift(100); // 'count' - break; - case 103: // 'declare' - shift(103); // 'declare' - break; - case 104: // 'default' - shift(104); // 'default' - break; - case 105: // 'delete' - shift(105); // 'delete' - break; - case 106: // 'descendant' - shift(106); // 'descendant' - break; - case 107: // 'descendant-or-self' - shift(107); // 'descendant-or-self' - break; - case 108: // 'descending' - shift(108); // 'descending' - break; - case 113: // 'div' - shift(113); // 'div' - break; - case 114: // 'document' - shift(114); // 'document' - break; - case 117: // 'else' - shift(117); // 'else' - break; - case 118: // 'empty' - shift(118); // 'empty' - break; - case 121: // 'end' - shift(121); // 'end' - break; - case 123: // 'eq' - shift(123); // 'eq' - break; - case 124: // 'every' - shift(124); // 'every' - break; - case 126: // 'except' - shift(126); // 'except' - break; - case 129: // 'first' - shift(129); // 'first' - break; - case 130: // 'following' - shift(130); // 'following' - break; - case 131: // 'following-sibling' - shift(131); // 'following-sibling' - break; - case 132: // 'for' - shift(132); // 'for' - break; - case 141: // 'ge' - shift(141); // 'ge' - break; - case 143: // 'group' - shift(143); // 'group' - break; - case 145: // 'gt' - shift(145); // 'gt' - break; - case 146: // 'idiv' - shift(146); // 'idiv' - break; - case 148: // 'import' - shift(148); // 'import' - break; - case 154: // 'insert' - shift(154); // 'insert' - break; - case 155: // 'instance' - shift(155); // 'instance' - break; - case 157: // 'intersect' - shift(157); // 'intersect' - break; - case 158: // 'into' - shift(158); // 'into' - break; - case 159: // 'is' - shift(159); // 'is' - break; - case 165: // 'last' - shift(165); // 'last' - break; - case 167: // 'le' - shift(167); // 'le' - break; - case 169: // 'let' - shift(169); // 'let' - break; - case 173: // 'lt' - shift(173); // 'lt' - break; - case 175: // 'mod' - shift(175); // 'mod' - break; - case 176: // 'modify' - shift(176); // 'modify' - break; - case 177: // 'module' - shift(177); // 'module' - break; - case 179: // 'namespace' - shift(179); // 'namespace' - break; - case 181: // 'ne' - shift(181); // 'ne' - break; - case 193: // 'only' - shift(193); // 'only' - break; - case 195: // 'or' - shift(195); // 'or' - break; - case 196: // 'order' - shift(196); // 'order' - break; - case 197: // 'ordered' - shift(197); // 'ordered' - break; - case 201: // 'parent' - shift(201); // 'parent' - break; - case 207: // 'preceding' - shift(207); // 'preceding' - break; - case 208: // 'preceding-sibling' - shift(208); // 'preceding-sibling' - break; - case 213: // 'rename' - shift(213); // 'rename' - break; - case 214: // 'replace' - shift(214); // 'replace' - break; - case 215: // 'return' - shift(215); // 'return' - break; - case 219: // 'satisfies' - shift(219); // 'satisfies' - break; - case 224: // 'self' - shift(224); // 'self' - break; - case 230: // 'some' - shift(230); // 'some' - break; - case 231: // 'stable' - shift(231); // 'stable' - break; - case 232: // 'start' - shift(232); // 'start' - break; - case 243: // 'to' - shift(243); // 'to' - break; - case 244: // 'treat' - shift(244); // 'treat' - break; - case 245: // 'try' - shift(245); // 'try' - break; - case 249: // 'union' - shift(249); // 'union' - break; - case 251: // 'unordered' - shift(251); // 'unordered' - break; - case 255: // 'validate' - shift(255); // 'validate' - break; - case 261: // 'where' - shift(261); // 'where' - break; - case 265: // 'with' - shift(265); // 'with' - break; - case 269: // 'xquery' - shift(269); // 'xquery' - break; - case 67: // 'allowing' - shift(67); // 'allowing' - break; - case 76: // 'at' - shift(76); // 'at' - break; - case 78: // 'base-uri' - shift(78); // 'base-uri' - break; - case 80: // 'boundary-space' - shift(80); // 'boundary-space' - break; - case 81: // 'break' - shift(81); // 'break' - break; - case 86: // 'catch' - shift(86); // 'catch' - break; - case 93: // 'construction' - shift(93); // 'construction' - break; - case 96: // 'context' - shift(96); // 'context' - break; - case 97: // 'continue' - shift(97); // 'continue' - break; - case 99: // 'copy-namespaces' - shift(99); // 'copy-namespaces' - break; - case 101: // 'decimal-format' - shift(101); // 'decimal-format' - break; - case 120: // 'encoding' - shift(120); // 'encoding' - break; - case 127: // 'exit' - shift(127); // 'exit' - break; - case 128: // 'external' - shift(128); // 'external' - break; - case 136: // 'ft-option' - shift(136); // 'ft-option' - break; - case 149: // 'in' - shift(149); // 'in' - break; - case 150: // 'index' - shift(150); // 'index' - break; - case 156: // 'integrity' - shift(156); // 'integrity' - break; - case 166: // 'lax' - shift(166); // 'lax' - break; - case 187: // 'nodes' - shift(187); // 'nodes' - break; - case 194: // 'option' - shift(194); // 'option' - break; - case 198: // 'ordering' - shift(198); // 'ordering' - break; - case 217: // 'revalidation' - shift(217); // 'revalidation' - break; - case 220: // 'schema' - shift(220); // 'schema' - break; - case 223: // 'score' - shift(223); // 'score' - break; - case 229: // 'sliding' - shift(229); // 'sliding' - break; - case 235: // 'strict' - shift(235); // 'strict' - break; - case 246: // 'tumbling' - shift(246); // 'tumbling' - break; - case 247: // 'type' - shift(247); // 'type' - break; - case 252: // 'updating' - shift(252); // 'updating' - break; - case 256: // 'value' - shift(256); // 'value' - break; - case 257: // 'variable' - shift(257); // 'variable' - break; - case 258: // 'version' - shift(258); // 'version' - break; - case 262: // 'while' - shift(262); // 'while' - break; - case 92: // 'constraint' - shift(92); // 'constraint' - break; - case 171: // 'loop' - shift(171); // 'loop' - break; - default: - shift(216); // 'returning' - } - eventHandler.endNonterminal("FunctionName", e0); - } - - function parse_NCName() - { - eventHandler.startNonterminal("NCName", e0); - switch (l1) - { - case 26: // NCName^Token - shift(26); // NCName^Token - break; - case 65: // 'after' - shift(65); // 'after' - break; - case 70: // 'and' - shift(70); // 'and' - break; - case 74: // 'as' - shift(74); // 'as' - break; - case 75: // 'ascending' - shift(75); // 'ascending' - break; - case 79: // 'before' - shift(79); // 'before' - break; - case 83: // 'case' - shift(83); // 'case' - break; - case 84: // 'cast' - shift(84); // 'cast' - break; - case 85: // 'castable' - shift(85); // 'castable' - break; - case 89: // 'collation' - shift(89); // 'collation' - break; - case 100: // 'count' - shift(100); // 'count' - break; - case 104: // 'default' - shift(104); // 'default' - break; - case 108: // 'descending' - shift(108); // 'descending' - break; - case 113: // 'div' - shift(113); // 'div' - break; - case 117: // 'else' - shift(117); // 'else' - break; - case 118: // 'empty' - shift(118); // 'empty' - break; - case 121: // 'end' - shift(121); // 'end' - break; - case 123: // 'eq' - shift(123); // 'eq' - break; - case 126: // 'except' - shift(126); // 'except' - break; - case 132: // 'for' - shift(132); // 'for' - break; - case 141: // 'ge' - shift(141); // 'ge' - break; - case 143: // 'group' - shift(143); // 'group' - break; - case 145: // 'gt' - shift(145); // 'gt' - break; - case 146: // 'idiv' - shift(146); // 'idiv' - break; - case 155: // 'instance' - shift(155); // 'instance' - break; - case 157: // 'intersect' - shift(157); // 'intersect' - break; - case 158: // 'into' - shift(158); // 'into' - break; - case 159: // 'is' - shift(159); // 'is' - break; - case 167: // 'le' - shift(167); // 'le' - break; - case 169: // 'let' - shift(169); // 'let' - break; - case 173: // 'lt' - shift(173); // 'lt' - break; - case 175: // 'mod' - shift(175); // 'mod' - break; - case 176: // 'modify' - shift(176); // 'modify' - break; - case 181: // 'ne' - shift(181); // 'ne' - break; - case 193: // 'only' - shift(193); // 'only' - break; - case 195: // 'or' - shift(195); // 'or' - break; - case 196: // 'order' - shift(196); // 'order' - break; - case 215: // 'return' - shift(215); // 'return' - break; - case 219: // 'satisfies' - shift(219); // 'satisfies' - break; - case 231: // 'stable' - shift(231); // 'stable' - break; - case 232: // 'start' - shift(232); // 'start' - break; - case 243: // 'to' - shift(243); // 'to' - break; - case 244: // 'treat' - shift(244); // 'treat' - break; - case 249: // 'union' - shift(249); // 'union' - break; - case 261: // 'where' - shift(261); // 'where' - break; - case 265: // 'with' - shift(265); // 'with' - break; - case 68: // 'ancestor' - shift(68); // 'ancestor' - break; - case 69: // 'ancestor-or-self' - shift(69); // 'ancestor-or-self' - break; - case 77: // 'attribute' - shift(77); // 'attribute' - break; - case 88: // 'child' - shift(88); // 'child' - break; - case 91: // 'comment' - shift(91); // 'comment' - break; - case 98: // 'copy' - shift(98); // 'copy' - break; - case 103: // 'declare' - shift(103); // 'declare' - break; - case 105: // 'delete' - shift(105); // 'delete' - break; - case 106: // 'descendant' - shift(106); // 'descendant' - break; - case 107: // 'descendant-or-self' - shift(107); // 'descendant-or-self' - break; - case 114: // 'document' - shift(114); // 'document' - break; - case 115: // 'document-node' - shift(115); // 'document-node' - break; - case 116: // 'element' - shift(116); // 'element' - break; - case 119: // 'empty-sequence' - shift(119); // 'empty-sequence' - break; - case 124: // 'every' - shift(124); // 'every' - break; - case 129: // 'first' - shift(129); // 'first' - break; - case 130: // 'following' - shift(130); // 'following' - break; - case 131: // 'following-sibling' - shift(131); // 'following-sibling' - break; - case 140: // 'function' - shift(140); // 'function' - break; - case 147: // 'if' - shift(147); // 'if' - break; - case 148: // 'import' - shift(148); // 'import' - break; - case 154: // 'insert' - shift(154); // 'insert' - break; - case 160: // 'item' - shift(160); // 'item' - break; - case 165: // 'last' - shift(165); // 'last' - break; - case 177: // 'module' - shift(177); // 'module' - break; - case 179: // 'namespace' - shift(179); // 'namespace' - break; - case 180: // 'namespace-node' - shift(180); // 'namespace-node' - break; - case 186: // 'node' - shift(186); // 'node' - break; - case 197: // 'ordered' - shift(197); // 'ordered' - break; - case 201: // 'parent' - shift(201); // 'parent' - break; - case 207: // 'preceding' - shift(207); // 'preceding' - break; - case 208: // 'preceding-sibling' - shift(208); // 'preceding-sibling' - break; - case 211: // 'processing-instruction' - shift(211); // 'processing-instruction' - break; - case 213: // 'rename' - shift(213); // 'rename' - break; - case 214: // 'replace' - shift(214); // 'replace' - break; - case 221: // 'schema-attribute' - shift(221); // 'schema-attribute' - break; - case 222: // 'schema-element' - shift(222); // 'schema-element' - break; - case 224: // 'self' - shift(224); // 'self' - break; - case 230: // 'some' - shift(230); // 'some' - break; - case 238: // 'switch' - shift(238); // 'switch' - break; - case 239: // 'text' - shift(239); // 'text' - break; - case 245: // 'try' - shift(245); // 'try' - break; - case 248: // 'typeswitch' - shift(248); // 'typeswitch' - break; - case 251: // 'unordered' - shift(251); // 'unordered' - break; - case 255: // 'validate' - shift(255); // 'validate' - break; - case 257: // 'variable' - shift(257); // 'variable' - break; - case 269: // 'xquery' - shift(269); // 'xquery' - break; - case 67: // 'allowing' - shift(67); // 'allowing' - break; - case 76: // 'at' - shift(76); // 'at' - break; - case 78: // 'base-uri' - shift(78); // 'base-uri' - break; - case 80: // 'boundary-space' - shift(80); // 'boundary-space' - break; - case 81: // 'break' - shift(81); // 'break' - break; - case 86: // 'catch' - shift(86); // 'catch' - break; - case 93: // 'construction' - shift(93); // 'construction' - break; - case 96: // 'context' - shift(96); // 'context' - break; - case 97: // 'continue' - shift(97); // 'continue' - break; - case 99: // 'copy-namespaces' - shift(99); // 'copy-namespaces' - break; - case 101: // 'decimal-format' - shift(101); // 'decimal-format' - break; - case 120: // 'encoding' - shift(120); // 'encoding' - break; - case 127: // 'exit' - shift(127); // 'exit' - break; - case 128: // 'external' - shift(128); // 'external' - break; - case 136: // 'ft-option' - shift(136); // 'ft-option' - break; - case 149: // 'in' - shift(149); // 'in' - break; - case 150: // 'index' - shift(150); // 'index' - break; - case 156: // 'integrity' - shift(156); // 'integrity' - break; - case 166: // 'lax' - shift(166); // 'lax' - break; - case 187: // 'nodes' - shift(187); // 'nodes' - break; - case 194: // 'option' - shift(194); // 'option' - break; - case 198: // 'ordering' - shift(198); // 'ordering' - break; - case 217: // 'revalidation' - shift(217); // 'revalidation' - break; - case 220: // 'schema' - shift(220); // 'schema' - break; - case 223: // 'score' - shift(223); // 'score' - break; - case 229: // 'sliding' - shift(229); // 'sliding' - break; - case 235: // 'strict' - shift(235); // 'strict' - break; - case 246: // 'tumbling' - shift(246); // 'tumbling' - break; - case 247: // 'type' - shift(247); // 'type' - break; - case 252: // 'updating' - shift(252); // 'updating' - break; - case 256: // 'value' - shift(256); // 'value' - break; - case 258: // 'version' - shift(258); // 'version' - break; - case 262: // 'while' - shift(262); // 'while' - break; - case 92: // 'constraint' - shift(92); // 'constraint' - break; - case 171: // 'loop' - shift(171); // 'loop' - break; - default: - shift(216); // 'returning' - } - eventHandler.endNonterminal("NCName", e0); - } - - function shift(t) - { - if (l1 == t) - { - whitespace(); - eventHandler.terminal(XQueryTokenizer.TOKEN[l1], b1, e1 > size ? size : e1); - b0 = b1; e0 = e1; l1 = 0; - } - else - { - error(b1, e1, 0, l1, t); - } - } - - function whitespace() - { - if (e0 != b1) - { - b0 = e0; - e0 = b1; - eventHandler.whitespace(b0, e0); - } - } - - function matchW(set) - { - var code; - for (;;) - { - code = match(set); - if (code != 28) // S^WS - { - break; - } - } - return code; - } - - function lookahead1W(set) - { - if (l1 == 0) - { - l1 = matchW(set); - b1 = begin; - e1 = end; - } - } - - function lookahead1(set) - { - if (l1 == 0) - { - l1 = match(set); - b1 = begin; - e1 = end; - } - } - - function error(b, e, s, l, t) - { - throw new self.ParseException(b, e, s, l, t); - } - - var lk, b0, e0; - var l1, b1, e1; - var eventHandler; - - var input; - var size; - var begin; - var end; - - function match(tokenSetId) - { - var nonbmp = false; - begin = end; - var current = end; - var result = XQueryTokenizer.INITIAL[tokenSetId]; - var state = 0; - - for (var code = result & 4095; code != 0; ) - { - var charclass; - var c0 = current < size ? input.charCodeAt(current) : 0; - ++current; - if (c0 < 0x80) - { - charclass = XQueryTokenizer.MAP0[c0]; - } - else if (c0 < 0xd800) - { - var c1 = c0 >> 4; - charclass = XQueryTokenizer.MAP1[(c0 & 15) + XQueryTokenizer.MAP1[(c1 & 31) + XQueryTokenizer.MAP1[c1 >> 5]]]; - } - else - { - if (c0 < 0xdc00) - { - var c1 = current < size ? input.charCodeAt(current) : 0; - if (c1 >= 0xdc00 && c1 < 0xe000) - { - ++current; - c0 = ((c0 & 0x3ff) << 10) + (c1 & 0x3ff) + 0x10000; - nonbmp = true; - } - } - var lo = 0, hi = 5; - for (var m = 3; ; m = (hi + lo) >> 1) - { - if (XQueryTokenizer.MAP2[m] > c0) hi = m - 1; - else if (XQueryTokenizer.MAP2[6 + m] < c0) lo = m + 1; - else {charclass = XQueryTokenizer.MAP2[12 + m]; break;} - if (lo > hi) {charclass = 0; break;} - } - } - - state = code; - var i0 = (charclass << 12) + code - 1; - code = XQueryTokenizer.TRANSITION[(i0 & 15) + XQueryTokenizer.TRANSITION[i0 >> 4]]; - - if (code > 4095) - { - result = code; - code &= 4095; - end = current; - } - } - - result >>= 12; - if (result == 0) - { - end = current - 1; - var c1 = end < size ? input.charCodeAt(end) : 0; - if (c1 >= 0xdc00 && c1 < 0xe000) --end; - return error(begin, end, state, -1, -1); - } - - if (nonbmp) - { - for (var i = result >> 9; i > 0; --i) - { - --end; - var c1 = end < size ? input.charCodeAt(end) : 0; - if (c1 >= 0xdc00 && c1 < 0xe000) --end; - } - } - else - { - end -= result >> 9; - } - - return (result & 511) - 1; - } -} - -XQueryTokenizer.getTokenSet = function(tokenSetId) -{ - var set = []; - var s = tokenSetId < 0 ? - tokenSetId : INITIAL[tokenSetId] & 4095; - for (var i = 0; i < 276; i += 32) - { - var j = i; - var i0 = (i >> 5) * 2062 + s - 1; - var i1 = i0 >> 2; - var i2 = i1 >> 2; - var f = XQueryTokenizer.EXPECTED[(i0 & 3) + XQueryTokenizer.EXPECTED[(i1 & 3) + XQueryTokenizer.EXPECTED[(i2 & 3) + XQueryTokenizer.EXPECTED[i2 >> 2]]]]; - for ( ; f != 0; f >>>= 1, ++j) - { - if ((f & 1) != 0) - { - set.push(XQueryTokenizer.TOKEN[j]); - } - } - } - return set; -}; - -XQueryTokenizer.MAP0 = -[ 66, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 27, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 32, 31, 31, 33, 31, 31, 31, 31, 31, 31, 34, 35, 36, 35, 31, 35, 37, 38, 39, 40, 41, 42, 43, 44, 45, 31, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 31, 61, 62, 63, 64, 35 -]; - -XQueryTokenizer.MAP1 = -[ 108, 124, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 156, 181, 181, 181, 181, 181, 214, 215, 213, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 247, 261, 277, 293, 309, 347, 363, 379, 416, 416, 416, 408, 331, 323, 331, 323, 331, 331, 331, 331, 331, 331, 331, 331, 331, 331, 331, 331, 331, 331, 331, 331, 433, 433, 433, 433, 433, 433, 433, 316, 331, 331, 331, 331, 331, 331, 331, 331, 394, 416, 416, 417, 415, 416, 416, 331, 331, 331, 331, 331, 331, 331, 331, 331, 331, 331, 331, 331, 331, 331, 331, 331, 331, 416, 416, 416, 416, 416, 416, 416, 416, 416, 416, 416, 416, 416, 416, 416, 416, 416, 416, 416, 416, 416, 416, 416, 416, 416, 416, 416, 416, 416, 416, 416, 416, 330, 331, 331, 331, 331, 331, 331, 331, 331, 331, 331, 331, 331, 331, 331, 331, 331, 331, 331, 331, 331, 331, 331, 331, 331, 331, 331, 331, 331, 331, 331, 331, 331, 416, 66, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 27, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 35, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 32, 31, 31, 33, 31, 31, 31, 31, 31, 31, 34, 35, 36, 35, 31, 35, 37, 38, 39, 40, 41, 42, 43, 44, 45, 31, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 31, 61, 62, 63, 64, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 31, 31, 35, 35, 35, 35, 35, 35, 35, 65, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65 -]; - -XQueryTokenizer.MAP2 = -[ 57344, 63744, 64976, 65008, 65536, 983040, 63743, 64975, 65007, 65533, 983039, 1114111, 35, 31, 35, 31, 31, 35 -]; - -XQueryTokenizer.INITIAL = -[ 1, 2, 36867, 45060, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15 -]; - -XQueryTokenizer.TRANSITION = -[ 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 22908, 18836, 17152, 19008, 19233, 20367, 19008, 17173, 30763, 36437, 17330, 17349, 18921, 17189, 17208, 17281, 20355, 17949, 17308, 17327, 17346, 18918, 17365, 21880, 18649, 18665, 19006, 17265, 22033, 20765, 17421, 20535, 17192, 18127, 21873, 17311, 18658, 18999, 19008, 17447, 17470, 17497, 17520, 17251, 36411, 17782, 20682, 17714, 18326, 17543, 17559, 17585, 21887, 17504, 17527, 17258, 36418, 18157, 21940, 17611, 36467, 18217, 17633, 17661, 21190, 17703, 21176, 17730, 34737, 21946, 17617, 36473, 18223, 36531, 17477, 19152, 17860, 17892, 17675, 17753, 17832, 17590, 21620, 17481, 17848, 17880, 18731, 17918, 36551, 17292, 17934, 17979, 18727, 18023, 36545, 18621, 18039, 18056, 18072, 18117, 18143, 18173, 18052, 18209, 18250, 18239, 18266, 17963, 18296, 18312, 18376, 17807, 36403, 19232, 17796, 17163, 30642, 18392, 17816, 32961, 17687, 18805, 18421, 18437, 18101, 17393, 18489, 18505, 18535, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 18579, 21711, 17152, 19008, 19233, 20367, 19008, 28684, 30763, 36437, 17330, 17349, 18921, 17189, 17208, 17281, 20355, 17949, 17308, 17327, 17346, 18918, 17365, 21880, 18649, 18665, 19006, 17265, 22033, 20765, 17421, 20535, 17192, 18127, 21873, 17311, 18658, 18999, 19008, 17447, 17470, 17497, 17520, 17251, 36411, 17782, 20682, 17714, 18326, 17543, 17559, 17585, 21887, 17504, 17527, 17258, 36418, 18157, 21940, 17611, 36467, 18217, 17633, 17661, 21190, 17703, 21176, 17730, 34737, 21946, 17617, 36473, 18223, 36531, 17477, 19152, 17860, 17892, 17675, 17753, 17832, 17590, 21620, 17481, 17848, 17880, 18731, 17918, 36551, 17292, 17934, 17979, 18727, 18023, 36545, 18621, 18039, 18056, 18072, 18117, 18143, 18173, 18052, 18209, 18250, 18239, 18266, 17963, 18296, 18312, 18376, 17807, 36403, 19232, 17796, 17163, 30642, 18392, 17816, 32961, 17687, 18805, 18421, 18437, 18101, 17393, 18489, 18505, 18535, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 20116, 18836, 18637, 19008, 19233, 21267, 19008, 17173, 30763, 36437, 17330, 17349, 18921, 17189, 17208, 17281, 20355, 17949, 17308, 17327, 17346, 18918, 18452, 21880, 18649, 18665, 19006, 17265, 22033, 20765, 17421, 20535, 17192, 18127, 21873, 17311, 18658, 18999, 19008, 17447, 32952, 17497, 17520, 17251, 36411, 17782, 20682, 17714, 18326, 17543, 17559, 17585, 21887, 17504, 17527, 17258, 36418, 21915, 21940, 17611, 36467, 18217, 17633, 17661, 21190, 17703, 21176, 17730, 34737, 21946, 17617, 36473, 18223, 36531, 17477, 19152, 17860, 17892, 17675, 17753, 17832, 17590, 21620, 17481, 19156, 17864, 18731, 17918, 36551, 17292, 17934, 17979, 18727, 18681, 18405, 18621, 18039, 18056, 18072, 18117, 18143, 18706, 18052, 18209, 18250, 18239, 18266, 17963, 18296, 18312, 18376, 17807, 36403, 19232, 17796, 17163, 30642, 18392, 17816, 32961, 17645, 18805, 18421, 18437, 18519, 17393, 18747, 18505, 18535, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 18763, 18778, 18794, 19008, 19233, 20367, 19008, 17173, 30763, 36437, 17330, 17349, 18921, 17189, 17208, 17281, 20355, 17949, 17308, 17327, 17346, 18918, 18452, 21880, 18649, 18665, 19006, 17265, 22033, 20765, 17421, 20535, 17192, 18127, 21873, 17311, 18658, 18999, 19008, 17447, 32952, 17497, 17520, 17251, 36411, 17782, 20682, 17714, 18326, 17543, 17559, 17585, 21887, 17504, 17527, 17258, 36418, 21915, 21940, 17611, 36467, 18217, 17633, 17661, 21190, 17703, 21176, 17730, 34737, 21946, 17617, 36473, 18223, 36531, 17477, 19152, 17860, 17892, 17675, 17753, 17832, 17590, 21620, 17481, 19156, 17864, 18731, 17918, 36551, 17292, 17934, 17979, 18727, 18681, 18405, 18621, 18039, 18056, 18072, 18117, 18143, 18706, 18052, 18209, 18250, 18239, 18266, 17963, 18296, 18312, 18376, 17807, 36403, 19232, 17796, 17163, 30642, 18392, 17816, 32961, 17645, 18805, 18421, 18437, 18519, 17393, 18747, 18505, 18535, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 18821, 22923, 18906, 19008, 19233, 17431, 19008, 17173, 30763, 36437, 17330, 17349, 18921, 17189, 17208, 17281, 20355, 17949, 17308, 17327, 17346, 18918, 18937, 21880, 18649, 18665, 19006, 17265, 22033, 20765, 17421, 20535, 17192, 18127, 19054, 17311, 18658, 18999, 19008, 17447, 32952, 17497, 17520, 17251, 36411, 17782, 20682, 17714, 18326, 17543, 17559, 18953, 21887, 17504, 17527, 17258, 36418, 21915, 21940, 17611, 36467, 18217, 17633, 17661, 21190, 17703, 21176, 17730, 34737, 21946, 17617, 36473, 18223, 36531, 17477, 19152, 17860, 17892, 17675, 17753, 17832, 17590, 21620, 17481, 19156, 17864, 18731, 17918, 36551, 17292, 17934, 17979, 18727, 18681, 18405, 18621, 18039, 18056, 18072, 18117, 18143, 18706, 18052, 18209, 18250, 18239, 18266, 17963, 18296, 18312, 18376, 17807, 36403, 19232, 17796, 17163, 30642, 18392, 17816, 32961, 17645, 18805, 18421, 18437, 18519, 17393, 18747, 18505, 18535, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 21843, 18836, 18987, 19008, 19233, 20367, 19008, 17173, 30763, 36437, 17330, 17349, 18921, 17189, 17208, 17281, 20355, 17949, 17308, 17327, 17346, 18918, 18452, 21880, 18649, 18665, 19006, 17265, 22033, 20765, 17421, 20535, 17192, 18127, 21873, 17311, 18658, 18999, 19008, 17447, 32952, 17497, 17520, 17251, 36411, 17782, 20682, 17714, 18326, 17543, 17559, 17585, 21887, 17504, 17527, 17258, 36418, 21915, 21940, 17611, 36467, 18217, 17633, 17661, 21190, 17703, 21176, 17730, 34737, 21946, 17617, 36473, 18223, 36531, 17477, 19152, 17860, 17892, 17675, 17753, 17832, 17590, 21620, 17481, 19156, 17864, 18731, 17918, 36551, 17292, 17934, 17979, 18727, 18681, 18405, 18621, 18039, 18056, 18072, 18117, 18143, 18706, 18052, 18209, 18250, 18239, 18266, 17963, 18296, 18312, 18376, 17807, 36403, 19232, 17796, 17163, 30642, 18392, 17816, 32961, 17645, 18805, 18421, 18437, 18519, 17393, 18747, 18505, 18535, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 21696, 18836, 18987, 19008, 19233, 20367, 19008, 17173, 30763, 36437, 17330, 17349, 18921, 17189, 17208, 17281, 20355, 17949, 17308, 17327, 17346, 18918, 18452, 21880, 18649, 18665, 19006, 17265, 22033, 20765, 17421, 20535, 17192, 18127, 21873, 17311, 18658, 18999, 19008, 17447, 32952, 17497, 17520, 17251, 36411, 17782, 20682, 17714, 18326, 17543, 17559, 17585, 21887, 17504, 17527, 17258, 36418, 21915, 21940, 17611, 36467, 18217, 17633, 17661, 21190, 17703, 21176, 17730, 34737, 21946, 17617, 36473, 18223, 36531, 17477, 19152, 17860, 17892, 17675, 17753, 17832, 17590, 21620, 17481, 19156, 17864, 18731, 17918, 36551, 17292, 17934, 17979, 18727, 18681, 18405, 18621, 18039, 18056, 18072, 18117, 18143, 18706, 18052, 18209, 18250, 18239, 18266, 17963, 18296, 18312, 18376, 17807, 36403, 19232, 17796, 17163, 30642, 18392, 17816, 32961, 17645, 18805, 18421, 18437, 18519, 17393, 18747, 18505, 18535, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 22429, 20131, 18720, 19008, 19233, 20367, 19008, 17173, 23559, 36437, 17330, 17349, 18921, 17189, 17208, 17281, 20355, 18087, 17308, 17327, 17346, 18918, 18452, 21880, 18649, 18665, 19006, 17265, 22033, 20765, 17421, 20535, 17192, 21242, 19111, 17311, 18658, 18999, 19008, 17447, 32952, 17497, 17520, 17251, 36411, 17782, 20682, 17714, 18326, 17543, 17559, 17585, 21887, 17504, 17527, 17258, 36418, 21915, 21940, 17611, 36467, 18217, 17633, 17661, 21190, 17703, 21176, 17730, 34737, 21946, 17617, 36473, 18223, 36531, 17477, 19152, 17860, 17892, 17675, 17753, 17832, 17590, 21620, 17481, 19156, 17864, 18731, 17918, 36551, 17292, 17934, 17979, 18727, 18681, 18405, 18621, 18039, 18056, 18072, 18117, 18143, 18706, 18052, 18209, 18250, 18239, 18266, 17963, 18296, 18312, 18376, 17807, 36403, 19232, 17796, 17163, 30642, 18392, 17816, 32961, 17645, 18805, 18421, 18437, 18519, 17393, 18747, 18505, 18535, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 19024, 18836, 18609, 19008, 19233, 20367, 19008, 17173, 30763, 36437, 17330, 17349, 18921, 17189, 17208, 17281, 20355, 17949, 17308, 17327, 17346, 18918, 18452, 21880, 18649, 18665, 19006, 17265, 22033, 20765, 17421, 20535, 17192, 18127, 21873, 17311, 18658, 18999, 19008, 17447, 32952, 17497, 17520, 17251, 36411, 17782, 20682, 17714, 18326, 17543, 17559, 17585, 21887, 17504, 17527, 17258, 36418, 21915, 21940, 17611, 36467, 18217, 17633, 17661, 21190, 17703, 21176, 17730, 34737, 21946, 17617, 36473, 18223, 36531, 17477, 19152, 17860, 17892, 17675, 17753, 17832, 17590, 21620, 17481, 19156, 17864, 18731, 17918, 36551, 17292, 17934, 17979, 18727, 18681, 18405, 18621, 18039, 18056, 18072, 18117, 18143, 18706, 18052, 18209, 18250, 18239, 18266, 17963, 18296, 18312, 18376, 17807, 36403, 19232, 17796, 17163, 30642, 18392, 17816, 32961, 17645, 18805, 18421, 18437, 18519, 17393, 18747, 18505, 18535, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 19081, 22444, 18987, 19008, 19233, 20367, 19008, 19065, 30763, 36437, 17330, 17349, 18921, 17189, 17208, 17281, 20355, 17949, 17308, 17327, 17346, 18918, 18452, 21880, 18649, 18665, 19006, 17265, 22033, 20765, 17421, 20535, 17192, 18127, 21873, 17311, 18658, 18999, 19008, 17447, 32952, 17497, 17520, 17251, 36411, 17782, 20682, 17714, 18326, 17543, 17559, 17585, 21887, 17504, 17527, 17258, 36418, 21915, 21940, 17611, 36467, 18217, 17633, 17661, 21190, 17703, 21176, 17730, 34737, 21946, 17617, 36473, 18223, 36531, 17477, 19152, 17860, 17892, 17675, 17753, 17832, 17590, 21620, 17481, 19156, 17864, 18731, 17918, 36551, 17292, 17934, 17979, 18727, 18681, 18405, 18621, 18039, 18056, 18072, 18117, 18143, 18706, 18052, 18209, 18250, 18239, 18266, 17963, 18296, 18312, 18376, 17807, 36403, 19232, 17796, 17163, 30642, 18392, 17816, 32961, 17645, 18805, 18421, 18437, 18519, 17393, 18747, 18505, 18535, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 21992, 22007, 18987, 19008, 19233, 20367, 19008, 18690, 30763, 36437, 17330, 17349, 18921, 17189, 17208, 17281, 20355, 17949, 17308, 17327, 17346, 18918, 18452, 21880, 18649, 18665, 19006, 17265, 22033, 20765, 17421, 20535, 17192, 18127, 21873, 17311, 18658, 18999, 19008, 17447, 32952, 17497, 17520, 17251, 36411, 17782, 20682, 17714, 18326, 17543, 17559, 17585, 21887, 17504, 17527, 17258, 36418, 21915, 21940, 17611, 36467, 18217, 17633, 17661, 21190, 17703, 21176, 17730, 34737, 21946, 17617, 36473, 18223, 36531, 17477, 19152, 17860, 17892, 17675, 17753, 17832, 17590, 21620, 17481, 19156, 17864, 18731, 17918, 36551, 17292, 17934, 17979, 18727, 18681, 18405, 18621, 18039, 18056, 18072, 18117, 18143, 18706, 18052, 18209, 18250, 18239, 18266, 17963, 18296, 18312, 18376, 17807, 36403, 19232, 17796, 17163, 30642, 18392, 17816, 32961, 17645, 18805, 18421, 18437, 18519, 17393, 18747, 18505, 18535, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 22414, 18836, 18987, 19008, 19233, 30651, 19008, 17173, 30763, 36437, 17330, 17349, 18921, 17189, 17208, 17281, 20355, 19138, 17308, 17327, 17346, 18918, 18452, 21880, 18649, 18665, 19006, 17265, 22033, 20765, 17421, 20535, 17192, 18127, 19280, 17311, 18658, 18999, 19008, 17447, 32952, 17497, 17520, 17251, 36411, 17782, 20682, 17714, 18326, 17543, 17559, 19172, 21887, 17504, 17527, 17258, 36418, 21915, 21940, 17611, 36467, 18217, 17633, 17661, 21190, 17703, 21176, 17730, 34737, 21946, 17617, 36473, 18223, 36531, 17477, 19152, 17860, 17892, 17675, 17753, 17832, 17590, 21620, 17481, 19156, 17864, 18731, 17918, 36551, 17292, 17934, 17979, 18727, 18681, 18405, 18621, 18039, 18056, 18072, 18117, 18143, 18706, 18052, 18209, 18250, 18239, 18266, 17963, 18296, 18312, 18376, 17807, 36403, 19232, 17796, 17163, 30642, 18392, 17816, 32961, 17645, 18805, 18421, 18437, 18519, 17393, 18747, 18505, 18535, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 21783, 18836, 18987, 19008, 19233, 20367, 19008, 17173, 30763, 36437, 17330, 17349, 18921, 17189, 17208, 17281, 20355, 19218, 17308, 17327, 17346, 18918, 18452, 21880, 18649, 18665, 19006, 17265, 22033, 20765, 17421, 20535, 17192, 18127, 21873, 17311, 18658, 18999, 19008, 17447, 32952, 17497, 17520, 17251, 36411, 17782, 20682, 17714, 18326, 17543, 17559, 17585, 21887, 17504, 17527, 17258, 36418, 21915, 21940, 17611, 36467, 18217, 17633, 17661, 21190, 17703, 21176, 17730, 34737, 21946, 17617, 36473, 18223, 36531, 17477, 19152, 17860, 17892, 17675, 17753, 17832, 17590, 21620, 17481, 19156, 17864, 18731, 17918, 36551, 17292, 17934, 17979, 18727, 18681, 18405, 18621, 18039, 18056, 18072, 18117, 18143, 18706, 18052, 18209, 18250, 18239, 18266, 17963, 18296, 18312, 18376, 17807, 36403, 19232, 17796, 17163, 30642, 18392, 17816, 32961, 17645, 18805, 18421, 18437, 18519, 17393, 18747, 18505, 18535, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 21651, 18836, 18987, 19008, 19233, 20367, 19008, 17173, 30763, 36437, 17330, 17349, 18921, 17189, 17208, 17281, 20355, 17949, 17308, 17327, 17346, 18918, 18452, 21880, 18649, 18665, 19006, 17265, 22033, 20765, 17421, 20535, 17192, 18127, 21873, 17311, 18658, 18999, 19008, 17447, 32952, 17497, 17520, 17251, 36411, 17782, 20682, 17714, 18326, 17543, 17559, 17585, 21887, 17504, 17527, 17258, 36418, 21915, 21940, 17611, 36467, 18217, 17633, 17661, 21190, 17703, 21176, 17730, 34737, 21946, 17617, 36473, 18223, 36531, 17477, 19152, 17860, 17892, 17675, 17753, 17832, 17590, 21620, 17481, 19156, 17864, 18731, 17918, 36551, 17292, 17934, 17979, 18727, 18681, 18405, 18621, 18039, 18056, 18072, 18117, 18143, 18706, 18052, 18209, 18250, 18239, 18266, 17963, 18296, 18312, 18376, 17807, 36403, 19232, 17796, 17163, 30642, 18392, 17816, 32961, 17645, 18805, 18421, 18437, 18519, 17393, 18747, 18505, 18535, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 19249, 19265, 19307, 18888, 27857, 30536, 24401, 31444, 23357, 18888, 19351, 18888, 18890, 27211, 19370, 27211, 27211, 19392, 24401, 31911, 24401, 24401, 25467, 18888, 18888, 18888, 18888, 18888, 25783, 27211, 27211, 27211, 27211, 28537, 19440, 24401, 24401, 24401, 24401, 24036, 17994, 24060, 18888, 18888, 18888, 18890, 19468, 27211, 27211, 27211, 27211, 19484, 35367, 19520, 24401, 24401, 24401, 19628, 18888, 29855, 18888, 18888, 23086, 27211, 19538, 27211, 27211, 30756, 24012, 24401, 19560, 24401, 24401, 26750, 18888, 18888, 19327, 27855, 27211, 27211, 19580, 17590, 24017, 24401, 24401, 19600, 25665, 18888, 18888, 28518, 27211, 27212, 24016, 19620, 19868, 28435, 25722, 18889, 19644, 27211, 32888, 35852, 19868, 31018, 19694, 19376, 19717, 22215, 19735, 22098, 19751, 35203, 19776, 19797, 19817, 19840, 25783, 31738, 24135, 19701, 19856, 31015, 23516, 31008, 28311, 19419, 27963, 19659, 27951, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 21768, 18836, 19307, 18888, 27857, 27904, 24401, 29183, 28015, 18888, 18888, 18888, 18890, 27211, 27211, 27211, 27211, 19888, 24401, 24401, 24401, 24401, 22953, 18888, 18888, 18888, 18888, 18888, 25783, 27211, 27211, 27211, 27211, 28537, 19440, 24401, 24401, 24401, 24401, 24036, 18881, 18888, 18888, 18888, 18888, 18890, 27211, 27211, 27211, 27211, 27211, 19484, 24401, 24401, 24401, 24401, 24401, 19628, 18888, 18888, 18888, 18888, 23086, 27211, 27211, 27211, 27211, 30756, 24012, 24401, 24401, 24401, 24401, 26750, 18888, 18888, 18888, 27855, 27211, 27211, 27211, 17590, 24017, 24401, 24401, 24401, 18887, 18888, 18888, 27211, 27211, 27212, 24016, 24402, 19868, 25659, 18888, 18889, 27211, 27211, 19719, 23889, 19868, 31018, 18890, 27211, 31833, 19406, 19447, 23086, 23330, 19828, 31017, 27856, 31741, 19840, 25783, 31738, 19837, 25782, 19760, 31015, 23516, 31008, 22105, 19419, 27963, 19659, 27951, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 22399, 18836, 19918, 19008, 19233, 20367, 19008, 17173, 30763, 36437, 17330, 17349, 18921, 17189, 17208, 17281, 20355, 17949, 17308, 17327, 17346, 18918, 18452, 21880, 18649, 18665, 19006, 17265, 22033, 20765, 17421, 20535, 17192, 18127, 21873, 17311, 18658, 18999, 19008, 17447, 32952, 17497, 17520, 17251, 36411, 17782, 20682, 17714, 18326, 17543, 17559, 17585, 21887, 17504, 17527, 17258, 36418, 21915, 21940, 17611, 36467, 18217, 17633, 17661, 21190, 17703, 21176, 17730, 34737, 21946, 17617, 36473, 18223, 36531, 17477, 19152, 17860, 17892, 17675, 17753, 17832, 17590, 21620, 17481, 19156, 17864, 18731, 17918, 36551, 17292, 17934, 17979, 18727, 18681, 18405, 18621, 18039, 18056, 18072, 18117, 18143, 18706, 18052, 18209, 18250, 18239, 18266, 17963, 18296, 18312, 18376, 17807, 36403, 19232, 17796, 17163, 30642, 18392, 17816, 32961, 17645, 18805, 18421, 18437, 18519, 17393, 18747, 18505, 18535, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 21666, 18836, 19307, 18888, 27857, 27525, 24401, 29183, 21467, 18888, 18888, 18888, 18890, 27211, 27211, 27211, 27211, 19946, 24401, 24401, 24401, 24401, 32382, 18888, 18888, 18888, 18888, 18888, 25783, 27211, 27211, 27211, 27211, 28537, 19998, 24401, 24401, 24401, 24401, 31500, 18467, 18888, 18888, 18888, 18888, 18890, 27211, 27211, 27211, 27211, 27211, 20021, 24401, 24401, 24401, 24401, 24401, 34271, 18888, 18888, 18888, 18888, 23086, 27211, 27211, 27211, 27211, 32926, 29908, 24401, 24401, 24401, 24401, 26095, 18888, 18888, 18888, 27855, 27211, 27211, 27211, 20050, 22968, 24401, 24401, 24401, 18887, 18888, 18888, 27211, 27211, 35779, 20080, 24402, 19868, 25659, 18888, 18889, 27211, 27211, 19719, 23889, 19868, 31018, 18890, 27211, 31833, 19406, 19447, 23086, 23330, 19828, 31017, 27856, 31741, 19840, 25783, 31738, 19837, 25782, 19760, 31015, 23516, 31008, 22105, 19419, 27963, 19659, 27951, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 20101, 19039, 20191, 20412, 20903, 17569, 20309, 20872, 25633, 20623, 20505, 20218, 20242, 17189, 17208, 17281, 20355, 20265, 20306, 20328, 20383, 22490, 20796, 20619, 21354, 20654, 20410, 20956, 21232, 20765, 17421, 20535, 17192, 18127, 22459, 20312, 25531, 22470, 20309, 20428, 18964, 20466, 20491, 21342, 21070, 20521, 20682, 17714, 18326, 17543, 17559, 17585, 22497, 20559, 19504, 20279, 20575, 20290, 20475, 20604, 20639, 20226, 20670, 17661, 21190, 17703, 21176, 17730, 19494, 20698, 20711, 22480, 21046, 21116, 18971, 21130, 20727, 20755, 17675, 17753, 17832, 17590, 25518, 20394, 20781, 20831, 20202, 20847, 21401, 17292, 17934, 17979, 18549, 20863, 20588, 25542, 20888, 20919, 18072, 18117, 20935, 20972, 21032, 21062, 21086, 18239, 21102, 18563, 21146, 21162, 21206, 18351, 20949, 20902, 18340, 21222, 21258, 21283, 18360, 20249, 17405, 21295, 21311, 21327, 20739, 20343, 21370, 21386, 21417, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 21977, 18836, 18987, 19008, 19233, 20367, 19008, 17173, 30763, 36437, 17330, 17349, 18921, 17189, 17208, 17281, 20355, 17949, 17308, 17327, 17346, 18918, 21452, 21880, 18649, 18665, 19006, 17265, 22033, 20765, 17421, 20535, 17192, 18127, 21873, 17311, 18658, 18999, 19008, 21504, 32952, 17497, 17520, 17251, 36411, 17782, 20682, 17714, 18326, 17543, 17559, 17585, 21887, 17504, 17527, 17258, 36418, 36501, 21940, 17611, 36467, 18217, 17633, 17661, 21190, 17703, 21176, 17730, 28674, 21946, 17617, 36473, 18223, 17237, 17477, 19152, 17860, 17892, 17675, 17753, 17832, 21575, 21534, 17481, 19156, 17864, 18731, 17918, 36551, 17292, 17934, 21560, 30628, 18681, 18405, 18621, 18039, 18056, 18072, 18117, 18143, 18706, 18052, 18209, 18250, 18239, 18266, 17963, 18296, 18312, 18376, 17807, 36403, 19232, 17796, 17163, 30642, 18392, 17816, 32961, 17645, 18805, 18421, 18437, 18519, 17393, 18747, 18505, 18535, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 21798, 18836, 21612, 19008, 19233, 20367, 19008, 17173, 30763, 36437, 17330, 17349, 18921, 17189, 17208, 17281, 20355, 17949, 17308, 17327, 17346, 18918, 18452, 21880, 18649, 18665, 19006, 17265, 22033, 20765, 17421, 20535, 17192, 18127, 21873, 17311, 18658, 18999, 19008, 17447, 32952, 17497, 17520, 17251, 36411, 17782, 20682, 17714, 18326, 17543, 17559, 17585, 21887, 17504, 17527, 17258, 36418, 21915, 21940, 17611, 36467, 18217, 17633, 17661, 21190, 17703, 21176, 17730, 34737, 21946, 17617, 36473, 18223, 36531, 17477, 19152, 17860, 17892, 17675, 17753, 17832, 17590, 21620, 17481, 19156, 17864, 18731, 17918, 36551, 17292, 17934, 17979, 18727, 18681, 18405, 18621, 18039, 18056, 18072, 18117, 18143, 18706, 18052, 18209, 18250, 18239, 18266, 17963, 18296, 18312, 18376, 17807, 36403, 19232, 17796, 17163, 30642, 18392, 17816, 32961, 17645, 18805, 18421, 18437, 18519, 17393, 18747, 18505, 18535, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 21636, 18836, 18987, 19008, 19233, 17902, 19008, 17173, 30763, 36437, 17330, 17349, 18921, 17189, 17208, 17281, 20355, 17949, 17308, 17327, 17346, 18918, 18452, 21880, 18649, 18665, 19006, 17265, 22033, 20765, 17421, 20535, 17192, 18127, 21873, 17311, 18658, 18999, 19008, 17447, 32952, 17497, 17520, 17251, 36411, 17782, 20682, 17714, 18326, 17543, 17559, 17585, 21887, 17504, 17527, 17258, 36418, 21915, 21940, 17611, 36467, 18217, 17633, 17661, 21190, 17703, 21176, 17730, 34737, 21946, 17617, 36473, 18223, 36531, 17477, 19152, 17860, 17892, 17675, 17753, 17832, 17590, 21620, 17481, 19156, 17864, 18731, 17918, 36551, 17292, 17934, 17979, 18727, 18681, 18405, 18621, 18039, 18056, 18072, 18117, 18143, 18706, 18052, 18209, 18250, 18239, 18266, 17963, 18296, 18312, 18376, 17807, 36403, 19232, 17796, 17163, 30642, 18392, 17816, 32961, 17645, 18805, 18421, 18437, 18519, 17393, 18747, 18505, 18535, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 21753, 19096, 21903, 19008, 19233, 20367, 19008, 19291, 30763, 36437, 17330, 17349, 18921, 17189, 17208, 17281, 20355, 17949, 17308, 17327, 17346, 18918, 17379, 21880, 18649, 18665, 19006, 17265, 22033, 20765, 17421, 20535, 17192, 18127, 21873, 17311, 18658, 18999, 19008, 17447, 21931, 17497, 17520, 17251, 36411, 17782, 20682, 17714, 18326, 17543, 17559, 17585, 21887, 17504, 17527, 17258, 36418, 18280, 21940, 17611, 36467, 18217, 17633, 17661, 21190, 17703, 21176, 17730, 34737, 21946, 17617, 36473, 18223, 36531, 17477, 19152, 17860, 17892, 17675, 17753, 17832, 17590, 21620, 17481, 19156, 17864, 18731, 17918, 36551, 17292, 17934, 17979, 18727, 18681, 18405, 18621, 18039, 18056, 18072, 18117, 18143, 18706, 18052, 18209, 18250, 18239, 18266, 17963, 18296, 18312, 18376, 17807, 36403, 19232, 17796, 17163, 30642, 18392, 17816, 32961, 17645, 18805, 18421, 18437, 18519, 17393, 18747, 18505, 18535, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 21962, 18594, 18987, 19008, 19233, 22043, 19008, 17173, 30763, 36437, 17330, 17349, 18921, 17189, 17208, 17281, 20355, 17949, 17308, 17327, 17346, 18918, 18452, 21880, 18649, 18665, 19006, 17265, 22033, 20765, 17421, 20535, 17192, 18127, 21873, 17311, 18658, 18999, 19008, 17447, 32952, 17497, 17520, 17251, 36411, 17782, 20682, 17714, 18326, 17543, 17559, 17585, 21887, 17504, 17527, 17258, 36418, 21915, 21940, 17611, 36467, 18217, 17633, 17661, 21190, 17703, 21176, 17730, 34737, 21946, 17617, 36473, 18223, 36531, 17477, 19152, 17860, 17892, 17675, 17753, 17832, 17590, 21620, 17481, 19156, 17864, 18731, 17918, 36551, 17292, 17934, 17979, 18727, 18681, 18405, 18621, 18039, 18056, 18072, 18117, 18143, 18706, 18052, 18209, 18250, 18239, 18266, 17963, 18296, 18312, 18376, 17807, 36403, 19232, 17796, 17163, 30642, 18392, 17816, 32961, 17645, 18805, 18421, 18437, 18519, 17393, 18747, 18505, 18535, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 21681, 21858, 18987, 19008, 19233, 20367, 19008, 21544, 30763, 36437, 17330, 17349, 18921, 17189, 17208, 17281, 20355, 17949, 17308, 17327, 17346, 18918, 18452, 21880, 18649, 18665, 19006, 17265, 22033, 20765, 17421, 20535, 17192, 18127, 21873, 17311, 18658, 18999, 19008, 17447, 32952, 17497, 17520, 17251, 36411, 17782, 20682, 17714, 18326, 17543, 17559, 17585, 21887, 17504, 17527, 17258, 36418, 21915, 21940, 17611, 36467, 18217, 17633, 17661, 21190, 17703, 21176, 17730, 34737, 21946, 17617, 36473, 18223, 36531, 17477, 19152, 17860, 17892, 17675, 17753, 17832, 17590, 21620, 17481, 19156, 17864, 18731, 17918, 36551, 17292, 17934, 17979, 18727, 18681, 18405, 18621, 18039, 18056, 18072, 18117, 18143, 18706, 18052, 18209, 18250, 18239, 18266, 17963, 18296, 18312, 18376, 17807, 36403, 19232, 17796, 17163, 30642, 18392, 17816, 32961, 17645, 18805, 18421, 18437, 18519, 17393, 18747, 18505, 18535, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 22339, 18836, 22059, 18888, 27857, 34097, 24401, 29183, 22087, 18888, 18888, 18888, 18890, 27211, 27211, 27211, 27211, 22121, 24401, 24401, 24401, 24401, 30613, 18888, 18888, 18888, 18888, 18888, 25783, 27211, 27211, 27211, 27211, 35072, 22164, 24401, 24401, 24401, 24401, 31500, 31693, 18888, 18888, 18888, 18888, 18890, 27211, 27211, 27211, 27211, 27211, 19484, 24401, 24401, 24401, 24401, 24401, 32319, 18888, 18888, 18888, 18888, 23086, 27211, 27211, 27211, 27211, 30756, 21431, 24401, 24401, 24401, 24401, 26095, 18888, 18888, 18888, 27855, 27211, 27211, 27211, 22187, 22968, 24401, 24401, 24401, 22231, 18888, 18888, 27211, 27211, 35779, 20080, 24402, 19868, 25659, 18888, 18889, 27211, 27211, 19719, 23889, 19868, 31018, 18890, 27211, 31833, 19406, 19447, 23086, 23330, 19828, 31017, 27856, 31741, 19840, 25783, 31738, 19837, 25782, 19760, 31015, 23516, 31008, 22105, 19419, 27963, 19659, 27951, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 22339, 18836, 22059, 18888, 27857, 34097, 24401, 29183, 22087, 18888, 18888, 18888, 18890, 27211, 27211, 27211, 27211, 22121, 24401, 24401, 24401, 24401, 30613, 18888, 18888, 18888, 18888, 18888, 25783, 27211, 27211, 27211, 27211, 35072, 22164, 24401, 24401, 24401, 24401, 31500, 31693, 18888, 18888, 18888, 18888, 18890, 27211, 27211, 27211, 27211, 27211, 19484, 24401, 24401, 24401, 24401, 24401, 31181, 18888, 18888, 18888, 18888, 23086, 27211, 27211, 27211, 27211, 30756, 21431, 24401, 24401, 24401, 24401, 26095, 18888, 18888, 18888, 27855, 27211, 27211, 27211, 22187, 22968, 24401, 24401, 24401, 18887, 18888, 18888, 27211, 27211, 35779, 20080, 24402, 19868, 25659, 18888, 18889, 27211, 27211, 19719, 23889, 19868, 31018, 18890, 27211, 31833, 19406, 19447, 23086, 23330, 19828, 31017, 27856, 31741, 19840, 25783, 31738, 19837, 25782, 19760, 31015, 23516, 31008, 22105, 19419, 27963, 19659, 27951, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 22339, 18836, 22059, 18888, 27857, 34097, 24401, 29183, 22087, 18888, 18888, 18888, 18890, 27211, 27211, 27211, 27211, 22121, 24401, 24401, 24401, 24401, 31678, 18888, 18888, 18888, 18888, 18888, 25783, 27211, 27211, 27211, 27211, 35072, 22164, 24401, 24401, 24401, 24401, 31500, 31693, 18888, 18888, 18888, 18888, 18890, 27211, 27211, 27211, 27211, 27211, 19484, 24401, 24401, 24401, 24401, 24401, 31181, 18888, 18888, 18888, 18888, 23086, 27211, 27211, 27211, 27211, 30756, 21431, 24401, 24401, 24401, 24401, 26095, 18888, 18888, 18888, 27855, 27211, 27211, 27211, 22187, 22968, 24401, 24401, 24401, 18887, 18888, 18888, 27211, 27211, 35779, 20080, 24402, 19868, 25659, 18888, 18889, 27211, 27211, 19719, 23889, 19868, 31018, 18890, 27211, 31833, 19406, 19447, 23086, 23330, 19828, 31017, 27856, 31741, 19840, 25783, 31738, 19837, 25782, 19760, 31015, 23516, 31008, 22105, 19419, 27963, 19659, 27951, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 22339, 18836, 22059, 18888, 27857, 34097, 24401, 29183, 22087, 18888, 18888, 18888, 18890, 27211, 27211, 27211, 27211, 22121, 24401, 24401, 24401, 24401, 30613, 18888, 18888, 18888, 18888, 18888, 25783, 27211, 27211, 27211, 27211, 35072, 22164, 24401, 24401, 24401, 24401, 33588, 31693, 18888, 18888, 18888, 18888, 18890, 27211, 27211, 27211, 27211, 27211, 19484, 24401, 24401, 24401, 24401, 24401, 31181, 18888, 18888, 18888, 18888, 23086, 27211, 27211, 27211, 27211, 30756, 21431, 24401, 24401, 24401, 24401, 26095, 18888, 18888, 18888, 27855, 27211, 27211, 27211, 22187, 22968, 24401, 24401, 24401, 18887, 18888, 18888, 27211, 27211, 35779, 20080, 24402, 19868, 25659, 18888, 18889, 27211, 27211, 19719, 23889, 19868, 31018, 18890, 27211, 31833, 19406, 19447, 23086, 23330, 19828, 31017, 27856, 31741, 19840, 25783, 31738, 19837, 25782, 19760, 31015, 23516, 31008, 22105, 19419, 27963, 19659, 27951, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 22339, 18836, 22059, 18888, 27857, 35019, 24401, 29183, 22087, 18888, 18888, 18888, 18890, 27211, 27211, 27211, 27211, 22248, 24401, 24401, 24401, 24401, 30613, 18888, 18888, 18888, 18888, 18888, 25783, 27211, 27211, 27211, 27211, 35072, 22164, 24401, 24401, 24401, 24401, 31500, 31693, 18888, 18888, 18888, 18888, 18890, 27211, 27211, 27211, 27211, 27211, 19484, 24401, 24401, 24401, 24401, 24401, 31181, 18888, 18888, 18888, 18888, 23086, 27211, 27211, 27211, 27211, 30756, 21431, 24401, 24401, 24401, 24401, 26095, 18888, 18888, 18888, 27855, 27211, 27211, 27211, 22187, 22968, 24401, 24401, 24401, 18887, 18888, 18888, 27211, 27211, 35779, 20080, 24402, 19868, 25659, 18888, 18889, 27211, 27211, 19719, 23889, 19868, 31018, 18890, 27211, 31833, 19406, 19447, 23086, 23330, 19828, 31017, 27856, 31741, 19840, 25783, 31738, 19837, 25782, 19760, 31015, 23516, 31008, 22105, 19419, 27963, 19659, 27951, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 22339, 18836, 22059, 18888, 27857, 34097, 24401, 29183, 22087, 18888, 18888, 18888, 18890, 27211, 27211, 27211, 27211, 22121, 24401, 24401, 24401, 24401, 18866, 18888, 18888, 18888, 18888, 18888, 25783, 27211, 27211, 27211, 27211, 35072, 22164, 24401, 24401, 24401, 24401, 24036, 31693, 18888, 18888, 18888, 18888, 18890, 27211, 27211, 27211, 27211, 27211, 19484, 24401, 24401, 24401, 24401, 24401, 19628, 18888, 18888, 18888, 18888, 23086, 27211, 27211, 27211, 27211, 30756, 24012, 24401, 24401, 24401, 24401, 26750, 18888, 18888, 18888, 27855, 27211, 27211, 27211, 17590, 24017, 24401, 24401, 24401, 18887, 18888, 18888, 27211, 27211, 27212, 24016, 24402, 19868, 25659, 18888, 18889, 27211, 27211, 19719, 23889, 19868, 31018, 18890, 27211, 31833, 19406, 19447, 23086, 23330, 19828, 31017, 27856, 31741, 19840, 25783, 31738, 19837, 25782, 19760, 31015, 23516, 31008, 22105, 19419, 27963, 19659, 27951, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 22324, 18836, 22059, 18888, 27857, 30501, 24401, 29183, 22087, 18888, 18888, 18888, 18890, 27211, 27211, 27211, 27211, 22121, 24401, 24401, 24401, 24401, 18866, 18888, 18888, 18888, 18888, 18888, 25783, 27211, 27211, 27211, 27211, 35072, 22164, 24401, 24401, 24401, 24401, 24036, 31693, 18888, 18888, 18888, 18888, 18890, 27211, 27211, 27211, 27211, 27211, 19484, 24401, 24401, 24401, 24401, 24401, 19628, 18888, 18888, 18888, 18888, 23086, 27211, 27211, 27211, 27211, 30756, 24012, 24401, 24401, 24401, 24401, 26750, 18888, 18888, 18888, 27855, 27211, 27211, 27211, 17590, 24017, 24401, 24401, 24401, 18887, 18888, 18888, 27211, 27211, 27212, 24016, 24402, 19868, 25659, 18888, 18889, 27211, 27211, 19719, 23889, 19868, 31018, 18890, 27211, 31833, 19406, 19447, 23086, 23330, 19828, 31017, 27856, 31741, 19840, 25783, 31738, 19837, 25782, 19760, 31015, 23516, 31008, 22105, 19419, 27963, 19659, 27951, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 22339, 18836, 22059, 18888, 27857, 34097, 24401, 29183, 22087, 18888, 18888, 18888, 18890, 27211, 27211, 27211, 27211, 22121, 24401, 24401, 24401, 24401, 18866, 18888, 18888, 18888, 18888, 18888, 25783, 27211, 27211, 27211, 27211, 35072, 22164, 24401, 24401, 24401, 24401, 24036, 31693, 18888, 18888, 18888, 18888, 18890, 27211, 27211, 27211, 27211, 27211, 19484, 24401, 24401, 24401, 24401, 24401, 19628, 18888, 18888, 18888, 18888, 23086, 27211, 27211, 27211, 27211, 30756, 24012, 24401, 24401, 24401, 24401, 34365, 18888, 18888, 18888, 27855, 27211, 27211, 27211, 17590, 24017, 24401, 24401, 24401, 18887, 18888, 18888, 27211, 27211, 27212, 24016, 24402, 19868, 25659, 18888, 18889, 27211, 27211, 19719, 23889, 19868, 31018, 18890, 27211, 31833, 19406, 19447, 23086, 23330, 19828, 31017, 27856, 31741, 19840, 25783, 31738, 19837, 25782, 19760, 31015, 23516, 31008, 22105, 19419, 27963, 19659, 27951, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 22354, 18836, 18987, 19008, 19233, 20367, 19008, 17173, 27086, 36437, 17330, 17349, 18921, 17189, 17208, 17281, 20355, 17949, 17308, 17327, 17346, 18918, 18452, 21880, 18649, 18665, 19006, 17265, 22033, 20765, 17421, 20535, 17192, 18127, 21873, 17311, 18658, 18999, 19008, 17447, 32952, 17497, 17520, 17251, 36411, 17782, 20682, 17714, 18326, 17543, 17559, 17585, 21887, 17504, 17527, 17258, 36418, 21915, 21940, 17611, 36467, 18217, 17633, 17661, 21190, 17703, 21176, 17730, 34737, 21946, 17617, 36473, 18223, 36531, 17477, 19152, 17860, 17892, 17675, 17753, 17832, 17590, 21620, 17481, 19156, 17864, 18731, 17918, 36551, 17292, 17934, 17979, 18727, 18681, 18405, 19930, 18039, 18056, 18072, 18117, 18143, 18706, 18052, 18209, 18250, 18239, 18266, 17963, 18296, 18312, 18376, 17807, 36403, 19232, 17796, 17163, 30642, 18392, 17816, 32961, 17645, 18805, 18421, 18437, 18519, 17393, 18747, 18505, 18535, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 21828, 18836, 18987, 19008, 19233, 20367, 19008, 17173, 30763, 36437, 17330, 17349, 18921, 17189, 17208, 17281, 20355, 17949, 17308, 17327, 17346, 18918, 18452, 21880, 18649, 18665, 19006, 17265, 22033, 20765, 17421, 20535, 17192, 18127, 21873, 17311, 18658, 18999, 19008, 17447, 32952, 17497, 17520, 17251, 36411, 17782, 20682, 17714, 18326, 17543, 17559, 17585, 21887, 17504, 17527, 17258, 36418, 21915, 21940, 17611, 36467, 18217, 17633, 17661, 21190, 17703, 21176, 17730, 34737, 21946, 17617, 36473, 18223, 36531, 17477, 19152, 17860, 17892, 17675, 17753, 17832, 17590, 21620, 17481, 19156, 17864, 18731, 17918, 36551, 17292, 17934, 17979, 18727, 18681, 18405, 18621, 18039, 18056, 18072, 18117, 18143, 18706, 18052, 18209, 18250, 18239, 18266, 17963, 18296, 18312, 18376, 17807, 36403, 19232, 17796, 17163, 30642, 18392, 17816, 32961, 17645, 18805, 18421, 18437, 18519, 17393, 18747, 18505, 18535, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 22309, 22513, 18987, 19008, 19233, 20367, 19008, 19122, 30763, 36437, 17330, 17349, 18921, 17189, 17208, 17281, 20355, 17949, 17308, 17327, 17346, 18918, 22544, 21880, 18649, 18665, 19006, 17265, 22033, 20765, 17421, 20535, 17192, 18127, 21873, 17311, 18658, 18999, 19008, 17447, 32952, 17497, 17520, 17251, 36411, 17782, 20682, 17714, 18326, 17543, 17559, 17585, 21887, 17504, 17527, 17258, 36418, 21915, 21940, 17611, 36467, 18217, 17633, 17661, 21190, 17703, 21176, 17730, 34737, 21946, 17617, 36473, 18223, 36531, 17477, 19152, 17860, 17892, 17675, 17753, 17832, 17590, 21620, 17481, 19156, 17864, 18731, 17918, 36551, 17292, 17934, 17979, 18727, 18681, 18405, 18621, 18039, 18056, 18072, 18117, 18143, 18706, 18052, 18209, 18250, 18239, 18266, 17963, 18296, 18312, 18376, 17807, 36403, 19232, 17796, 17163, 30642, 18392, 17816, 32961, 17645, 18805, 18421, 18437, 18519, 17393, 18747, 18505, 18535, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 22608, 18836, 22988, 23004, 27585, 23020, 23036, 23067, 22087, 18888, 18888, 18888, 23083, 27211, 27211, 27211, 23102, 22121, 24401, 24401, 24401, 23122, 31386, 26154, 19674, 18888, 28119, 28232, 19424, 23705, 27211, 27211, 23142, 23173, 23189, 23212, 24401, 24401, 23246, 34427, 31693, 23262, 18888, 23290, 23308, 27783, 27620, 23327, 35263, 35107, 33383, 23346, 18193, 23393, 32748, 23968, 24401, 23414, 35153, 23463, 18888, 33913, 23442, 23482, 27211, 27211, 23532, 23552, 21431, 23575, 24401, 24401, 23604, 26095, 23635, 23657, 18888, 33482, 23685, 33251, 27211, 22187, 18851, 23721, 35536, 24401, 18887, 23750, 32641, 27211, 23769, 23787, 20080, 33012, 24384, 25659, 18888, 18889, 27211, 27211, 19719, 23889, 23803, 31018, 18890, 27211, 31833, 19406, 19447, 23086, 23330, 19828, 28224, 31826, 23823, 26917, 34978, 23850, 26493, 25782, 23878, 23914, 23516, 31008, 22105, 19419, 27963, 19659, 29781, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 22623, 18836, 22059, 18888, 27857, 34097, 24401, 29183, 22087, 18888, 18888, 18888, 18890, 27211, 27211, 27211, 27211, 22121, 24401, 24401, 24401, 24401, 30613, 18888, 18888, 18888, 18888, 28909, 25783, 27211, 27211, 27211, 34048, 23933, 22164, 24401, 24401, 24401, 28409, 23949, 31693, 18888, 18888, 18888, 18888, 18890, 27211, 27211, 27211, 27211, 27211, 19484, 24401, 24401, 24401, 24401, 24401, 31181, 26583, 18888, 18888, 18888, 35585, 23984, 27211, 27211, 27211, 24005, 22201, 24033, 24401, 24401, 24401, 24052, 18888, 18888, 18888, 27855, 27211, 27211, 27211, 22187, 22968, 24401, 24401, 24401, 18887, 18888, 18888, 27211, 27211, 35779, 20080, 24402, 19868, 25659, 18888, 18889, 27211, 27211, 19719, 23889, 19868, 31018, 18890, 27211, 31833, 19406, 19447, 23086, 23330, 19828, 31017, 27856, 31741, 26496, 24076, 24126, 24151, 25782, 19760, 31015, 23516, 31008, 22105, 19419, 27963, 19659, 27951, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 22638, 18836, 22059, 19678, 27857, 24185, 24401, 24201, 24217, 26592, 18888, 18888, 18890, 24252, 24268, 27211, 27211, 22121, 24287, 24303, 24401, 24401, 30613, 19781, 35432, 36007, 32649, 18888, 25783, 24322, 28966, 23771, 27211, 35072, 22164, 24358, 32106, 26829, 24400, 31500, 31693, 18888, 18888, 18888, 24801, 18890, 27211, 27211, 27211, 27211, 24418, 19484, 24401, 24401, 24401, 24401, 20167, 31181, 18888, 18888, 18888, 27833, 23086, 27211, 27211, 33540, 27211, 30756, 21431, 24401, 24401, 22972, 24401, 26095, 18888, 36131, 18888, 27855, 27211, 24440, 27211, 22187, 22968, 24401, 24459, 24401, 31699, 28454, 18888, 34528, 34570, 35779, 24478, 24402, 24494, 25659, 18888, 36228, 27211, 27211, 24515, 30981, 23734, 31018, 18890, 27211, 31833, 19406, 19447, 23086, 23330, 24538, 31017, 27856, 31741, 30059, 23377, 24563, 19837, 25782, 19760, 31015, 23516, 25374, 22105, 19419, 29793, 24579, 27951, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 22653, 18836, 22059, 25756, 19982, 34097, 23196, 29183, 24614, 24110, 23641, 24673, 26103, 24697, 24443, 24713, 28558, 22121, 24748, 24462, 24764, 23398, 30613, 18888, 18888, 18888, 18888, 24798, 25783, 27211, 27211, 27211, 34232, 35072, 22164, 24401, 24401, 24401, 33302, 31500, 22559, 24106, 24232, 18888, 18888, 34970, 24817, 30411, 27211, 27211, 32484, 19484, 29750, 35127, 24401, 24401, 19872, 31181, 24852, 18888, 18888, 24871, 29221, 27211, 27211, 32072, 27211, 30756, 34441, 24401, 24401, 31571, 24401, 26095, 33141, 27802, 27011, 27855, 25295, 25607, 24888, 22187, 22968, 19195, 34593, 24906, 18887, 18888, 18888, 27211, 27211, 35779, 20080, 24402, 19868, 25659, 18888, 33663, 27211, 27211, 24924, 24947, 23588, 31018, 18890, 27211, 31833, 22135, 19447, 23086, 23330, 19828, 30904, 31042, 24972, 19840, 25000, 31738, 30898, 25782, 19760, 31015, 23516, 31008, 22105, 19419, 25016, 19659, 27951, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 22668, 18836, 25041, 25057, 31320, 25073, 25089, 25105, 22087, 34796, 24236, 36138, 34870, 34125, 25121, 23106, 35497, 22248, 36613, 25137, 30671, 27365, 30613, 25153, 26447, 25199, 25233, 22574, 23274, 25249, 25265, 25281, 25318, 25344, 25360, 25400, 25428, 25452, 26731, 25504, 31693, 23669, 25558, 27407, 25575, 28599, 25934, 25599, 27211, 28180, 27304, 25623, 25839, 25649, 24401, 34820, 25681, 25698, 22586, 27775, 30190, 25745, 25778, 25799, 25817, 28995, 33569, 30756, 21518, 33443, 25837, 25855, 25893, 26095, 31254, 26677, 30136, 27855, 25930, 25950, 27211, 22187, 22968, 25966, 25986, 24401, 23428, 27763, 36330, 26959, 26002, 26029, 26045, 26085, 26119, 26170, 26203, 26222, 26239, 30527, 26372, 26274, 28404, 31018, 33757, 27211, 34262, 26316, 36729, 26345, 26366, 35337, 31017, 26388, 26407, 30954, 26350, 33861, 26434, 26463, 26479, 26512, 23516, 33189, 26531, 26547, 27963, 31293, 27951, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 22683, 18836, 26568, 26181, 26608, 34097, 26643, 29183, 22087, 26669, 18888, 18888, 18890, 26693, 27211, 27211, 27211, 22121, 26720, 24401, 24401, 24401, 30613, 18888, 18888, 18888, 18888, 26774, 25783, 27211, 27211, 27211, 26619, 35072, 22164, 24401, 24401, 24401, 21596, 31500, 31693, 18888, 18888, 33978, 18888, 18890, 27211, 27211, 25801, 27211, 27211, 19484, 24401, 24401, 24401, 26792, 24401, 31181, 18888, 18888, 18888, 35464, 23086, 27211, 27211, 27211, 26809, 30756, 21431, 24401, 24401, 24401, 26828, 26095, 18888, 18888, 18888, 27855, 27211, 27211, 27211, 22187, 22968, 24401, 24401, 24401, 18887, 18888, 18888, 27211, 27211, 35779, 20080, 24402, 19868, 25659, 31948, 18889, 35707, 27211, 19719, 26845, 19868, 31018, 18890, 27211, 31833, 19406, 19447, 23086, 23330, 26905, 31017, 27856, 31741, 19840, 25783, 31738, 19837, 25782, 19760, 31015, 23516, 24984, 31088, 19419, 26945, 27651, 27951, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 22698, 18836, 26999, 18888, 27857, 34097, 24401, 29183, 22087, 18888, 18888, 18888, 18890, 27211, 27211, 27211, 27211, 22121, 24401, 24401, 24401, 24401, 23051, 18888, 18888, 18888, 18888, 18888, 25783, 27211, 27211, 27211, 27211, 35072, 27033, 24401, 24401, 24401, 24401, 24036, 31693, 18888, 18888, 27056, 18888, 18890, 27211, 27211, 30320, 27211, 27211, 27075, 24401, 24401, 29032, 24401, 24401, 19628, 18888, 18888, 18888, 18888, 23086, 27211, 27211, 27211, 27211, 30756, 24012, 24401, 24401, 24401, 24401, 26750, 18888, 18888, 33986, 27855, 27211, 27211, 27102, 17590, 24017, 24401, 24401, 27123, 27144, 36254, 27162, 27210, 27228, 28500, 18187, 34842, 33426, 27244, 35980, 27277, 27302, 27320, 36048, 34013, 20999, 31882, 21478, 27895, 27356, 30287, 27381, 23086, 23330, 19828, 31017, 27856, 31741, 19840, 25783, 31738, 19837, 25782, 19760, 31015, 23516, 31008, 22105, 26329, 30087, 19659, 27951, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 22339, 18836, 22059, 27406, 27423, 27445, 35294, 27461, 22087, 18888, 18888, 30140, 18890, 27211, 27211, 27989, 27211, 22121, 24401, 24401, 25682, 24401, 18866, 18888, 18888, 18888, 18888, 18888, 34042, 27211, 27211, 27211, 27211, 29700, 22164, 24401, 24401, 24401, 24401, 27128, 31693, 27477, 18888, 18888, 18888, 18890, 27194, 27211, 27211, 27211, 27211, 19484, 35299, 24401, 24401, 24401, 24401, 19628, 18888, 18888, 18888, 27059, 23086, 27211, 27211, 27211, 33366, 30756, 24012, 24401, 24401, 24401, 35044, 26750, 18888, 18888, 18888, 27855, 27211, 27211, 27211, 17590, 24017, 24401, 24401, 24401, 18887, 18888, 18888, 27211, 27211, 27212, 24016, 24402, 19868, 25659, 18888, 18889, 27211, 27211, 19719, 23889, 19868, 31018, 20815, 27211, 30818, 19960, 33969, 23086, 23330, 19828, 31017, 27856, 31741, 19840, 25783, 31738, 19837, 25782, 19760, 31015, 23516, 31008, 22105, 19419, 27963, 19659, 27951, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 22713, 18836, 22059, 27496, 27516, 27541, 35231, 27557, 22087, 29662, 26292, 23292, 27573, 24836, 27601, 27211, 27636, 22121, 35544, 27686, 24401, 27721, 18866, 18888, 27799, 18888, 27818, 22071, 27853, 32260, 27211, 26013, 27873, 27920, 22164, 29419, 24401, 29946, 33413, 26742, 27751, 26881, 18888, 18888, 27261, 36776, 27936, 27211, 27211, 27211, 27988, 28005, 28031, 28052, 24401, 24401, 28069, 28088, 28135, 25488, 28152, 26069, 28167, 27211, 28340, 24657, 28196, 30756, 31523, 24401, 28212, 34176, 36174, 24956, 28248, 28266, 28290, 21488, 33077, 28327, 28356, 17590, 20986, 23126, 28391, 28425, 28102, 28451, 28470, 28490, 28516, 28534, 20034, 33728, 25868, 25659, 18888, 18889, 27211, 27211, 19719, 23889, 19868, 30241, 28274, 28553, 28574, 19406, 28590, 23086, 23330, 19828, 19452, 28615, 28660, 26147, 25783, 31738, 19837, 25782, 19760, 29613, 35958, 29276, 22105, 19419, 27963, 23157, 28700, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 22339, 18836, 22059, 18888, 27857, 34097, 24401, 29183, 22087, 18888, 18888, 18888, 18890, 27211, 27211, 27211, 27211, 22121, 24401, 24401, 24401, 24401, 18866, 18888, 18888, 18888, 18888, 18888, 25783, 27211, 27211, 27211, 27211, 35072, 22164, 24401, 24401, 24401, 24401, 24036, 22528, 18888, 18888, 18888, 18888, 18890, 27333, 27211, 27211, 27211, 27211, 19484, 30853, 24401, 24401, 24401, 24401, 19628, 18888, 18888, 18888, 18888, 23086, 27211, 27211, 27211, 27211, 30756, 24012, 24401, 24401, 24401, 24401, 26750, 18888, 18888, 18888, 27855, 27211, 27211, 27211, 17590, 24017, 24401, 24401, 24401, 18887, 18888, 18888, 27211, 27211, 27212, 24016, 24402, 19868, 25659, 18888, 18889, 27211, 27211, 19719, 23889, 19868, 31018, 18890, 27211, 31833, 19406, 19447, 23086, 23330, 19828, 31017, 27856, 31741, 19840, 25783, 31738, 19837, 25782, 19760, 31015, 23516, 31008, 22105, 19419, 27963, 19659, 27951, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 22728, 18836, 28747, 28782, 28817, 28841, 28857, 28880, 28896, 24161, 28943, 32011, 36261, 27340, 28961, 29492, 28982, 29011, 24522, 29027, 25436, 29048, 23051, 27500, 29090, 29110, 30713, 18888, 23512, 29130, 25183, 27211, 29155, 28927, 27033, 29173, 23230, 24401, 29199, 35373, 31693, 18888, 18888, 25583, 32629, 29218, 27211, 27211, 31461, 30692, 29237, 27075, 24401, 24401, 24401, 29262, 29302, 19628, 18888, 34329, 18888, 18888, 23086, 27211, 29329, 27211, 27211, 30756, 24012, 35933, 24401, 24401, 24401, 27705, 31612, 18888, 18888, 29346, 29374, 27211, 35650, 17590, 21436, 29393, 24401, 25970, 18887, 33895, 18888, 27211, 32528, 27212, 24016, 32769, 19868, 25659, 18888, 26889, 27211, 27211, 29412, 23889, 24371, 31018, 18890, 27211, 31833, 19406, 19447, 23086, 23330, 19828, 31017, 27856, 31768, 19840, 25783, 31738, 19837, 29435, 29508, 31102, 29550, 29606, 22105, 30300, 29462, 19659, 27951, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 22743, 18836, 22059, 29629, 29473, 34097, 33285, 29183, 29651, 27254, 18888, 29678, 33329, 32535, 27211, 29694, 29716, 22121, 19202, 24401, 32742, 29741, 18866, 26776, 33921, 28474, 18888, 18888, 25783, 29766, 27211, 29809, 27211, 35072, 22164, 35825, 24401, 29828, 24401, 24036, 36769, 25217, 18888, 18888, 29848, 18890, 27211, 29871, 27211, 26258, 27211, 29894, 24401, 29929, 24401, 36587, 24401, 19628, 18888, 18888, 18888, 18888, 23086, 27211, 27211, 27211, 27211, 29725, 29962, 24401, 24401, 24401, 24401, 26750, 18888, 18888, 18888, 27855, 27211, 27211, 27211, 17590, 24017, 24401, 24401, 24401, 18473, 18888, 18888, 19584, 27211, 27212, 24016, 29982, 19868, 25659, 18888, 18889, 27211, 27211, 19719, 23889, 19868, 31018, 18890, 27211, 31833, 19902, 19447, 32052, 19544, 19828, 29998, 30097, 30031, 19840, 25783, 30047, 19837, 25782, 19760, 31015, 23516, 31008, 22105, 19419, 27963, 19659, 30075, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 22758, 18836, 30121, 30156, 30206, 30257, 30273, 30336, 22087, 35624, 32837, 25762, 18890, 29878, 34934, 26812, 27211, 22121, 24931, 23223, 29202, 24401, 18866, 34373, 30352, 18888, 18888, 18888, 23447, 24828, 27211, 27211, 27211, 35072, 30370, 35052, 24401, 24401, 24401, 24036, 29523, 18888, 18888, 27146, 18888, 31308, 30386, 27211, 27211, 30405, 30558, 19484, 30427, 24401, 24401, 29938, 35686, 19628, 28766, 30447, 34506, 35614, 23086, 28731, 30482, 30517, 30552, 30756, 24012, 20156, 30574, 30598, 30667, 26283, 33464, 28945, 27670, 30687, 32915, 33504, 25328, 17590, 23963, 20450, 33837, 21016, 32397, 26300, 30708, 30729, 27885, 30748, 21588, 36373, 30779, 26653, 24628, 33220, 32514, 30806, 31835, 25412, 25906, 26515, 18890, 28825, 31833, 26133, 19447, 28304, 31730, 23834, 26057, 30869, 30885, 32181, 30920, 30942, 32797, 25782, 30970, 31015, 23516, 31008, 30997, 31034, 27963, 19659, 29450, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 22773, 18836, 31058, 31074, 32463, 31125, 31141, 31197, 22087, 18888, 29534, 35471, 36738, 27211, 24342, 31213, 24424, 22121, 24401, 20175, 31229, 31917, 27736, 31245, 34334, 27175, 18888, 29094, 27286, 27211, 31278, 31336, 27211, 31355, 31371, 24401, 31402, 31418, 24401, 31437, 31693, 18888, 31619, 32841, 18888, 18890, 27211, 27211, 31460, 31477, 27211, 19484, 24401, 24401, 31497, 36581, 24401, 33020, 18888, 18888, 18888, 18888, 30007, 27211, 27211, 27211, 27211, 31516, 32310, 24401, 24401, 24401, 24401, 31539, 18888, 28762, 18888, 24651, 35740, 27211, 27211, 28644, 31565, 35796, 24401, 24401, 19318, 32188, 18888, 24334, 28366, 27212, 29966, 29832, 19868, 25659, 18888, 18889, 27211, 27211, 19719, 31587, 19868, 31635, 32435, 33693, 30105, 31663, 20005, 31715, 31757, 31784, 31812, 30015, 31851, 31878, 25783, 31898, 19837, 25782, 19760, 31015, 23516, 31008, 22105, 19419, 27963, 31933, 30221, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 22788, 18836, 22059, 25729, 30466, 31968, 24306, 31984, 32000, 32807, 35160, 27017, 29590, 34941, 19801, 29377, 33700, 22121, 27040, 30431, 29396, 28864, 29565, 18888, 18888, 18888, 32027, 18888, 25783, 27211, 27211, 23698, 27211, 35072, 22164, 24401, 24401, 30845, 24401, 24036, 32045, 18888, 26929, 18888, 18888, 18890, 27211, 31481, 32068, 27211, 27211, 32088, 24401, 33058, 32122, 24401, 24401, 33736, 18888, 18888, 33162, 18888, 23086, 27211, 27211, 29484, 27211, 28375, 32144, 24401, 24401, 33831, 24401, 26750, 18888, 18888, 18888, 27855, 27211, 27211, 27211, 36704, 24017, 24401, 24401, 24401, 18887, 18888, 18888, 27211, 27211, 27212, 24016, 24402, 19868, 25659, 18888, 18889, 27211, 27211, 19719, 23889, 19868, 31018, 18890, 27211, 31833, 33107, 22171, 33224, 24271, 32169, 31017, 27856, 31741, 19840, 25783, 31738, 30234, 25782, 19760, 31015, 23516, 31008, 22105, 19419, 27963, 19659, 27951, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 22339, 18836, 32204, 32232, 32252, 32677, 33295, 29074, 22087, 18888, 18888, 18888, 18890, 27211, 27211, 27211, 27211, 22121, 24401, 24401, 24401, 24401, 23619, 18888, 18888, 18888, 18888, 18888, 25783, 27211, 27211, 27211, 27211, 35072, 32276, 24401, 24401, 24401, 24401, 24036, 31693, 18888, 18888, 18888, 18888, 18890, 27211, 27211, 27211, 27211, 27211, 32299, 24401, 24401, 24401, 24401, 24401, 19628, 18888, 18888, 18888, 18888, 23086, 27211, 27211, 27211, 27211, 30756, 24012, 24401, 24401, 24401, 24401, 26750, 18888, 18888, 18888, 27855, 27211, 27211, 27211, 17590, 24017, 24401, 24401, 24401, 18887, 18888, 18888, 27211, 27211, 27212, 24016, 24402, 19868, 25659, 33886, 18889, 36065, 27211, 19719, 35326, 19868, 31018, 18890, 27211, 31833, 19406, 19447, 23086, 23330, 19828, 31017, 27856, 31741, 19840, 25783, 31738, 19837, 25782, 19760, 31015, 23516, 31008, 22105, 19419, 27963, 19659, 27951, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 22803, 18836, 32335, 31647, 34666, 32351, 32367, 32417, 22087, 18888, 32433, 19335, 32451, 27211, 32479, 27107, 32500, 22121, 24401, 32551, 20085, 32572, 18866, 22287, 23753, 18888, 18888, 32602, 32665, 27211, 32693, 27211, 26972, 32713, 32729, 24401, 32764, 24401, 25877, 32785, 34768, 18888, 27390, 32823, 24594, 24855, 32857, 24890, 32878, 32904, 27211, 32942, 32977, 24401, 33000, 29313, 24401, 30790, 26206, 27666, 33904, 18888, 23086, 36353, 27211, 33036, 27211, 30756, 24012, 32153, 24401, 33056, 24401, 35861, 18888, 18888, 30354, 27972, 27211, 27211, 33800, 17590, 20145, 24401, 24401, 34638, 20811, 18888, 18888, 33074, 27211, 27212, 36167, 24402, 19868, 25659, 18888, 18889, 27211, 27211, 19719, 23889, 19868, 31018, 18890, 27211, 31833, 19406, 34616, 24169, 33093, 33123, 33157, 27856, 31741, 23862, 26552, 34302, 19837, 25782, 19760, 31015, 23516, 31008, 33178, 19973, 27963, 23497, 27951, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 22818, 18836, 33205, 28113, 33240, 34097, 33275, 29183, 22087, 33318, 35438, 18888, 18890, 33345, 26391, 33382, 27211, 22121, 33399, 28072, 33442, 24401, 18866, 22232, 18888, 33459, 18888, 18888, 33480, 33498, 25175, 27211, 27211, 26704, 22164, 24775, 35239, 24401, 24401, 25914, 29580, 18888, 18888, 31109, 25211, 33520, 33539, 27211, 27211, 33556, 36284, 19484, 33585, 24401, 24401, 33604, 32556, 19628, 18888, 18888, 31262, 33658, 23086, 27211, 27211, 33679, 27211, 30756, 24012, 24401, 24401, 33716, 24401, 26854, 27480, 18888, 33752, 27855, 33259, 34701, 27211, 17590, 32102, 24782, 23807, 24401, 18887, 18888, 18888, 27211, 27211, 27212, 33773, 36105, 19868, 25659, 18888, 23368, 27211, 29157, 19719, 23889, 34454, 29286, 18890, 33794, 25302, 33816, 19447, 34079, 33853, 31862, 31017, 27856, 31741, 33877, 28920, 33937, 19837, 30461, 34002, 22276, 36041, 34029, 22105, 19419, 27963, 19659, 27951, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 22833, 18836, 34064, 32616, 34113, 34141, 34157, 34192, 34208, 32216, 36013, 31549, 31952, 34224, 34248, 34287, 29330, 34350, 34389, 34413, 34481, 26793, 18866, 26187, 29635, 22293, 18888, 36654, 25783, 34522, 34544, 34566, 25821, 35072, 22164, 34586, 34609, 34632, 19604, 24036, 36644, 36674, 24681, 18888, 32401, 34654, 31339, 34682, 34698, 27211, 34717, 34753, 28053, 34812, 34836, 24401, 33619, 19628, 34858, 32236, 34906, 24598, 33523, 27612, 34890, 34922, 24732, 29246, 36717, 33634, 34465, 32984, 34168, 26750, 34957, 18888, 18888, 34994, 35010, 27211, 33040, 17590, 29913, 35035, 24401, 36304, 25482, 30171, 35883, 35068, 35088, 26627, 20441, 31173, 35123, 35143, 35176, 24640, 30492, 29358, 19719, 35192, 35219, 25384, 28801, 35255, 35279, 32586, 34496, 23086, 23330, 29061, 31017, 27856, 31741, 19840, 25783, 31738, 24547, 25164, 35315, 31796, 35353, 34316, 22105, 19419, 27963, 24091, 28630, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 22848, 18836, 22059, 34782, 34088, 35389, 21008, 35405, 35421, 35454, 18888, 18888, 23466, 35487, 27211, 27211, 27211, 35513, 31154, 24401, 24401, 24401, 35560, 18888, 26863, 36664, 35601, 24872, 25783, 30389, 23536, 26250, 35647, 35666, 22164, 19522, 19564, 30582, 35682, 27697, 35575, 29114, 18888, 18888, 18888, 18890, 27211, 35702, 27211, 27211, 27211, 35723, 24401, 35527, 24401, 24401, 24401, 19628, 30184, 18888, 18888, 18888, 23086, 35739, 27211, 27211, 27211, 29139, 22938, 24401, 24401, 24401, 24401, 23898, 35756, 18888, 18888, 25025, 35778, 27211, 27211, 17590, 20064, 35795, 24401, 24401, 18887, 18888, 18888, 27211, 27211, 27212, 24016, 24402, 19868, 25659, 18888, 18889, 27211, 27211, 19719, 23889, 19868, 23917, 18890, 34550, 31833, 22262, 19447, 23086, 23330, 26418, 31017, 27856, 31741, 19840, 25783, 35812, 19837, 27187, 35841, 33135, 23516, 31008, 22105, 22148, 28712, 19659, 27951, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 22863, 18836, 22059, 35877, 28723, 34097, 31164, 29183, 22087, 26758, 18888, 22592, 18890, 23989, 27211, 29812, 27211, 22121, 33778, 24401, 31421, 24401, 18866, 18888, 18888, 26872, 18888, 18888, 25783, 27211, 30732, 27211, 27211, 35072, 22164, 24401, 24908, 24401, 24401, 24036, 31693, 18888, 18888, 18888, 18888, 18890, 27211, 27211, 27211, 27211, 27211, 19484, 24401, 24401, 24401, 24401, 24401, 19628, 18888, 18888, 18888, 18888, 23086, 27211, 27211, 27211, 27211, 30756, 24012, 24401, 24401, 24401, 24401, 26750, 18888, 18888, 18888, 27855, 27211, 27211, 27211, 17590, 24017, 24401, 24401, 24401, 18887, 18888, 18888, 27211, 27211, 27212, 24016, 24402, 19868, 25659, 18888, 18889, 27211, 27211, 19719, 23889, 19868, 31018, 18890, 27211, 31833, 19406, 19447, 23086, 23330, 19828, 31017, 27856, 31741, 19840, 25783, 31738, 19837, 25782, 19760, 31015, 23516, 31008, 22105, 19419, 27963, 19659, 27951, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 22878, 18836, 22059, 27837, 27857, 35899, 24401, 35915, 22087, 18888, 18888, 18888, 18890, 27211, 27211, 27211, 27211, 22121, 24401, 24401, 24401, 24401, 18866, 18888, 18888, 18888, 18888, 18888, 25783, 27211, 27211, 27211, 27211, 35072, 22164, 24401, 24401, 24401, 24401, 24036, 31602, 18888, 18888, 18888, 18888, 26223, 27211, 27211, 27211, 27211, 27211, 19484, 35931, 24401, 24401, 24401, 24401, 19628, 18888, 28136, 18888, 18888, 35949, 27211, 32862, 27211, 32697, 30756, 24012, 24401, 32283, 24401, 32128, 26750, 18888, 18888, 18888, 27855, 27211, 27211, 27211, 17590, 24017, 24401, 24401, 24401, 18887, 18888, 18888, 27211, 27211, 27212, 24016, 24402, 19868, 25659, 18888, 18889, 27211, 27211, 19719, 23889, 19868, 31018, 18890, 27211, 31833, 19406, 19447, 23086, 23330, 19828, 31017, 27856, 31741, 19840, 25783, 31738, 19837, 25782, 19760, 31015, 23516, 31008, 22105, 19419, 27963, 19659, 27951, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 22893, 18836, 22059, 35974, 34882, 34097, 33960, 29183, 35996, 18888, 23311, 18888, 36029, 27211, 27211, 36064, 36081, 22121, 24401, 24401, 36104, 33950, 18866, 18888, 18888, 18888, 18888, 18888, 25783, 27211, 27211, 27211, 27211, 35072, 22164, 24401, 24401, 24401, 24401, 24036, 36121, 18888, 25559, 18888, 18888, 18890, 27211, 27211, 30313, 27211, 27211, 36154, 24401, 24401, 34397, 24401, 24401, 19628, 28250, 18888, 18888, 18888, 23086, 30926, 27211, 27211, 27211, 26983, 24012, 33642, 24401, 24401, 24401, 26750, 18888, 18888, 18888, 27855, 27211, 27211, 27211, 17590, 24017, 24401, 24401, 24401, 18887, 18888, 18888, 27211, 27211, 27212, 24016, 24402, 19868, 25659, 18888, 18889, 27211, 27211, 19719, 23889, 19868, 31018, 18890, 27211, 31833, 19406, 19447, 23086, 23330, 19828, 31017, 27856, 31741, 19840, 25783, 31738, 19837, 25782, 19760, 31015, 23516, 31008, 22105, 19419, 27963, 19659, 27951, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 22339, 18836, 22059, 19354, 27857, 36190, 24401, 36206, 22087, 18888, 18888, 18888, 18007, 27211, 27211, 27211, 24724, 22121, 24401, 24401, 24401, 30827, 18866, 18888, 36222, 18888, 28795, 18888, 25783, 35100, 27211, 27429, 27211, 35072, 22164, 30836, 24401, 24499, 24401, 24036, 31693, 18888, 36244, 18888, 18888, 18890, 27211, 36088, 27211, 27211, 27211, 19484, 24401, 28036, 24401, 24401, 24401, 19628, 18888, 18888, 35631, 18888, 35762, 27211, 27211, 36277, 27211, 34730, 24012, 24401, 24401, 36300, 24401, 36320, 18888, 18888, 18888, 27855, 27211, 27211, 27211, 17590, 24017, 24401, 24401, 24401, 25712, 18888, 18888, 36346, 27211, 27212, 19184, 24402, 19868, 25659, 32029, 18889, 27211, 33359, 19719, 23889, 36369, 31018, 18890, 27211, 31833, 19406, 19447, 23086, 23330, 19828, 31017, 27856, 31741, 19840, 25783, 31738, 19837, 25782, 19760, 31015, 23516, 31008, 22105, 19419, 27963, 19659, 27951, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 22384, 18836, 36389, 19008, 19233, 20367, 36434, 17173, 17595, 36437, 17330, 17349, 18921, 17189, 17208, 17281, 20355, 36453, 17308, 17327, 17346, 18918, 18452, 21880, 18649, 18665, 19006, 17265, 22033, 20765, 17421, 20535, 17192, 20362, 21726, 17311, 18658, 18999, 19008, 17447, 32952, 17497, 17520, 17251, 36411, 17782, 20682, 17714, 18326, 17543, 17559, 17585, 21887, 17504, 17527, 17258, 36418, 21915, 21940, 17611, 36467, 18217, 17633, 17661, 21190, 17703, 21176, 17730, 34737, 21946, 17617, 36473, 18223, 36531, 17477, 19152, 17860, 17892, 17675, 17753, 17832, 17590, 21620, 17481, 19156, 17864, 18731, 17918, 36551, 17292, 17934, 17979, 18727, 18681, 18405, 18621, 18039, 18056, 18072, 18117, 18143, 18706, 18052, 18209, 18250, 18239, 18266, 17963, 18296, 18312, 18376, 17807, 36403, 19232, 17796, 17163, 30642, 18392, 17816, 32961, 17645, 18805, 18421, 18437, 18519, 17393, 18747, 18505, 18535, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 22369, 18836, 18987, 19008, 19233, 20367, 19008, 21737, 30763, 36437, 17330, 17349, 18921, 17189, 17208, 17281, 20355, 17949, 17308, 17327, 17346, 18918, 18452, 21880, 18649, 18665, 19006, 17265, 22033, 20765, 17421, 20535, 17192, 18127, 21873, 17311, 18658, 18999, 19008, 17447, 32952, 17497, 17520, 17251, 36411, 17782, 20682, 17714, 18326, 17543, 17559, 17585, 21887, 17504, 17527, 17258, 36418, 21915, 21940, 17611, 36467, 18217, 17633, 17661, 21190, 17703, 21176, 17730, 34737, 21946, 17617, 36473, 18223, 36531, 17477, 19152, 17860, 17892, 17675, 17753, 17832, 17590, 21620, 17481, 19156, 17864, 18731, 17918, 36551, 17292, 17934, 17979, 18727, 18681, 18405, 18621, 18039, 18056, 18072, 18117, 18143, 18706, 18052, 18209, 18250, 18239, 18266, 17963, 18296, 18312, 18376, 17807, 36403, 19232, 17796, 17163, 30642, 18392, 17816, 32961, 17645, 18805, 18421, 18437, 18519, 17393, 18747, 18505, 18535, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 21813, 18836, 36489, 19008, 19233, 20367, 19008, 17173, 17737, 36437, 17330, 17349, 18921, 17189, 17208, 17281, 20355, 17768, 17308, 17327, 17346, 18918, 18452, 21880, 18649, 18665, 19006, 17265, 22033, 20765, 17421, 20535, 17192, 20543, 22022, 17311, 18658, 18999, 19008, 17447, 32952, 17497, 17520, 17251, 36411, 17782, 20682, 17714, 18326, 17543, 17559, 17585, 21887, 17504, 17527, 17258, 36418, 21915, 21940, 17611, 36467, 18217, 17633, 17661, 21190, 17703, 21176, 17730, 34737, 21946, 17617, 36473, 18223, 36531, 17477, 19152, 17860, 17892, 17675, 17753, 17832, 17590, 21620, 17481, 19156, 17864, 18731, 17918, 36551, 17292, 17934, 17979, 18727, 18681, 18405, 18621, 18039, 18056, 18072, 18117, 18143, 18706, 18052, 18209, 18250, 18239, 18266, 17963, 18296, 18312, 18376, 17807, 36403, 19232, 17796, 17163, 30642, 18392, 17816, 32961, 17645, 18805, 18421, 18437, 18519, 17393, 18747, 18505, 18535, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 21828, 18836, 18987, 19008, 19233, 20367, 19008, 17173, 30763, 36437, 17330, 17349, 18921, 17189, 17208, 17281, 20355, 36517, 17308, 17327, 17346, 18918, 18452, 21880, 18649, 18665, 19006, 17265, 22033, 20765, 17421, 20535, 17192, 18127, 21873, 17311, 18658, 18999, 19008, 17447, 32952, 17497, 17520, 17251, 36411, 17782, 20682, 17714, 18326, 17543, 17559, 17585, 21887, 17504, 17527, 17258, 36418, 21915, 21940, 17611, 36467, 18217, 17633, 17661, 21190, 17703, 21176, 17730, 34737, 21946, 17617, 36473, 18223, 36531, 17477, 19152, 17860, 17892, 17675, 17753, 17832, 17590, 21620, 17481, 19156, 17864, 18731, 17918, 36551, 17292, 17934, 17979, 18727, 18681, 18405, 18621, 18039, 18056, 18072, 18117, 18143, 18706, 18052, 18209, 18250, 18239, 18266, 17963, 18296, 18312, 18376, 17807, 36403, 19232, 17796, 17163, 30642, 18392, 17816, 32961, 17645, 18805, 18421, 18437, 18519, 17393, 18747, 18505, 18535, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 21828, 18836, 19307, 18888, 27857, 30756, 24401, 29183, 28015, 18888, 18888, 18888, 18890, 27211, 27211, 27211, 27211, 36567, 24401, 24401, 24401, 24401, 22953, 18888, 18888, 18888, 18888, 18888, 25783, 27211, 27211, 27211, 27211, 28537, 36603, 24401, 24401, 24401, 24401, 24036, 18881, 18888, 18888, 18888, 18888, 18890, 27211, 27211, 27211, 27211, 27211, 19484, 24401, 24401, 24401, 24401, 24401, 19628, 18888, 18888, 18888, 18888, 23086, 27211, 27211, 27211, 27211, 30756, 24012, 24401, 24401, 24401, 24401, 26750, 18888, 18888, 18888, 27855, 27211, 27211, 27211, 17590, 24017, 24401, 24401, 24401, 18887, 18888, 18888, 27211, 27211, 27212, 24016, 24402, 19868, 25659, 18888, 18889, 27211, 27211, 19719, 23889, 19868, 31018, 18890, 27211, 31833, 19406, 19447, 23086, 23330, 19828, 31017, 27856, 31741, 19840, 25783, 31738, 19837, 25782, 19760, 31015, 23516, 31008, 22105, 19419, 27963, 19659, 27951, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 36629, 36690, 18720, 19008, 19233, 20367, 19008, 17454, 17595, 36437, 17330, 17349, 18921, 17189, 17208, 17281, 20355, 17223, 17308, 17327, 17346, 18918, 36754, 21880, 18649, 18665, 19006, 17265, 22033, 20765, 17421, 20535, 17192, 20362, 21726, 17311, 18658, 18999, 19008, 17447, 32952, 17497, 17520, 17251, 36411, 17782, 20682, 17714, 18326, 17543, 17559, 17585, 21887, 17504, 17527, 17258, 36418, 21915, 21940, 17611, 36467, 18217, 17633, 17661, 21190, 17703, 21176, 17730, 34737, 21946, 17617, 36473, 18223, 36531, 17477, 19152, 17860, 17892, 17675, 17753, 17832, 17590, 21620, 17481, 19156, 17864, 18731, 17918, 36551, 17292, 17934, 17979, 18727, 18681, 18405, 18621, 18039, 18056, 18072, 18117, 18143, 18706, 18052, 18209, 18250, 18239, 18266, 17963, 18296, 18312, 18376, 17807, 36403, 19232, 17796, 17163, 30642, 18392, 17816, 32961, 17645, 18805, 18421, 18437, 18519, 17393, 18747, 18505, 18535, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 0, 94242, 0, 118820, 0, 2211840, 102439, 0, 0, 106538, 98347, 0, 2158592, 2158592, 2158592, 2158592, 2158592, 2158592, 2158592, 2158592, 2482176, 2158592, 2158592, 2158592, 2158592, 2158592, 2158592, 0, 40976, 0, 18, 18, 24, 24, 27, 27, 27, 2207744, 2404352, 2412544, 2207744, 2207744, 2207744, 2207744, 2207744, 2207744, 2207744, 2207744, 2207744, 2207744, 2207744, 2207744, 2207744, 2207744, 2207744, 3104768, 2605056, 2207744, 2207744, 2207744, 2207744, 2207744, 2207744, 2678784, 2207744, 2695168, 2207744, 2703360, 2207744, 2711552, 2752512, 2207744, 0, 0, 0, 0, 0, 0, 2166784, 0, 0, 0, 0, 0, 0, 2158592, 2158592, 3170304, 3174400, 2158592, 0, 139, 0, 2158592, 2158592, 2158592, 2158592, 2158592, 2424832, 2158592, 2158592, 2158592, 2748416, 2756608, 2777088, 2801664, 2158592, 2158592, 2158592, 2863104, 2891776, 2158592, 2158592, 2158592, 2158592, 2158592, 2158592, 2158592, 2158592, 2158592, 2158592, 2158592, 3104768, 2158592, 2158592, 2158592, 2158592, 2158592, 2158592, 2207744, 2785280, 2207744, 2809856, 2207744, 2207744, 2842624, 2207744, 2207744, 2207744, 2899968, 2207744, 2207744, 2207744, 2207744, 2207744, 2207744, 2207744, 2207744, 2473984, 2207744, 2207744, 2494464, 2207744, 2207744, 2207744, 2523136, 2158592, 2404352, 2412544, 2158592, 2158592, 2158592, 2158592, 2158592, 2158592, 2158592, 2158592, 2158592, 2158592, 2158592, 2158592, 2158592, 2564096, 2158592, 2158592, 2605056, 2158592, 2158592, 2158592, 2158592, 2158592, 2158592, 2678784, 2158592, 2695168, 2158592, 2703360, 2158592, 2711552, 2752512, 2158592, 2158592, 2785280, 2158592, 2158592, 2785280, 2158592, 2809856, 2158592, 2158592, 2842624, 2158592, 2158592, 2158592, 2899968, 2158592, 2158592, 2158592, 2158592, 2158592, 2158592, 2158592, 2158592, 2158592, 18, 0, 0, 0, 0, 0, 0, 0, 2211840, 0, 0, 641, 0, 2158592, 0, 0, 0, 0, 0, 0, 0, 0, 2211840, 0, 0, 32768, 0, 2158592, 0, 2158592, 2158592, 2158592, 2383872, 2158592, 2158592, 2158592, 2158592, 3006464, 2383872, 2207744, 2207744, 2207744, 2207744, 2158877, 2158877, 2158877, 2158877, 0, 0, 0, 2158877, 2572573, 2158877, 2158877, 0, 2207744, 2207744, 2596864, 2207744, 2207744, 2207744, 2207744, 2207744, 2207744, 2641920, 2207744, 2207744, 2207744, 2207744, 2207744, 2207744, 2207744, 0, 0, 0, 167936, 0, 0, 2162688, 0, 0, 3104768, 2158592, 2158592, 2158592, 2158592, 2158592, 2158592, 2158592, 2158592, 2158592, 2158592, 2158592, 2158592, 0, 0, 0, 2146304, 2146304, 2224128, 2224128, 2232320, 2232320, 2232320, 641, 0, 0, 0, 0, 0, 0, 2158592, 2158592, 2158592, 2158592, 2158592, 2158592, 2158592, 2158592, 2158592, 2531328, 2158592, 2158592, 2158592, 2158592, 2158592, 2617344, 2158592, 2158592, 2158592, 2158592, 2441216, 2445312, 2158592, 2158592, 2158592, 2158592, 2158592, 2158592, 2502656, 2158592, 2158592, 2158592, 2158592, 2158592, 2158592, 2158592, 2158592, 2580480, 2158592, 2158592, 2158592, 2158592, 2621440, 2158592, 2580480, 2158592, 2158592, 2158592, 2158592, 2621440, 2158592, 2158592, 2158592, 2158592, 2158592, 2158592, 2699264, 2158592, 2158592, 2158592, 2158592, 2158592, 2748416, 2756608, 2777088, 2801664, 2207744, 2863104, 2891776, 2207744, 2207744, 2207744, 2207744, 2207744, 2207744, 2207744, 2207744, 2207744, 2207744, 2207744, 2207744, 3018752, 2207744, 3043328, 2207744, 2207744, 2207744, 2207744, 3080192, 2207744, 2207744, 3112960, 2207744, 2207744, 2207744, 2207744, 2207744, 2207744, 2207744, 0, 0, 0, 172310, 279, 0, 2162688, 0, 0, 2207744, 2207744, 2207744, 3186688, 2207744, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2158592, 2158592, 2158592, 2404352, 2412544, 2158592, 2510848, 2158592, 2158592, 2158592, 2158592, 2158592, 2158592, 2158592, 2584576, 2158592, 2609152, 2158592, 2158592, 2629632, 2158592, 2158592, 2158592, 2686976, 2158592, 2715648, 2158592, 2158592, 3121152, 2158592, 2158592, 2158592, 3149824, 2158592, 2158592, 3170304, 3174400, 2158592, 2367488, 2207744, 2207744, 2207744, 2207744, 2158592, 2158592, 2158592, 2158592, 0, 0, 0, 2158592, 2572288, 2158592, 2158592, 0, 2207744, 2207744, 2207744, 2433024, 2207744, 2453504, 2461696, 2207744, 2207744, 2207744, 2207744, 2207744, 2207744, 2510848, 2207744, 2207744, 2207744, 2207744, 2207744, 2531328, 2207744, 2207744, 2207744, 2207744, 2207744, 2617344, 2207744, 2207744, 2207744, 2207744, 2158592, 2158592, 2158592, 2158592, 0, 0, 0, 2158592, 2572288, 2158592, 2158592, 1508, 2715648, 2207744, 2207744, 2207744, 2207744, 2207744, 2207744, 2207744, 2867200, 2207744, 2904064, 2207744, 2207744, 2207744, 2207744, 2207744, 2207744, 2207744, 2207744, 2580480, 2207744, 2207744, 2207744, 2207744, 2621440, 2207744, 2207744, 2207744, 3149824, 2207744, 2207744, 3170304, 3174400, 2207744, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 138, 2158592, 2158592, 2158592, 2404352, 2412544, 2707456, 2732032, 2207744, 2207744, 2207744, 2822144, 2826240, 2207744, 2895872, 2207744, 2207744, 2924544, 2207744, 2207744, 2973696, 2207744, 0, 0, 0, 0, 0, 0, 2166784, 0, 0, 0, 0, 0, 285, 2158592, 2158592, 3112960, 2158592, 2158592, 2158592, 2158592, 2158592, 2158592, 2158592, 2158592, 2158592, 3186688, 2158592, 2207744, 2207744, 2158592, 2158592, 2158592, 2158592, 2158592, 0, 0, 0, 2158592, 2158592, 2158592, 2158592, 0, 0, 2535424, 2543616, 2158592, 2158592, 2158592, 0, 0, 0, 2158592, 2158592, 2158592, 2990080, 2158592, 2158592, 2158592, 2158592, 2158592, 2158592, 2158592, 2572288, 2981888, 2207744, 2207744, 3002368, 2207744, 3047424, 3063808, 3076096, 2207744, 2207744, 2207744, 2207744, 2207744, 2207744, 2207744, 3203072, 2708960, 2732032, 2158592, 2158592, 2158592, 2822144, 2827748, 2158592, 2895872, 2158592, 2158592, 2924544, 2158592, 2158592, 2973696, 2158592, 2981888, 2158592, 2158592, 3002368, 2158592, 3047424, 3063808, 3076096, 2158592, 2158592, 2158592, 2158592, 2158592, 2158592, 2158592, 3203072, 2981888, 2158592, 2158592, 3003876, 2158592, 3047424, 3063808, 3076096, 2158592, 2158592, 2158592, 2158592, 2158592, 2158592, 2158592, 3203072, 2207744, 2207744, 2207744, 2207744, 2207744, 2424832, 2207744, 2207744, 2207744, 2207744, 2207744, 2207744, 2207744, 20480, 0, 0, 0, 0, 0, 2162688, 20480, 0, 2523136, 2527232, 2158592, 2158592, 2576384, 2158592, 2158592, 2158592, 2158592, 2158592, 2158592, 2158592, 2158592, 2158592, 2158592, 2908160, 2527232, 2207744, 2207744, 2576384, 2207744, 2207744, 2207744, 2207744, 2207744, 2207744, 2207744, 2207744, 2207744, 2207744, 2908160, 2207744, 0, 0, 0, 0, 0, 0, 2166784, 0, 0, 0, 0, 0, 286, 2158592, 2158592, 0, 0, 2158592, 2158592, 2158592, 2158592, 2633728, 2658304, 0, 0, 2740224, 2744320, 0, 2834432, 2207744, 2207744, 2977792, 2207744, 2207744, 2207744, 2207744, 3039232, 2207744, 2207744, 2207744, 2207744, 2207744, 2207744, 3158016, 0, 0, 29315, 0, 0, 0, 0, 45, 45, 45, 45, 45, 933, 45, 45, 45, 45, 442, 45, 45, 45, 45, 45, 45, 45, 45, 45, 67, 67, 2494464, 2158592, 2158592, 2158592, 2524757, 2527232, 2158592, 2158592, 2576384, 2158592, 2158592, 2158592, 2158592, 2158592, 2158592, 1504, 2158592, 2498560, 2158592, 2158592, 2158592, 2158592, 2568192, 2158592, 2592768, 2625536, 2158592, 2158592, 2674688, 2736128, 2158592, 2158592, 0, 2158592, 2912256, 2158592, 2158592, 2158592, 2158592, 2158592, 2158592, 2158592, 3108864, 2158592, 2158592, 3133440, 3145728, 3153920, 2375680, 2379776, 2207744, 2207744, 2420736, 2207744, 2449408, 2207744, 2207744, 2207744, 2498560, 2207744, 2207744, 2207744, 2207744, 2568192, 2207744, 0, 0, 0, 0, 0, 0, 2166784, 0, 0, 0, 0, 0, 551, 2158592, 2158592, 2158592, 2158592, 2207744, 2506752, 2207744, 2207744, 2207744, 2207744, 2207744, 2158592, 2506752, 0, 2020, 2158592, 2592768, 2625536, 2207744, 2207744, 2674688, 2736128, 2207744, 2207744, 2207744, 2912256, 2207744, 2207744, 2207744, 2207744, 2207744, 2207744, 2207744, 2207744, 2207744, 2207744, 2207744, 2207744, 0, 542, 0, 544, 2207744, 3108864, 2207744, 2207744, 3133440, 3145728, 3153920, 2375680, 2379776, 2158592, 2158592, 2420736, 2158592, 2449408, 2158592, 2158592, 2158592, 2158592, 2158592, 3186688, 2158592, 0, 641, 0, 0, 0, 0, 0, 0, 2367488, 2158592, 2498560, 2158592, 2158592, 1621, 2158592, 2158592, 2568192, 2158592, 2592768, 2625536, 2158592, 2158592, 2674688, 0, 0, 0, 0, 0, 1608, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 1107, 97, 97, 1110, 97, 97, 3133440, 3145728, 3153920, 2158592, 2408448, 2416640, 2158592, 2465792, 2158592, 2158592, 2158592, 2158592, 2158592, 2158592, 2158592, 2158592, 3014656, 2158592, 2158592, 3051520, 2158592, 2158592, 3100672, 2158592, 2158592, 3121152, 2158592, 2158592, 2158592, 3149824, 2416640, 2207744, 2465792, 2207744, 2207744, 2207744, 2207744, 2207744, 2207744, 2207744, 2207744, 2633728, 2658304, 2740224, 2744320, 2834432, 2949120, 2158592, 2985984, 2158592, 2998272, 2158592, 2158592, 2158592, 3129344, 2207744, 2408448, 2949120, 2207744, 2985984, 2207744, 2998272, 2207744, 2207744, 2207744, 3129344, 2158592, 2408448, 2416640, 2158592, 2465792, 2158592, 2158592, 2158592, 2158592, 2158592, 3186688, 2158592, 0, 32768, 0, 0, 0, 0, 0, 0, 2367488, 2949120, 2158592, 2985984, 2158592, 2998272, 2158592, 2158592, 2158592, 3129344, 2158592, 2158592, 2478080, 2158592, 2158592, 2158592, 2535424, 2543616, 2158592, 2158592, 2158592, 2158592, 2158592, 2158592, 2158592, 2158592, 2158592, 3117056, 2207744, 2207744, 2478080, 2207744, 2207744, 2207744, 2207744, 2699264, 2207744, 2207744, 2207744, 2207744, 2207744, 2748416, 2756608, 2777088, 2801664, 2207744, 2207744, 2158877, 2158877, 2158877, 2158877, 2158877, 0, 0, 0, 2158877, 2158877, 2158877, 2158877, 0, 0, 2535709, 2543901, 2158877, 2158877, 2158877, 0, 0, 0, 2158877, 2158877, 2158877, 2990365, 2158877, 2158877, 2158730, 2158730, 2158730, 2158730, 2158730, 2572426, 2207744, 2535424, 2543616, 2207744, 2207744, 2207744, 2207744, 2207744, 2207744, 2207744, 2207744, 2207744, 3117056, 2158592, 2158592, 2478080, 2207744, 2207744, 2990080, 2207744, 2207744, 2158592, 2158592, 2482176, 2158592, 2158592, 0, 0, 0, 2158592, 2158592, 2158592, 0, 2158592, 2908160, 2158592, 2158592, 2158592, 2977792, 2158592, 2158592, 2158592, 2158592, 3039232, 2158592, 2158592, 3010560, 2207744, 2428928, 2207744, 2514944, 2207744, 2588672, 2207744, 2838528, 2207744, 2207744, 2207744, 3010560, 2158592, 2428928, 2158592, 2514944, 0, 0, 2158592, 2588672, 2158592, 0, 2838528, 2158592, 2158592, 2158592, 3010560, 2158592, 2506752, 2158592, 18, 0, 0, 0, 0, 0, 0, 0, 2211840, 0, 0, 0, 0, 2158592, 0, 0, 29315, 922, 0, 0, 0, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 1539, 45, 3006464, 2383872, 0, 2020, 2158592, 2158592, 2158592, 2158592, 3006464, 2158592, 2637824, 2953216, 2158592, 2207744, 2637824, 2953216, 2207744, 0, 0, 2158592, 2637824, 2953216, 2158592, 2539520, 2158592, 2539520, 2207744, 0, 0, 2539520, 2158592, 2158592, 2158592, 2158592, 2207744, 2506752, 2207744, 2207744, 2207744, 2207744, 2207744, 2158592, 2506752, 0, 0, 2158592, 2207744, 0, 2158592, 2158592, 2207744, 0, 2158592, 2158592, 2207744, 0, 2158592, 2965504, 2965504, 2965504, 0, 0, 0, 0, 0, 2158877, 2158877, 2158877, 2158877, 2158877, 2158877, 2158877, 2158877, 2474269, 2158877, 2158877, 0, 0, 2158877, 2158877, 2158877, 2158877, 2634013, 2658589, 0, 0, 2740509, 2744605, 0, 2834717, 40976, 18, 36884, 45078, 24, 28, 90143, 94242, 118820, 102439, 106538, 98347, 118820, 118820, 118820, 40976, 18, 18, 36884, 0, 0, 0, 24, 24, 24, 27, 27, 27, 27, 90143, 0, 0, 86016, 0, 0, 2211840, 102439, 0, 0, 0, 98347, 0, 2158592, 2158592, 2158592, 2158592, 2158592, 3158016, 0, 2375680, 2379776, 2158592, 2158592, 2420736, 2158592, 2449408, 2158592, 2158592, 0, 94242, 0, 0, 0, 2211840, 102439, 0, 0, 106538, 98347, 135, 2158592, 2158592, 2158592, 2158592, 2158592, 2158592, 2564096, 2158592, 2158592, 2158592, 2158592, 2158592, 2596864, 2158592, 2158592, 2158592, 2158592, 2158592, 2158592, 2641920, 2158592, 2158592, 2158592, 2158592, 2158592, 2158592, 2158592, 2158592, 2158592, 2158592, 2781184, 2793472, 2494464, 2158592, 2158592, 2158592, 2523136, 2527232, 2158592, 2158592, 2576384, 2158592, 2158592, 2158592, 2158592, 2158592, 2158592, 0, 40976, 0, 18, 18, 24, 0, 27, 27, 0, 2158592, 2498560, 2158592, 2158592, 0, 2158592, 2158592, 2568192, 2158592, 2592768, 2625536, 2158592, 2158592, 2674688, 0, 0, 0, 0, 0, 2211840, 0, 0, 0, 0, 0, 0, 2158592, 2158592, 2158592, 2158592, 2158592, 2158592, 2158592, 2158592, 2473984, 2158592, 2158592, 2494464, 2158592, 2158592, 2158592, 3006464, 2383872, 0, 0, 2158592, 2158592, 2158592, 2158592, 3006464, 2158592, 2637824, 2953216, 2158592, 2207744, 2637824, 2953216, 40976, 18, 36884, 45078, 24, 27, 147488, 94242, 147456, 147488, 106538, 98347, 0, 0, 147456, 40976, 18, 18, 36884, 0, 45078, 0, 24, 24, 24, 27, 27, 27, 27, 0, 81920, 0, 94242, 0, 0, 0, 2211840, 0, 0, 0, 106538, 98347, 0, 2158592, 2158592, 2158592, 2158592, 2158592, 2158592, 2428928, 2158592, 2514944, 2158592, 2588672, 2158592, 2838528, 2158592, 2158592, 40976, 18, 151573, 45078, 24, 27, 90143, 94242, 0, 102439, 106538, 98347, 0, 0, 0, 40976, 18, 18, 36884, 0, 45078, 0, 24, 24, 24, 27, 27, 27, 27, 90143, 0, 0, 1315, 0, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 1487, 97, 18, 131427, 0, 0, 0, 0, 0, 0, 362, 0, 0, 365, 29315, 367, 0, 0, 29315, 0, 0, 0, 0, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 67, 67, 130, 94242, 0, 0, 0, 2211840, 102439, 0, 0, 106538, 98347, 0, 2158592, 2158592, 2158592, 2158592, 2158592, 2158592, 3096576, 2158592, 2158592, 2158592, 2158592, 2158592, 2158592, 2158592, 2158592, 2158592, 2158592, 2207744, 2207744, 2158592, 18, 0, 0, 0, 0, 0, 0, 0, 2211840, 0, 0, 0, 0, 2158592, 644, 2207744, 2207744, 2207744, 3186688, 2207744, 0, 1080, 0, 1084, 0, 1088, 0, 0, 0, 0, 0, 0, 0, 2158730, 2158730, 2158730, 2158730, 2158730, 2158730, 2158730, 2158730, 2158730, 2531466, 2158730, 2158730, 2158730, 2158730, 2158730, 2617482, 0, 94242, 0, 0, 0, 2211840, 102439, 0, 0, 106538, 98347, 0, 2158592, 2158592, 2158592, 2158592, 2158592, 2781184, 2793472, 2158592, 2818048, 2158592, 2158592, 2158592, 2158592, 2158592, 2158592, 2158592, 2158592, 2158592, 2158592, 2158592, 2158592, 2158592, 2158592, 2158592, 2158592, 40976, 18, 36884, 45078, 24, 27, 90143, 159779, 159744, 102439, 159779, 98347, 0, 0, 159744, 40976, 18, 18, 36884, 0, 45078, 0, 2224253, 172032, 2224253, 2232448, 2232448, 172032, 2232448, 90143, 0, 0, 2170880, 0, 0, 550, 829, 2158592, 2158592, 2158592, 2387968, 2158592, 2158592, 2158592, 2158592, 2158592, 2158592, 0, 40976, 0, 18, 18, 124, 124, 127, 127, 127, 40976, 18, 36884, 45078, 25, 29, 90143, 94242, 0, 102439, 106538, 98347, 0, 0, 163931, 40976, 18, 18, 36884, 0, 45078, 249856, 24, 24, 24, 27, 27, 27, 27, 90143, 0, 0, 2170880, 0, 0, 827, 0, 2158592, 2158592, 2158592, 2387968, 2158592, 2158592, 2158592, 2158592, 2158592, 2158592, 0, 40976, 0, 4243810, 4243810, 24, 24, 27, 27, 27, 2207744, 0, 0, 0, 0, 0, 0, 2166784, 0, 0, 0, 0, 57344, 286, 2158592, 2158592, 2158592, 2158592, 2707456, 2732032, 2158592, 2158592, 2158592, 2822144, 2826240, 2158592, 2895872, 2158592, 2158592, 2924544, 2158592, 2158592, 2973696, 2158592, 2207744, 2207744, 2207744, 3186688, 2207744, 0, 0, 0, 0, 0, 0, 53248, 0, 0, 0, 0, 0, 97, 97, 97, 97, 97, 1613, 97, 97, 97, 97, 97, 97, 1495, 97, 97, 97, 97, 97, 97, 97, 97, 97, 566, 97, 97, 97, 97, 97, 97, 2207744, 0, 0, 0, 0, 0, 0, 2166784, 546, 0, 0, 0, 0, 286, 2158592, 2158592, 2158592, 2207744, 2207744, 2207744, 2207744, 2207744, 2207744, 2207744, 2207744, 2207744, 2207744, 2207744, 2207744, 2207744, 2207744, 17, 18, 36884, 45078, 24, 27, 90143, 94242, 0, 102439, 106538, 98347, 0, 0, 20480, 120, 121, 18, 18, 36884, 0, 45078, 0, 24, 24, 24, 27, 27, 27, 27, 90143, 0, 0, 2170880, 0, 53248, 550, 0, 2158592, 2158592, 2158592, 2387968, 2158592, 2158592, 2158592, 2158592, 2158592, 2158592, 0, 40976, 196608, 18, 266240, 24, 24, 27, 27, 27, 0, 94242, 0, 0, 0, 38, 102439, 0, 0, 106538, 98347, 0, 45, 45, 45, 45, 45, 45, 45, 1535, 45, 45, 45, 45, 45, 45, 45, 1416, 45, 45, 45, 45, 45, 45, 45, 45, 424, 45, 45, 45, 45, 45, 45, 45, 45, 45, 405, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 199, 45, 45, 67, 67, 67, 67, 67, 491, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 1766, 67, 67, 67, 1767, 67, 24850, 24850, 12564, 12564, 0, 0, 2166784, 546, 0, 53531, 53531, 0, 286, 97, 97, 0, 0, 97, 97, 97, 97, 97, 97, 0, 0, 97, 97, 0, 97, 97, 97, 45, 45, 45, 45, 45, 45, 67, 67, 67, 67, 67, 67, 67, 67, 67, 743, 57889, 0, 2170880, 0, 0, 550, 0, 97, 97, 97, 97, 97, 97, 97, 97, 97, 45, 45, 45, 45, 45, 45, 45, 45, 1856, 45, 1858, 1859, 67, 67, 67, 1009, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 1021, 67, 67, 67, 67, 67, 25398, 0, 13112, 0, 54074, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2367773, 2158877, 2158877, 2158877, 2158877, 2158877, 2158877, 2699549, 2158877, 2158877, 2158877, 2158877, 2158877, 2748701, 2756893, 2777373, 2801949, 97, 1115, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 857, 97, 67, 67, 67, 67, 67, 1258, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 1826, 67, 97, 97, 97, 97, 97, 97, 1338, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 870, 97, 97, 67, 67, 67, 1463, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 1579, 67, 67, 97, 97, 97, 1518, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 904, 905, 97, 97, 97, 97, 1620, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 0, 921, 0, 0, 0, 0, 0, 0, 45, 1679, 67, 67, 67, 1682, 67, 67, 67, 67, 67, 67, 67, 67, 67, 1690, 67, 0, 0, 97, 97, 97, 97, 45, 45, 67, 67, 0, 0, 97, 97, 45, 45, 45, 669, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 189, 45, 45, 45, 1748, 45, 45, 45, 1749, 1750, 45, 45, 45, 45, 45, 45, 45, 45, 67, 67, 67, 67, 1959, 67, 67, 67, 67, 1768, 67, 67, 67, 67, 67, 67, 67, 67, 97, 97, 97, 97, 97, 97, 97, 97, 97, 1791, 97, 97, 97, 97, 97, 97, 97, 97, 45, 45, 45, 45, 45, 45, 1802, 67, 1817, 67, 67, 67, 67, 67, 67, 1823, 67, 67, 67, 67, 97, 97, 97, 97, 0, 0, 0, 97, 97, 97, 97, 0, 97, 97, 97, 97, 1848, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 659, 45, 45, 45, 45, 45, 45, 45, 1863, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 495, 67, 67, 67, 67, 67, 1878, 97, 97, 97, 97, 0, 0, 0, 97, 97, 97, 97, 0, 0, 97, 97, 97, 97, 97, 0, 0, 0, 97, 97, 97, 97, 97, 97, 45, 45, 45, 45, 45, 45, 45, 45, 45, 67, 67, 67, 67, 97, 97, 97, 97, 0, 0, 0, 1973, 97, 97, 97, 0, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 1165, 97, 1167, 67, 24850, 24850, 12564, 12564, 0, 0, 2166784, 0, 0, 53531, 53531, 0, 286, 97, 97, 0, 0, 97, 97, 97, 97, 97, 97, 0, 0, 97, 97, 1789, 97, 0, 94242, 0, 0, 0, 2211840, 102439, 0, 0, 106538, 98347, 136, 2158592, 2158592, 2158592, 2158592, 2158592, 3158016, 229376, 2375680, 2379776, 2158592, 2158592, 2420736, 2158592, 2449408, 2158592, 2158592, 67, 24850, 24850, 12564, 12564, 0, 0, 280, 547, 0, 53531, 53531, 0, 286, 97, 97, 0, 0, 97, 97, 97, 97, 97, 97, 0, 1788, 97, 97, 0, 97, 2024, 97, 45, 45, 45, 45, 45, 45, 67, 67, 67, 67, 67, 67, 67, 67, 235, 67, 67, 67, 67, 67, 57889, 547, 547, 0, 0, 550, 0, 97, 97, 97, 97, 97, 97, 97, 97, 97, 45, 45, 45, 1799, 45, 45, 45, 67, 67, 67, 67, 67, 25398, 0, 13112, 0, 54074, 0, 0, 1092, 0, 0, 0, 0, 0, 97, 97, 97, 97, 1612, 97, 97, 97, 97, 1616, 97, 1297, 1472, 0, 0, 0, 0, 1303, 1474, 0, 0, 0, 0, 1309, 1476, 0, 0, 0, 0, 97, 97, 97, 1481, 97, 97, 97, 97, 97, 97, 1488, 97, 0, 1474, 0, 1476, 0, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 607, 97, 97, 97, 97, 40976, 18, 36884, 45078, 26, 30, 90143, 94242, 0, 102439, 106538, 98347, 0, 0, 213080, 40976, 18, 36884, 45078, 24, 27, 90143, 94242, 0, 102439, 106538, 98347, 0, 0, 143448, 40976, 18, 18, 36884, 0, 45078, 0, 24, 24, 24, 27, 27, 27, 27, 0, 0, 0, 0, 97, 97, 97, 97, 1482, 97, 1483, 97, 97, 97, 97, 97, 97, 1326, 97, 97, 1329, 1330, 97, 97, 97, 97, 97, 97, 1159, 1160, 97, 97, 97, 97, 97, 97, 97, 97, 590, 97, 97, 97, 97, 97, 97, 97, 0, 94242, 0, 0, 0, 2211974, 102439, 0, 0, 106538, 98347, 0, 2158730, 2158730, 2158730, 2158730, 2158730, 2158730, 2158730, 2158730, 2474122, 2158730, 2158730, 2494602, 2158730, 2158730, 2158730, 2809994, 2158730, 2158730, 2842762, 2158730, 2158730, 2158730, 2900106, 2158730, 2158730, 2158730, 2158730, 2158730, 2158730, 2158730, 2158730, 3014794, 2158730, 2158730, 3051658, 2158730, 2158730, 3100810, 2158730, 2158730, 2158730, 2158730, 3096714, 2158730, 2158730, 2158730, 2158730, 2158730, 2158730, 2158730, 2158730, 2158730, 2158730, 2207744, 2207744, 2207744, 2207744, 2207744, 2572288, 2207744, 2207744, 2207744, 2207744, 541, 541, 543, 543, 0, 0, 2166784, 0, 548, 549, 549, 0, 286, 2158877, 2158877, 2158877, 2863389, 2892061, 2158877, 2158877, 2158877, 2158877, 2158877, 2158877, 2158877, 2158877, 2158877, 2158877, 2158877, 3186973, 2158877, 0, 0, 0, 0, 0, 0, 0, 0, 2367626, 2158877, 2404637, 2412829, 2158877, 2158877, 2158877, 2158877, 2158877, 2158877, 2158877, 2158877, 2158877, 2158877, 2158877, 2158877, 2158877, 2158877, 2158877, 2158877, 2564381, 2158877, 2158877, 2605341, 2158877, 2158877, 2158877, 2158877, 2158877, 2158877, 2679069, 2158877, 2695453, 2158877, 2703645, 2158877, 2711837, 2752797, 2158877, 0, 2158877, 2158877, 2158877, 2384010, 2158730, 2158730, 2158730, 2158730, 3006602, 2383872, 2207744, 2207744, 2207744, 2207744, 2207744, 2207744, 3096576, 2207744, 2207744, 2207744, 2207744, 2207744, 2207744, 2207744, 2207744, 2207744, 2207744, 2207744, 2207744, 0, 0, 0, 0, 0, 0, 2162688, 0, 0, 2158877, 2785565, 2158877, 2810141, 2158877, 2158877, 2842909, 2158877, 2158877, 2158877, 2900253, 2158877, 2158877, 2158877, 2158877, 2158877, 2531613, 2158877, 2158877, 2158877, 2158877, 2158877, 2617629, 2158877, 2158877, 2158877, 2158877, 2158730, 2818186, 2158730, 2158730, 2158730, 2158730, 2158730, 2158730, 2158730, 2158730, 2158730, 2158730, 2158730, 2158730, 2158730, 2158730, 2158730, 2158730, 3105053, 2158877, 2158877, 2158877, 2158877, 2158877, 2158877, 2158877, 2158877, 2158877, 2158877, 2158877, 2158877, 0, 0, 0, 0, 0, 97, 97, 97, 1611, 97, 97, 97, 97, 97, 97, 97, 1496, 97, 97, 1499, 97, 97, 97, 97, 97, 2441354, 2445450, 2158730, 2158730, 2158730, 2158730, 2158730, 2158730, 2502794, 2158730, 2158730, 2158730, 2158730, 2158730, 2158730, 2158730, 2433162, 2158730, 2453642, 2461834, 2158730, 2158730, 2158730, 2158730, 2158730, 2158730, 2580618, 2158730, 2158730, 2158730, 2158730, 2621578, 2158730, 2158730, 2158730, 2158730, 2158730, 2158730, 2699402, 2158730, 2158730, 2158730, 2158730, 2678922, 2158730, 2695306, 2158730, 2703498, 2158730, 2711690, 2752650, 2158730, 2158730, 2785418, 2158730, 2158730, 2158730, 3113098, 2158730, 2158730, 2158730, 2158730, 2158730, 2158730, 2158730, 2158730, 2158730, 3186826, 2158730, 2207744, 2207744, 2207744, 2207744, 2781184, 2793472, 2207744, 2818048, 2207744, 2207744, 2207744, 2207744, 2207744, 2207744, 2207744, 2207744, 2207744, 2207744, 2207744, 2207744, 0, 541, 0, 543, 2158877, 2502941, 2158877, 2158877, 2158877, 2158877, 2158877, 2158877, 2158877, 2158877, 2580765, 2158877, 2158877, 2158877, 2158877, 2621725, 2158877, 3019037, 2158877, 3043613, 2158877, 2158877, 2158877, 2158877, 3080477, 2158877, 2158877, 3113245, 2158877, 2158877, 2158877, 2158877, 0, 2158877, 2908445, 2158877, 2158877, 2158877, 2978077, 2158877, 2158877, 2158877, 2158877, 3039517, 2158877, 2158730, 2510986, 2158730, 2158730, 2158730, 2158730, 2158730, 2158730, 2158730, 2584714, 2158730, 2609290, 2158730, 2158730, 2629770, 2158730, 2158730, 2158730, 2388106, 2158730, 2158730, 2158730, 2158730, 2158730, 2158730, 2158730, 2158730, 2158730, 2158730, 2158730, 2158730, 2158730, 2605194, 2158730, 2158730, 2158730, 2158730, 2687114, 2158730, 2715786, 2158730, 2158730, 2158730, 2158730, 2158730, 2158730, 2158730, 2867338, 2158730, 2904202, 2158730, 2158730, 2158730, 2642058, 2158730, 2158730, 2158730, 2158730, 2158730, 2158730, 2158730, 2158730, 2158730, 2158730, 2781322, 2793610, 2158730, 3121290, 2158730, 2158730, 2158730, 3149962, 2158730, 2158730, 3170442, 3174538, 2158730, 2367488, 2207744, 2207744, 2207744, 2207744, 2207744, 2207744, 2207744, 2441216, 2445312, 2207744, 2207744, 2207744, 2207744, 2207744, 2207744, 2502656, 2158877, 2433309, 2158877, 2453789, 2461981, 2158877, 2158877, 2158877, 2158877, 2158877, 2158877, 2511133, 2158877, 2158877, 2158877, 2158877, 2584861, 2158877, 2609437, 2158877, 2158877, 2629917, 2158877, 2158877, 2158877, 2687261, 2158877, 2715933, 2158877, 2158730, 2158730, 2973834, 2158730, 2982026, 2158730, 2158730, 3002506, 2158730, 3047562, 3063946, 3076234, 2158730, 2158730, 2158730, 2158730, 2207744, 2506752, 2207744, 2207744, 2207744, 2207744, 2207744, 2158877, 2507037, 0, 0, 2158877, 2158730, 2158730, 2158730, 3203210, 2207744, 2207744, 2207744, 2207744, 2207744, 2424832, 2207744, 2207744, 2207744, 2207744, 2207744, 2207744, 2207744, 2207744, 2207744, 2207744, 2207744, 2207744, 2564096, 2207744, 2207744, 2207744, 2707741, 2732317, 2158877, 2158877, 2158877, 2822429, 2826525, 2158877, 2896157, 2158877, 2158877, 2924829, 2158877, 2158877, 2973981, 2158877, 18, 0, 0, 0, 0, 0, 0, 0, 2211840, 0, 0, 642, 0, 2158592, 0, 45, 1529, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 1755, 45, 67, 67, 2982173, 2158877, 2158877, 3002653, 2158877, 3047709, 3064093, 3076381, 2158877, 2158877, 2158877, 2158877, 2158877, 2158877, 2158877, 3203357, 2523274, 2527370, 2158730, 2158730, 2576522, 2158730, 2158730, 2158730, 2158730, 2158730, 2158730, 2158730, 2158730, 2158730, 2158730, 2908298, 2494749, 2158877, 2158877, 2158877, 2523421, 2527517, 2158877, 2158877, 2576669, 2158877, 2158877, 2158877, 2158877, 2158877, 2158877, 0, 40976, 0, 18, 18, 4321280, 2224253, 2232448, 4329472, 2232448, 2158730, 2498698, 2158730, 2158730, 2158730, 2158730, 2568330, 2158730, 2592906, 2625674, 2158730, 2158730, 2674826, 2736266, 2158730, 2158730, 2158730, 2207744, 2207744, 2207744, 2207744, 2207744, 2207744, 2207744, 2207744, 2207744, 2207744, 2207744, 2207744, 2207744, 2207744, 2158730, 2912394, 2158730, 2158730, 2158730, 2158730, 2158730, 2158730, 2158730, 3109002, 2158730, 2158730, 3133578, 3145866, 3154058, 2375680, 2207744, 3108864, 2207744, 2207744, 3133440, 3145728, 3153920, 2375965, 2380061, 2158877, 2158877, 2421021, 2158877, 2449693, 2158877, 2158877, 2158877, 3117341, 2158730, 2158730, 2158730, 2158730, 2158730, 2158730, 2158730, 2158730, 2158730, 2158730, 2158730, 2158730, 3104906, 2158730, 2158730, 2158730, 2158730, 2158730, 2158730, 2158877, 2498845, 2158877, 2158877, 0, 2158877, 2158877, 2568477, 2158877, 2593053, 2625821, 2158877, 2158877, 2674973, 0, 0, 0, 0, 97, 97, 1480, 97, 97, 97, 97, 97, 1485, 97, 97, 97, 0, 97, 97, 1729, 97, 1731, 97, 97, 97, 97, 97, 97, 97, 311, 97, 97, 97, 97, 97, 97, 97, 97, 1520, 97, 97, 1523, 97, 97, 1526, 97, 2736413, 2158877, 2158877, 0, 2158877, 2912541, 2158877, 2158877, 2158877, 2158877, 2158877, 2158877, 2158877, 3109149, 2158877, 2158877, 3014941, 2158877, 2158877, 3051805, 2158877, 2158877, 3100957, 2158877, 2158877, 3121437, 2158877, 2158877, 2158877, 3150109, 3133725, 3146013, 3154205, 2158730, 2408586, 2416778, 2158730, 2465930, 2158730, 2158730, 2158730, 2158730, 2158730, 2158730, 2158730, 2158730, 3018890, 2158730, 3043466, 2158730, 2158730, 2158730, 2158730, 3080330, 2633866, 2658442, 2740362, 2744458, 2834570, 2949258, 2158730, 2986122, 2158730, 2998410, 2158730, 2158730, 2158730, 3129482, 2207744, 2408448, 2949120, 2207744, 2985984, 2207744, 2998272, 2207744, 2207744, 2207744, 3129344, 2158877, 2408733, 2416925, 2158877, 2466077, 2158877, 2158877, 3170589, 3174685, 2158877, 0, 0, 0, 2158730, 2158730, 2158730, 2158730, 2158730, 2424970, 2158730, 2158730, 2158730, 2158730, 2707594, 2732170, 2158730, 2158730, 2158730, 2822282, 2826378, 2158730, 2896010, 2158730, 2158730, 2924682, 2949405, 2158877, 2986269, 2158877, 2998557, 2158877, 2158877, 2158877, 3129629, 2158730, 2158730, 2478218, 2158730, 2158730, 2158730, 2535562, 2543754, 2158730, 2158730, 2158730, 2158730, 2158730, 2158730, 2158730, 2158730, 2158730, 3117194, 2207744, 2207744, 2478080, 2207744, 2207744, 2207744, 2207744, 3014656, 2207744, 2207744, 3051520, 2207744, 2207744, 3100672, 2207744, 2207744, 3121152, 2207744, 2207744, 2207744, 2207744, 2207744, 2584576, 2207744, 2609152, 2207744, 2207744, 2629632, 2207744, 2207744, 2207744, 2686976, 2207744, 2207744, 2535424, 2543616, 2207744, 2207744, 2207744, 2207744, 2207744, 2207744, 2207744, 2207744, 2207744, 3117056, 2158877, 2158877, 2478365, 0, 2158877, 2158877, 2158877, 2158877, 2158877, 2158877, 2158730, 2158730, 2482314, 2158730, 2158730, 2158730, 2158730, 2158730, 2158730, 2207744, 2207744, 2207744, 2387968, 2207744, 2207744, 2207744, 2207744, 2207744, 2207744, 2207744, 2207744, 2207744, 2207744, 2207744, 2207744, 0, 823, 0, 825, 2158730, 2158730, 2158730, 2990218, 2158730, 2158730, 2207744, 2207744, 2482176, 2207744, 2207744, 2207744, 2207744, 2207744, 2207744, 2207744, 0, 0, 0, 0, 0, 0, 2162688, 135, 0, 2207744, 2207744, 2990080, 2207744, 2207744, 2158877, 2158877, 2482461, 2158877, 2158877, 0, 0, 0, 2158877, 2158877, 2158877, 2158877, 2158877, 2158730, 2429066, 2158730, 2515082, 2158730, 2588810, 2158730, 2838666, 2158730, 2158730, 2158730, 3010698, 2207744, 2428928, 2207744, 2514944, 2207744, 2588672, 2207744, 2838528, 2207744, 2207744, 2207744, 3010560, 2158877, 2429213, 2158877, 2515229, 0, 0, 2158877, 2588957, 2158877, 0, 2838813, 2158877, 2158877, 2158877, 3010845, 2158730, 2506890, 2158730, 2158730, 2158730, 2748554, 2756746, 2777226, 2801802, 2158730, 2158730, 2158730, 2863242, 2891914, 2158730, 2158730, 2158730, 2158730, 2158730, 2158730, 2564234, 2158730, 2158730, 2158730, 2158730, 2158730, 2597002, 2158730, 2158730, 2158730, 3006464, 2384157, 0, 0, 2158877, 2158877, 2158877, 2158877, 3006749, 2158730, 2637962, 2953354, 2158730, 2207744, 2637824, 2953216, 2207744, 0, 0, 2158877, 2638109, 2953501, 2158877, 2539658, 2158730, 2539520, 2207744, 0, 0, 2539805, 2158877, 2158730, 2158730, 2158730, 2977930, 2158730, 2158730, 2158730, 2158730, 3039370, 2158730, 2158730, 2158730, 2158730, 2158730, 2158730, 3158154, 2207744, 0, 2158877, 2158730, 2207744, 0, 2158877, 2158730, 2207744, 0, 2158877, 2965642, 2965504, 2965789, 0, 0, 0, 0, 1315, 0, 0, 0, 0, 97, 97, 97, 97, 97, 97, 97, 1484, 97, 97, 97, 97, 2158592, 18, 0, 122880, 0, 0, 0, 77824, 0, 2211840, 0, 0, 0, 0, 2158592, 0, 356, 0, 0, 0, 0, 0, 0, 28809, 0, 139, 45, 45, 45, 45, 45, 45, 1751, 45, 45, 45, 45, 45, 45, 45, 67, 67, 1427, 67, 67, 67, 67, 67, 1432, 67, 67, 67, 3104768, 2158592, 2158592, 2158592, 2158592, 2158592, 2158592, 2158592, 2158592, 2158592, 2158592, 2158592, 2158592, 122880, 0, 0, 0, 0, 1315, 0, 0, 0, 0, 97, 97, 97, 97, 97, 97, 1322, 550, 0, 286, 0, 2158592, 2158592, 2158592, 2158592, 2158592, 2424832, 2158592, 2158592, 2158592, 2158592, 2158592, 2158592, 0, 40976, 0, 18, 18, 24, 24, 4329472, 27, 27, 2207744, 2207744, 2977792, 2207744, 2207744, 2207744, 2207744, 3039232, 2207744, 2207744, 2207744, 2207744, 2207744, 2207744, 3158016, 542, 0, 0, 0, 542, 0, 544, 0, 0, 0, 544, 0, 550, 0, 0, 0, 0, 0, 97, 97, 1610, 97, 97, 97, 97, 97, 97, 97, 97, 898, 97, 97, 97, 97, 97, 97, 97, 0, 94242, 0, 0, 0, 2211840, 0, 0, 0, 0, 0, 0, 2158592, 2158592, 2158592, 2158592, 2158592, 2424832, 2158592, 2158592, 2158592, 2158592, 2158592, 2158592, 40976, 18, 36884, 45078, 24, 27, 90143, 94242, 237568, 102439, 106538, 98347, 0, 0, 20480, 40976, 18, 36884, 45078, 24, 27, 90143, 94242, 0, 102439, 106538, 98347, 0, 0, 192512, 40976, 18, 36884, 45078, 24, 27, 90143, 94242, 0, 102439, 106538, 98347, 0, 0, 94, 40976, 18, 36884, 45078, 24, 27, 90143, 94242, 0, 102439, 106538, 98347, 0, 0, 96, 40976, 18, 36884, 45078, 24, 27, 90143, 94242, 0, 102439, 106538, 98347, 0, 0, 12378, 40976, 18, 18, 36884, 0, 45078, 0, 24, 24, 24, 126, 126, 126, 126, 90143, 0, 0, 2170880, 0, 0, 0, 0, 2158592, 2158592, 2158592, 2387968, 2158592, 2158592, 2158592, 2158592, 2158592, 2158592, 20480, 40976, 0, 18, 18, 24, 24, 27, 27, 27, 40976, 18, 36884, 45078, 24, 27, 90143, 94242, 241664, 102439, 106538, 98347, 0, 0, 20568, 40976, 18, 36884, 45078, 24, 27, 90143, 94242, 0, 102439, 106538, 98347, 0, 0, 200797, 40976, 18, 36884, 45078, 24, 27, 90143, 94242, 0, 102439, 106538, 98347, 0, 0, 20480, 40976, 18, 36884, 45078, 24, 27, 90143, 94242, 0, 0, 0, 44, 0, 0, 20575, 40976, 18, 36884, 45078, 24, 27, 90143, 94242, 0, 41, 41, 41, 0, 0, 1126400, 40976, 18, 36884, 45078, 24, 27, 90143, 94242, 0, 102439, 106538, 98347, 0, 0, 0, 40976, 18, 36884, 45078, 24, 27, 90143, 94242, 0, 102439, 106538, 98347, 0, 0, 89, 40976, 18, 18, 36884, 0, 45078, 0, 24, 24, 24, 27, 131201, 27, 27, 90143, 0, 0, 2170880, 0, 0, 550, 0, 2158592, 2158592, 2158592, 2387968, 2158592, 2158592, 2158592, 2158592, 2158592, 2158592, 2158592, 2158592, 2158592, 2158592, 2158592, 2158592, 2441216, 2445312, 2158592, 2158592, 2158592, 2158592, 2158592, 0, 94242, 0, 0, 208896, 2211840, 102439, 0, 0, 106538, 98347, 0, 2158592, 2158592, 2158592, 2158592, 2158592, 3186688, 2158592, 0, 0, 0, 0, 0, 0, 0, 0, 2367488, 32768, 0, 0, 0, 0, 0, 0, 2158592, 2158592, 2158592, 2158592, 2158592, 2158592, 2158592, 2158592, 2158592, 2433024, 2158592, 2453504, 2461696, 2158592, 2158592, 2158592, 2158592, 2158592, 2158592, 2510848, 2158592, 2158592, 2158592, 2158592, 40976, 18, 36884, 245783, 24, 27, 90143, 94242, 0, 102439, 106538, 98347, 0, 0, 20480, 40976, 18, 36884, 45078, 24, 27, 90143, 94242, 0, 102439, 106538, 98347, 0, 0, 221184, 40976, 18, 36884, 45078, 24, 27, 90143, 94242, 0, 102439, 106538, 98347, 0, 0, 180224, 40976, 18, 18, 36884, 155648, 45078, 0, 24, 24, 217088, 27, 27, 27, 217088, 90143, 0, 0, 2170880, 0, 0, 828, 0, 2158592, 2158592, 2158592, 2387968, 2158592, 2158592, 2158592, 2158592, 2158592, 2158592, 2207744, 2207744, 2207744, 2387968, 2207744, 2207744, 2207744, 2207744, 2207744, 2207744, 2207744, 0, 0, 0, 0, 0, 0, 2162688, 233472, 0, 0, 94242, 0, 0, 0, 38, 102439, 0, 0, 106538, 98347, 28809, 45, 45, 45, 45, 45, 718, 45, 45, 45, 45, 45, 45, 45, 45, 45, 727, 131427, 0, 0, 0, 0, 362, 0, 365, 28809, 367, 139, 45, 45, 45, 45, 45, 45, 1808, 45, 45, 45, 45, 67, 67, 67, 67, 67, 67, 67, 97, 97, 0, 0, 97, 67, 24850, 24850, 12564, 12564, 0, 57889, 0, 0, 0, 53531, 53531, 367, 286, 97, 97, 0, 0, 97, 97, 97, 97, 97, 97, 1787, 0, 97, 97, 0, 97, 97, 97, 45, 45, 45, 45, 2029, 45, 67, 67, 67, 67, 2033, 57889, 0, 0, 54074, 54074, 550, 0, 97, 97, 97, 97, 97, 97, 97, 97, 97, 45, 1798, 45, 45, 1800, 45, 45, 0, 1472, 0, 0, 0, 0, 0, 1474, 0, 0, 0, 0, 0, 1476, 0, 0, 0, 0, 1315, 0, 0, 0, 0, 97, 97, 97, 97, 1320, 97, 97, 0, 0, 97, 97, 97, 97, 1786, 97, 0, 0, 97, 97, 0, 1790, 1527, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 663, 67, 24850, 24850, 12564, 12564, 0, 57889, 281, 0, 0, 53531, 53531, 367, 286, 97, 97, 0, 0, 97, 97, 97, 1785, 97, 97, 0, 0, 97, 97, 0, 97, 97, 1979, 97, 97, 45, 45, 1983, 45, 1984, 45, 45, 45, 45, 45, 652, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 690, 45, 45, 694, 45, 45, 40976, 19, 36884, 45078, 24, 27, 90143, 94242, 0, 102439, 106538, 98347, 0, 0, 262144, 40976, 18, 36884, 45078, 24, 27, 90143, 94242, 38, 102439, 106538, 98347, 46, 67, 98, 40976, 18, 36884, 45078, 24, 27, 90143, 94242, 38, 102439, 106538, 98347, 45, 67, 97, 40976, 18, 36884, 45078, 24, 27, 90143, 94242, 0, 102439, 106538, 98347, 0, 0, 258048, 40976, 18, 36884, 45078, 24, 27, 90143, 94242, 0, 102439, 106538, 98347, 0, 0, 1122423, 40976, 18, 36884, 45078, 24, 27, 90143, 94242, 0, 1114152, 1114152, 1114152, 0, 0, 1114112, 40976, 18, 36884, 45078, 24, 27, 90143, 94242, 37, 102439, 106538, 98347, 0, 0, 204800, 40976, 18, 36884, 45078, 24, 27, 90143, 94242, 0, 102439, 106538, 98347, 0, 0, 57436, 40976, 18, 36884, 45078, 24, 27, 33, 33, 0, 33, 33, 33, 0, 0, 0, 40976, 18, 18, 36884, 0, 45078, 0, 124, 124, 124, 127, 127, 127, 127, 90143, 0, 0, 2170880, 0, 0, 550, 0, 2158877, 2158877, 2158877, 2388253, 2158877, 2158877, 2158877, 2158877, 2158877, 2781469, 2793757, 2158877, 2818333, 2158877, 2158877, 2158877, 2158877, 2158877, 2158877, 2158877, 2867485, 2158877, 2904349, 2158877, 2158877, 2158877, 2158877, 2158877, 2158877, 2158877, 3096861, 2158877, 2158877, 2158877, 2158877, 2158877, 2158877, 2158877, 2158877, 2158877, 2441501, 2445597, 2158877, 2158877, 2158877, 2158877, 2158877, 40976, 122, 123, 36884, 0, 45078, 0, 24, 24, 24, 27, 27, 27, 27, 90143, 0, 921, 29315, 0, 0, 0, 0, 45, 45, 45, 45, 45, 45, 45, 45, 936, 2158592, 4243810, 0, 0, 0, 0, 0, 0, 0, 2211840, 0, 0, 0, 0, 2158592, 0, 921, 29315, 0, 0, 0, 0, 45, 45, 45, 45, 45, 45, 45, 935, 45, 45, 45, 715, 45, 45, 45, 45, 45, 45, 45, 723, 45, 45, 45, 45, 45, 1182, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 430, 45, 45, 45, 45, 45, 40976, 18, 36884, 45078, 24, 27, 90143, 94242, 38, 102439, 106538, 98347, 47, 68, 99, 40976, 18, 36884, 45078, 24, 27, 90143, 94242, 38, 102439, 106538, 98347, 48, 69, 100, 40976, 18, 36884, 45078, 24, 27, 90143, 94242, 38, 102439, 106538, 98347, 49, 70, 101, 40976, 18, 36884, 45078, 24, 27, 90143, 94242, 38, 102439, 106538, 98347, 50, 71, 102, 40976, 18, 36884, 45078, 24, 27, 90143, 94242, 38, 102439, 106538, 98347, 51, 72, 103, 40976, 18, 36884, 45078, 24, 27, 90143, 94242, 38, 102439, 106538, 98347, 52, 73, 104, 40976, 18, 36884, 45078, 24, 27, 90143, 94242, 38, 102439, 106538, 98347, 53, 74, 105, 40976, 18, 36884, 45078, 24, 27, 90143, 94242, 38, 102439, 106538, 98347, 54, 75, 106, 40976, 18, 36884, 45078, 24, 27, 90143, 94242, 38, 102439, 106538, 98347, 55, 76, 107, 40976, 18, 36884, 45078, 24, 27, 90143, 94242, 38, 102439, 106538, 98347, 56, 77, 108, 40976, 18, 36884, 45078, 24, 27, 90143, 94242, 38, 102439, 106538, 98347, 57, 78, 109, 40976, 18, 36884, 45078, 24, 27, 90143, 94242, 38, 102439, 106538, 98347, 58, 79, 110, 40976, 18, 36884, 45078, 24, 27, 90143, 94242, 38, 102439, 106538, 98347, 59, 80, 111, 40976, 18, 36884, 45078, 24, 27, 90143, 94242, 38, 102439, 106538, 98347, 60, 81, 112, 40976, 18, 36884, 45078, 24, 27, 90143, 94242, 38, 102439, 106538, 98347, 61, 82, 113, 40976, 18, 36884, 45078, 24, 27, 90143, 94242, 38, 102439, 106538, 98347, 62, 83, 114, 40976, 18, 36884, 45078, 24, 27, 90143, 94242, 38, 102439, 106538, 98347, 63, 84, 115, 40976, 18, 36884, 45078, 24, 27, 90143, 94242, 38, 102439, 106538, 98347, 64, 85, 116, 40976, 18, 36884, 45078, 24, 27, 90143, 94242, 38, 102439, 106538, 98347, 65, 86, 117, 40976, 18, 36884, 45078, 24, 27, 90143, 94242, 38, 102439, 106538, 98347, 66, 87, 118, 40976, 18, 36884, 45078, 24, 27, 90143, 94242, 118820, 102439, 106538, 98347, 118820, 118820, 118820, 40976, 18, 18, 0, 0, 45078, 0, 24, 24, 24, 27, 27, 27, 27, 90143, 0, 0, 1314, 0, 0, 0, 0, 0, 0, 97, 97, 97, 97, 97, 1321, 97, 18, 131427, 0, 0, 0, 0, 0, 0, 362, 0, 0, 365, 0, 367, 0, 0, 1315, 0, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 1360, 97, 97, 131, 94242, 0, 0, 0, 38, 102439, 0, 0, 106538, 98347, 28809, 45, 45, 45, 145, 149, 45, 45, 45, 45, 45, 174, 45, 179, 45, 185, 45, 188, 45, 45, 202, 67, 255, 67, 67, 269, 67, 67, 0, 24850, 12564, 0, 0, 0, 0, 28809, 53531, 97, 97, 97, 292, 296, 97, 97, 97, 97, 97, 321, 97, 326, 97, 332, 97, 18, 131427, 0, 0, 0, 0, 0, 0, 362, 0, 0, 365, 29315, 367, 646, 335, 97, 97, 349, 97, 97, 0, 40976, 0, 18, 18, 24, 24, 27, 27, 27, 437, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 67, 67, 67, 67, 67, 67, 67, 67, 523, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 511, 67, 67, 67, 97, 97, 97, 620, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 1501, 1502, 97, 793, 67, 67, 796, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 808, 67, 0, 0, 97, 97, 97, 97, 45, 45, 67, 67, 0, 0, 97, 97, 2052, 67, 67, 67, 67, 813, 67, 67, 67, 67, 67, 67, 67, 25398, 542, 13112, 544, 57889, 0, 0, 54074, 54074, 550, 830, 97, 97, 97, 97, 97, 97, 97, 97, 97, 315, 97, 97, 97, 97, 97, 97, 841, 97, 97, 97, 97, 97, 97, 97, 97, 97, 854, 97, 97, 97, 97, 97, 97, 589, 97, 97, 97, 97, 97, 97, 97, 97, 97, 867, 97, 97, 97, 97, 97, 97, 97, 891, 97, 97, 894, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 906, 45, 937, 45, 45, 940, 45, 45, 45, 45, 45, 45, 948, 45, 45, 45, 45, 45, 734, 735, 67, 737, 67, 738, 67, 740, 67, 67, 67, 45, 967, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 435, 45, 45, 45, 980, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 415, 45, 45, 67, 67, 1024, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 97, 97, 97, 67, 67, 67, 67, 67, 25398, 1081, 13112, 1085, 54074, 1089, 0, 0, 0, 0, 0, 0, 363, 0, 28809, 0, 139, 45, 45, 45, 45, 45, 45, 1674, 45, 45, 45, 45, 45, 45, 45, 45, 67, 1913, 67, 1914, 67, 67, 67, 1918, 67, 67, 97, 97, 97, 97, 1118, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 630, 97, 97, 97, 97, 97, 1169, 97, 97, 97, 97, 97, 0, 921, 0, 1175, 0, 0, 0, 0, 45, 45, 45, 45, 45, 45, 1534, 45, 45, 45, 45, 45, 1538, 45, 45, 45, 45, 1233, 45, 45, 45, 45, 45, 45, 67, 67, 67, 67, 67, 67, 67, 67, 742, 67, 45, 45, 1191, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 454, 67, 67, 67, 67, 1243, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 1251, 67, 0, 0, 97, 97, 97, 97, 45, 45, 67, 67, 2050, 0, 97, 97, 45, 45, 45, 732, 45, 45, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 97, 97, 67, 67, 67, 1284, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 772, 67, 67, 67, 1293, 67, 67, 67, 67, 67, 67, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 368, 2158592, 2158592, 2158592, 2404352, 2412544, 1323, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 1331, 97, 97, 97, 0, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 1737, 97, 1364, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 1373, 97, 18, 131427, 0, 0, 0, 0, 0, 0, 362, 0, 0, 365, 29315, 367, 647, 45, 45, 1387, 45, 45, 1391, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 410, 45, 45, 45, 45, 45, 1400, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 1407, 45, 45, 45, 45, 45, 941, 45, 943, 45, 45, 45, 45, 45, 45, 951, 45, 67, 1438, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 1447, 67, 67, 67, 67, 67, 67, 782, 67, 67, 67, 67, 67, 67, 67, 67, 67, 756, 67, 67, 67, 67, 67, 67, 97, 1491, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 1500, 97, 97, 97, 0, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 1736, 97, 45, 45, 1541, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 677, 45, 45, 67, 1581, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 791, 792, 67, 67, 67, 67, 1598, 67, 1600, 67, 67, 67, 67, 67, 67, 67, 67, 1472, 97, 97, 97, 1727, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 1513, 97, 97, 67, 67, 97, 1879, 97, 1881, 97, 0, 1884, 0, 97, 97, 97, 97, 0, 0, 97, 97, 97, 97, 97, 0, 0, 0, 1842, 97, 97, 67, 67, 67, 67, 67, 97, 97, 97, 97, 1928, 0, 0, 0, 97, 97, 97, 97, 97, 97, 45, 45, 45, 45, 45, 1903, 45, 45, 45, 67, 67, 67, 67, 97, 97, 97, 97, 1971, 0, 0, 97, 97, 97, 97, 0, 97, 97, 97, 97, 97, 97, 97, 97, 97, 0, 0, 0, 45, 45, 45, 1381, 45, 45, 45, 45, 1976, 97, 97, 97, 97, 97, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 1747, 809, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 25398, 542, 13112, 544, 97, 907, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 638, 0, 0, 0, 0, 1478, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 1150, 97, 97, 97, 97, 67, 67, 67, 67, 1244, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 477, 67, 67, 67, 67, 67, 67, 1294, 67, 67, 67, 67, 0, 0, 0, 0, 0, 0, 0, 0, 0, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 1324, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 0, 0, 0, 1374, 97, 97, 97, 97, 0, 1175, 0, 45, 45, 45, 45, 45, 45, 45, 45, 945, 45, 45, 45, 45, 45, 45, 45, 45, 1908, 45, 45, 1910, 45, 67, 67, 67, 67, 67, 67, 67, 67, 1919, 67, 0, 0, 97, 97, 97, 97, 45, 2048, 67, 2049, 0, 0, 97, 2051, 45, 45, 45, 939, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 397, 45, 45, 45, 1921, 67, 67, 1923, 67, 97, 97, 97, 97, 97, 0, 0, 0, 97, 97, 97, 97, 97, 97, 45, 45, 45, 45, 1947, 45, 1935, 0, 0, 0, 97, 1939, 97, 97, 1941, 97, 45, 45, 45, 45, 45, 45, 382, 389, 45, 45, 45, 45, 45, 45, 45, 45, 1810, 45, 45, 1812, 67, 67, 67, 67, 67, 256, 67, 67, 67, 67, 67, 0, 24850, 12564, 0, 0, 0, 0, 28809, 53531, 336, 97, 97, 97, 97, 97, 0, 40976, 0, 18, 18, 24, 24, 27, 27, 27, 131427, 0, 0, 0, 0, 362, 0, 365, 28809, 367, 139, 45, 45, 371, 373, 45, 45, 45, 955, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 413, 45, 45, 45, 457, 459, 67, 67, 67, 67, 67, 67, 67, 67, 473, 67, 478, 67, 67, 482, 67, 67, 485, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 97, 1828, 97, 554, 556, 97, 97, 97, 97, 97, 97, 97, 97, 570, 97, 575, 97, 97, 579, 97, 97, 582, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 330, 97, 97, 67, 746, 67, 67, 67, 67, 67, 67, 67, 67, 67, 758, 67, 67, 67, 67, 67, 67, 67, 1575, 67, 67, 67, 67, 67, 67, 67, 67, 493, 67, 67, 67, 67, 67, 67, 67, 97, 97, 844, 97, 97, 97, 97, 97, 97, 97, 97, 97, 856, 97, 97, 97, 0, 97, 97, 97, 97, 97, 97, 97, 97, 1735, 97, 97, 97, 0, 97, 97, 97, 97, 97, 97, 97, 1642, 97, 1644, 97, 97, 890, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 0, 67, 67, 67, 67, 1065, 1066, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 532, 67, 67, 67, 67, 67, 67, 67, 1451, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 496, 67, 67, 97, 97, 1505, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 593, 97, 97, 0, 1474, 0, 1476, 0, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 1617, 97, 97, 1635, 0, 1637, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 885, 97, 97, 97, 97, 67, 67, 1704, 67, 67, 67, 67, 97, 97, 97, 97, 97, 97, 97, 97, 97, 565, 572, 97, 97, 97, 97, 97, 97, 97, 97, 1832, 0, 97, 97, 97, 97, 97, 0, 0, 0, 97, 97, 97, 97, 97, 97, 45, 45, 45, 1946, 45, 45, 67, 67, 67, 67, 67, 97, 1926, 97, 1927, 97, 0, 0, 0, 97, 97, 1934, 2043, 0, 0, 97, 97, 97, 2047, 45, 45, 67, 67, 0, 1832, 97, 97, 45, 45, 45, 981, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 1227, 45, 45, 45, 131427, 0, 0, 0, 0, 362, 0, 365, 28809, 367, 139, 45, 45, 372, 45, 45, 45, 45, 1661, 1662, 45, 45, 45, 45, 45, 1666, 45, 45, 45, 45, 45, 1673, 45, 1675, 45, 45, 45, 45, 45, 45, 45, 67, 1426, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 1275, 67, 67, 67, 67, 67, 45, 418, 45, 45, 420, 45, 45, 423, 45, 45, 45, 45, 45, 45, 45, 45, 959, 45, 45, 962, 45, 45, 45, 45, 458, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 483, 67, 67, 67, 67, 504, 67, 67, 506, 67, 67, 509, 67, 67, 67, 67, 67, 67, 67, 528, 67, 67, 67, 67, 67, 67, 67, 67, 1287, 67, 67, 67, 67, 67, 67, 67, 555, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 580, 97, 97, 97, 97, 601, 97, 97, 603, 97, 97, 606, 97, 97, 97, 97, 97, 97, 848, 97, 97, 97, 97, 97, 97, 97, 97, 97, 1498, 97, 97, 97, 97, 97, 97, 45, 45, 714, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 989, 990, 45, 67, 67, 67, 67, 67, 1011, 67, 67, 67, 67, 1015, 67, 67, 67, 67, 67, 67, 67, 753, 67, 67, 67, 67, 67, 67, 67, 67, 467, 67, 67, 67, 67, 67, 67, 67, 45, 45, 1179, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 1003, 1004, 67, 1217, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 728, 67, 1461, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 1034, 67, 97, 1516, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 871, 97, 67, 67, 67, 1705, 67, 67, 67, 97, 97, 97, 97, 97, 97, 97, 97, 97, 567, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 1715, 97, 97, 97, 97, 97, 97, 97, 97, 97, 0, 0, 0, 45, 45, 1380, 45, 45, 45, 45, 45, 67, 67, 97, 97, 97, 97, 97, 0, 0, 0, 97, 1887, 97, 97, 0, 0, 97, 97, 97, 0, 97, 97, 97, 97, 97, 2006, 45, 45, 1907, 45, 45, 45, 45, 45, 67, 67, 67, 67, 67, 67, 67, 67, 67, 1920, 67, 97, 0, 2035, 97, 97, 97, 97, 97, 45, 45, 45, 45, 67, 67, 67, 1428, 67, 67, 67, 67, 67, 67, 1435, 67, 0, 94242, 0, 0, 0, 38, 102439, 0, 0, 106538, 98347, 28809, 45, 45, 45, 146, 45, 152, 45, 45, 165, 45, 175, 45, 180, 45, 45, 187, 190, 195, 45, 203, 254, 257, 262, 67, 270, 67, 67, 0, 24850, 12564, 0, 0, 0, 281, 28809, 53531, 97, 97, 97, 293, 97, 299, 97, 97, 312, 97, 322, 97, 327, 97, 97, 334, 337, 342, 97, 350, 97, 97, 0, 40976, 0, 18, 18, 24, 24, 27, 27, 27, 67, 484, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 499, 97, 581, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 596, 648, 45, 650, 45, 651, 45, 653, 45, 45, 45, 657, 45, 45, 45, 45, 45, 45, 1954, 67, 67, 67, 1958, 67, 67, 67, 67, 67, 67, 67, 768, 67, 67, 67, 67, 67, 67, 67, 67, 769, 67, 67, 67, 67, 67, 67, 67, 680, 45, 45, 45, 45, 45, 45, 45, 45, 688, 689, 691, 45, 45, 45, 45, 45, 983, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 947, 45, 45, 45, 45, 952, 45, 45, 698, 699, 45, 45, 702, 703, 45, 45, 45, 45, 45, 45, 45, 711, 744, 67, 67, 67, 67, 67, 67, 67, 67, 67, 757, 67, 67, 67, 67, 761, 67, 67, 67, 67, 765, 67, 767, 67, 67, 67, 67, 67, 67, 67, 67, 775, 776, 778, 67, 67, 67, 67, 67, 67, 785, 786, 67, 67, 789, 790, 67, 67, 67, 67, 67, 67, 1442, 67, 67, 67, 67, 67, 67, 67, 67, 67, 97, 97, 97, 1775, 97, 97, 97, 67, 67, 67, 67, 67, 798, 67, 67, 67, 802, 67, 67, 67, 67, 67, 67, 67, 67, 1465, 67, 67, 1468, 67, 67, 1471, 67, 67, 810, 67, 67, 67, 67, 67, 67, 67, 67, 67, 821, 25398, 542, 13112, 544, 57889, 0, 0, 54074, 54074, 550, 0, 833, 97, 835, 97, 836, 97, 838, 97, 97, 0, 0, 97, 97, 97, 2002, 97, 97, 97, 97, 97, 45, 45, 45, 45, 45, 1740, 45, 45, 45, 1744, 45, 45, 45, 97, 842, 97, 97, 97, 97, 97, 97, 97, 97, 97, 855, 97, 97, 97, 97, 0, 1717, 1718, 97, 97, 97, 97, 97, 1722, 97, 0, 0, 859, 97, 97, 97, 97, 863, 97, 865, 97, 97, 97, 97, 97, 97, 97, 97, 604, 97, 97, 97, 97, 97, 97, 97, 873, 874, 876, 97, 97, 97, 97, 97, 97, 883, 884, 97, 97, 887, 888, 97, 18, 131427, 0, 0, 0, 0, 0, 0, 362, 225280, 0, 365, 0, 367, 0, 45, 45, 45, 1531, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 1199, 45, 45, 45, 45, 45, 97, 97, 908, 97, 97, 97, 97, 97, 97, 97, 97, 97, 919, 638, 0, 0, 0, 0, 2158877, 2158877, 2158877, 2158877, 2158877, 2425117, 2158877, 2158877, 2158877, 2158877, 2158877, 2158877, 2597149, 2158877, 2158877, 2158877, 2158877, 2158877, 2158877, 2642205, 2158877, 2158877, 2158877, 2158877, 2158877, 3158301, 0, 2375818, 2379914, 2158730, 2158730, 2420874, 2158730, 2449546, 2158730, 2158730, 953, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 965, 978, 45, 45, 45, 45, 45, 45, 985, 45, 45, 45, 45, 45, 45, 45, 45, 971, 45, 45, 45, 45, 45, 45, 45, 67, 67, 67, 67, 67, 1027, 67, 1029, 67, 67, 67, 67, 67, 67, 67, 67, 67, 1455, 67, 67, 67, 67, 67, 67, 67, 1077, 1078, 67, 67, 25398, 0, 13112, 0, 54074, 0, 0, 0, 0, 0, 0, 0, 0, 366, 0, 139, 2158730, 2158730, 2158730, 2404490, 2412682, 1113, 97, 97, 97, 97, 97, 97, 1121, 97, 1123, 97, 97, 97, 97, 97, 97, 0, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 1540, 1155, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 615, 1168, 97, 97, 1171, 1172, 97, 97, 0, 921, 0, 1175, 0, 0, 0, 0, 45, 45, 45, 45, 45, 1533, 45, 45, 45, 45, 45, 45, 45, 45, 45, 1663, 45, 45, 45, 45, 45, 45, 45, 45, 45, 183, 45, 45, 45, 45, 201, 45, 45, 45, 1219, 45, 45, 45, 45, 45, 45, 45, 1226, 45, 45, 45, 45, 45, 168, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 427, 45, 45, 45, 45, 45, 45, 45, 1231, 45, 45, 45, 45, 45, 45, 45, 45, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 1242, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 1046, 67, 67, 1254, 67, 1256, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 806, 807, 67, 67, 97, 1336, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 1111, 97, 97, 97, 97, 97, 1351, 97, 97, 97, 1354, 97, 97, 97, 1359, 97, 97, 97, 0, 97, 97, 97, 97, 1640, 97, 97, 97, 97, 97, 97, 97, 897, 97, 97, 97, 902, 97, 97, 97, 97, 97, 97, 97, 97, 1366, 97, 97, 97, 97, 97, 97, 97, 1371, 97, 97, 97, 0, 97, 97, 97, 1730, 97, 97, 97, 97, 97, 97, 97, 97, 915, 97, 97, 97, 97, 0, 360, 0, 67, 67, 67, 1440, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 1017, 67, 1019, 67, 67, 67, 67, 67, 1453, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 1459, 97, 97, 97, 1493, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 1525, 97, 97, 97, 97, 97, 97, 1507, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 1514, 67, 67, 67, 67, 1584, 67, 67, 67, 67, 67, 1590, 67, 67, 67, 67, 67, 67, 67, 783, 67, 67, 67, 788, 67, 67, 67, 67, 67, 67, 67, 67, 67, 1599, 1601, 67, 67, 67, 1604, 67, 1606, 1607, 67, 1472, 0, 1474, 0, 1476, 0, 97, 97, 97, 97, 97, 97, 1614, 97, 97, 97, 97, 45, 45, 1850, 45, 45, 45, 45, 1855, 45, 45, 45, 45, 45, 1222, 45, 45, 45, 45, 45, 45, 45, 45, 45, 1229, 97, 1618, 97, 97, 97, 97, 97, 97, 97, 1625, 97, 97, 97, 97, 97, 0, 1175, 0, 45, 45, 45, 45, 45, 45, 45, 45, 447, 45, 45, 45, 45, 45, 67, 67, 1633, 97, 97, 0, 97, 97, 97, 97, 97, 97, 97, 97, 1643, 1645, 97, 97, 0, 0, 97, 97, 1784, 97, 97, 97, 0, 0, 97, 97, 0, 97, 1894, 1895, 97, 1897, 97, 45, 45, 45, 45, 45, 45, 45, 45, 45, 656, 45, 45, 45, 45, 45, 45, 97, 1648, 97, 1650, 1651, 97, 0, 45, 45, 45, 1654, 45, 45, 45, 45, 45, 169, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 658, 45, 45, 45, 45, 664, 45, 45, 1659, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 1187, 45, 45, 1669, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 67, 1005, 67, 67, 1681, 67, 67, 67, 67, 67, 67, 67, 1686, 67, 67, 67, 67, 67, 67, 67, 784, 67, 67, 67, 67, 67, 67, 67, 67, 1055, 67, 67, 67, 67, 1060, 67, 67, 97, 97, 1713, 97, 0, 97, 97, 97, 97, 97, 97, 97, 97, 97, 0, 0, 0, 1378, 45, 45, 45, 45, 45, 45, 45, 408, 45, 45, 45, 45, 45, 45, 45, 45, 1547, 45, 1549, 45, 45, 45, 45, 45, 97, 97, 1780, 0, 97, 97, 97, 97, 97, 97, 0, 0, 97, 97, 0, 97, 97, 97, 45, 45, 2027, 2028, 45, 45, 67, 67, 2031, 2032, 67, 45, 45, 1804, 45, 45, 45, 45, 45, 45, 45, 45, 67, 67, 67, 67, 67, 67, 1917, 67, 67, 67, 67, 67, 67, 67, 1819, 67, 67, 67, 67, 67, 67, 67, 67, 97, 97, 97, 1708, 97, 97, 97, 97, 97, 45, 45, 1862, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 497, 67, 67, 67, 1877, 97, 97, 97, 97, 97, 0, 0, 0, 97, 97, 97, 97, 0, 0, 97, 97, 97, 97, 97, 1839, 0, 0, 97, 97, 97, 97, 1936, 0, 0, 97, 97, 97, 97, 97, 97, 1943, 1944, 1945, 45, 45, 45, 45, 670, 45, 45, 45, 45, 674, 45, 45, 45, 45, 678, 45, 1948, 45, 1950, 45, 45, 45, 45, 1955, 1956, 1957, 67, 67, 67, 1960, 67, 1962, 67, 67, 67, 67, 1967, 1968, 1969, 97, 0, 0, 0, 97, 97, 1974, 97, 0, 1936, 0, 97, 97, 97, 97, 97, 97, 45, 45, 45, 45, 45, 45, 45, 45, 1906, 0, 1977, 97, 97, 97, 97, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 1746, 45, 45, 45, 45, 2011, 67, 67, 2013, 67, 67, 67, 2017, 97, 97, 0, 0, 2021, 97, 8192, 97, 97, 2025, 45, 45, 45, 45, 45, 45, 67, 67, 67, 67, 67, 1916, 67, 67, 67, 67, 0, 94242, 0, 0, 0, 38, 102439, 0, 0, 106538, 98347, 28809, 45, 45, 140, 45, 45, 45, 1180, 45, 45, 45, 45, 1184, 45, 45, 45, 45, 45, 45, 45, 387, 45, 392, 45, 45, 396, 45, 45, 399, 45, 45, 67, 207, 67, 67, 67, 67, 67, 67, 236, 67, 67, 67, 67, 67, 67, 67, 800, 67, 67, 67, 67, 67, 67, 67, 67, 67, 1603, 67, 67, 67, 67, 67, 0, 97, 97, 287, 97, 97, 97, 97, 97, 97, 316, 97, 97, 97, 97, 97, 97, 0, 45, 45, 45, 45, 45, 45, 45, 1656, 1657, 45, 376, 45, 45, 45, 45, 45, 388, 45, 45, 45, 45, 45, 45, 45, 45, 1406, 45, 45, 45, 45, 45, 45, 45, 67, 67, 67, 67, 462, 67, 67, 67, 67, 67, 474, 67, 67, 67, 67, 67, 67, 67, 817, 67, 67, 67, 67, 25398, 542, 13112, 544, 97, 97, 97, 97, 559, 97, 97, 97, 97, 97, 571, 97, 97, 97, 97, 97, 97, 896, 97, 97, 97, 900, 97, 97, 97, 97, 97, 97, 912, 914, 97, 97, 97, 97, 97, 0, 0, 0, 45, 45, 45, 45, 45, 45, 45, 45, 391, 45, 45, 45, 45, 45, 45, 45, 45, 713, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 662, 45, 1140, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 636, 67, 67, 1283, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 513, 67, 67, 1363, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 889, 97, 97, 97, 1714, 0, 97, 97, 97, 97, 97, 97, 97, 97, 97, 0, 0, 926, 45, 45, 45, 45, 45, 45, 45, 45, 672, 45, 45, 45, 45, 45, 45, 45, 45, 686, 45, 45, 45, 45, 45, 45, 45, 45, 944, 45, 45, 45, 45, 45, 45, 45, 45, 1676, 45, 45, 45, 45, 45, 45, 67, 97, 97, 97, 1833, 0, 97, 97, 97, 97, 97, 0, 0, 0, 97, 97, 97, 97, 97, 97, 45, 45, 45, 45, 1902, 45, 45, 45, 45, 45, 957, 45, 45, 45, 45, 961, 45, 963, 45, 45, 45, 67, 97, 2034, 0, 97, 97, 97, 97, 97, 2040, 45, 45, 45, 2042, 67, 67, 67, 67, 67, 67, 1574, 67, 67, 67, 67, 67, 1578, 67, 67, 67, 67, 67, 67, 799, 67, 67, 67, 804, 67, 67, 67, 67, 67, 67, 67, 1298, 0, 0, 0, 1304, 0, 0, 0, 1310, 132, 94242, 0, 0, 0, 38, 102439, 0, 0, 106538, 98347, 28809, 45, 45, 45, 45, 45, 1414, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 428, 45, 45, 45, 45, 45, 57889, 0, 0, 54074, 54074, 550, 831, 97, 97, 97, 97, 97, 97, 97, 97, 97, 568, 97, 97, 97, 97, 578, 97, 45, 45, 968, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 1228, 45, 45, 67, 67, 67, 67, 67, 25398, 1082, 13112, 1086, 54074, 1090, 0, 0, 0, 0, 0, 0, 364, 0, 0, 0, 139, 2158592, 2158592, 2158592, 2404352, 2412544, 67, 67, 67, 67, 1464, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 510, 67, 67, 67, 67, 97, 97, 97, 97, 1519, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 918, 97, 0, 0, 0, 0, 1528, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 976, 45, 1554, 45, 45, 45, 45, 45, 45, 45, 45, 1562, 45, 45, 1565, 45, 45, 45, 45, 683, 45, 45, 45, 687, 45, 45, 692, 45, 45, 45, 45, 45, 1953, 45, 67, 67, 67, 67, 67, 67, 67, 67, 67, 1014, 67, 67, 67, 67, 67, 67, 1568, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 0, 67, 67, 67, 67, 67, 1585, 67, 67, 67, 67, 67, 67, 67, 67, 67, 1594, 97, 97, 1649, 97, 97, 97, 0, 45, 45, 1653, 45, 45, 45, 45, 45, 45, 383, 45, 45, 45, 45, 45, 45, 45, 45, 45, 986, 45, 45, 45, 45, 45, 45, 45, 45, 1670, 45, 1672, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 67, 736, 67, 67, 67, 67, 67, 741, 67, 67, 67, 1680, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 1074, 67, 67, 67, 1692, 67, 67, 67, 67, 67, 67, 67, 1697, 67, 1699, 67, 67, 67, 67, 67, 67, 1012, 67, 67, 67, 67, 67, 67, 67, 67, 67, 468, 475, 67, 67, 67, 67, 67, 67, 1769, 67, 67, 67, 67, 67, 67, 67, 97, 97, 97, 97, 97, 97, 97, 624, 97, 97, 97, 97, 97, 97, 634, 97, 97, 1792, 97, 97, 97, 97, 97, 97, 97, 45, 45, 45, 45, 45, 45, 45, 958, 45, 45, 45, 45, 45, 45, 964, 45, 150, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 977, 204, 45, 67, 67, 67, 217, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 787, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 271, 67, 0, 24850, 12564, 0, 0, 0, 0, 28809, 53531, 97, 97, 97, 97, 351, 97, 0, 40976, 0, 18, 18, 24, 24, 27, 27, 27, 45, 45, 938, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 1398, 45, 45, 45, 153, 45, 161, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 660, 661, 45, 45, 205, 45, 67, 67, 67, 67, 220, 67, 228, 67, 67, 67, 67, 67, 67, 67, 0, 0, 0, 0, 0, 280, 94, 0, 0, 67, 67, 67, 67, 67, 272, 67, 0, 24850, 12564, 0, 0, 0, 0, 28809, 53531, 97, 97, 97, 97, 352, 97, 0, 40976, 0, 18, 18, 24, 24, 27, 27, 27, 45, 439, 45, 45, 45, 45, 45, 445, 45, 45, 45, 452, 45, 45, 67, 67, 212, 216, 67, 67, 67, 67, 67, 241, 67, 246, 67, 252, 67, 67, 486, 67, 67, 67, 67, 67, 67, 67, 494, 67, 67, 67, 67, 67, 67, 67, 1245, 67, 67, 67, 67, 67, 67, 67, 67, 1013, 67, 67, 1016, 67, 67, 67, 67, 67, 521, 67, 67, 525, 67, 67, 67, 67, 67, 531, 67, 67, 67, 538, 67, 0, 0, 2046, 97, 97, 97, 45, 45, 67, 67, 0, 0, 97, 97, 45, 45, 45, 1192, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 1418, 45, 45, 1421, 97, 97, 583, 97, 97, 97, 97, 97, 97, 97, 591, 97, 97, 97, 97, 97, 97, 913, 97, 97, 97, 97, 97, 97, 0, 0, 0, 45, 45, 45, 45, 45, 45, 45, 1384, 97, 618, 97, 97, 622, 97, 97, 97, 97, 97, 628, 97, 97, 97, 635, 97, 18, 131427, 0, 0, 0, 639, 0, 132, 362, 0, 0, 365, 29315, 367, 0, 921, 29315, 0, 0, 0, 0, 45, 45, 45, 45, 932, 45, 45, 45, 45, 45, 1544, 45, 45, 45, 45, 45, 1550, 45, 45, 45, 45, 45, 1194, 45, 1196, 45, 45, 45, 45, 45, 45, 45, 45, 999, 45, 45, 45, 45, 45, 67, 67, 45, 45, 667, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 1408, 45, 45, 45, 696, 45, 45, 45, 701, 45, 45, 45, 45, 45, 45, 45, 45, 710, 45, 45, 45, 1220, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 194, 45, 45, 45, 729, 45, 45, 45, 45, 45, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 797, 67, 67, 67, 67, 67, 67, 805, 67, 67, 67, 67, 67, 67, 67, 1587, 67, 1589, 67, 67, 67, 67, 67, 67, 67, 67, 1763, 67, 67, 67, 67, 67, 67, 67, 0, 0, 0, 0, 0, 0, 2162968, 0, 0, 67, 67, 67, 67, 67, 814, 816, 67, 67, 67, 67, 67, 25398, 542, 13112, 544, 67, 67, 1008, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 1020, 67, 0, 97, 45, 67, 0, 97, 45, 67, 0, 97, 45, 67, 97, 0, 0, 97, 97, 97, 97, 97, 45, 45, 45, 45, 67, 67, 67, 67, 1429, 67, 1430, 67, 67, 67, 67, 67, 1062, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 518, 1076, 67, 67, 67, 67, 25398, 0, 13112, 0, 54074, 0, 0, 0, 0, 0, 0, 0, 0, 28809, 0, 139, 45, 45, 45, 45, 45, 97, 97, 97, 97, 1102, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 1124, 97, 1126, 97, 97, 1114, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 1112, 97, 97, 1156, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 594, 97, 97, 97, 97, 1170, 97, 97, 97, 97, 0, 921, 0, 0, 0, 0, 0, 0, 45, 45, 45, 45, 1532, 45, 45, 45, 45, 1536, 45, 45, 45, 45, 45, 172, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 706, 45, 45, 709, 45, 45, 1177, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 1202, 45, 1204, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 1215, 45, 45, 45, 1232, 45, 45, 45, 45, 45, 45, 45, 67, 1237, 67, 67, 67, 67, 67, 67, 1053, 1054, 67, 67, 67, 67, 67, 67, 1061, 67, 67, 1282, 67, 67, 67, 67, 67, 67, 67, 67, 67, 1289, 67, 67, 67, 1292, 97, 97, 97, 97, 1339, 97, 97, 97, 97, 97, 97, 1344, 97, 97, 97, 97, 45, 1849, 45, 1851, 45, 45, 45, 45, 45, 45, 45, 45, 721, 45, 45, 45, 45, 45, 726, 45, 1385, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 1188, 45, 45, 1401, 1402, 45, 45, 45, 45, 1405, 45, 45, 45, 45, 45, 45, 45, 45, 1752, 45, 45, 45, 45, 45, 67, 67, 1410, 45, 45, 45, 1413, 45, 1415, 45, 45, 45, 45, 45, 45, 1419, 45, 45, 45, 45, 1806, 45, 45, 45, 45, 45, 45, 67, 67, 67, 67, 67, 67, 67, 97, 97, 2019, 0, 97, 67, 67, 67, 1452, 67, 67, 67, 67, 67, 67, 67, 67, 1457, 67, 67, 67, 67, 67, 67, 1259, 67, 67, 67, 67, 67, 67, 1264, 67, 67, 1460, 67, 1462, 67, 67, 67, 67, 67, 67, 1466, 67, 67, 67, 67, 67, 67, 67, 67, 1588, 67, 67, 67, 67, 67, 67, 67, 0, 1300, 0, 0, 0, 1306, 0, 0, 0, 97, 97, 97, 1506, 97, 97, 97, 97, 97, 97, 97, 97, 1512, 97, 97, 97, 0, 1728, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 901, 97, 97, 97, 97, 1515, 97, 1517, 97, 97, 97, 97, 97, 97, 1521, 97, 97, 97, 97, 97, 97, 0, 45, 1652, 45, 45, 45, 1655, 45, 45, 45, 45, 45, 1542, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 1552, 1553, 45, 45, 45, 1556, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 693, 45, 45, 45, 67, 67, 67, 67, 1572, 67, 67, 67, 67, 1576, 67, 67, 67, 67, 67, 67, 67, 67, 1602, 67, 67, 1605, 67, 67, 67, 0, 67, 1582, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 1580, 67, 67, 1596, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 0, 542, 0, 544, 67, 67, 67, 67, 1759, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 533, 67, 67, 67, 67, 67, 67, 67, 1770, 67, 67, 67, 67, 67, 97, 97, 97, 97, 97, 97, 1777, 97, 97, 97, 1793, 97, 97, 97, 97, 97, 45, 45, 45, 45, 45, 45, 45, 998, 45, 45, 1001, 1002, 45, 45, 67, 67, 45, 1861, 45, 67, 67, 67, 67, 67, 67, 67, 67, 1871, 67, 1873, 1874, 67, 0, 97, 45, 67, 0, 97, 45, 67, 16384, 97, 45, 67, 97, 0, 0, 0, 1473, 0, 1082, 0, 0, 0, 1475, 0, 1086, 0, 0, 0, 1477, 1876, 67, 97, 97, 97, 97, 97, 1883, 0, 1885, 97, 97, 97, 1889, 0, 0, 0, 286, 0, 0, 0, 286, 0, 2367488, 2158592, 2158592, 2158592, 2158592, 2158592, 2158592, 0, 40976, 0, 18, 18, 24, 24, 126, 126, 126, 2053, 0, 2055, 45, 67, 0, 97, 45, 67, 0, 97, 45, 67, 97, 0, 0, 97, 97, 97, 2039, 97, 45, 45, 45, 45, 67, 67, 67, 67, 67, 226, 67, 67, 67, 67, 67, 67, 67, 67, 1246, 67, 67, 1249, 1250, 67, 67, 67, 132, 94242, 0, 0, 0, 38, 102439, 0, 0, 106538, 98347, 28809, 45, 45, 141, 45, 45, 45, 1403, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 1186, 45, 45, 1189, 45, 45, 155, 45, 45, 45, 45, 45, 45, 45, 45, 45, 191, 45, 45, 45, 45, 700, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 1753, 45, 45, 45, 67, 67, 45, 45, 67, 208, 67, 67, 67, 222, 67, 67, 67, 67, 67, 67, 67, 67, 67, 1764, 67, 67, 67, 67, 67, 67, 67, 258, 67, 67, 67, 67, 67, 0, 24850, 12564, 0, 0, 0, 0, 28809, 53531, 97, 97, 288, 97, 97, 97, 302, 97, 97, 97, 97, 97, 97, 97, 97, 97, 627, 97, 97, 97, 97, 97, 97, 338, 97, 97, 97, 97, 97, 0, 40976, 0, 18, 18, 24, 24, 27, 27, 27, 131427, 0, 0, 0, 0, 362, 0, 365, 28809, 367, 139, 45, 370, 45, 45, 45, 45, 716, 45, 45, 45, 45, 45, 722, 45, 45, 45, 45, 45, 45, 1912, 67, 67, 67, 67, 67, 67, 67, 67, 67, 819, 67, 67, 25398, 542, 13112, 544, 45, 403, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 1409, 45, 67, 67, 67, 67, 489, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 771, 67, 67, 67, 67, 520, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 534, 67, 67, 67, 67, 67, 67, 1271, 67, 67, 67, 1274, 67, 67, 67, 1279, 67, 67, 24850, 24850, 12564, 12564, 0, 57889, 0, 0, 0, 53531, 53531, 367, 286, 97, 553, 97, 97, 97, 97, 586, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 1138, 97, 97, 97, 97, 617, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 631, 97, 97, 97, 0, 1834, 97, 97, 97, 97, 97, 0, 0, 0, 97, 97, 97, 97, 97, 353, 0, 40976, 0, 18, 18, 24, 24, 27, 27, 27, 45, 45, 668, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 724, 45, 45, 45, 45, 45, 682, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 949, 45, 45, 45, 67, 67, 747, 748, 67, 67, 67, 67, 755, 67, 67, 67, 67, 67, 67, 67, 0, 0, 0, 1302, 0, 0, 0, 1308, 0, 67, 794, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 1701, 67, 97, 97, 97, 845, 846, 97, 97, 97, 97, 853, 97, 97, 97, 97, 97, 97, 0, 40976, 0, 18, 18, 24, 24, 27, 27, 27, 97, 97, 892, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 610, 97, 97, 45, 992, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 67, 67, 67, 1239, 67, 67, 67, 1063, 67, 67, 67, 67, 67, 1068, 67, 67, 67, 67, 67, 67, 67, 0, 0, 1301, 0, 0, 0, 1307, 0, 0, 97, 1141, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 1152, 97, 97, 0, 0, 97, 97, 2001, 0, 97, 2003, 97, 97, 97, 45, 45, 45, 1739, 45, 45, 45, 1742, 45, 45, 45, 45, 45, 97, 97, 97, 97, 1157, 97, 97, 97, 97, 97, 1162, 97, 97, 97, 97, 97, 97, 1145, 97, 97, 97, 97, 97, 1151, 97, 97, 97, 1253, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 539, 45, 1423, 45, 45, 67, 67, 67, 67, 67, 67, 67, 1431, 67, 67, 67, 67, 67, 67, 67, 1695, 67, 67, 67, 67, 67, 1700, 67, 1702, 67, 67, 1439, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 514, 67, 67, 97, 97, 1492, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 611, 97, 97, 1703, 67, 67, 67, 67, 67, 67, 97, 97, 97, 97, 97, 97, 97, 97, 97, 852, 97, 97, 97, 97, 97, 97, 45, 1949, 45, 1951, 45, 45, 45, 67, 67, 67, 67, 67, 67, 67, 1961, 67, 0, 97, 45, 67, 0, 97, 2060, 2061, 0, 2062, 45, 67, 97, 0, 0, 2036, 97, 97, 97, 97, 45, 45, 45, 45, 67, 67, 67, 67, 67, 223, 67, 67, 237, 67, 67, 67, 67, 67, 67, 67, 1272, 67, 67, 67, 67, 67, 67, 67, 67, 507, 67, 67, 67, 67, 67, 67, 67, 1963, 67, 67, 67, 97, 97, 97, 97, 0, 1972, 0, 97, 97, 97, 1975, 0, 921, 29315, 0, 0, 0, 0, 45, 45, 45, 931, 45, 45, 45, 45, 45, 407, 45, 45, 45, 45, 45, 45, 45, 45, 45, 417, 45, 45, 1989, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 1996, 97, 18, 131427, 0, 0, 360, 0, 0, 0, 362, 0, 0, 365, 29315, 367, 0, 921, 29315, 0, 0, 0, 0, 45, 45, 930, 45, 45, 45, 45, 45, 45, 444, 45, 45, 45, 45, 45, 45, 45, 67, 67, 97, 97, 1998, 0, 97, 97, 97, 0, 97, 97, 97, 97, 97, 45, 45, 45, 45, 45, 45, 1985, 45, 1986, 45, 45, 45, 156, 45, 45, 170, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 675, 45, 45, 45, 45, 679, 131427, 0, 358, 0, 0, 362, 0, 365, 28809, 367, 139, 45, 45, 45, 45, 45, 381, 45, 45, 45, 45, 45, 45, 45, 45, 45, 400, 45, 45, 419, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 436, 67, 67, 67, 67, 67, 505, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 820, 67, 25398, 542, 13112, 544, 67, 67, 522, 67, 67, 67, 67, 67, 529, 67, 67, 67, 67, 67, 67, 67, 0, 1299, 0, 0, 0, 1305, 0, 0, 0, 97, 97, 619, 97, 97, 97, 97, 97, 626, 97, 97, 97, 97, 97, 97, 97, 1105, 97, 97, 97, 97, 1109, 97, 97, 97, 67, 67, 67, 67, 749, 67, 67, 67, 67, 67, 67, 67, 67, 67, 760, 67, 0, 97, 45, 67, 2058, 97, 45, 67, 0, 97, 45, 67, 97, 0, 0, 97, 97, 97, 97, 97, 45, 45, 45, 2041, 67, 67, 67, 67, 67, 780, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 516, 67, 67, 97, 97, 97, 878, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 1629, 97, 0, 45, 979, 45, 45, 45, 45, 984, 45, 45, 45, 45, 45, 45, 45, 45, 45, 1198, 45, 45, 45, 45, 45, 45, 67, 1023, 67, 67, 67, 67, 1028, 67, 67, 67, 67, 67, 67, 67, 67, 67, 470, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 25398, 0, 13112, 0, 54074, 0, 0, 0, 1094, 0, 0, 0, 1092, 1315, 0, 0, 0, 0, 97, 97, 97, 97, 97, 97, 97, 97, 97, 1486, 97, 1489, 97, 97, 97, 1117, 97, 97, 97, 97, 1122, 97, 97, 97, 97, 97, 97, 97, 1146, 97, 97, 97, 97, 97, 97, 97, 97, 881, 97, 97, 97, 886, 97, 97, 97, 1311, 0, 0, 0, 0, 0, 0, 0, 0, 97, 97, 97, 97, 97, 97, 97, 1615, 97, 97, 97, 97, 97, 1619, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 1631, 97, 97, 1847, 97, 45, 45, 45, 45, 1852, 45, 45, 45, 45, 45, 45, 45, 1235, 45, 45, 45, 67, 67, 67, 67, 67, 1868, 67, 67, 67, 1872, 67, 67, 67, 67, 67, 97, 97, 97, 97, 1882, 0, 0, 0, 97, 97, 97, 97, 0, 1891, 67, 67, 67, 67, 67, 97, 97, 97, 97, 97, 1929, 0, 0, 97, 97, 97, 97, 97, 97, 45, 1900, 45, 1901, 45, 45, 45, 1905, 45, 67, 2054, 97, 45, 67, 0, 97, 45, 67, 0, 97, 45, 67, 97, 0, 0, 97, 2037, 2038, 97, 97, 45, 45, 45, 45, 67, 67, 67, 67, 1867, 67, 67, 67, 67, 67, 67, 67, 67, 67, 1774, 97, 97, 97, 97, 97, 97, 0, 94242, 0, 0, 0, 38, 102439, 0, 0, 106538, 98347, 28809, 45, 45, 142, 45, 45, 45, 1412, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 432, 45, 45, 45, 45, 45, 157, 45, 45, 171, 45, 45, 45, 182, 45, 45, 45, 45, 200, 45, 45, 45, 1543, 45, 45, 45, 45, 45, 45, 45, 45, 1551, 45, 45, 45, 45, 1181, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 1211, 45, 45, 45, 1214, 45, 45, 45, 67, 209, 67, 67, 67, 224, 67, 67, 238, 67, 67, 67, 249, 67, 0, 97, 2056, 2057, 0, 2059, 45, 67, 0, 97, 45, 67, 97, 0, 0, 1937, 97, 97, 97, 97, 97, 97, 45, 45, 45, 45, 45, 45, 1741, 45, 45, 45, 45, 45, 45, 67, 67, 67, 267, 67, 67, 67, 0, 24850, 12564, 0, 0, 0, 0, 28809, 53531, 97, 97, 289, 97, 97, 97, 304, 97, 97, 318, 97, 97, 97, 329, 97, 97, 0, 0, 97, 1783, 97, 97, 97, 97, 0, 0, 97, 97, 0, 97, 97, 97, 45, 2026, 45, 45, 45, 45, 67, 2030, 67, 67, 67, 67, 67, 67, 1041, 67, 67, 67, 67, 67, 67, 67, 67, 67, 1044, 67, 67, 67, 67, 67, 67, 97, 97, 347, 97, 97, 97, 0, 40976, 0, 18, 18, 24, 24, 27, 27, 27, 45, 666, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 1420, 45, 57889, 0, 0, 54074, 54074, 550, 0, 97, 97, 97, 97, 97, 97, 97, 97, 840, 67, 1007, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 759, 67, 67, 67, 67, 67, 67, 67, 1052, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 1031, 67, 67, 67, 67, 67, 97, 97, 97, 1101, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 592, 97, 97, 97, 1190, 45, 45, 45, 45, 45, 1195, 45, 1197, 45, 45, 45, 45, 1201, 45, 45, 45, 45, 1952, 45, 45, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 250, 67, 67, 67, 1255, 67, 1257, 67, 67, 67, 67, 1261, 67, 67, 67, 67, 67, 67, 67, 67, 1685, 67, 67, 67, 67, 67, 67, 67, 0, 24851, 12565, 0, 0, 0, 0, 28809, 53532, 67, 67, 1267, 67, 67, 67, 67, 67, 67, 1273, 67, 67, 67, 67, 67, 67, 67, 67, 1696, 67, 67, 67, 67, 67, 67, 67, 0, 0, 0, 0, 0, 0, 2162688, 0, 0, 1281, 67, 67, 67, 67, 1285, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 1070, 67, 67, 67, 67, 67, 1335, 97, 1337, 97, 97, 97, 97, 1341, 97, 97, 97, 97, 97, 97, 97, 97, 882, 97, 97, 97, 97, 97, 97, 97, 1347, 97, 97, 97, 97, 97, 97, 1353, 97, 97, 97, 97, 97, 97, 1361, 97, 18, 131427, 0, 638, 0, 0, 0, 0, 362, 0, 0, 365, 29315, 367, 0, 544, 0, 550, 0, 2158592, 2158592, 2158592, 2158592, 2158592, 2158592, 2158592, 2158592, 2473984, 2158592, 2158592, 2158592, 2990080, 2158592, 2158592, 2207744, 2207744, 2482176, 2207744, 2207744, 2207744, 2207744, 2207744, 2207744, 2207744, 0, 0, 0, 0, 0, 0, 2162688, 0, 53530, 97, 97, 97, 1365, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 608, 97, 97, 97, 45, 45, 1424, 45, 1425, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 1058, 67, 67, 67, 67, 45, 1555, 45, 45, 1557, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 707, 45, 45, 45, 45, 67, 67, 1570, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 773, 67, 67, 1595, 67, 67, 1597, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 139, 2158592, 2158592, 2158592, 2404352, 2412544, 97, 97, 97, 1636, 97, 97, 97, 1639, 97, 97, 1641, 97, 97, 97, 97, 97, 97, 1173, 0, 921, 0, 0, 0, 0, 0, 0, 45, 67, 67, 67, 1693, 67, 67, 67, 67, 67, 67, 67, 1698, 67, 67, 67, 67, 67, 67, 67, 1773, 67, 97, 97, 97, 97, 97, 97, 97, 625, 97, 97, 97, 97, 97, 97, 97, 97, 850, 97, 97, 97, 97, 97, 97, 97, 97, 880, 97, 97, 97, 97, 97, 97, 97, 97, 1106, 97, 97, 97, 97, 97, 97, 97, 1860, 45, 45, 67, 67, 1865, 67, 67, 67, 67, 1870, 67, 67, 67, 67, 1875, 67, 67, 97, 97, 1880, 97, 97, 0, 0, 0, 97, 97, 1888, 97, 0, 0, 0, 1938, 97, 97, 97, 97, 97, 45, 45, 45, 45, 45, 45, 1854, 45, 45, 45, 45, 45, 45, 45, 1909, 45, 45, 1911, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 1248, 67, 67, 67, 67, 67, 67, 1922, 67, 67, 1924, 97, 97, 97, 97, 97, 0, 0, 0, 97, 97, 97, 97, 97, 1898, 45, 45, 45, 45, 45, 45, 1904, 45, 45, 67, 67, 67, 67, 97, 97, 97, 97, 0, 0, 16384, 97, 97, 97, 97, 0, 97, 97, 97, 97, 97, 97, 97, 97, 97, 0, 1724, 2008, 2009, 45, 45, 67, 67, 67, 2014, 2015, 67, 67, 97, 97, 0, 0, 97, 97, 97, 0, 97, 97, 97, 97, 97, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 2022, 0, 2023, 97, 97, 45, 45, 45, 45, 45, 45, 67, 67, 67, 67, 67, 67, 1869, 67, 67, 67, 67, 67, 67, 0, 94242, 0, 0, 0, 38, 102439, 0, 0, 106538, 98347, 28809, 45, 45, 45, 147, 151, 154, 45, 162, 45, 45, 176, 178, 181, 45, 45, 45, 192, 196, 45, 45, 45, 45, 2012, 67, 67, 67, 67, 67, 67, 2018, 97, 0, 0, 97, 1978, 97, 97, 97, 1982, 45, 45, 45, 45, 45, 45, 45, 45, 45, 972, 973, 45, 45, 45, 45, 45, 67, 259, 263, 67, 67, 67, 67, 0, 24850, 12564, 0, 0, 0, 0, 28809, 53531, 97, 97, 97, 294, 298, 301, 97, 309, 97, 97, 323, 325, 328, 97, 97, 97, 97, 97, 560, 97, 97, 97, 569, 97, 97, 97, 97, 97, 97, 306, 97, 97, 97, 97, 97, 97, 97, 97, 97, 1624, 97, 97, 97, 97, 97, 97, 97, 0, 921, 0, 1175, 0, 0, 0, 0, 45, 339, 343, 97, 97, 97, 97, 0, 40976, 0, 18, 18, 24, 24, 27, 27, 27, 67, 67, 503, 67, 67, 67, 67, 67, 67, 67, 67, 67, 512, 67, 67, 519, 97, 97, 600, 97, 97, 97, 97, 97, 97, 97, 97, 97, 609, 97, 97, 616, 45, 649, 45, 45, 45, 45, 45, 654, 45, 45, 45, 45, 45, 45, 45, 45, 1393, 45, 45, 45, 45, 45, 45, 45, 45, 1209, 45, 45, 45, 45, 45, 45, 45, 67, 763, 67, 67, 67, 67, 67, 67, 67, 67, 770, 67, 67, 67, 774, 67, 0, 2045, 97, 97, 97, 97, 45, 45, 67, 67, 0, 0, 97, 97, 45, 45, 45, 994, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 67, 67, 213, 67, 219, 67, 67, 232, 67, 242, 67, 247, 67, 67, 67, 779, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 1018, 67, 67, 67, 67, 811, 67, 67, 67, 67, 67, 67, 67, 67, 67, 25398, 542, 13112, 544, 57889, 0, 0, 54074, 54074, 550, 0, 97, 834, 97, 97, 97, 97, 97, 839, 97, 18, 131427, 0, 638, 0, 0, 0, 0, 362, 0, 0, 365, 29315, 367, 645, 97, 97, 861, 97, 97, 97, 97, 97, 97, 97, 97, 868, 97, 97, 97, 872, 97, 97, 877, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 613, 97, 97, 97, 97, 97, 909, 97, 97, 97, 97, 97, 97, 97, 97, 97, 0, 0, 0, 18, 18, 24, 24, 27, 27, 27, 1036, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 1047, 67, 67, 67, 1050, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 1033, 67, 67, 67, 97, 97, 1130, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 638, 0, 0, 67, 67, 67, 1295, 67, 67, 67, 0, 0, 0, 0, 0, 0, 0, 0, 0, 97, 1317, 97, 97, 97, 97, 97, 97, 1375, 97, 97, 97, 0, 0, 0, 45, 1379, 45, 45, 45, 45, 45, 45, 422, 45, 45, 45, 429, 431, 45, 45, 45, 45, 0, 1090, 0, 0, 97, 1479, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 1357, 97, 97, 97, 97, 97, 97, 97, 97, 97, 1716, 97, 97, 97, 97, 97, 97, 97, 97, 97, 1723, 0, 921, 29315, 0, 0, 0, 0, 45, 929, 45, 45, 45, 45, 45, 45, 45, 1392, 45, 45, 45, 45, 45, 45, 45, 45, 45, 960, 45, 45, 45, 45, 45, 45, 97, 97, 97, 1738, 45, 45, 45, 45, 45, 45, 45, 1743, 45, 45, 45, 45, 166, 45, 45, 45, 45, 184, 186, 45, 45, 197, 45, 45, 97, 1779, 0, 0, 97, 97, 97, 97, 97, 97, 0, 0, 97, 97, 0, 97, 18, 131427, 0, 638, 0, 0, 0, 0, 362, 0, 640, 365, 29315, 367, 0, 921, 29315, 0, 0, 0, 0, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 1537, 45, 45, 45, 45, 45, 1803, 45, 45, 45, 45, 45, 1809, 45, 45, 45, 67, 67, 67, 1814, 67, 67, 67, 67, 67, 67, 1821, 67, 67, 67, 67, 67, 67, 97, 97, 97, 97, 97, 0, 0, 0, 97, 97, 97, 97, 0, 0, 67, 67, 67, 1818, 67, 67, 67, 67, 67, 1824, 67, 67, 67, 97, 97, 97, 97, 97, 0, 0, 0, 97, 97, 97, 97, 1890, 0, 1829, 97, 97, 0, 0, 97, 97, 1836, 97, 97, 0, 0, 0, 97, 97, 97, 97, 1981, 45, 45, 45, 45, 45, 45, 45, 45, 45, 1987, 1845, 97, 97, 97, 45, 45, 45, 45, 45, 1853, 45, 45, 45, 1857, 45, 45, 45, 67, 1864, 67, 1866, 67, 67, 67, 67, 67, 67, 67, 67, 67, 97, 97, 97, 97, 97, 97, 97, 1710, 1711, 67, 67, 97, 97, 97, 97, 97, 0, 0, 0, 1886, 97, 97, 97, 0, 0, 97, 97, 97, 97, 1838, 0, 0, 0, 97, 1843, 97, 0, 1893, 97, 97, 97, 97, 97, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 1745, 45, 45, 67, 67, 67, 67, 67, 97, 97, 97, 97, 97, 0, 0, 1931, 97, 97, 97, 97, 97, 588, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 629, 97, 97, 97, 97, 97, 67, 2044, 0, 97, 97, 97, 97, 45, 45, 67, 67, 0, 0, 97, 97, 45, 45, 45, 1660, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 453, 45, 455, 67, 67, 67, 67, 268, 67, 67, 67, 0, 24850, 12564, 0, 0, 0, 0, 28809, 53531, 97, 97, 348, 97, 97, 97, 0, 40976, 0, 18, 18, 24, 24, 27, 27, 27, 131427, 0, 359, 0, 0, 362, 0, 365, 28809, 367, 139, 45, 45, 45, 45, 45, 421, 45, 45, 45, 45, 45, 45, 45, 434, 45, 45, 695, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 1667, 45, 0, 921, 29315, 0, 925, 0, 0, 45, 45, 45, 45, 45, 45, 45, 45, 45, 1811, 45, 67, 67, 67, 67, 67, 67, 1037, 67, 1039, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 1277, 67, 67, 67, 67, 67, 67, 67, 67, 25398, 0, 13112, 0, 54074, 0, 0, 0, 1095, 0, 0, 0, 1096, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 869, 97, 97, 97, 97, 97, 97, 1131, 97, 1133, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 1370, 97, 97, 97, 97, 97, 1312, 0, 0, 0, 0, 1096, 0, 0, 0, 97, 97, 97, 97, 97, 97, 97, 1327, 97, 97, 97, 97, 97, 1332, 97, 97, 97, 1830, 97, 0, 0, 97, 97, 97, 97, 97, 0, 0, 0, 97, 97, 97, 1896, 97, 97, 45, 45, 45, 45, 45, 45, 45, 45, 45, 1548, 45, 45, 45, 45, 45, 45, 133, 94242, 0, 0, 0, 38, 102439, 0, 0, 106538, 98347, 28809, 45, 45, 45, 45, 380, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 401, 45, 45, 158, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 1200, 45, 45, 45, 45, 206, 67, 67, 67, 67, 67, 225, 67, 67, 67, 67, 67, 67, 67, 67, 754, 67, 67, 67, 67, 67, 67, 67, 57889, 0, 0, 54074, 54074, 550, 832, 97, 97, 97, 97, 97, 97, 97, 97, 97, 1342, 97, 97, 97, 97, 97, 97, 67, 67, 67, 67, 67, 25398, 1083, 13112, 1087, 54074, 1091, 0, 0, 0, 0, 0, 0, 1316, 0, 831, 97, 97, 97, 97, 97, 97, 97, 1174, 921, 0, 1175, 0, 0, 0, 0, 45, 0, 94242, 0, 0, 0, 38, 102439, 0, 0, 106538, 98347, 28809, 45, 45, 45, 148, 67, 67, 264, 67, 67, 67, 67, 0, 24850, 12564, 0, 0, 0, 0, 28809, 53531, 97, 97, 97, 295, 97, 97, 97, 97, 313, 97, 97, 97, 97, 331, 333, 97, 18, 131427, 356, 638, 0, 0, 0, 0, 362, 0, 0, 365, 0, 367, 0, 45, 45, 1530, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 988, 45, 45, 45, 97, 344, 97, 97, 97, 97, 0, 40976, 0, 18, 18, 24, 24, 27, 27, 27, 402, 404, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 1756, 67, 438, 45, 45, 45, 45, 45, 45, 45, 45, 449, 450, 45, 45, 45, 67, 67, 214, 218, 221, 67, 229, 67, 67, 243, 245, 248, 67, 67, 67, 67, 67, 488, 490, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 1071, 67, 1073, 67, 67, 67, 67, 67, 524, 67, 67, 67, 67, 67, 67, 67, 67, 535, 536, 67, 67, 67, 67, 67, 67, 1683, 1684, 67, 67, 67, 67, 1688, 1689, 67, 67, 67, 67, 67, 67, 1586, 67, 67, 67, 67, 67, 67, 67, 67, 67, 469, 67, 67, 67, 67, 67, 67, 97, 97, 97, 585, 587, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 1163, 97, 97, 97, 97, 97, 97, 97, 621, 97, 97, 97, 97, 97, 97, 97, 97, 632, 633, 97, 97, 0, 0, 1782, 97, 97, 97, 97, 97, 0, 0, 97, 97, 0, 97, 712, 45, 45, 45, 717, 45, 45, 45, 45, 45, 45, 45, 45, 725, 45, 45, 45, 163, 167, 173, 177, 45, 45, 45, 45, 45, 193, 45, 45, 45, 45, 982, 45, 45, 45, 45, 45, 45, 987, 45, 45, 45, 45, 45, 1558, 45, 1560, 45, 45, 45, 45, 45, 45, 45, 45, 704, 705, 45, 45, 45, 45, 45, 45, 45, 45, 731, 45, 45, 45, 67, 67, 67, 67, 67, 739, 67, 67, 67, 67, 67, 67, 273, 0, 24850, 12564, 0, 0, 0, 0, 28809, 53531, 67, 67, 67, 764, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 1290, 67, 67, 67, 67, 67, 67, 812, 67, 67, 67, 67, 818, 67, 67, 67, 25398, 542, 13112, 544, 57889, 0, 0, 54074, 54074, 550, 0, 97, 97, 97, 97, 97, 837, 97, 97, 97, 97, 97, 602, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 1137, 97, 97, 97, 97, 97, 97, 97, 97, 97, 862, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 1627, 97, 97, 97, 0, 97, 97, 97, 97, 910, 97, 97, 97, 97, 916, 97, 97, 97, 0, 0, 0, 97, 97, 1940, 97, 97, 1942, 45, 45, 45, 45, 45, 45, 385, 45, 45, 45, 45, 395, 45, 45, 45, 45, 966, 45, 969, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 975, 45, 45, 45, 406, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 974, 45, 45, 45, 67, 67, 67, 67, 1010, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 1262, 67, 67, 67, 67, 67, 67, 67, 67, 67, 1040, 67, 1042, 67, 1045, 67, 67, 67, 67, 67, 67, 67, 97, 1706, 97, 97, 97, 1709, 97, 97, 97, 67, 67, 67, 67, 1051, 67, 67, 67, 67, 67, 1057, 67, 67, 67, 67, 67, 67, 67, 1443, 67, 67, 1446, 67, 67, 67, 67, 67, 67, 67, 1297, 0, 0, 0, 1303, 0, 0, 0, 1309, 67, 67, 67, 67, 1079, 25398, 0, 13112, 0, 54074, 0, 0, 0, 0, 0, 0, 0, 2158592, 2158592, 2158592, 2158592, 2158592, 2158592, 2158592, 2158592, 2158592, 2207744, 2207744, 2207744, 2207744, 2207744, 2572288, 2207744, 2207744, 2207744, 1098, 97, 97, 97, 97, 97, 1104, 97, 97, 97, 97, 97, 97, 97, 97, 97, 1356, 97, 97, 97, 97, 97, 97, 1128, 97, 97, 97, 97, 97, 97, 1134, 97, 1136, 97, 1139, 97, 97, 97, 97, 97, 97, 1622, 97, 97, 97, 97, 97, 97, 97, 97, 0, 921, 0, 0, 0, 1176, 0, 646, 45, 67, 67, 67, 1268, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 1469, 67, 67, 67, 97, 1348, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 1127, 97, 67, 1569, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 1448, 1449, 67, 1816, 67, 67, 67, 67, 67, 67, 67, 67, 67, 1825, 67, 67, 1827, 97, 97, 0, 1781, 97, 97, 97, 97, 97, 97, 0, 0, 97, 97, 0, 97, 97, 97, 1831, 0, 0, 97, 97, 97, 97, 97, 0, 0, 0, 97, 97, 97, 1980, 97, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 1395, 45, 45, 45, 45, 45, 97, 1846, 97, 97, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 1212, 45, 45, 45, 45, 45, 45, 2010, 45, 67, 67, 67, 67, 67, 2016, 67, 97, 97, 0, 0, 97, 97, 97, 0, 97, 97, 97, 97, 97, 45, 45, 2007, 0, 94242, 0, 0, 0, 38, 102439, 0, 0, 106538, 98347, 28809, 45, 45, 143, 45, 45, 45, 1671, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 67, 1813, 67, 67, 1815, 45, 45, 67, 210, 67, 67, 67, 67, 67, 67, 239, 67, 67, 67, 67, 67, 67, 67, 1454, 67, 67, 67, 67, 67, 67, 67, 67, 67, 1445, 67, 67, 67, 67, 67, 67, 97, 97, 290, 97, 97, 97, 97, 97, 97, 319, 97, 97, 97, 97, 97, 97, 303, 97, 97, 317, 97, 97, 97, 97, 97, 97, 305, 97, 97, 97, 97, 97, 97, 97, 97, 97, 899, 97, 97, 97, 97, 97, 97, 375, 45, 45, 45, 379, 45, 45, 390, 45, 45, 394, 45, 45, 45, 45, 45, 443, 45, 45, 45, 45, 45, 45, 45, 45, 67, 67, 67, 67, 67, 461, 67, 67, 67, 465, 67, 67, 476, 67, 67, 480, 67, 67, 67, 67, 67, 67, 1694, 67, 67, 67, 67, 67, 67, 67, 67, 67, 1288, 67, 67, 67, 67, 67, 67, 500, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 1075, 97, 97, 97, 558, 97, 97, 97, 562, 97, 97, 573, 97, 97, 577, 97, 97, 97, 97, 97, 895, 97, 97, 97, 97, 97, 97, 903, 97, 97, 97, 0, 97, 97, 1638, 97, 97, 97, 97, 97, 97, 97, 97, 1646, 597, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 1334, 45, 681, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 1396, 45, 45, 1399, 45, 45, 730, 45, 45, 45, 45, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 1434, 67, 67, 67, 67, 67, 67, 750, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 1456, 67, 67, 67, 67, 67, 45, 45, 993, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 67, 67, 1238, 67, 67, 1006, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 1280, 1048, 1049, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 1059, 67, 67, 67, 67, 67, 67, 1286, 67, 67, 67, 67, 67, 67, 67, 1291, 67, 97, 97, 1100, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 638, 0, 920, 97, 97, 1142, 1143, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 1153, 97, 97, 97, 97, 97, 1158, 97, 97, 97, 1161, 97, 97, 97, 97, 1166, 97, 97, 97, 97, 97, 1325, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 1328, 97, 97, 97, 97, 97, 97, 97, 45, 1218, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 1678, 45, 45, 45, 67, 67, 67, 67, 67, 1269, 67, 67, 67, 67, 67, 67, 67, 67, 1278, 67, 67, 67, 67, 67, 67, 1761, 67, 67, 67, 67, 67, 67, 67, 67, 67, 530, 67, 67, 67, 67, 67, 67, 97, 97, 1349, 97, 97, 97, 97, 97, 97, 97, 97, 1358, 97, 97, 97, 97, 97, 97, 1623, 97, 97, 97, 97, 97, 97, 97, 97, 0, 921, 0, 0, 926, 0, 0, 0, 45, 45, 1411, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 1754, 45, 45, 67, 67, 1301, 0, 1307, 0, 1313, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 21054, 97, 97, 97, 97, 67, 1757, 67, 67, 67, 1760, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 1467, 67, 67, 67, 67, 67, 1778, 97, 0, 0, 97, 97, 97, 97, 97, 97, 0, 0, 97, 97, 0, 97, 97, 97, 97, 97, 1352, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 1511, 97, 97, 97, 97, 97, 67, 67, 67, 67, 67, 1820, 67, 1822, 67, 67, 67, 67, 67, 97, 97, 97, 97, 97, 0, 0, 0, 97, 1933, 97, 1892, 97, 97, 97, 97, 97, 97, 1899, 45, 45, 45, 45, 45, 45, 45, 45, 1664, 45, 45, 45, 45, 45, 45, 45, 45, 1546, 45, 45, 45, 45, 45, 45, 45, 45, 1208, 45, 45, 45, 45, 45, 45, 45, 45, 1224, 45, 45, 45, 45, 45, 45, 45, 45, 673, 45, 45, 45, 45, 45, 45, 45, 67, 67, 67, 67, 67, 1925, 97, 97, 97, 97, 0, 0, 0, 97, 97, 97, 97, 97, 623, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 307, 97, 97, 97, 97, 97, 97, 97, 97, 97, 1796, 97, 45, 45, 45, 45, 45, 45, 45, 970, 45, 45, 45, 45, 45, 45, 45, 45, 1417, 45, 45, 45, 45, 45, 45, 45, 67, 1964, 67, 67, 97, 97, 97, 97, 0, 0, 0, 97, 97, 97, 97, 0, 97, 97, 97, 97, 97, 97, 1721, 97, 97, 0, 0, 1997, 97, 0, 0, 2000, 97, 97, 0, 97, 97, 97, 97, 97, 45, 45, 45, 45, 733, 45, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 803, 67, 67, 67, 67, 67, 0, 94242, 0, 0, 0, 38, 102439, 0, 0, 106538, 98347, 28809, 45, 45, 144, 45, 45, 45, 1805, 45, 1807, 45, 45, 45, 45, 45, 67, 67, 67, 67, 67, 67, 231, 67, 67, 67, 67, 67, 67, 67, 0, 24850, 12564, 0, 0, 0, 0, 28809, 53531, 45, 45, 67, 211, 67, 67, 67, 67, 230, 234, 240, 244, 67, 67, 67, 67, 67, 67, 464, 67, 67, 67, 67, 67, 67, 479, 67, 67, 67, 260, 67, 67, 67, 67, 67, 0, 24850, 12564, 0, 0, 0, 0, 28809, 53531, 97, 97, 291, 97, 97, 97, 97, 310, 314, 320, 324, 97, 97, 97, 97, 97, 97, 1367, 97, 97, 97, 97, 97, 97, 97, 97, 97, 1355, 97, 97, 97, 97, 97, 97, 1362, 340, 97, 97, 97, 97, 97, 0, 40976, 0, 18, 18, 24, 24, 27, 27, 27, 131427, 0, 0, 360, 0, 362, 0, 365, 28809, 367, 139, 369, 45, 45, 45, 374, 67, 67, 460, 67, 67, 67, 67, 466, 67, 67, 67, 67, 67, 67, 67, 67, 801, 67, 67, 67, 67, 67, 67, 67, 67, 67, 487, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 498, 67, 67, 67, 67, 67, 67, 1772, 67, 67, 97, 97, 97, 97, 97, 97, 97, 0, 921, 922, 1175, 0, 0, 0, 0, 45, 67, 502, 67, 67, 67, 67, 67, 67, 67, 508, 67, 67, 67, 515, 517, 67, 67, 67, 67, 67, 97, 97, 97, 97, 97, 0, 0, 0, 1932, 97, 97, 0, 1999, 97, 97, 97, 0, 97, 97, 2004, 2005, 97, 45, 45, 45, 45, 1193, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 676, 45, 45, 45, 45, 67, 24850, 24850, 12564, 12564, 0, 57889, 0, 0, 0, 53531, 53531, 367, 286, 552, 97, 97, 97, 97, 97, 1377, 0, 0, 45, 45, 45, 45, 45, 45, 45, 45, 655, 45, 45, 45, 45, 45, 45, 45, 97, 97, 557, 97, 97, 97, 97, 563, 97, 97, 97, 97, 97, 97, 97, 97, 1135, 97, 97, 97, 97, 97, 97, 97, 97, 97, 584, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 595, 97, 97, 97, 97, 97, 911, 97, 97, 97, 97, 97, 97, 97, 638, 0, 0, 0, 0, 1315, 0, 0, 0, 0, 97, 97, 97, 1319, 97, 97, 97, 0, 97, 97, 97, 97, 97, 97, 1733, 97, 97, 97, 97, 97, 97, 1340, 97, 97, 97, 1343, 97, 97, 1345, 97, 1346, 97, 599, 97, 97, 97, 97, 97, 97, 97, 605, 97, 97, 97, 612, 614, 97, 97, 97, 97, 97, 1794, 97, 97, 97, 45, 45, 45, 45, 45, 45, 45, 1207, 45, 45, 45, 45, 45, 45, 1213, 45, 45, 745, 67, 67, 67, 67, 751, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 1577, 67, 67, 67, 67, 67, 762, 67, 67, 67, 67, 766, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 1765, 67, 67, 67, 67, 67, 777, 67, 67, 781, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 1592, 1593, 67, 67, 97, 843, 97, 97, 97, 97, 849, 97, 97, 97, 97, 97, 97, 97, 97, 97, 1510, 97, 97, 97, 97, 97, 97, 97, 860, 97, 97, 97, 97, 864, 97, 97, 97, 97, 97, 97, 97, 97, 97, 1797, 45, 45, 45, 45, 1801, 45, 97, 875, 97, 97, 879, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 1522, 97, 97, 97, 97, 97, 991, 45, 45, 45, 45, 996, 45, 45, 45, 45, 45, 45, 45, 45, 67, 67, 215, 67, 67, 67, 67, 233, 67, 67, 67, 67, 251, 253, 1022, 67, 67, 67, 1026, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 1035, 67, 67, 1038, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 1458, 67, 67, 67, 67, 67, 1064, 67, 67, 67, 1067, 67, 67, 67, 67, 1072, 67, 67, 67, 67, 67, 67, 1296, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2367488, 2158592, 2158592, 2158592, 2158592, 2158592, 2158592, 67, 67, 67, 67, 67, 25398, 0, 13112, 0, 54074, 0, 0, 0, 0, 1096, 0, 921, 29315, 0, 0, 0, 0, 928, 45, 45, 45, 45, 45, 934, 45, 45, 45, 164, 45, 45, 45, 45, 45, 45, 45, 45, 45, 198, 45, 45, 45, 378, 45, 45, 45, 45, 45, 45, 393, 45, 45, 45, 398, 45, 97, 97, 1116, 97, 97, 97, 1120, 97, 97, 97, 97, 97, 97, 97, 97, 97, 1147, 1148, 97, 97, 97, 97, 97, 97, 97, 1129, 97, 97, 1132, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 1626, 97, 97, 97, 97, 0, 45, 1178, 45, 45, 45, 45, 45, 45, 45, 45, 45, 1185, 45, 45, 45, 45, 441, 45, 45, 45, 45, 45, 45, 451, 45, 45, 67, 67, 67, 67, 67, 227, 67, 67, 67, 67, 67, 67, 67, 67, 1260, 67, 67, 67, 1263, 67, 67, 1265, 1203, 45, 45, 1205, 45, 1206, 45, 45, 45, 45, 45, 45, 45, 45, 45, 1216, 67, 1266, 67, 67, 67, 67, 67, 67, 67, 67, 67, 1276, 67, 67, 67, 67, 67, 67, 492, 67, 67, 67, 67, 67, 67, 67, 67, 67, 471, 67, 67, 67, 67, 481, 67, 45, 1386, 45, 1389, 45, 45, 45, 45, 1394, 45, 45, 45, 1397, 45, 45, 45, 45, 995, 45, 997, 45, 45, 45, 45, 45, 45, 45, 67, 67, 67, 67, 1915, 67, 67, 67, 67, 67, 1422, 45, 45, 45, 67, 67, 67, 67, 67, 67, 67, 67, 67, 1433, 67, 1436, 67, 67, 67, 67, 1441, 67, 67, 67, 1444, 67, 67, 67, 67, 67, 67, 67, 0, 24850, 12564, 0, 0, 0, 281, 28809, 53531, 97, 97, 97, 97, 1494, 97, 97, 97, 1497, 97, 97, 97, 97, 97, 97, 97, 1368, 97, 97, 97, 97, 97, 97, 97, 97, 851, 97, 97, 97, 97, 97, 97, 97, 67, 67, 67, 1571, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 25398, 542, 13112, 544, 67, 67, 1583, 67, 67, 67, 67, 67, 67, 67, 67, 1591, 67, 67, 67, 67, 67, 67, 752, 67, 67, 67, 67, 67, 67, 67, 67, 67, 1056, 67, 67, 67, 67, 67, 67, 97, 1634, 97, 0, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 1125, 97, 97, 97, 1647, 97, 97, 97, 97, 97, 0, 45, 45, 45, 45, 45, 45, 45, 45, 45, 1183, 45, 45, 45, 45, 45, 45, 45, 45, 45, 409, 45, 45, 45, 45, 45, 45, 1658, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 1668, 1712, 97, 97, 97, 0, 97, 97, 97, 97, 97, 97, 97, 97, 97, 0, 0, 1835, 97, 97, 97, 97, 0, 0, 0, 97, 97, 1844, 97, 97, 1726, 0, 97, 97, 97, 97, 97, 1732, 97, 1734, 97, 97, 97, 97, 97, 300, 97, 308, 97, 97, 97, 97, 97, 97, 97, 97, 866, 97, 97, 97, 97, 97, 97, 97, 67, 67, 67, 1758, 67, 67, 67, 1762, 67, 67, 67, 67, 67, 67, 67, 67, 1043, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 1771, 67, 67, 67, 97, 97, 97, 97, 97, 1776, 97, 97, 97, 97, 297, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 1108, 97, 97, 97, 97, 67, 67, 67, 1966, 97, 97, 97, 1970, 0, 0, 0, 97, 97, 97, 97, 0, 97, 97, 97, 1720, 97, 97, 97, 97, 97, 0, 0, 97, 97, 97, 1837, 97, 0, 1840, 1841, 97, 97, 97, 1988, 45, 67, 67, 67, 67, 67, 67, 67, 67, 67, 1994, 1995, 67, 97, 97, 97, 97, 97, 1103, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 917, 97, 97, 0, 0, 0, 67, 67, 265, 67, 67, 67, 67, 0, 24850, 12564, 0, 0, 0, 0, 28809, 53531, 97, 345, 97, 97, 97, 97, 0, 40976, 0, 18, 18, 24, 24, 27, 27, 27, 131427, 0, 0, 0, 361, 362, 0, 365, 28809, 367, 139, 45, 45, 45, 45, 45, 671, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 411, 45, 45, 414, 45, 45, 45, 45, 377, 45, 45, 45, 386, 45, 45, 45, 45, 45, 45, 45, 45, 45, 1223, 45, 45, 45, 45, 45, 45, 45, 45, 45, 426, 45, 45, 433, 45, 45, 45, 67, 67, 67, 67, 67, 463, 67, 67, 67, 472, 67, 67, 67, 67, 67, 67, 67, 527, 67, 67, 67, 67, 67, 67, 537, 67, 540, 24850, 24850, 12564, 12564, 0, 57889, 0, 0, 0, 53531, 53531, 367, 286, 97, 97, 97, 97, 97, 1119, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 1509, 97, 97, 97, 97, 97, 97, 97, 97, 564, 97, 97, 97, 97, 97, 97, 97, 637, 18, 131427, 0, 0, 0, 0, 0, 0, 362, 0, 0, 365, 29315, 367, 0, 921, 29315, 0, 0, 0, 927, 45, 45, 45, 45, 45, 45, 45, 45, 45, 1234, 45, 45, 45, 45, 67, 67, 67, 67, 1240, 45, 697, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 708, 45, 45, 45, 45, 1221, 45, 45, 45, 45, 1225, 45, 45, 45, 45, 45, 45, 384, 45, 45, 45, 45, 45, 45, 45, 45, 45, 1210, 45, 45, 45, 45, 45, 45, 67, 67, 795, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 1470, 67, 67, 67, 67, 67, 67, 67, 815, 67, 67, 67, 67, 67, 67, 25398, 542, 13112, 544, 97, 97, 97, 893, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 1164, 97, 97, 97, 67, 67, 67, 1025, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 1687, 67, 67, 67, 67, 67, 67, 67, 67, 67, 25398, 0, 13112, 0, 54074, 0, 0, 0, 0, 0, 1097, 1241, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 1450, 45, 45, 1388, 45, 1390, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 1236, 67, 67, 67, 67, 67, 1437, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 1472, 1490, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 1503, 67, 67, 67, 67, 67, 97, 97, 97, 97, 97, 0, 1930, 0, 97, 97, 97, 97, 97, 847, 97, 97, 97, 97, 97, 97, 97, 97, 97, 858, 67, 67, 1965, 67, 97, 97, 97, 97, 0, 0, 0, 97, 97, 97, 97, 0, 97, 97, 1719, 97, 97, 97, 97, 97, 97, 0, 0, 0, 45, 45, 45, 45, 1382, 45, 1383, 45, 45, 45, 159, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 1563, 45, 45, 45, 45, 45, 67, 261, 67, 67, 67, 67, 67, 0, 24850, 12564, 0, 0, 0, 0, 28809, 53531, 341, 97, 97, 97, 97, 97, 0, 40976, 0, 18, 18, 24, 24, 27, 27, 27, 97, 1099, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 1333, 97, 1230, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 67, 67, 67, 67, 67, 67, 1992, 67, 1993, 67, 67, 67, 97, 97, 45, 45, 160, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 1665, 45, 45, 45, 45, 45, 131427, 357, 0, 0, 0, 362, 0, 365, 28809, 367, 139, 45, 45, 45, 45, 45, 684, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 412, 45, 45, 45, 416, 45, 45, 45, 440, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 67, 67, 1990, 67, 1991, 67, 67, 67, 67, 67, 67, 67, 97, 97, 1707, 97, 97, 97, 97, 97, 97, 501, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 1691, 67, 67, 67, 67, 67, 526, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 1030, 67, 1032, 67, 67, 67, 67, 598, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 1632, 0, 921, 29315, 923, 0, 0, 0, 45, 45, 45, 45, 45, 45, 45, 45, 45, 1404, 45, 45, 45, 45, 45, 45, 45, 45, 45, 425, 45, 45, 45, 45, 45, 45, 67, 67, 67, 67, 67, 25398, 0, 13112, 0, 54074, 0, 0, 1093, 0, 0, 0, 0, 0, 97, 1609, 97, 97, 97, 97, 97, 97, 97, 97, 97, 1369, 97, 97, 97, 1372, 97, 97, 67, 67, 266, 67, 67, 67, 67, 0, 24850, 12564, 0, 0, 0, 0, 28809, 53531, 97, 346, 97, 97, 97, 97, 0, 40976, 0, 18, 18, 24, 24, 27, 27, 27, 665, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 1677, 45, 45, 45, 45, 67, 45, 45, 954, 45, 956, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 1545, 45, 45, 45, 45, 45, 45, 45, 45, 45, 448, 45, 45, 45, 45, 67, 456, 67, 67, 67, 67, 67, 1270, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 1069, 67, 67, 67, 67, 67, 67, 97, 97, 97, 1350, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 1524, 97, 97, 97, 97, 97, 97, 97, 1376, 0, 0, 0, 45, 45, 45, 45, 45, 45, 45, 45, 1559, 1561, 45, 45, 45, 1564, 45, 1566, 1567, 45, 67, 67, 67, 67, 67, 1573, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 1247, 67, 67, 67, 67, 67, 1252, 97, 1725, 97, 0, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 1628, 97, 1630, 0, 0, 94242, 0, 0, 0, 2211840, 0, 1118208, 0, 0, 0, 0, 2158592, 2158731, 2158592, 2158592, 2158592, 3117056, 2158592, 2158592, 2158592, 2158592, 2158592, 2158592, 2158592, 2158592, 2158592, 2158592, 2158592, 2158592, 3018752, 2158592, 3043328, 2158592, 2158592, 2158592, 2158592, 3080192, 2158592, 2158592, 3112960, 2158592, 2158592, 2158592, 2158592, 2158592, 2158878, 2158592, 2158592, 2158592, 2158592, 2158592, 2158592, 2158592, 2158592, 2158592, 2158592, 2158592, 2158592, 2158592, 2158592, 2605056, 2158592, 2158592, 2207744, 0, 542, 0, 544, 0, 0, 2166784, 0, 0, 0, 550, 0, 0, 2158592, 2158592, 2686976, 2158592, 2715648, 2158592, 2158592, 2158592, 2158592, 2158592, 2158592, 2158592, 2867200, 2158592, 2904064, 2158592, 2158592, 2158592, 2158592, 2158592, 2158592, 2158592, 0, 94242, 0, 0, 0, 2211840, 0, 0, 1130496, 0, 0, 0, 2158592, 2158592, 2158592, 2158592, 2158592, 3186688, 2158592, 0, 0, 139, 0, 0, 0, 139, 0, 2367488, 2207744, 0, 0, 0, 0, 176128, 0, 2166784, 0, 0, 0, 0, 0, 286, 2158592, 2158592, 3170304, 3174400, 2158592, 0, 0, 0, 2158592, 2158592, 2158592, 2158592, 2158592, 2424832, 2158592, 2158592, 2158592, 1508, 2158592, 2908160, 2158592, 2158592, 2158592, 2977792, 2158592, 2158592, 2158592, 2158592, 3039232, 2158592, 2158592, 2158592, 2158592, 2158592, 2158592, 3158016, 67, 24850, 24850, 12564, 12564, 0, 0, 0, 0, 0, 53531, 53531, 0, 286, 97, 97, 97, 97, 97, 1144, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 1149, 97, 97, 97, 97, 1154, 57889, 0, 0, 0, 0, 550, 0, 97, 97, 97, 97, 97, 97, 97, 97, 97, 561, 97, 97, 97, 97, 97, 97, 576, 97, 97, 139264, 139264, 139264, 139264, 139264, 139264, 139264, 139264, 139264, 139264, 139264, 139264, 0, 0, 139264, 0, 921, 29315, 0, 0, 926, 0, 45, 45, 45, 45, 45, 45, 45, 45, 45, 719, 720, 45, 45, 45, 45, 45, 45, 45, 45, 685, 45, 45, 45, 45, 45, 45, 45, 45, 45, 942, 45, 45, 946, 45, 45, 45, 950, 45, 45, 0, 2146304, 2146304, 0, 0, 0, 0, 2224128, 2224128, 2224128, 2232320, 2232320, 2232320, 2232320, 0, 0, 1301, 0, 0, 0, 0, 0, 1307, 0, 0, 0, 0, 0, 1313, 0, 0, 0, 0, 0, 0, 0, 97, 97, 1318, 97, 97, 97, 97, 97, 97, 1795, 97, 97, 45, 45, 45, 45, 45, 45, 45, 446, 45, 45, 45, 45, 45, 45, 67, 67, 2158592, 2146304, 0, 0, 0, 0, 0, 0, 0, 2211840, 0, 0, 0, 0, 2158592, 0, 921, 29315, 0, 924, 0, 0, 45, 45, 45, 45, 45, 45, 45, 45, 45, 1000, 45, 45, 45, 45, 67, 67 -]; - -XQueryTokenizer.EXPECTED = -[ 290, 300, 304, 353, 296, 309, 305, 319, 315, 324, 328, 352, 354, 334, 338, 330, 320, 345, 349, 293, 358, 362, 341, 366, 312, 370, 374, 378, 382, 386, 390, 394, 398, 737, 402, 634, 439, 604, 634, 634, 634, 634, 408, 634, 634, 634, 404, 634, 634, 634, 457, 634, 634, 963, 634, 634, 413, 634, 634, 634, 634, 634, 634, 634, 663, 418, 422, 903, 902, 426, 431, 548, 634, 437, 521, 919, 443, 615, 409, 449, 455, 624, 731, 751, 634, 461, 465, 672, 470, 469, 474, 481, 485, 477, 489, 493, 629, 542, 497, 505, 603, 602, 991, 648, 510, 804, 634, 515, 958, 526, 525, 530, 768, 634, 546, 552, 711, 710, 593, 558, 562, 618, 566, 570, 574, 578, 582, 586, 590, 608, 612, 660, 822, 821, 634, 622, 596, 444, 628, 533, 724, 633, 640, 653, 647, 652, 536, 1008, 451, 450, 445, 657, 670, 676, 685, 689, 693, 697, 701, 704, 707, 715, 719, 798, 815, 634, 723, 762, 996, 634, 728, 969, 730, 735, 908, 634, 741, 679, 889, 511, 747, 634, 750, 755, 499, 666, 499, 501, 759, 772, 776, 780, 634, 787, 784, 797, 802, 809, 808, 427, 814, 1006, 517, 634, 519, 853, 634, 813, 850, 793, 634, 819, 826, 833, 832, 837, 843, 847, 857, 861, 863, 867, 871, 875, 879, 883, 643, 887, 539, 980, 979, 634, 893, 944, 634, 900, 896, 634, 907, 933, 506, 912, 917, 828, 433, 636, 635, 554, 961, 923, 930, 927, 937, 941, 634, 634, 634, 974, 948, 952, 985, 913, 968, 967, 743, 634, 973, 839, 634, 978, 599, 634, 984, 989, 765, 444, 995, 1000, 634, 1003, 790, 955, 1012, 681, 634, 634, 634, 634, 634, 414, 1016, 1020, 1024, 1085, 1027, 1090, 1090, 1046, 1080, 1137, 1108, 1215, 1049, 1032, 1039, 1085, 1085, 1085, 1085, 1058, 1062, 1068, 1085, 1086, 1090, 1090, 1091, 1072, 1064, 1107, 1090, 1090, 1090, 1118, 1123, 1138, 1078, 1074, 1084, 1085, 1085, 1085, 1087, 1090, 1062, 1052, 1060, 1114, 1062, 1104, 1085, 1085, 1090, 1090, 1028, 1122, 1063, 1128, 1139, 1127, 1158, 1085, 1085, 1151, 1090, 1090, 1090, 1095, 1090, 1132, 1073, 1136, 1143, 1061, 1150, 1085, 1155, 1098, 1101, 1146, 1162, 1169, 1101, 1185, 1151, 1090, 1110, 1173, 1054, 1087, 1109, 1177, 1165, 1089, 1204, 1184, 1107, 1189, 1193, 1088, 1197, 1180, 1201, 1208, 1042, 1212, 1219, 1223, 1227, 1231, 1235, 1245, 1777, 1527, 1686, 1686, 1238, 1686, 1254, 1686, 1686, 1686, 1294, 1669, 1686, 1686, 1686, 1322, 1625, 1534, 1268, 1624, 1275, 1281, 1443, 1292, 1300, 1686, 1686, 1686, 1350, 1826, 1306, 1686, 1686, 1240, 2032, 1317, 1321, 1686, 1686, 1253, 1686, 1326, 1686, 1686, 1686, 1418, 1709, 1446, 1686, 1686, 1686, 1492, 1686, 1295, 1447, 1686, 1686, 1258, 1686, 1736, 1686, 1686, 1520, 1355, 1686, 1288, 1348, 1361, 1686, 1359, 1686, 1364, 1498, 1368, 1302, 1362, 1381, 1389, 1395, 1486, 1686, 1371, 1377, 1370, 1686, 1375, 1382, 1384, 1402, 1408, 1385, 1383, 1619, 1413, 1423, 1428, 1433, 1686, 1686, 1270, 1686, 1338, 1686, 1440, 1686, 1686, 1686, 1499, 1465, 1686, 1686, 1686, 1639, 1473, 1884, 1686, 1686, 1293, 1864, 1686, 1686, 1296, 1321, 1483, 1686, 1686, 1686, 1646, 1686, 1748, 1496, 1686, 1418, 1675, 1686, 1418, 1702, 1686, 1418, 1981, 1686, 1429, 1409, 1427, 1504, 1692, 1686, 1686, 1313, 1448, 1651, 1508, 1686, 1686, 1340, 1686, 1903, 1686, 1686, 1435, 1513, 1686, 1283, 1287, 1519, 1686, 1524, 1363, 1568, 1938, 1539, 1566, 1579, 1479, 1533, 1538, 1553, 1544, 1552, 1557, 1563, 1574, 1557, 1583, 1589, 1590, 1759, 1594, 1603, 1607, 1611, 1686, 1436, 1514, 1686, 1434, 1656, 1686, 1434, 1680, 1686, 1453, 1686, 1686, 1686, 1559, 1617, 1686, 1770, 1418, 1623, 1769, 1629, 1686, 1515, 1335, 1686, 1285, 1686, 1671, 1921, 1650, 1686, 1686, 1344, 1308, 1666, 1686, 1686, 1686, 1659, 1685, 1686, 1686, 1686, 1686, 1241, 1686, 1686, 1844, 1691, 1686, 1630, 1977, 1970, 1362, 1686, 1686, 1686, 1693, 1698, 1686, 1686, 1686, 1697, 1686, 1764, 1715, 1686, 1634, 1638, 1686, 1599, 1585, 1686, 1271, 1686, 1269, 1686, 1721, 1686, 1686, 1354, 1686, 1801, 1686, 1799, 1686, 1640, 1686, 1686, 1461, 1686, 1686, 1732, 1686, 1944, 1686, 1740, 1686, 1746, 1415, 1396, 1686, 1598, 1547, 1417, 1597, 1416, 1577, 1546, 1397, 1577, 1547, 1548, 1570, 1398, 1753, 1686, 1652, 1509, 1686, 1686, 1686, 1757, 1686, 1419, 1686, 1763, 1418, 1768, 1781, 1686, 1686, 1686, 1705, 1686, 2048, 1792, 1686, 1686, 1686, 1735, 1686, 1797, 1686, 1686, 1404, 1686, 1639, 1815, 1686, 1686, 1418, 2017, 1820, 1686, 1686, 1803, 1686, 1686, 1686, 1736, 1489, 1686, 1686, 1825, 1338, 1260, 1263, 1686, 1686, 1785, 1686, 1686, 1728, 1686, 1686, 1749, 1497, 1830, 1830, 1262, 1248, 1261, 1329, 1260, 1264, 1329, 1248, 1249, 1259, 1540, 1849, 1842, 1686, 1686, 1835, 1686, 1686, 1816, 1686, 1686, 1831, 1882, 1848, 1686, 1686, 1686, 1774, 2071, 1854, 1686, 1686, 1469, 1884, 1686, 1821, 1859, 1686, 1686, 1350, 1883, 1686, 1686, 1686, 1781, 1391, 1875, 1686, 1686, 1613, 1644, 1686, 1686, 1889, 1686, 1686, 1662, 1884, 1686, 1885, 1890, 1686, 1686, 1686, 1894, 1686, 1686, 1678, 1686, 1907, 1686, 1686, 1529, 1914, 1686, 1838, 1686, 1686, 1881, 1686, 1686, 1872, 1876, 1836, 1919, 1686, 1837, 1692, 1910, 1686, 1925, 1928, 1742, 1686, 1811, 1811, 1930, 1810, 1929, 1935, 1928, 1900, 1942, 1867, 1868, 1931, 1035, 1788, 1948, 1952, 1956, 1960, 1964, 1686, 1976, 1686, 1686, 1686, 2065, 1686, 1992, 2037, 1686, 1686, 1998, 2009, 1972, 2002, 1686, 1686, 1686, 2077, 1300, 2023, 1686, 1686, 1686, 1807, 2031, 1686, 1686, 1686, 1860, 1500, 2032, 1686, 1686, 1686, 2083, 1686, 2036, 1686, 1277, 1276, 2042, 1877, 1686, 1686, 2041, 1686, 1686, 2027, 2037, 2012, 1686, 2012, 1855, 1850, 1686, 2046, 1686, 1686, 2054, 1996, 1686, 1897, 1309, 2059, 2052, 1686, 2058, 1686, 1686, 2081, 1686, 1717, 1477, 1686, 1331, 1686, 1686, 1687, 1686, 1860, 1681, 1686, 1686, 1686, 1966, 1724, 1686, 1686, 1686, 1984, 2015, 1686, 1686, 1686, 1988, 1686, 2063, 1686, 1686, 1686, 2005, 1686, 1727, 1686, 1686, 1711, 1457, 2069, 1686, 1686, 1686, 2019, 2075, 1686, 1686, 1915, 1686, 1686, 1793, 1874, 1686, 1686, 1491, 1362, 1449, 1686, 1686, 1460, 2098, 2087, 2091, 2095, 2184, 2102, 2113, 2780, 2117, 2134, 2142, 2281, 2146, 2146, 2146, 2304, 2296, 2181, 2639, 2591, 2872, 2592, 2873, 2313, 2195, 2200, 2281, 2146, 2273, 2226, 2204, 2152, 2219, 2276, 2167, 2177, 2276, 2235, 2276, 2276, 2230, 2281, 2276, 2296, 2276, 2293, 2276, 2276, 2276, 2276, 2234, 2276, 2311, 2314, 2210, 2199, 2217, 2222, 2276, 2276, 2276, 2240, 2276, 2294, 2276, 2276, 2173, 2276, 2198, 2281, 2281, 2281, 2281, 2282, 2146, 2146, 2146, 2146, 2205, 2146, 2204, 2248, 2276, 2235, 2276, 2297, 2276, 2276, 2276, 2277, 2256, 2281, 2283, 2146, 2146, 2146, 2275, 2276, 2295, 2276, 2276, 2293, 2146, 2304, 2264, 2269, 2221, 2276, 2276, 2276, 2293, 2295, 2276, 2276, 2276, 2295, 2263, 2205, 2268, 2220, 2172, 2276, 2276, 2276, 2296, 2276, 2276, 2296, 2294, 2276, 2276, 2278, 2281, 2281, 2280, 2281, 2281, 2281, 2283, 2206, 2223, 2276, 2276, 2279, 2281, 2281, 2146, 2273, 2276, 2276, 2281, 2281, 2281, 2276, 2292, 2276, 2298, 2225, 2276, 2298, 2169, 2224, 2292, 2298, 2171, 2229, 2281, 2281, 2171, 2236, 2281, 2281, 2281, 2146, 2275, 2225, 2292, 2299, 2276, 2229, 2281, 2146, 2276, 2290, 2297, 2283, 2146, 2146, 2274, 2224, 2227, 2298, 2225, 2297, 2276, 2230, 2170, 2230, 2282, 2146, 2147, 2151, 2156, 2288, 2276, 2230, 2303, 2308, 2236, 2284, 2228, 2318, 2318, 2318, 2326, 2335, 2339, 2343, 2349, 2416, 2693, 2357, 2592, 2109, 2592, 2592, 2162, 2943, 2823, 2646, 2592, 2361, 2592, 2122, 2592, 2592, 2122, 2470, 2592, 2592, 2592, 2109, 2107, 2592, 2592, 2592, 2123, 2592, 2592, 2592, 2125, 2592, 2413, 2592, 2592, 2592, 2127, 2592, 2592, 2414, 2592, 2592, 2592, 2130, 2952, 2592, 2594, 2592, 2592, 2212, 2609, 2252, 2592, 2592, 2592, 2446, 2434, 2592, 2592, 2592, 2212, 2446, 2450, 2456, 2431, 2435, 2592, 2592, 2243, 2478, 2448, 2439, 2946, 2592, 2592, 2592, 2368, 2809, 2813, 2450, 2441, 2212, 2812, 2449, 2440, 2947, 2592, 2592, 2592, 2345, 2451, 2457, 2948, 2592, 2124, 2592, 2592, 2650, 2823, 2449, 2455, 2946, 2592, 2128, 2592, 2592, 2649, 2952, 2592, 2810, 2448, 2461, 2991, 2467, 2592, 2592, 2329, 2817, 2474, 2990, 2466, 2592, 2592, 2373, 2447, 2992, 2469, 2592, 2592, 2592, 2373, 2447, 2477, 2468, 2592, 2592, 2353, 2469, 2592, 2495, 2592, 2592, 2415, 2483, 2592, 2415, 2496, 2592, 2592, 2352, 2592, 2592, 2352, 2352, 2469, 2592, 2592, 2363, 2331, 2494, 2592, 2592, 2592, 2375, 2592, 2375, 2415, 2504, 2592, 2592, 2367, 2372, 2503, 2592, 2592, 2592, 2389, 2418, 2415, 2592, 2592, 2373, 2592, 2592, 2592, 2593, 2732, 2417, 2415, 2592, 2417, 2520, 2592, 2592, 2592, 2390, 2521, 2521, 2592, 2592, 2592, 2401, 2599, 2585, 2526, 2531, 2120, 2592, 2212, 2426, 2450, 2463, 2948, 2592, 2592, 2592, 2213, 2389, 2527, 2532, 2121, 2542, 2551, 2105, 2592, 2213, 2592, 2592, 2592, 2558, 2538, 2544, 2553, 2557, 2537, 2543, 2552, 2421, 2572, 2576, 2546, 2543, 2547, 2592, 2592, 2373, 2615, 2575, 2545, 2105, 2592, 2244, 2479, 2592, 2129, 2592, 2592, 2628, 2690, 2469, 2562, 2566, 2592, 2592, 2592, 2415, 2928, 2934, 2401, 2570, 2574, 2564, 2572, 2585, 2590, 2592, 2592, 2585, 2965, 2592, 2592, 2592, 2445, 2251, 2592, 2592, 2592, 2474, 2592, 2609, 2892, 2592, 2362, 2592, 2592, 2138, 2851, 2159, 2592, 2592, 2592, 2509, 2888, 2892, 2592, 2592, 2592, 2490, 2418, 2891, 2592, 2592, 2376, 2592, 2592, 2374, 2592, 2889, 2388, 2592, 2373, 2373, 2890, 2592, 2592, 2387, 2592, 2887, 2505, 2892, 2592, 2373, 2610, 2388, 2592, 2592, 2376, 2373, 2592, 2887, 2891, 2592, 2374, 2592, 2592, 2608, 2159, 2614, 2620, 2592, 2592, 2394, 2594, 2887, 2399, 2592, 2887, 2397, 2508, 2374, 2507, 2592, 2375, 2592, 2592, 2592, 2595, 2508, 2506, 2592, 2506, 2505, 2505, 2592, 2507, 2637, 2505, 2592, 2592, 2401, 2661, 2592, 2643, 2592, 2592, 2417, 2592, 2655, 2592, 2592, 2592, 2510, 2414, 2656, 2592, 2592, 2592, 2516, 2592, 2593, 2660, 2665, 2880, 2592, 2592, 2592, 2522, 2767, 2666, 2881, 2592, 2592, 2420, 2571, 2696, 2592, 2592, 2592, 2580, 2572, 2686, 2632, 2698, 2592, 2383, 2514, 2592, 2163, 2932, 2465, 2685, 2631, 2697, 2592, 2388, 2592, 2592, 2212, 2604, 2671, 2632, 2678, 2592, 2401, 2405, 2409, 2592, 2592, 2592, 2679, 2592, 2592, 2592, 2592, 2108, 2677, 2591, 2592, 2592, 2592, 2419, 2592, 2683, 2187, 2191, 2469, 2671, 2189, 2467, 2592, 2401, 2629, 2633, 2702, 2468, 2592, 2592, 2421, 2536, 2703, 2469, 2592, 2592, 2422, 2573, 2593, 2672, 2467, 2592, 2402, 2406, 2592, 2402, 2979, 2592, 2592, 2626, 2673, 2467, 2592, 2446, 2259, 2947, 2592, 2377, 2709, 2592, 2592, 2522, 2862, 2713, 2468, 2592, 2592, 2581, 2572, 2562, 2374, 2374, 2592, 2376, 2721, 2724, 2592, 2592, 2624, 2373, 2731, 2592, 2592, 2592, 2626, 2732, 2592, 2592, 2592, 2755, 2656, 2726, 2736, 2741, 2592, 2486, 2593, 2381, 2592, 2727, 2737, 2742, 2715, 2747, 2753, 2592, 2498, 2469, 2873, 2743, 2592, 2592, 2592, 2791, 2759, 2763, 2592, 2592, 2627, 2704, 2592, 2592, 2522, 2789, 2593, 2761, 2753, 2592, 2498, 2863, 2592, 2592, 2767, 2592, 2592, 2592, 2792, 2789, 2592, 2592, 2592, 2803, 2126, 2592, 2592, 2592, 2811, 2122, 2592, 2592, 2592, 2834, 2777, 2592, 2592, 2592, 2848, 2936, 2591, 2489, 2797, 2592, 2592, 2670, 2631, 2490, 2798, 2592, 2592, 2592, 2963, 2807, 2592, 2592, 2592, 2965, 2838, 2592, 2592, 2592, 2975, 2330, 2818, 2829, 2592, 2498, 2939, 2592, 2498, 2592, 2791, 2331, 2819, 2830, 2592, 2592, 2592, 2982, 2834, 2817, 2828, 2106, 2592, 2592, 2592, 2405, 2405, 2817, 2828, 2592, 2592, 2415, 2849, 2842, 2592, 2522, 2773, 2592, 2522, 2868, 2592, 2580, 2600, 2586, 2137, 2850, 2843, 2592, 2592, 2855, 2937, 2844, 2592, 2592, 2592, 2987, 2936, 2591, 2592, 2592, 2684, 2630, 2592, 2856, 2938, 2592, 2592, 2860, 2939, 2592, 2592, 2872, 2592, 2861, 2591, 2592, 2592, 2887, 2616, 2592, 2867, 2592, 2592, 2708, 2592, 2498, 2469, 2498, 2497, 2785, 2773, 2499, 2783, 2770, 2877, 2877, 2877, 2772, 2592, 2592, 2345, 2885, 2592, 2592, 2592, 2715, 2762, 2515, 2896, 2592, 2592, 2715, 2917, 2516, 2897, 2592, 2592, 2592, 2901, 2906, 2911, 2592, 2592, 2956, 2960, 2715, 2902, 2907, 2912, 2593, 2916, 2920, 2820, 2922, 2822, 2592, 2592, 2715, 2927, 2921, 2821, 2106, 2592, 2592, 2974, 2408, 2321, 2821, 2106, 2592, 2592, 2983, 2592, 2593, 2404, 2408, 2592, 2592, 2717, 2749, 2716, 2928, 2322, 2822, 2593, 2926, 2919, 2820, 2934, 2823, 2592, 2592, 2592, 2651, 2824, 2592, 2592, 2592, 2130, 2952, 2592, 2592, 2592, 2592, 2964, 2592, 2592, 2716, 2748, 2592, 2969, 2592, 2592, 2716, 2918, 2368, 2970, 2592, 2592, 2592, 2403, 2407, 2592, 2592, 2787, 2211, 2404, 2409, 2592, 2592, 2802, 2837, 2987, 2592, 2592, 2592, 2809, 2427, 2592, 2793, 2592, 2592, 2809, 2447, 1073741824, 0x80000000, 539754496, 542375936, 402653184, 554434560, 571736064, 545521856, 268451840, 335544320, 268693630, 512, 2048, 256, 1024, 0, 1024, 0, 1073741824, 0x80000000, 0, 0, 0, 8388608, 0, 0, 1073741824, 1073741824, 0, 0x80000000, 537133056, 4194304, 1048576, 268435456, -1073741824, 0, 0, 0, 1048576, 0, 0, 0, 1572864, 0, 0, 0, 4194304, 0, 134217728, 16777216, 0, 0, 32, 64, 98304, 0, 33554432, 8388608, 192, 67108864, 67108864, 67108864, 67108864, 16, 32, 4, 0, 8192, 196608, 196608, 229376, 80, 4096, 524288, 8388608, 0, 0, 32, 128, 256, 24576, 24600, 24576, 24576, 2, 24576, 24576, 24576, 24584, 24592, 24576, 24578, 24576, 24578, 24576, 24576, 16, 512, 2048, 2048, 256, 4096, 32768, 1048576, 4194304, 67108864, 134217728, 268435456, 262144, 134217728, 0, 128, 128, 64, 16384, 16384, 16384, 67108864, 32, 32, 4, 4, 4096, 262144, 134217728, 0, 0, 0, 2, 0, 8192, 131072, 131072, 4096, 4096, 4096, 4096, 24576, 24576, 24576, 8, 8, 24576, 24576, 16384, 16384, 16384, 24576, 24584, 24576, 24576, 24576, 16384, 24576, 536870912, 262144, 0, 0, 32, 2048, 8192, 4, 4096, 4096, 4096, 786432, 8388608, 16777216, 0, 128, 16384, 16384, 16384, 32768, 65536, 2097152, 32, 32, 32, 32, 4, 4, 4, 4, 4, 4096, 67108864, 67108864, 67108864, 24576, 24576, 24576, 24576, 0, 16384, 16384, 16384, 16384, 67108864, 67108864, 8, 67108864, 24576, 8, 8, 8, 24576, 24576, 24576, 24578, 24576, 24576, 24576, 2, 2, 2, 16384, 67108864, 67108864, 67108864, 32, 67108864, 8, 8, 24576, 2048, 0x80000000, 536870912, 262144, 262144, 262144, 67108864, 8, 24576, 16384, 32768, 1048576, 4194304, 25165824, 67108864, 24576, 32770, 2, 4, 112, 512, 98304, 524288, 50, 402653186, 1049090, 1049091, 10, 66, 100925514, 10, 66, 12582914, 0, 0, -1678194207, -1678194207, -1041543218, 0, 32768, 0, 0, 32, 65536, 268435456, 1, 1, 513, 1048577, 0, 12582912, 0, 0, 0, 4, 1792, 0, 0, 0, 7, 29360128, 0, 0, 0, 8, 0, 0, 0, 12, 1, 1, 0, 0, -604102721, -604102721, 4194304, 8388608, 0, 0, 0, 31, 925600, 997981306, 997981306, 997981306, 0, 0, 2048, 8388608, 0, 0, 1, 2, 4, 32, 64, 512, 8192, 0, 0, 0, 245760, 997720064, 0, 0, 0, 32, 0, 0, 0, 3, 12, 16, 32, 8, 112, 3072, 12288, 16384, 32768, 65536, 131072, 7864320, 16777216, 973078528, 0, 0, 65536, 131072, 3670016, 4194304, 16777216, 33554432, 2, 8, 48, 2048, 8192, 16384, 32768, 65536, 131072, 524288, 131072, 524288, 3145728, 4194304, 16777216, 33554432, 65536, 131072, 2097152, 4194304, 16777216, 33554432, 134217728, 268435456, 536870912, 0, 0, 0, 1024, 0, 8, 48, 2048, 8192, 65536, 33554432, 268435456, 536870912, 65536, 268435456, 536870912, 0, 0, 32768, 0, 0, 126, 623104, 65011712, 0, 32, 65536, 536870912, 0, 0, 65536, 524288, 0, 32, 65536, 0, 0, 0, 2048, 0, 0, 0, 15482, 245760, -604102721, 0, 0, 0, 18913, 33062912, 925600, -605028352, 0, 0, 0, 65536, 31, 8096, 131072, 786432, 3145728, 3145728, 12582912, 50331648, 134217728, 268435456, 160, 256, 512, 7168, 131072, 786432, 131072, 786432, 1048576, 2097152, 12582912, 16777216, 268435456, 1073741824, 0x80000000, 12582912, 16777216, 33554432, 268435456, 1073741824, 0x80000000, 3, 12, 16, 160, 256, 7168, 786432, 1048576, 12582912, 16777216, 268435456, 1073741824, 0, 8, 16, 32, 128, 256, 512, 7168, 786432, 1048576, 2097152, 0, 1, 2, 8, 16, 7168, 786432, 1048576, 8388608, 16777216, 16777216, 1073741824, 0, 0, 0, 0, 1, 0, 0, 8, 32, 128, 256, 7168, 8, 32, 0, 3072, 0, 8, 32, 3072, 4096, 524288, 8, 32, 0, 0, 3072, 4096, 0, 2048, 524288, 8388608, 8, 2048, 0, 0, 1, 12, 256, 4096, 32768, 262144, 1048576, 4194304, 67108864, 0, 2048, 0, 2048, 2048, 1073741824, -58805985, -58805985, -58805985, 0, 0, 262144, 0, 0, 32, 4194304, 16777216, 134217728, 4382, 172032, -58982400, 0, 0, 2, 28, 256, 4096, 8192, 8192, 32768, 131072, 262144, 524288, 1, 2, 12, 256, 4096, 0, 0, 4194304, 67108864, 134217728, 805306368, 1073741824, 0, 0, 1, 2, 12, 16, 256, 4096, 1048576, 67108864, 134217728, 268435456, 0, 512, 1048576, 4194304, 201326592, 1879048192, 0, 0, 12, 256, 4096, 134217728, 268435456, 536870912, 12, 256, 268435456, 536870912, 0, 12, 256, 0, 0, 1, 32, 64, 512, 0, 0, 205236961, 205236961, 0, 0, 0, 1, 96, 640, 1, 10976, 229376, 204996608, 0, 640, 2048, 8192, 229376, 1572864, 1572864, 2097152, 201326592, 0, 0, 0, 64, 512, 2048, 229376, 1572864, 201326592, 1572864, 201326592, 0, 0, 1, 4382, 0, 1, 32, 2048, 65536, 131072, 1572864, 201326592, 131072, 1572864, 134217728, 0, 0, 524288, 524288, 0, 0, 0, -68582786, -68582786, -68582786, 0, 0, 2097152, 524288, 0, 524288, 0, 0, 65536, 131072, 1572864, 0, 0, 2, 4, 0, 0, 65011712, -134217728, 0, 0, 0, 0, 2, 4, 120, 512, -268435456, 0, 0, 0, 2, 8, 48, 64, 2048, 8192, 98304, 524288, 2097152, 4194304, 25165824, 33554432, 134217728, 268435456, 0x80000000, 0, 0, 25165824, 33554432, 134217728, 1879048192, 0x80000000, 0, 0, 4, 112, 512, 622592, 65011712, 134217728, -268435456, 16777216, 33554432, 134217728, 1610612736, 0, 0, 0, 64, 98304, 524288, 4194304, 16777216, 33554432, 0, 98304, 524288, 16777216, 33554432, 0, 65536, 524288, 33554432, 536870912, 1073741824, 0, 65536, 524288, 536870912, 1073741824, 0, 0, 65536, 524288, 536870912, 0, 524288, 0, 524288, 524288, 1048576, 2086666240, 0x80000000, 0, -1678194207, 0, 0, 0, 8, 32, 2048, 524288, 8388608, 0, 0, 33062912, 436207616, 0x80000000, 0, 0, 32, 64, 2432, 16384, 32768, 32768, 524288, 3145728, 4194304, 25165824, 25165824, 167772160, 268435456, 0x80000000, 0, 32, 64, 384, 2048, 16384, 32768, 1048576, 2097152, 4194304, 25165824, 32, 64, 128, 256, 2048, 16384, 2048, 16384, 1048576, 4194304, 16777216, 33554432, 134217728, 536870912, 1073741824, 0, 0, 2048, 16384, 4194304, 16777216, 33554432, 134217728, 805306368, 0, 0, 16777216, 134217728, 268435456, 0x80000000, 0, 622592, 622592, 622592, 8807, 8807, 434791, 0, 0, 16777216, 0, 0, 0, 7, 608, 8192, 0, 0, 0, 3, 4, 96, 512, 32, 64, 8192, 0, 0, 16777216, 134217728, 0, 0, 2, 4, 8192, 16384, 65536, 2097152, 33554432, 268435456 -]; - -XQueryTokenizer.TOKEN = -[ - "(0)", - "ModuleDecl", - "Annotation", - "OptionDecl", - "Operator", - "Variable", - "Tag", - "EndTag", - "PragmaContents", - "DirCommentContents", - "DirPIContents", - "CDataSectionContents", - "AttrTest", - "Wildcard", - "EQName", - "IntegerLiteral", - "DecimalLiteral", - "DoubleLiteral", - "PredefinedEntityRef", - "'\"\"'", - "EscapeApos", - "QuotChar", - "AposChar", - "ElementContentChar", - "QuotAttrContentChar", - "AposAttrContentChar", - "NCName", - "QName", - "S", - "CharRef", - "CommentContents", - "DocTag", - "DocCommentContents", - "EOF", - "'!'", - "'\"'", - "'#'", - "'#)'", - "''''", - "'('", - "'(#'", - "'(:'", - "'(:~'", - "')'", - "'*'", - "'*'", - "','", - "'-->'", - "'.'", - "'/'", - "'/>'", - "':'", - "':)'", - "';'", - "'}\n\ - \n\ -snippet ife\n\ - if (${1:/* condition */}) {\n\ - ${2:// code...}\n\ - } else {\n\ - ${3:// code...}\n\ - }\n\ - ${4}\n\ -snippet ifeil\n\ - \n\ - ${2:}\n\ - \n\ - ${3:}\n\ - \n\ - ${4}\n\ -snippet else\n\ - else {\n\ - ${1:// code...}\n\ - }\n\ -snippet elseif\n\ - elseif (${1:/* condition */}) {\n\ - ${2:// code...}\n\ - }\n\ -snippet switch\n\ - switch ($${1:variable}) {\n\ - case '${2:value}':\n\ - ${3:// code...}\n\ - break;\n\ - ${5}\n\ - default:\n\ - ${4:// code...}\n\ - break;\n\ - }\n\ -snippet case\n\ - case '${1:value}':\n\ - ${2:// code...}\n\ - break;${3}\n\ -snippet for\n\ - for ($${2:i} = 0; $$2 < ${1:count}; $$2${3:++}) {\n\ - ${4: // code...}\n\ - }\n\ -snippet foreach\n\ - foreach ($${1:variable} as $${2:value}) {\n\ - ${3:// code...}\n\ - }\n\ -snippet foreachil\n\ - \n\ - ${3:}\n\ - \n\ -snippet foreachk\n\ - foreach ($${1:variable} as $${2:key} => $${3:value}) {\n\ - ${4:// code...}\n\ - }\n\ -snippet foreachkil\n\ - $${3:value}): ?>\n\ - ${4:}\n\ - \n\ -# $... = array (...)\n\ -snippet array\n\ - $${1:arrayName} = array('${2}' => ${3});${4}\n\ -snippet try\n\ - try {\n\ - ${2}\n\ - } catch (${1:Exception} $e) {\n\ - }\n\ -# lambda with closure\n\ -snippet lambda\n\ - ${1:static }function (${2:args}) use (${3:&$x, $y /*put vars in scope (closure) */}) {\n\ - ${4}\n\ - };\n\ -# pre_dump();\n\ -snippet pd\n\ - echo '
'; var_dump(${1}); echo '
';\n\ -# pre_dump(); die();\n\ -snippet pdd\n\ - echo '
'; var_dump(${1}); echo '
'; die(${2:});\n\ -snippet vd\n\ - var_dump(${1});\n\ -snippet vdd\n\ - var_dump(${1}); die(${2:});\n\ -snippet http_redirect\n\ - header (\"HTTP/1.1 301 Moved Permanently\"); \n\ - header (\"Location: \".URL); \n\ - exit();\n\ -# Getters & Setters\n\ -snippet gs\n\ - /**\n\ - * Gets the value of ${1:foo}\n\ - *\n\ - * @return ${2:$1}\n\ - */\n\ - public function get${3:$2}()\n\ - {\n\ - return $this->${4:$1};\n\ - }\n\ -\n\ - /**\n\ - * Sets the value of $1\n\ - *\n\ - * @param $2 $$1 ${5:description}\n\ - *\n\ - * @return ${6:$FILENAME}\n\ - */\n\ - public function set$3(${7:$2 }$$1)\n\ - {\n\ - $this->$4 = $$1;\n\ - return $this;\n\ - }${8}\n\ -# anotation, get, and set, useful for doctrine\n\ -snippet ags\n\ - /**\n\ - * ${1:description}\n\ - * \n\ - * @${7}\n\ - */\n\ - ${2:protected} $${3:foo};\n\ -\n\ - public function get${4:$3}()\n\ - {\n\ - return $this->$3;\n\ - }\n\ -\n\ - public function set$4(${5:$4 }$${6:$3})\n\ - {\n\ - $this->$3 = $$6;\n\ - return $this;\n\ - }\n\ -snippet rett\n\ - return true;\n\ -snippet retf\n\ - return false;\n\ -"; -exports.scope = "php"; - -}); diff --git a/IDE/jsrealb-ide/ace-src-noconflict/snippets/plain_text.js b/IDE/jsrealb-ide/ace-src-noconflict/snippets/plain_text.js deleted file mode 100644 index 1c76fdd7..00000000 --- a/IDE/jsrealb-ide/ace-src-noconflict/snippets/plain_text.js +++ /dev/null @@ -1,7 +0,0 @@ -ace.define('ace/snippets/plain_text', ['require', 'exports', 'module' ], function(require, exports, module) { - - -exports.snippetText = ""; -exports.scope = "plain_text"; - -}); diff --git a/IDE/jsrealb-ide/ace-src-noconflict/snippets/powershell.js b/IDE/jsrealb-ide/ace-src-noconflict/snippets/powershell.js deleted file mode 100644 index c7bc2d30..00000000 --- a/IDE/jsrealb-ide/ace-src-noconflict/snippets/powershell.js +++ /dev/null @@ -1,7 +0,0 @@ -ace.define('ace/snippets/powershell', ['require', 'exports', 'module' ], function(require, exports, module) { - - -exports.snippetText = ""; -exports.scope = "powershell"; - -}); diff --git a/IDE/jsrealb-ide/ace-src-noconflict/snippets/prolog.js b/IDE/jsrealb-ide/ace-src-noconflict/snippets/prolog.js deleted file mode 100644 index 7e75d510..00000000 --- a/IDE/jsrealb-ide/ace-src-noconflict/snippets/prolog.js +++ /dev/null @@ -1,7 +0,0 @@ -ace.define('ace/snippets/prolog', ['require', 'exports', 'module' ], function(require, exports, module) { - - -exports.snippetText = ""; -exports.scope = "prolog"; - -}); diff --git a/IDE/jsrealb-ide/ace-src-noconflict/snippets/properties.js b/IDE/jsrealb-ide/ace-src-noconflict/snippets/properties.js deleted file mode 100644 index ec389d5d..00000000 --- a/IDE/jsrealb-ide/ace-src-noconflict/snippets/properties.js +++ /dev/null @@ -1,7 +0,0 @@ -ace.define('ace/snippets/properties', ['require', 'exports', 'module' ], function(require, exports, module) { - - -exports.snippetText = ""; -exports.scope = "properties"; - -}); diff --git a/IDE/jsrealb-ide/ace-src-noconflict/snippets/protobuf.js b/IDE/jsrealb-ide/ace-src-noconflict/snippets/protobuf.js deleted file mode 100644 index cea6aa2d..00000000 --- a/IDE/jsrealb-ide/ace-src-noconflict/snippets/protobuf.js +++ /dev/null @@ -1,7 +0,0 @@ -ace.define('ace/snippets/protobuf', ['require', 'exports', 'module' ], function(require, exports, module) { - - -exports.snippetText = ""; -exports.scope = "protobuf"; - -}); \ No newline at end of file diff --git a/IDE/jsrealb-ide/ace-src-noconflict/snippets/python.js b/IDE/jsrealb-ide/ace-src-noconflict/snippets/python.js deleted file mode 100644 index 1a0be2aa..00000000 --- a/IDE/jsrealb-ide/ace-src-noconflict/snippets/python.js +++ /dev/null @@ -1,165 +0,0 @@ -ace.define('ace/snippets/python', ['require', 'exports', 'module' ], function(require, exports, module) { - - -exports.snippetText = "snippet #!\n\ - #!/usr/bin/env python\n\ -snippet imp\n\ - import ${1:module}\n\ -snippet from\n\ - from ${1:package} import ${2:module}\n\ -# Module Docstring\n\ -snippet docs\n\ - '''\n\ - File: ${1:`Filename('$1.py', 'foo.py')`}\n\ - Author: ${2:`g:snips_author`}\n\ - Description: ${3}\n\ - '''\n\ -snippet wh\n\ - while ${1:condition}:\n\ - ${2:# TODO: write code...}\n\ -# dowh - does the same as do...while in other languages\n\ -snippet dowh\n\ - while True:\n\ - ${1:# TODO: write code...}\n\ - if ${2:condition}:\n\ - break\n\ -snippet with\n\ - with ${1:expr} as ${2:var}:\n\ - ${3:# TODO: write code...}\n\ -# New Class\n\ -snippet cl\n\ - class ${1:ClassName}(${2:object}):\n\ - \"\"\"${3:docstring for $1}\"\"\"\n\ - def __init__(self, ${4:arg}):\n\ - ${5:super($1, self).__init__()}\n\ - self.$4 = $4\n\ - ${6}\n\ -# New Function\n\ -snippet def\n\ - def ${1:fname}(${2:`indent('.') ? 'self' : ''`}):\n\ - \"\"\"${3:docstring for $1}\"\"\"\n\ - ${4:# TODO: write code...}\n\ -snippet deff\n\ - def ${1:fname}(${2:`indent('.') ? 'self' : ''`}):\n\ - ${3:# TODO: write code...}\n\ -# New Method\n\ -snippet defs\n\ - def ${1:mname}(self, ${2:arg}):\n\ - ${3:# TODO: write code...}\n\ -# New Property\n\ -snippet property\n\ - def ${1:foo}():\n\ - doc = \"${2:The $1 property.}\"\n\ - def fget(self):\n\ - ${3:return self._$1}\n\ - def fset(self, value):\n\ - ${4:self._$1 = value}\n\ -# Ifs\n\ -snippet if\n\ - if ${1:condition}:\n\ - ${2:# TODO: write code...}\n\ -snippet el\n\ - else:\n\ - ${1:# TODO: write code...}\n\ -snippet ei\n\ - elif ${1:condition}:\n\ - ${2:# TODO: write code...}\n\ -# For\n\ -snippet for\n\ - for ${1:item} in ${2:items}:\n\ - ${3:# TODO: write code...}\n\ -# Encodes\n\ -snippet cutf8\n\ - # -*- coding: utf-8 -*-\n\ -snippet clatin1\n\ - # -*- coding: latin-1 -*-\n\ -snippet cascii\n\ - # -*- coding: ascii -*-\n\ -# Lambda\n\ -snippet ld\n\ - ${1:var} = lambda ${2:vars} : ${3:action}\n\ -snippet .\n\ - self.\n\ -snippet try Try/Except\n\ - try:\n\ - ${1:# TODO: write code...}\n\ - except ${2:Exception}, ${3:e}:\n\ - ${4:raise $3}\n\ -snippet try Try/Except/Else\n\ - try:\n\ - ${1:# TODO: write code...}\n\ - except ${2:Exception}, ${3:e}:\n\ - ${4:raise $3}\n\ - else:\n\ - ${5:# TODO: write code...}\n\ -snippet try Try/Except/Finally\n\ - try:\n\ - ${1:# TODO: write code...}\n\ - except ${2:Exception}, ${3:e}:\n\ - ${4:raise $3}\n\ - finally:\n\ - ${5:# TODO: write code...}\n\ -snippet try Try/Except/Else/Finally\n\ - try:\n\ - ${1:# TODO: write code...}\n\ - except ${2:Exception}, ${3:e}:\n\ - ${4:raise $3}\n\ - else:\n\ - ${5:# TODO: write code...}\n\ - finally:\n\ - ${6:# TODO: write code...}\n\ -# if __name__ == '__main__':\n\ -snippet ifmain\n\ - if __name__ == '__main__':\n\ - ${1:main()}\n\ -# __magic__\n\ -snippet _\n\ - __${1:init}__${2}\n\ -# python debugger (pdb)\n\ -snippet pdb\n\ - import pdb; pdb.set_trace()\n\ -# ipython debugger (ipdb)\n\ -snippet ipdb\n\ - import ipdb; ipdb.set_trace()\n\ -# ipython debugger (pdbbb)\n\ -snippet pdbbb\n\ - import pdbpp; pdbpp.set_trace()\n\ -snippet pprint\n\ - import pprint; pprint.pprint(${1})${2}\n\ -snippet \"\n\ - \"\"\"\n\ - ${1:doc}\n\ - \"\"\"\n\ -# test function/method\n\ -snippet test\n\ - def test_${1:description}(${2:`indent('.') ? 'self' : ''`}):\n\ - ${3:# TODO: write code...}\n\ -# test case\n\ -snippet testcase\n\ - class ${1:ExampleCase}(unittest.TestCase):\n\ - \n\ - def test_${2:description}(self):\n\ - ${3:# TODO: write code...}\n\ -snippet fut\n\ - from __future__ import ${1}\n\ -#getopt\n\ -snippet getopt\n\ - try:\n\ - # Short option syntax: \"hv:\"\n\ - # Long option syntax: \"help\" or \"verbose=\"\n\ - opts, args = getopt.getopt(sys.argv[1:], \"${1:short_options}\", [${2:long_options}])\n\ - \n\ - except getopt.GetoptError, err:\n\ - # Print debug info\n\ - print str(err)\n\ - ${3:error_action}\n\ -\n\ - for option, argument in opts:\n\ - if option in (\"-h\", \"--help\"):\n\ - ${4}\n\ - elif option in (\"-v\", \"--verbose\"):\n\ - verbose = argument\n\ -"; -exports.scope = "python"; - -}); diff --git a/IDE/jsrealb-ide/ace-src-noconflict/snippets/r.js b/IDE/jsrealb-ide/ace-src-noconflict/snippets/r.js deleted file mode 100644 index 636ccc4e..00000000 --- a/IDE/jsrealb-ide/ace-src-noconflict/snippets/r.js +++ /dev/null @@ -1,128 +0,0 @@ -ace.define('ace/snippets/r', ['require', 'exports', 'module' ], function(require, exports, module) { - - -exports.snippetText = "snippet #!\n\ - #!/usr/bin/env Rscript\n\ -\n\ -# includes\n\ -snippet lib\n\ - library(${1:package})\n\ -snippet req\n\ - require(${1:package})\n\ -snippet source\n\ - source('${1:file}')\n\ -\n\ -# conditionals\n\ -snippet if\n\ - if (${1:condition}) {\n\ - ${2:code}\n\ - }\n\ -snippet el\n\ - else {\n\ - ${1:code}\n\ - }\n\ -snippet ei\n\ - else if (${1:condition}) {\n\ - ${2:code}\n\ - }\n\ -\n\ -# functions\n\ -snippet fun\n\ - ${1:name} = function (${2:variables}) {\n\ - ${3:code}\n\ - }\n\ -snippet ret\n\ - return(${1:code})\n\ -\n\ -# dataframes, lists, etc\n\ -snippet df\n\ - ${1:name}[${2:rows}, ${3:cols}]\n\ -snippet c\n\ - c(${1:items})\n\ -snippet li\n\ - list(${1:items})\n\ -snippet mat\n\ - matrix(${1:data}, nrow=${2:rows}, ncol=${3:cols})\n\ -\n\ -# apply functions\n\ -snippet apply\n\ - apply(${1:array}, ${2:margin}, ${3:function})\n\ -snippet lapply\n\ - lapply(${1:list}, ${2:function})\n\ -snippet sapply\n\ - lapply(${1:list}, ${2:function})\n\ -snippet vapply\n\ - vapply(${1:list}, ${2:function}, ${3:type})\n\ -snippet mapply\n\ - mapply(${1:function}, ${2:...})\n\ -snippet tapply\n\ - tapply(${1:vector}, ${2:index}, ${3:function})\n\ -snippet rapply\n\ - rapply(${1:list}, ${2:function})\n\ -\n\ -# plyr functions\n\ -snippet dd\n\ - ddply(${1:frame}, ${2:variables}, ${3:function})\n\ -snippet dl\n\ - dlply(${1:frame}, ${2:variables}, ${3:function})\n\ -snippet da\n\ - daply(${1:frame}, ${2:variables}, ${3:function})\n\ -snippet d_\n\ - d_ply(${1:frame}, ${2:variables}, ${3:function})\n\ -\n\ -snippet ad\n\ - adply(${1:array}, ${2:margin}, ${3:function})\n\ -snippet al\n\ - alply(${1:array}, ${2:margin}, ${3:function})\n\ -snippet aa\n\ - aaply(${1:array}, ${2:margin}, ${3:function})\n\ -snippet a_\n\ - a_ply(${1:array}, ${2:margin}, ${3:function})\n\ -\n\ -snippet ld\n\ - ldply(${1:list}, ${2:function})\n\ -snippet ll\n\ - llply(${1:list}, ${2:function})\n\ -snippet la\n\ - laply(${1:list}, ${2:function})\n\ -snippet l_\n\ - l_ply(${1:list}, ${2:function})\n\ -\n\ -snippet md\n\ - mdply(${1:matrix}, ${2:function})\n\ -snippet ml\n\ - mlply(${1:matrix}, ${2:function})\n\ -snippet ma\n\ - maply(${1:matrix}, ${2:function})\n\ -snippet m_\n\ - m_ply(${1:matrix}, ${2:function})\n\ -\n\ -# plot functions\n\ -snippet pl\n\ - plot(${1:x}, ${2:y})\n\ -snippet ggp\n\ - ggplot(${1:data}, aes(${2:aesthetics}))\n\ -snippet img\n\ - ${1:(jpeg,bmp,png,tiff)}(filename=\"${2:filename}\", width=${3}, height=${4}, unit=\"${5}\")\n\ - ${6:plot}\n\ - dev.off()\n\ -\n\ -# statistical test functions\n\ -snippet fis\n\ - fisher.test(${1:x}, ${2:y})\n\ -snippet chi\n\ - chisq.test(${1:x}, ${2:y})\n\ -snippet tt\n\ - t.test(${1:x}, ${2:y})\n\ -snippet wil\n\ - wilcox.test(${1:x}, ${2:y})\n\ -snippet cor\n\ - cor.test(${1:x}, ${2:y})\n\ -snippet fte\n\ - var.test(${1:x}, ${2:y})\n\ -snippet kvt \n\ - kv.test(${1:x}, ${2:y})\n\ -"; -exports.scope = "r"; - -}); diff --git a/IDE/jsrealb-ide/ace-src-noconflict/snippets/rdoc.js b/IDE/jsrealb-ide/ace-src-noconflict/snippets/rdoc.js deleted file mode 100644 index 6cc1df97..00000000 --- a/IDE/jsrealb-ide/ace-src-noconflict/snippets/rdoc.js +++ /dev/null @@ -1,7 +0,0 @@ -ace.define('ace/snippets/rdoc', ['require', 'exports', 'module' ], function(require, exports, module) { - - -exports.snippetText = ""; -exports.scope = "rdoc"; - -}); diff --git a/IDE/jsrealb-ide/ace-src-noconflict/snippets/rhtml.js b/IDE/jsrealb-ide/ace-src-noconflict/snippets/rhtml.js deleted file mode 100644 index 3323ea68..00000000 --- a/IDE/jsrealb-ide/ace-src-noconflict/snippets/rhtml.js +++ /dev/null @@ -1,7 +0,0 @@ -ace.define('ace/snippets/rhtml', ['require', 'exports', 'module' ], function(require, exports, module) { - - -exports.snippetText = ""; -exports.scope = "rhtml"; - -}); diff --git a/IDE/jsrealb-ide/ace-src-noconflict/snippets/ruby.js b/IDE/jsrealb-ide/ace-src-noconflict/snippets/ruby.js deleted file mode 100644 index 7830e20a..00000000 --- a/IDE/jsrealb-ide/ace-src-noconflict/snippets/ruby.js +++ /dev/null @@ -1,935 +0,0 @@ -ace.define('ace/snippets/ruby', ['require', 'exports', 'module' ], function(require, exports, module) { - - -exports.snippetText = "########################################\n\ -# Ruby snippets - for Rails, see below #\n\ -########################################\n\ -\n\ -# encoding for Ruby 1.9\n\ -snippet enc\n\ - # encoding: utf-8\n\ -\n\ -# #!/usr/bin/env ruby\n\ -snippet #!\n\ - #!/usr/bin/env ruby\n\ - # encoding: utf-8\n\ -\n\ -# New Block\n\ -snippet =b\n\ - =begin rdoc\n\ - ${1}\n\ - =end\n\ -snippet y\n\ - :yields: ${1:arguments}\n\ -snippet rb\n\ - #!/usr/bin/env ruby -wKU\n\ -snippet beg\n\ - begin\n\ - ${3}\n\ - rescue ${1:Exception} => ${2:e}\n\ - end\n\ -\n\ -snippet req require\n\ - require \"${1}\"${2}\n\ -snippet #\n\ - # =>\n\ -snippet end\n\ - __END__\n\ -snippet case\n\ - case ${1:object}\n\ - when ${2:condition}\n\ - ${3}\n\ - end\n\ -snippet when\n\ - when ${1:condition}\n\ - ${2}\n\ -snippet def\n\ - def ${1:method_name}\n\ - ${2}\n\ - end\n\ -snippet deft\n\ - def test_${1:case_name}\n\ - ${2}\n\ - end\n\ -snippet if\n\ - if ${1:condition}\n\ - ${2}\n\ - end\n\ -snippet ife\n\ - if ${1:condition}\n\ - ${2}\n\ - else\n\ - ${3}\n\ - end\n\ -snippet elsif\n\ - elsif ${1:condition}\n\ - ${2}\n\ -snippet unless\n\ - unless ${1:condition}\n\ - ${2}\n\ - end\n\ -snippet while\n\ - while ${1:condition}\n\ - ${2}\n\ - end\n\ -snippet for\n\ - for ${1:e} in ${2:c}\n\ - ${3}\n\ - end\n\ -snippet until\n\ - until ${1:condition}\n\ - ${2}\n\ - end\n\ -snippet cla class .. end\n\ - class ${1:`substitute(Filename(), '\\(_\\|^\\)\\(.\\)', '\\u\\2', 'g')`}\n\ - ${2}\n\ - end\n\ -snippet cla class .. initialize .. end\n\ - class ${1:`substitute(Filename(), '\\(_\\|^\\)\\(.\\)', '\\u\\2', 'g')`}\n\ - def initialize(${2:args})\n\ - ${3}\n\ - end\n\ - end\n\ -snippet cla class .. < ParentClass .. initialize .. end\n\ - class ${1:`substitute(Filename(), '\\(_\\|^\\)\\(.\\)', '\\u\\2', 'g')`} < ${2:ParentClass}\n\ - def initialize(${3:args})\n\ - ${4}\n\ - end\n\ - end\n\ -snippet cla ClassName = Struct .. do .. end\n\ - ${1:`substitute(Filename(), '\\(_\\|^\\)\\(.\\)', '\\u\\2', 'g')`} = Struct.new(:${2:attr_names}) do\n\ - def ${3:method_name}\n\ - ${4}\n\ - end\n\ - end\n\ -snippet cla class BlankSlate .. initialize .. end\n\ - class ${1:BlankSlate}\n\ - instance_methods.each { |meth| undef_method(meth) unless meth =~ /\\A__/ }\n\ - end\n\ -snippet cla class << self .. end\n\ - class << ${1:self}\n\ - ${2}\n\ - end\n\ -# class .. < DelegateClass .. initialize .. end\n\ -snippet cla-\n\ - class ${1:`substitute(Filename(), '\\(_\\|^\\)\\(.\\)', '\\u\\2', 'g')`} < DelegateClass(${2:ParentClass})\n\ - def initialize(${3:args})\n\ - super(${4:del_obj})\n\ -\n\ - ${5}\n\ - end\n\ - end\n\ -snippet mod module .. end\n\ - module ${1:`substitute(Filename(), '\\(_\\|^\\)\\(.\\)', '\\u\\2', 'g')`}\n\ - ${2}\n\ - end\n\ -snippet mod module .. module_function .. end\n\ - module ${1:`substitute(Filename(), '\\(_\\|^\\)\\(.\\)', '\\u\\2', 'g')`}\n\ - module_function\n\ -\n\ - ${2}\n\ - end\n\ -snippet mod module .. ClassMethods .. end\n\ - module ${1:`substitute(Filename(), '\\(_\\|^\\)\\(.\\)', '\\u\\2', 'g')`}\n\ - module ClassMethods\n\ - ${2}\n\ - end\n\ -\n\ - module InstanceMethods\n\ -\n\ - end\n\ -\n\ - def self.included(receiver)\n\ - receiver.extend ClassMethods\n\ - receiver.send :include, InstanceMethods\n\ - end\n\ - end\n\ -# attr_reader\n\ -snippet r\n\ - attr_reader :${1:attr_names}\n\ -# attr_writer\n\ -snippet w\n\ - attr_writer :${1:attr_names}\n\ -# attr_accessor\n\ -snippet rw\n\ - attr_accessor :${1:attr_names}\n\ -snippet atp\n\ - attr_protected :${1:attr_names}\n\ -snippet ata\n\ - attr_accessible :${1:attr_names}\n\ -# include Enumerable\n\ -snippet Enum\n\ - include Enumerable\n\ -\n\ - def each(&block)\n\ - ${1}\n\ - end\n\ -# include Comparable\n\ -snippet Comp\n\ - include Comparable\n\ -\n\ - def <=>(other)\n\ - ${1}\n\ - end\n\ -# extend Forwardable\n\ -snippet Forw-\n\ - extend Forwardable\n\ -# def self\n\ -snippet defs\n\ - def self.${1:class_method_name}\n\ - ${2}\n\ - end\n\ -# def method_missing\n\ -snippet defmm\n\ - def method_missing(meth, *args, &blk)\n\ - ${1}\n\ - end\n\ -snippet defd\n\ - def_delegator :${1:@del_obj}, :${2:del_meth}, :${3:new_name}\n\ -snippet defds\n\ - def_delegators :${1:@del_obj}, :${2:del_methods}\n\ -snippet am\n\ - alias_method :${1:new_name}, :${2:old_name}\n\ -snippet app\n\ - if __FILE__ == $PROGRAM_NAME\n\ - ${1}\n\ - end\n\ -# usage_if()\n\ -snippet usai\n\ - if ARGV.${1}\n\ - abort \"Usage: #{$PROGRAM_NAME} ${2:ARGS_GO_HERE}\"${3}\n\ - end\n\ -# usage_unless()\n\ -snippet usau\n\ - unless ARGV.${1}\n\ - abort \"Usage: #{$PROGRAM_NAME} ${2:ARGS_GO_HERE}\"${3}\n\ - end\n\ -snippet array\n\ - Array.new(${1:10}) { |${2:i}| ${3} }\n\ -snippet hash\n\ - Hash.new { |${1:hash}, ${2:key}| $1[$2] = ${3} }\n\ -snippet file File.foreach() { |line| .. }\n\ - File.foreach(${1:\"path/to/file\"}) { |${2:line}| ${3} }\n\ -snippet file File.read()\n\ - File.read(${1:\"path/to/file\"})${2}\n\ -snippet Dir Dir.global() { |file| .. }\n\ - Dir.glob(${1:\"dir/glob/*\"}) { |${2:file}| ${3} }\n\ -snippet Dir Dir[\"..\"]\n\ - Dir[${1:\"glob/**/*.rb\"}]${2}\n\ -snippet dir\n\ - Filename.dirname(__FILE__)\n\ -snippet deli\n\ - delete_if { |${1:e}| ${2} }\n\ -snippet fil\n\ - fill(${1:range}) { |${2:i}| ${3} }\n\ -# flatten_once()\n\ -snippet flao\n\ - inject(Array.new) { |${1:arr}, ${2:a}| $1.push(*$2)}${3}\n\ -snippet zip\n\ - zip(${1:enums}) { |${2:row}| ${3} }\n\ -# downto(0) { |n| .. }\n\ -snippet dow\n\ - downto(${1:0}) { |${2:n}| ${3} }\n\ -snippet ste\n\ - step(${1:2}) { |${2:n}| ${3} }\n\ -snippet tim\n\ - times { |${1:n}| ${2} }\n\ -snippet upt\n\ - upto(${1:1.0/0.0}) { |${2:n}| ${3} }\n\ -snippet loo\n\ - loop { ${1} }\n\ -snippet ea\n\ - each { |${1:e}| ${2} }\n\ -snippet ead\n\ - each do |${1:e}|\n\ - ${2}\n\ - end\n\ -snippet eab\n\ - each_byte { |${1:byte}| ${2} }\n\ -snippet eac- each_char { |chr| .. }\n\ - each_char { |${1:chr}| ${2} }\n\ -snippet eac- each_cons(..) { |group| .. }\n\ - each_cons(${1:2}) { |${2:group}| ${3} }\n\ -snippet eai\n\ - each_index { |${1:i}| ${2} }\n\ -snippet eaid\n\ - each_index do |${1:i}|\n\ - ${2}\n\ - end\n\ -snippet eak\n\ - each_key { |${1:key}| ${2} }\n\ -snippet eakd\n\ - each_key do |${1:key}|\n\ - ${2}\n\ - end\n\ -snippet eal\n\ - each_line { |${1:line}| ${2} }\n\ -snippet eald\n\ - each_line do |${1:line}|\n\ - ${2}\n\ - end\n\ -snippet eap\n\ - each_pair { |${1:name}, ${2:val}| ${3} }\n\ -snippet eapd\n\ - each_pair do |${1:name}, ${2:val}|\n\ - ${3}\n\ - end\n\ -snippet eas-\n\ - each_slice(${1:2}) { |${2:group}| ${3} }\n\ -snippet easd-\n\ - each_slice(${1:2}) do |${2:group}|\n\ - ${3}\n\ - end\n\ -snippet eav\n\ - each_value { |${1:val}| ${2} }\n\ -snippet eavd\n\ - each_value do |${1:val}|\n\ - ${2}\n\ - end\n\ -snippet eawi\n\ - each_with_index { |${1:e}, ${2:i}| ${3} }\n\ -snippet eawid\n\ - each_with_index do |${1:e},${2:i}|\n\ - ${3}\n\ - end\n\ -snippet reve\n\ - reverse_each { |${1:e}| ${2} }\n\ -snippet reved\n\ - reverse_each do |${1:e}|\n\ - ${2}\n\ - end\n\ -snippet inj\n\ - inject(${1:init}) { |${2:mem}, ${3:var}| ${4} }\n\ -snippet injd\n\ - inject(${1:init}) do |${2:mem}, ${3:var}|\n\ - ${4}\n\ - end\n\ -snippet map\n\ - map { |${1:e}| ${2} }\n\ -snippet mapd\n\ - map do |${1:e}|\n\ - ${2}\n\ - end\n\ -snippet mapwi-\n\ - enum_with_index.map { |${1:e}, ${2:i}| ${3} }\n\ -snippet sor\n\ - sort { |a, b| ${1} }\n\ -snippet sorb\n\ - sort_by { |${1:e}| ${2} }\n\ -snippet ran\n\ - sort_by { rand }\n\ -snippet all\n\ - all? { |${1:e}| ${2} }\n\ -snippet any\n\ - any? { |${1:e}| ${2} }\n\ -snippet cl\n\ - classify { |${1:e}| ${2} }\n\ -snippet col\n\ - collect { |${1:e}| ${2} }\n\ -snippet cold\n\ - collect do |${1:e}|\n\ - ${2}\n\ - end\n\ -snippet det\n\ - detect { |${1:e}| ${2} }\n\ -snippet detd\n\ - detect do |${1:e}|\n\ - ${2}\n\ - end\n\ -snippet fet\n\ - fetch(${1:name}) { |${2:key}| ${3} }\n\ -snippet fin\n\ - find { |${1:e}| ${2} }\n\ -snippet find\n\ - find do |${1:e}|\n\ - ${2}\n\ - end\n\ -snippet fina\n\ - find_all { |${1:e}| ${2} }\n\ -snippet finad\n\ - find_all do |${1:e}|\n\ - ${2}\n\ - end\n\ -snippet gre\n\ - grep(${1:/pattern/}) { |${2:match}| ${3} }\n\ -snippet sub\n\ - ${1:g}sub(${2:/pattern/}) { |${3:match}| ${4} }\n\ -snippet sca\n\ - scan(${1:/pattern/}) { |${2:match}| ${3} }\n\ -snippet scad\n\ - scan(${1:/pattern/}) do |${2:match}|\n\ - ${3}\n\ - end\n\ -snippet max\n\ - max { |a, b| ${1} }\n\ -snippet min\n\ - min { |a, b| ${1} }\n\ -snippet par\n\ - partition { |${1:e}| ${2} }\n\ -snippet pard\n\ - partition do |${1:e}|\n\ - ${2}\n\ - end\n\ -snippet rej\n\ - reject { |${1:e}| ${2} }\n\ -snippet rejd\n\ - reject do |${1:e}|\n\ - ${2}\n\ - end\n\ -snippet sel\n\ - select { |${1:e}| ${2} }\n\ -snippet seld\n\ - select do |${1:e}|\n\ - ${2}\n\ - end\n\ -snippet lam\n\ - lambda { |${1:args}| ${2} }\n\ -snippet doo\n\ - do\n\ - ${1}\n\ - end\n\ -snippet dov\n\ - do |${1:variable}|\n\ - ${2}\n\ - end\n\ -snippet :\n\ - :${1:key} => ${2:\"value\"}${3}\n\ -snippet ope\n\ - open(${1:\"path/or/url/or/pipe\"}, \"${2:w}\") { |${3:io}| ${4} }\n\ -# path_from_here()\n\ -snippet fpath\n\ - File.join(File.dirname(__FILE__), *%2[${1:rel path here}])${2}\n\ -# unix_filter {}\n\ -snippet unif\n\ - ARGF.each_line${1} do |${2:line}|\n\ - ${3}\n\ - end\n\ -# option_parse {}\n\ -snippet optp\n\ - require \"optparse\"\n\ -\n\ - options = {${1:default => \"args\"}}\n\ -\n\ - ARGV.options do |opts|\n\ - opts.banner = \"Usage: #{File.basename($PROGRAM_NAME)}\n\ -snippet opt\n\ - opts.on( \"-${1:o}\", \"--${2:long-option-name}\", ${3:String},\n\ - \"${4:Option description.}\") do |${5:opt}|\n\ - ${6}\n\ - end\n\ -snippet tc\n\ - require \"test/unit\"\n\ -\n\ - require \"${1:library_file_name}\"\n\ -\n\ - class Test${2:$1} < Test::Unit::TestCase\n\ - def test_${3:case_name}\n\ - ${4}\n\ - end\n\ - end\n\ -snippet ts\n\ - require \"test/unit\"\n\ -\n\ - require \"tc_${1:test_case_file}\"\n\ - require \"tc_${2:test_case_file}\"${3}\n\ -snippet as\n\ - assert ${1:test}, \"${2:Failure message.}\"${3}\n\ -snippet ase\n\ - assert_equal ${1:expected}, ${2:actual}${3}\n\ -snippet asne\n\ - assert_not_equal ${1:unexpected}, ${2:actual}${3}\n\ -snippet asid\n\ - assert_in_delta ${1:expected_float}, ${2:actual_float}, ${3:2 ** -20}${4}\n\ -snippet asio\n\ - assert_instance_of ${1:ExpectedClass}, ${2:actual_instance}${3}\n\ -snippet asko\n\ - assert_kind_of ${1:ExpectedKind}, ${2:actual_instance}${3}\n\ -snippet asn\n\ - assert_nil ${1:instance}${2}\n\ -snippet asnn\n\ - assert_not_nil ${1:instance}${2}\n\ -snippet asm\n\ - assert_match /${1:expected_pattern}/, ${2:actual_string}${3}\n\ -snippet asnm\n\ - assert_no_match /${1:unexpected_pattern}/, ${2:actual_string}${3}\n\ -snippet aso\n\ - assert_operator ${1:left}, :${2:operator}, ${3:right}${4}\n\ -snippet asr\n\ - assert_raise ${1:Exception} { ${2} }\n\ -snippet asrd\n\ - assert_raise ${1:Exception} do\n\ - ${2}\n\ - end\n\ -snippet asnr\n\ - assert_nothing_raised ${1:Exception} { ${2} }\n\ -snippet asnrd\n\ - assert_nothing_raised ${1:Exception} do\n\ - ${2}\n\ - end\n\ -snippet asrt\n\ - assert_respond_to ${1:object}, :${2:method}${3}\n\ -snippet ass assert_same(..)\n\ - assert_same ${1:expected}, ${2:actual}${3}\n\ -snippet ass assert_send(..)\n\ - assert_send [${1:object}, :${2:message}, ${3:args}]${4}\n\ -snippet asns\n\ - assert_not_same ${1:unexpected}, ${2:actual}${3}\n\ -snippet ast\n\ - assert_throws :${1:expected} { ${2} }\n\ -snippet astd\n\ - assert_throws :${1:expected} do\n\ - ${2}\n\ - end\n\ -snippet asnt\n\ - assert_nothing_thrown { ${1} }\n\ -snippet asntd\n\ - assert_nothing_thrown do\n\ - ${1}\n\ - end\n\ -snippet fl\n\ - flunk \"${1:Failure message.}\"${2}\n\ -# Benchmark.bmbm do .. end\n\ -snippet bm-\n\ - TESTS = ${1:10_000}\n\ - Benchmark.bmbm do |results|\n\ - ${2}\n\ - end\n\ -snippet rep\n\ - results.report(\"${1:name}:\") { TESTS.times { ${2} }}\n\ -# Marshal.dump(.., file)\n\ -snippet Md\n\ - File.open(${1:\"path/to/file.dump\"}, \"wb\") { |${2:file}| Marshal.dump(${3:obj}, $2) }${4}\n\ -# Mashal.load(obj)\n\ -snippet Ml\n\ - File.open(${1:\"path/to/file.dump\"}, \"rb\") { |${2:file}| Marshal.load($2) }${3}\n\ -# deep_copy(..)\n\ -snippet deec\n\ - Marshal.load(Marshal.dump(${1:obj_to_copy}))${2}\n\ -snippet Pn-\n\ - PStore.new(${1:\"file_name.pstore\"})${2}\n\ -snippet tra\n\ - transaction(${1:true}) { ${2} }\n\ -# xmlread(..)\n\ -snippet xml-\n\ - REXML::Document.new(File.read(${1:\"path/to/file\"}))${2}\n\ -# xpath(..) { .. }\n\ -snippet xpa\n\ - elements.each(${1:\"//Xpath\"}) do |${2:node}|\n\ - ${3}\n\ - end\n\ -# class_from_name()\n\ -snippet clafn\n\ - split(\"::\").inject(Object) { |par, const| par.const_get(const) }\n\ -# singleton_class()\n\ -snippet sinc\n\ - class << self; self end\n\ -snippet nam\n\ - namespace :${1:`Filename()`} do\n\ - ${2}\n\ - end\n\ -snippet tas\n\ - desc \"${1:Task description}\"\n\ - task :${2:task_name => [:dependent, :tasks]} do\n\ - ${3}\n\ - end\n\ -# block\n\ -snippet b\n\ - { |${1:var}| ${2} }\n\ -snippet begin\n\ - begin\n\ - raise 'A test exception.'\n\ - rescue Exception => e\n\ - puts e.message\n\ - puts e.backtrace.inspect\n\ - else\n\ - # other exception\n\ - ensure\n\ - # always executed\n\ - end\n\ -\n\ -#debugging\n\ -snippet debug\n\ - require 'ruby-debug'; debugger; true;\n\ -snippet pry\n\ - require 'pry'; binding.pry\n\ -\n\ -#############################################\n\ -# Rails snippets - for pure Ruby, see above #\n\ -#############################################\n\ -snippet art\n\ - assert_redirected_to ${1::action => \"${2:index}\"}\n\ -snippet artnp\n\ - assert_redirected_to ${1:parent}_${2:child}_path(${3:@$1}, ${4:@$2})\n\ -snippet artnpp\n\ - assert_redirected_to ${1:parent}_${2:child}_path(${3:@$1})\n\ -snippet artp\n\ - assert_redirected_to ${1:model}_path(${2:@$1})\n\ -snippet artpp\n\ - assert_redirected_to ${1:model}s_path\n\ -snippet asd\n\ - assert_difference \"${1:Model}.${2:count}\", $1 do\n\ - ${3}\n\ - end\n\ -snippet asnd\n\ - assert_no_difference \"${1:Model}.${2:count}\" do\n\ - ${3}\n\ - end\n\ -snippet asre\n\ - assert_response :${1:success}, @response.body${2}\n\ -snippet asrj\n\ - assert_rjs :${1:replace}, \"${2:dom id}\"\n\ -snippet ass assert_select(..)\n\ - assert_select '${1:path}', :${2:text} => '${3:inner_html' ${4:do}\n\ -snippet bf\n\ - before_filter :${1:method}\n\ -snippet bt\n\ - belongs_to :${1:association}\n\ -snippet crw\n\ - cattr_accessor :${1:attr_names}\n\ -snippet defcreate\n\ - def create\n\ - @${1:model_class_name} = ${2:ModelClassName}.new(params[:$1])\n\ -\n\ - respond_to do |wants|\n\ - if @$1.save\n\ - flash[:notice] = '$2 was successfully created.'\n\ - wants.html { redirect_to(@$1) }\n\ - wants.xml { render :xml => @$1, :status => :created, :location => @$1 }\n\ - else\n\ - wants.html { render :action => \"new\" }\n\ - wants.xml { render :xml => @$1.errors, :status => :unprocessable_entity }\n\ - end\n\ - end\n\ - end${3}\n\ -snippet defdestroy\n\ - def destroy\n\ - @${1:model_class_name} = ${2:ModelClassName}.find(params[:id])\n\ - @$1.destroy\n\ -\n\ - respond_to do |wants|\n\ - wants.html { redirect_to($1s_url) }\n\ - wants.xml { head :ok }\n\ - end\n\ - end${3}\n\ -snippet defedit\n\ - def edit\n\ - @${1:model_class_name} = ${2:ModelClassName}.find(params[:id])\n\ - end\n\ -snippet defindex\n\ - def index\n\ - @${1:model_class_name} = ${2:ModelClassName}.all\n\ -\n\ - respond_to do |wants|\n\ - wants.html # index.html.erb\n\ - wants.xml { render :xml => @$1s }\n\ - end\n\ - end${3}\n\ -snippet defnew\n\ - def new\n\ - @${1:model_class_name} = ${2:ModelClassName}.new\n\ -\n\ - respond_to do |wants|\n\ - wants.html # new.html.erb\n\ - wants.xml { render :xml => @$1 }\n\ - end\n\ - end${3}\n\ -snippet defshow\n\ - def show\n\ - @${1:model_class_name} = ${2:ModelClassName}.find(params[:id])\n\ -\n\ - respond_to do |wants|\n\ - wants.html # show.html.erb\n\ - wants.xml { render :xml => @$1 }\n\ - end\n\ - end${3}\n\ -snippet defupdate\n\ - def update\n\ - @${1:model_class_name} = ${2:ModelClassName}.find(params[:id])\n\ -\n\ - respond_to do |wants|\n\ - if @$1.update_attributes(params[:$1])\n\ - flash[:notice] = '$2 was successfully updated.'\n\ - wants.html { redirect_to(@$1) }\n\ - wants.xml { head :ok }\n\ - else\n\ - wants.html { render :action => \"edit\" }\n\ - wants.xml { render :xml => @$1.errors, :status => :unprocessable_entity }\n\ - end\n\ - end\n\ - end${3}\n\ -snippet flash\n\ - flash[:${1:notice}] = \"${2}\"\n\ -snippet habtm\n\ - has_and_belongs_to_many :${1:object}, :join_table => \"${2:table_name}\", :foreign_key => \"${3}_id\"${4}\n\ -snippet hm\n\ - has_many :${1:object}\n\ -snippet hmd\n\ - has_many :${1:other}s, :class_name => \"${2:$1}\", :foreign_key => \"${3:$1}_id\", :dependent => :destroy${4}\n\ -snippet hmt\n\ - has_many :${1:object}, :through => :${2:object}\n\ -snippet ho\n\ - has_one :${1:object}\n\ -snippet i18\n\ - I18n.t('${1:type.key}')${2}\n\ -snippet ist\n\ - <%= image_submit_tag(\"${1:agree.png}\", :id => \"${2:id}\"${3} %>\n\ -snippet log\n\ - Rails.logger.${1:debug} ${2}\n\ -snippet log2\n\ - RAILS_DEFAULT_LOGGER.${1:debug} ${2}\n\ -snippet logd\n\ - logger.debug { \"${1:message}\" }${2}\n\ -snippet loge\n\ - logger.error { \"${1:message}\" }${2}\n\ -snippet logf\n\ - logger.fatal { \"${1:message}\" }${2}\n\ -snippet logi\n\ - logger.info { \"${1:message}\" }${2}\n\ -snippet logw\n\ - logger.warn { \"${1:message}\" }${2}\n\ -snippet mapc\n\ - ${1:map}.${2:connect} '${3:controller/:action/:id}'\n\ -snippet mapca\n\ - ${1:map}.catch_all \"*${2:anything}\", :controller => \"${3:default}\", :action => \"${4:error}\"${5}\n\ -snippet mapr\n\ - ${1:map}.resource :${2:resource}\n\ -snippet maprs\n\ - ${1:map}.resources :${2:resource}\n\ -snippet mapwo\n\ - ${1:map}.with_options :${2:controller} => '${3:thing}' do |$3|\n\ - ${4}\n\ - end\n\ -snippet mbs\n\ - before_save :${1:method}\n\ -snippet mcht\n\ - change_table :${1:table_name} do |t|\n\ - ${2}\n\ - end\n\ -snippet mp\n\ - map(&:${1:id})\n\ -snippet mrw\n\ - mattr_accessor :${1:attr_names}\n\ -snippet oa\n\ - order(\"${1:field}\")\n\ -snippet od\n\ - order(\"${1:field} DESC\")\n\ -snippet pa\n\ - params[:${1:id}]${2}\n\ -snippet ra\n\ - render :action => \"${1:action}\"\n\ -snippet ral\n\ - render :action => \"${1:action}\", :layout => \"${2:layoutname}\"\n\ -snippet rest\n\ - respond_to do |wants|\n\ - wants.${1:html} { ${2} }\n\ - end\n\ -snippet rf\n\ - render :file => \"${1:filepath}\"\n\ -snippet rfu\n\ - render :file => \"${1:filepath}\", :use_full_path => ${2:false}\n\ -snippet ri\n\ - render :inline => \"${1:<%= 'hello' %>}\"\n\ -snippet ril\n\ - render :inline => \"${1:<%= 'hello' %>}\", :locals => { ${2::name} => \"${3:value}\"${4} }\n\ -snippet rit\n\ - render :inline => \"${1:<%= 'hello' %>}\", :type => ${2::rxml}\n\ -snippet rjson\n\ - render :json => ${1:text to render}\n\ -snippet rl\n\ - render :layout => \"${1:layoutname}\"\n\ -snippet rn\n\ - render :nothing => ${1:true}\n\ -snippet rns\n\ - render :nothing => ${1:true}, :status => ${2:401}\n\ -snippet rp\n\ - render :partial => \"${1:item}\"\n\ -snippet rpc\n\ - render :partial => \"${1:item}\", :collection => ${2:@$1s}\n\ -snippet rpl\n\ - render :partial => \"${1:item}\", :locals => { :${2:$1} => ${3:@$1}\n\ -snippet rpo\n\ - render :partial => \"${1:item}\", :object => ${2:@$1}\n\ -snippet rps\n\ - render :partial => \"${1:item}\", :status => ${2:500}\n\ -snippet rt\n\ - render :text => \"${1:text to render}\"\n\ -snippet rtl\n\ - render :text => \"${1:text to render}\", :layout => \"${2:layoutname}\"\n\ -snippet rtlt\n\ - render :text => \"${1:text to render}\", :layout => ${2:true}\n\ -snippet rts\n\ - render :text => \"${1:text to render}\", :status => ${2:401}\n\ -snippet ru\n\ - render :update do |${1:page}|\n\ - $1.${2}\n\ - end\n\ -snippet rxml\n\ - render :xml => ${1:text to render}\n\ -snippet sc\n\ - scope :${1:name}, :where(:@${2:field} => ${3:value})\n\ -snippet sl\n\ - scope :${1:name}, lambda do |${2:value}|\n\ - where(\"${3:field = ?}\", ${4:bind var})\n\ - end\n\ -snippet sha1\n\ - Digest::SHA1.hexdigest(${1:string})\n\ -snippet sweeper\n\ - class ${1:ModelClassName}Sweeper < ActionController::Caching::Sweeper\n\ - observe $1\n\ -\n\ - def after_save(${2:model_class_name})\n\ - expire_cache($2)\n\ - end\n\ -\n\ - def after_destroy($2)\n\ - expire_cache($2)\n\ - end\n\ -\n\ - def expire_cache($2)\n\ - expire_page\n\ - end\n\ - end\n\ -snippet tcb\n\ - t.boolean :${1:title}\n\ - ${2}\n\ -snippet tcbi\n\ - t.binary :${1:title}, :limit => ${2:2}.megabytes\n\ - ${3}\n\ -snippet tcd\n\ - t.decimal :${1:title}, :precision => ${2:10}, :scale => ${3:2}\n\ - ${4}\n\ -snippet tcda\n\ - t.date :${1:title}\n\ - ${2}\n\ -snippet tcdt\n\ - t.datetime :${1:title}\n\ - ${2}\n\ -snippet tcf\n\ - t.float :${1:title}\n\ - ${2}\n\ -snippet tch\n\ - t.change :${1:name}, :${2:string}, :${3:limit} => ${4:80}\n\ - ${5}\n\ -snippet tci\n\ - t.integer :${1:title}\n\ - ${2}\n\ -snippet tcl\n\ - t.integer :lock_version, :null => false, :default => 0\n\ - ${1}\n\ -snippet tcr\n\ - t.references :${1:taggable}, :polymorphic => { :default => '${2:Photo}' }\n\ - ${3}\n\ -snippet tcs\n\ - t.string :${1:title}\n\ - ${2}\n\ -snippet tct\n\ - t.text :${1:title}\n\ - ${2}\n\ -snippet tcti\n\ - t.time :${1:title}\n\ - ${2}\n\ -snippet tcts\n\ - t.timestamp :${1:title}\n\ - ${2}\n\ -snippet tctss\n\ - t.timestamps\n\ - ${1}\n\ -snippet va\n\ - validates_associated :${1:attribute}\n\ -snippet vao\n\ - validates_acceptance_of :${1:terms}\n\ -snippet vc\n\ - validates_confirmation_of :${1:attribute}\n\ -snippet ve\n\ - validates_exclusion_of :${1:attribute}, :in => ${2:%w( mov avi )}\n\ -snippet vf\n\ - validates_format_of :${1:attribute}, :with => /${2:regex}/\n\ -snippet vi\n\ - validates_inclusion_of :${1:attribute}, :in => %w(${2: mov avi })\n\ -snippet vl\n\ - validates_length_of :${1:attribute}, :within => ${2:3}..${3:20}\n\ -snippet vn\n\ - validates_numericality_of :${1:attribute}\n\ -snippet vpo\n\ - validates_presence_of :${1:attribute}\n\ -snippet vu\n\ - validates_uniqueness_of :${1:attribute}\n\ -snippet wants\n\ - wants.${1:js|xml|html} { ${2} }\n\ -snippet wc\n\ - where(${1:\"conditions\"}${2:, bind_var})\n\ -snippet wh\n\ - where(${1:field} => ${2:value})\n\ -snippet xdelete\n\ - xhr :delete, :${1:destroy}, :id => ${2:1}${3}\n\ -snippet xget\n\ - xhr :get, :${1:show}, :id => ${2:1}${3}\n\ -snippet xpost\n\ - xhr :post, :${1:create}, :${2:object} => { ${3} }\n\ -snippet xput\n\ - xhr :put, :${1:update}, :id => ${2:1}, :${3:object} => { ${4} }${5}\n\ -snippet test\n\ - test \"should ${1:do something}\" do\n\ - ${2}\n\ - end\n\ -#migrations\n\ -snippet mac\n\ - add_column :${1:table_name}, :${2:column_name}, :${3:data_type}\n\ -snippet mrc\n\ - remove_column :${1:table_name}, :${2:column_name}\n\ -snippet mrnc\n\ - rename_column :${1:table_name}, :${2:old_column_name}, :${3:new_column_name}\n\ -snippet mcc\n\ - change_column :${1:table}, :${2:column}, :${3:type}\n\ -snippet mccc\n\ - t.column :${1:title}, :${2:string}\n\ -snippet mct\n\ - create_table :${1:table_name} do |t|\n\ - t.column :${2:name}, :${3:type}\n\ - end\n\ -snippet migration\n\ - class ${1:class_name} < ActiveRecord::Migration\n\ - def self.up\n\ - ${2}\n\ - end\n\ -\n\ - def self.down\n\ - end\n\ - end\n\ -\n\ -snippet trc\n\ - t.remove :${1:column}\n\ -snippet tre\n\ - t.rename :${1:old_column_name}, :${2:new_column_name}\n\ - ${3}\n\ -snippet tref\n\ - t.references :${1:model}\n\ -\n\ -#rspec\n\ -snippet it\n\ - it \"${1:spec_name}\" do\n\ - ${2}\n\ - end\n\ -snippet itp\n\ - it \"${1:spec_name}\"\n\ - ${2}\n\ -snippet desc\n\ - describe ${1:class_name} do\n\ - ${2}\n\ - end\n\ -snippet cont\n\ - context \"${1:message}\" do\n\ - ${2}\n\ - end\n\ -snippet bef\n\ - before :${1:each} do\n\ - ${2}\n\ - end\n\ -snippet aft\n\ - after :${1:each} do\n\ - ${2}\n\ - end\n\ -"; -exports.scope = "ruby"; - -}); diff --git a/IDE/jsrealb-ide/ace-src-noconflict/snippets/rust.js b/IDE/jsrealb-ide/ace-src-noconflict/snippets/rust.js deleted file mode 100644 index 59368434..00000000 --- a/IDE/jsrealb-ide/ace-src-noconflict/snippets/rust.js +++ /dev/null @@ -1,7 +0,0 @@ -ace.define('ace/snippets/rust', ['require', 'exports', 'module' ], function(require, exports, module) { - - -exports.snippetText = ""; -exports.scope = "rust"; - -}); diff --git a/IDE/jsrealb-ide/ace-src-noconflict/snippets/sass.js b/IDE/jsrealb-ide/ace-src-noconflict/snippets/sass.js deleted file mode 100644 index b17eb4d7..00000000 --- a/IDE/jsrealb-ide/ace-src-noconflict/snippets/sass.js +++ /dev/null @@ -1,7 +0,0 @@ -ace.define('ace/snippets/sass', ['require', 'exports', 'module' ], function(require, exports, module) { - - -exports.snippetText = ""; -exports.scope = "sass"; - -}); diff --git a/IDE/jsrealb-ide/ace-src-noconflict/snippets/scad.js b/IDE/jsrealb-ide/ace-src-noconflict/snippets/scad.js deleted file mode 100644 index 10aecfa7..00000000 --- a/IDE/jsrealb-ide/ace-src-noconflict/snippets/scad.js +++ /dev/null @@ -1,7 +0,0 @@ -ace.define('ace/snippets/scad', ['require', 'exports', 'module' ], function(require, exports, module) { - - -exports.snippetText = ""; -exports.scope = "scad"; - -}); diff --git a/IDE/jsrealb-ide/ace-src-noconflict/snippets/scala.js b/IDE/jsrealb-ide/ace-src-noconflict/snippets/scala.js deleted file mode 100644 index e9f7d033..00000000 --- a/IDE/jsrealb-ide/ace-src-noconflict/snippets/scala.js +++ /dev/null @@ -1,7 +0,0 @@ -ace.define('ace/snippets/scala', ['require', 'exports', 'module' ], function(require, exports, module) { - - -exports.snippetText = ""; -exports.scope = "scala"; - -}); diff --git a/IDE/jsrealb-ide/ace-src-noconflict/snippets/scheme.js b/IDE/jsrealb-ide/ace-src-noconflict/snippets/scheme.js deleted file mode 100644 index d2755914..00000000 --- a/IDE/jsrealb-ide/ace-src-noconflict/snippets/scheme.js +++ /dev/null @@ -1,7 +0,0 @@ -ace.define('ace/snippets/scheme', ['require', 'exports', 'module' ], function(require, exports, module) { - - -exports.snippetText = ""; -exports.scope = "scheme"; - -}); diff --git a/IDE/jsrealb-ide/ace-src-noconflict/snippets/scss.js b/IDE/jsrealb-ide/ace-src-noconflict/snippets/scss.js deleted file mode 100644 index 14b77def..00000000 --- a/IDE/jsrealb-ide/ace-src-noconflict/snippets/scss.js +++ /dev/null @@ -1,7 +0,0 @@ -ace.define('ace/snippets/scss', ['require', 'exports', 'module' ], function(require, exports, module) { - - -exports.snippetText = ""; -exports.scope = "scss"; - -}); diff --git a/IDE/jsrealb-ide/ace-src-noconflict/snippets/sh.js b/IDE/jsrealb-ide/ace-src-noconflict/snippets/sh.js deleted file mode 100644 index b052e858..00000000 --- a/IDE/jsrealb-ide/ace-src-noconflict/snippets/sh.js +++ /dev/null @@ -1,90 +0,0 @@ -ace.define('ace/snippets/sh', ['require', 'exports', 'module' ], function(require, exports, module) { - - -exports.snippetText = "# Shebang. Executing bash via /usr/bin/env makes scripts more portable.\n\ -snippet #!\n\ - #!/usr/bin/env bash\n\ - \n\ -snippet if\n\ - if [[ ${1:condition} ]]; then\n\ - ${2:#statements}\n\ - fi\n\ -snippet elif\n\ - elif [[ ${1:condition} ]]; then\n\ - ${2:#statements}\n\ -snippet for\n\ - for (( ${2:i} = 0; $2 < ${1:count}; $2++ )); do\n\ - ${3:#statements}\n\ - done\n\ -snippet fori\n\ - for ${1:needle} in ${2:haystack} ; do\n\ - ${3:#statements}\n\ - done\n\ -snippet wh\n\ - while [[ ${1:condition} ]]; do\n\ - ${2:#statements}\n\ - done\n\ -snippet until\n\ - until [[ ${1:condition} ]]; do\n\ - ${2:#statements}\n\ - done\n\ -snippet case\n\ - case ${1:word} in\n\ - ${2:pattern})\n\ - ${3};;\n\ - esac\n\ -snippet go \n\ - while getopts '${1:o}' ${2:opts} \n\ - do \n\ - case $$2 in\n\ - ${3:o0})\n\ - ${4:#staments};;\n\ - esac\n\ - done\n\ -# Set SCRIPT_DIR variable to directory script is located.\n\ -snippet sdir\n\ - SCRIPT_DIR=\"$( cd \"$( dirname \"${BASH_SOURCE[0]}\" )\" && pwd )\"\n\ -# getopt\n\ -snippet getopt\n\ - __ScriptVersion=\"${1:version}\"\n\ -\n\ - #=== FUNCTION ================================================================\n\ - # NAME: usage\n\ - # DESCRIPTION: Display usage information.\n\ - #===============================================================================\n\ - function usage ()\n\ - {\n\ - cat <<- EOT\n\ -\n\ - Usage : $${0:0} [options] [--] \n\ -\n\ - Options: \n\ - -h|help Display this message\n\ - -v|version Display script version\n\ -\n\ - EOT\n\ - } # ---------- end of function usage ----------\n\ -\n\ - #-----------------------------------------------------------------------\n\ - # Handle command line arguments\n\ - #-----------------------------------------------------------------------\n\ -\n\ - while getopts \":hv\" opt\n\ - do\n\ - case $opt in\n\ -\n\ - h|help ) usage; exit 0 ;;\n\ -\n\ - v|version ) echo \"$${0:0} -- Version $__ScriptVersion\"; exit 0 ;;\n\ -\n\ - \\? ) echo -e \"\\n Option does not exist : $OPTARG\\n\"\n\ - usage; exit 1 ;;\n\ -\n\ - esac # --- end of case ---\n\ - done\n\ - shift $(($OPTIND-1))\n\ -\n\ -"; -exports.scope = "sh"; - -}); diff --git a/IDE/jsrealb-ide/ace-src-noconflict/snippets/sjs.js b/IDE/jsrealb-ide/ace-src-noconflict/snippets/sjs.js deleted file mode 100644 index 6a03c5f0..00000000 --- a/IDE/jsrealb-ide/ace-src-noconflict/snippets/sjs.js +++ /dev/null @@ -1,7 +0,0 @@ -ace.define('ace/snippets/sjs', ['require', 'exports', 'module' ], function(require, exports, module) { - - -exports.snippetText = ""; -exports.scope = "sjs"; - -}); diff --git a/IDE/jsrealb-ide/ace-src-noconflict/snippets/snippets.js b/IDE/jsrealb-ide/ace-src-noconflict/snippets/snippets.js deleted file mode 100644 index 25b10ecd..00000000 --- a/IDE/jsrealb-ide/ace-src-noconflict/snippets/snippets.js +++ /dev/null @@ -1,16 +0,0 @@ -ace.define('ace/snippets/snippets', ['require', 'exports', 'module' ], function(require, exports, module) { - - -exports.snippetText = "# snippets for making snippets :)\n\ -snippet snip\n\ - snippet ${1:trigger}\n\ - ${2}\n\ -snippet msnip\n\ - snippet ${1:trigger} ${2:description}\n\ - ${3}\n\ -snippet v\n\ - {VISUAL}\n\ -"; -exports.scope = "snippets"; - -}); diff --git a/IDE/jsrealb-ide/ace-src-noconflict/snippets/soy_template.js b/IDE/jsrealb-ide/ace-src-noconflict/snippets/soy_template.js deleted file mode 100644 index 6545d9bf..00000000 --- a/IDE/jsrealb-ide/ace-src-noconflict/snippets/soy_template.js +++ /dev/null @@ -1,7 +0,0 @@ -ace.define('ace/snippets/soy_template', ['require', 'exports', 'module' ], function(require, exports, module) { - - -exports.snippetText = ""; -exports.scope = "soy_template"; - -}); diff --git a/IDE/jsrealb-ide/ace-src-noconflict/snippets/space.js b/IDE/jsrealb-ide/ace-src-noconflict/snippets/space.js deleted file mode 100644 index 712c8427..00000000 --- a/IDE/jsrealb-ide/ace-src-noconflict/snippets/space.js +++ /dev/null @@ -1,7 +0,0 @@ -ace.define('ace/snippets/space', ['require', 'exports', 'module' ], function(require, exports, module) { - - -exports.snippetText = ""; -exports.scope = "space"; - -}); diff --git a/IDE/jsrealb-ide/ace-src-noconflict/snippets/sql.js b/IDE/jsrealb-ide/ace-src-noconflict/snippets/sql.js deleted file mode 100644 index a9b359ba..00000000 --- a/IDE/jsrealb-ide/ace-src-noconflict/snippets/sql.js +++ /dev/null @@ -1,33 +0,0 @@ -ace.define('ace/snippets/sql', ['require', 'exports', 'module' ], function(require, exports, module) { - - -exports.snippetText = "snippet tbl\n\ - create table ${1:table} (\n\ - ${2:columns}\n\ - );\n\ -snippet col\n\ - ${1:name} ${2:type} ${3:default ''} ${4:not null}\n\ -snippet ccol\n\ - ${1:name} varchar2(${2:size}) ${3:default ''} ${4:not null}\n\ -snippet ncol\n\ - ${1:name} number ${3:default 0} ${4:not null}\n\ -snippet dcol\n\ - ${1:name} date ${3:default sysdate} ${4:not null}\n\ -snippet ind\n\ - create index ${3:$1_$2} on ${1:table}(${2:column});\n\ -snippet uind\n\ - create unique index ${1:name} on ${2:table}(${3:column});\n\ -snippet tblcom\n\ - comment on table ${1:table} is '${2:comment}';\n\ -snippet colcom\n\ - comment on column ${1:table}.${2:column} is '${3:comment}';\n\ -snippet addcol\n\ - alter table ${1:table} add (${2:column} ${3:type});\n\ -snippet seq\n\ - create sequence ${1:name} start with ${2:1} increment by ${3:1} minvalue ${4:1};\n\ -snippet s*\n\ - select * from ${1:table}\n\ -"; -exports.scope = "sql"; - -}); diff --git a/IDE/jsrealb-ide/ace-src-noconflict/snippets/stylus.js b/IDE/jsrealb-ide/ace-src-noconflict/snippets/stylus.js deleted file mode 100644 index 3369c4c3..00000000 --- a/IDE/jsrealb-ide/ace-src-noconflict/snippets/stylus.js +++ /dev/null @@ -1,7 +0,0 @@ -ace.define('ace/snippets/stylus', ['require', 'exports', 'module' ], function(require, exports, module) { - - -exports.snippetText = ""; -exports.scope = "stylus"; - -}); diff --git a/IDE/jsrealb-ide/ace-src-noconflict/snippets/svg.js b/IDE/jsrealb-ide/ace-src-noconflict/snippets/svg.js deleted file mode 100644 index 24ff8ed0..00000000 --- a/IDE/jsrealb-ide/ace-src-noconflict/snippets/svg.js +++ /dev/null @@ -1,7 +0,0 @@ -ace.define('ace/snippets/svg', ['require', 'exports', 'module' ], function(require, exports, module) { - - -exports.snippetText = ""; -exports.scope = "svg"; - -}); diff --git a/IDE/jsrealb-ide/ace-src-noconflict/snippets/tcl.js b/IDE/jsrealb-ide/ace-src-noconflict/snippets/tcl.js deleted file mode 100644 index 4347cbc9..00000000 --- a/IDE/jsrealb-ide/ace-src-noconflict/snippets/tcl.js +++ /dev/null @@ -1,99 +0,0 @@ -ace.define('ace/snippets/tcl', ['require', 'exports', 'module' ], function(require, exports, module) { - - -exports.snippetText = "# #!/usr/bin/env tclsh\n\ -snippet #!\n\ - #!/usr/bin/env tclsh\n\ - \n\ -# Process\n\ -snippet pro\n\ - proc ${1:function_name} {${2:args}} {\n\ - ${3:#body ...}\n\ - }\n\ -#xif\n\ -snippet xif\n\ - ${1:expr}? ${2:true} : ${3:false}\n\ -# Conditional\n\ -snippet if\n\ - if {${1}} {\n\ - ${2:# body...}\n\ - }\n\ -# Conditional if..else\n\ -snippet ife\n\ - if {${1}} {\n\ - ${2:# body...}\n\ - } else {\n\ - ${3:# else...}\n\ - }\n\ -# Conditional if..elsif..else\n\ -snippet ifee\n\ - if {${1}} {\n\ - ${2:# body...}\n\ - } elseif {${3}} {\n\ - ${4:# elsif...}\n\ - } else {\n\ - ${5:# else...}\n\ - }\n\ -# If catch then\n\ -snippet ifc\n\ - if { [catch {${1:#do something...}} ${2:err}] } {\n\ - ${3:# handle failure...}\n\ - }\n\ -# Catch\n\ -snippet catch\n\ - catch {${1}} ${2:err} ${3:options}\n\ -# While Loop\n\ -snippet wh\n\ - while {${1}} {\n\ - ${2:# body...}\n\ - }\n\ -# For Loop\n\ -snippet for\n\ - for {set ${2:var} 0} {$$2 < ${1:count}} {${3:incr} $2} {\n\ - ${4:# body...}\n\ - }\n\ -# Foreach Loop\n\ -snippet fore\n\ - foreach ${1:x} {${2:#list}} {\n\ - ${3:# body...}\n\ - }\n\ -# after ms script...\n\ -snippet af\n\ - after ${1:ms} ${2:#do something}\n\ -# after cancel id\n\ -snippet afc\n\ - after cancel ${1:id or script}\n\ -# after idle\n\ -snippet afi\n\ - after idle ${1:script}\n\ -# after info id\n\ -snippet afin\n\ - after info ${1:id}\n\ -# Expr\n\ -snippet exp\n\ - expr {${1:#expression here}}\n\ -# Switch\n\ -snippet sw\n\ - switch ${1:var} {\n\ - ${3:pattern 1} {\n\ - ${4:#do something}\n\ - }\n\ - default {\n\ - ${2:#do something}\n\ - }\n\ - }\n\ -# Case\n\ -snippet ca\n\ - ${1:pattern} {\n\ - ${2:#do something}\n\ - }${3}\n\ -# Namespace eval\n\ -snippet ns\n\ - namespace eval ${1:path} {${2:#script...}}\n\ -# Namespace current\n\ -snippet nsc\n\ - namespace current\n\ -"; -exports.scope = "tcl"; - -}); diff --git a/IDE/jsrealb-ide/ace-src-noconflict/snippets/tex.js b/IDE/jsrealb-ide/ace-src-noconflict/snippets/tex.js deleted file mode 100644 index ce490778..00000000 --- a/IDE/jsrealb-ide/ace-src-noconflict/snippets/tex.js +++ /dev/null @@ -1,197 +0,0 @@ -ace.define('ace/snippets/tex', ['require', 'exports', 'module' ], function(require, exports, module) { - - -exports.snippetText = "#PREAMBLE\n\ -#newcommand\n\ -snippet nc\n\ - \\newcommand{\\${1:cmd}}[${2:opt}]{${3:realcmd}}${4}\n\ -#usepackage\n\ -snippet up\n\ - \\usepackage[${1:[options}]{${2:package}}\n\ -#newunicodechar\n\ -snippet nuc\n\ - \\newunicodechar{${1}}{${2:\\ensuremath}${3:tex-substitute}}}\n\ -#DeclareMathOperator\n\ -snippet dmo\n\ - \\DeclareMathOperator{${1}}{${2}}\n\ -\n\ -#DOCUMENT\n\ -# \\begin{}...\\end{}\n\ -snippet begin\n\ - \\begin{${1:env}}\n\ - ${2}\n\ - \\end{$1}\n\ -# Tabular\n\ -snippet tab\n\ - \\begin{${1:tabular}}{${2:c}}\n\ - ${3}\n\ - \\end{$1}\n\ -snippet thm\n\ - \\begin[${1:author}]{${2:thm}}\n\ - ${3}\n\ - \\end{$1}\n\ -snippet center\n\ - \\begin{center}\n\ - ${1}\n\ - \\end{center}\n\ -# Align(ed)\n\ -snippet ali\n\ - \\begin{align${1:ed}}\n\ - ${2}\n\ - \\end{align$1}\n\ -# Gather(ed)\n\ -snippet gat\n\ - \\begin{gather${1:ed}}\n\ - ${2}\n\ - \\end{gather$1}\n\ -# Equation\n\ -snippet eq\n\ - \\begin{equation}\n\ - ${1}\n\ - \\end{equation}\n\ -# Equation\n\ -snippet eq*\n\ - \\begin{equation*}\n\ - ${1}\n\ - \\end{equation*}\n\ -# Unnumbered Equation\n\ -snippet \\\n\ - \\[\n\ - ${1}\n\ - \\]\n\ -# Enumerate\n\ -snippet enum\n\ - \\begin{enumerate}\n\ - \\item ${1}\n\ - \\end{enumerate}\n\ -# Itemize\n\ -snippet itemize\n\ - \\begin{itemize}\n\ - \\item ${1}\n\ - \\end{itemize}\n\ -# Description\n\ -snippet desc\n\ - \\begin{description}\n\ - \\item[${1}] ${2}\n\ - \\end{description}\n\ -# Matrix\n\ -snippet mat\n\ - \\begin{${1:p/b/v/V/B/small}matrix}\n\ - ${2}\n\ - \\end{$1matrix}\n\ -# Cases\n\ -snippet cas\n\ - \\begin{cases}\n\ - ${1:equation}, &\\text{ if }${2:case}\\\\\n\ - ${3}\n\ - \\end{cases}\n\ -# Split\n\ -snippet spl\n\ - \\begin{split}\n\ - ${1}\n\ - \\end{split}\n\ -# Part\n\ -snippet part\n\ - \\part{${1:part name}} % (fold)\n\ - \\label{prt:${2:$1}}\n\ - ${3}\n\ - % part $2 (end)\n\ -# Chapter\n\ -snippet cha\n\ - \\chapter{${1:chapter name}}\n\ - \\label{cha:${2:$1}}\n\ - ${3}\n\ -# Section\n\ -snippet sec\n\ - \\section{${1:section name}}\n\ - \\label{sec:${2:$1}}\n\ - ${3}\n\ -# Sub Section\n\ -snippet sub\n\ - \\subsection{${1:subsection name}}\n\ - \\label{sub:${2:$1}}\n\ - ${3}\n\ -# Sub Sub Section\n\ -snippet subs\n\ - \\subsubsection{${1:subsubsection name}}\n\ - \\label{ssub:${2:$1}}\n\ - ${3}\n\ -# Paragraph\n\ -snippet par\n\ - \\paragraph{${1:paragraph name}}\n\ - \\label{par:${2:$1}}\n\ - ${3}\n\ -# Sub Paragraph\n\ -snippet subp\n\ - \\subparagraph{${1:subparagraph name}}\n\ - \\label{subp:${2:$1}}\n\ - ${3}\n\ -#References\n\ -snippet itd\n\ - \\item[${1:description}] ${2:item}\n\ -snippet figure\n\ - ${1:Figure}~\\ref{${2:fig:}}${3}\n\ -snippet table\n\ - ${1:Table}~\\ref{${2:tab:}}${3}\n\ -snippet listing\n\ - ${1:Listing}~\\ref{${2:list}}${3}\n\ -snippet section\n\ - ${1:Section}~\\ref{${2:sec:}}${3}\n\ -snippet page\n\ - ${1:page}~\\pageref{${2}}${3}\n\ -snippet index\n\ - \\index{${1:index}}${2}\n\ -#Citations\n\ -snippet cite\n\ - \\cite[${1}]{${2}}${3}\n\ -snippet fcite\n\ - \\footcite[${1}]{${2}}${3}\n\ -#Formating text: italic, bold, underline, small capital, emphase ..\n\ -snippet it\n\ - \\textit{${1:text}}\n\ -snippet bf\n\ - \\textbf{${1:text}}\n\ -snippet under\n\ - \\underline{${1:text}}\n\ -snippet emp\n\ - \\emph{${1:text}}\n\ -snippet sc\n\ - \\textsc{${1:text}}\n\ -#Choosing font\n\ -snippet sf\n\ - \\textsf{${1:text}}\n\ -snippet rm\n\ - \\textrm{${1:text}}\n\ -snippet tt\n\ - \\texttt{${1:text}}\n\ -#misc\n\ -snippet ft\n\ - \\footnote{${1:text}}\n\ -snippet fig\n\ - \\begin{figure}\n\ - \\begin{center}\n\ - \\includegraphics[scale=${1}]{Figures/${2}}\n\ - \\end{center}\n\ - \\caption{${3}}\n\ - \\label{fig:${4}}\n\ - \\end{figure}\n\ -snippet tikz\n\ - \\begin{figure}\n\ - \\begin{center}\n\ - \\begin{tikzpicture}[scale=${1:1}]\n\ - ${2}\n\ - \\end{tikzpicture}\n\ - \\end{center}\n\ - \\caption{${3}}\n\ - \\label{fig:${4}}\n\ - \\end{figure}\n\ -#math\n\ -snippet stackrel\n\ - \\stackrel{${1:above}}{${2:below}} ${3}\n\ -snippet frac\n\ - \\frac{${1:num}}{${2:denom}}\n\ -snippet sum\n\ - \\sum^{${1:n}}_{${2:i=1}}{${3}}"; -exports.scope = "tex"; - -}); diff --git a/IDE/jsrealb-ide/ace-src-noconflict/snippets/text.js b/IDE/jsrealb-ide/ace-src-noconflict/snippets/text.js deleted file mode 100644 index 0834cfca..00000000 --- a/IDE/jsrealb-ide/ace-src-noconflict/snippets/text.js +++ /dev/null @@ -1,7 +0,0 @@ -ace.define('ace/snippets/text', ['require', 'exports', 'module' ], function(require, exports, module) { - - -exports.snippetText = ""; -exports.scope = "text"; - -}); diff --git a/IDE/jsrealb-ide/ace-src-noconflict/snippets/textile.js b/IDE/jsrealb-ide/ace-src-noconflict/snippets/textile.js deleted file mode 100644 index 106849b7..00000000 --- a/IDE/jsrealb-ide/ace-src-noconflict/snippets/textile.js +++ /dev/null @@ -1,37 +0,0 @@ -ace.define('ace/snippets/textile', ['require', 'exports', 'module' ], function(require, exports, module) { - - -exports.snippetText = "# Jekyll post header\n\ -snippet header\n\ - ---\n\ - title: ${1:title}\n\ - layout: post\n\ - date: ${2:date} ${3:hour:minute:second} -05:00\n\ - ---\n\ -\n\ -# Image\n\ -snippet img\n\ - !${1:url}(${2:title}):${3:link}!\n\ -\n\ -# Table\n\ -snippet |\n\ - |${1}|${2}\n\ -\n\ -# Link\n\ -snippet link\n\ - \"${1:link text}\":${2:url}\n\ -\n\ -# Acronym\n\ -snippet (\n\ - (${1:Expand acronym})${2}\n\ -\n\ -# Footnote\n\ -snippet fn\n\ - [${1:ref number}] ${3}\n\ -\n\ - fn$1. ${2:footnote}\n\ - \n\ -"; -exports.scope = "textile"; - -}); diff --git a/IDE/jsrealb-ide/ace-src-noconflict/snippets/toml.js b/IDE/jsrealb-ide/ace-src-noconflict/snippets/toml.js deleted file mode 100644 index 724bea94..00000000 --- a/IDE/jsrealb-ide/ace-src-noconflict/snippets/toml.js +++ /dev/null @@ -1,7 +0,0 @@ -ace.define('ace/snippets/toml', ['require', 'exports', 'module' ], function(require, exports, module) { - - -exports.snippetText = ""; -exports.scope = "toml"; - -}); diff --git a/IDE/jsrealb-ide/ace-src-noconflict/snippets/twig.js b/IDE/jsrealb-ide/ace-src-noconflict/snippets/twig.js deleted file mode 100644 index 0d8b680d..00000000 --- a/IDE/jsrealb-ide/ace-src-noconflict/snippets/twig.js +++ /dev/null @@ -1,7 +0,0 @@ -ace.define('ace/snippets/twig', ['require', 'exports', 'module' ], function(require, exports, module) { - - -exports.snippetText = ""; -exports.scope = "twig"; - -}); diff --git a/IDE/jsrealb-ide/ace-src-noconflict/snippets/typescript.js b/IDE/jsrealb-ide/ace-src-noconflict/snippets/typescript.js deleted file mode 100644 index 0c0affd4..00000000 --- a/IDE/jsrealb-ide/ace-src-noconflict/snippets/typescript.js +++ /dev/null @@ -1,7 +0,0 @@ -ace.define('ace/snippets/typescript', ['require', 'exports', 'module' ], function(require, exports, module) { - - -exports.snippetText = ""; -exports.scope = "typescript"; - -}); diff --git a/IDE/jsrealb-ide/ace-src-noconflict/snippets/vbscript.js b/IDE/jsrealb-ide/ace-src-noconflict/snippets/vbscript.js deleted file mode 100644 index c05c1f86..00000000 --- a/IDE/jsrealb-ide/ace-src-noconflict/snippets/vbscript.js +++ /dev/null @@ -1,7 +0,0 @@ -ace.define('ace/snippets/vbscript', ['require', 'exports', 'module' ], function(require, exports, module) { - - -exports.snippetText = ""; -exports.scope = "vbscript"; - -}); diff --git a/IDE/jsrealb-ide/ace-src-noconflict/snippets/velocity.js b/IDE/jsrealb-ide/ace-src-noconflict/snippets/velocity.js deleted file mode 100644 index c2e8b173..00000000 --- a/IDE/jsrealb-ide/ace-src-noconflict/snippets/velocity.js +++ /dev/null @@ -1,36 +0,0 @@ -ace.define('ace/snippets/velocity', ['require', 'exports', 'module' ], function(require, exports, module) { - - -exports.snippetText = "# macro\n\ -snippet #macro\n\ - #macro ( ${1:macroName} ${2:\\$var1, [\\$var2, ...]} )\n\ - ${3:## macro code}\n\ - #end\n\ -# foreach\n\ -snippet #foreach\n\ - #foreach ( ${1:\\$item} in ${2:\\$collection} )\n\ - ${3:## foreach code}\n\ - #end\n\ -# if\n\ -snippet #if\n\ - #if ( ${1:true} )\n\ - ${0}\n\ - #end\n\ -# if ... else\n\ -snippet #ife\n\ - #if ( ${1:true} )\n\ - ${2}\n\ - #else\n\ - ${0}\n\ - #end\n\ -#import\n\ -snippet #import\n\ - #import ( \"${1:path/to/velocity/format}\" )\n\ -# set\n\ -snippet #set\n\ - #set ( $${1:var} = ${0} )\n\ -"; -exports.scope = "velocity"; -exports.includeScopes = ["html", "javascript", "css"]; - -}); diff --git a/IDE/jsrealb-ide/ace-src-noconflict/snippets/verilog.js b/IDE/jsrealb-ide/ace-src-noconflict/snippets/verilog.js deleted file mode 100644 index ad123a37..00000000 --- a/IDE/jsrealb-ide/ace-src-noconflict/snippets/verilog.js +++ /dev/null @@ -1,7 +0,0 @@ -ace.define('ace/snippets/verilog', ['require', 'exports', 'module' ], function(require, exports, module) { - - -exports.snippetText = ""; -exports.scope = "verilog"; - -}); diff --git a/IDE/jsrealb-ide/ace-src-noconflict/snippets/vhdl.js b/IDE/jsrealb-ide/ace-src-noconflict/snippets/vhdl.js deleted file mode 100644 index cf6994e5..00000000 --- a/IDE/jsrealb-ide/ace-src-noconflict/snippets/vhdl.js +++ /dev/null @@ -1,7 +0,0 @@ -ace.define('ace/snippets/vhdl', ['require', 'exports', 'module' ], function(require, exports, module) { - - -exports.snippetText = ""; -exports.scope = "vhdl"; - -}); \ No newline at end of file diff --git a/IDE/jsrealb-ide/ace-src-noconflict/snippets/xml.js b/IDE/jsrealb-ide/ace-src-noconflict/snippets/xml.js deleted file mode 100644 index d26f8fdf..00000000 --- a/IDE/jsrealb-ide/ace-src-noconflict/snippets/xml.js +++ /dev/null @@ -1,7 +0,0 @@ -ace.define('ace/snippets/xml', ['require', 'exports', 'module' ], function(require, exports, module) { - - -exports.snippetText = ""; -exports.scope = "xml"; - -}); diff --git a/IDE/jsrealb-ide/ace-src-noconflict/snippets/xquery.js b/IDE/jsrealb-ide/ace-src-noconflict/snippets/xquery.js deleted file mode 100644 index aeb24d86..00000000 --- a/IDE/jsrealb-ide/ace-src-noconflict/snippets/xquery.js +++ /dev/null @@ -1,7 +0,0 @@ -ace.define('ace/snippets/xquery', ['require', 'exports', 'module' ], function(require, exports, module) { - - -exports.snippetText = ""; -exports.scope = "xquery"; - -}); diff --git a/IDE/jsrealb-ide/ace-src-noconflict/snippets/yaml.js b/IDE/jsrealb-ide/ace-src-noconflict/snippets/yaml.js deleted file mode 100644 index 1c2df806..00000000 --- a/IDE/jsrealb-ide/ace-src-noconflict/snippets/yaml.js +++ /dev/null @@ -1,7 +0,0 @@ -ace.define('ace/snippets/yaml', ['require', 'exports', 'module' ], function(require, exports, module) { - - -exports.snippetText = ""; -exports.scope = "yaml"; - -}); diff --git a/IDE/jsrealb-ide/ace-src-noconflict/theme-ambiance.js b/IDE/jsrealb-ide/ace-src-noconflict/theme-ambiance.js deleted file mode 100644 index 06dde3b3..00000000 --- a/IDE/jsrealb-ide/ace-src-noconflict/theme-ambiance.js +++ /dev/null @@ -1,202 +0,0 @@ -/* ***** BEGIN LICENSE BLOCK ***** - * Distributed under the BSD license: - * - * Copyright 2011 Irakli Gozalishvili. All rights reserved. - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to - * deal in the Software without restriction, including without limitation the - * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or - * sell copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING - * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS - * IN THE SOFTWARE. - * ***** END LICENSE BLOCK ***** */ - -ace.define('ace/theme/ambiance', ['require', 'exports', 'module' , 'ace/lib/dom'], function(require, exports, module) { - -exports.isDark = true; -exports.cssClass = "ace-ambiance"; -exports.cssText = ".ace-ambiance .ace_gutter {\ -background-color: #3d3d3d;\ -background-image: -moz-linear-gradient(left, #3D3D3D, #333);\ -background-image: -ms-linear-gradient(left, #3D3D3D, #333);\ -background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#3D3D3D), to(#333));\ -background-image: -webkit-linear-gradient(left, #3D3D3D, #333);\ -background-image: -o-linear-gradient(left, #3D3D3D, #333);\ -background-image: linear-gradient(left, #3D3D3D, #333);\ -background-repeat: repeat-x;\ -border-right: 1px solid #4d4d4d;\ -text-shadow: 0px 1px 1px #4d4d4d;\ -color: #222;\ -}\ -.ace-ambiance .ace_gutter-layer {\ -background: repeat left top;\ -}\ -.ace-ambiance .ace_fold-widget {\ -text-align: center;\ -}\ -.ace-ambiance .ace_fold-widget:hover {\ -color: #777;\ -}\ -.ace-ambiance .ace_fold-widget.ace_start,\ -.ace-ambiance .ace_fold-widget.ace_end,\ -.ace-ambiance .ace_fold-widget.ace_closed{\ -background: none;\ -border: none;\ -box-shadow: none;\ -}\ -.ace-ambiance .ace_fold-widget.ace_start:after {\ -content: '▾'\ -}\ -.ace-ambiance .ace_fold-widget.ace_end:after {\ -content: '▴'\ -}\ -.ace-ambiance .ace_fold-widget.ace_closed:after {\ -content: '‣'\ -}\ -.ace-ambiance .ace_print-margin {\ -border-left: 1px dotted #2D2D2D;\ -right: 0;\ -background: #262626;\ -}\ -.ace-ambiance .ace_scroller {\ --webkit-box-shadow: inset 0 0 10px black;\ --moz-box-shadow: inset 0 0 10px black;\ --o-box-shadow: inset 0 0 10px black;\ -box-shadow: inset 0 0 10px black;\ -}\ -.ace-ambiance {\ -color: #E6E1DC;\ -background-color: #202020;\ -}\ -.ace-ambiance .ace_cursor {\ -border-left: 1px solid #7991E8;\ -}\ -.ace-ambiance .ace_overwrite-cursors .ace_cursor {\ -border: 1px solid #FFE300;\ -background: #766B13;\ -}\ -.ace-ambiance.normal-mode .ace_cursor-layer {\ -z-index: 0;\ -}\ -.ace-ambiance .ace_marker-layer .ace_selection {\ -background: rgba(221, 240, 255, 0.20);\ -}\ -.ace-ambiance .ace_marker-layer .ace_selected-word {\ -border-radius: 4px;\ -border: 8px solid #3f475d;\ -box-shadow: 0 0 4px black;\ -}\ -.ace-ambiance .ace_marker-layer .ace_step {\ -background: rgb(198, 219, 174);\ -}\ -.ace-ambiance .ace_marker-layer .ace_bracket {\ -margin: -1px 0 0 -1px;\ -border: 1px solid rgba(255, 255, 255, 0.25);\ -}\ -.ace-ambiance .ace_marker-layer .ace_active-line {\ -background: rgba(255, 255, 255, 0.031);\ -}\ -.ace-ambiance .ace_invisible {\ -color: #333;\ -}\ -.ace-ambiance .ace_paren {\ -color: #24C2C7;\ -}\ -.ace-ambiance .ace_keyword {\ -color: #cda869;\ -}\ -.ace-ambiance .ace_keyword.ace_operator {\ -color: #fa8d6a;\ -}\ -.ace-ambiance .ace_punctuation.ace_operator {\ -color: #fa8d6a;\ -}\ -.ace-ambiance .ace_identifier {\ -}\ -.ace-ambiance .ace-statement {\ -color: #cda869;\ -}\ -.ace-ambiance .ace_constant {\ -color: #CF7EA9;\ -}\ -.ace-ambiance .ace_constant.ace_language {\ -color: #CF7EA9;\ -}\ -.ace-ambiance .ace_constant.ace_library {\ -}\ -.ace-ambiance .ace_constant.ace_numeric {\ -color: #78CF8A;\ -}\ -.ace-ambiance .ace_invalid {\ -text-decoration: underline;\ -}\ -.ace-ambiance .ace_invalid.ace_illegal {\ -color:#F8F8F8;\ -background-color: rgba(86, 45, 86, 0.75);\ -}\ -.ace-ambiance .ace_invalid,\ -.ace-ambiance .ace_deprecated {\ -text-decoration: underline;\ -font-style: italic;\ -color: #D2A8A1;\ -}\ -.ace-ambiance .ace_support {\ -color: #9B859D;\ -}\ -.ace-ambiance .ace_support.ace_function {\ -color: #DAD085;\ -}\ -.ace-ambiance .ace_function.ace_buildin {\ -color: #9b859d;\ -}\ -.ace-ambiance .ace_string {\ -color: #8f9d6a;\ -}\ -.ace-ambiance .ace_string.ace_regexp {\ -color: #DAD085;\ -}\ -.ace-ambiance .ace_comment {\ -font-style: italic;\ -color: #555;\ -}\ -.ace-ambiance .ace_comment.ace_doc {\ -}\ -.ace-ambiance .ace_comment.ace_doc.ace_tag {\ -color: #666;\ -font-style: normal;\ -}\ -.ace-ambiance .ace_definition,\ -.ace-ambiance .ace_type {\ -color: #aac6e3;\ -}\ -.ace-ambiance .ace_variable {\ -color: #9999cc;\ -}\ -.ace-ambiance .ace_variable.ace_language {\ -color: #9b859d;\ -}\ -.ace-ambiance .ace_xml-pe {\ -color: #494949;\ -}\ -.ace-ambiance .ace_gutter-layer,\ -.ace-ambiance .ace_text-layer {\ -background-image: url(\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAMgAAADICAQAAAAHUWYVAABFFUlEQVQYGbzBCeDVU/74/6fj9HIcx/FRHx9JCFmzMyGRURhLZIkUsoeRfUjS2FNDtr6WkMhO9sm+S8maJfu+Jcsg+/o/c+Z4z/t97/vezy3z+z8ekGlnYICG/o7gdk+wmSHZ1z4pJItqapjoKXWahm8NmV6eOTbWUOp6/6a/XIg6GQqmenJ2lDHyvCFZ2cBDbmtHA043VFhHwXxClWmeYAdLhV00Bd85go8VmaFCkbVkzlQENzfBDZ5gtN7HwF0KDrTwJ0dypSOzpaKCMwQHKTIreYIxlmhXTzTWkVm+LTynZhiSBT3RZQ7aGfjGEd3qyXQ1FDymqbKxpspERQN2MiRjNZlFFQXfCNFm9nM1zpAsoYjmtRTc5ajwuaXc5xrWskT97RaKzAGe5ARHhVUsDbjKklziiX5WROcJwSNCNI+9w1Jwv4Zb2r7lCMZ4oq5C0EdTx+2GzNuKpJ+iFf38JEWkHJn9DNF7mmBDITrWEg0VWL3pHU20tSZnuqWu+R3BtYa8XxV1HO7GyD32UkOpL/yDloINFTmvtId+nmAjxRw40VMwVKiwrKLE4bK5UOVntYwhOcSSXKrJHKPJedocpGjVz/ZMIbnYUPB10/eKCrs5apqpgVmWzBYWpmtKHecJPjaUuEgRDDaU0oZghCJ6zNMQ5ZhDYx05r5v2muQdM0EILtXUsaKiQX9WMEUotagQzFbUNN6NUPC2nm5pxEWGCjMc3GdJHjSU2kORLK/JGSrkfGEIjncU/CYUnOipoYemwj8tST9NsJmB7TUVXtbUtXATJVZXBMvYeTXJfobgJUPmGMP/yFaWonaa6BcFO3nqcIqCozSZoZoSr1g4zJOzuyGnxTEX3lUEJ7WcZgme8ddaWvWJo2AJR9DZU3CUIbhCSG6ybSwN6qtJVnCU2svDTP2ZInOw2cBTrqtQahtNZn9NcJ4l2NaSmSkkP1noZWnVwkLmdUPOwLZEwy2Z3S3R+4rIG9hcbpPXHFVWcQdZkn2FOta3cKWQnNRC5g1LsJah4GCzSVsKnCOY5OAFRTBekyyryeyilhFKva75r4Mc0aWanGEaThcy31s439KKxTzJYY5WTHPU1FtIHjQU3Oip4xlNzj/lBw23dYZVliQa7WAXf4shetcQfatI+jWRDBPmyNeW6A1P5kdDgyYJlba0BIM8BZu1JfrFwItyjcAMR3K0BWOIrtMEXyhyrlVEx3ui5dUBjmB/Q3CXW85R4mBD0s7B+4q5tKUjOlb9qqmhi5AZ6GFIC5HXtOobdYGlVdMVbNJ8toNTFcHxnoL+muBagcctjWnbNMuR00uI7nQESwg5q2qqrKWIfrNUmeQocY6HuyxJV02wj36w00yhpmUFenv4p6fUkZYqLyuinx2RGOjhCXYyJF84oiU00YMOOhhquNdfbOB7gU88pY4xJO8LVdp6/q2voeB4R04vIdhSE40xZObx1HGGJ/ja0LBthFInKaLPPFzuCaYaoj8JjPME8yoyxo6zlBqkiUZYgq00OYMswbWO5NGmq+xhipxHLRW29ARjNKXO0wRnear8XSg4XFPLKEPUS1GqvyLwiuBUoa7zpZ0l5xxFwWmWZC1H5h5FwU8eQ7K+g8UcVY6TMQreVQT/8uQ8Z+ALIXnSEa2pYZQneE9RZbSBNYXfWYJzW/h/4j4Dp1tYVcFIC5019Vyi4ThPqSFCzjGWaHQTBU8q6vrVwgxP9Lkm840imWKpcLCjYTtrKuwvsKSnrvHCXGkSMk9p6lhckfRpIeis+N2PiszT+mFLspyGleUhDwcLrZqmyeylxwjBcKHEapqkmyangyLZRVOijwOtCY5SsG5zL0OwlCJ4y5KznF3EUNDDrinwiyLZRzOXtlBbK5ITHFGLp8Q0R6ab6mS7enI2cFrxOyHvOCFaT1HThS1krjCwqWeurCkk+willhCC+RSZnRXBiZaC5RXRIZYKp2lyfrHwiKPKR0JDzrdU2EFgpidawlFDR6FgXUMNa+g1FY3bUQh2cLCwosRdnuQTS/S+JVrGLeWIvtQUvONJxlqSQYYKpwoN2kaocLjdVsis4Mk80ESF2YpSkzwldjHkjFCUutI/r+EHDU8oCs6yzL3PhWiEooZdFMkymlas4AcI3KmoMMNSQ3tHzjGWCrcJJdYyZC7QFGwjRL9p+MrRkAGWzIaWCn9W0F3TsK01c2ZvQw0byvxuQU0r1lM0qJO7wW0kRIMdDTtXEdzi4VIh+EoIHm0mWtAtpCixlabgn83fKTI7anJe9ST7WIK1DMGpQmYeA58ImV6ezOGOzK2Kgq01pd60cKWiUi9Lievb/0vIDPHQ05Kzt4ddPckQBQtoaurjyHnek/nKzpQLrVgKPjIkh2v4uyezpv+Xoo7fPFXaGFp1vaLKxQ4uUpQQS5VuQs7BCq4xRJv7fwpVvvFEB3j+620haOuocqMhWd6TTPAEx+mdFNGHdranFe95WrWmIvlY4F1Dle2ECgc6cto7SryuqGGGha0tFQ5V53migUKmg6XKAo4qS3mik+0OZpAhOLeZKicacgaYcyx5hypYQE02ZA4xi/pNhOQxR4klNKyqacj+mpxnLTnnGSo85++3ZCZq6lrZkXlGEX3o+C9FieccJbZWVFjC0Yo1FZnJhoYMFoI1hEZ9r6hwg75HwzBNhbZCdJEfJwTPGzJvaKImw1yYX1HDAmpXR+ZJQ/SmgqMNVQb5vgamGwLtt7VwvP7Qk1xpiM5x5Cyv93E06MZmgs0Nya2azIKOYKCGBQQW97RmhKNKF02JZqHEJ4o58qp7X5EcZmc56trXEqzjCBZ1MFGR87Ql2tSTs6CGxS05PTzRQorkbw7aKoKXFDXsYW42VJih/q+FP2BdTzDTwVqOYB13liM50vG7wy28qagyuIXMeQI/Oqq8bcn5wJI50xH00CRntyfpL1T4hydYpoXgNiFzoIUTDZnLNRzh4TBHwbYGDvZkxmlyJloyr6tRihpeUG94GnKtIznREF0tzJG/OOr73JBcrSh1k6WuTprgLU+mnSGnv6Zge0NNz+kTDdH8nuAuTdJDCNb21LCiIuqlYbqGzT3RAoZofQfjFazkqeNWdYaGvYTM001EW2oKPvVk1ldUGSgUtHFwjKM1h9jnFcmy5lChoLNaQMGGDsYbKixlaMBmmsx1QjCfflwTfO/gckW0ruZ3jugKR3R5W9hGUWqCgxuFgsuaCHorotGKzGaeZB9DMsaTnKCpMtwTvOzhYk0rdrArKCqcaWmVk1+F372ur1YkKxgatI8Qfe1gIX9wE9FgS8ESmuABIXnRUbCapcKe+nO7slClSZFzpV/LkLncEb1qiO42fS3R855Su2mCLh62t1SYZZYVmKwIHjREF2uihTzB20JOkz7dkxzYQnK0UOU494wh+VWRc6Un2kpTaVgLDFEkJ/uhzRcI0YKGgpGWOlocBU/a4fKoJ/pEaNV6jip3+Es9VXY078rGnmAdf7t9ylPXS34RBSuYPs1UecZTU78WanhBCHpZ5sAoTz0LGZKjPf9TRypqWEiTvOFglL1fCEY3wY/++rbk7C8bWebA6p6om6PgOL2kp44TFJlVNBXae2rqqdZztOJpT87GQsE9jqCPIe9VReZuQ/CIgacsyZdCpIScSYqcZk8r+nsyCzhyfhOqHGOIvrLknC8wTpFcaYiGC/RU1NRbUeUpocQOnkRpGOrIOcNRx+1uA0UrzhSSt+VyS3SJpnFWkzNDqOFGIWcfR86DnmARTQ1HKIL33ExPiemeOhYSSjzlSUZZuE4TveoJLnBUOFof6KiysCbnAEcZgcUNTDOwkqWu3RWtmGpZwlHhJENdZ3miGz0lJlsKnjbwqSHQjpxnFDlTLLwqJPMZMjd7KrzkSG7VsxXBZE+F8YZkb01Oe00yyRK9psh5SYh29ySPKBo2ylNht7ZkZnsKenjKNJu9PNEyZpaCHv4Kt6RQsLvAVp7M9kIimmCUwGeWqLMmGuIotYMmWNpSahkhZw9FqZsVnKJhsjAHvtHMsTM9fCI06Dx/u3vfUXCqfsKRc4oFY2jMsoo/7DJDwZ1CsIKnJu+J9ldkpmiCxQx1rWjI+T9FwcWWzOuaYH0Hj7klNRVWEQpmaqosakiGNTFHdjS/qnUdmf0NJW5xsL0HhimCCZZSRzmSPTXJQ4aaztAwtZnoabebJ+htCaZ7Cm535ByoqXKbX1WRc4Eh2MkRXWzImVc96Cj4VdOKVxR84VdQsIUM8Psoou2byVHyZFuq7O8otbSQ2UAoeEWTudATLGSpZzVLlXVkPU2Jc+27lsw2jmg5T5VhbeE3BT083K9WsTTkFU/Osi0rC5lRlpwRHUiesNS0sOvmqGML1aRbPAxTJD9ZKtxuob+hhl8cwYGWpJ8nub7t5p6coYbMovZ1BTdaKn1jYD6h4GFDNFyT/Kqe1XCXphXHOKLZmuRSRdBPEfVUXQzJm5YGPGGJdvAEr7hHNdGZnuBvrpciGmopOLf5N0uVMy0FfYToJk90uUCbJupaVpO53UJXR2bVpoU00V2KOo4zMFrBd0Jtz2pa0clT5Q5L8IpQ177mWQejPMEJhuQjS10ref6HHjdEhy1P1EYR7GtO0uSsKJQYLiTnG1rVScj5lyazpqWGl5uBbRWl7m6ixGOOnEsMJR7z8J0n6KMnCdxhiNYQCoZ6CmYLnO8omC3MkW3bktlPmEt/VQQHejL3+dOE5FlPdK/Mq8hZxxJtLyRrepLThYKbLZxkSb5W52vYxNOaOxUF0yxMUPwBTYqCzy01XayYK0sJyWBLqX0MwU5CzoymRzV0EjjeUeLgDpTo6ij42ZAzvD01dHUUTPLU96MdLbBME8nFBn7zJCMtJcZokn8YoqU0FS5WFKyniHobguMcmW8N0XkWZjkyN3hqOMtS08r+/xTBwpZSZ3qiVRX8SzMHHjfUNFjgHEPmY9PL3ykEzxkSre/1ZD6z/NuznuB0RcE1TWTm9zRgfUWVJiG6yrzgmWPXC8EAR4Wxhlad0ZbgQyEz3pG5RVEwwDJH2mgKpjcTiCOzn1lfUWANFbZ2BA8balnEweJC9J0iuaeZoI+ippFCztEKVvckR2iice1JvhVytrQwUAZpgsubCPaU7xUe9vWnaOpaSBEspalykhC9bUlOMpT42ZHca6hyrqKmw/wMR8H5ZmdFoBVJb03O4UL0tSNnvIeRmkrLWqrs78gcrEn2tpcboh0UPOW3UUR9PMk4T4nnNKWmCjlrefhCwxRNztfmIQVdDElvS4m1/WuOujoZCs5XVOjtKPGokJzsYCtFYoWonSPT21DheU/wWhM19FcElwqNGOsp9Q8N/cwXaiND1MmeL1Q5XROtYYgGeFq1aTMsoMmcrKjQrOFQTQ1fmBYhmW6o8Jkjc7iDJRTBIo5kgJD5yMEYA3srCg7VFKwiVJkmRCc5ohGOKhsYMn/XBLdo5taZjlb9YAlGWRimqbCsoY7HFAXLa5I1HPRxMMsQDHFkWtRNniqT9UEeNjcE7RUlrCJ4R2CSJuqlKHWvJXjAUNcITYkenuBRB84TbeepcqTj3zZyFJzgYQdHnqfgI0ddUwS6GqWpsKWhjq9cV0vBAEMN2znq+EBfIWT+pClYw5xsTlJU6GeIBsjGmmANTzJZiIYpgrM0Oa8ZMjd7NP87jxhqGOhJlnQtjuQpB+8aEE00wZFznSJPyHxgH3HkPOsJFvYk8zqCHzTs1BYOa4J3PFU+UVRZxlHDM4YavlNUuMoRveiZA2d7grMNc2g+RbSCEKzmgYsUmWmazFJyoiOZ4KnyhKOGRzWJa0+moyV4TVHDzn51Awtqaphfk/lRQ08FX1iiqxTB/kLwd0VynKfEvI6cd4XMV5bMhZ7gZUWVzYQ6Nm2BYzxJbw3bGthEUUMfgbGeorae6DxHtJoZ6alhZ0+ytiVoK1R4z5PTrOECT/SugseEOlb1MMNR4VRNcJy+V1Hg9ONClSZFZjdHlc6W6FBLdJja2MC5hhpu0DBYEY1TFGwiFAxRRCsYkiM9JRb0JNMVkW6CZYT/2EiTGWmo8k+h4FhDNE7BvppoTSFnmCV5xZKzvcCdDo7VVPnIU+I+Rc68juApC90MwcFCsJ5hDqxgScYKreruyQwTqrzoqDCmhWi4IbhB0Yrt3RGa6GfDv52rKXWhh28dyZaWUvcZeMTBaZoSGyiCtRU5J8iviioHaErs7Jkj61syVzTTgOcUOQ8buFBTYWdL5g3T4qlpe0+wvD63heAXRfCCIed9RbCsp2CiI7raUOYOTU13N8PNHvpaGvayo4a3LLT1lDrVEPT2zLUlheB1R+ZTRfKWJ+dcocLJfi11vyJ51lLqJ0WD7tRwryezjiV5W28uJO9qykzX8JDe2lHl/9oyBwa2UMfOngpXCixvKdXTk3wrsKmiVYdZIqsoWEERjbcUNDuiaQomGoIbFdEHmsyWnuR+IeriKDVLnlawlyNHKwKlSU631PKep8J4Q+ayjkSLKYLhalNHlYvttb6fHm0p6OApsZ4l2VfdqZkjuysy6ysKLlckf1KUutCTs39bmCgEyyoasIWlVaMF7mgmWtBT8Kol5xpH9IGllo8cJdopcvZ2sImlDmMIbtDk3KIpeNiS08lQw11NFPTwVFlPP6pJ2gvRfI7gQUfmNAtf6Gs0wQxDsKGlVBdF8rCa3jzdwMaGHOsItrZk7hAyOzpK9VS06j5F49b0VNGOOfKs3lDToMsMBe9ZWtHFEgxTJLs7qrygKZjUnmCYoeAqeU6jqWuLJup4WghOdvCYJnrSkSzoyRkm5M2StQwVltPkfCAk58tET/CSg+8MUecmotMEnhBKfWBIZsg2ihruMJQaoIm+tkTLKEqspMh00w95gvFCQRtDwTT1gVDDSEVdlwqZfxoQRbK0g+tbiBZxzKlpnpypejdDwTaeOvorMk/IJE10h9CqRe28hhLbe0pMsdSwv4ZbhKivo2BjDWfL8UKJgeavwlwb5KlwhyE4u4XkGE2ytZCznKLCDZZq42VzT8HLCrpruFbIfOIINmh/qCdZ1ZBc65kLHR1Bkyf5zn6pN3SvGKIlFNGplhrO9QSXanLOMQTLCa0YJCRrCZm/CZmrLTm7WzCK4GJDiWUdFeYx1LCFg3NMd0XmCuF3Y5rITLDUsYS9zoHVzwnJoYpSTQoObyEzr4cFBNqYTopoaU/wkyLZ2lPhX/5Y95ulxGTV7KjhWrOZgl8MyUUafjYraNjNU1N3IWcjT5WzWqjwtoarHSUObGYO3GCJZpsBlnJGPd6ZYLyl1GdCA2625IwwJDP8GUKymbzuyPlZlvTUsaUh5zFDhRWFzPKKZLAlWdcQbObgF9tOqOsmB1dqcqYJmWstFbZRRI9poolmqiLnU0POvxScpah2iSL5UJNzgScY5+AuIbpO0YD3NCW+dLMszFSdFCWGqG6eVq2uYVNDdICGD6W7EPRWZEY5gpsE9rUkS3mijzzJnm6UpUFXG1hCUeVoS5WfNcFpblELL2qqrCvMvRfd45oalvKU2tiQ6ePJOVMRXase9iTtLJztPxJKLWpo2CRDcJwn2sWSLKIO1WQWNTCvpVUvOZhgSC40JD0dOctaSqzkCRbXsKlb11Oip6PCJ0IwSJM31j3akRxlP7Rwn6aGaUL0qiLnJkvB3xWZ2+Q1TfCwpQH3G0o92UzmX4o/oJNQMMSQc547wVHhdk+VCw01DFYEnTxzZKAm74QmeNNR1w6WzEhNK15VJzuCdxQ53dRUDws5KvwgBMOEgpcVNe0hZI6RXT1Jd0cyj5nsaEAHgVmGaJIlWdsc5Ui2ElrRR6jrRAttNMEAIWrTDFubkZaok7/AkzfIwfuWVq0jHzuCK4QabtLUMVPB3kJ0oyHTSVFlqMALilJf2Rf8k5aaHtMfayocLBS8L89oKoxpJvnAkDPa0qp5DAUTHKWmCcnthlou8iCKaFFLHWcINd1nyIwXqrSxMNmSs6KmoL2QrKuWtlQ5V0120xQ5vRyZS1rgFkWwhiOwiuQbR0OOVhQM9iS3tiXp4RawRPMp5tDletOOBL95MpM01dZTBM9pkn5qF010rIeHFcFZhmSGpYpTsI6nwhqe5C9ynhlpp5ophuRb6WcJFldkVnVEwwxVfrVkvnWUuNLCg5bgboFHPDlDPDmnK7hUrWiIbjadDclujlZcaokOFup4Ri1kacV6jmrrK1hN9bGwpKEBQ4Q6DvIUXOmo6U5LqQM6EPyiKNjVkPnJkDPNEaxhiFay5ExW1NXVUGqcpYYdPcGiCq7z/TSlbhL4pplWXKd7NZO5QQFrefhRQW/NHOsqcIglc4UhWklR8K0QzbAw08CBDnpbgqXdeD/QUsM4RZXDFBW6WJKe/mFPdH0LtBgiq57wFLzlyQzz82qYx5D5WJP5yVJDW01BfyHnS6HKO/reZqId1WGa4Hkh2kWodJ8i6KoIPlAj2hPt76CzXsVR6koPRzWTfKqIentatYpQw2me4AA3y1Kind3SwoOKZDcFXTwl9tWU6mfgRk9d71sKtlNwrjnYw5tC5n5LdKiGry3JKNlHEd3oaMCFHrazBPMp/uNJ+V7IudcSbeOIdjUEdwl0VHCOZo5t6YluEuaC9mQeMgSfOyKnYGFHcIeQ84yQWbuJYJpZw5CzglDH7gKnWqqM9ZTaXcN0TeYhR84eQtJT76JJ1lREe7WnnvsMmRc9FQ7SBBM9mV3lCUdmHk/S2RAMt0QjFNFqQpWjDPQ01DXWUdDBkXziKPjGEP3VP+zIWU2t7im41FOloyWzn/L6dkUy3VLDaZ6appgDLHPjJEsyvJngWEPUyVBiAaHCTEXwrLvSEbV1e1gKJniicWorC1MUrVjB3uDhJE/wgSOzk1DXpk0k73qCM8xw2UvD5kJmDUfOomqMpWCkJRlvKXGmoeBm18USjVIk04SClxTB6YrgLAPLWYK9HLUt5cmc0vYES8GnTeRc6skZbQkWdxRsIcyBRzx1DbTk9FbU0caTPOgJHhJKnOGIVhQqvKmo0llRw9sabrZkDtdg3PqaKi9oatjY8B+G371paMg6+mZFNNtQ04mWBq3rYLOmtWWQp8KJnpy9DdFensyjdqZ+yY40VJlH8wcdLzC8PZnvHMFUTZUrDTkLyQaGus5X5LzpYAf3i+e/ZlhqGqWhh6Ou6xTR9Z6oi5AZZtp7Mj2EEm8oSpxiYZCHU/1fbGdNNNRRoZMhmilEb2gqHOEJDtXkHK/JnG6IrvbPCwV3NhONVdS1thBMs1T4QOBcTWa2IzhMk2nW5Kyn9tXUtpv9RsG2msxk+ZsQzRQacJncpgke0+T8y5Fzj8BiGo7XlJjaTIlpQs7KFjpqGnKuoyEPeIKnFMkZHvopgh81ySxNFWvJWcKRs70j2FOT012IllEEO1n4pD1513Yg2ssQPOThOkvyrqHUdEXOSEsihmBbTbKX1kLBPWqWkLOqJbjB3GBIZmoa8qWl4CG/iZ7oiA72ZL7TJNeZUY7kFQftDcHHluBzRbCegzMtrRjVQpX2lgoPKKLJAkcbMl01XK2p7yhL8pCBbQ3BN2avJgKvttcrWDK3CiUOVxQ8ZP+pqXKyIxnmBymCg5vJjNfkPK4+c8cIfK8ocVt7kmfd/I5SR1hKvCzUtb+lhgc00ZaO6CyhIQP1Uv4yIZjload72PXX0OIJvnFU+0Zf6MhsJwTfW0r0UwQfW4LNLZl5HK261JCZ4qnBaAreVAS3WrjV0LBnNDUNNDToCEeFfwgcb4gOEqLRhirWkexrCEYKVV711DLYEE1XBEsp5tpTGjorkomKYF9FDXv7fR3BGwbettSxnyL53MBPjsxDZjMh+VUW9NRxq1DhVk+FSxQcaGjV9Pawv6eGByw5qzoy7xk4RsOShqjJwWKe/1pEEfzkobeD/dQJmpqedcyBTy2sr4nGNRH0c0SPWTLrqAc0OQcb/gemKgqucQT7ySWKCn2EUotoCvpZct7RO2sy/QW0IWcXd7pQRQyZVwT2USRO87uhjioTLKV2brpMUcMQRbKH/N2T+UlTpaMls6cmc6CCNy3JdYYSUzzJQ4oSD3oKLncULOiJvjBEC2oqnCJkJluCYy2ZQ5so9YYlZ1VLlQU1mXEW1jZERwj/MUSRc24TdexlqLKfQBtDTScJUV8FszXBEY5ktpD5Ur9hYB4Nb1iikw3JoYpkKX+RodRKFt53MMuRnKSpY31PwYaGaILh3wxJGz9TkTPEETxoCWZrgvOlmyMzxFEwVJE5xZKzvyJ4WxEc16Gd4Xe3Weq4XH2jKRikqOkGQ87hQnC7wBmGYLAnesX3M+S87eFATauuN+Qcrh7xIxXJbUIdMw3JGE3ylCWzrieaqCn4zhGM19TQ3z1oH1AX+pWEqIc7wNGAkULBo/ZxRaV9NNyh4Br3rCHZzbzmSfawBL0dNRwpW1kK9mxPXR9povcdrGSZK9c2k0xwFGzjuniCtRSZCZ6ccZ7gaktmgAOtKbG/JnOkJrjcQTdFMsxRQ2cLY3WTIrlCw1eWKn8R6pvt4GFDso3QoL4a3nLk3G6JrtME3dSenpx7PNFTmga0EaJTLQ061sEeQoWXhSo9LTXsaSjoJQRXeZLtDclbCrYzfzHHeaKjHCVOUkQHO3JeEepr56mhiyaYYKjjNU+Fed1wS5VlhWSqI/hYUdDOkaxiKehoyOnrCV5yBHtbWFqTHCCwtpDcYolesVR5yUzTZBb3RNMd0d6WP+SvhuBmRcGxnuQzT95IC285cr41cLGQ6aJJhmi4TMGempxeimBRQw1tFKV+8jd6KuzoSTqqDxzRtpZkurvKEHxlqXKRIjjfUNNXQsNOsRScoWFLT+YeRZVD3GRN0MdQcKqQjHDMrdGGVu3iYJpQx3WGUvfbmxwFfR20WBq0oYY7LMFhhgYtr8jpaEnaOzjawWWaTP8mMr0t/EPDPoqcnxTBI5o58L7uoWnMrpoqPwgVrlAUWE+V+TQl9rawoyP6QGAlQw2TPRX+YSkxyBC8Z6jhHkXBgQL7WII3DVFnRfCrBfxewv9D6xsyjys4VkhWb9pUU627JllV0YDNHMku/ldNMMXDEo4aFnAkk4U6frNEU4XgZUPmEKHUl44KrzmYamjAbh0JFvGnaTLPu1s9jPCwjFpYiN7z1DTOk/nc07CfDFzmCf7i+bfNHXhDtLeBXzTBT5rkMvWOIxpl4EMh2LGJBu2syDnAEx2naEhHDWMMzPZEhygyS1mS5RTJr5ZkoKbEUoYqr2kqdDUE8ztK7OaIntJkFrIECwv8LJTaVx5XJE86go8dFeZ3FN3rjabCAYpoYEeC9zzJVULBbmZhDyd7ko09ydpNZ3nm2Kee4FPPXHnYEF1nqOFEC08LUVcDvYXkJHW8gTaKCk9YGOeIJhqiE4ToPEepdp7IWFjdwnWaufGMwJJCMtUTTBBK9BGCOy2tGGrJTHIwyEOzp6aPzNMOtlZkDvcEWpP5SVNhfkvDxhmSazTJXYrM9U1E0xwFVwqZQwzJxw6+kGGGUj2FglGGmnb1/G51udRSMNlTw6GGnCcUwVcOpmsqTHa06o72sw1RL02p9z0VbnMLOaIX3QKaYKSCFQzBKEUNHTSc48k53RH9wxGMtpQa5KjjW0W0n6XCCCG4yxNNdhQ4R4l1Ff+2sSd6UFHiIEOyqqFgT01mEUMD+joy75jPhOA+oVVLm309FR4yVOlp4RhLiScNmSmaYF5Pw0STrOIoWMSR2UkRXOMp+M4SHW8o8Zoi6OZgjKOaFar8zZDzkWzvKOjkKBjmCXby8JahhjXULY4KlzgKLvAwxVGhvyd4zxB1d9T0piazmKLCVZY5sKiD0y2ZSYrkUEPUbIk+dlQ4SJHTR50k1DPaUWIdTZW9NJwnJMOECgd7ou/MnppMJ02O1VT4Wsh85MnZzcFTngpXGKo84qmwgKbCL/orR/SzJ2crA+t6Mp94KvxJUeIbT3CQu1uIdlQEOzlKfS3UMcrTiFmOuroocrZrT2AcmamOKg8YomeEKm/rlT2sociMaybaUlFhuqHCM2qIJ+rg4EcDFymiDSxzaHdPcpE62pD5kyM5SBMoA1PaUtfIthS85ig1VPiPPYXgYEMNk4Qq7TXBgo7oT57gPUdwgCHzhIVFPFU6OYJzHAX9m5oNrVjeE61miDrqQ4VSa1oiURTsKHC0IfjNwU2WzK6eqK8jWln4g15TVBnqmDteCJ501PGAocJhhqjZdtBEB6lnhLreFJKxmlKbeGrqLiSThVIbCdGzloasa6lpMQXHCME2boLpJgT7yWaemu6wBONbqGNVRS0PKIL7LckbjmQtR7K8I5qtqel+T/ChJTNIKLjdUMNIRyvOEko9YYl2cwQveBikCNawJKcLBbc7+JM92mysNvd/Fqp8a0k6CNEe7cnZrxlW0wQXaXjaktnRwNOGZKYiONwS7a1JVheq3WgJHlQUGKHKmp4KAxXR/ULURcNgoa4zhKSLpZR3kxRRb0NmD0OFn+UCS7CzI1nbP6+o4x47QZE5xRCt3ZagnYcvmpYQktXdk5YKXTzBC57kKEe0VVuiSYqapssMS3C9p2CKkHOg8B8Pa8p5atrIw3qezIWanMGa5HRDNF6RM9wcacl0N+Q8Z8hsIkSnaIIdHRUOEebAPy1zbCkhM062FCJtif7PU+UtoVXzWKqM1PxXO8cfdruhFQ/a6x3JKYagvVDhQEtNiyiiSQ7OsuRsZUku0CRNDs4Sog6KKjsZgk2bYJqijgsEenoKeniinRXBn/U3lgpPdyDZynQx8IiioMnCep5Ky8mjGs6Wty0l1hUQTcNWswS3WRp2kCNZwJG8omG8JphPUaFbC8lEfabwP7VtM9yoaNCAjpR41VNhrD9LkbN722v0CoZMByFzhaW+MyzRYEWFDQwN2M4/JiT76PuljT3VU/A36eaIThb+R9oZGOAJ9tewkgGvqOMNRWYjT/Cwu99Q8LqDE4TgbLWxJ1jaDDAERsFOFrobgjUsBScaguXU8kKm2RL19tRypSHnHNlHiIZqgufs4opgQdVdwxBNNFBR6kVFqb8ogimOzB6a6HTzrlDHEpYaxjiiA4TMQobkDg2vejjfwJGWmnbVFAw3H3hq2NyQfG7hz4aC+w3BbwbesG0swYayvpAs6++Ri1Vfzx93mFChvyN5xVHTS+0p9aqCAxyZ6ZacZyw5+7uuQkFPR9DDk9NOiE7X1PCYJVjVUqq7JlrHwWALF5nfHNGjApdpqgzx5OwilDhCiDYTgnc9waGW4BdLNNUQvOtpzDOWHDH8D7TR/A/85KljEQu3NREc4Pl/6B1Hhc8Umb5CsKMmGC9EPcxoT2amwHNCmeOEnOPbklnMkbOgIvO5UMOpQrS9UGVdt6iH/fURjhI/WOpaW9OKLYRod6HCUEdOX000wpDZQ6hwg6LgZfOqo1RfT/CrJzjekXOGhpc1VW71ZLbXyyp+93ILbC1kPtIEYx0FIx1VDrLoVzXRKRYWk809yYlC9ImcrinxtabKnzRJk3lAU1OLEN1j2zrYzr2myHRXJFf4h4QKT1qSTzTB5+ZNTzTRkAxX8FcLV2uS8eoQQ2aAkFzvCM72sJIcJET3WPjRk5wi32uSS9rfZajpWEvj9hW42F4o5NytSXYy8IKHay10VYdrcl4SkqscrXpMwyGOgtkajheSxdQqmpxP1L3t4R5PqasFnrQEjytq6qgp9Y09Qx9o4S1FzhUCn1kyHSzBWLemoSGvOqLNhZyBjmCaAUYpMgt4Ck7wBBMMwWKWgjsUwTaGVsxWC1mYoKiyqqeGKYqonSIRQ3KIkHO0pmAxTdBHkbOvfllfr+AA+7gnc50huVKYK393FOyg7rbPO/izI7hE4CnHHHnJ0ogNPRUGeUpsrZZTBJcrovUcJe51BPsr6GkJdhCCsZ6aTtMEb2pqWkqeVtDXE/QVggsU/Nl86d9RMF3DxvZTA58agu810RWawCiSzzXBeU3MMW9oyJUedvNEvQyNu1f10BSMddR1vaLCYpYa/mGocLSiYDcLbQz8aMn5iyF4xBNMs1P0QEOV7o5gaWGuzSeLue4tt3ro7y4Tgm4G/mopdZgl6q0o6KzJWE3mMksNr3r+a6CbT8g5wZNzT9O7fi/zpaOmnz3BRoqos+tv9zMbdpxsqDBOEewtJLt7cg5wtKKbvldpSzRRCD43VFheCI7yZLppggMVBS/KMAdHODJvOwq2NQSbKKKPLdFWQs7Fqo+mpl01JXYRgq8dnGLhTiFzqmWsUMdpllZdbKlyvSdYxhI9YghOtxR8LgSLWHK62mGGVoxzBE8LNWzqH9CUesQzFy5RQzTc56mhi6fgXEWwpKfE5Z7M05ZgZUPmo6auiv8YKzDYwWBLMErIbKHJvOwIrvEdhOBcQ9JdU1NHQ7CXn2XIDFBKU2WAgcX9UAUzDXWd5alwuyJ41Z9rjKLCL4aCp4WarhPm2rH+SaHUYE001JDZ2ZAzXPjdMpZWvC9wmqIB2lLhQ01D5jO06hghWMndbM7yRJMsoCj1vYbnFQVrW9jak3OlEJ3s/96+p33dEPRV5GxiqaGjIthUU6FFEZyqCa5qJrpBdzSw95IUnOPIrCUUjRZQFrbw5PR0R1qiYx3cb6nrWUMrBmmiBQxVHtTew5ICP/ip6g4hed/Akob/32wvBHsIOX83cI8hGeNeNPCIkPmXe8fPKx84OMSRM1MTdXSwjCZ4S30jVGhvqTRak/OVhgGazHuOCud5onEO1lJr6ecVyaOK6H7zqlBlIaHE0oroCgfvGJIdPcmfLNGLjpz7hZwZQpUbFME0A1cIJa7VNORkgfsMBatbKgwwJM9bSvQXeNOvbIjelg6WWvo5kvbKaJJNHexkKNHL9xRyFlH8Ti2riB5wVPhUk7nGkJnoCe428LR/wRGdYIlmWebCyxou1rCk4g/ShugBDX0V0ZQWkh0dOVsagkM0yV6OoLd5ye+pRlsCr0n+KiQrGuq5yJDzrTAXHtLUMduTDBVKrSm3eHL+6ijxhFDX9Z5gVU/wliHYTMiMFpKLNMEywu80wd3meoFmt6VbRMPenhrOc6DVe4pgXU8DnnHakLOIIrlF4FZPIw6R+zxBP0dyq6OOZ4Q5sLKCcz084ok+VsMMyQhNZmmBgX5xIXOEJTmi7VsGTvMTNdHHhpzdbE8Du2oKxgvBqQKdDDnTFOylCFaxR1syz2iqrOI/FEpNc3C6f11/7+ASS6l2inq2ciTrCCzgyemrCL5SVPjQkdPZUmGy2c9Sw9FtR1sS30RmsKPCS4rkIC/2U0MduwucYolGaPjKEyhzmiPYXagyWbYz8LWBDdzRimAXzxx4z8K9hpzlhLq+NiQ97HuKorMUfK/OVvC2JfiHUPCQI/q7J2gjK+tTDNxkCc4TMssqCs4TGtLVwQihyoAWgj9bosU80XGW6Ac9TJGziaUh5+hnFcHOnlaM1iRn29NaqGENTTTSUHCH2tWTeV0osUhH6psuVLjRUmGWhm6OZEshGeNowABHcJ2Bpy2ZszRcKkRXd2QuKVEeXnbfaEq825FguqfgfE2whlChSRMdron+LATTPQ2Z369t4B9C5gs/ylzv+CMmepIDPclFQl13W0rspPd1JOcbghGOEutqCv5qacURQl3dDKyvyJlqKXGPgcM9FfawJAMVmdcspcYKOZc4GjDYkFlK05olNMHyHn4zFNykyOxt99RkHlfwmiHo60l2EKI+mhreEKp080Tbug08BVPcgoqC5zWt+NLDTZ7oNSF51N1qie7Va3uCCwyZbkINf/NED6jzOsBdZjFN8oqG3wxVunqCSYYKf3EdhJyf9YWGf7tRU2oH3VHgPr1fe5J9hOgHd7xQ0y7qBwXr23aGErP0cm64JVjZwsOGqL+mhNgZmhJLW2oY4UhedsyBgzrCKrq7BmcpNVhR6jBPq64Vgi+kn6XE68pp8J5/+0wRHGOpsKenQn9DZntPzjRLZpDAdD2fnSgkG9tmIXnUwQ6WVighs7Yi2MxQ0N3CqYaCXkJ0oyOztMDJjmSSpcpvlrk0RMMOjmArQ04PRV1DO1FwhCVaUVPpKUM03JK5SxPsIWRu8/CGHi8UHChiqGFDTbSRJWeYUDDcH6vJWUxR4k1FXbMUwV6e4AJFXS8oMqsZKqzvYQ9DDQdZckY4aGsIhtlubbd2r3j4QBMoTamdPZk7O/Bf62lacZwneNjQoGcdVU7zJOd7ghsUHOkosagic6cnWc8+4gg285R6zZP5s1/LUbCKIznTwK36PkdwlOrl4U1LwfdCCa+IrvFkmgw1PCAUXKWo0sURXWcI2muKJlgyFzhynCY4RBOsqCjoI1R5zREco0n2Vt09BQtYSizgKNHfUmUrQ5UOCh51BFcLmY7umhYqXKQomOop8bUnWNNQcIiBcYaC6xzMNOS8JQQfeqKBmmglB+97ok/lfk3ygaHSyZaCRTzRxQo6GzLfa2jWBPepw+UmT7SQEJyiyRkhBLMVOfcoMjcK0eZChfUNzFAUzCsEN5vP/X1uP/n/aoMX+K+nw/Hjr/9xOo7j7Pju61tLcgvJpTWXNbfN5jLpi6VfCOviTktKlFusQixdEKWmEBUKNaIpjZRSSOXSgzaaKLdabrm1/9nZ+/f+vd/vz/v9+Xy+zZ7PRorYoZqyLrCwQdEAixxVOEXNNnjX2nUSRlkqGmWowk8lxR50JPy9Bo6qJXaXwNvREBvnThPEPrewryLhcAnj5WE15Fqi8W7R1sAuEu86S4ENikItFN4xkv9Af4nXSnUVcLiA9xzesFpivRRVeFKtsMRaKBhuSbjOELnAUtlSQUpXgdfB4Z1oSbnFEetbQ0IrAe+Y+pqnDcEJFj6S8LDZzZHwY4e3XONNlARraomNEt2bkvGsosA3ioyHm+6jCMbI59wqt4eeara28IzEmyPgoRaUOEDhTVdEJhmCoTWfC0p8aNkCp0oYqih2iqGi4yXeMkOsn4LdLLnmKfh/YogjNsPebeFGR4m9BJHLzB61XQ3BtpISfS2FugsK9FAtLWX1dCRcrCnUp44CNzuCowUZmxSRgYaE6Za0W2u/E7CVXCiI/UOR8aAm1+OSyE3mOUcwyc1zBBeoX1kiKy0Zfxck1Gsyulti11i83QTBF5Kg3pDQThFMVHiPSlK+0cSedng/VaS8bOZbtsBcTcZAR8JP5KeqQ1OYKAi20njdNNRpgnsU//K+JnaXJaGTomr7aYIphoRn9aeShJWKEq9LcozSF7QleEfDI5LYm5bgVkFkRwVDBCVu0DDIkGupo8TZBq+/pMQURYErJQmPKGKjNDkWOLx7Jd5QizdUweIaKrlP7SwJDhZvONjLkOsBBX9UpGxnydhXkfBLQ8IxgojQbLFnJf81JytSljclYYyEFyx0kVBvKWOFJmONpshGAcsduQY5giVNCV51eOdJYo/pLhbvM0uDHSevNKRcrKZIqnCtJeEsO95RoqcgGK4ocZcho1tTYtcZvH41pNQ7vA0WrhIfOSraIIntIAi+NXWCErdbkvrWwjRLrt0NKUdL6KSOscTOdMSOUtBHwL6OLA0vNSdynaWQEnCpIvKaIrJJEbvHkmuNhn6OjM8VkSGSqn1uYJCGHnq9I3aLhNME3t6GjIkO7xrNFumpyTNX/NrwX7CrIRiqqWijI9JO4d1iieykyfiposQIQ8YjjsjlBh6oHWbwRjgYJQn2NgSnNycmJAk3NiXhx44Sxykihxm8ybUwT1OVKySc7vi3OXVkdBJ4AyXBeksDXG0IhgtYY0lY5ahCD0ehborIk5aUWRJviMA7Xt5kyRjonrXENkm8yYqgs8VzgrJmClK20uMM3jRJ0FiQICQF9hdETlLQWRIb5ki6WDfWRPobvO6a4GP5mcOrNzDFELtTkONLh9dXE8xypEg7z8A9jkhrQ6Fhjlg/QVktJXxt4WXzT/03Q8IaQWSqIuEvloQ2mqC9Jfi7wRul4RX3pSPlzpoVlmCtI2jvKHCFhjcM3sN6lqF6HxnKelLjXWbwrpR4xzuCrTUZx2qq9oAh8p6ixCUGr78g8oyjRAtB5CZFwi80VerVpI0h+IeBxa6Zg6kWvpDHaioYYuEsRbDC3eOmC2JvGYLeioxGknL2UATNJN6hmtj1DlpLvDVmocYbrGCVJKOrg4X6DgddLA203BKMFngdJJFtFd7vJLm6KEpc5yjQrkk7M80SGe34X24nSex1Ra5Omgb71JKyg8SrU3i/kARKwWpH0kOGhKkObyfd0ZGjvyXlAkVZ4xRbYJ2irFMkFY1SwyWxr2oo4zlNiV+7zmaweFpT4kR3kaDAFW6xpSqzJay05FtYR4HmZhc9UxKbbfF2V8RG1MBmSaE+kmC6JnaRXK9gsiXhJHl/U0qM0WTcbyhwkYIvFGwjSbjfwhiJt8ZSQU+Bd5+marPMOkVkD0muxYLIfEuhh60x/J92itguihJSEMySVPQnTewnEm+620rTQEMsOfo4/kP/0ARvWjitlpSX7GxBgcMEsd3EEeYWvdytd+Saawi6aCIj1CkGb6Aj9rwhx16Cf3vAwFy5pyLhVonXzy51FDpdEblbkdJbUcEPDEFzQ8qNmhzzLTmmKWKbFCXeEuRabp6rxbvAtLF442QjQ+wEA9eL1xSR7Q0JXzlSHjJ4exq89yR0laScJ/FW6z4a73pFMEfDiRZvuvijIt86RaSFOl01riV2mD1UEvxGk/Geg5aWwGki1zgKPG9J2U8PEg8qYvMsZeytiTRXBMslCU8JSlxi8EabjwUldlDNLfzTUmCgxWsjqWCOHavYAqsknKFIO0yQ61VL5AVFxk6WhEaCAkdJgt9aSkzXlKNX2jEa79waYuc7gq0N3GDJGCBhoiTXUEPsdknCUE1CK0fwsiaylSF2uiDyO4XX3pFhNd7R4itFGc0k/ElBZwWvq+GC6szVeEoS/MZ+qylwpKNKv9Z469UOjqCjwlusicyTxG6VpNxcQ8IncoR4RhLbR+NdpGGmJWOcIzJGUuKPGpQg8rrG21dOMqQssJQ4RxH5jaUqnZuQ0F4Q+cjxLwPtpZbIAk3QTJHQWBE5S1BokoVtDd6lhqr9UpHSUxMcIYl9pojsb8h4SBOsMQcqvOWC2E8EVehqiJ1hrrAEbQxeK0NGZ0Gkq+guSRgniM23bIHVkqwx4hiHd7smaOyglyIyQuM978j4VS08J/A2G1KeMBRo4fBaSNhKUEZfQewVQ/C1I+MgfbEleEzCUw7mKXI0M3hd1EESVji8x5uQ41nxs1q4RMJCCXs7Iq9acpxn22oSDnQ/sJTxsCbHIYZiLyhY05TY0ZLIOQrGaSJDDN4t8pVaIrsqqFdEegtizc1iTew5Q4ayBDMUsQMkXocaYkc0hZua412siZ1rSXlR460zRJ5SlHGe5j801RLMlJTxtaOM3Q1pvxJ45zUlWFD7rsAbpfEm1JHxG0eh8w2R7QQVzBUw28FhFp5QZzq8t2rx2joqulYTWSuJdTYfWwqMFMcovFmSyJPNyLhE4E10pHzYjOC3huArRa571ZsGajQpQx38SBP5pyZB6lMU3khDnp0MBV51BE9o2E+TY5Ml2E8S7C0o6w1xvCZjf0HkVEHCzFoyNmqC+9wdcqN+Tp7jSDheE9ws8Y5V0NJCn2bk2tqSY4okdrEhx1iDN8cSudwepWmAGXKcJXK65H9to8jYQRH7SBF01ESUJdd0TayVInaWhLkOjlXE5irKGOnI6GSWGCJa482zBI9rCr0jyTVcEuzriC1vcr6mwFGSiqy5zMwxBH/TJHwjSPhL8+01kaaSUuMFKTcLEvaUePcrSmwn8DZrgikWb7CGPxkSjhQwrRk57tctmxLsb9sZvL9LSlyuSLlWkqOjwduo8b6Uv1DkmudIeFF2dHCgxVtk8dpIvHpBxhEOdhKk7OLIUSdJ+cSRY57B+0DgGUUlNfpthTfGkauzxrvTsUUaCVhlKeteTXCoJDCa2NOKhOmC4G1H8JBd4OBZReSRGkqcb/CO1PyLJTLB4j1q8JYaIutEjSLX8YKM+a6phdMsdLFUoV5RTm9JSkuDN8WcIon0NZMNZWh1q8C7SJEwV5HxrmnnTrf3KoJBlmCYI2ilSLlfEvlE4011NNgjgthzEua0oKK7JLE7HZHlEl60BLMVFewg4EWNt0ThrVNEVkkiTwpKXSWJzdRENgvKGq4IhjsiezgSFtsfCUq8qki5S1LRQeYQQ4nemmCkImWMw3tFUoUBZk4NOeZYEp4XRKTGa6wJjrWNHBVJR4m3FCnbuD6aak2WsMTh3SZImGCIPKNgsDpVwnsa70K31lCFJZYcwwSMFcQulGTsZuEaSdBXkPGZhu0FsdUO73RHjq8MPGGIfaGIbVTk6iuI3GFgucHrIQkmWSJdBd7BBu+uOryWAhY7+Lki9rK5wtEQzWwvtbqGhIMFwWRJsElsY4m9IIg9L6lCX0VklaPAYkfkZEGDnOWowlBJjtMUkcGK4Lg6EtoZInMUBVYLgn0UsdmCyCz7gIGHFfk+k1QwTh5We7A9x+IdJ6CvIkEagms0hR50eH9UnTQJ+2oiKyVlLFUE+8gBGu8MQ3CppUHesnjTHN4QB/UGPhCTHLFPHMFrCqa73gqObUJGa03wgbhHkrCfpEpzNLE7JDS25FMKhlhKKWKfCgqstLCPu1zBXy0J2ztwjtixBu8UTRn9LVtkmCN2iyFhtME70JHRQ1KVZXqKI/KNIKYMCYs1GUMEKbM1bKOI9LDXC7zbHS+bt+1MTWS9odA9DtrYtpbImQJ2VHh/lisEwaHqUk1kjKTAKknkBEXkbkdMGwq0dnhzLJF3NJH3JVwrqOB4Sca2hti75nmJN0WzxS6UxDYoEpxpa4htVlRjkYE7DZGzJVU72uC9IyhQL4i8YfGWSYLLNcHXloyz7QhNifmKSE9JgfGmuyLhc403Xm9vqcp6gXe3xuuv8F6VJNxkyTHEkHG2g0aKXL0MsXc1bGfgas2//dCONXiNLCX+5mB7eZIl1kHh7ajwpikyzlUUWOVOsjSQlsS+M0R+pPje/dzBXRZGO0rMtgQrLLG9VSu9n6CMXS3BhwYmSoIBhsjNBmZbgusE9BCPCP5triU4VhNbJfE+swSP27aayE8tuTpYYjtrYjMVGZdp2NpS1s6aBnKSHDsbKuplKbHM4a0wMFd/5/DmGyKrJSUaW4IBrqUhx0vyfzTBBLPIUcnZdrAkNsKR0sWRspumSns6Ch0v/qqIbBYUWKvPU/CFoyrDJGwSNFhbA/MlzKqjrO80hRbpKx0Jewsi/STftwGSlKc1JZyAzx05dhLEdnfQvhZOqiHWWEAHC7+30FuRcZUgaO5gpaIK+xsiHRUsqaPElTV40xQZQ107Q9BZE1nryDVGU9ZSQ47bmhBpLcYpUt7S+xuK/FiT8qKjwXYw5ypS2iuCv7q1gtgjhuBuB8LCFY5cUuCNtsQOFcT+4Ih9JX+k8Ea6v0iCIRZOtCT0Et00JW5UeC85Cg0ScK0k411HcG1zKtre3SeITBRk7WfwDhEvaYLTHP9le0m8By0JDwn4TlLW/aJOvGHxdjYUes+ScZigCkYQdNdEOhkiezgShqkx8ueKjI8lDfK2oNiOFvrZH1hS+tk7NV7nOmLHicGWEgubkXKdwdtZknCLJXaCpkrjZBtLZFsDP9CdxWsSr05Sxl6CMmoFbCOgryX40uDtamB7SVmXW4Ihlgpmq+00tBKUUa83WbjLUNkzDmY7cow1JDygyPGlhgGKYKz4vcV7QBNbJIgM11TUqZaMdwTeSguH6rOaw1JRKzaaGyxVm2EJ/uCIrVWUcZUkcp2grMsEjK+DMwS59jQk3Kd6SEq1d0S6uVmO4Bc1lDXTUcHjluCXEq+1OlBDj1pi9zgiXxnKuE0SqTXwhqbETW6RggMEnGl/q49UT2iCzgJvRwVXS2K/d6+ZkyUl7jawSVLit46EwxVljDZwoSQ20sDBihztHfk2yA8NVZghiXwrYHQdfKAOtzsayjhY9bY0yE2CWEeJ9xfzO423xhL5syS2TFJofO2pboHob0nY4GiAgRrvGQEDa/FWSsoaaYl0syRsEt3kWoH3B01shCXhTUWe9w3Bt44SC9QCh3eShQctwbaK2ApLroGCMlZrYqvlY3qYhM0aXpFkPOuoqJ3Dm6fxXrGwVF9gCWZagjPqznfkuMKQ8DPTQRO8ZqG1hPGKEm9IgpGW4DZDgTNriTxvFiq+Lz+0cKfp4wj6OCK9JSnzNSn9LFU7UhKZZMnYwcJ8s8yRsECScK4j5UOB95HFO0CzhY4xJxuCix0lDlEUeMdS6EZBkTsUkZ4K74dugyTXS7aNgL8aqjDfkCE0ZbwkCXpaWCKhl8P7VD5jxykivSyxyZrYERbe168LYu9ZYh86IkscgVLE7tWPKmJv11CgoyJltMEbrohtVAQfO4ImltiHEroYEs7RxAarVpY8AwXMcMReFOTYWe5iiLRQxJ5Q8DtJ8LQhWOhIeFESPGsILhbNDRljNbHzNRlTFbk2S3L0NOS6V1KFJYKUbSTcIIhM0wQ/s2TM0SRMNcQmSap3jCH4yhJZKSkwyRHpYYgsFeQ4U7xoCB7VVOExhXepo9ABBsYbvGWKXPME3lyH95YioZ0gssQRWWbI+FaSMkXijZXwgiTlYdPdkNLaETxlyDVIwqeaEus0aTcYcg0RVOkpR3CSJqIddK+90JCxzsDVloyrFd5ZAr4TBKfaWa6boEA7C7s6EpYaeFPjveooY72mjIccLHJ9HUwVlDhKkmutJDJBwnp1rvulJZggKDRfbXAkvC/4l3ozQOG9a8lxjx0i7nV4jSXc7vhe3OwIxjgSHjdEhhsif9YkPGlus3iLFDnWOFhtCZbJg0UbQcIaR67JjthoCyMEZRwhiXWyxO5QxI6w5NhT4U1WsJvDO60J34fW9hwzwlKij6ZAW9ne4L0s8C6XeBMEkd/LQy1VucBRot6QMlbivaBhoBgjqGiCJNhsqVp/S2SsG6DIONCR0dXhvWbJ+MRRZJkkuEjgDXJjFQW6SSL7GXK8Z2CZg7cVsbWGoKmEpzQ5elpiy8Ryg7dMkLLUEauzeO86CuwlSOlgYLojZWeJ9xM3S1PWfEfKl5ISLQ0MEKR8YOB2QfCxJBjrKPCN4f9MkaSsqoVXJBmP7EpFZ9UQfOoOFwSzBN4MQ8LsGrymlipcJQhmy0GaQjPqCHaXRwuCZwRbqK2Fg9wlClZqYicrIgMdZfxTQ0c7TBIbrChxmuzoKG8XRaSrIhhiyNFJkrC7oIAWMEOQa5aBekPCRknCo4IKPrYkvCDI8aYmY7WFtprgekcJZ3oLIqssCSMtFbQTJKwXYy3BY5oCh2iKPCpJOE+zRdpYgi6O2KmOAgvVCYaU4ySRek1sgyFhJ403QFHiVEmJHwtybO1gs8Hr5+BETQX3War0qZngYGgtVZtoqd6vFSk/UwdZElYqyjrF4HXUeFspIi9IGKf4j92pKGAdCYMVsbcV3kRF0N+R8LUd5PCsIGWoxDtBkCI0nKofdJQxT+LtZflvuc8Q3CjwWkq8KwUpHzkK/NmSsclCL0nseQdj5FRH5CNHSgtLiW80Of5HU9Hhlsga9bnBq3fEVltKfO5IaSTmGjjc4J0otcP7QsJUSQM8pEj5/wCuUuC2DWz8AAAAAElFTkSuQmCC\");\ -}\ -.ace-ambiance .ace_indent-guide {\ -background: url(\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAACCAYAAACZgbYnAAAAEklEQVQImWNQUFD4z6Crq/sfAAuYAuYl+7lfAAAAAElFTkSuQmCC\") right repeat-y;\ -}"; - -var dom = require("../lib/dom"); -dom.importCssString(exports.cssText, exports.cssClass); - -}); diff --git a/IDE/jsrealb-ide/ace-src-noconflict/theme-chaos.js b/IDE/jsrealb-ide/ace-src-noconflict/theme-chaos.js deleted file mode 100644 index 41544994..00000000 --- a/IDE/jsrealb-ide/ace-src-noconflict/theme-chaos.js +++ /dev/null @@ -1,179 +0,0 @@ -/* ***** BEGIN LICENSE BLOCK ***** - * Distributed under the BSD license: - * - * Copyright 2011 Irakli Gozalishvili. All rights reserved. - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to - * deal in the Software without restriction, including without limitation the - * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or - * sell copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING - * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS - * IN THE SOFTWARE. - * ***** END LICENSE BLOCK ***** */ - -ace.define('ace/theme/chaos', ['require', 'exports', 'module' , 'ace/lib/dom'], function(require, exports, module) { - -exports.isDark = true; -exports.cssClass = "ace-chaos"; -exports.cssText = ".ace-chaos .ace_gutter {\ -background: #141414;\ -color: #595959;\ -border-right: 1px solid #282828;\ -}\ -.ace-chaos .ace_gutter-cell.ace_warning {\ -background-image: none;\ -background: #FC0;\ -border-left: none;\ -padding-left: 0;\ -color: #000;\ -}\ -.ace-chaos .ace_gutter-cell.ace_error {\ -background-position: -6px center;\ -background-image: none;\ -background: #F10;\ -border-left: none;\ -padding-left: 0;\ -color: #000;\ -}\ -.ace-chaos .ace_print-margin {\ -border-left: 1px solid #555;\ -right: 0;\ -background: #1D1D1D;\ -}\ -.ace-chaos {\ -background-color: #161616;\ -color: #E6E1DC;\ -}\ -.ace-chaos .ace_cursor {\ -border-left: 2px solid #FFFFFF;\ -}\ -.ace-chaos .ace_cursor.ace_overwrite {\ -border-left: 0px;\ -border-bottom: 1px solid #FFFFFF;\ -}\ -.ace-chaos .ace_marker-layer .ace_selection {\ -background: #494836;\ -}\ -.ace-chaos .ace_marker-layer .ace_step {\ -background: rgb(198, 219, 174);\ -}\ -.ace-chaos .ace_marker-layer .ace_bracket {\ -margin: -1px 0 0 -1px;\ -border: 1px solid #FCE94F;\ -}\ -.ace-chaos .ace_marker-layer .ace_active-line {\ -background: #333;\ -}\ -.ace-chaos .ace_gutter-active-line {\ -background-color: #222;\ -}\ -.ace-chaos .ace_invisible {\ -color: #404040;\ -}\ -.ace-chaos .ace_keyword {\ -color:#00698F;\ -}\ -.ace-chaos .ace_keyword.ace_operator {\ -color:#FF308F;\ -}\ -.ace-chaos .ace_constant {\ -color:#1EDAFB;\ -}\ -.ace-chaos .ace_constant.ace_language {\ -color:#FDC251;\ -}\ -.ace-chaos .ace_constant.ace_library {\ -color:#8DFF0A;\ -}\ -.ace-chaos .ace_constant.ace_numeric {\ -color:#58C554;\ -}\ -.ace-chaos .ace_invalid {\ -color:#FFFFFF;\ -background-color:#990000;\ -}\ -.ace-chaos .ace_invalid.ace_deprecated {\ -color:#FFFFFF;\ -background-color:#990000;\ -}\ -.ace-chaos .ace_support {\ -color: #999;\ -}\ -.ace-chaos .ace_support.ace_function {\ -color:#00AEEF;\ -}\ -.ace-chaos .ace_function {\ -color:#00AEEF;\ -}\ -.ace-chaos .ace_string {\ -color:#58C554;\ -}\ -.ace-chaos .ace_comment {\ -color:#555;\ -font-style:italic;\ -padding-bottom: 0px;\ -}\ -.ace-chaos .ace_variable {\ -color:#997744;\ -}\ -.ace-chaos .ace_meta.ace_tag {\ -color:#BE53E6;\ -}\ -.ace-chaos .ace_entity.ace_other.ace_attribute-name {\ -color:#FFFF89;\ -}\ -.ace-chaos .ace_markup.ace_underline {\ -text-decoration: underline;\ -}\ -.ace-chaos .ace_fold-widget {\ -text-align: center;\ -}\ -.ace-chaos .ace_fold-widget:hover {\ -color: #777;\ -}\ -.ace-chaos .ace_fold-widget.ace_start,\ -.ace-chaos .ace_fold-widget.ace_end,\ -.ace-chaos .ace_fold-widget.ace_closed{\ -background: none;\ -border: none;\ -box-shadow: none;\ -}\ -.ace-chaos .ace_fold-widget.ace_start:after {\ -content: '▾'\ -}\ -.ace-chaos .ace_fold-widget.ace_end:after {\ -content: '▴'\ -}\ -.ace-chaos .ace_fold-widget.ace_closed:after {\ -content: '‣'\ -}\ -.ace-chaos .ace_indent-guide {\ -border-right:1px dotted #333;\ -margin-right:-1px;\ -}\ -.ace-chaos .ace_fold { \ -background: #222; \ -border-radius: 3px; \ -color: #7AF; \ -border: none; \ -}\ -.ace-chaos .ace_fold:hover {\ -background: #CCC; \ -color: #000;\ -}\ -"; - -var dom = require("../lib/dom"); -dom.importCssString(exports.cssText, exports.cssClass); - -}); \ No newline at end of file diff --git a/IDE/jsrealb-ide/ace-src-noconflict/theme-chrome.js b/IDE/jsrealb-ide/ace-src-noconflict/theme-chrome.js deleted file mode 100644 index e9de6e0a..00000000 --- a/IDE/jsrealb-ide/ace-src-noconflict/theme-chrome.js +++ /dev/null @@ -1,157 +0,0 @@ -/* ***** BEGIN LICENSE BLOCK ***** - * Distributed under the BSD license: - * - * Copyright (c) 2010, Ajax.org B.V. - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are met: - * * Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * * Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * * Neither the name of Ajax.org B.V. nor the - * names of its contributors may be used to endorse or promote products - * derived from this software without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND - * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED - * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE - * DISCLAIMED. IN NO EVENT SHALL AJAX.ORG B.V. BE LIABLE FOR ANY - * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES - * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; - * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND - * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - * - * ***** END LICENSE BLOCK ***** */ - -ace.define('ace/theme/chrome', ['require', 'exports', 'module' , 'ace/lib/dom'], function(require, exports, module) { - -exports.isDark = false; -exports.cssClass = "ace-chrome"; -exports.cssText = ".ace-chrome .ace_gutter {\ -background: #ebebeb;\ -color: #333;\ -overflow : hidden;\ -}\ -.ace-chrome .ace_print-margin {\ -width: 1px;\ -background: #e8e8e8;\ -}\ -.ace-chrome {\ -background-color: #FFFFFF;\ -}\ -.ace-chrome .ace_cursor {\ -color: black;\ -}\ -.ace-chrome .ace_invisible {\ -color: rgb(191, 191, 191);\ -}\ -.ace-chrome .ace_constant.ace_buildin {\ -color: rgb(88, 72, 246);\ -}\ -.ace-chrome .ace_constant.ace_language {\ -color: rgb(88, 92, 246);\ -}\ -.ace-chrome .ace_constant.ace_library {\ -color: rgb(6, 150, 14);\ -}\ -.ace-chrome .ace_invalid {\ -background-color: rgb(153, 0, 0);\ -color: white;\ -}\ -.ace-chrome .ace_fold {\ -}\ -.ace-chrome .ace_support.ace_function {\ -color: rgb(60, 76, 114);\ -}\ -.ace-chrome .ace_support.ace_constant {\ -color: rgb(6, 150, 14);\ -}\ -.ace-chrome .ace_support.ace_type,\ -.ace-chrome .ace_support.ace_class\ -.ace-chrome .ace_support.ace_other {\ -color: rgb(109, 121, 222);\ -}\ -.ace-chrome .ace_variable.ace_parameter {\ -font-style:italic;\ -color:#FD971F;\ -}\ -.ace-chrome .ace_keyword.ace_operator {\ -color: rgb(104, 118, 135);\ -}\ -.ace-chrome .ace_comment {\ -color: #236e24;\ -}\ -.ace-chrome .ace_comment.ace_doc {\ -color: #236e24;\ -}\ -.ace-chrome .ace_comment.ace_doc.ace_tag {\ -color: #236e24;\ -}\ -.ace-chrome .ace_constant.ace_numeric {\ -color: rgb(0, 0, 205);\ -}\ -.ace-chrome .ace_variable {\ -color: rgb(49, 132, 149);\ -}\ -.ace-chrome .ace_xml-pe {\ -color: rgb(104, 104, 91);\ -}\ -.ace-chrome .ace_entity.ace_name.ace_function {\ -color: #0000A2;\ -}\ -.ace-chrome .ace_heading {\ -color: rgb(12, 7, 255);\ -}\ -.ace-chrome .ace_list {\ -color:rgb(185, 6, 144);\ -}\ -.ace-chrome .ace_marker-layer .ace_selection {\ -background: rgb(181, 213, 255);\ -}\ -.ace-chrome .ace_marker-layer .ace_step {\ -background: rgb(252, 255, 0);\ -}\ -.ace-chrome .ace_marker-layer .ace_stack {\ -background: rgb(164, 229, 101);\ -}\ -.ace-chrome .ace_marker-layer .ace_bracket {\ -margin: -1px 0 0 -1px;\ -border: 1px solid rgb(192, 192, 192);\ -}\ -.ace-chrome .ace_marker-layer .ace_active-line {\ -background: rgba(0, 0, 0, 0.07);\ -}\ -.ace-chrome .ace_gutter-active-line {\ -background-color : #dcdcdc;\ -}\ -.ace-chrome .ace_marker-layer .ace_selected-word {\ -background: rgb(250, 250, 255);\ -border: 1px solid rgb(200, 200, 250);\ -}\ -.ace-chrome .ace_storage,\ -.ace-chrome .ace_keyword,\ -.ace-chrome .ace_meta.ace_tag {\ -color: rgb(147, 15, 128);\ -}\ -.ace-chrome .ace_string.ace_regex {\ -color: rgb(255, 0, 0)\ -}\ -.ace-chrome .ace_string {\ -color: #1A1AA6;\ -}\ -.ace-chrome .ace_entity.ace_other.ace_attribute-name {\ -color: #994409;\ -}\ -.ace-chrome .ace_indent-guide {\ -background: url(\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAACCAYAAACZgbYnAAAAE0lEQVQImWP4////f4bLly//BwAmVgd1/w11/gAAAABJRU5ErkJggg==\") right repeat-y;\ -}\ -"; - -var dom = require("../lib/dom"); -dom.importCssString(exports.cssText, exports.cssClass); -}); diff --git a/IDE/jsrealb-ide/ace-src-noconflict/theme-clouds.js b/IDE/jsrealb-ide/ace-src-noconflict/theme-clouds.js deleted file mode 100644 index 14202bdc..00000000 --- a/IDE/jsrealb-ide/ace-src-noconflict/theme-clouds.js +++ /dev/null @@ -1,126 +0,0 @@ -/* ***** BEGIN LICENSE BLOCK ***** - * Distributed under the BSD license: - * - * Copyright (c) 2010, Ajax.org B.V. - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are met: - * * Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * * Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * * Neither the name of Ajax.org B.V. nor the - * names of its contributors may be used to endorse or promote products - * derived from this software without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND - * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED - * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE - * DISCLAIMED. IN NO EVENT SHALL AJAX.ORG B.V. BE LIABLE FOR ANY - * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES - * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; - * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND - * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - * - * ***** END LICENSE BLOCK ***** */ - -ace.define('ace/theme/clouds', ['require', 'exports', 'module' , 'ace/lib/dom'], function(require, exports, module) { - -exports.isDark = false; -exports.cssClass = "ace-clouds"; -exports.cssText = ".ace-clouds .ace_gutter {\ -background: #ebebeb;\ -color: #333\ -}\ -.ace-clouds .ace_print-margin {\ -width: 1px;\ -background: #e8e8e8\ -}\ -.ace-clouds {\ -background-color: #FFFFFF;\ -color: #000000\ -}\ -.ace-clouds .ace_cursor {\ -color: #000000\ -}\ -.ace-clouds .ace_marker-layer .ace_selection {\ -background: #BDD5FC\ -}\ -.ace-clouds.ace_multiselect .ace_selection.ace_start {\ -box-shadow: 0 0 3px 0px #FFFFFF;\ -border-radius: 2px\ -}\ -.ace-clouds .ace_marker-layer .ace_step {\ -background: rgb(255, 255, 0)\ -}\ -.ace-clouds .ace_marker-layer .ace_bracket {\ -margin: -1px 0 0 -1px;\ -border: 1px solid #BFBFBF\ -}\ -.ace-clouds .ace_marker-layer .ace_active-line {\ -background: #FFFBD1\ -}\ -.ace-clouds .ace_gutter-active-line {\ -background-color : #dcdcdc\ -}\ -.ace-clouds .ace_marker-layer .ace_selected-word {\ -border: 1px solid #BDD5FC\ -}\ -.ace-clouds .ace_invisible {\ -color: #BFBFBF\ -}\ -.ace-clouds .ace_keyword,\ -.ace-clouds .ace_meta,\ -.ace-clouds .ace_support.ace_constant.ace_property-value {\ -color: #AF956F\ -}\ -.ace-clouds .ace_keyword.ace_operator {\ -color: #484848\ -}\ -.ace-clouds .ace_keyword.ace_other.ace_unit {\ -color: #96DC5F\ -}\ -.ace-clouds .ace_constant.ace_language {\ -color: #39946A\ -}\ -.ace-clouds .ace_constant.ace_numeric {\ -color: #46A609\ -}\ -.ace-clouds .ace_constant.ace_character.ace_entity {\ -color: #BF78CC\ -}\ -.ace-clouds .ace_invalid {\ -background-color: #FF002A\ -}\ -.ace-clouds .ace_fold {\ -background-color: #AF956F;\ -border-color: #000000\ -}\ -.ace-clouds .ace_storage,\ -.ace-clouds .ace_support.ace_class,\ -.ace-clouds .ace_support.ace_function,\ -.ace-clouds .ace_support.ace_other,\ -.ace-clouds .ace_support.ace_type {\ -color: #C52727\ -}\ -.ace-clouds .ace_string {\ -color: #5D90CD\ -}\ -.ace-clouds .ace_comment {\ -color: #BCC8BA\ -}\ -.ace-clouds .ace_entity.ace_name.ace_tag,\ -.ace-clouds .ace_entity.ace_other.ace_attribute-name {\ -color: #606060\ -}\ -.ace-clouds .ace_indent-guide {\ -background: url(\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAACCAYAAACZgbYnAAAAE0lEQVQImWP4////f4bLly//BwAmVgd1/w11/gAAAABJRU5ErkJggg==\") right repeat-y\ -}"; - -var dom = require("../lib/dom"); -dom.importCssString(exports.cssText, exports.cssClass); -}); diff --git a/IDE/jsrealb-ide/ace-src-noconflict/theme-clouds_midnight.js b/IDE/jsrealb-ide/ace-src-noconflict/theme-clouds_midnight.js deleted file mode 100644 index 6aca24be..00000000 --- a/IDE/jsrealb-ide/ace-src-noconflict/theme-clouds_midnight.js +++ /dev/null @@ -1,127 +0,0 @@ -/* ***** BEGIN LICENSE BLOCK ***** - * Distributed under the BSD license: - * - * Copyright (c) 2010, Ajax.org B.V. - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are met: - * * Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * * Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * * Neither the name of Ajax.org B.V. nor the - * names of its contributors may be used to endorse or promote products - * derived from this software without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND - * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED - * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE - * DISCLAIMED. IN NO EVENT SHALL AJAX.ORG B.V. BE LIABLE FOR ANY - * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES - * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; - * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND - * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - * - * ***** END LICENSE BLOCK ***** */ - -ace.define('ace/theme/clouds_midnight', ['require', 'exports', 'module' , 'ace/lib/dom'], function(require, exports, module) { - -exports.isDark = true; -exports.cssClass = "ace-clouds-midnight"; -exports.cssText = ".ace-clouds-midnight .ace_gutter {\ -background: #232323;\ -color: #929292\ -}\ -.ace-clouds-midnight .ace_print-margin {\ -width: 1px;\ -background: #232323\ -}\ -.ace-clouds-midnight {\ -background-color: #191919;\ -color: #929292\ -}\ -.ace-clouds-midnight .ace_cursor {\ -color: #7DA5DC\ -}\ -.ace-clouds-midnight .ace_marker-layer .ace_selection {\ -background: #000000\ -}\ -.ace-clouds-midnight.ace_multiselect .ace_selection.ace_start {\ -box-shadow: 0 0 3px 0px #191919;\ -border-radius: 2px\ -}\ -.ace-clouds-midnight .ace_marker-layer .ace_step {\ -background: rgb(102, 82, 0)\ -}\ -.ace-clouds-midnight .ace_marker-layer .ace_bracket {\ -margin: -1px 0 0 -1px;\ -border: 1px solid #BFBFBF\ -}\ -.ace-clouds-midnight .ace_marker-layer .ace_active-line {\ -background: rgba(215, 215, 215, 0.031)\ -}\ -.ace-clouds-midnight .ace_gutter-active-line {\ -background-color: rgba(215, 215, 215, 0.031)\ -}\ -.ace-clouds-midnight .ace_marker-layer .ace_selected-word {\ -border: 1px solid #000000\ -}\ -.ace-clouds-midnight .ace_invisible {\ -color: #BFBFBF\ -}\ -.ace-clouds-midnight .ace_keyword,\ -.ace-clouds-midnight .ace_meta,\ -.ace-clouds-midnight .ace_support.ace_constant.ace_property-value {\ -color: #927C5D\ -}\ -.ace-clouds-midnight .ace_keyword.ace_operator {\ -color: #4B4B4B\ -}\ -.ace-clouds-midnight .ace_keyword.ace_other.ace_unit {\ -color: #366F1A\ -}\ -.ace-clouds-midnight .ace_constant.ace_language {\ -color: #39946A\ -}\ -.ace-clouds-midnight .ace_constant.ace_numeric {\ -color: #46A609\ -}\ -.ace-clouds-midnight .ace_constant.ace_character.ace_entity {\ -color: #A165AC\ -}\ -.ace-clouds-midnight .ace_invalid {\ -color: #FFFFFF;\ -background-color: #E92E2E\ -}\ -.ace-clouds-midnight .ace_fold {\ -background-color: #927C5D;\ -border-color: #929292\ -}\ -.ace-clouds-midnight .ace_storage,\ -.ace-clouds-midnight .ace_support.ace_class,\ -.ace-clouds-midnight .ace_support.ace_function,\ -.ace-clouds-midnight .ace_support.ace_other,\ -.ace-clouds-midnight .ace_support.ace_type {\ -color: #E92E2E\ -}\ -.ace-clouds-midnight .ace_string {\ -color: #5D90CD\ -}\ -.ace-clouds-midnight .ace_comment {\ -color: #3C403B\ -}\ -.ace-clouds-midnight .ace_entity.ace_name.ace_tag,\ -.ace-clouds-midnight .ace_entity.ace_other.ace_attribute-name {\ -color: #606060\ -}\ -.ace-clouds-midnight .ace_indent-guide {\ -background: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAACCAYAAACZgbYnAAAAEklEQVQImWNgYGBgYHB3d/8PAAOIAdULw8qMAAAAAElFTkSuQmCC) right repeat-y\ -}"; - -var dom = require("../lib/dom"); -dom.importCssString(exports.cssText, exports.cssClass); -}); diff --git a/IDE/jsrealb-ide/ace-src-noconflict/theme-cobalt.js b/IDE/jsrealb-ide/ace-src-noconflict/theme-cobalt.js deleted file mode 100644 index 34fed341..00000000 --- a/IDE/jsrealb-ide/ace-src-noconflict/theme-cobalt.js +++ /dev/null @@ -1,143 +0,0 @@ -/* ***** BEGIN LICENSE BLOCK ***** - * Distributed under the BSD license: - * - * Copyright (c) 2010, Ajax.org B.V. - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are met: - * * Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * * Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * * Neither the name of Ajax.org B.V. nor the - * names of its contributors may be used to endorse or promote products - * derived from this software without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND - * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED - * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE - * DISCLAIMED. IN NO EVENT SHALL AJAX.ORG B.V. BE LIABLE FOR ANY - * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES - * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; - * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND - * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - * - * ***** END LICENSE BLOCK ***** */ - -ace.define('ace/theme/cobalt', ['require', 'exports', 'module' , 'ace/lib/dom'], function(require, exports, module) { - -exports.isDark = true; -exports.cssClass = "ace-cobalt"; -exports.cssText = ".ace-cobalt .ace_gutter {\ -background: #011e3a;\ -color: #fff\ -}\ -.ace-cobalt .ace_print-margin {\ -width: 1px;\ -background: #011e3a\ -}\ -.ace-cobalt {\ -background-color: #002240;\ -color: #FFFFFF\ -}\ -.ace-cobalt .ace_cursor {\ -color: #FFFFFF\ -}\ -.ace-cobalt .ace_marker-layer .ace_selection {\ -background: rgba(179, 101, 57, 0.75)\ -}\ -.ace-cobalt.ace_multiselect .ace_selection.ace_start {\ -box-shadow: 0 0 3px 0px #002240;\ -border-radius: 2px\ -}\ -.ace-cobalt .ace_marker-layer .ace_step {\ -background: rgb(127, 111, 19)\ -}\ -.ace-cobalt .ace_marker-layer .ace_bracket {\ -margin: -1px 0 0 -1px;\ -border: 1px solid rgba(255, 255, 255, 0.15)\ -}\ -.ace-cobalt .ace_marker-layer .ace_active-line {\ -background: rgba(0, 0, 0, 0.35)\ -}\ -.ace-cobalt .ace_gutter-active-line {\ -background-color: rgba(0, 0, 0, 0.35)\ -}\ -.ace-cobalt .ace_marker-layer .ace_selected-word {\ -border: 1px solid rgba(179, 101, 57, 0.75)\ -}\ -.ace-cobalt .ace_invisible {\ -color: rgba(255, 255, 255, 0.15)\ -}\ -.ace-cobalt .ace_keyword,\ -.ace-cobalt .ace_meta {\ -color: #FF9D00\ -}\ -.ace-cobalt .ace_constant,\ -.ace-cobalt .ace_constant.ace_character,\ -.ace-cobalt .ace_constant.ace_character.ace_escape,\ -.ace-cobalt .ace_constant.ace_other {\ -color: #FF628C\ -}\ -.ace-cobalt .ace_invalid {\ -color: #F8F8F8;\ -background-color: #800F00\ -}\ -.ace-cobalt .ace_support {\ -color: #80FFBB\ -}\ -.ace-cobalt .ace_support.ace_constant {\ -color: #EB939A\ -}\ -.ace-cobalt .ace_fold {\ -background-color: #FF9D00;\ -border-color: #FFFFFF\ -}\ -.ace-cobalt .ace_support.ace_function {\ -color: #FFB054\ -}\ -.ace-cobalt .ace_storage {\ -color: #FFEE80\ -}\ -.ace-cobalt .ace_entity {\ -color: #FFDD00\ -}\ -.ace-cobalt .ace_string {\ -color: #3AD900\ -}\ -.ace-cobalt .ace_string.ace_regexp {\ -color: #80FFC2\ -}\ -.ace-cobalt .ace_comment {\ -font-style: italic;\ -color: #0088FF\ -}\ -.ace-cobalt .ace_heading,\ -.ace-cobalt .ace_markup.ace_heading {\ -color: #C8E4FD;\ -background-color: #001221\ -}\ -.ace-cobalt .ace_list,\ -.ace-cobalt .ace_markup.ace_list {\ -background-color: #130D26\ -}\ -.ace-cobalt .ace_variable {\ -color: #CCCCCC\ -}\ -.ace-cobalt .ace_variable.ace_language {\ -color: #FF80E1\ -}\ -.ace-cobalt .ace_meta.ace_tag {\ -color: #9EFFFF\ -}\ -.ace-cobalt .ace_indent-guide {\ -background: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAACCAYAAACZgbYnAAAAEklEQVQImWNgYGBgYHCLSvkPAAP3AgSDTRd4AAAAAElFTkSuQmCC) right repeat-y\ -}"; - -var dom = require("../lib/dom"); -dom.importCssString(exports.cssText, exports.cssClass); -}); diff --git a/IDE/jsrealb-ide/ace-src-noconflict/theme-crimson_editor.js b/IDE/jsrealb-ide/ace-src-noconflict/theme-crimson_editor.js deleted file mode 100644 index e07c2da2..00000000 --- a/IDE/jsrealb-ide/ace-src-noconflict/theme-crimson_editor.js +++ /dev/null @@ -1,148 +0,0 @@ -/* ***** BEGIN LICENSE BLOCK ***** - * Distributed under the BSD license: - * - * Copyright (c) 2010, Ajax.org B.V. - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are met: - * * Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * * Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * * Neither the name of Ajax.org B.V. nor the - * names of its contributors may be used to endorse or promote products - * derived from this software without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND - * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED - * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE - * DISCLAIMED. IN NO EVENT SHALL AJAX.ORG B.V. BE LIABLE FOR ANY - * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES - * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; - * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND - * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - * - * ***** END LICENSE BLOCK ***** */ - -ace.define('ace/theme/crimson_editor', ['require', 'exports', 'module' , 'ace/lib/dom'], function(require, exports, module) { -exports.isDark = false; -exports.cssText = ".ace-crimson-editor .ace_gutter {\ -background: #ebebeb;\ -color: #333;\ -overflow : hidden;\ -}\ -.ace-crimson-editor .ace_gutter-layer {\ -width: 100%;\ -text-align: right;\ -}\ -.ace-crimson-editor .ace_print-margin {\ -width: 1px;\ -background: #e8e8e8;\ -}\ -.ace-crimson-editor {\ -background-color: #FFFFFF;\ -color: rgb(64, 64, 64);\ -}\ -.ace-crimson-editor .ace_cursor {\ -color: black;\ -}\ -.ace-crimson-editor .ace_invisible {\ -color: rgb(191, 191, 191);\ -}\ -.ace-crimson-editor .ace_identifier {\ -color: black;\ -}\ -.ace-crimson-editor .ace_keyword {\ -color: blue;\ -}\ -.ace-crimson-editor .ace_constant.ace_buildin {\ -color: rgb(88, 72, 246);\ -}\ -.ace-crimson-editor .ace_constant.ace_language {\ -color: rgb(255, 156, 0);\ -}\ -.ace-crimson-editor .ace_constant.ace_library {\ -color: rgb(6, 150, 14);\ -}\ -.ace-crimson-editor .ace_invalid {\ -text-decoration: line-through;\ -color: rgb(224, 0, 0);\ -}\ -.ace-crimson-editor .ace_fold {\ -}\ -.ace-crimson-editor .ace_support.ace_function {\ -color: rgb(192, 0, 0);\ -}\ -.ace-crimson-editor .ace_support.ace_constant {\ -color: rgb(6, 150, 14);\ -}\ -.ace-crimson-editor .ace_support.ace_type,\ -.ace-crimson-editor .ace_support.ace_class {\ -color: rgb(109, 121, 222);\ -}\ -.ace-crimson-editor .ace_keyword.ace_operator {\ -color: rgb(49, 132, 149);\ -}\ -.ace-crimson-editor .ace_string {\ -color: rgb(128, 0, 128);\ -}\ -.ace-crimson-editor .ace_comment {\ -color: rgb(76, 136, 107);\ -}\ -.ace-crimson-editor .ace_comment.ace_doc {\ -color: rgb(0, 102, 255);\ -}\ -.ace-crimson-editor .ace_comment.ace_doc.ace_tag {\ -color: rgb(128, 159, 191);\ -}\ -.ace-crimson-editor .ace_constant.ace_numeric {\ -color: rgb(0, 0, 64);\ -}\ -.ace-crimson-editor .ace_variable {\ -color: rgb(0, 64, 128);\ -}\ -.ace-crimson-editor .ace_xml-pe {\ -color: rgb(104, 104, 91);\ -}\ -.ace-crimson-editor .ace_marker-layer .ace_selection {\ -background: rgb(181, 213, 255);\ -}\ -.ace-crimson-editor .ace_marker-layer .ace_step {\ -background: rgb(252, 255, 0);\ -}\ -.ace-crimson-editor .ace_marker-layer .ace_stack {\ -background: rgb(164, 229, 101);\ -}\ -.ace-crimson-editor .ace_marker-layer .ace_bracket {\ -margin: -1px 0 0 -1px;\ -border: 1px solid rgb(192, 192, 192);\ -}\ -.ace-crimson-editor .ace_marker-layer .ace_active-line {\ -background: rgb(232, 242, 254);\ -}\ -.ace-crimson-editor .ace_gutter-active-line {\ -background-color : #dcdcdc;\ -}\ -.ace-crimson-editor .ace_meta.ace_tag {\ -color:rgb(28, 2, 255);\ -}\ -.ace-crimson-editor .ace_marker-layer .ace_selected-word {\ -background: rgb(250, 250, 255);\ -border: 1px solid rgb(200, 200, 250);\ -}\ -.ace-crimson-editor .ace_string.ace_regex {\ -color: rgb(192, 0, 192);\ -}\ -.ace-crimson-editor .ace_indent-guide {\ -background: url(\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAACCAYAAACZgbYnAAAAE0lEQVQImWP4////f4bLly//BwAmVgd1/w11/gAAAABJRU5ErkJggg==\") right repeat-y;\ -}"; - -exports.cssClass = "ace-crimson-editor"; - -var dom = require("../lib/dom"); -dom.importCssString(exports.cssText, exports.cssClass); -}); diff --git a/IDE/jsrealb-ide/ace-src-noconflict/theme-dawn.js b/IDE/jsrealb-ide/ace-src-noconflict/theme-dawn.js deleted file mode 100644 index b6b51dbe..00000000 --- a/IDE/jsrealb-ide/ace-src-noconflict/theme-dawn.js +++ /dev/null @@ -1,139 +0,0 @@ -/* ***** BEGIN LICENSE BLOCK ***** - * Distributed under the BSD license: - * - * Copyright (c) 2010, Ajax.org B.V. - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are met: - * * Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * * Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * * Neither the name of Ajax.org B.V. nor the - * names of its contributors may be used to endorse or promote products - * derived from this software without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND - * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED - * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE - * DISCLAIMED. IN NO EVENT SHALL AJAX.ORG B.V. BE LIABLE FOR ANY - * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES - * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; - * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND - * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - * - * ***** END LICENSE BLOCK ***** */ - -ace.define('ace/theme/dawn', ['require', 'exports', 'module' , 'ace/lib/dom'], function(require, exports, module) { - -exports.isDark = false; -exports.cssClass = "ace-dawn"; -exports.cssText = ".ace-dawn .ace_gutter {\ -background: #ebebeb;\ -color: #333\ -}\ -.ace-dawn .ace_print-margin {\ -width: 1px;\ -background: #e8e8e8\ -}\ -.ace-dawn {\ -background-color: #F9F9F9;\ -color: #080808\ -}\ -.ace-dawn .ace_cursor {\ -color: #000000\ -}\ -.ace-dawn .ace_marker-layer .ace_selection {\ -background: rgba(39, 95, 255, 0.30)\ -}\ -.ace-dawn.ace_multiselect .ace_selection.ace_start {\ -box-shadow: 0 0 3px 0px #F9F9F9;\ -border-radius: 2px\ -}\ -.ace-dawn .ace_marker-layer .ace_step {\ -background: rgb(255, 255, 0)\ -}\ -.ace-dawn .ace_marker-layer .ace_bracket {\ -margin: -1px 0 0 -1px;\ -border: 1px solid rgba(75, 75, 126, 0.50)\ -}\ -.ace-dawn .ace_marker-layer .ace_active-line {\ -background: rgba(36, 99, 180, 0.12)\ -}\ -.ace-dawn .ace_gutter-active-line {\ -background-color : #dcdcdc\ -}\ -.ace-dawn .ace_marker-layer .ace_selected-word {\ -border: 1px solid rgba(39, 95, 255, 0.30)\ -}\ -.ace-dawn .ace_invisible {\ -color: rgba(75, 75, 126, 0.50)\ -}\ -.ace-dawn .ace_keyword,\ -.ace-dawn .ace_meta {\ -color: #794938\ -}\ -.ace-dawn .ace_constant,\ -.ace-dawn .ace_constant.ace_character,\ -.ace-dawn .ace_constant.ace_character.ace_escape,\ -.ace-dawn .ace_constant.ace_other {\ -color: #811F24\ -}\ -.ace-dawn .ace_invalid.ace_illegal {\ -text-decoration: underline;\ -font-style: italic;\ -color: #F8F8F8;\ -background-color: #B52A1D\ -}\ -.ace-dawn .ace_invalid.ace_deprecated {\ -text-decoration: underline;\ -font-style: italic;\ -color: #B52A1D\ -}\ -.ace-dawn .ace_support {\ -color: #691C97\ -}\ -.ace-dawn .ace_support.ace_constant {\ -color: #B4371F\ -}\ -.ace-dawn .ace_fold {\ -background-color: #794938;\ -border-color: #080808\ -}\ -.ace-dawn .ace_list,\ -.ace-dawn .ace_markup.ace_list,\ -.ace-dawn .ace_support.ace_function {\ -color: #693A17\ -}\ -.ace-dawn .ace_storage {\ -font-style: italic;\ -color: #A71D5D\ -}\ -.ace-dawn .ace_string {\ -color: #0B6125\ -}\ -.ace-dawn .ace_string.ace_regexp {\ -color: #CF5628\ -}\ -.ace-dawn .ace_comment {\ -font-style: italic;\ -color: #5A525F\ -}\ -.ace-dawn .ace_heading,\ -.ace-dawn .ace_markup.ace_heading {\ -color: #19356D\ -}\ -.ace-dawn .ace_variable {\ -color: #234A97\ -}\ -.ace-dawn .ace_indent-guide {\ -background: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAACCAYAAACZgbYnAAAAEklEQVQImWNgYGBgYLh/5+x/AAizA4hxNNsZAAAAAElFTkSuQmCC) right repeat-y\ -}"; - -var dom = require("../lib/dom"); -dom.importCssString(exports.cssText, exports.cssClass); -}); diff --git a/IDE/jsrealb-ide/ace-src-noconflict/theme-dreamweaver.js b/IDE/jsrealb-ide/ace-src-noconflict/theme-dreamweaver.js deleted file mode 100644 index 6d477ff8..00000000 --- a/IDE/jsrealb-ide/ace-src-noconflict/theme-dreamweaver.js +++ /dev/null @@ -1,167 +0,0 @@ -/* ***** BEGIN LICENSE BLOCK ***** - * Distributed under the BSD license: - * - * Copyright (c) 2010, Ajax.org B.V. - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are met: - * * Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * * Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * * Neither the name of Ajax.org B.V. nor the - * names of its contributors may be used to endorse or promote products - * derived from this software without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND - * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED - * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE - * DISCLAIMED. IN NO EVENT SHALL AJAX.ORG B.V. BE LIABLE FOR ANY - * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES - * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; - * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND - * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - * - * ***** END LICENSE BLOCK ***** */ - -ace.define('ace/theme/dreamweaver', ['require', 'exports', 'module' , 'ace/lib/dom'], function(require, exports, module) { -exports.isDark = false; -exports.cssClass = "ace-dreamweaver"; -exports.cssText = ".ace-dreamweaver .ace_gutter {\ -background: #e8e8e8;\ -color: #333;\ -}\ -.ace-dreamweaver .ace_print-margin {\ -width: 1px;\ -background: #e8e8e8;\ -}\ -.ace-dreamweaver {\ -background-color: #FFFFFF;\ -}\ -.ace-dreamweaver .ace_fold {\ -background-color: #757AD8;\ -}\ -.ace-dreamweaver .ace_cursor {\ -color: black;\ -}\ -.ace-dreamweaver .ace_invisible {\ -color: rgb(191, 191, 191);\ -}\ -.ace-dreamweaver .ace_storage,\ -.ace-dreamweaver .ace_keyword {\ -color: blue;\ -}\ -.ace-dreamweaver .ace_constant.ace_buildin {\ -color: rgb(88, 72, 246);\ -}\ -.ace-dreamweaver .ace_constant.ace_language {\ -color: rgb(88, 92, 246);\ -}\ -.ace-dreamweaver .ace_constant.ace_library {\ -color: rgb(6, 150, 14);\ -}\ -.ace-dreamweaver .ace_invalid {\ -background-color: rgb(153, 0, 0);\ -color: white;\ -}\ -.ace-dreamweaver .ace_support.ace_function {\ -color: rgb(60, 76, 114);\ -}\ -.ace-dreamweaver .ace_support.ace_constant {\ -color: rgb(6, 150, 14);\ -}\ -.ace-dreamweaver .ace_support.ace_type,\ -.ace-dreamweaver .ace_support.ace_class {\ -color: #009;\ -}\ -.ace-dreamweaver .ace_support.ace_php_tag {\ -color: #f00;\ -}\ -.ace-dreamweaver .ace_keyword.ace_operator {\ -color: rgb(104, 118, 135);\ -}\ -.ace-dreamweaver .ace_string {\ -color: #00F;\ -}\ -.ace-dreamweaver .ace_comment {\ -color: rgb(76, 136, 107);\ -}\ -.ace-dreamweaver .ace_comment.ace_doc {\ -color: rgb(0, 102, 255);\ -}\ -.ace-dreamweaver .ace_comment.ace_doc.ace_tag {\ -color: rgb(128, 159, 191);\ -}\ -.ace-dreamweaver .ace_constant.ace_numeric {\ -color: rgb(0, 0, 205);\ -}\ -.ace-dreamweaver .ace_variable {\ -color: #06F\ -}\ -.ace-dreamweaver .ace_xml-pe {\ -color: rgb(104, 104, 91);\ -}\ -.ace-dreamweaver .ace_entity.ace_name.ace_function {\ -color: #00F;\ -}\ -.ace-dreamweaver .ace_heading {\ -color: rgb(12, 7, 255);\ -}\ -.ace-dreamweaver .ace_list {\ -color:rgb(185, 6, 144);\ -}\ -.ace-dreamweaver .ace_marker-layer .ace_selection {\ -background: rgb(181, 213, 255);\ -}\ -.ace-dreamweaver .ace_marker-layer .ace_step {\ -background: rgb(252, 255, 0);\ -}\ -.ace-dreamweaver .ace_marker-layer .ace_stack {\ -background: rgb(164, 229, 101);\ -}\ -.ace-dreamweaver .ace_marker-layer .ace_bracket {\ -margin: -1px 0 0 -1px;\ -border: 1px solid rgb(192, 192, 192);\ -}\ -.ace-dreamweaver .ace_marker-layer .ace_active-line {\ -background: rgba(0, 0, 0, 0.07);\ -}\ -.ace-dreamweaver .ace_marker-layer .ace_selected-word {\ -background: rgb(250, 250, 255);\ -border: 1px solid rgb(200, 200, 250);\ -}\ -.ace-dreamweaver .ace_meta.ace_tag {\ -color:#009;\ -}\ -.ace-dreamweaver .ace_meta.ace_tag.ace_anchor {\ -color:#060;\ -}\ -.ace-dreamweaver .ace_meta.ace_tag.ace_form {\ -color:#F90;\ -}\ -.ace-dreamweaver .ace_meta.ace_tag.ace_image {\ -color:#909;\ -}\ -.ace-dreamweaver .ace_meta.ace_tag.ace_script {\ -color:#900;\ -}\ -.ace-dreamweaver .ace_meta.ace_tag.ace_style {\ -color:#909;\ -}\ -.ace-dreamweaver .ace_meta.ace_tag.ace_table {\ -color:#099;\ -}\ -.ace-dreamweaver .ace_string.ace_regex {\ -color: rgb(255, 0, 0)\ -}\ -.ace-dreamweaver .ace_indent-guide {\ -background: url(\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAACCAYAAACZgbYnAAAAE0lEQVQImWP4////f4bLly//BwAmVgd1/w11/gAAAABJRU5ErkJggg==\") right repeat-y;\ -}"; - -var dom = require("../lib/dom"); -dom.importCssString(exports.cssText, exports.cssClass); -}); diff --git a/IDE/jsrealb-ide/ace-src-noconflict/theme-eclipse.js b/IDE/jsrealb-ide/ace-src-noconflict/theme-eclipse.js deleted file mode 100644 index 12af6b5d..00000000 --- a/IDE/jsrealb-ide/ace-src-noconflict/theme-eclipse.js +++ /dev/null @@ -1,124 +0,0 @@ -/* ***** BEGIN LICENSE BLOCK ***** - * Distributed under the BSD license: - * - * Copyright (c) 2010, Ajax.org B.V. - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are met: - * * Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * * Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * * Neither the name of Ajax.org B.V. nor the - * names of its contributors may be used to endorse or promote products - * derived from this software without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND - * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED - * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE - * DISCLAIMED. IN NO EVENT SHALL AJAX.ORG B.V. BE LIABLE FOR ANY - * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES - * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; - * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND - * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - * - * ***** END LICENSE BLOCK ***** */ - -ace.define('ace/theme/eclipse', ['require', 'exports', 'module' , 'ace/lib/dom'], function(require, exports, module) { - - -exports.isDark = false; -exports.cssText = ".ace-eclipse .ace_gutter {\ -background: #ebebeb;\ -border-right: 1px solid rgb(159, 159, 159);\ -color: rgb(136, 136, 136);\ -}\ -.ace-eclipse .ace_print-margin {\ -width: 1px;\ -background: #ebebeb;\ -}\ -.ace-eclipse {\ -background-color: #FFFFFF;\ -}\ -.ace-eclipse .ace_fold {\ -background-color: rgb(60, 76, 114);\ -}\ -.ace-eclipse .ace_cursor {\ -color: black;\ -}\ -.ace-eclipse .ace_storage,\ -.ace-eclipse .ace_keyword,\ -.ace-eclipse .ace_variable {\ -color: rgb(127, 0, 85);\ -}\ -.ace-eclipse .ace_constant.ace_buildin {\ -color: rgb(88, 72, 246);\ -}\ -.ace-eclipse .ace_constant.ace_library {\ -color: rgb(6, 150, 14);\ -}\ -.ace-eclipse .ace_function {\ -color: rgb(60, 76, 114);\ -}\ -.ace-eclipse .ace_string {\ -color: rgb(42, 0, 255);\ -}\ -.ace-eclipse .ace_comment {\ -color: rgb(113, 150, 130);\ -}\ -.ace-eclipse .ace_comment.ace_doc {\ -color: rgb(63, 95, 191);\ -}\ -.ace-eclipse .ace_comment.ace_doc.ace_tag {\ -color: rgb(127, 159, 191);\ -}\ -.ace-eclipse .ace_constant.ace_numeric {\ -color: darkblue;\ -}\ -.ace-eclipse .ace_tag {\ -color: rgb(25, 118, 116);\ -}\ -.ace-eclipse .ace_type {\ -color: rgb(127, 0, 127);\ -}\ -.ace-eclipse .ace_xml-pe {\ -color: rgb(104, 104, 91);\ -}\ -.ace-eclipse .ace_marker-layer .ace_selection {\ -background: rgb(181, 213, 255);\ -}\ -.ace-eclipse .ace_marker-layer .ace_bracket {\ -margin: -1px 0 0 -1px;\ -border: 1px solid rgb(192, 192, 192);\ -}\ -.ace-eclipse .ace_meta.ace_tag {\ -color:rgb(25, 118, 116);\ -}\ -.ace-eclipse .ace_invisible {\ -color: #ddd;\ -}\ -.ace-eclipse .ace_entity.ace_other.ace_attribute-name {\ -color:rgb(127, 0, 127);\ -}\ -.ace-eclipse .ace_marker-layer .ace_step {\ -background: rgb(255, 255, 0);\ -}\ -.ace-eclipse .ace_marker-layer .ace_active-line {\ -background: rgb(232, 242, 254);\ -}\ -.ace-eclipse .ace_marker-layer .ace_selected-word {\ -border: 1px solid rgb(181, 213, 255);\ -}\ -.ace-eclipse .ace_indent-guide {\ -background: url(\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAACCAYAAACZgbYnAAAAE0lEQVQImWP4////f4bLly//BwAmVgd1/w11/gAAAABJRU5ErkJggg==\") right repeat-y;\ -}"; - -exports.cssClass = "ace-eclipse"; - -var dom = require("../lib/dom"); -dom.importCssString(exports.cssText, exports.cssClass); -}); diff --git a/IDE/jsrealb-ide/ace-src-noconflict/theme-github.js b/IDE/jsrealb-ide/ace-src-noconflict/theme-github.js deleted file mode 100644 index 072c5e14..00000000 --- a/IDE/jsrealb-ide/ace-src-noconflict/theme-github.js +++ /dev/null @@ -1,131 +0,0 @@ -/* ***** BEGIN LICENSE BLOCK ***** - * Distributed under the BSD license: - * - * Copyright (c) 2010, Ajax.org B.V. - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are met: - * * Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * * Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * * Neither the name of Ajax.org B.V. nor the - * names of its contributors may be used to endorse or promote products - * derived from this software without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND - * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED - * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE - * DISCLAIMED. IN NO EVENT SHALL AJAX.ORG B.V. BE LIABLE FOR ANY - * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES - * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; - * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND - * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - * - * ***** END LICENSE BLOCK ***** */ - -ace.define('ace/theme/github', ['require', 'exports', 'module' , 'ace/lib/dom'], function(require, exports, module) { - -exports.isDark = false; -exports.cssClass = "ace-github"; -exports.cssText = "/* CSS style content from github's default pygments highlighter template.\ -Cursor and selection styles from textmate.css. */\ -.ace-github .ace_gutter {\ -background: #e8e8e8;\ -color: #AAA;\ -}\ -.ace-github {\ -background: #fff;\ -color: #000;\ -}\ -.ace-github .ace_keyword {\ -font-weight: bold;\ -}\ -.ace-github .ace_string {\ -color: #D14;\ -}\ -.ace-github .ace_variable.ace_class {\ -color: teal;\ -}\ -.ace-github .ace_constant.ace_numeric {\ -color: #099;\ -}\ -.ace-github .ace_constant.ace_buildin {\ -color: #0086B3;\ -}\ -.ace-github .ace_support.ace_function {\ -color: #0086B3;\ -}\ -.ace-github .ace_comment {\ -color: #998;\ -font-style: italic;\ -}\ -.ace-github .ace_variable.ace_language {\ -color: #0086B3;\ -}\ -.ace-github .ace_paren {\ -font-weight: bold;\ -}\ -.ace-github .ace_boolean {\ -font-weight: bold;\ -}\ -.ace-github .ace_string.ace_regexp {\ -color: #009926;\ -font-weight: normal;\ -}\ -.ace-github .ace_variable.ace_instance {\ -color: teal;\ -}\ -.ace-github .ace_constant.ace_language {\ -font-weight: bold;\ -}\ -.ace-github .ace_cursor {\ -color: black;\ -}\ -.ace-github .ace_marker-layer .ace_active-line {\ -background: rgb(255, 255, 204);\ -}\ -.ace-github .ace_marker-layer .ace_selection {\ -background: rgb(181, 213, 255);\ -}\ -.ace-github.ace_multiselect .ace_selection.ace_start {\ -box-shadow: 0 0 3px 0px white;\ -border-radius: 2px;\ -}\ -/* bold keywords cause cursor issues for some fonts */\ -/* this disables bold style for editor and keeps for static highlighter */\ -.ace-github.ace_nobold .ace_line > span {\ -font-weight: normal !important;\ -}\ -.ace-github .ace_marker-layer .ace_step {\ -background: rgb(252, 255, 0);\ -}\ -.ace-github .ace_marker-layer .ace_stack {\ -background: rgb(164, 229, 101);\ -}\ -.ace-github .ace_marker-layer .ace_bracket {\ -margin: -1px 0 0 -1px;\ -border: 1px solid rgb(192, 192, 192);\ -}\ -.ace-github .ace_gutter-active-line {\ -background-color : rgba(0, 0, 0, 0.07);\ -}\ -.ace-github .ace_marker-layer .ace_selected-word {\ -background: rgb(250, 250, 255);\ -border: 1px solid rgb(200, 200, 250);\ -}\ -.ace-github .ace_print-margin {\ -width: 1px;\ -background: #e8e8e8;\ -}\ -.ace-github .ace_indent-guide {\ -background: url(\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAACCAYAAACZgbYnAAAAE0lEQVQImWP4////f4bLly//BwAmVgd1/w11/gAAAABJRU5ErkJggg==\") right repeat-y;\ -}"; - - var dom = require("../lib/dom"); - dom.importCssString(exports.cssText, exports.cssClass); -}); diff --git a/IDE/jsrealb-ide/ace-src-noconflict/theme-idle_fingers.js b/IDE/jsrealb-ide/ace-src-noconflict/theme-idle_fingers.js deleted file mode 100644 index 0c02d31d..00000000 --- a/IDE/jsrealb-ide/ace-src-noconflict/theme-idle_fingers.js +++ /dev/null @@ -1,127 +0,0 @@ -/* ***** BEGIN LICENSE BLOCK ***** - * Distributed under the BSD license: - * - * Copyright (c) 2010, Ajax.org B.V. - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are met: - * * Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * * Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * * Neither the name of Ajax.org B.V. nor the - * names of its contributors may be used to endorse or promote products - * derived from this software without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND - * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED - * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE - * DISCLAIMED. IN NO EVENT SHALL AJAX.ORG B.V. BE LIABLE FOR ANY - * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES - * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; - * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND - * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - * - * ***** END LICENSE BLOCK ***** */ - -ace.define('ace/theme/idle_fingers', ['require', 'exports', 'module' , 'ace/lib/dom'], function(require, exports, module) { - -exports.isDark = true; -exports.cssClass = "ace-idle-fingers"; -exports.cssText = ".ace-idle-fingers .ace_gutter {\ -background: #3b3b3b;\ -color: #fff\ -}\ -.ace-idle-fingers .ace_print-margin {\ -width: 1px;\ -background: #3b3b3b\ -}\ -.ace-idle-fingers {\ -background-color: #323232;\ -color: #FFFFFF\ -}\ -.ace-idle-fingers .ace_cursor {\ -color: #91FF00\ -}\ -.ace-idle-fingers .ace_marker-layer .ace_selection {\ -background: rgba(90, 100, 126, 0.88)\ -}\ -.ace-idle-fingers.ace_multiselect .ace_selection.ace_start {\ -box-shadow: 0 0 3px 0px #323232;\ -border-radius: 2px\ -}\ -.ace-idle-fingers .ace_marker-layer .ace_step {\ -background: rgb(102, 82, 0)\ -}\ -.ace-idle-fingers .ace_marker-layer .ace_bracket {\ -margin: -1px 0 0 -1px;\ -border: 1px solid #404040\ -}\ -.ace-idle-fingers .ace_marker-layer .ace_active-line {\ -background: #353637\ -}\ -.ace-idle-fingers .ace_gutter-active-line {\ -background-color: #353637\ -}\ -.ace-idle-fingers .ace_marker-layer .ace_selected-word {\ -border: 1px solid rgba(90, 100, 126, 0.88)\ -}\ -.ace-idle-fingers .ace_invisible {\ -color: #404040\ -}\ -.ace-idle-fingers .ace_keyword,\ -.ace-idle-fingers .ace_meta {\ -color: #CC7833\ -}\ -.ace-idle-fingers .ace_constant,\ -.ace-idle-fingers .ace_constant.ace_character,\ -.ace-idle-fingers .ace_constant.ace_character.ace_escape,\ -.ace-idle-fingers .ace_constant.ace_other,\ -.ace-idle-fingers .ace_support.ace_constant {\ -color: #6C99BB\ -}\ -.ace-idle-fingers .ace_invalid {\ -color: #FFFFFF;\ -background-color: #FF0000\ -}\ -.ace-idle-fingers .ace_fold {\ -background-color: #CC7833;\ -border-color: #FFFFFF\ -}\ -.ace-idle-fingers .ace_support.ace_function {\ -color: #B83426\ -}\ -.ace-idle-fingers .ace_variable.ace_parameter {\ -font-style: italic\ -}\ -.ace-idle-fingers .ace_string {\ -color: #A5C261\ -}\ -.ace-idle-fingers .ace_string.ace_regexp {\ -color: #CCCC33\ -}\ -.ace-idle-fingers .ace_comment {\ -font-style: italic;\ -color: #BC9458\ -}\ -.ace-idle-fingers .ace_meta.ace_tag {\ -color: #FFE5BB\ -}\ -.ace-idle-fingers .ace_entity.ace_name {\ -color: #FFC66D\ -}\ -.ace-idle-fingers .ace_collab.ace_user1 {\ -color: #323232;\ -background-color: #FFF980\ -}\ -.ace-idle-fingers .ace_indent-guide {\ -background: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAACCAYAAACZgbYnAAAAEklEQVQImWMwMjLyZYiPj/8PAAreAwAI1+g0AAAAAElFTkSuQmCC) right repeat-y\ -}"; - -var dom = require("../lib/dom"); -dom.importCssString(exports.cssText, exports.cssClass); -}); diff --git a/IDE/jsrealb-ide/ace-src-noconflict/theme-katzenmilch.js b/IDE/jsrealb-ide/ace-src-noconflict/theme-katzenmilch.js deleted file mode 100644 index 25dca278..00000000 --- a/IDE/jsrealb-ide/ace-src-noconflict/theme-katzenmilch.js +++ /dev/null @@ -1,150 +0,0 @@ -/* ***** BEGIN LICENSE BLOCK ***** - * Distributed under the BSD license: - * - * Copyright (c) 2010, Ajax.org B.V. - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are met: - * * Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * * Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * * Neither the name of Ajax.org B.V. nor the - * names of its contributors may be used to endorse or promote products - * derived from this software without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND - * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED - * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE - * DISCLAIMED. IN NO EVENT SHALL AJAX.ORG B.V. BE LIABLE FOR ANY - * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES - * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; - * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND - * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - * - * ***** END LICENSE BLOCK ***** */ - -ace.define('ace/theme/katzenmilch', ['require', 'exports', 'module' , 'ace/lib/dom'], function(require, exports, module) { - -exports.isDark = false; -exports.cssClass = "ace-katzenmilch"; -exports.cssText = ".ace-katzenmilch .ace_gutter,\ -/* THIS THEME WAS AUTOGENERATED BY Theme.tmpl.css (UUID: ) */\ -.ace-katzenmilch .ace_gutter {\ -background: #e8e8e8;\ -color: #333\ -}\ -.ace-katzenmilch .ace_print-margin {\ -width: 1px;\ -background: #e8e8e8\ -}\ -.ace-katzenmilch {\ -background-color: #f3f2f3;\ -color: rgba(15, 0, 9, 1.0)\ -}\ -.ace-katzenmilch .ace_cursor {\ -border-left: 2px solid #100011\ -}\ -.ace-katzenmilch .ace_overwrite-cursors .ace_cursor {\ -border-left: 0px;\ -border-bottom: 1px solid #100011\ -}\ -.ace-katzenmilch .ace_marker-layer .ace_selection {\ -background: rgba(100, 5, 208, 0.27)\ -}\ -.ace-katzenmilch.ace_multiselect .ace_selection.ace_start {\ -box-shadow: 0 0 3px 0px #f3f2f3;\ -border-radius: 2px\ -}\ -.ace-katzenmilch .ace_marker-layer .ace_step {\ -background: rgb(198, 219, 174)\ -}\ -.ace-katzenmilch .ace_marker-layer .ace_bracket {\ -margin: -1px 0 0 -1px;\ -border: 1px solid #000000\ -}\ -.ace-katzenmilch .ace_marker-layer .ace_active-line {\ -background: rgb(232, 242, 254)\ -}\ -.ace-katzenmilch .ace_gutter-active-line {\ -background-color: rgb(232, 242, 254)\ -}\ -.ace-katzenmilch .ace_marker-layer .ace_selected-word {\ -border: 1px solid rgba(100, 5, 208, 0.27)\ -}\ -.ace-katzenmilch .ace_fold {\ -background-color: rgba(2, 95, 73, 0.97);\ -border-color: rgba(15, 0, 9, 1.0)\ -}\ -.ace-katzenmilch .ace_keyword {\ -color: #674Aa8;\ -rbackground-color: rgba(163, 170, 216, 0.055)\ -}\ -.ace-katzenmilch .ace_constant.ace_language {\ -color: #7D7e52;\ -rbackground-color: rgba(189, 190, 130, 0.059)\ -}\ -.ace-katzenmilch .ace_constant.ace_numeric {\ -color: rgba(79, 130, 123, 0.93);\ -rbackground-color: rgba(119, 194, 187, 0.059)\ -}\ -.ace-katzenmilch .ace_constant.ace_character,\ -.ace-katzenmilch .ace_constant.ace_other {\ -color: rgba(2, 95, 105, 1.0);\ -rbackground-color: rgba(127, 34, 153, 0.063)\ -}\ -.ace-katzenmilch .ace_support.ace_function {\ -color: #9D7e62;\ -rbackground-color: rgba(189, 190, 130, 0.039)\ -}\ -.ace-katzenmilch .ace_support.ace_class {\ -color: rgba(239, 106, 167, 1.0);\ -rbackground-color: rgba(239, 106, 167, 0.063)\ -}\ -.ace-katzenmilch .ace_storage {\ -color: rgba(123, 92, 191, 1.0);\ -rbackground-color: rgba(139, 93, 223, 0.051)\ -}\ -.ace-katzenmilch .ace_invalid {\ -color: #DFDFD5;\ -rbackground-color: #CC1B27\ -}\ -.ace-katzenmilch .ace_string {\ -color: #5a5f9b;\ -rbackground-color: rgba(170, 175, 219, 0.035)\ -}\ -.ace-katzenmilch .ace_comment {\ -font-style: italic;\ -color: rgba(64, 79, 80, 0.67);\ -rbackground-color: rgba(95, 15, 255, 0.0078)\ -}\ -.ace-katzenmilch .ace_entity.ace_name.ace_function,\ -.ace-katzenmilch .ace_variable {\ -color: rgba(2, 95, 73, 0.97);\ -rbackground-color: rgba(34, 255, 73, 0.12)\ -}\ -.ace-katzenmilch .ace_variable.ace_language {\ -color: #316fcf;\ -rbackground-color: rgba(58, 175, 255, 0.039)\ -}\ -.ace-katzenmilch .ace_variable.ace_parameter {\ -font-style: italic;\ -color: rgba(51, 150, 159, 0.87);\ -rbackground-color: rgba(5, 214, 249, 0.043)\ -}\ -.ace-katzenmilch .ace_entity.ace_other.ace_attribute-name {\ -color: rgba(73, 70, 194, 0.93);\ -rbackground-color: rgba(73, 134, 194, 0.035)\ -}\ -.ace-katzenmilch .ace_entity.ace_name.ace_tag {\ -color: #3976a2;\ -rbackground-color: rgba(73, 166, 210, 0.039)\ -}"; - -var dom = require("../lib/dom"); -dom.importCssString(exports.cssText, exports.cssClass); -}); diff --git a/IDE/jsrealb-ide/ace-src-noconflict/theme-kr.js b/IDE/jsrealb-ide/ace-src-noconflict/theme-kr.js deleted file mode 100644 index 97c6cd06..00000000 --- a/IDE/jsrealb-ide/ace-src-noconflict/theme-kr.js +++ /dev/null @@ -1,135 +0,0 @@ -/* ***** BEGIN LICENSE BLOCK ***** - * Distributed under the BSD license: - * - * Copyright (c) 2010, Ajax.org B.V. - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are met: - * * Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * * Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * * Neither the name of Ajax.org B.V. nor the - * names of its contributors may be used to endorse or promote products - * derived from this software without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND - * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED - * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE - * DISCLAIMED. IN NO EVENT SHALL AJAX.ORG B.V. BE LIABLE FOR ANY - * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES - * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; - * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND - * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - * - * ***** END LICENSE BLOCK ***** */ - -ace.define('ace/theme/kr_theme', ['require', 'exports', 'module' , 'ace/lib/dom'], function(require, exports, module) { - -exports.isDark = true; -exports.cssClass = "ace-kr-theme"; -exports.cssText = ".ace-kr-theme .ace_gutter {\ -background: #1c1917;\ -color: #FCFFE0\ -}\ -.ace-kr-theme .ace_print-margin {\ -width: 1px;\ -background: #1c1917\ -}\ -.ace-kr-theme {\ -background-color: #0B0A09;\ -color: #FCFFE0\ -}\ -.ace-kr-theme .ace_cursor {\ -color: #FF9900\ -}\ -.ace-kr-theme .ace_marker-layer .ace_selection {\ -background: rgba(170, 0, 255, 0.45)\ -}\ -.ace-kr-theme.ace_multiselect .ace_selection.ace_start {\ -box-shadow: 0 0 3px 0px #0B0A09;\ -border-radius: 2px\ -}\ -.ace-kr-theme .ace_marker-layer .ace_step {\ -background: rgb(102, 82, 0)\ -}\ -.ace-kr-theme .ace_marker-layer .ace_bracket {\ -margin: -1px 0 0 -1px;\ -border: 1px solid rgba(255, 177, 111, 0.32)\ -}\ -.ace-kr-theme .ace_marker-layer .ace_active-line {\ -background: #38403D\ -}\ -.ace-kr-theme .ace_gutter-active-line {\ -background-color : #38403D\ -}\ -.ace-kr-theme .ace_marker-layer .ace_selected-word {\ -border: 1px solid rgba(170, 0, 255, 0.45)\ -}\ -.ace-kr-theme .ace_invisible {\ -color: rgba(255, 177, 111, 0.32)\ -}\ -.ace-kr-theme .ace_keyword,\ -.ace-kr-theme .ace_meta {\ -color: #949C8B\ -}\ -.ace-kr-theme .ace_constant,\ -.ace-kr-theme .ace_constant.ace_character,\ -.ace-kr-theme .ace_constant.ace_character.ace_escape,\ -.ace-kr-theme .ace_constant.ace_other {\ -color: rgba(210, 117, 24, 0.76)\ -}\ -.ace-kr-theme .ace_invalid {\ -color: #F8F8F8;\ -background-color: #A41300\ -}\ -.ace-kr-theme .ace_support {\ -color: #9FC28A\ -}\ -.ace-kr-theme .ace_support.ace_constant {\ -color: #C27E66\ -}\ -.ace-kr-theme .ace_fold {\ -background-color: #949C8B;\ -border-color: #FCFFE0\ -}\ -.ace-kr-theme .ace_support.ace_function {\ -color: #85873A\ -}\ -.ace-kr-theme .ace_storage {\ -color: #FFEE80\ -}\ -.ace-kr-theme .ace_string {\ -color: rgba(164, 161, 181, 0.8)\ -}\ -.ace-kr-theme .ace_string.ace_regexp {\ -color: rgba(125, 255, 192, 0.65)\ -}\ -.ace-kr-theme .ace_comment {\ -font-style: italic;\ -color: #706D5B\ -}\ -.ace-kr-theme .ace_variable {\ -color: #D1A796\ -}\ -.ace-kr-theme .ace_list,\ -.ace-kr-theme .ace_markup.ace_list {\ -background-color: #0F0040\ -}\ -.ace-kr-theme .ace_variable.ace_language {\ -color: #FF80E1\ -}\ -.ace-kr-theme .ace_meta.ace_tag {\ -color: #BABD9C\ -}\ -.ace-kr-theme .ace_indent-guide {\ -background: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAACCAYAAACZgbYnAAAAEklEQVQImWNgYGBgYFBXV/8PAAJoAXX4kT2EAAAAAElFTkSuQmCC) right repeat-y\ -}"; - -var dom = require("../lib/dom"); -dom.importCssString(exports.cssText, exports.cssClass); -}); diff --git a/IDE/jsrealb-ide/ace-src-noconflict/theme-kuroir.js b/IDE/jsrealb-ide/ace-src-noconflict/theme-kuroir.js deleted file mode 100644 index acc8a61d..00000000 --- a/IDE/jsrealb-ide/ace-src-noconflict/theme-kuroir.js +++ /dev/null @@ -1,89 +0,0 @@ -/* ***** BEGIN LICENSE BLOCK ***** - * Distributed under the BSD license: - * - * Copyright (c) 2010, Ajax.org B.V. - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are met: - * * Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * * Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * * Neither the name of Ajax.org B.V. nor the - * names of its contributors may be used to endorse or promote products - * derived from this software without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND - * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED - * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE - * DISCLAIMED. IN NO EVENT SHALL AJAX.ORG B.V. BE LIABLE FOR ANY - * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES - * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; - * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND - * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - * - * ***** END LICENSE BLOCK ***** */ - -ace.define('ace/theme/kuroir', ['require', 'exports', 'module' , 'ace/lib/dom'], function(require, exports, module) { - -exports.isDark = false; -exports.cssClass = "ace-kuroir"; -exports.cssText = "/* THIS THEME WAS AUTOGENERATED BY Theme.tmpl.css (UUID: 467560D0-6ACE-4409-82FD-4791420837AC) */\ -.ace-kuroir .ace_gutter {\ -background: #e8e8e8;\ -color: #333;\ -}\ -.ace-kuroir .ace_print-margin {\ -width: 1px;\ -background: #e8e8e8;\ -}\ -.ace-kuroir {\ -background-color: #E8E9E8;\ -color: #363636;\ -}\ -.ace-kuroir .ace_cursor {\ -color: #202020;\ -}\ -.ace-kuroir .ace_marker-layer .ace_selection {\ -background: rgba(245, 170, 0, 0.57);\ -}\ -.ace-kuroir.ace_multiselect .ace_selection.ace_start {\ -box-shadow: 0 0 3px 0px #E8E9E8;\ -border-radius: 2px;\ -}\ -.ace-kuroir .ace_marker-layer .ace_step {\ -background: rgb(198, 219, 174);\ -}\ -.ace-kuroir .ace_marker-layer .ace_bracket {\ -margin: -1px 0 0 -1px;\ -border: 1px solid rgba(0, 0, 0, 0.29);\ -}\ -.ace-kuroir .ace_marker-layer .ace_active-line {\ -background: rgba(203, 220, 47, 0.22);\ -}\ -.ace-kuroir .ace_gutter-active-line {\ -background-color: rgba(203, 220, 47, 0.22);\ -}\ -.ace-kuroir .ace_marker-layer .ace_selected-word {\ -border: 1px solid rgba(245, 170, 0, 0.57);\ -}\ -.ace-kuroir .ace_fold {\ -background-color: ;\ -border-color: #363636;\ -}\ -.ace-kuroir .ace_constant{color:#CD6839;}.ace-kuroir .ace_constant.ace_numeric{color:#9A5925;}.ace-kuroir .ace_support{color:#104E8B;}.ace-kuroir .ace_support.ace_function{color:#005273;}.ace-kuroir .ace_support.ace_constant{color:#CF6A4C;}.ace-kuroir .ace_storage{color:#A52A2A;}.ace-kuroir .ace_invalid.ace_illegal{color:#FD1224;\ -background-color:rgba(255, 6, 0, 0.15);}.ace-kuroir .ace_invalid.ace_deprecated{text-decoration:underline;\ -font-style:italic;\ -color:#FD1732;\ -background-color:#E8E9E8;}.ace-kuroir .ace_string{color:#639300;}.ace-kuroir .ace_string.ace_regexp{color:#417E00;\ -background-color:#C9D4BE;}.ace-kuroir .ace_comment{color:rgba(148, 148, 148, 0.91);\ -background-color:rgba(220, 220, 220, 0.56);}.ace-kuroir .ace_variable{color:#009ACD;}.ace-kuroir .ace_meta.ace_tag{color:#005273;}.ace-kuroir .ace_markup.ace_heading{color:#B8012D;\ -background-color:rgba(191, 97, 51, 0.051);}.ace-kuroir .ace_markup.ace_list{color:#8F5B26;}"; - -var dom = require("../lib/dom"); -dom.importCssString(exports.cssText, exports.cssClass); -}); diff --git a/IDE/jsrealb-ide/ace-src-noconflict/theme-merbivore.js b/IDE/jsrealb-ide/ace-src-noconflict/theme-merbivore.js deleted file mode 100644 index 21b95b63..00000000 --- a/IDE/jsrealb-ide/ace-src-noconflict/theme-merbivore.js +++ /dev/null @@ -1,126 +0,0 @@ -/* ***** BEGIN LICENSE BLOCK ***** - * Distributed under the BSD license: - * - * Copyright (c) 2010, Ajax.org B.V. - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are met: - * * Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * * Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * * Neither the name of Ajax.org B.V. nor the - * names of its contributors may be used to endorse or promote products - * derived from this software without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND - * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED - * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE - * DISCLAIMED. IN NO EVENT SHALL AJAX.ORG B.V. BE LIABLE FOR ANY - * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES - * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; - * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND - * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - * - * ***** END LICENSE BLOCK ***** */ - -ace.define('ace/theme/merbivore', ['require', 'exports', 'module' , 'ace/lib/dom'], function(require, exports, module) { - -exports.isDark = true; -exports.cssClass = "ace-merbivore"; -exports.cssText = ".ace-merbivore .ace_gutter {\ -background: #202020;\ -color: #E6E1DC\ -}\ -.ace-merbivore .ace_print-margin {\ -width: 1px;\ -background: #555651\ -}\ -.ace-merbivore {\ -background-color: #161616;\ -color: #E6E1DC\ -}\ -.ace-merbivore .ace_cursor {\ -color: #FFFFFF\ -}\ -.ace-merbivore .ace_marker-layer .ace_selection {\ -background: #454545\ -}\ -.ace-merbivore.ace_multiselect .ace_selection.ace_start {\ -box-shadow: 0 0 3px 0px #161616;\ -border-radius: 2px\ -}\ -.ace-merbivore .ace_marker-layer .ace_step {\ -background: rgb(102, 82, 0)\ -}\ -.ace-merbivore .ace_marker-layer .ace_bracket {\ -margin: -1px 0 0 -1px;\ -border: 1px solid #404040\ -}\ -.ace-merbivore .ace_marker-layer .ace_active-line {\ -background: #333435\ -}\ -.ace-merbivore .ace_gutter-active-line {\ -background-color: #333435\ -}\ -.ace-merbivore .ace_marker-layer .ace_selected-word {\ -border: 1px solid #454545\ -}\ -.ace-merbivore .ace_invisible {\ -color: #404040\ -}\ -.ace-merbivore .ace_entity.ace_name.ace_tag,\ -.ace-merbivore .ace_keyword,\ -.ace-merbivore .ace_meta,\ -.ace-merbivore .ace_meta.ace_tag,\ -.ace-merbivore .ace_storage,\ -.ace-merbivore .ace_support.ace_function {\ -color: #FC6F09\ -}\ -.ace-merbivore .ace_constant,\ -.ace-merbivore .ace_constant.ace_character,\ -.ace-merbivore .ace_constant.ace_character.ace_escape,\ -.ace-merbivore .ace_constant.ace_other,\ -.ace-merbivore .ace_support.ace_type {\ -color: #1EDAFB\ -}\ -.ace-merbivore .ace_constant.ace_character.ace_escape {\ -color: #519F50\ -}\ -.ace-merbivore .ace_constant.ace_language {\ -color: #FDC251\ -}\ -.ace-merbivore .ace_constant.ace_library,\ -.ace-merbivore .ace_string,\ -.ace-merbivore .ace_support.ace_constant {\ -color: #8DFF0A\ -}\ -.ace-merbivore .ace_constant.ace_numeric {\ -color: #58C554\ -}\ -.ace-merbivore .ace_invalid {\ -color: #FFFFFF;\ -background-color: #990000\ -}\ -.ace-merbivore .ace_fold {\ -background-color: #FC6F09;\ -border-color: #E6E1DC\ -}\ -.ace-merbivore .ace_comment {\ -font-style: italic;\ -color: #AD2EA4\ -}\ -.ace-merbivore .ace_entity.ace_other.ace_attribute-name {\ -color: #FFFF89\ -}\ -.ace-merbivore .ace_indent-guide {\ -background: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAACCAYAAACZgbYnAAAAEklEQVQImWMQFxf3ZXB1df0PAAdsAmERTkEHAAAAAElFTkSuQmCC) right repeat-y\ -}"; - -var dom = require("../lib/dom"); -dom.importCssString(exports.cssText, exports.cssClass); -}); diff --git a/IDE/jsrealb-ide/ace-src-noconflict/theme-merbivore_soft.js b/IDE/jsrealb-ide/ace-src-noconflict/theme-merbivore_soft.js deleted file mode 100644 index fa8bac88..00000000 --- a/IDE/jsrealb-ide/ace-src-noconflict/theme-merbivore_soft.js +++ /dev/null @@ -1,127 +0,0 @@ -/* ***** BEGIN LICENSE BLOCK ***** - * Distributed under the BSD license: - * - * Copyright (c) 2010, Ajax.org B.V. - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are met: - * * Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * * Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * * Neither the name of Ajax.org B.V. nor the - * names of its contributors may be used to endorse or promote products - * derived from this software without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND - * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED - * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE - * DISCLAIMED. IN NO EVENT SHALL AJAX.ORG B.V. BE LIABLE FOR ANY - * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES - * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; - * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND - * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - * - * ***** END LICENSE BLOCK ***** */ - -ace.define('ace/theme/merbivore_soft', ['require', 'exports', 'module' , 'ace/lib/dom'], function(require, exports, module) { - -exports.isDark = true; -exports.cssClass = "ace-merbivore-soft"; -exports.cssText = ".ace-merbivore-soft .ace_gutter {\ -background: #262424;\ -color: #E6E1DC\ -}\ -.ace-merbivore-soft .ace_print-margin {\ -width: 1px;\ -background: #262424\ -}\ -.ace-merbivore-soft {\ -background-color: #1C1C1C;\ -color: #E6E1DC\ -}\ -.ace-merbivore-soft .ace_cursor {\ -color: #FFFFFF\ -}\ -.ace-merbivore-soft .ace_marker-layer .ace_selection {\ -background: #494949\ -}\ -.ace-merbivore-soft.ace_multiselect .ace_selection.ace_start {\ -box-shadow: 0 0 3px 0px #1C1C1C;\ -border-radius: 2px\ -}\ -.ace-merbivore-soft .ace_marker-layer .ace_step {\ -background: rgb(102, 82, 0)\ -}\ -.ace-merbivore-soft .ace_marker-layer .ace_bracket {\ -margin: -1px 0 0 -1px;\ -border: 1px solid #404040\ -}\ -.ace-merbivore-soft .ace_marker-layer .ace_active-line {\ -background: #333435\ -}\ -.ace-merbivore-soft .ace_gutter-active-line {\ -background-color: #333435\ -}\ -.ace-merbivore-soft .ace_marker-layer .ace_selected-word {\ -border: 1px solid #494949\ -}\ -.ace-merbivore-soft .ace_invisible {\ -color: #404040\ -}\ -.ace-merbivore-soft .ace_entity.ace_name.ace_tag,\ -.ace-merbivore-soft .ace_keyword,\ -.ace-merbivore-soft .ace_meta,\ -.ace-merbivore-soft .ace_meta.ace_tag,\ -.ace-merbivore-soft .ace_storage {\ -color: #FC803A\ -}\ -.ace-merbivore-soft .ace_constant,\ -.ace-merbivore-soft .ace_constant.ace_character,\ -.ace-merbivore-soft .ace_constant.ace_character.ace_escape,\ -.ace-merbivore-soft .ace_constant.ace_other,\ -.ace-merbivore-soft .ace_support.ace_type {\ -color: #68C1D8\ -}\ -.ace-merbivore-soft .ace_constant.ace_character.ace_escape {\ -color: #B3E5B4\ -}\ -.ace-merbivore-soft .ace_constant.ace_language {\ -color: #E1C582\ -}\ -.ace-merbivore-soft .ace_constant.ace_library,\ -.ace-merbivore-soft .ace_string,\ -.ace-merbivore-soft .ace_support.ace_constant {\ -color: #8EC65F\ -}\ -.ace-merbivore-soft .ace_constant.ace_numeric {\ -color: #7FC578\ -}\ -.ace-merbivore-soft .ace_invalid,\ -.ace-merbivore-soft .ace_invalid.ace_deprecated {\ -color: #FFFFFF;\ -background-color: #FE3838\ -}\ -.ace-merbivore-soft .ace_fold {\ -background-color: #FC803A;\ -border-color: #E6E1DC\ -}\ -.ace-merbivore-soft .ace_comment,\ -.ace-merbivore-soft .ace_meta {\ -font-style: italic;\ -color: #AC4BB8\ -}\ -.ace-merbivore-soft .ace_entity.ace_other.ace_attribute-name {\ -color: #EAF1A3\ -}\ -.ace-merbivore-soft .ace_indent-guide {\ -background: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAACCAYAAACZgbYnAAAAEklEQVQImWOQkpLyZfD09PwPAAfYAnaStpHRAAAAAElFTkSuQmCC) right repeat-y\ -}"; - -var dom = require("../lib/dom"); -dom.importCssString(exports.cssText, exports.cssClass); -}); diff --git a/IDE/jsrealb-ide/ace-src-noconflict/theme-mono_industrial.js b/IDE/jsrealb-ide/ace-src-noconflict/theme-mono_industrial.js deleted file mode 100644 index fcc84de1..00000000 --- a/IDE/jsrealb-ide/ace-src-noconflict/theme-mono_industrial.js +++ /dev/null @@ -1,138 +0,0 @@ -/* ***** BEGIN LICENSE BLOCK ***** - * Distributed under the BSD license: - * - * Copyright (c) 2010, Ajax.org B.V. - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are met: - * * Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * * Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * * Neither the name of Ajax.org B.V. nor the - * names of its contributors may be used to endorse or promote products - * derived from this software without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND - * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED - * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE - * DISCLAIMED. IN NO EVENT SHALL AJAX.ORG B.V. BE LIABLE FOR ANY - * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES - * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; - * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND - * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - * - * ***** END LICENSE BLOCK ***** */ - -ace.define('ace/theme/mono_industrial', ['require', 'exports', 'module' , 'ace/lib/dom'], function(require, exports, module) { - -exports.isDark = true; -exports.cssClass = "ace-mono-industrial"; -exports.cssText = ".ace-mono-industrial .ace_gutter {\ -background: #1d2521;\ -color: #C5C9C9\ -}\ -.ace-mono-industrial .ace_print-margin {\ -width: 1px;\ -background: #555651\ -}\ -.ace-mono-industrial {\ -background-color: #222C28;\ -color: #FFFFFF\ -}\ -.ace-mono-industrial .ace_cursor {\ -color: #FFFFFF\ -}\ -.ace-mono-industrial .ace_marker-layer .ace_selection {\ -background: rgba(145, 153, 148, 0.40)\ -}\ -.ace-mono-industrial.ace_multiselect .ace_selection.ace_start {\ -box-shadow: 0 0 3px 0px #222C28;\ -border-radius: 2px\ -}\ -.ace-mono-industrial .ace_marker-layer .ace_step {\ -background: rgb(102, 82, 0)\ -}\ -.ace-mono-industrial .ace_marker-layer .ace_bracket {\ -margin: -1px 0 0 -1px;\ -border: 1px solid rgba(102, 108, 104, 0.50)\ -}\ -.ace-mono-industrial .ace_marker-layer .ace_active-line {\ -background: rgba(12, 13, 12, 0.25)\ -}\ -.ace-mono-industrial .ace_gutter-active-line {\ -background-color: rgba(12, 13, 12, 0.25)\ -}\ -.ace-mono-industrial .ace_marker-layer .ace_selected-word {\ -border: 1px solid rgba(145, 153, 148, 0.40)\ -}\ -.ace-mono-industrial .ace_invisible {\ -color: rgba(102, 108, 104, 0.50)\ -}\ -.ace-mono-industrial .ace_string {\ -background-color: #151C19;\ -color: #FFFFFF\ -}\ -.ace-mono-industrial .ace_keyword,\ -.ace-mono-industrial .ace_meta {\ -color: #A39E64\ -}\ -.ace-mono-industrial .ace_constant,\ -.ace-mono-industrial .ace_constant.ace_character,\ -.ace-mono-industrial .ace_constant.ace_character.ace_escape,\ -.ace-mono-industrial .ace_constant.ace_numeric,\ -.ace-mono-industrial .ace_constant.ace_other {\ -color: #E98800\ -}\ -.ace-mono-industrial .ace_entity.ace_name.ace_function,\ -.ace-mono-industrial .ace_keyword.ace_operator,\ -.ace-mono-industrial .ace_variable {\ -color: #A8B3AB\ -}\ -.ace-mono-industrial .ace_invalid {\ -color: #FFFFFF;\ -background-color: rgba(153, 0, 0, 0.68)\ -}\ -.ace-mono-industrial .ace_support.ace_constant {\ -color: #C87500\ -}\ -.ace-mono-industrial .ace_fold {\ -background-color: #A8B3AB;\ -border-color: #FFFFFF\ -}\ -.ace-mono-industrial .ace_support.ace_function {\ -color: #588E60\ -}\ -.ace-mono-industrial .ace_entity.ace_name,\ -.ace-mono-industrial .ace_support.ace_class,\ -.ace-mono-industrial .ace_support.ace_type {\ -color: #5778B6\ -}\ -.ace-mono-industrial .ace_storage {\ -color: #C23B00\ -}\ -.ace-mono-industrial .ace_variable.ace_language,\ -.ace-mono-industrial .ace_variable.ace_parameter {\ -color: #648BD2\ -}\ -.ace-mono-industrial .ace_comment {\ -color: #666C68;\ -background-color: #151C19\ -}\ -.ace-mono-industrial .ace_entity.ace_other.ace_attribute-name {\ -color: #909993\ -}\ -.ace-mono-industrial .ace_entity.ace_name.ace_tag {\ -color: #A65EFF\ -}\ -.ace-mono-industrial .ace_indent-guide {\ -background: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAACCAYAAACZgbYnAAAAEklEQVQImWNQ1NbwZfALD/4PAAlTArlEC4r/AAAAAElFTkSuQmCC) right repeat-y\ -}"; - -var dom = require("../lib/dom"); -dom.importCssString(exports.cssText, exports.cssClass); -}); diff --git a/IDE/jsrealb-ide/ace-src-noconflict/theme-monokai.js b/IDE/jsrealb-ide/ace-src-noconflict/theme-monokai.js deleted file mode 100644 index 1166adf1..00000000 --- a/IDE/jsrealb-ide/ace-src-noconflict/theme-monokai.js +++ /dev/null @@ -1,136 +0,0 @@ -/* ***** BEGIN LICENSE BLOCK ***** - * Distributed under the BSD license: - * - * Copyright (c) 2010, Ajax.org B.V. - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are met: - * * Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * * Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * * Neither the name of Ajax.org B.V. nor the - * names of its contributors may be used to endorse or promote products - * derived from this software without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND - * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED - * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE - * DISCLAIMED. IN NO EVENT SHALL AJAX.ORG B.V. BE LIABLE FOR ANY - * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES - * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; - * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND - * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - * - * ***** END LICENSE BLOCK ***** */ - -ace.define('ace/theme/monokai', ['require', 'exports', 'module' , 'ace/lib/dom'], function(require, exports, module) { - -exports.isDark = true; -exports.cssClass = "ace-monokai"; -exports.cssText = ".ace-monokai .ace_gutter {\ -background: #2F3129;\ -color: #8F908A\ -}\ -.ace-monokai .ace_print-margin {\ -width: 1px;\ -background: #555651\ -}\ -.ace-monokai {\ -background-color: #272822;\ -color: #F8F8F2\ -}\ -.ace-monokai .ace_cursor {\ -color: #F8F8F0\ -}\ -.ace-monokai .ace_marker-layer .ace_selection {\ -background: #49483E\ -}\ -.ace-monokai.ace_multiselect .ace_selection.ace_start {\ -box-shadow: 0 0 3px 0px #272822;\ -border-radius: 2px\ -}\ -.ace-monokai .ace_marker-layer .ace_step {\ -background: rgb(102, 82, 0)\ -}\ -.ace-monokai .ace_marker-layer .ace_bracket {\ -margin: -1px 0 0 -1px;\ -border: 1px solid #49483E\ -}\ -.ace-monokai .ace_marker-layer .ace_active-line {\ -background: #202020\ -}\ -.ace-monokai .ace_gutter-active-line {\ -background-color: #272727\ -}\ -.ace-monokai .ace_marker-layer .ace_selected-word {\ -border: 1px solid #49483E\ -}\ -.ace-monokai .ace_invisible {\ -color: #52524d\ -}\ -.ace-monokai .ace_entity.ace_name.ace_tag,\ -.ace-monokai .ace_keyword,\ -.ace-monokai .ace_meta.ace_tag,\ -.ace-monokai .ace_storage {\ -color: #F92672\ -}\ -.ace-monokai .ace_punctuation,\ -.ace-monokai .ace_punctuation.ace_tag {\ -color: #fff\ -}\ -.ace-monokai .ace_constant.ace_character,\ -.ace-monokai .ace_constant.ace_language,\ -.ace-monokai .ace_constant.ace_numeric,\ -.ace-monokai .ace_constant.ace_other {\ -color: #AE81FF\ -}\ -.ace-monokai .ace_invalid {\ -color: #F8F8F0;\ -background-color: #F92672\ -}\ -.ace-monokai .ace_invalid.ace_deprecated {\ -color: #F8F8F0;\ -background-color: #AE81FF\ -}\ -.ace-monokai .ace_support.ace_constant,\ -.ace-monokai .ace_support.ace_function {\ -color: #66D9EF\ -}\ -.ace-monokai .ace_fold {\ -background-color: #A6E22E;\ -border-color: #F8F8F2\ -}\ -.ace-monokai .ace_storage.ace_type,\ -.ace-monokai .ace_support.ace_class,\ -.ace-monokai .ace_support.ace_type {\ -font-style: italic;\ -color: #66D9EF\ -}\ -.ace-monokai .ace_entity.ace_name.ace_function,\ -.ace-monokai .ace_entity.ace_other,\ -.ace-monokai .ace_entity.ace_other.ace_attribute-name,\ -.ace-monokai .ace_variable {\ -color: #A6E22E\ -}\ -.ace-monokai .ace_variable.ace_parameter {\ -font-style: italic;\ -color: #FD971F\ -}\ -.ace-monokai .ace_string {\ -color: #E6DB74\ -}\ -.ace-monokai .ace_comment {\ -color: #75715E\ -}\ -.ace-monokai .ace_indent-guide {\ -background: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAACCAYAAACZgbYnAAAAEklEQVQImWPQ0FD0ZXBzd/wPAAjVAoxeSgNeAAAAAElFTkSuQmCC) right repeat-y\ -}"; - -var dom = require("../lib/dom"); -dom.importCssString(exports.cssText, exports.cssClass); -}); diff --git a/IDE/jsrealb-ide/ace-src-noconflict/theme-pastel_on_dark.js b/IDE/jsrealb-ide/ace-src-noconflict/theme-pastel_on_dark.js deleted file mode 100644 index 73a871be..00000000 --- a/IDE/jsrealb-ide/ace-src-noconflict/theme-pastel_on_dark.js +++ /dev/null @@ -1,139 +0,0 @@ -/* ***** BEGIN LICENSE BLOCK ***** - * Distributed under the BSD license: - * - * Copyright (c) 2010, Ajax.org B.V. - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are met: - * * Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * * Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * * Neither the name of Ajax.org B.V. nor the - * names of its contributors may be used to endorse or promote products - * derived from this software without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND - * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED - * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE - * DISCLAIMED. IN NO EVENT SHALL AJAX.ORG B.V. BE LIABLE FOR ANY - * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES - * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; - * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND - * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - * - * ***** END LICENSE BLOCK ***** */ - -ace.define('ace/theme/pastel_on_dark', ['require', 'exports', 'module' , 'ace/lib/dom'], function(require, exports, module) { - -exports.isDark = true; -exports.cssClass = "ace-pastel-on-dark"; -exports.cssText = ".ace-pastel-on-dark .ace_gutter {\ -background: #353030;\ -color: #8F938F\ -}\ -.ace-pastel-on-dark .ace_print-margin {\ -width: 1px;\ -background: #353030\ -}\ -.ace-pastel-on-dark {\ -background-color: #2C2828;\ -color: #8F938F\ -}\ -.ace-pastel-on-dark .ace_cursor {\ -color: #A7A7A7\ -}\ -.ace-pastel-on-dark .ace_marker-layer .ace_selection {\ -background: rgba(221, 240, 255, 0.20)\ -}\ -.ace-pastel-on-dark.ace_multiselect .ace_selection.ace_start {\ -box-shadow: 0 0 3px 0px #2C2828;\ -border-radius: 2px\ -}\ -.ace-pastel-on-dark .ace_marker-layer .ace_step {\ -background: rgb(102, 82, 0)\ -}\ -.ace-pastel-on-dark .ace_marker-layer .ace_bracket {\ -margin: -1px 0 0 -1px;\ -border: 1px solid rgba(255, 255, 255, 0.25)\ -}\ -.ace-pastel-on-dark .ace_marker-layer .ace_active-line {\ -background: rgba(255, 255, 255, 0.031)\ -}\ -.ace-pastel-on-dark .ace_gutter-active-line {\ -background-color: rgba(255, 255, 255, 0.031)\ -}\ -.ace-pastel-on-dark .ace_marker-layer .ace_selected-word {\ -border: 1px solid rgba(221, 240, 255, 0.20)\ -}\ -.ace-pastel-on-dark .ace_invisible {\ -color: rgba(255, 255, 255, 0.25)\ -}\ -.ace-pastel-on-dark .ace_keyword,\ -.ace-pastel-on-dark .ace_meta {\ -color: #757aD8\ -}\ -.ace-pastel-on-dark .ace_constant,\ -.ace-pastel-on-dark .ace_constant.ace_character,\ -.ace-pastel-on-dark .ace_constant.ace_character.ace_escape,\ -.ace-pastel-on-dark .ace_constant.ace_other {\ -color: #4FB7C5\ -}\ -.ace-pastel-on-dark .ace_keyword.ace_operator {\ -color: #797878\ -}\ -.ace-pastel-on-dark .ace_constant.ace_character {\ -color: #AFA472\ -}\ -.ace-pastel-on-dark .ace_constant.ace_language {\ -color: #DE8E30\ -}\ -.ace-pastel-on-dark .ace_constant.ace_numeric {\ -color: #CCCCCC\ -}\ -.ace-pastel-on-dark .ace_invalid,\ -.ace-pastel-on-dark .ace_invalid.ace_illegal {\ -color: #F8F8F8;\ -background-color: rgba(86, 45, 86, 0.75)\ -}\ -.ace-pastel-on-dark .ace_invalid.ace_deprecated {\ -text-decoration: underline;\ -font-style: italic;\ -color: #D2A8A1\ -}\ -.ace-pastel-on-dark .ace_fold {\ -background-color: #757aD8;\ -border-color: #8F938F\ -}\ -.ace-pastel-on-dark .ace_support.ace_function {\ -color: #AEB2F8\ -}\ -.ace-pastel-on-dark .ace_string {\ -color: #66A968\ -}\ -.ace-pastel-on-dark .ace_string.ace_regexp {\ -color: #E9C062\ -}\ -.ace-pastel-on-dark .ace_comment {\ -color: #A6C6FF\ -}\ -.ace-pastel-on-dark .ace_variable {\ -color: #BEBF55\ -}\ -.ace-pastel-on-dark .ace_variable.ace_language {\ -color: #C1C144\ -}\ -.ace-pastel-on-dark .ace_xml-pe {\ -color: #494949\ -}\ -.ace-pastel-on-dark .ace_indent-guide {\ -background: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAACCAYAAACZgbYnAAAAEklEQVQImWNgYGBgYIiPj/8PAARgAh2NTMh8AAAAAElFTkSuQmCC) right repeat-y\ -}"; - -var dom = require("../lib/dom"); -dom.importCssString(exports.cssText, exports.cssClass); -}); diff --git a/IDE/jsrealb-ide/ace-src-noconflict/theme-solarized_dark.js b/IDE/jsrealb-ide/ace-src-noconflict/theme-solarized_dark.js deleted file mode 100644 index 693d171b..00000000 --- a/IDE/jsrealb-ide/ace-src-noconflict/theme-solarized_dark.js +++ /dev/null @@ -1,119 +0,0 @@ -/* ***** BEGIN LICENSE BLOCK ***** - * Distributed under the BSD license: - * - * Copyright (c) 2010, Ajax.org B.V. - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are met: - * * Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * * Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * * Neither the name of Ajax.org B.V. nor the - * names of its contributors may be used to endorse or promote products - * derived from this software without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND - * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED - * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE - * DISCLAIMED. IN NO EVENT SHALL AJAX.ORG B.V. BE LIABLE FOR ANY - * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES - * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; - * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND - * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - * - * ***** END LICENSE BLOCK ***** */ - -ace.define('ace/theme/solarized_dark', ['require', 'exports', 'module' , 'ace/lib/dom'], function(require, exports, module) { - -exports.isDark = true; -exports.cssClass = "ace-solarized-dark"; -exports.cssText = ".ace-solarized-dark .ace_gutter {\ -background: #01313f;\ -color: #d0edf7\ -}\ -.ace-solarized-dark .ace_print-margin {\ -width: 1px;\ -background: #33555E\ -}\ -.ace-solarized-dark {\ -background-color: #002B36;\ -color: #93A1A1\ -}\ -.ace-solarized-dark .ace_entity.ace_other.ace_attribute-name,\ -.ace-solarized-dark .ace_storage {\ -color: #93A1A1\ -}\ -.ace-solarized-dark .ace_cursor,\ -.ace-solarized-dark .ace_string.ace_regexp {\ -color: #D30102\ -}\ -.ace-solarized-dark .ace_marker-layer .ace_active-line,\ -.ace-solarized-dark .ace_marker-layer .ace_selection {\ -background: rgba(255, 255, 255, 0.1)\ -}\ -.ace-solarized-dark.ace_multiselect .ace_selection.ace_start {\ -box-shadow: 0 0 3px 0px #002B36;\ -border-radius: 2px\ -}\ -.ace-solarized-dark .ace_marker-layer .ace_step {\ -background: rgb(102, 82, 0)\ -}\ -.ace-solarized-dark .ace_marker-layer .ace_bracket {\ -margin: -1px 0 0 -1px;\ -border: 1px solid rgba(147, 161, 161, 0.50)\ -}\ -.ace-solarized-dark .ace_gutter-active-line {\ -background-color: #0d3440\ -}\ -.ace-solarized-dark .ace_marker-layer .ace_selected-word {\ -border: 1px solid #073642\ -}\ -.ace-solarized-dark .ace_invisible {\ -color: rgba(147, 161, 161, 0.50)\ -}\ -.ace-solarized-dark .ace_keyword,\ -.ace-solarized-dark .ace_meta,\ -.ace-solarized-dark .ace_support.ace_class,\ -.ace-solarized-dark .ace_support.ace_type {\ -color: #859900\ -}\ -.ace-solarized-dark .ace_constant.ace_character,\ -.ace-solarized-dark .ace_constant.ace_other {\ -color: #CB4B16\ -}\ -.ace-solarized-dark .ace_constant.ace_language {\ -color: #B58900\ -}\ -.ace-solarized-dark .ace_constant.ace_numeric {\ -color: #D33682\ -}\ -.ace-solarized-dark .ace_fold {\ -background-color: #268BD2;\ -border-color: #93A1A1\ -}\ -.ace-solarized-dark .ace_entity.ace_name.ace_function,\ -.ace-solarized-dark .ace_entity.ace_name.ace_tag,\ -.ace-solarized-dark .ace_support.ace_function,\ -.ace-solarized-dark .ace_variable,\ -.ace-solarized-dark .ace_variable.ace_language {\ -color: #268BD2\ -}\ -.ace-solarized-dark .ace_string {\ -color: #2AA198\ -}\ -.ace-solarized-dark .ace_comment {\ -font-style: italic;\ -color: #657B83\ -}\ -.ace-solarized-dark .ace_indent-guide {\ -background: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAACCAYAAACZgbYnAAAAEklEQVQImWNg0Db1ZVCxc/sPAAd4AlUHlLenAAAAAElFTkSuQmCC) right repeat-y\ -}"; - -var dom = require("../lib/dom"); -dom.importCssString(exports.cssText, exports.cssClass); -}); diff --git a/IDE/jsrealb-ide/ace-src-noconflict/theme-solarized_light.js b/IDE/jsrealb-ide/ace-src-noconflict/theme-solarized_light.js deleted file mode 100644 index b27f76b4..00000000 --- a/IDE/jsrealb-ide/ace-src-noconflict/theme-solarized_light.js +++ /dev/null @@ -1,122 +0,0 @@ -/* ***** BEGIN LICENSE BLOCK ***** - * Distributed under the BSD license: - * - * Copyright (c) 2010, Ajax.org B.V. - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are met: - * * Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * * Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * * Neither the name of Ajax.org B.V. nor the - * names of its contributors may be used to endorse or promote products - * derived from this software without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND - * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED - * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE - * DISCLAIMED. IN NO EVENT SHALL AJAX.ORG B.V. BE LIABLE FOR ANY - * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES - * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; - * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND - * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - * - * ***** END LICENSE BLOCK ***** */ - -ace.define('ace/theme/solarized_light', ['require', 'exports', 'module' , 'ace/lib/dom'], function(require, exports, module) { - -exports.isDark = false; -exports.cssClass = "ace-solarized-light"; -exports.cssText = ".ace-solarized-light .ace_gutter {\ -background: #fbf1d3;\ -color: #333\ -}\ -.ace-solarized-light .ace_print-margin {\ -width: 1px;\ -background: #e8e8e8\ -}\ -.ace-solarized-light {\ -background-color: #FDF6E3;\ -color: #586E75\ -}\ -.ace-solarized-light .ace_cursor {\ -color: #000000\ -}\ -.ace-solarized-light .ace_marker-layer .ace_selection {\ -background: rgba(7, 54, 67, 0.09)\ -}\ -.ace-solarized-light.ace_multiselect .ace_selection.ace_start {\ -box-shadow: 0 0 3px 0px #FDF6E3;\ -border-radius: 2px\ -}\ -.ace-solarized-light .ace_marker-layer .ace_step {\ -background: rgb(255, 255, 0)\ -}\ -.ace-solarized-light .ace_marker-layer .ace_bracket {\ -margin: -1px 0 0 -1px;\ -border: 1px solid rgba(147, 161, 161, 0.50)\ -}\ -.ace-solarized-light .ace_marker-layer .ace_active-line {\ -background: #EEE8D5\ -}\ -.ace-solarized-light .ace_gutter-active-line {\ -background-color : #EDE5C1\ -}\ -.ace-solarized-light .ace_marker-layer .ace_selected-word {\ -border: 1px solid #073642\ -}\ -.ace-solarized-light .ace_invisible {\ -color: rgba(147, 161, 161, 0.50)\ -}\ -.ace-solarized-light .ace_keyword,\ -.ace-solarized-light .ace_meta,\ -.ace-solarized-light .ace_support.ace_class,\ -.ace-solarized-light .ace_support.ace_type {\ -color: #859900\ -}\ -.ace-solarized-light .ace_constant.ace_character,\ -.ace-solarized-light .ace_constant.ace_other {\ -color: #CB4B16\ -}\ -.ace-solarized-light .ace_constant.ace_language {\ -color: #B58900\ -}\ -.ace-solarized-light .ace_constant.ace_numeric {\ -color: #D33682\ -}\ -.ace-solarized-light .ace_fold {\ -background-color: #268BD2;\ -border-color: #586E75\ -}\ -.ace-solarized-light .ace_entity.ace_name.ace_function,\ -.ace-solarized-light .ace_entity.ace_name.ace_tag,\ -.ace-solarized-light .ace_support.ace_function,\ -.ace-solarized-light .ace_variable,\ -.ace-solarized-light .ace_variable.ace_language {\ -color: #268BD2\ -}\ -.ace-solarized-light .ace_storage {\ -color: #073642\ -}\ -.ace-solarized-light .ace_string {\ -color: #2AA198\ -}\ -.ace-solarized-light .ace_string.ace_regexp {\ -color: #D30102\ -}\ -.ace-solarized-light .ace_comment,\ -.ace-solarized-light .ace_entity.ace_other.ace_attribute-name {\ -color: #93A1A1\ -}\ -.ace-solarized-light .ace_indent-guide {\ -background: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAACCAYAAACZgbYnAAAAEklEQVQImWNgYGBgYHjy8NJ/AAjgA5fzQUmBAAAAAElFTkSuQmCC) right repeat-y\ -}"; - -var dom = require("../lib/dom"); -dom.importCssString(exports.cssText, exports.cssClass); -}); diff --git a/IDE/jsrealb-ide/ace-src-noconflict/theme-terminal.js b/IDE/jsrealb-ide/ace-src-noconflict/theme-terminal.js deleted file mode 100644 index ae70fa2b..00000000 --- a/IDE/jsrealb-ide/ace-src-noconflict/theme-terminal.js +++ /dev/null @@ -1,145 +0,0 @@ -/* ***** BEGIN LICENSE BLOCK ***** - * Distributed under the BSD license: - * - * Copyright (c) 2010, Ajax.org B.V. - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are met: - * * Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * * Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * * Neither the name of Ajax.org B.V. nor the - * names of its contributors may be used to endorse or promote products - * derived from this software without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND - * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED - * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE - * DISCLAIMED. IN NO EVENT SHALL AJAX.ORG B.V. BE LIABLE FOR ANY - * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES - * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; - * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND - * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - * - * ***** END LICENSE BLOCK ***** */ - -ace.define('ace/theme/terminal', ['require', 'exports', 'module' , 'ace/lib/dom'], function(require, exports, module) { - -exports.isDark = true; -exports.cssClass = "ace-terminal-theme"; -exports.cssText = ".ace-terminal-theme .ace_gutter {\ -background: #1a0005;\ -color: steelblue\ -}\ -.ace-terminal-theme .ace_print-margin {\ -width: 1px;\ -background: #1a1a1a\ -}\ -.ace-terminal-theme {\ -background-color: black;\ -color: #DEDEDE\ -}\ -.ace-terminal-theme .ace_cursor {\ -color: #9F9F9F\ -}\ -.ace-terminal-theme .ace_marker-layer .ace_selection {\ -background: #424242\ -}\ -.ace-terminal-theme.ace_multiselect .ace_selection.ace_start {\ -box-shadow: 0 0 3px 0px black;\ -border-radius: 2px\ -}\ -.ace-terminal-theme .ace_marker-layer .ace_step {\ -background: rgb(0, 0, 0)\ -}\ -.ace-terminal-theme .ace_marker-layer .ace_bracket {\ -background: #090;\ -}\ -.ace-terminal-theme .ace_marker-layer .ace_bracket-start {\ -background: #090;\ -}\ -.ace-terminal-theme .ace_marker-layer .ace_bracket-unmatched {\ -margin: -1px 0 0 -1px;\ -border: 1px solid #900\ -}\ -.ace-terminal-theme .ace_marker-layer .ace_active-line {\ -background: #2A2A2A\ -}\ -.ace-terminal-theme .ace_gutter-active-line {\ -background-color: #2A112A\ -}\ -.ace-terminal-theme .ace_marker-layer .ace_selected-word {\ -border: 1px solid #424242\ -}\ -.ace-terminal-theme .ace_invisible {\ -color: #343434\ -}\ -.ace-terminal-theme .ace_keyword,\ -.ace-terminal-theme .ace_meta,\ -.ace-terminal-theme .ace_storage,\ -.ace-terminal-theme .ace_storage.ace_type,\ -.ace-terminal-theme .ace_support.ace_type {\ -color: tomato\ -}\ -.ace-terminal-theme .ace_keyword.ace_operator {\ -color: deeppink\ -}\ -.ace-terminal-theme .ace_constant.ace_character,\ -.ace-terminal-theme .ace_constant.ace_language,\ -.ace-terminal-theme .ace_constant.ace_numeric,\ -.ace-terminal-theme .ace_keyword.ace_other.ace_unit,\ -.ace-terminal-theme .ace_support.ace_constant,\ -.ace-terminal-theme .ace_variable.ace_parameter {\ -color: #E78C45\ -}\ -.ace-terminal-theme .ace_constant.ace_other {\ -color: gold\ -}\ -.ace-terminal-theme .ace_invalid {\ -color: yellow;\ -background-color: red\ -}\ -.ace-terminal-theme .ace_invalid.ace_deprecated {\ -color: #CED2CF;\ -background-color: #B798BF\ -}\ -.ace-terminal-theme .ace_fold {\ -background-color: #7AA6DA;\ -border-color: #DEDEDE\ -}\ -.ace-terminal-theme .ace_entity.ace_name.ace_function,\ -.ace-terminal-theme .ace_support.ace_function,\ -.ace-terminal-theme .ace_variable {\ -color: #7AA6DA\ -}\ -.ace-terminal-theme .ace_support.ace_class,\ -.ace-terminal-theme .ace_support.ace_type {\ -color: #E7C547\ -}\ -.ace-terminal-theme .ace_heading,\ -.ace-terminal-theme .ace_string {\ -color: #B9CA4A\ -}\ -.ace-terminal-theme .ace_entity.ace_name.ace_tag,\ -.ace-terminal-theme .ace_entity.ace_other.ace_attribute-name,\ -.ace-terminal-theme .ace_meta.ace_tag,\ -.ace-terminal-theme .ace_string.ace_regexp,\ -.ace-terminal-theme .ace_variable {\ -color: #D54E53\ -}\ -.ace-terminal-theme .ace_comment {\ -color: orangered\ -}\ -.ace-terminal-theme .ace_indent-guide {\ -background: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAACCAYAAACZgbYnAAAAEklEQVQImWNgYGBgYLBWV/8PAAK4AYnhiq+xAAAAAElFTkSuQmCC) right repeat-y;\ -}\ -"; - -var dom = require("../lib/dom"); -dom.importCssString(exports.cssText, exports.cssClass); -}); diff --git a/IDE/jsrealb-ide/ace-src-noconflict/theme-textmate.js b/IDE/jsrealb-ide/ace-src-noconflict/theme-textmate.js deleted file mode 100644 index 9909b3b9..00000000 --- a/IDE/jsrealb-ide/ace-src-noconflict/theme-textmate.js +++ /dev/null @@ -1,159 +0,0 @@ -/* ***** BEGIN LICENSE BLOCK ***** - * Distributed under the BSD license: - * - * Copyright (c) 2010, Ajax.org B.V. - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are met: - * * Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * * Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * * Neither the name of Ajax.org B.V. nor the - * names of its contributors may be used to endorse or promote products - * derived from this software without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND - * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED - * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE - * DISCLAIMED. IN NO EVENT SHALL AJAX.ORG B.V. BE LIABLE FOR ANY - * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES - * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; - * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND - * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - * - * ***** END LICENSE BLOCK ***** */ - -ace.define('ace/theme/textmate', ['require', 'exports', 'module' , 'ace/lib/dom'], function(require, exports, module) { - - -exports.isDark = false; -exports.cssClass = "ace-tm"; -exports.cssText = ".ace-tm .ace_gutter {\ -background: #f0f0f0;\ -color: #333;\ -}\ -.ace-tm .ace_print-margin {\ -width: 1px;\ -background: #e8e8e8;\ -}\ -.ace-tm .ace_fold {\ -background-color: #6B72E6;\ -}\ -.ace-tm {\ -background-color: #FFFFFF;\ -}\ -.ace-tm .ace_cursor {\ -color: black;\ -}\ -.ace-tm .ace_invisible {\ -color: rgb(191, 191, 191);\ -}\ -.ace-tm .ace_storage,\ -.ace-tm .ace_keyword {\ -color: blue;\ -}\ -.ace-tm .ace_constant {\ -color: rgb(197, 6, 11);\ -}\ -.ace-tm .ace_constant.ace_buildin {\ -color: rgb(88, 72, 246);\ -}\ -.ace-tm .ace_constant.ace_language {\ -color: rgb(88, 92, 246);\ -}\ -.ace-tm .ace_constant.ace_library {\ -color: rgb(6, 150, 14);\ -}\ -.ace-tm .ace_invalid {\ -background-color: rgba(255, 0, 0, 0.1);\ -color: red;\ -}\ -.ace-tm .ace_support.ace_function {\ -color: rgb(60, 76, 114);\ -}\ -.ace-tm .ace_support.ace_constant {\ -color: rgb(6, 150, 14);\ -}\ -.ace-tm .ace_support.ace_type,\ -.ace-tm .ace_support.ace_class {\ -color: rgb(109, 121, 222);\ -}\ -.ace-tm .ace_keyword.ace_operator {\ -color: rgb(104, 118, 135);\ -}\ -.ace-tm .ace_string {\ -color: rgb(3, 106, 7);\ -}\ -.ace-tm .ace_comment {\ -color: rgb(76, 136, 107);\ -}\ -.ace-tm .ace_comment.ace_doc {\ -color: rgb(0, 102, 255);\ -}\ -.ace-tm .ace_comment.ace_doc.ace_tag {\ -color: rgb(128, 159, 191);\ -}\ -.ace-tm .ace_constant.ace_numeric {\ -color: rgb(0, 0, 205);\ -}\ -.ace-tm .ace_variable {\ -color: rgb(49, 132, 149);\ -}\ -.ace-tm .ace_xml-pe {\ -color: rgb(104, 104, 91);\ -}\ -.ace-tm .ace_entity.ace_name.ace_function {\ -color: #0000A2;\ -}\ -.ace-tm .ace_heading {\ -color: rgb(12, 7, 255);\ -}\ -.ace-tm .ace_list {\ -color:rgb(185, 6, 144);\ -}\ -.ace-tm .ace_meta.ace_tag {\ -color:rgb(0, 22, 142);\ -}\ -.ace-tm .ace_string.ace_regex {\ -color: rgb(255, 0, 0)\ -}\ -.ace-tm .ace_marker-layer .ace_selection {\ -background: rgb(181, 213, 255);\ -}\ -.ace-tm.ace_multiselect .ace_selection.ace_start {\ -box-shadow: 0 0 3px 0px white;\ -border-radius: 2px;\ -}\ -.ace-tm .ace_marker-layer .ace_step {\ -background: rgb(252, 255, 0);\ -}\ -.ace-tm .ace_marker-layer .ace_stack {\ -background: rgb(164, 229, 101);\ -}\ -.ace-tm .ace_marker-layer .ace_bracket {\ -margin: -1px 0 0 -1px;\ -border: 1px solid rgb(192, 192, 192);\ -}\ -.ace-tm .ace_marker-layer .ace_active-line {\ -background: rgba(0, 0, 0, 0.07);\ -}\ -.ace-tm .ace_gutter-active-line {\ -background-color : #dcdcdc;\ -}\ -.ace-tm .ace_marker-layer .ace_selected-word {\ -background: rgb(250, 250, 255);\ -border: 1px solid rgb(200, 200, 250);\ -}\ -.ace-tm .ace_indent-guide {\ -background: url(\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAACCAYAAACZgbYnAAAAE0lEQVQImWP4////f4bLly//BwAmVgd1/w11/gAAAABJRU5ErkJggg==\") right repeat-y;\ -}\ -"; - -var dom = require("../lib/dom"); -dom.importCssString(exports.cssText, exports.cssClass); -}); diff --git a/IDE/jsrealb-ide/ace-src-noconflict/theme-tomorrow.js b/IDE/jsrealb-ide/ace-src-noconflict/theme-tomorrow.js deleted file mode 100644 index 32482766..00000000 --- a/IDE/jsrealb-ide/ace-src-noconflict/theme-tomorrow.js +++ /dev/null @@ -1,139 +0,0 @@ -/* ***** BEGIN LICENSE BLOCK ***** - * Distributed under the BSD license: - * - * Copyright (c) 2010, Ajax.org B.V. - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are met: - * * Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * * Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * * Neither the name of Ajax.org B.V. nor the - * names of its contributors may be used to endorse or promote products - * derived from this software without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND - * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED - * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE - * DISCLAIMED. IN NO EVENT SHALL AJAX.ORG B.V. BE LIABLE FOR ANY - * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES - * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; - * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND - * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - * - * ***** END LICENSE BLOCK ***** */ - -ace.define('ace/theme/tomorrow', ['require', 'exports', 'module' , 'ace/lib/dom'], function(require, exports, module) { - -exports.isDark = false; -exports.cssClass = "ace-tomorrow"; -exports.cssText = ".ace-tomorrow .ace_gutter {\ -background: #f6f6f6;\ -color: #4D4D4C\ -}\ -.ace-tomorrow .ace_print-margin {\ -width: 1px;\ -background: #f6f6f6\ -}\ -.ace-tomorrow {\ -background-color: #FFFFFF;\ -color: #4D4D4C\ -}\ -.ace-tomorrow .ace_cursor {\ -color: #AEAFAD\ -}\ -.ace-tomorrow .ace_marker-layer .ace_selection {\ -background: #D6D6D6\ -}\ -.ace-tomorrow.ace_multiselect .ace_selection.ace_start {\ -box-shadow: 0 0 3px 0px #FFFFFF;\ -border-radius: 2px\ -}\ -.ace-tomorrow .ace_marker-layer .ace_step {\ -background: rgb(255, 255, 0)\ -}\ -.ace-tomorrow .ace_marker-layer .ace_bracket {\ -margin: -1px 0 0 -1px;\ -border: 1px solid #D1D1D1\ -}\ -.ace-tomorrow .ace_marker-layer .ace_active-line {\ -background: #EFEFEF\ -}\ -.ace-tomorrow .ace_gutter-active-line {\ -background-color : #dcdcdc\ -}\ -.ace-tomorrow .ace_marker-layer .ace_selected-word {\ -border: 1px solid #D6D6D6\ -}\ -.ace-tomorrow .ace_invisible {\ -color: #D1D1D1\ -}\ -.ace-tomorrow .ace_keyword,\ -.ace-tomorrow .ace_meta,\ -.ace-tomorrow .ace_storage,\ -.ace-tomorrow .ace_storage.ace_type,\ -.ace-tomorrow .ace_support.ace_type {\ -color: #8959A8\ -}\ -.ace-tomorrow .ace_keyword.ace_operator {\ -color: #3E999F\ -}\ -.ace-tomorrow .ace_constant.ace_character,\ -.ace-tomorrow .ace_constant.ace_language,\ -.ace-tomorrow .ace_constant.ace_numeric,\ -.ace-tomorrow .ace_keyword.ace_other.ace_unit,\ -.ace-tomorrow .ace_support.ace_constant,\ -.ace-tomorrow .ace_variable.ace_parameter {\ -color: #F5871F\ -}\ -.ace-tomorrow .ace_constant.ace_other {\ -color: #666969\ -}\ -.ace-tomorrow .ace_invalid {\ -color: #FFFFFF;\ -background-color: #C82829\ -}\ -.ace-tomorrow .ace_invalid.ace_deprecated {\ -color: #FFFFFF;\ -background-color: #8959A8\ -}\ -.ace-tomorrow .ace_fold {\ -background-color: #4271AE;\ -border-color: #4D4D4C\ -}\ -.ace-tomorrow .ace_entity.ace_name.ace_function,\ -.ace-tomorrow .ace_support.ace_function,\ -.ace-tomorrow .ace_variable {\ -color: #4271AE\ -}\ -.ace-tomorrow .ace_support.ace_class,\ -.ace-tomorrow .ace_support.ace_type {\ -color: #C99E00\ -}\ -.ace-tomorrow .ace_heading,\ -.ace-tomorrow .ace_markup.ace_heading,\ -.ace-tomorrow .ace_string {\ -color: #718C00\ -}\ -.ace-tomorrow .ace_entity.ace_name.ace_tag,\ -.ace-tomorrow .ace_entity.ace_other.ace_attribute-name,\ -.ace-tomorrow .ace_meta.ace_tag,\ -.ace-tomorrow .ace_string.ace_regexp,\ -.ace-tomorrow .ace_variable {\ -color: #C82829\ -}\ -.ace-tomorrow .ace_comment {\ -color: #8E908C\ -}\ -.ace-tomorrow .ace_indent-guide {\ -background: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAACCAYAAACZgbYnAAAAE0lEQVQImWP4////f4bdu3f/BwAlfgctduB85QAAAABJRU5ErkJggg==) right repeat-y\ -}"; - -var dom = require("../lib/dom"); -dom.importCssString(exports.cssText, exports.cssClass); -}); diff --git a/IDE/jsrealb-ide/ace-src-noconflict/theme-tomorrow_night.js b/IDE/jsrealb-ide/ace-src-noconflict/theme-tomorrow_night.js deleted file mode 100644 index b23370ff..00000000 --- a/IDE/jsrealb-ide/ace-src-noconflict/theme-tomorrow_night.js +++ /dev/null @@ -1,139 +0,0 @@ -/* ***** BEGIN LICENSE BLOCK ***** - * Distributed under the BSD license: - * - * Copyright (c) 2010, Ajax.org B.V. - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are met: - * * Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * * Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * * Neither the name of Ajax.org B.V. nor the - * names of its contributors may be used to endorse or promote products - * derived from this software without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND - * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED - * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE - * DISCLAIMED. IN NO EVENT SHALL AJAX.ORG B.V. BE LIABLE FOR ANY - * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES - * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; - * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND - * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - * - * ***** END LICENSE BLOCK ***** */ - -ace.define('ace/theme/tomorrow_night', ['require', 'exports', 'module' , 'ace/lib/dom'], function(require, exports, module) { - -exports.isDark = true; -exports.cssClass = "ace-tomorrow-night"; -exports.cssText = ".ace-tomorrow-night .ace_gutter {\ -background: #25282c;\ -color: #C5C8C6\ -}\ -.ace-tomorrow-night .ace_print-margin {\ -width: 1px;\ -background: #25282c\ -}\ -.ace-tomorrow-night {\ -background-color: #1D1F21;\ -color: #C5C8C6\ -}\ -.ace-tomorrow-night .ace_cursor {\ -color: #AEAFAD\ -}\ -.ace-tomorrow-night .ace_marker-layer .ace_selection {\ -background: #373B41\ -}\ -.ace-tomorrow-night.ace_multiselect .ace_selection.ace_start {\ -box-shadow: 0 0 3px 0px #1D1F21;\ -border-radius: 2px\ -}\ -.ace-tomorrow-night .ace_marker-layer .ace_step {\ -background: rgb(102, 82, 0)\ -}\ -.ace-tomorrow-night .ace_marker-layer .ace_bracket {\ -margin: -1px 0 0 -1px;\ -border: 1px solid #4B4E55\ -}\ -.ace-tomorrow-night .ace_marker-layer .ace_active-line {\ -background: #282A2E\ -}\ -.ace-tomorrow-night .ace_gutter-active-line {\ -background-color: #282A2E\ -}\ -.ace-tomorrow-night .ace_marker-layer .ace_selected-word {\ -border: 1px solid #373B41\ -}\ -.ace-tomorrow-night .ace_invisible {\ -color: #4B4E55\ -}\ -.ace-tomorrow-night .ace_keyword,\ -.ace-tomorrow-night .ace_meta,\ -.ace-tomorrow-night .ace_storage,\ -.ace-tomorrow-night .ace_storage.ace_type,\ -.ace-tomorrow-night .ace_support.ace_type {\ -color: #B294BB\ -}\ -.ace-tomorrow-night .ace_keyword.ace_operator {\ -color: #8ABEB7\ -}\ -.ace-tomorrow-night .ace_constant.ace_character,\ -.ace-tomorrow-night .ace_constant.ace_language,\ -.ace-tomorrow-night .ace_constant.ace_numeric,\ -.ace-tomorrow-night .ace_keyword.ace_other.ace_unit,\ -.ace-tomorrow-night .ace_support.ace_constant,\ -.ace-tomorrow-night .ace_variable.ace_parameter {\ -color: #DE935F\ -}\ -.ace-tomorrow-night .ace_constant.ace_other {\ -color: #CED1CF\ -}\ -.ace-tomorrow-night .ace_invalid {\ -color: #CED2CF;\ -background-color: #DF5F5F\ -}\ -.ace-tomorrow-night .ace_invalid.ace_deprecated {\ -color: #CED2CF;\ -background-color: #B798BF\ -}\ -.ace-tomorrow-night .ace_fold {\ -background-color: #81A2BE;\ -border-color: #C5C8C6\ -}\ -.ace-tomorrow-night .ace_entity.ace_name.ace_function,\ -.ace-tomorrow-night .ace_support.ace_function,\ -.ace-tomorrow-night .ace_variable {\ -color: #81A2BE\ -}\ -.ace-tomorrow-night .ace_support.ace_class,\ -.ace-tomorrow-night .ace_support.ace_type {\ -color: #F0C674\ -}\ -.ace-tomorrow-night .ace_heading,\ -.ace-tomorrow-night .ace_markup.ace_heading,\ -.ace-tomorrow-night .ace_string {\ -color: #B5BD68\ -}\ -.ace-tomorrow-night .ace_entity.ace_name.ace_tag,\ -.ace-tomorrow-night .ace_entity.ace_other.ace_attribute-name,\ -.ace-tomorrow-night .ace_meta.ace_tag,\ -.ace-tomorrow-night .ace_string.ace_regexp,\ -.ace-tomorrow-night .ace_variable {\ -color: #CC6666\ -}\ -.ace-tomorrow-night .ace_comment {\ -color: #969896\ -}\ -.ace-tomorrow-night .ace_indent-guide {\ -background: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAACCAYAAACZgbYnAAAAEklEQVQImWNgYGBgYHB3d/8PAAOIAdULw8qMAAAAAElFTkSuQmCC) right repeat-y\ -}"; - -var dom = require("../lib/dom"); -dom.importCssString(exports.cssText, exports.cssClass); -}); diff --git a/IDE/jsrealb-ide/ace-src-noconflict/theme-tomorrow_night_blue.js b/IDE/jsrealb-ide/ace-src-noconflict/theme-tomorrow_night_blue.js deleted file mode 100644 index 6dc17e5c..00000000 --- a/IDE/jsrealb-ide/ace-src-noconflict/theme-tomorrow_night_blue.js +++ /dev/null @@ -1,137 +0,0 @@ -/* ***** BEGIN LICENSE BLOCK ***** - * Distributed under the BSD license: - * - * Copyright (c) 2010, Ajax.org B.V. - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are met: - * * Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * * Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * * Neither the name of Ajax.org B.V. nor the - * names of its contributors may be used to endorse or promote products - * derived from this software without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND - * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED - * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE - * DISCLAIMED. IN NO EVENT SHALL AJAX.ORG B.V. BE LIABLE FOR ANY - * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES - * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; - * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND - * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - * - * ***** END LICENSE BLOCK ***** */ - -ace.define('ace/theme/tomorrow_night_blue', ['require', 'exports', 'module' , 'ace/lib/dom'], function(require, exports, module) { - -exports.isDark = true; -exports.cssClass = "ace-tomorrow-night-blue"; -exports.cssText = ".ace-tomorrow-night-blue .ace_gutter {\ -background: #00204b;\ -color: #7388b5\ -}\ -.ace-tomorrow-night-blue .ace_print-margin {\ -width: 1px;\ -background: #00204b\ -}\ -.ace-tomorrow-night-blue {\ -background-color: #002451;\ -color: #FFFFFF\ -}\ -.ace-tomorrow-night-blue .ace_constant.ace_other,\ -.ace-tomorrow-night-blue .ace_cursor {\ -color: #FFFFFF\ -}\ -.ace-tomorrow-night-blue .ace_marker-layer .ace_selection {\ -background: #003F8E\ -}\ -.ace-tomorrow-night-blue.ace_multiselect .ace_selection.ace_start {\ -box-shadow: 0 0 3px 0px #002451;\ -border-radius: 2px\ -}\ -.ace-tomorrow-night-blue .ace_marker-layer .ace_step {\ -background: rgb(127, 111, 19)\ -}\ -.ace-tomorrow-night-blue .ace_marker-layer .ace_bracket {\ -margin: -1px 0 0 -1px;\ -border: 1px solid #404F7D\ -}\ -.ace-tomorrow-night-blue .ace_marker-layer .ace_active-line {\ -background: #00346E\ -}\ -.ace-tomorrow-night-blue .ace_gutter-active-line {\ -background-color: #022040\ -}\ -.ace-tomorrow-night-blue .ace_marker-layer .ace_selected-word {\ -border: 1px solid #003F8E\ -}\ -.ace-tomorrow-night-blue .ace_invisible {\ -color: #404F7D\ -}\ -.ace-tomorrow-night-blue .ace_keyword,\ -.ace-tomorrow-night-blue .ace_meta,\ -.ace-tomorrow-night-blue .ace_storage,\ -.ace-tomorrow-night-blue .ace_storage.ace_type,\ -.ace-tomorrow-night-blue .ace_support.ace_type {\ -color: #EBBBFF\ -}\ -.ace-tomorrow-night-blue .ace_keyword.ace_operator {\ -color: #99FFFF\ -}\ -.ace-tomorrow-night-blue .ace_constant.ace_character,\ -.ace-tomorrow-night-blue .ace_constant.ace_language,\ -.ace-tomorrow-night-blue .ace_constant.ace_numeric,\ -.ace-tomorrow-night-blue .ace_keyword.ace_other.ace_unit,\ -.ace-tomorrow-night-blue .ace_support.ace_constant,\ -.ace-tomorrow-night-blue .ace_variable.ace_parameter {\ -color: #FFC58F\ -}\ -.ace-tomorrow-night-blue .ace_invalid {\ -color: #FFFFFF;\ -background-color: #F99DA5\ -}\ -.ace-tomorrow-night-blue .ace_invalid.ace_deprecated {\ -color: #FFFFFF;\ -background-color: #EBBBFF\ -}\ -.ace-tomorrow-night-blue .ace_fold {\ -background-color: #BBDAFF;\ -border-color: #FFFFFF\ -}\ -.ace-tomorrow-night-blue .ace_entity.ace_name.ace_function,\ -.ace-tomorrow-night-blue .ace_support.ace_function,\ -.ace-tomorrow-night-blue .ace_variable {\ -color: #BBDAFF\ -}\ -.ace-tomorrow-night-blue .ace_support.ace_class,\ -.ace-tomorrow-night-blue .ace_support.ace_type {\ -color: #FFEEAD\ -}\ -.ace-tomorrow-night-blue .ace_heading,\ -.ace-tomorrow-night-blue .ace_markup.ace_heading,\ -.ace-tomorrow-night-blue .ace_string {\ -color: #D1F1A9\ -}\ -.ace-tomorrow-night-blue .ace_entity.ace_name.ace_tag,\ -.ace-tomorrow-night-blue .ace_entity.ace_other.ace_attribute-name,\ -.ace-tomorrow-night-blue .ace_meta.ace_tag,\ -.ace-tomorrow-night-blue .ace_string.ace_regexp,\ -.ace-tomorrow-night-blue .ace_variable {\ -color: #FF9DA4\ -}\ -.ace-tomorrow-night-blue .ace_comment {\ -color: #7285B7\ -}\ -.ace-tomorrow-night-blue .ace_indent-guide {\ -background: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAACCAYAAACZgbYnAAAAEklEQVQImWNgYGBgYJDzqfwPAANXAeNsiA+ZAAAAAElFTkSuQmCC) right repeat-y\ -}"; - -var dom = require("../lib/dom"); -dom.importCssString(exports.cssText, exports.cssClass); -}); diff --git a/IDE/jsrealb-ide/ace-src-noconflict/theme-tomorrow_night_bright.js b/IDE/jsrealb-ide/ace-src-noconflict/theme-tomorrow_night_bright.js deleted file mode 100644 index 7763677f..00000000 --- a/IDE/jsrealb-ide/ace-src-noconflict/theme-tomorrow_night_bright.js +++ /dev/null @@ -1,152 +0,0 @@ -/* ***** BEGIN LICENSE BLOCK ***** - * Distributed under the BSD license: - * - * Copyright (c) 2010, Ajax.org B.V. - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are met: - * * Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * * Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * * Neither the name of Ajax.org B.V. nor the - * names of its contributors may be used to endorse or promote products - * derived from this software without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND - * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED - * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE - * DISCLAIMED. IN NO EVENT SHALL AJAX.ORG B.V. BE LIABLE FOR ANY - * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES - * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; - * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND - * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - * - * ***** END LICENSE BLOCK ***** */ - -ace.define('ace/theme/tomorrow_night_bright', ['require', 'exports', 'module' , 'ace/lib/dom'], function(require, exports, module) { - -exports.isDark = true; -exports.cssClass = "ace-tomorrow-night-bright"; -exports.cssText = ".ace-tomorrow-night-bright .ace_gutter {\ -background: #1a1a1a;\ -color: #DEDEDE\ -}\ -.ace-tomorrow-night-bright .ace_print-margin {\ -width: 1px;\ -background: #1a1a1a\ -}\ -.ace-tomorrow-night-bright {\ -background-color: #000000;\ -color: #DEDEDE\ -}\ -.ace-tomorrow-night-bright .ace_cursor {\ -color: #9F9F9F\ -}\ -.ace-tomorrow-night-bright .ace_marker-layer .ace_selection {\ -background: #424242\ -}\ -.ace-tomorrow-night-bright.ace_multiselect .ace_selection.ace_start {\ -box-shadow: 0 0 3px 0px #000000;\ -border-radius: 2px\ -}\ -.ace-tomorrow-night-bright .ace_marker-layer .ace_step {\ -background: rgb(102, 82, 0)\ -}\ -.ace-tomorrow-night-bright .ace_marker-layer .ace_bracket {\ -margin: -1px 0 0 -1px;\ -border: 1px solid #888888\ -}\ -.ace-tomorrow-night-bright .ace_marker-layer .ace_highlight {\ -border: 1px solid rgb(110, 119, 0);\ -border-bottom: 0;\ -box-shadow: inset 0 -1px rgb(110, 119, 0);\ -margin: -1px 0 0 -1px;\ -background: rgba(255, 235, 0, 0.1);\ -}\ -.ace-tomorrow-night-bright .ace_marker-layer .ace_active-line {\ -background: #2A2A2A\ -}\ -.ace-tomorrow-night-bright .ace_gutter-active-line {\ -background-color: #2A2A2A\ -}\ -.ace-tomorrow-night-bright .ace_stack {\ -background-color: rgb(66, 90, 44)\ -}\ -.ace-tomorrow-night-bright .ace_marker-layer .ace_selected-word {\ -border: 1px solid #888888\ -}\ -.ace-tomorrow-night-bright .ace_invisible {\ -color: #343434\ -}\ -.ace-tomorrow-night-bright .ace_keyword,\ -.ace-tomorrow-night-bright .ace_meta,\ -.ace-tomorrow-night-bright .ace_storage,\ -.ace-tomorrow-night-bright .ace_storage.ace_type,\ -.ace-tomorrow-night-bright .ace_support.ace_type {\ -color: #C397D8\ -}\ -.ace-tomorrow-night-bright .ace_keyword.ace_operator {\ -color: #70C0B1\ -}\ -.ace-tomorrow-night-bright .ace_constant.ace_character,\ -.ace-tomorrow-night-bright .ace_constant.ace_language,\ -.ace-tomorrow-night-bright .ace_constant.ace_numeric,\ -.ace-tomorrow-night-bright .ace_keyword.ace_other.ace_unit,\ -.ace-tomorrow-night-bright .ace_support.ace_constant,\ -.ace-tomorrow-night-bright .ace_variable.ace_parameter {\ -color: #E78C45\ -}\ -.ace-tomorrow-night-bright .ace_constant.ace_other {\ -color: #EEEEEE\ -}\ -.ace-tomorrow-night-bright .ace_invalid {\ -color: #CED2CF;\ -background-color: #DF5F5F\ -}\ -.ace-tomorrow-night-bright .ace_invalid.ace_deprecated {\ -color: #CED2CF;\ -background-color: #B798BF\ -}\ -.ace-tomorrow-night-bright .ace_fold {\ -background-color: #7AA6DA;\ -border-color: #DEDEDE\ -}\ -.ace-tomorrow-night-bright .ace_entity.ace_name.ace_function,\ -.ace-tomorrow-night-bright .ace_support.ace_function,\ -.ace-tomorrow-night-bright .ace_variable {\ -color: #7AA6DA\ -}\ -.ace-tomorrow-night-bright .ace_support.ace_class,\ -.ace-tomorrow-night-bright .ace_support.ace_type {\ -color: #E7C547\ -}\ -.ace-tomorrow-night-bright .ace_heading,\ -.ace-tomorrow-night-bright .ace_markup.ace_heading,\ -.ace-tomorrow-night-bright .ace_string {\ -color: #B9CA4A\ -}\ -.ace-tomorrow-night-bright .ace_entity.ace_name.ace_tag,\ -.ace-tomorrow-night-bright .ace_entity.ace_other.ace_attribute-name,\ -.ace-tomorrow-night-bright .ace_meta.ace_tag,\ -.ace-tomorrow-night-bright .ace_string.ace_regexp,\ -.ace-tomorrow-night-bright .ace_variable {\ -color: #D54E53\ -}\ -.ace-tomorrow-night-bright .ace_comment {\ -color: #969896\ -}\ -.ace-tomorrow-night-bright .ace_c9searchresults.ace_keyword {\ -color: #C2C280;\ -}\ -.ace-tomorrow-night-bright .ace_indent-guide {\ -background: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAACCAYAAACZgbYnAAAAEklEQVQImWNgYGBgYFBXV/8PAAJoAXX4kT2EAAAAAElFTkSuQmCC) right repeat-y\ -}"; - -var dom = require("../lib/dom"); -dom.importCssString(exports.cssText, exports.cssClass); -}); diff --git a/IDE/jsrealb-ide/ace-src-noconflict/theme-tomorrow_night_eighties.js b/IDE/jsrealb-ide/ace-src-noconflict/theme-tomorrow_night_eighties.js deleted file mode 100644 index 3146147f..00000000 --- a/IDE/jsrealb-ide/ace-src-noconflict/theme-tomorrow_night_eighties.js +++ /dev/null @@ -1,139 +0,0 @@ -/* ***** BEGIN LICENSE BLOCK ***** - * Distributed under the BSD license: - * - * Copyright (c) 2010, Ajax.org B.V. - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are met: - * * Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * * Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * * Neither the name of Ajax.org B.V. nor the - * names of its contributors may be used to endorse or promote products - * derived from this software without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND - * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED - * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE - * DISCLAIMED. IN NO EVENT SHALL AJAX.ORG B.V. BE LIABLE FOR ANY - * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES - * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; - * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND - * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - * - * ***** END LICENSE BLOCK ***** */ - -ace.define('ace/theme/tomorrow_night_eighties', ['require', 'exports', 'module' , 'ace/lib/dom'], function(require, exports, module) { - -exports.isDark = true; -exports.cssClass = "ace-tomorrow-night-eighties"; -exports.cssText = ".ace-tomorrow-night-eighties .ace_gutter {\ -background: #272727;\ -color: #CCC\ -}\ -.ace-tomorrow-night-eighties .ace_print-margin {\ -width: 1px;\ -background: #272727\ -}\ -.ace-tomorrow-night-eighties {\ -background-color: #2D2D2D;\ -color: #CCCCCC\ -}\ -.ace-tomorrow-night-eighties .ace_constant.ace_other,\ -.ace-tomorrow-night-eighties .ace_cursor {\ -color: #CCCCCC\ -}\ -.ace-tomorrow-night-eighties .ace_marker-layer .ace_selection {\ -background: #515151\ -}\ -.ace-tomorrow-night-eighties.ace_multiselect .ace_selection.ace_start {\ -box-shadow: 0 0 3px 0px #2D2D2D;\ -border-radius: 2px\ -}\ -.ace-tomorrow-night-eighties .ace_marker-layer .ace_step {\ -background: rgb(102, 82, 0)\ -}\ -.ace-tomorrow-night-eighties .ace_marker-layer .ace_bracket {\ -margin: -1px 0 0 -1px;\ -border: 1px solid #6A6A6A\ -}\ -.ace-tomorrow-night-bright .ace_stack {\ -background: rgb(66, 90, 44)\ -}\ -.ace-tomorrow-night-eighties .ace_marker-layer .ace_active-line {\ -background: #393939\ -}\ -.ace-tomorrow-night-eighties .ace_gutter-active-line {\ -background-color: #393939\ -}\ -.ace-tomorrow-night-eighties .ace_marker-layer .ace_selected-word {\ -border: 1px solid #515151\ -}\ -.ace-tomorrow-night-eighties .ace_invisible {\ -color: #6A6A6A\ -}\ -.ace-tomorrow-night-eighties .ace_keyword,\ -.ace-tomorrow-night-eighties .ace_meta,\ -.ace-tomorrow-night-eighties .ace_storage,\ -.ace-tomorrow-night-eighties .ace_storage.ace_type,\ -.ace-tomorrow-night-eighties .ace_support.ace_type {\ -color: #CC99CC\ -}\ -.ace-tomorrow-night-eighties .ace_keyword.ace_operator {\ -color: #66CCCC\ -}\ -.ace-tomorrow-night-eighties .ace_constant.ace_character,\ -.ace-tomorrow-night-eighties .ace_constant.ace_language,\ -.ace-tomorrow-night-eighties .ace_constant.ace_numeric,\ -.ace-tomorrow-night-eighties .ace_keyword.ace_other.ace_unit,\ -.ace-tomorrow-night-eighties .ace_support.ace_constant,\ -.ace-tomorrow-night-eighties .ace_variable.ace_parameter {\ -color: #F99157\ -}\ -.ace-tomorrow-night-eighties .ace_invalid {\ -color: #CDCDCD;\ -background-color: #F2777A\ -}\ -.ace-tomorrow-night-eighties .ace_invalid.ace_deprecated {\ -color: #CDCDCD;\ -background-color: #CC99CC\ -}\ -.ace-tomorrow-night-eighties .ace_fold {\ -background-color: #6699CC;\ -border-color: #CCCCCC\ -}\ -.ace-tomorrow-night-eighties .ace_entity.ace_name.ace_function,\ -.ace-tomorrow-night-eighties .ace_support.ace_function,\ -.ace-tomorrow-night-eighties .ace_variable {\ -color: #6699CC\ -}\ -.ace-tomorrow-night-eighties .ace_support.ace_class,\ -.ace-tomorrow-night-eighties .ace_support.ace_type {\ -color: #FFCC66\ -}\ -.ace-tomorrow-night-eighties .ace_heading,\ -.ace-tomorrow-night-eighties .ace_markup.ace_heading,\ -.ace-tomorrow-night-eighties .ace_string {\ -color: #99CC99\ -}\ -.ace-tomorrow-night-eighties .ace_comment {\ -color: #999999\ -}\ -.ace-tomorrow-night-eighties .ace_entity.ace_name.ace_tag,\ -.ace-tomorrow-night-eighties .ace_entity.ace_other.ace_attribute-name,\ -.ace-tomorrow-night-eighties .ace_meta.ace_tag,\ -.ace-tomorrow-night-eighties .ace_variable {\ -color: #F2777A\ -}\ -.ace-tomorrow-night-eighties .ace_indent-guide {\ -background: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAACCAYAAACZgbYnAAAAEklEQVQImWPQ09NrYAgMjP4PAAtGAwchHMyAAAAAAElFTkSuQmCC) right repeat-y\ -}"; - -var dom = require("../lib/dom"); -dom.importCssString(exports.cssText, exports.cssClass); -}); diff --git a/IDE/jsrealb-ide/ace-src-noconflict/theme-twilight.js b/IDE/jsrealb-ide/ace-src-noconflict/theme-twilight.js deleted file mode 100644 index 59af5016..00000000 --- a/IDE/jsrealb-ide/ace-src-noconflict/theme-twilight.js +++ /dev/null @@ -1,140 +0,0 @@ -/* ***** BEGIN LICENSE BLOCK ***** - * Distributed under the BSD license: - * - * Copyright (c) 2010, Ajax.org B.V. - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are met: - * * Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * * Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * * Neither the name of Ajax.org B.V. nor the - * names of its contributors may be used to endorse or promote products - * derived from this software without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND - * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED - * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE - * DISCLAIMED. IN NO EVENT SHALL AJAX.ORG B.V. BE LIABLE FOR ANY - * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES - * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; - * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND - * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - * - * ***** END LICENSE BLOCK ***** */ - -ace.define('ace/theme/twilight', ['require', 'exports', 'module' , 'ace/lib/dom'], function(require, exports, module) { - -exports.isDark = true; -exports.cssClass = "ace-twilight"; -exports.cssText = ".ace-twilight .ace_gutter {\ -background: #232323;\ -color: #E2E2E2\ -}\ -.ace-twilight .ace_print-margin {\ -width: 1px;\ -background: #232323\ -}\ -.ace-twilight {\ -background-color: #141414;\ -color: #F8F8F8\ -}\ -.ace-twilight .ace_cursor {\ -color: #A7A7A7\ -}\ -.ace-twilight .ace_marker-layer .ace_selection {\ -background: rgba(221, 240, 255, 0.20)\ -}\ -.ace-twilight.ace_multiselect .ace_selection.ace_start {\ -box-shadow: 0 0 3px 0px #141414;\ -border-radius: 2px\ -}\ -.ace-twilight .ace_marker-layer .ace_step {\ -background: rgb(102, 82, 0)\ -}\ -.ace-twilight .ace_marker-layer .ace_bracket {\ -margin: -1px 0 0 -1px;\ -border: 1px solid rgba(255, 255, 255, 0.25)\ -}\ -.ace-twilight .ace_marker-layer .ace_active-line {\ -background: rgba(255, 255, 255, 0.031)\ -}\ -.ace-twilight .ace_gutter-active-line {\ -background-color: rgba(255, 255, 255, 0.031)\ -}\ -.ace-twilight .ace_marker-layer .ace_selected-word {\ -border: 1px solid rgba(221, 240, 255, 0.20)\ -}\ -.ace-twilight .ace_invisible {\ -color: rgba(255, 255, 255, 0.25)\ -}\ -.ace-twilight .ace_keyword,\ -.ace-twilight .ace_meta {\ -color: #CDA869\ -}\ -.ace-twilight .ace_constant,\ -.ace-twilight .ace_constant.ace_character,\ -.ace-twilight .ace_constant.ace_character.ace_escape,\ -.ace-twilight .ace_constant.ace_other,\ -.ace-twilight .ace_heading,\ -.ace-twilight .ace_markup.ace_heading,\ -.ace-twilight .ace_support.ace_constant {\ -color: #CF6A4C\ -}\ -.ace-twilight .ace_invalid.ace_illegal {\ -color: #F8F8F8;\ -background-color: rgba(86, 45, 86, 0.75)\ -}\ -.ace-twilight .ace_invalid.ace_deprecated {\ -text-decoration: underline;\ -font-style: italic;\ -color: #D2A8A1\ -}\ -.ace-twilight .ace_support {\ -color: #9B859D\ -}\ -.ace-twilight .ace_fold {\ -background-color: #AC885B;\ -border-color: #F8F8F8\ -}\ -.ace-twilight .ace_support.ace_function {\ -color: #DAD085\ -}\ -.ace-twilight .ace_list,\ -.ace-twilight .ace_markup.ace_list,\ -.ace-twilight .ace_storage {\ -color: #F9EE98\ -}\ -.ace-twilight .ace_entity.ace_name.ace_function,\ -.ace-twilight .ace_meta.ace_tag,\ -.ace-twilight .ace_variable {\ -color: #AC885B\ -}\ -.ace-twilight .ace_string {\ -color: #8F9D6A\ -}\ -.ace-twilight .ace_string.ace_regexp {\ -color: #E9C062\ -}\ -.ace-twilight .ace_comment {\ -font-style: italic;\ -color: #5F5A60\ -}\ -.ace-twilight .ace_variable {\ -color: #7587A6\ -}\ -.ace-twilight .ace_xml-pe {\ -color: #494949\ -}\ -.ace-twilight .ace_indent-guide {\ -background: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAACCAYAAACZgbYnAAAAEklEQVQImWMQERFpYLC1tf0PAAgOAnPnhxyiAAAAAElFTkSuQmCC) right repeat-y\ -}"; - -var dom = require("../lib/dom"); -dom.importCssString(exports.cssText, exports.cssClass); -}); diff --git a/IDE/jsrealb-ide/ace-src-noconflict/theme-vibrant_ink.js b/IDE/jsrealb-ide/ace-src-noconflict/theme-vibrant_ink.js deleted file mode 100644 index eb9152c8..00000000 --- a/IDE/jsrealb-ide/ace-src-noconflict/theme-vibrant_ink.js +++ /dev/null @@ -1,125 +0,0 @@ -/* ***** BEGIN LICENSE BLOCK ***** - * Distributed under the BSD license: - * - * Copyright (c) 2010, Ajax.org B.V. - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are met: - * * Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * * Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * * Neither the name of Ajax.org B.V. nor the - * names of its contributors may be used to endorse or promote products - * derived from this software without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND - * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED - * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE - * DISCLAIMED. IN NO EVENT SHALL AJAX.ORG B.V. BE LIABLE FOR ANY - * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES - * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; - * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND - * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - * - * ***** END LICENSE BLOCK ***** */ - -ace.define('ace/theme/vibrant_ink', ['require', 'exports', 'module' , 'ace/lib/dom'], function(require, exports, module) { - -exports.isDark = true; -exports.cssClass = "ace-vibrant-ink"; -exports.cssText = ".ace-vibrant-ink .ace_gutter {\ -background: #1a1a1a;\ -color: #BEBEBE\ -}\ -.ace-vibrant-ink .ace_print-margin {\ -width: 1px;\ -background: #1a1a1a\ -}\ -.ace-vibrant-ink {\ -background-color: #0F0F0F;\ -color: #FFFFFF\ -}\ -.ace-vibrant-ink .ace_cursor {\ -color: #FFFFFF\ -}\ -.ace-vibrant-ink .ace_marker-layer .ace_selection {\ -background: #6699CC\ -}\ -.ace-vibrant-ink.ace_multiselect .ace_selection.ace_start {\ -box-shadow: 0 0 3px 0px #0F0F0F;\ -border-radius: 2px\ -}\ -.ace-vibrant-ink .ace_marker-layer .ace_step {\ -background: rgb(102, 82, 0)\ -}\ -.ace-vibrant-ink .ace_marker-layer .ace_bracket {\ -margin: -1px 0 0 -1px;\ -border: 1px solid #404040\ -}\ -.ace-vibrant-ink .ace_marker-layer .ace_active-line {\ -background: #333333\ -}\ -.ace-vibrant-ink .ace_gutter-active-line {\ -background-color: #333333\ -}\ -.ace-vibrant-ink .ace_marker-layer .ace_selected-word {\ -border: 1px solid #6699CC\ -}\ -.ace-vibrant-ink .ace_invisible {\ -color: #404040\ -}\ -.ace-vibrant-ink .ace_keyword,\ -.ace-vibrant-ink .ace_meta {\ -color: #FF6600\ -}\ -.ace-vibrant-ink .ace_constant,\ -.ace-vibrant-ink .ace_constant.ace_character,\ -.ace-vibrant-ink .ace_constant.ace_character.ace_escape,\ -.ace-vibrant-ink .ace_constant.ace_other {\ -color: #339999\ -}\ -.ace-vibrant-ink .ace_constant.ace_numeric {\ -color: #99CC99\ -}\ -.ace-vibrant-ink .ace_invalid,\ -.ace-vibrant-ink .ace_invalid.ace_deprecated {\ -color: #CCFF33;\ -background-color: #000000\ -}\ -.ace-vibrant-ink .ace_fold {\ -background-color: #FFCC00;\ -border-color: #FFFFFF\ -}\ -.ace-vibrant-ink .ace_entity.ace_name.ace_function,\ -.ace-vibrant-ink .ace_support.ace_function,\ -.ace-vibrant-ink .ace_variable {\ -color: #FFCC00\ -}\ -.ace-vibrant-ink .ace_variable.ace_parameter {\ -font-style: italic\ -}\ -.ace-vibrant-ink .ace_string {\ -color: #66FF00\ -}\ -.ace-vibrant-ink .ace_string.ace_regexp {\ -color: #44B4CC\ -}\ -.ace-vibrant-ink .ace_comment {\ -color: #9933CC\ -}\ -.ace-vibrant-ink .ace_entity.ace_other.ace_attribute-name {\ -font-style: italic;\ -color: #99CC99\ -}\ -.ace-vibrant-ink .ace_indent-guide {\ -background: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAACCAYAAACZgbYnAAAAEklEQVQImWNgYGBgYNDTc/oPAALPAZ7hxlbYAAAAAElFTkSuQmCC) right repeat-y\ -}"; - -var dom = require("../lib/dom"); -dom.importCssString(exports.cssText, exports.cssClass); -}); diff --git a/IDE/jsrealb-ide/ace-src-noconflict/theme-xcode.js b/IDE/jsrealb-ide/ace-src-noconflict/theme-xcode.js deleted file mode 100644 index e445d73a..00000000 --- a/IDE/jsrealb-ide/ace-src-noconflict/theme-xcode.js +++ /dev/null @@ -1,120 +0,0 @@ -/* ***** BEGIN LICENSE BLOCK ***** - * Distributed under the BSD license: - * - * Copyright (c) 2010, Ajax.org B.V. - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are met: - * * Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * * Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * * Neither the name of Ajax.org B.V. nor the - * names of its contributors may be used to endorse or promote products - * derived from this software without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND - * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED - * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE - * DISCLAIMED. IN NO EVENT SHALL AJAX.ORG B.V. BE LIABLE FOR ANY - * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES - * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; - * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND - * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - * - * ***** END LICENSE BLOCK ***** */ - -ace.define('ace/theme/xcode', ['require', 'exports', 'module' , 'ace/lib/dom'], function(require, exports, module) { - -exports.isDark = false; -exports.cssClass = "ace-xcode"; -exports.cssText = ".ace-xcode .ace_gutter,\ -/* THIS THEME WAS AUTOGENERATED BY Theme.tmpl.css (UUID: EE3AD170-2B7F-4DE1-B724-C75F13FE0085) */\ -.ace-xcode .ace_gutter {\ -background: #e8e8e8;\ -color: #333\ -}\ -.ace-xcode .ace_print-margin {\ -width: 1px;\ -background: #e8e8e8\ -}\ -.ace-xcode {\ -background-color: #FFFFFF;\ -color: #000000\ -}\ -.ace-xcode .ace_cursor {\ -color: #000000\ -}\ -.ace-xcode .ace_marker-layer .ace_selection {\ -background: #B5D5FF\ -}\ -.ace-xcode.ace_multiselect .ace_selection.ace_start {\ -box-shadow: 0 0 3px 0px #FFFFFF;\ -border-radius: 2px\ -}\ -.ace-xcode .ace_marker-layer .ace_step {\ -background: rgb(198, 219, 174)\ -}\ -.ace-xcode .ace_marker-layer .ace_bracket {\ -margin: -1px 0 0 -1px;\ -border: 1px solid #BFBFBF\ -}\ -.ace-xcode .ace_marker-layer .ace_active-line {\ -background: rgba(0, 0, 0, 0.071)\ -}\ -.ace-xcode .ace_gutter-active-line {\ -background-color: rgba(0, 0, 0, 0.071)\ -}\ -.ace-xcode .ace_marker-layer .ace_selected-word {\ -border: 1px solid #B5D5FF\ -}\ -.ace-xcode .ace_constant.ace_language,\ -.ace-xcode .ace_keyword,\ -.ace-xcode .ace_meta,\ -.ace-xcode .ace_variable.ace_language {\ -color: #C800A4\ -}\ -.ace-xcode .ace_invisible {\ -color: #BFBFBF\ -}\ -.ace-xcode .ace_constant.ace_character,\ -.ace-xcode .ace_constant.ace_other {\ -color: #275A5E\ -}\ -.ace-xcode .ace_constant.ace_numeric {\ -color: #3A00DC\ -}\ -.ace-xcode .ace_entity.ace_other.ace_attribute-name,\ -.ace-xcode .ace_support.ace_constant,\ -.ace-xcode .ace_support.ace_function {\ -color: #450084\ -}\ -.ace-xcode .ace_fold {\ -background-color: #C800A4;\ -border-color: #000000\ -}\ -.ace-xcode .ace_entity.ace_name.ace_tag,\ -.ace-xcode .ace_support.ace_class,\ -.ace-xcode .ace_support.ace_type {\ -color: #790EAD\ -}\ -.ace-xcode .ace_storage {\ -color: #C900A4\ -}\ -.ace-xcode .ace_string {\ -color: #DF0002\ -}\ -.ace-xcode .ace_comment {\ -color: #008E00\ -}\ -.ace-xcode .ace_indent-guide {\ -background: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAACCAYAAACZgbYnAAAAE0lEQVQImWP4////f4bLly//BwAmVgd1/w11/gAAAABJRU5ErkJggg==) right repeat-y\ -}"; - -var dom = require("../lib/dom"); -dom.importCssString(exports.cssText, exports.cssClass); -}); diff --git a/IDE/jsrealb-ide/ace-src-noconflict/worker-coffee.js b/IDE/jsrealb-ide/ace-src-noconflict/worker-coffee.js deleted file mode 100644 index 193a40d9..00000000 --- a/IDE/jsrealb-ide/ace-src-noconflict/worker-coffee.js +++ /dev/null @@ -1,7571 +0,0 @@ -"no use strict"; -;(function(window) { -if (typeof window.window != "undefined" && window.document) { - return; -} - -window.console = function() { - var msgs = Array.prototype.slice.call(arguments, 0); - postMessage({type: "log", data: msgs}); -}; -window.console.error = -window.console.warn = -window.console.log = -window.console.trace = window.console; - -window.window = window; -window.ace = window; - -window.onerror = function(message, file, line, col, err) { - console.error("Worker " + err.stack); -}; - -window.normalizeModule = function(parentId, moduleName) { - if (moduleName.indexOf("!") !== -1) { - var chunks = moduleName.split("!"); - return window.normalizeModule(parentId, chunks[0]) + "!" + window.normalizeModule(parentId, chunks[1]); - } - if (moduleName.charAt(0) == ".") { - var base = parentId.split("/").slice(0, -1).join("/"); - moduleName = (base ? base + "/" : "") + moduleName; - - while(moduleName.indexOf(".") !== -1 && previous != moduleName) { - var previous = moduleName; - moduleName = moduleName.replace(/^\.\//, "").replace(/\/\.\//, "/").replace(/[^\/]+\/\.\.\//, ""); - } - } - - return moduleName; -}; - -window.require = function(parentId, id) { - if (!id) { - id = parentId - parentId = null; - } - if (!id.charAt) - throw new Error("worker.js require() accepts only (parentId, id) as arguments"); - - id = window.normalizeModule(parentId, id); - - var module = window.require.modules[id]; - if (module) { - if (!module.initialized) { - module.initialized = true; - module.exports = module.factory().exports; - } - return module.exports; - } - - var chunks = id.split("/"); - if (!window.require.tlns) - return console.log("unable to load " + id); - chunks[0] = window.require.tlns[chunks[0]] || chunks[0]; - var path = chunks.join("/") + ".js"; - - window.require.id = id; - importScripts(path); - return window.require(parentId, id); -}; -window.require.modules = {}; -window.require.tlns = {}; - -window.define = function(id, deps, factory) { - if (arguments.length == 2) { - factory = deps; - if (typeof id != "string") { - deps = id; - id = window.require.id; - } - } else if (arguments.length == 1) { - factory = id; - deps = [] - id = window.require.id; - } - - if (!deps.length) - deps = ['require', 'exports', 'module'] - - if (id.indexOf("text!") === 0) - return; - - var req = function(childId) { - return window.require(id, childId); - }; - - window.require.modules[id] = { - exports: {}, - factory: function() { - var module = this; - var returnExports = factory.apply(this, deps.map(function(dep) { - switch(dep) { - case 'require': return req - case 'exports': return module.exports - case 'module': return module - default: return req(dep) - } - })); - if (returnExports) - module.exports = returnExports; - return module; - } - }; -}; -window.define.amd = {} - -window.initBaseUrls = function initBaseUrls(topLevelNamespaces) { - require.tlns = topLevelNamespaces; -} - -window.initSender = function initSender() { - - var EventEmitter = window.require("ace/lib/event_emitter").EventEmitter; - var oop = window.require("ace/lib/oop"); - - var Sender = function() {}; - - (function() { - - oop.implement(this, EventEmitter); - - this.callback = function(data, callbackId) { - postMessage({ - type: "call", - id: callbackId, - data: data - }); - }; - - this.emit = function(name, data) { - postMessage({ - type: "event", - name: name, - data: data - }); - }; - - }).call(Sender.prototype); - - return new Sender(); -} - -window.main = null; -window.sender = null; - -window.onmessage = function(e) { - var msg = e.data; - if (msg.command) { - if (main[msg.command]) - main[msg.command].apply(main, msg.args); - else - throw new Error("Unknown command:" + msg.command); - } - else if (msg.init) { - initBaseUrls(msg.tlns); - require("ace/lib/es5-shim"); - sender = initSender(); - var clazz = require(msg.module)[msg.classname]; - main = new clazz(sender); - } - else if (msg.event && sender) { - sender._emit(msg.event, msg.data); - } -}; -})(this);// https://github.com/kriskowal/es5-shim - -ace.define('ace/lib/es5-shim', ['require', 'exports', 'module' ], function(require, exports, module) { - -function Empty() {} - -if (!Function.prototype.bind) { - Function.prototype.bind = function bind(that) { // .length is 1 - var target = this; - if (typeof target != "function") { - throw new TypeError("Function.prototype.bind called on incompatible " + target); - } - var args = slice.call(arguments, 1); // for normal call - var bound = function () { - - if (this instanceof bound) { - - var result = target.apply( - this, - args.concat(slice.call(arguments)) - ); - if (Object(result) === result) { - return result; - } - return this; - - } else { - return target.apply( - that, - args.concat(slice.call(arguments)) - ); - - } - - }; - if(target.prototype) { - Empty.prototype = target.prototype; - bound.prototype = new Empty(); - Empty.prototype = null; - } - return bound; - }; -} -var call = Function.prototype.call; -var prototypeOfArray = Array.prototype; -var prototypeOfObject = Object.prototype; -var slice = prototypeOfArray.slice; -var _toString = call.bind(prototypeOfObject.toString); -var owns = call.bind(prototypeOfObject.hasOwnProperty); -var defineGetter; -var defineSetter; -var lookupGetter; -var lookupSetter; -var supportsAccessors; -if ((supportsAccessors = owns(prototypeOfObject, "__defineGetter__"))) { - defineGetter = call.bind(prototypeOfObject.__defineGetter__); - defineSetter = call.bind(prototypeOfObject.__defineSetter__); - lookupGetter = call.bind(prototypeOfObject.__lookupGetter__); - lookupSetter = call.bind(prototypeOfObject.__lookupSetter__); -} -if ([1,2].splice(0).length != 2) { - if(function() { // test IE < 9 to splice bug - see issue #138 - function makeArray(l) { - var a = new Array(l+2); - a[0] = a[1] = 0; - return a; - } - var array = [], lengthBefore; - - array.splice.apply(array, makeArray(20)); - array.splice.apply(array, makeArray(26)); - - lengthBefore = array.length; //46 - array.splice(5, 0, "XXX"); // add one element - - lengthBefore + 1 == array.length - - if (lengthBefore + 1 == array.length) { - return true;// has right splice implementation without bugs - } - }()) {//IE 6/7 - var array_splice = Array.prototype.splice; - Array.prototype.splice = function(start, deleteCount) { - if (!arguments.length) { - return []; - } else { - return array_splice.apply(this, [ - start === void 0 ? 0 : start, - deleteCount === void 0 ? (this.length - start) : deleteCount - ].concat(slice.call(arguments, 2))) - } - }; - } else {//IE8 - Array.prototype.splice = function(pos, removeCount){ - var length = this.length; - if (pos > 0) { - if (pos > length) - pos = length; - } else if (pos == void 0) { - pos = 0; - } else if (pos < 0) { - pos = Math.max(length + pos, 0); - } - - if (!(pos+removeCount < length)) - removeCount = length - pos; - - var removed = this.slice(pos, pos+removeCount); - var insert = slice.call(arguments, 2); - var add = insert.length; - if (pos === length) { - if (add) { - this.push.apply(this, insert); - } - } else { - var remove = Math.min(removeCount, length - pos); - var tailOldPos = pos + remove; - var tailNewPos = tailOldPos + add - remove; - var tailCount = length - tailOldPos; - var lengthAfterRemove = length - remove; - - if (tailNewPos < tailOldPos) { // case A - for (var i = 0; i < tailCount; ++i) { - this[tailNewPos+i] = this[tailOldPos+i]; - } - } else if (tailNewPos > tailOldPos) { // case B - for (i = tailCount; i--; ) { - this[tailNewPos+i] = this[tailOldPos+i]; - } - } // else, add == remove (nothing to do) - - if (add && pos === lengthAfterRemove) { - this.length = lengthAfterRemove; // truncate array - this.push.apply(this, insert); - } else { - this.length = lengthAfterRemove + add; // reserves space - for (i = 0; i < add; ++i) { - this[pos+i] = insert[i]; - } - } - } - return removed; - }; - } -} -if (!Array.isArray) { - Array.isArray = function isArray(obj) { - return _toString(obj) == "[object Array]"; - }; -} -var boxedString = Object("a"), - splitString = boxedString[0] != "a" || !(0 in boxedString); - -if (!Array.prototype.forEach) { - Array.prototype.forEach = function forEach(fun /*, thisp*/) { - var object = toObject(this), - self = splitString && _toString(this) == "[object String]" ? - this.split("") : - object, - thisp = arguments[1], - i = -1, - length = self.length >>> 0; - if (_toString(fun) != "[object Function]") { - throw new TypeError(); // TODO message - } - - while (++i < length) { - if (i in self) { - fun.call(thisp, self[i], i, object); - } - } - }; -} -if (!Array.prototype.map) { - Array.prototype.map = function map(fun /*, thisp*/) { - var object = toObject(this), - self = splitString && _toString(this) == "[object String]" ? - this.split("") : - object, - length = self.length >>> 0, - result = Array(length), - thisp = arguments[1]; - if (_toString(fun) != "[object Function]") { - throw new TypeError(fun + " is not a function"); - } - - for (var i = 0; i < length; i++) { - if (i in self) - result[i] = fun.call(thisp, self[i], i, object); - } - return result; - }; -} -if (!Array.prototype.filter) { - Array.prototype.filter = function filter(fun /*, thisp */) { - var object = toObject(this), - self = splitString && _toString(this) == "[object String]" ? - this.split("") : - object, - length = self.length >>> 0, - result = [], - value, - thisp = arguments[1]; - if (_toString(fun) != "[object Function]") { - throw new TypeError(fun + " is not a function"); - } - - for (var i = 0; i < length; i++) { - if (i in self) { - value = self[i]; - if (fun.call(thisp, value, i, object)) { - result.push(value); - } - } - } - return result; - }; -} -if (!Array.prototype.every) { - Array.prototype.every = function every(fun /*, thisp */) { - var object = toObject(this), - self = splitString && _toString(this) == "[object String]" ? - this.split("") : - object, - length = self.length >>> 0, - thisp = arguments[1]; - if (_toString(fun) != "[object Function]") { - throw new TypeError(fun + " is not a function"); - } - - for (var i = 0; i < length; i++) { - if (i in self && !fun.call(thisp, self[i], i, object)) { - return false; - } - } - return true; - }; -} -if (!Array.prototype.some) { - Array.prototype.some = function some(fun /*, thisp */) { - var object = toObject(this), - self = splitString && _toString(this) == "[object String]" ? - this.split("") : - object, - length = self.length >>> 0, - thisp = arguments[1]; - if (_toString(fun) != "[object Function]") { - throw new TypeError(fun + " is not a function"); - } - - for (var i = 0; i < length; i++) { - if (i in self && fun.call(thisp, self[i], i, object)) { - return true; - } - } - return false; - }; -} -if (!Array.prototype.reduce) { - Array.prototype.reduce = function reduce(fun /*, initial*/) { - var object = toObject(this), - self = splitString && _toString(this) == "[object String]" ? - this.split("") : - object, - length = self.length >>> 0; - if (_toString(fun) != "[object Function]") { - throw new TypeError(fun + " is not a function"); - } - if (!length && arguments.length == 1) { - throw new TypeError("reduce of empty array with no initial value"); - } - - var i = 0; - var result; - if (arguments.length >= 2) { - result = arguments[1]; - } else { - do { - if (i in self) { - result = self[i++]; - break; - } - if (++i >= length) { - throw new TypeError("reduce of empty array with no initial value"); - } - } while (true); - } - - for (; i < length; i++) { - if (i in self) { - result = fun.call(void 0, result, self[i], i, object); - } - } - - return result; - }; -} -if (!Array.prototype.reduceRight) { - Array.prototype.reduceRight = function reduceRight(fun /*, initial*/) { - var object = toObject(this), - self = splitString && _toString(this) == "[object String]" ? - this.split("") : - object, - length = self.length >>> 0; - if (_toString(fun) != "[object Function]") { - throw new TypeError(fun + " is not a function"); - } - if (!length && arguments.length == 1) { - throw new TypeError("reduceRight of empty array with no initial value"); - } - - var result, i = length - 1; - if (arguments.length >= 2) { - result = arguments[1]; - } else { - do { - if (i in self) { - result = self[i--]; - break; - } - if (--i < 0) { - throw new TypeError("reduceRight of empty array with no initial value"); - } - } while (true); - } - - do { - if (i in this) { - result = fun.call(void 0, result, self[i], i, object); - } - } while (i--); - - return result; - }; -} -if (!Array.prototype.indexOf || ([0, 1].indexOf(1, 2) != -1)) { - Array.prototype.indexOf = function indexOf(sought /*, fromIndex */ ) { - var self = splitString && _toString(this) == "[object String]" ? - this.split("") : - toObject(this), - length = self.length >>> 0; - - if (!length) { - return -1; - } - - var i = 0; - if (arguments.length > 1) { - i = toInteger(arguments[1]); - } - i = i >= 0 ? i : Math.max(0, length + i); - for (; i < length; i++) { - if (i in self && self[i] === sought) { - return i; - } - } - return -1; - }; -} -if (!Array.prototype.lastIndexOf || ([0, 1].lastIndexOf(0, -3) != -1)) { - Array.prototype.lastIndexOf = function lastIndexOf(sought /*, fromIndex */) { - var self = splitString && _toString(this) == "[object String]" ? - this.split("") : - toObject(this), - length = self.length >>> 0; - - if (!length) { - return -1; - } - var i = length - 1; - if (arguments.length > 1) { - i = Math.min(i, toInteger(arguments[1])); - } - i = i >= 0 ? i : length - Math.abs(i); - for (; i >= 0; i--) { - if (i in self && sought === self[i]) { - return i; - } - } - return -1; - }; -} -if (!Object.getPrototypeOf) { - Object.getPrototypeOf = function getPrototypeOf(object) { - return object.__proto__ || ( - object.constructor ? - object.constructor.prototype : - prototypeOfObject - ); - }; -} -if (!Object.getOwnPropertyDescriptor) { - var ERR_NON_OBJECT = "Object.getOwnPropertyDescriptor called on a " + - "non-object: "; - Object.getOwnPropertyDescriptor = function getOwnPropertyDescriptor(object, property) { - if ((typeof object != "object" && typeof object != "function") || object === null) - throw new TypeError(ERR_NON_OBJECT + object); - if (!owns(object, property)) - return; - - var descriptor, getter, setter; - descriptor = { enumerable: true, configurable: true }; - if (supportsAccessors) { - var prototype = object.__proto__; - object.__proto__ = prototypeOfObject; - - var getter = lookupGetter(object, property); - var setter = lookupSetter(object, property); - object.__proto__ = prototype; - - if (getter || setter) { - if (getter) descriptor.get = getter; - if (setter) descriptor.set = setter; - return descriptor; - } - } - descriptor.value = object[property]; - return descriptor; - }; -} -if (!Object.getOwnPropertyNames) { - Object.getOwnPropertyNames = function getOwnPropertyNames(object) { - return Object.keys(object); - }; -} -if (!Object.create) { - var createEmpty; - if (Object.prototype.__proto__ === null) { - createEmpty = function () { - return { "__proto__": null }; - }; - } else { - createEmpty = function () { - var empty = {}; - for (var i in empty) - empty[i] = null; - empty.constructor = - empty.hasOwnProperty = - empty.propertyIsEnumerable = - empty.isPrototypeOf = - empty.toLocaleString = - empty.toString = - empty.valueOf = - empty.__proto__ = null; - return empty; - } - } - - Object.create = function create(prototype, properties) { - var object; - if (prototype === null) { - object = createEmpty(); - } else { - if (typeof prototype != "object") - throw new TypeError("typeof prototype["+(typeof prototype)+"] != 'object'"); - var Type = function () {}; - Type.prototype = prototype; - object = new Type(); - object.__proto__ = prototype; - } - if (properties !== void 0) - Object.defineProperties(object, properties); - return object; - }; -} - -function doesDefinePropertyWork(object) { - try { - Object.defineProperty(object, "sentinel", {}); - return "sentinel" in object; - } catch (exception) { - } -} -if (Object.defineProperty) { - var definePropertyWorksOnObject = doesDefinePropertyWork({}); - var definePropertyWorksOnDom = typeof document == "undefined" || - doesDefinePropertyWork(document.createElement("div")); - if (!definePropertyWorksOnObject || !definePropertyWorksOnDom) { - var definePropertyFallback = Object.defineProperty; - } -} - -if (!Object.defineProperty || definePropertyFallback) { - var ERR_NON_OBJECT_DESCRIPTOR = "Property description must be an object: "; - var ERR_NON_OBJECT_TARGET = "Object.defineProperty called on non-object: " - var ERR_ACCESSORS_NOT_SUPPORTED = "getters & setters can not be defined " + - "on this javascript engine"; - - Object.defineProperty = function defineProperty(object, property, descriptor) { - if ((typeof object != "object" && typeof object != "function") || object === null) - throw new TypeError(ERR_NON_OBJECT_TARGET + object); - if ((typeof descriptor != "object" && typeof descriptor != "function") || descriptor === null) - throw new TypeError(ERR_NON_OBJECT_DESCRIPTOR + descriptor); - if (definePropertyFallback) { - try { - return definePropertyFallback.call(Object, object, property, descriptor); - } catch (exception) { - } - } - if (owns(descriptor, "value")) { - - if (supportsAccessors && (lookupGetter(object, property) || - lookupSetter(object, property))) - { - var prototype = object.__proto__; - object.__proto__ = prototypeOfObject; - delete object[property]; - object[property] = descriptor.value; - object.__proto__ = prototype; - } else { - object[property] = descriptor.value; - } - } else { - if (!supportsAccessors) - throw new TypeError(ERR_ACCESSORS_NOT_SUPPORTED); - if (owns(descriptor, "get")) - defineGetter(object, property, descriptor.get); - if (owns(descriptor, "set")) - defineSetter(object, property, descriptor.set); - } - - return object; - }; -} -if (!Object.defineProperties) { - Object.defineProperties = function defineProperties(object, properties) { - for (var property in properties) { - if (owns(properties, property)) - Object.defineProperty(object, property, properties[property]); - } - return object; - }; -} -if (!Object.seal) { - Object.seal = function seal(object) { - return object; - }; -} -if (!Object.freeze) { - Object.freeze = function freeze(object) { - return object; - }; -} -try { - Object.freeze(function () {}); -} catch (exception) { - Object.freeze = (function freeze(freezeObject) { - return function freeze(object) { - if (typeof object == "function") { - return object; - } else { - return freezeObject(object); - } - }; - })(Object.freeze); -} -if (!Object.preventExtensions) { - Object.preventExtensions = function preventExtensions(object) { - return object; - }; -} -if (!Object.isSealed) { - Object.isSealed = function isSealed(object) { - return false; - }; -} -if (!Object.isFrozen) { - Object.isFrozen = function isFrozen(object) { - return false; - }; -} -if (!Object.isExtensible) { - Object.isExtensible = function isExtensible(object) { - if (Object(object) === object) { - throw new TypeError(); // TODO message - } - var name = ''; - while (owns(object, name)) { - name += '?'; - } - object[name] = true; - var returnValue = owns(object, name); - delete object[name]; - return returnValue; - }; -} -if (!Object.keys) { - var hasDontEnumBug = true, - dontEnums = [ - "toString", - "toLocaleString", - "valueOf", - "hasOwnProperty", - "isPrototypeOf", - "propertyIsEnumerable", - "constructor" - ], - dontEnumsLength = dontEnums.length; - - for (var key in {"toString": null}) { - hasDontEnumBug = false; - } - - Object.keys = function keys(object) { - - if ( - (typeof object != "object" && typeof object != "function") || - object === null - ) { - throw new TypeError("Object.keys called on a non-object"); - } - - var keys = []; - for (var name in object) { - if (owns(object, name)) { - keys.push(name); - } - } - - if (hasDontEnumBug) { - for (var i = 0, ii = dontEnumsLength; i < ii; i++) { - var dontEnum = dontEnums[i]; - if (owns(object, dontEnum)) { - keys.push(dontEnum); - } - } - } - return keys; - }; - -} -if (!Date.now) { - Date.now = function now() { - return new Date().getTime(); - }; -} -var ws = "\x09\x0A\x0B\x0C\x0D\x20\xA0\u1680\u180E\u2000\u2001\u2002\u2003" + - "\u2004\u2005\u2006\u2007\u2008\u2009\u200A\u202F\u205F\u3000\u2028" + - "\u2029\uFEFF"; -if (!String.prototype.trim || ws.trim()) { - ws = "[" + ws + "]"; - var trimBeginRegexp = new RegExp("^" + ws + ws + "*"), - trimEndRegexp = new RegExp(ws + ws + "*$"); - String.prototype.trim = function trim() { - return String(this).replace(trimBeginRegexp, "").replace(trimEndRegexp, ""); - }; -} - -function toInteger(n) { - n = +n; - if (n !== n) { // isNaN - n = 0; - } else if (n !== 0 && n !== (1/0) && n !== -(1/0)) { - n = (n > 0 || -1) * Math.floor(Math.abs(n)); - } - return n; -} - -function isPrimitive(input) { - var type = typeof input; - return ( - input === null || - type === "undefined" || - type === "boolean" || - type === "number" || - type === "string" - ); -} - -function toPrimitive(input) { - var val, valueOf, toString; - if (isPrimitive(input)) { - return input; - } - valueOf = input.valueOf; - if (typeof valueOf === "function") { - val = valueOf.call(input); - if (isPrimitive(val)) { - return val; - } - } - toString = input.toString; - if (typeof toString === "function") { - val = toString.call(input); - if (isPrimitive(val)) { - return val; - } - } - throw new TypeError(); -} -var toObject = function (o) { - if (o == null) { // this matches both null and undefined - throw new TypeError("can't convert "+o+" to object"); - } - return Object(o); -}; - -}); - -ace.define('ace/mode/coffee_worker', ['require', 'exports', 'module' , 'ace/lib/oop', 'ace/worker/mirror', 'ace/mode/coffee/coffee-script'], function(require, exports, module) { - - -var oop = require("../lib/oop"); -var Mirror = require("../worker/mirror").Mirror; -var coffee = require("../mode/coffee/coffee-script"); - -window.addEventListener = function() {}; - - -var Worker = exports.Worker = function(sender) { - Mirror.call(this, sender); - this.setTimeout(250); -}; - -oop.inherits(Worker, Mirror); - -(function() { - - this.onUpdate = function() { - var value = this.doc.getValue(); - - try { - coffee.parse(value).compile(); - } catch(e) { - var loc = e.location; - if (loc) { - this.sender.emit("error", { - row: loc.first_line, - column: loc.first_column, - endRow: loc.last_line, - endColumn: loc.last_column, - text: e.message, - type: "error" - }); - } - return; - } - this.sender.emit("ok"); - }; - -}).call(Worker.prototype); - -}); - -ace.define('ace/lib/oop', ['require', 'exports', 'module' ], function(require, exports, module) { - - -exports.inherits = function(ctor, superCtor) { - ctor.super_ = superCtor; - ctor.prototype = Object.create(superCtor.prototype, { - constructor: { - value: ctor, - enumerable: false, - writable: true, - configurable: true - } - }); -}; - -exports.mixin = function(obj, mixin) { - for (var key in mixin) { - obj[key] = mixin[key]; - } - return obj; -}; - -exports.implement = function(proto, mixin) { - exports.mixin(proto, mixin); -}; - -}); -ace.define('ace/worker/mirror', ['require', 'exports', 'module' , 'ace/document', 'ace/lib/lang'], function(require, exports, module) { - - -var Document = require("../document").Document; -var lang = require("../lib/lang"); - -var Mirror = exports.Mirror = function(sender) { - this.sender = sender; - var doc = this.doc = new Document(""); - - var deferredUpdate = this.deferredUpdate = lang.delayedCall(this.onUpdate.bind(this)); - - var _self = this; - sender.on("change", function(e) { - doc.applyDeltas(e.data); - if (_self.$timeout) - return deferredUpdate.schedule(_self.$timeout); - _self.onUpdate(); - }); -}; - -(function() { - - this.$timeout = 500; - - this.setTimeout = function(timeout) { - this.$timeout = timeout; - }; - - this.setValue = function(value) { - this.doc.setValue(value); - this.deferredUpdate.schedule(this.$timeout); - }; - - this.getValue = function(callbackId) { - this.sender.callback(this.doc.getValue(), callbackId); - }; - - this.onUpdate = function() { - }; - - this.isPending = function() { - return this.deferredUpdate.isPending(); - }; - -}).call(Mirror.prototype); - -}); - -ace.define('ace/document', ['require', 'exports', 'module' , 'ace/lib/oop', 'ace/lib/event_emitter', 'ace/range', 'ace/anchor'], function(require, exports, module) { - - -var oop = require("./lib/oop"); -var EventEmitter = require("./lib/event_emitter").EventEmitter; -var Range = require("./range").Range; -var Anchor = require("./anchor").Anchor; - -var Document = function(text) { - this.$lines = []; - if (text.length == 0) { - this.$lines = [""]; - } else if (Array.isArray(text)) { - this._insertLines(0, text); - } else { - this.insert({row: 0, column:0}, text); - } -}; - -(function() { - - oop.implement(this, EventEmitter); - this.setValue = function(text) { - var len = this.getLength(); - this.remove(new Range(0, 0, len, this.getLine(len-1).length)); - this.insert({row: 0, column:0}, text); - }; - this.getValue = function() { - return this.getAllLines().join(this.getNewLineCharacter()); - }; - this.createAnchor = function(row, column) { - return new Anchor(this, row, column); - }; - if ("aaa".split(/a/).length == 0) - this.$split = function(text) { - return text.replace(/\r\n|\r/g, "\n").split("\n"); - } - else - this.$split = function(text) { - return text.split(/\r\n|\r|\n/); - }; - - - this.$detectNewLine = function(text) { - var match = text.match(/^.*?(\r\n|\r|\n)/m); - this.$autoNewLine = match ? match[1] : "\n"; - }; - this.getNewLineCharacter = function() { - switch (this.$newLineMode) { - case "windows": - return "\r\n"; - case "unix": - return "\n"; - default: - return this.$autoNewLine; - } - }; - - this.$autoNewLine = "\n"; - this.$newLineMode = "auto"; - this.setNewLineMode = function(newLineMode) { - if (this.$newLineMode === newLineMode) - return; - - this.$newLineMode = newLineMode; - }; - this.getNewLineMode = function() { - return this.$newLineMode; - }; - this.isNewLine = function(text) { - return (text == "\r\n" || text == "\r" || text == "\n"); - }; - this.getLine = function(row) { - return this.$lines[row] || ""; - }; - this.getLines = function(firstRow, lastRow) { - return this.$lines.slice(firstRow, lastRow + 1); - }; - this.getAllLines = function() { - return this.getLines(0, this.getLength()); - }; - this.getLength = function() { - return this.$lines.length; - }; - this.getTextRange = function(range) { - if (range.start.row == range.end.row) { - return this.getLine(range.start.row) - .substring(range.start.column, range.end.column); - } - var lines = this.getLines(range.start.row, range.end.row); - lines[0] = (lines[0] || "").substring(range.start.column); - var l = lines.length - 1; - if (range.end.row - range.start.row == l) - lines[l] = lines[l].substring(0, range.end.column); - return lines.join(this.getNewLineCharacter()); - }; - - this.$clipPosition = function(position) { - var length = this.getLength(); - if (position.row >= length) { - position.row = Math.max(0, length - 1); - position.column = this.getLine(length-1).length; - } else if (position.row < 0) - position.row = 0; - return position; - }; - this.insert = function(position, text) { - if (!text || text.length === 0) - return position; - - position = this.$clipPosition(position); - if (this.getLength() <= 1) - this.$detectNewLine(text); - - var lines = this.$split(text); - var firstLine = lines.splice(0, 1)[0]; - var lastLine = lines.length == 0 ? null : lines.splice(lines.length - 1, 1)[0]; - - position = this.insertInLine(position, firstLine); - if (lastLine !== null) { - position = this.insertNewLine(position); // terminate first line - position = this._insertLines(position.row, lines); - position = this.insertInLine(position, lastLine || ""); - } - return position; - }; - this.insertLines = function(row, lines) { - if (row >= this.getLength()) - return this.insert({row: row, column: 0}, "\n" + lines.join("\n")); - return this._insertLines(Math.max(row, 0), lines); - }; - this._insertLines = function(row, lines) { - if (lines.length == 0) - return {row: row, column: 0}; - if (lines.length > 0xFFFF) { - var end = this._insertLines(row, lines.slice(0xFFFF)); - lines = lines.slice(0, 0xFFFF); - } - - var args = [row, 0]; - args.push.apply(args, lines); - this.$lines.splice.apply(this.$lines, args); - - var range = new Range(row, 0, row + lines.length, 0); - var delta = { - action: "insertLines", - range: range, - lines: lines - }; - this._emit("change", { data: delta }); - return end || range.end; - }; - this.insertNewLine = function(position) { - position = this.$clipPosition(position); - var line = this.$lines[position.row] || ""; - - this.$lines[position.row] = line.substring(0, position.column); - this.$lines.splice(position.row + 1, 0, line.substring(position.column, line.length)); - - var end = { - row : position.row + 1, - column : 0 - }; - - var delta = { - action: "insertText", - range: Range.fromPoints(position, end), - text: this.getNewLineCharacter() - }; - this._emit("change", { data: delta }); - - return end; - }; - this.insertInLine = function(position, text) { - if (text.length == 0) - return position; - - var line = this.$lines[position.row] || ""; - - this.$lines[position.row] = line.substring(0, position.column) + text - + line.substring(position.column); - - var end = { - row : position.row, - column : position.column + text.length - }; - - var delta = { - action: "insertText", - range: Range.fromPoints(position, end), - text: text - }; - this._emit("change", { data: delta }); - - return end; - }; - this.remove = function(range) { - if (!range instanceof Range) - range = Range.fromPoints(range.start, range.end); - range.start = this.$clipPosition(range.start); - range.end = this.$clipPosition(range.end); - - if (range.isEmpty()) - return range.start; - - var firstRow = range.start.row; - var lastRow = range.end.row; - - if (range.isMultiLine()) { - var firstFullRow = range.start.column == 0 ? firstRow : firstRow + 1; - var lastFullRow = lastRow - 1; - - if (range.end.column > 0) - this.removeInLine(lastRow, 0, range.end.column); - - if (lastFullRow >= firstFullRow) - this._removeLines(firstFullRow, lastFullRow); - - if (firstFullRow != firstRow) { - this.removeInLine(firstRow, range.start.column, this.getLine(firstRow).length); - this.removeNewLine(range.start.row); - } - } - else { - this.removeInLine(firstRow, range.start.column, range.end.column); - } - return range.start; - }; - this.removeInLine = function(row, startColumn, endColumn) { - if (startColumn == endColumn) - return; - - var range = new Range(row, startColumn, row, endColumn); - var line = this.getLine(row); - var removed = line.substring(startColumn, endColumn); - var newLine = line.substring(0, startColumn) + line.substring(endColumn, line.length); - this.$lines.splice(row, 1, newLine); - - var delta = { - action: "removeText", - range: range, - text: removed - }; - this._emit("change", { data: delta }); - return range.start; - }; - this.removeLines = function(firstRow, lastRow) { - if (firstRow < 0 || lastRow >= this.getLength()) - return this.remove(new Range(firstRow, 0, lastRow + 1, 0)); - return this._removeLines(firstRow, lastRow); - }; - - this._removeLines = function(firstRow, lastRow) { - var range = new Range(firstRow, 0, lastRow + 1, 0); - var removed = this.$lines.splice(firstRow, lastRow - firstRow + 1); - - var delta = { - action: "removeLines", - range: range, - nl: this.getNewLineCharacter(), - lines: removed - }; - this._emit("change", { data: delta }); - return removed; - }; - this.removeNewLine = function(row) { - var firstLine = this.getLine(row); - var secondLine = this.getLine(row+1); - - var range = new Range(row, firstLine.length, row+1, 0); - var line = firstLine + secondLine; - - this.$lines.splice(row, 2, line); - - var delta = { - action: "removeText", - range: range, - text: this.getNewLineCharacter() - }; - this._emit("change", { data: delta }); - }; - this.replace = function(range, text) { - if (!range instanceof Range) - range = Range.fromPoints(range.start, range.end); - if (text.length == 0 && range.isEmpty()) - return range.start; - if (text == this.getTextRange(range)) - return range.end; - - this.remove(range); - if (text) { - var end = this.insert(range.start, text); - } - else { - end = range.start; - } - - return end; - }; - this.applyDeltas = function(deltas) { - for (var i=0; i=0; i--) { - var delta = deltas[i]; - - var range = Range.fromPoints(delta.range.start, delta.range.end); - - if (delta.action == "insertLines") - this._removeLines(range.start.row, range.end.row - 1); - else if (delta.action == "insertText") - this.remove(range); - else if (delta.action == "removeLines") - this._insertLines(range.start.row, delta.lines); - else if (delta.action == "removeText") - this.insert(range.start, delta.text); - } - }; - this.indexToPosition = function(index, startRow) { - var lines = this.$lines || this.getAllLines(); - var newlineLength = this.getNewLineCharacter().length; - for (var i = startRow || 0, l = lines.length; i < l; i++) { - index -= lines[i].length + newlineLength; - if (index < 0) - return {row: i, column: index + lines[i].length + newlineLength}; - } - return {row: l-1, column: lines[l-1].length}; - }; - this.positionToIndex = function(pos, startRow) { - var lines = this.$lines || this.getAllLines(); - var newlineLength = this.getNewLineCharacter().length; - var index = 0; - var row = Math.min(pos.row, lines.length); - for (var i = startRow || 0; i < row; ++i) - index += lines[i].length + newlineLength; - - return index + pos.column; - }; - -}).call(Document.prototype); - -exports.Document = Document; -}); - -ace.define('ace/lib/event_emitter', ['require', 'exports', 'module' ], function(require, exports, module) { - - -var EventEmitter = {}; -var stopPropagation = function() { this.propagationStopped = true; }; -var preventDefault = function() { this.defaultPrevented = true; }; - -EventEmitter._emit = -EventEmitter._dispatchEvent = function(eventName, e) { - this._eventRegistry || (this._eventRegistry = {}); - this._defaultHandlers || (this._defaultHandlers = {}); - - var listeners = this._eventRegistry[eventName] || []; - var defaultHandler = this._defaultHandlers[eventName]; - if (!listeners.length && !defaultHandler) - return; - - if (typeof e != "object" || !e) - e = {}; - - if (!e.type) - e.type = eventName; - if (!e.stopPropagation) - e.stopPropagation = stopPropagation; - if (!e.preventDefault) - e.preventDefault = preventDefault; - - listeners = listeners.slice(); - for (var i=0; i [" + this.end.row + "/" + this.end.column + "]"); - }; - - this.contains = function(row, column) { - return this.compare(row, column) == 0; - }; - this.compareRange = function(range) { - var cmp, - end = range.end, - start = range.start; - - cmp = this.compare(end.row, end.column); - if (cmp == 1) { - cmp = this.compare(start.row, start.column); - if (cmp == 1) { - return 2; - } else if (cmp == 0) { - return 1; - } else { - return 0; - } - } else if (cmp == -1) { - return -2; - } else { - cmp = this.compare(start.row, start.column); - if (cmp == -1) { - return -1; - } else if (cmp == 1) { - return 42; - } else { - return 0; - } - } - }; - this.comparePoint = function(p) { - return this.compare(p.row, p.column); - }; - this.containsRange = function(range) { - return this.comparePoint(range.start) == 0 && this.comparePoint(range.end) == 0; - }; - this.intersects = function(range) { - var cmp = this.compareRange(range); - return (cmp == -1 || cmp == 0 || cmp == 1); - }; - this.isEnd = function(row, column) { - return this.end.row == row && this.end.column == column; - }; - this.isStart = function(row, column) { - return this.start.row == row && this.start.column == column; - }; - this.setStart = function(row, column) { - if (typeof row == "object") { - this.start.column = row.column; - this.start.row = row.row; - } else { - this.start.row = row; - this.start.column = column; - } - }; - this.setEnd = function(row, column) { - if (typeof row == "object") { - this.end.column = row.column; - this.end.row = row.row; - } else { - this.end.row = row; - this.end.column = column; - } - }; - this.inside = function(row, column) { - if (this.compare(row, column) == 0) { - if (this.isEnd(row, column) || this.isStart(row, column)) { - return false; - } else { - return true; - } - } - return false; - }; - this.insideStart = function(row, column) { - if (this.compare(row, column) == 0) { - if (this.isEnd(row, column)) { - return false; - } else { - return true; - } - } - return false; - }; - this.insideEnd = function(row, column) { - if (this.compare(row, column) == 0) { - if (this.isStart(row, column)) { - return false; - } else { - return true; - } - } - return false; - }; - this.compare = function(row, column) { - if (!this.isMultiLine()) { - if (row === this.start.row) { - return column < this.start.column ? -1 : (column > this.end.column ? 1 : 0); - }; - } - - if (row < this.start.row) - return -1; - - if (row > this.end.row) - return 1; - - if (this.start.row === row) - return column >= this.start.column ? 0 : -1; - - if (this.end.row === row) - return column <= this.end.column ? 0 : 1; - - return 0; - }; - this.compareStart = function(row, column) { - if (this.start.row == row && this.start.column == column) { - return -1; - } else { - return this.compare(row, column); - } - }; - this.compareEnd = function(row, column) { - if (this.end.row == row && this.end.column == column) { - return 1; - } else { - return this.compare(row, column); - } - }; - this.compareInside = function(row, column) { - if (this.end.row == row && this.end.column == column) { - return 1; - } else if (this.start.row == row && this.start.column == column) { - return -1; - } else { - return this.compare(row, column); - } - }; - this.clipRows = function(firstRow, lastRow) { - if (this.end.row > lastRow) - var end = {row: lastRow + 1, column: 0}; - else if (this.end.row < firstRow) - var end = {row: firstRow, column: 0}; - - if (this.start.row > lastRow) - var start = {row: lastRow + 1, column: 0}; - else if (this.start.row < firstRow) - var start = {row: firstRow, column: 0}; - - return Range.fromPoints(start || this.start, end || this.end); - }; - this.extend = function(row, column) { - var cmp = this.compare(row, column); - - if (cmp == 0) - return this; - else if (cmp == -1) - var start = {row: row, column: column}; - else - var end = {row: row, column: column}; - - return Range.fromPoints(start || this.start, end || this.end); - }; - - this.isEmpty = function() { - return (this.start.row === this.end.row && this.start.column === this.end.column); - }; - this.isMultiLine = function() { - return (this.start.row !== this.end.row); - }; - this.clone = function() { - return Range.fromPoints(this.start, this.end); - }; - this.collapseRows = function() { - if (this.end.column == 0) - return new Range(this.start.row, 0, Math.max(this.start.row, this.end.row-1), 0) - else - return new Range(this.start.row, 0, this.end.row, 0) - }; - this.toScreenRange = function(session) { - var screenPosStart = session.documentToScreenPosition(this.start); - var screenPosEnd = session.documentToScreenPosition(this.end); - - return new Range( - screenPosStart.row, screenPosStart.column, - screenPosEnd.row, screenPosEnd.column - ); - }; - this.moveBy = function(row, column) { - this.start.row += row; - this.start.column += column; - this.end.row += row; - this.end.column += column; - }; - -}).call(Range.prototype); -Range.fromPoints = function(start, end) { - return new Range(start.row, start.column, end.row, end.column); -}; -Range.comparePoints = comparePoints; - -Range.comparePoints = function(p1, p2) { - return p1.row - p2.row || p1.column - p2.column; -}; - - -exports.Range = Range; -}); - -ace.define('ace/anchor', ['require', 'exports', 'module' , 'ace/lib/oop', 'ace/lib/event_emitter'], function(require, exports, module) { - - -var oop = require("./lib/oop"); -var EventEmitter = require("./lib/event_emitter").EventEmitter; - -var Anchor = exports.Anchor = function(doc, row, column) { - this.$onChange = this.onChange.bind(this); - this.attach(doc); - - if (typeof column == "undefined") - this.setPosition(row.row, row.column); - else - this.setPosition(row, column); -}; - -(function() { - - oop.implement(this, EventEmitter); - this.getPosition = function() { - return this.$clipPositionToDocument(this.row, this.column); - }; - this.getDocument = function() { - return this.document; - }; - this.$insertRight = false; - this.onChange = function(e) { - var delta = e.data; - var range = delta.range; - - if (range.start.row == range.end.row && range.start.row != this.row) - return; - - if (range.start.row > this.row) - return; - - if (range.start.row == this.row && range.start.column > this.column) - return; - - var row = this.row; - var column = this.column; - var start = range.start; - var end = range.end; - - if (delta.action === "insertText") { - if (start.row === row && start.column <= column) { - if (start.column === column && this.$insertRight) { - } else if (start.row === end.row) { - column += end.column - start.column; - } else { - column -= start.column; - row += end.row - start.row; - } - } else if (start.row !== end.row && start.row < row) { - row += end.row - start.row; - } - } else if (delta.action === "insertLines") { - if (start.row <= row) { - row += end.row - start.row; - } - } else if (delta.action === "removeText") { - if (start.row === row && start.column < column) { - if (end.column >= column) - column = start.column; - else - column = Math.max(0, column - (end.column - start.column)); - - } else if (start.row !== end.row && start.row < row) { - if (end.row === row) - column = Math.max(0, column - end.column) + start.column; - row -= (end.row - start.row); - } else if (end.row === row) { - row -= end.row - start.row; - column = Math.max(0, column - end.column) + start.column; - } - } else if (delta.action == "removeLines") { - if (start.row <= row) { - if (end.row <= row) - row -= end.row - start.row; - else { - row = start.row; - column = 0; - } - } - } - - this.setPosition(row, column, true); - }; - this.setPosition = function(row, column, noClip) { - var pos; - if (noClip) { - pos = { - row: row, - column: column - }; - } else { - pos = this.$clipPositionToDocument(row, column); - } - - if (this.row == pos.row && this.column == pos.column) - return; - - var old = { - row: this.row, - column: this.column - }; - - this.row = pos.row; - this.column = pos.column; - this._emit("change", { - old: old, - value: pos - }); - }; - this.detach = function() { - this.document.removeEventListener("change", this.$onChange); - }; - this.attach = function(doc) { - this.document = doc || this.document; - this.document.on("change", this.$onChange); - }; - this.$clipPositionToDocument = function(row, column) { - var pos = {}; - - if (row >= this.document.getLength()) { - pos.row = Math.max(0, this.document.getLength() - 1); - pos.column = this.document.getLine(pos.row).length; - } - else if (row < 0) { - pos.row = 0; - pos.column = 0; - } - else { - pos.row = row; - pos.column = Math.min(this.document.getLine(pos.row).length, Math.max(0, column)); - } - - if (column < 0) - pos.column = 0; - - return pos; - }; - -}).call(Anchor.prototype); - -}); - -ace.define('ace/lib/lang', ['require', 'exports', 'module' ], function(require, exports, module) { - - -exports.stringReverse = function(string) { - return string.split("").reverse().join(""); -}; - -exports.stringRepeat = function (string, count) { - var result = ''; - while (count > 0) { - if (count & 1) - result += string; - - if (count >>= 1) - string += string; - } - return result; -}; - -var trimBeginRegexp = /^\s\s*/; -var trimEndRegexp = /\s\s*$/; - -exports.stringTrimLeft = function (string) { - return string.replace(trimBeginRegexp, ''); -}; - -exports.stringTrimRight = function (string) { - return string.replace(trimEndRegexp, ''); -}; - -exports.copyObject = function(obj) { - var copy = {}; - for (var key in obj) { - copy[key] = obj[key]; - } - return copy; -}; - -exports.copyArray = function(array){ - var copy = []; - for (var i=0, l=array.length; i= 0 || __indexOf.call(COFFEE_KEYWORDS, id) >= 0)) { - tag = id.toUpperCase(); - if (tag === 'WHEN' && (_ref3 = this.tag(), __indexOf.call(LINE_BREAK, _ref3) >= 0)) { - tag = 'LEADING_WHEN'; - } else if (tag === 'FOR') { - this.seenFor = true; - } else if (tag === 'UNLESS') { - tag = 'IF'; - } else if (__indexOf.call(UNARY, tag) >= 0) { - tag = 'UNARY'; - } else if (__indexOf.call(RELATION, tag) >= 0) { - if (tag !== 'INSTANCEOF' && this.seenFor) { - tag = 'FOR' + tag; - this.seenFor = false; - } else { - tag = 'RELATION'; - if (this.value() === '!') { - poppedToken = this.tokens.pop(); - id = '!' + id; - } - } - } - } - if (__indexOf.call(JS_FORBIDDEN, id) >= 0) { - if (forcedIdentifier) { - tag = 'IDENTIFIER'; - id = new String(id); - id.reserved = true; - } else if (__indexOf.call(RESERVED, id) >= 0) { - this.error("reserved word \"" + id + "\""); - } - } - if (!forcedIdentifier) { - if (__indexOf.call(COFFEE_ALIASES, id) >= 0) { - id = COFFEE_ALIAS_MAP[id]; - } - tag = (function() { - switch (id) { - case '!': - return 'UNARY'; - case '==': - case '!=': - return 'COMPARE'; - case '&&': - case '||': - return 'LOGIC'; - case 'true': - case 'false': - return 'BOOL'; - case 'break': - case 'continue': - return 'STATEMENT'; - default: - return tag; - } - })(); - } - tagToken = this.token(tag, id, 0, idLength); - if (poppedToken) { - _ref4 = [poppedToken[2].first_line, poppedToken[2].first_column], tagToken[2].first_line = _ref4[0], tagToken[2].first_column = _ref4[1]; - } - if (colon) { - colonOffset = input.lastIndexOf(':'); - this.token(':', ':', colonOffset, colon.length); - } - return input.length; - }; - - Lexer.prototype.numberToken = function() { - var binaryLiteral, lexedLength, match, number, octalLiteral; - if (!(match = NUMBER.exec(this.chunk))) { - return 0; - } - number = match[0]; - if (/^0[BOX]/.test(number)) { - this.error("radix prefix '" + number + "' must be lowercase"); - } else if (/E/.test(number) && !/^0x/.test(number)) { - this.error("exponential notation '" + number + "' must be indicated with a lowercase 'e'"); - } else if (/^0\d*[89]/.test(number)) { - this.error("decimal literal '" + number + "' must not be prefixed with '0'"); - } else if (/^0\d+/.test(number)) { - this.error("octal literal '" + number + "' must be prefixed with '0o'"); - } - lexedLength = number.length; - if (octalLiteral = /^0o([0-7]+)/.exec(number)) { - number = '0x' + parseInt(octalLiteral[1], 8).toString(16); - } - if (binaryLiteral = /^0b([01]+)/.exec(number)) { - number = '0x' + parseInt(binaryLiteral[1], 2).toString(16); - } - this.token('NUMBER', number, 0, lexedLength); - return lexedLength; - }; - - Lexer.prototype.stringToken = function() { - var octalEsc, quote, string, trimmed; - switch (quote = this.chunk.charAt(0)) { - case "'": - string = SIMPLESTR.exec(this.chunk)[0]; - break; - case '"': - string = this.balancedString(this.chunk, '"'); - } - if (!string) { - return 0; - } - trimmed = this.removeNewlines(string.slice(1, -1)); - if (quote === '"' && 0 < string.indexOf('#{', 1)) { - this.interpolateString(trimmed, { - strOffset: 1, - lexedLength: string.length - }); - } else { - this.token('STRING', quote + this.escapeLines(trimmed) + quote, 0, string.length); - } - if (octalEsc = /^(?:\\.|[^\\])*\\(?:0[0-7]|[1-7])/.test(string)) { - this.error("octal escape sequences " + string + " are not allowed"); - } - return string.length; - }; - - Lexer.prototype.heredocToken = function() { - var doc, heredoc, match, quote; - if (!(match = HEREDOC.exec(this.chunk))) { - return 0; - } - heredoc = match[0]; - quote = heredoc.charAt(0); - doc = this.sanitizeHeredoc(match[2], { - quote: quote, - indent: null - }); - if (quote === '"' && 0 <= doc.indexOf('#{')) { - this.interpolateString(doc, { - heredoc: true, - strOffset: 3, - lexedLength: heredoc.length - }); - } else { - this.token('STRING', this.makeString(doc, quote, true), 0, heredoc.length); - } - return heredoc.length; - }; - - Lexer.prototype.commentToken = function() { - var comment, here, match; - if (!(match = this.chunk.match(COMMENT))) { - return 0; - } - comment = match[0], here = match[1]; - if (here) { - this.token('HERECOMMENT', this.sanitizeHeredoc(here, { - herecomment: true, - indent: repeat(' ', this.indent) - }), 0, comment.length); - } - return comment.length; - }; - - Lexer.prototype.jsToken = function() { - var match, script; - if (!(this.chunk.charAt(0) === '`' && (match = JSTOKEN.exec(this.chunk)))) { - return 0; - } - this.token('JS', (script = match[0]).slice(1, -1), 0, script.length); - return script.length; - }; - - Lexer.prototype.regexToken = function() { - var flags, length, match, prev, regex, _ref2, _ref3; - if (this.chunk.charAt(0) !== '/') { - return 0; - } - if (match = HEREGEX.exec(this.chunk)) { - length = this.heregexToken(match); - return length; - } - prev = last(this.tokens); - if (prev && (_ref2 = prev[0], __indexOf.call((prev.spaced ? NOT_REGEX : NOT_SPACED_REGEX), _ref2) >= 0)) { - return 0; - } - if (!(match = REGEX.exec(this.chunk))) { - return 0; - } - _ref3 = match, match = _ref3[0], regex = _ref3[1], flags = _ref3[2]; - if (regex.slice(0, 2) === '/*') { - this.error('regular expressions cannot begin with `*`'); - } - if (regex === '//') { - regex = '/(?:)/'; - } - this.token('REGEX', "" + regex + flags, 0, match.length); - return match.length; - }; - - Lexer.prototype.heregexToken = function(match) { - var body, flags, flagsOffset, heregex, plusToken, prev, re, tag, token, tokens, value, _i, _len, _ref2, _ref3, _ref4; - heregex = match[0], body = match[1], flags = match[2]; - if (0 > body.indexOf('#{')) { - re = this.escapeLines(body.replace(HEREGEX_OMIT, '$1$2').replace(/\//g, '\\/'), true); - if (re.match(/^\*/)) { - this.error('regular expressions cannot begin with `*`'); - } - this.token('REGEX', "/" + (re || '(?:)') + "/" + flags, 0, heregex.length); - return heregex.length; - } - this.token('IDENTIFIER', 'RegExp', 0, 0); - this.token('CALL_START', '(', 0, 0); - tokens = []; - _ref2 = this.interpolateString(body, { - regex: true - }); - for (_i = 0, _len = _ref2.length; _i < _len; _i++) { - token = _ref2[_i]; - tag = token[0], value = token[1]; - if (tag === 'TOKENS') { - tokens.push.apply(tokens, value); - } else if (tag === 'NEOSTRING') { - if (!(value = value.replace(HEREGEX_OMIT, '$1$2'))) { - continue; - } - value = value.replace(/\\/g, '\\\\'); - token[0] = 'STRING'; - token[1] = this.makeString(value, '"', true); - tokens.push(token); - } else { - this.error("Unexpected " + tag); - } - prev = last(this.tokens); - plusToken = ['+', '+']; - plusToken[2] = prev[2]; - tokens.push(plusToken); - } - tokens.pop(); - if (((_ref3 = tokens[0]) != null ? _ref3[0] : void 0) !== 'STRING') { - this.token('STRING', '""', 0, 0); - this.token('+', '+', 0, 0); - } - (_ref4 = this.tokens).push.apply(_ref4, tokens); - if (flags) { - flagsOffset = heregex.lastIndexOf(flags); - this.token(',', ',', flagsOffset, 0); - this.token('STRING', '"' + flags + '"', flagsOffset, flags.length); - } - this.token(')', ')', heregex.length - 1, 0); - return heregex.length; - }; - - Lexer.prototype.lineToken = function() { - var diff, indent, match, noNewlines, size; - if (!(match = MULTI_DENT.exec(this.chunk))) { - return 0; - } - indent = match[0]; - this.seenFor = false; - size = indent.length - 1 - indent.lastIndexOf('\n'); - noNewlines = this.unfinished(); - if (size - this.indebt === this.indent) { - if (noNewlines) { - this.suppressNewlines(); - } else { - this.newlineToken(0); - } - return indent.length; - } - if (size > this.indent) { - if (noNewlines) { - this.indebt = size - this.indent; - this.suppressNewlines(); - return indent.length; - } - if (!this.tokens.length) { - this.baseIndent = this.indent = size; - return indent.length; - } - diff = size - this.indent + this.outdebt; - this.token('INDENT', diff, indent.length - size, size); - this.indents.push(diff); - this.ends.push('OUTDENT'); - this.outdebt = this.indebt = 0; - } else if (size < this.baseIndent) { - this.error('missing indentation', indent.length); - } else { - this.indebt = 0; - this.outdentToken(this.indent - size, noNewlines, indent.length); - } - this.indent = size; - return indent.length; - }; - - Lexer.prototype.outdentToken = function(moveOut, noNewlines, outdentLength) { - var dent, len; - while (moveOut > 0) { - len = this.indents.length - 1; - if (this.indents[len] === void 0) { - moveOut = 0; - } else if (this.indents[len] === this.outdebt) { - moveOut -= this.outdebt; - this.outdebt = 0; - } else if (this.indents[len] < this.outdebt) { - this.outdebt -= this.indents[len]; - moveOut -= this.indents[len]; - } else { - dent = this.indents.pop() + this.outdebt; - moveOut -= dent; - this.outdebt = 0; - this.pair('OUTDENT'); - this.token('OUTDENT', dent, 0, outdentLength); - } - } - if (dent) { - this.outdebt -= moveOut; - } - while (this.value() === ';') { - this.tokens.pop(); - } - if (!(this.tag() === 'TERMINATOR' || noNewlines)) { - this.token('TERMINATOR', '\n', outdentLength, 0); - } - return this; - }; - - Lexer.prototype.whitespaceToken = function() { - var match, nline, prev; - if (!((match = WHITESPACE.exec(this.chunk)) || (nline = this.chunk.charAt(0) === '\n'))) { - return 0; - } - prev = last(this.tokens); - if (prev) { - prev[match ? 'spaced' : 'newLine'] = true; - } - if (match) { - return match[0].length; - } else { - return 0; - } - }; - - Lexer.prototype.newlineToken = function(offset) { - while (this.value() === ';') { - this.tokens.pop(); - } - if (this.tag() !== 'TERMINATOR') { - this.token('TERMINATOR', '\n', offset, 0); - } - return this; - }; - - Lexer.prototype.suppressNewlines = function() { - if (this.value() === '\\') { - this.tokens.pop(); - } - return this; - }; - - Lexer.prototype.literalToken = function() { - var match, prev, tag, value, _ref2, _ref3, _ref4, _ref5; - if (match = OPERATOR.exec(this.chunk)) { - value = match[0]; - if (CODE.test(value)) { - this.tagParameters(); - } - } else { - value = this.chunk.charAt(0); - } - tag = value; - prev = last(this.tokens); - if (value === '=' && prev) { - if (!prev[1].reserved && (_ref2 = prev[1], __indexOf.call(JS_FORBIDDEN, _ref2) >= 0)) { - this.error("reserved word \"" + (this.value()) + "\" can't be assigned"); - } - if ((_ref3 = prev[1]) === '||' || _ref3 === '&&') { - prev[0] = 'COMPOUND_ASSIGN'; - prev[1] += '='; - return value.length; - } - } - if (value === ';') { - this.seenFor = false; - tag = 'TERMINATOR'; - } else if (__indexOf.call(MATH, value) >= 0) { - tag = 'MATH'; - } else if (__indexOf.call(COMPARE, value) >= 0) { - tag = 'COMPARE'; - } else if (__indexOf.call(COMPOUND_ASSIGN, value) >= 0) { - tag = 'COMPOUND_ASSIGN'; - } else if (__indexOf.call(UNARY, value) >= 0) { - tag = 'UNARY'; - } else if (__indexOf.call(SHIFT, value) >= 0) { - tag = 'SHIFT'; - } else if (__indexOf.call(LOGIC, value) >= 0 || value === '?' && (prev != null ? prev.spaced : void 0)) { - tag = 'LOGIC'; - } else if (prev && !prev.spaced) { - if (value === '(' && (_ref4 = prev[0], __indexOf.call(CALLABLE, _ref4) >= 0)) { - if (prev[0] === '?') { - prev[0] = 'FUNC_EXIST'; - } - tag = 'CALL_START'; - } else if (value === '[' && (_ref5 = prev[0], __indexOf.call(INDEXABLE, _ref5) >= 0)) { - tag = 'INDEX_START'; - switch (prev[0]) { - case '?': - prev[0] = 'INDEX_SOAK'; - } - } - } - switch (value) { - case '(': - case '{': - case '[': - this.ends.push(INVERSES[value]); - break; - case ')': - case '}': - case ']': - this.pair(value); - } - this.token(tag, value); - return value.length; - }; - - Lexer.prototype.sanitizeHeredoc = function(doc, options) { - var attempt, herecomment, indent, match, _ref2; - indent = options.indent, herecomment = options.herecomment; - if (herecomment) { - if (HEREDOC_ILLEGAL.test(doc)) { - this.error("block comment cannot contain \"*/\", starting"); - } - if (doc.indexOf('\n') < 0) { - return doc; - } - } else { - while (match = HEREDOC_INDENT.exec(doc)) { - attempt = match[1]; - if (indent === null || (0 < (_ref2 = attempt.length) && _ref2 < indent.length)) { - indent = attempt; - } - } - } - if (indent) { - doc = doc.replace(RegExp("\\n" + indent, "g"), '\n'); - } - if (!herecomment) { - doc = doc.replace(/^\n/, ''); - } - return doc; - }; - - Lexer.prototype.tagParameters = function() { - var i, stack, tok, tokens; - if (this.tag() !== ')') { - return this; - } - stack = []; - tokens = this.tokens; - i = tokens.length; - tokens[--i][0] = 'PARAM_END'; - while (tok = tokens[--i]) { - switch (tok[0]) { - case ')': - stack.push(tok); - break; - case '(': - case 'CALL_START': - if (stack.length) { - stack.pop(); - } else if (tok[0] === '(') { - tok[0] = 'PARAM_START'; - return this; - } else { - return this; - } - } - } - return this; - }; - - Lexer.prototype.closeIndentation = function() { - return this.outdentToken(this.indent); - }; - - Lexer.prototype.balancedString = function(str, end) { - var continueCount, i, letter, match, prev, stack, _i, _ref2; - continueCount = 0; - stack = [end]; - for (i = _i = 1, _ref2 = str.length; 1 <= _ref2 ? _i < _ref2 : _i > _ref2; i = 1 <= _ref2 ? ++_i : --_i) { - if (continueCount) { - --continueCount; - continue; - } - switch (letter = str.charAt(i)) { - case '\\': - ++continueCount; - continue; - case end: - stack.pop(); - if (!stack.length) { - return str.slice(0, +i + 1 || 9e9); - } - end = stack[stack.length - 1]; - continue; - } - if (end === '}' && (letter === '"' || letter === "'")) { - stack.push(end = letter); - } else if (end === '}' && letter === '/' && (match = HEREGEX.exec(str.slice(i)) || REGEX.exec(str.slice(i)))) { - continueCount += match[0].length - 1; - } else if (end === '}' && letter === '{') { - stack.push(end = '}'); - } else if (end === '"' && prev === '#' && letter === '{') { - stack.push(end = '}'); - } - prev = letter; - } - return this.error("missing " + (stack.pop()) + ", starting"); - }; - - Lexer.prototype.interpolateString = function(str, options) { - var column, expr, heredoc, i, inner, interpolated, len, letter, lexedLength, line, locationToken, nested, offsetInChunk, pi, plusToken, popped, regex, rparen, strOffset, tag, token, tokens, value, _i, _len, _ref2, _ref3, _ref4; - if (options == null) { - options = {}; - } - heredoc = options.heredoc, regex = options.regex, offsetInChunk = options.offsetInChunk, strOffset = options.strOffset, lexedLength = options.lexedLength; - offsetInChunk = offsetInChunk || 0; - strOffset = strOffset || 0; - lexedLength = lexedLength || str.length; - tokens = []; - pi = 0; - i = -1; - while (letter = str.charAt(i += 1)) { - if (letter === '\\') { - i += 1; - continue; - } - if (!(letter === '#' && str.charAt(i + 1) === '{' && (expr = this.balancedString(str.slice(i + 1), '}')))) { - continue; - } - if (pi < i) { - tokens.push(this.makeToken('NEOSTRING', str.slice(pi, i), strOffset + pi)); - } - inner = expr.slice(1, -1); - if (inner.length) { - _ref2 = this.getLineAndColumnFromChunk(strOffset + i + 1), line = _ref2[0], column = _ref2[1]; - nested = new Lexer().tokenize(inner, { - line: line, - column: column, - rewrite: false - }); - popped = nested.pop(); - if (((_ref3 = nested[0]) != null ? _ref3[0] : void 0) === 'TERMINATOR') { - popped = nested.shift(); - } - if (len = nested.length) { - if (len > 1) { - nested.unshift(this.makeToken('(', '(', strOffset + i + 1, 0)); - nested.push(this.makeToken(')', ')', strOffset + i + 1 + inner.length, 0)); - } - tokens.push(['TOKENS', nested]); - } - } - i += expr.length; - pi = i + 1; - } - if ((i > pi && pi < str.length)) { - tokens.push(this.makeToken('NEOSTRING', str.slice(pi), strOffset + pi)); - } - if (regex) { - return tokens; - } - if (!tokens.length) { - return this.token('STRING', '""', offsetInChunk, lexedLength); - } - if (tokens[0][0] !== 'NEOSTRING') { - tokens.unshift(this.makeToken('NEOSTRING', '', offsetInChunk)); - } - if (interpolated = tokens.length > 1) { - this.token('(', '(', offsetInChunk, 0); - } - for (i = _i = 0, _len = tokens.length; _i < _len; i = ++_i) { - token = tokens[i]; - tag = token[0], value = token[1]; - if (i) { - if (i) { - plusToken = this.token('+', '+'); - } - locationToken = tag === 'TOKENS' ? value[0] : token; - plusToken[2] = { - first_line: locationToken[2].first_line, - first_column: locationToken[2].first_column, - last_line: locationToken[2].first_line, - last_column: locationToken[2].first_column - }; - } - if (tag === 'TOKENS') { - (_ref4 = this.tokens).push.apply(_ref4, value); - } else if (tag === 'NEOSTRING') { - token[0] = 'STRING'; - token[1] = this.makeString(value, '"', heredoc); - this.tokens.push(token); - } else { - this.error("Unexpected " + tag); - } - } - if (interpolated) { - rparen = this.makeToken(')', ')', offsetInChunk + lexedLength, 0); - rparen.stringEnd = true; - this.tokens.push(rparen); - } - return tokens; - }; - - Lexer.prototype.pair = function(tag) { - var size, wanted; - if (tag !== (wanted = last(this.ends))) { - if ('OUTDENT' !== wanted) { - this.error("unmatched " + tag); - } - this.indent -= size = last(this.indents); - this.outdentToken(size, true); - return this.pair(tag); - } - return this.ends.pop(); - }; - - Lexer.prototype.getLineAndColumnFromChunk = function(offset) { - var column, lineCount, lines, string; - if (offset === 0) { - return [this.chunkLine, this.chunkColumn]; - } - if (offset >= this.chunk.length) { - string = this.chunk; - } else { - string = this.chunk.slice(0, +(offset - 1) + 1 || 9e9); - } - lineCount = count(string, '\n'); - column = this.chunkColumn; - if (lineCount > 0) { - lines = string.split('\n'); - column = last(lines).length; - } else { - column += string.length; - } - return [this.chunkLine + lineCount, column]; - }; - - Lexer.prototype.makeToken = function(tag, value, offsetInChunk, length) { - var lastCharacter, locationData, token, _ref2, _ref3; - if (offsetInChunk == null) { - offsetInChunk = 0; - } - if (length == null) { - length = value.length; - } - locationData = {}; - _ref2 = this.getLineAndColumnFromChunk(offsetInChunk), locationData.first_line = _ref2[0], locationData.first_column = _ref2[1]; - lastCharacter = Math.max(0, length - 1); - _ref3 = this.getLineAndColumnFromChunk(offsetInChunk + lastCharacter), locationData.last_line = _ref3[0], locationData.last_column = _ref3[1]; - token = [tag, value, locationData]; - return token; - }; - - Lexer.prototype.token = function(tag, value, offsetInChunk, length) { - var token; - token = this.makeToken(tag, value, offsetInChunk, length); - this.tokens.push(token); - return token; - }; - - Lexer.prototype.tag = function(index, tag) { - var tok; - return (tok = last(this.tokens, index)) && (tag ? tok[0] = tag : tok[0]); - }; - - Lexer.prototype.value = function(index, val) { - var tok; - return (tok = last(this.tokens, index)) && (val ? tok[1] = val : tok[1]); - }; - - Lexer.prototype.unfinished = function() { - var _ref2; - return LINE_CONTINUER.test(this.chunk) || ((_ref2 = this.tag()) === '\\' || _ref2 === '.' || _ref2 === '?.' || _ref2 === '?::' || _ref2 === 'UNARY' || _ref2 === 'MATH' || _ref2 === '+' || _ref2 === '-' || _ref2 === 'SHIFT' || _ref2 === 'RELATION' || _ref2 === 'COMPARE' || _ref2 === 'LOGIC' || _ref2 === 'THROW' || _ref2 === 'EXTENDS'); - }; - - Lexer.prototype.removeNewlines = function(str) { - return str.replace(/^\s*\n\s*/, '').replace(/([^\\]|\\\\)\s*\n\s*$/, '$1'); - }; - - Lexer.prototype.escapeLines = function(str, heredoc) { - str = str.replace(/\\[^\S\n]*(\n|\\)\s*/g, function(escaped, character) { - if (character === '\n') { - return ''; - } else { - return escaped; - } - }); - if (heredoc) { - return str.replace(MULTILINER, '\\n'); - } else { - return str.replace(/\s*\n\s*/g, ' '); - } - }; - - Lexer.prototype.makeString = function(body, quote, heredoc) { - if (!body) { - return quote + quote; - } - body = body.replace(RegExp("\\\\(" + quote + "|\\\\)", "g"), function(match, contents) { - if (contents === quote) { - return contents; - } else { - return match; - } - }); - body = body.replace(RegExp("" + quote, "g"), '\\$&'); - return quote + this.escapeLines(body, heredoc) + quote; - }; - - Lexer.prototype.error = function(message, offset) { - var first_column, first_line, _ref2; - if (offset == null) { - offset = 0; - } - _ref2 = this.getLineAndColumnFromChunk(offset), first_line = _ref2[0], first_column = _ref2[1]; - return throwSyntaxError(message, { - first_line: first_line, - first_column: first_column - }); - }; - - return Lexer; - - })(); - - JS_KEYWORDS = ['true', 'false', 'null', 'this', 'new', 'delete', 'typeof', 'in', 'instanceof', 'return', 'throw', 'break', 'continue', 'debugger', 'if', 'else', 'switch', 'for', 'while', 'do', 'try', 'catch', 'finally', 'class', 'extends', 'super']; - - COFFEE_KEYWORDS = ['undefined', 'then', 'unless', 'until', 'loop', 'of', 'by', 'when']; - - COFFEE_ALIAS_MAP = { - and: '&&', - or: '||', - is: '==', - isnt: '!=', - not: '!', - yes: 'true', - no: 'false', - on: 'true', - off: 'false' - }; - - COFFEE_ALIASES = (function() { - var _results; - _results = []; - for (key in COFFEE_ALIAS_MAP) { - _results.push(key); - } - return _results; - })(); - - COFFEE_KEYWORDS = COFFEE_KEYWORDS.concat(COFFEE_ALIASES); - - RESERVED = ['case', 'default', 'function', 'var', 'void', 'with', 'const', 'let', 'enum', 'export', 'import', 'native', '__hasProp', '__extends', '__slice', '__bind', '__indexOf', 'implements', 'interface', 'package', 'private', 'protected', 'public', 'static', 'yield']; - - STRICT_PROSCRIBED = ['arguments', 'eval']; - - JS_FORBIDDEN = JS_KEYWORDS.concat(RESERVED).concat(STRICT_PROSCRIBED); - - exports.RESERVED = RESERVED.concat(JS_KEYWORDS).concat(COFFEE_KEYWORDS).concat(STRICT_PROSCRIBED); - - exports.STRICT_PROSCRIBED = STRICT_PROSCRIBED; - - BOM = 65279; - - IDENTIFIER = /^([$A-Za-z_\x7f-\uffff][$\w\x7f-\uffff]*)([^\n\S]*:(?!:))?/; - - NUMBER = /^0b[01]+|^0o[0-7]+|^0x[\da-f]+|^\d*\.?\d+(?:e[+-]?\d+)?/i; - - HEREDOC = /^("""|''')((?:\\[\s\S]|[^\\])*?)(?:\n[^\n\S]*)?\1/; - - OPERATOR = /^(?:[-=]>|[-+*\/%<>&|^!?=]=|>>>=?|([-+:])\1|([&|<>])\2=?|\?(\.|::)|\.{2,3})/; - - WHITESPACE = /^[^\n\S]+/; - - COMMENT = /^###([^#][\s\S]*?)(?:###[^\n\S]*|###$)|^(?:\s*#(?!##[^#]).*)+/; - - CODE = /^[-=]>/; - - MULTI_DENT = /^(?:\n[^\n\S]*)+/; - - SIMPLESTR = /^'[^\\']*(?:\\[\s\S][^\\']*)*'/; - - JSTOKEN = /^`[^\\`]*(?:\\.[^\\`]*)*`/; - - REGEX = /^(\/(?![\s=])[^[\/\n\\]*(?:(?:\\[\s\S]|\[[^\]\n\\]*(?:\\[\s\S][^\]\n\\]*)*])[^[\/\n\\]*)*\/)([imgy]{0,4})(?!\w)/; - - HEREGEX = /^\/{3}((?:\\?[\s\S])+?)\/{3}([imgy]{0,4})(?!\w)/; - - HEREGEX_OMIT = /((?:\\\\)+)|\\(\s|\/)|\s+(?:#.*)?/g; - - MULTILINER = /\n/g; - - HEREDOC_INDENT = /\n+([^\n\S]*)/g; - - HEREDOC_ILLEGAL = /\*\//; - - LINE_CONTINUER = /^\s*(?:,|\??\.(?![.\d])|::)/; - - TRAILING_SPACES = /\s+$/; - - COMPOUND_ASSIGN = ['-=', '+=', '/=', '*=', '%=', '||=', '&&=', '?=', '<<=', '>>=', '>>>=', '&=', '^=', '|=']; - - UNARY = ['!', '~', 'NEW', 'TYPEOF', 'DELETE', 'DO']; - - LOGIC = ['&&', '||', '&', '|', '^']; - - SHIFT = ['<<', '>>', '>>>']; - - COMPARE = ['==', '!=', '<', '>', '<=', '>=']; - - MATH = ['*', '/', '%']; - - RELATION = ['IN', 'OF', 'INSTANCEOF']; - - BOOL = ['TRUE', 'FALSE']; - - NOT_REGEX = ['NUMBER', 'REGEX', 'BOOL', 'NULL', 'UNDEFINED', '++', '--']; - - NOT_SPACED_REGEX = NOT_REGEX.concat(')', '}', 'THIS', 'IDENTIFIER', 'STRING', ']'); - - CALLABLE = ['IDENTIFIER', 'STRING', 'REGEX', ')', ']', '}', '?', '::', '@', 'THIS', 'SUPER']; - - INDEXABLE = CALLABLE.concat('NUMBER', 'BOOL', 'NULL', 'UNDEFINED'); - - LINE_BREAK = ['INDENT', 'OUTDENT', 'TERMINATOR']; - - -}); - -ace.define('ace/mode/coffee/rewriter', ['require', 'exports', 'module' ], function(require, exports, module) { - - var BALANCED_PAIRS, CALL_CLOSERS, EXPRESSION_CLOSE, EXPRESSION_END, EXPRESSION_START, IMPLICIT_CALL, IMPLICIT_END, IMPLICIT_FUNC, IMPLICIT_UNSPACED_CALL, INVERSES, LINEBREAKS, SINGLE_CLOSERS, SINGLE_LINERS, generate, left, rite, _i, _len, _ref, - __indexOf = [].indexOf || function(item) { for (var i = 0, l = this.length; i < l; i++) { if (i in this && this[i] === item) return i; } return -1; }, - __slice = [].slice; - - generate = function(tag, value) { - var tok; - tok = [tag, value]; - tok.generated = true; - return tok; - }; - - exports.Rewriter = (function() { - function Rewriter() {} - - Rewriter.prototype.rewrite = function(tokens) { - this.tokens = tokens; - this.removeLeadingNewlines(); - this.closeOpenCalls(); - this.closeOpenIndexes(); - this.normalizeLines(); - this.tagPostfixConditionals(); - this.addImplicitBracesAndParens(); - this.addLocationDataToGeneratedTokens(); - return this.tokens; - }; - - Rewriter.prototype.scanTokens = function(block) { - var i, token, tokens; - tokens = this.tokens; - i = 0; - while (token = tokens[i]) { - i += block.call(this, token, i, tokens); - } - return true; - }; - - Rewriter.prototype.detectEnd = function(i, condition, action) { - var levels, token, tokens, _ref, _ref1; - tokens = this.tokens; - levels = 0; - while (token = tokens[i]) { - if (levels === 0 && condition.call(this, token, i)) { - return action.call(this, token, i); - } - if (!token || levels < 0) { - return action.call(this, token, i - 1); - } - if (_ref = token[0], __indexOf.call(EXPRESSION_START, _ref) >= 0) { - levels += 1; - } else if (_ref1 = token[0], __indexOf.call(EXPRESSION_END, _ref1) >= 0) { - levels -= 1; - } - i += 1; - } - return i - 1; - }; - - Rewriter.prototype.removeLeadingNewlines = function() { - var i, tag, _i, _len, _ref; - _ref = this.tokens; - for (i = _i = 0, _len = _ref.length; _i < _len; i = ++_i) { - tag = _ref[i][0]; - if (tag !== 'TERMINATOR') { - break; - } - } - if (i) { - return this.tokens.splice(0, i); - } - }; - - Rewriter.prototype.closeOpenCalls = function() { - var action, condition; - condition = function(token, i) { - var _ref; - return ((_ref = token[0]) === ')' || _ref === 'CALL_END') || token[0] === 'OUTDENT' && this.tag(i - 1) === ')'; - }; - action = function(token, i) { - return this.tokens[token[0] === 'OUTDENT' ? i - 1 : i][0] = 'CALL_END'; - }; - return this.scanTokens(function(token, i) { - if (token[0] === 'CALL_START') { - this.detectEnd(i + 1, condition, action); - } - return 1; - }); - }; - - Rewriter.prototype.closeOpenIndexes = function() { - var action, condition; - condition = function(token, i) { - var _ref; - return (_ref = token[0]) === ']' || _ref === 'INDEX_END'; - }; - action = function(token, i) { - return token[0] = 'INDEX_END'; - }; - return this.scanTokens(function(token, i) { - if (token[0] === 'INDEX_START') { - this.detectEnd(i + 1, condition, action); - } - return 1; - }); - }; - - Rewriter.prototype.matchTags = function() { - var fuzz, i, j, pattern, _i, _ref, _ref1; - i = arguments[0], pattern = 2 <= arguments.length ? __slice.call(arguments, 1) : []; - fuzz = 0; - for (j = _i = 0, _ref = pattern.length; 0 <= _ref ? _i < _ref : _i > _ref; j = 0 <= _ref ? ++_i : --_i) { - while (this.tag(i + j + fuzz) === 'HERECOMMENT') { - fuzz += 2; - } - if (pattern[j] == null) { - continue; - } - if (typeof pattern[j] === 'string') { - pattern[j] = [pattern[j]]; - } - if (_ref1 = this.tag(i + j + fuzz), __indexOf.call(pattern[j], _ref1) < 0) { - return false; - } - } - return true; - }; - - Rewriter.prototype.looksObjectish = function(j) { - return this.matchTags(j, '@', null, ':') || this.matchTags(j, null, ':'); - }; - - Rewriter.prototype.findTagsBackwards = function(i, tags) { - var backStack, _ref, _ref1, _ref2, _ref3, _ref4, _ref5; - backStack = []; - while (i >= 0 && (backStack.length || (_ref2 = this.tag(i), __indexOf.call(tags, _ref2) < 0) && ((_ref3 = this.tag(i), __indexOf.call(EXPRESSION_START, _ref3) < 0) || this.tokens[i].generated) && (_ref4 = this.tag(i), __indexOf.call(LINEBREAKS, _ref4) < 0))) { - if (_ref = this.tag(i), __indexOf.call(EXPRESSION_END, _ref) >= 0) { - backStack.push(this.tag(i)); - } - if ((_ref1 = this.tag(i), __indexOf.call(EXPRESSION_START, _ref1) >= 0) && backStack.length) { - backStack.pop(); - } - i -= 1; - } - return _ref5 = this.tag(i), __indexOf.call(tags, _ref5) >= 0; - }; - - Rewriter.prototype.addImplicitBracesAndParens = function() { - var stack; - stack = []; - return this.scanTokens(function(token, i, tokens) { - var endAllImplicitCalls, endImplicitCall, endImplicitObject, forward, inImplicit, inImplicitCall, inImplicitControl, inImplicitObject, nextTag, offset, prevTag, prevToken, s, sameLine, stackIdx, stackTag, stackTop, startIdx, startImplicitCall, startImplicitObject, startsLine, tag, _ref, _ref1, _ref2, _ref3, _ref4, _ref5; - tag = token[0]; - prevTag = (prevToken = i > 0 ? tokens[i - 1] : [])[0]; - nextTag = (i < tokens.length - 1 ? tokens[i + 1] : [])[0]; - stackTop = function() { - return stack[stack.length - 1]; - }; - startIdx = i; - forward = function(n) { - return i - startIdx + n; - }; - inImplicit = function() { - var _ref, _ref1; - return (_ref = stackTop()) != null ? (_ref1 = _ref[2]) != null ? _ref1.ours : void 0 : void 0; - }; - inImplicitCall = function() { - var _ref; - return inImplicit() && ((_ref = stackTop()) != null ? _ref[0] : void 0) === '('; - }; - inImplicitObject = function() { - var _ref; - return inImplicit() && ((_ref = stackTop()) != null ? _ref[0] : void 0) === '{'; - }; - inImplicitControl = function() { - var _ref; - return inImplicit && ((_ref = stackTop()) != null ? _ref[0] : void 0) === 'CONTROL'; - }; - startImplicitCall = function(j) { - var idx; - idx = j != null ? j : i; - stack.push([ - '(', idx, { - ours: true - } - ]); - tokens.splice(idx, 0, generate('CALL_START', '(')); - if (j == null) { - return i += 1; - } - }; - endImplicitCall = function() { - stack.pop(); - tokens.splice(i, 0, generate('CALL_END', ')')); - return i += 1; - }; - endAllImplicitCalls = function() { - while (inImplicitCall()) { - endImplicitCall(); - } - }; - startImplicitObject = function(j, startsLine) { - var idx; - if (startsLine == null) { - startsLine = true; - } - idx = j != null ? j : i; - stack.push([ - '{', idx, { - sameLine: true, - startsLine: startsLine, - ours: true - } - ]); - tokens.splice(idx, 0, generate('{', generate(new String('{')))); - if (j == null) { - return i += 1; - } - }; - endImplicitObject = function(j) { - j = j != null ? j : i; - stack.pop(); - tokens.splice(j, 0, generate('}', '}')); - return i += 1; - }; - if (inImplicitCall() && (tag === 'IF' || tag === 'TRY' || tag === 'FINALLY' || tag === 'CATCH' || tag === 'CLASS' || tag === 'SWITCH')) { - stack.push([ - 'CONTROL', i, { - ours: true - } - ]); - return forward(1); - } - if (tag === 'INDENT' && inImplicit()) { - if (prevTag !== '=>' && prevTag !== '->' && prevTag !== '[' && prevTag !== '(' && prevTag !== ',' && prevTag !== '{' && prevTag !== 'TRY' && prevTag !== 'ELSE' && prevTag !== '=') { - while (inImplicitCall()) { - endImplicitCall(); - } - } - if (inImplicitControl()) { - stack.pop(); - } - stack.push([tag, i]); - return forward(1); - } - if (__indexOf.call(EXPRESSION_START, tag) >= 0) { - stack.push([tag, i]); - return forward(1); - } - if (__indexOf.call(EXPRESSION_END, tag) >= 0) { - while (inImplicit()) { - if (inImplicitCall()) { - endImplicitCall(); - } else if (inImplicitObject()) { - endImplicitObject(); - } else { - stack.pop(); - } - } - stack.pop(); - } - if ((__indexOf.call(IMPLICIT_FUNC, tag) >= 0 && token.spaced && !token.stringEnd || tag === '?' && i > 0 && !tokens[i - 1].spaced) && (__indexOf.call(IMPLICIT_CALL, nextTag) >= 0 || __indexOf.call(IMPLICIT_UNSPACED_CALL, nextTag) >= 0 && !((_ref = tokens[i + 1]) != null ? _ref.spaced : void 0) && !((_ref1 = tokens[i + 1]) != null ? _ref1.newLine : void 0))) { - if (tag === '?') { - tag = token[0] = 'FUNC_EXIST'; - } - startImplicitCall(i + 1); - return forward(2); - } - if (__indexOf.call(IMPLICIT_FUNC, tag) >= 0 && this.matchTags(i + 1, 'INDENT', null, ':') && !this.findTagsBackwards(i, ['CLASS', 'EXTENDS', 'IF', 'CATCH', 'SWITCH', 'LEADING_WHEN', 'FOR', 'WHILE', 'UNTIL'])) { - startImplicitCall(i + 1); - stack.push(['INDENT', i + 2]); - return forward(3); - } - if (tag === ':') { - if (this.tag(i - 2) === '@') { - s = i - 2; - } else { - s = i - 1; - } - while (this.tag(s - 2) === 'HERECOMMENT') { - s -= 2; - } - startsLine = s === 0 || (_ref2 = this.tag(s - 1), __indexOf.call(LINEBREAKS, _ref2) >= 0) || tokens[s - 1].newLine; - if (stackTop()) { - _ref3 = stackTop(), stackTag = _ref3[0], stackIdx = _ref3[1]; - if ((stackTag === '{' || stackTag === 'INDENT' && this.tag(stackIdx - 1) === '{') && (startsLine || this.tag(s - 1) === ',' || this.tag(s - 1) === '{')) { - return forward(1); - } - } - startImplicitObject(s, !!startsLine); - return forward(2); - } - if (inImplicitCall() && __indexOf.call(CALL_CLOSERS, tag) >= 0) { - if (prevTag === 'OUTDENT') { - endImplicitCall(); - return forward(1); - } - if (prevToken.newLine) { - endAllImplicitCalls(); - return forward(1); - } - } - if (inImplicitObject() && __indexOf.call(LINEBREAKS, tag) >= 0) { - stackTop()[2].sameLine = false; - } - if (__indexOf.call(IMPLICIT_END, tag) >= 0) { - while (inImplicit()) { - _ref4 = stackTop(), stackTag = _ref4[0], stackIdx = _ref4[1], (_ref5 = _ref4[2], sameLine = _ref5.sameLine, startsLine = _ref5.startsLine); - if (inImplicitCall() && prevTag !== ',') { - endImplicitCall(); - } else if (inImplicitObject() && sameLine && !startsLine) { - endImplicitObject(); - } else if (inImplicitObject() && tag === 'TERMINATOR' && prevTag !== ',' && !(startsLine && this.looksObjectish(i + 1))) { - endImplicitObject(); - } else { - break; - } - } - } - if (tag === ',' && !this.looksObjectish(i + 1) && inImplicitObject() && (nextTag !== 'TERMINATOR' || !this.looksObjectish(i + 2))) { - offset = nextTag === 'OUTDENT' ? 1 : 0; - while (inImplicitObject()) { - endImplicitObject(i + offset); - } - } - return forward(1); - }); - }; - - Rewriter.prototype.addLocationDataToGeneratedTokens = function() { - return this.scanTokens(function(token, i, tokens) { - var column, line, nextLocation, prevLocation, _ref, _ref1; - if (token[2]) { - return 1; - } - if (!(token.generated || token.explicit)) { - return 1; - } - if (token[0] === '{' && (nextLocation = (_ref = tokens[i + 1]) != null ? _ref[2] : void 0)) { - line = nextLocation.first_line, column = nextLocation.first_column; - } else if (prevLocation = (_ref1 = tokens[i - 1]) != null ? _ref1[2] : void 0) { - line = prevLocation.last_line, column = prevLocation.last_column; - } else { - line = column = 0; - } - token[2] = { - first_line: line, - first_column: column, - last_line: line, - last_column: column - }; - return 1; - }); - }; - - Rewriter.prototype.normalizeLines = function() { - var action, condition, indent, outdent, starter; - starter = indent = outdent = null; - condition = function(token, i) { - var _ref, _ref1, _ref2, _ref3; - return token[1] !== ';' && (_ref = token[0], __indexOf.call(SINGLE_CLOSERS, _ref) >= 0) && !(token[0] === 'TERMINATOR' && (_ref1 = this.tag(i + 1), __indexOf.call(EXPRESSION_CLOSE, _ref1) >= 0)) && !(token[0] === 'ELSE' && starter !== 'THEN') && !(((_ref2 = token[0]) === 'CATCH' || _ref2 === 'FINALLY') && (starter === '->' || starter === '=>')) || (_ref3 = token[0], __indexOf.call(CALL_CLOSERS, _ref3) >= 0) && this.tokens[i - 1].newLine; - }; - action = function(token, i) { - return this.tokens.splice((this.tag(i - 1) === ',' ? i - 1 : i), 0, outdent); - }; - return this.scanTokens(function(token, i, tokens) { - var j, tag, _i, _ref, _ref1, _ref2; - tag = token[0]; - if (tag === 'TERMINATOR') { - if (this.tag(i + 1) === 'ELSE' && this.tag(i - 1) !== 'OUTDENT') { - tokens.splice.apply(tokens, [i, 1].concat(__slice.call(this.indentation()))); - return 1; - } - if (_ref = this.tag(i + 1), __indexOf.call(EXPRESSION_CLOSE, _ref) >= 0) { - tokens.splice(i, 1); - return 0; - } - } - if (tag === 'CATCH') { - for (j = _i = 1; _i <= 2; j = ++_i) { - if (!((_ref1 = this.tag(i + j)) === 'OUTDENT' || _ref1 === 'TERMINATOR' || _ref1 === 'FINALLY')) { - continue; - } - tokens.splice.apply(tokens, [i + j, 0].concat(__slice.call(this.indentation()))); - return 2 + j; - } - } - if (__indexOf.call(SINGLE_LINERS, tag) >= 0 && this.tag(i + 1) !== 'INDENT' && !(tag === 'ELSE' && this.tag(i + 1) === 'IF')) { - starter = tag; - _ref2 = this.indentation(true), indent = _ref2[0], outdent = _ref2[1]; - if (starter === 'THEN') { - indent.fromThen = true; - } - tokens.splice(i + 1, 0, indent); - this.detectEnd(i + 2, condition, action); - if (tag === 'THEN') { - tokens.splice(i, 1); - } - return 1; - } - return 1; - }); - }; - - Rewriter.prototype.tagPostfixConditionals = function() { - var action, condition, original; - original = null; - condition = function(token, i) { - var prevTag, tag; - tag = token[0]; - prevTag = this.tokens[i - 1][0]; - return tag === 'TERMINATOR' || (tag === 'INDENT' && __indexOf.call(SINGLE_LINERS, prevTag) < 0); - }; - action = function(token, i) { - if (token[0] !== 'INDENT' || (token.generated && !token.fromThen)) { - return original[0] = 'POST_' + original[0]; - } - }; - return this.scanTokens(function(token, i) { - if (token[0] !== 'IF') { - return 1; - } - original = token; - this.detectEnd(i + 1, condition, action); - return 1; - }); - }; - - Rewriter.prototype.indentation = function(implicit) { - var indent, outdent; - if (implicit == null) { - implicit = false; - } - indent = ['INDENT', 2]; - outdent = ['OUTDENT', 2]; - if (implicit) { - indent.generated = outdent.generated = true; - } - if (!implicit) { - indent.explicit = outdent.explicit = true; - } - return [indent, outdent]; - }; - - Rewriter.prototype.generate = generate; - - Rewriter.prototype.tag = function(i) { - var _ref; - return (_ref = this.tokens[i]) != null ? _ref[0] : void 0; - }; - - return Rewriter; - - })(); - - BALANCED_PAIRS = [['(', ')'], ['[', ']'], ['{', '}'], ['INDENT', 'OUTDENT'], ['CALL_START', 'CALL_END'], ['PARAM_START', 'PARAM_END'], ['INDEX_START', 'INDEX_END']]; - - exports.INVERSES = INVERSES = {}; - - EXPRESSION_START = []; - - EXPRESSION_END = []; - - for (_i = 0, _len = BALANCED_PAIRS.length; _i < _len; _i++) { - _ref = BALANCED_PAIRS[_i], left = _ref[0], rite = _ref[1]; - EXPRESSION_START.push(INVERSES[rite] = left); - EXPRESSION_END.push(INVERSES[left] = rite); - } - - EXPRESSION_CLOSE = ['CATCH', 'THEN', 'ELSE', 'FINALLY'].concat(EXPRESSION_END); - - IMPLICIT_FUNC = ['IDENTIFIER', 'SUPER', ')', 'CALL_END', ']', 'INDEX_END', '@', 'THIS']; - - IMPLICIT_CALL = ['IDENTIFIER', 'NUMBER', 'STRING', 'JS', 'REGEX', 'NEW', 'PARAM_START', 'CLASS', 'IF', 'TRY', 'SWITCH', 'THIS', 'BOOL', 'NULL', 'UNDEFINED', 'UNARY', 'SUPER', 'THROW', '@', '->', '=>', '[', '(', '{', '--', '++']; - - IMPLICIT_UNSPACED_CALL = ['+', '-']; - - IMPLICIT_END = ['POST_IF', 'FOR', 'WHILE', 'UNTIL', 'WHEN', 'BY', 'LOOP', 'TERMINATOR']; - - SINGLE_LINERS = ['ELSE', '->', '=>', 'TRY', 'FINALLY', 'THEN']; - - SINGLE_CLOSERS = ['TERMINATOR', 'CATCH', 'FINALLY', 'ELSE', 'OUTDENT', 'LEADING_WHEN']; - - LINEBREAKS = ['TERMINATOR', 'INDENT', 'OUTDENT']; - - CALL_CLOSERS = ['.', '?.', '::', '?::']; - - -}); - -ace.define('ace/mode/coffee/helpers', ['require', 'exports', 'module' ], function(require, exports, module) { - - var buildLocationData, extend, flatten, last, repeat, syntaxErrorToString, _ref; - - exports.starts = function(string, literal, start) { - return literal === string.substr(start, literal.length); - }; - - exports.ends = function(string, literal, back) { - var len; - len = literal.length; - return literal === string.substr(string.length - len - (back || 0), len); - }; - - exports.repeat = repeat = function(str, n) { - var res; - res = ''; - while (n > 0) { - if (n & 1) { - res += str; - } - n >>>= 1; - str += str; - } - return res; - }; - - exports.compact = function(array) { - var item, _i, _len, _results; - _results = []; - for (_i = 0, _len = array.length; _i < _len; _i++) { - item = array[_i]; - if (item) { - _results.push(item); - } - } - return _results; - }; - - exports.count = function(string, substr) { - var num, pos; - num = pos = 0; - if (!substr.length) { - return 1 / 0; - } - while (pos = 1 + string.indexOf(substr, pos)) { - num++; - } - return num; - }; - - exports.merge = function(options, overrides) { - return extend(extend({}, options), overrides); - }; - - extend = exports.extend = function(object, properties) { - var key, val; - for (key in properties) { - val = properties[key]; - object[key] = val; - } - return object; - }; - - exports.flatten = flatten = function(array) { - var element, flattened, _i, _len; - flattened = []; - for (_i = 0, _len = array.length; _i < _len; _i++) { - element = array[_i]; - if (element instanceof Array) { - flattened = flattened.concat(flatten(element)); - } else { - flattened.push(element); - } - } - return flattened; - }; - - exports.del = function(obj, key) { - var val; - val = obj[key]; - delete obj[key]; - return val; - }; - - exports.last = last = function(array, back) { - return array[array.length - (back || 0) - 1]; - }; - - exports.some = (_ref = Array.prototype.some) != null ? _ref : function(fn) { - var e, _i, _len; - for (_i = 0, _len = this.length; _i < _len; _i++) { - e = this[_i]; - if (fn(e)) { - return true; - } - } - return false; - }; - - exports.invertLiterate = function(code) { - var line, lines, maybe_code; - maybe_code = true; - lines = (function() { - var _i, _len, _ref1, _results; - _ref1 = code.split('\n'); - _results = []; - for (_i = 0, _len = _ref1.length; _i < _len; _i++) { - line = _ref1[_i]; - if (maybe_code && /^([ ]{4}|[ ]{0,3}\t)/.test(line)) { - _results.push(line); - } else if (maybe_code = /^\s*$/.test(line)) { - _results.push(line); - } else { - _results.push('# ' + line); - } - } - return _results; - })(); - return lines.join('\n'); - }; - - buildLocationData = function(first, last) { - if (!last) { - return first; - } else { - return { - first_line: first.first_line, - first_column: first.first_column, - last_line: last.last_line, - last_column: last.last_column - }; - } - }; - - exports.addLocationDataFn = function(first, last) { - return function(obj) { - if (((typeof obj) === 'object') && (!!obj['updateLocationDataIfMissing'])) { - obj.updateLocationDataIfMissing(buildLocationData(first, last)); - } - return obj; - }; - }; - - exports.locationDataToString = function(obj) { - var locationData; - if (("2" in obj) && ("first_line" in obj[2])) { - locationData = obj[2]; - } else if ("first_line" in obj) { - locationData = obj; - } - if (locationData) { - return ("" + (locationData.first_line + 1) + ":" + (locationData.first_column + 1) + "-") + ("" + (locationData.last_line + 1) + ":" + (locationData.last_column + 1)); - } else { - return "No location data"; - } - }; - - exports.baseFileName = function(file, stripExt, useWinPathSep) { - var parts, pathSep; - if (stripExt == null) { - stripExt = false; - } - if (useWinPathSep == null) { - useWinPathSep = false; - } - pathSep = useWinPathSep ? /\\|\// : /\//; - parts = file.split(pathSep); - file = parts[parts.length - 1]; - if (!(stripExt && file.indexOf('.') >= 0)) { - return file; - } - parts = file.split('.'); - parts.pop(); - if (parts[parts.length - 1] === 'coffee' && parts.length > 1) { - parts.pop(); - } - return parts.join('.'); - }; - - exports.isCoffee = function(file) { - return /\.((lit)?coffee|coffee\.md)$/.test(file); - }; - - exports.isLiterate = function(file) { - return /\.(litcoffee|coffee\.md)$/.test(file); - }; - - exports.throwSyntaxError = function(message, location) { - var error; - if (location.last_line == null) { - location.last_line = location.first_line; - } - if (location.last_column == null) { - location.last_column = location.first_column; - } - error = new SyntaxError(message); - error.location = location; - error.toString = syntaxErrorToString; - error.stack = error.toString(); - throw error; - }; - - exports.updateSyntaxError = function(error, code, filename) { - if (error.toString === syntaxErrorToString) { - error.code || (error.code = code); - error.filename || (error.filename = filename); - error.stack = error.toString(); - } - return error; - }; - - syntaxErrorToString = function() { - var codeLine, colorize, colorsEnabled, end, filename, first_column, first_line, last_column, last_line, marker, start, _ref1, _ref2; - if (!(this.code && this.location)) { - return Error.prototype.toString.call(this); - } - _ref1 = this.location, first_line = _ref1.first_line, first_column = _ref1.first_column, last_line = _ref1.last_line, last_column = _ref1.last_column; - if (last_line == null) { - last_line = first_line; - } - if (last_column == null) { - last_column = first_column; - } - filename = this.filename || '[stdin]'; - codeLine = this.code.split('\n')[first_line]; - start = first_column; - end = first_line === last_line ? last_column + 1 : codeLine.length; - marker = repeat(' ', start) + repeat('^', end - start); - if (typeof process !== "undefined" && process !== null) { - colorsEnabled = process.stdout.isTTY && !process.env.NODE_DISABLE_COLORS; - } - if ((_ref2 = this.colorful) != null ? _ref2 : colorsEnabled) { - colorize = function(str) { - return "\x1B[1;31m" + str + "\x1B[0m"; - }; - codeLine = codeLine.slice(0, start) + colorize(codeLine.slice(start, end)) + codeLine.slice(end); - marker = colorize(marker); - } - return "" + filename + ":" + (first_line + 1) + ":" + (first_column + 1) + ": error: " + this.message + "\n" + codeLine + "\n" + marker; - }; - - -}); - -ace.define('ace/mode/coffee/parser', ['require', 'exports', 'module' ], function(require, exports, module) { - -var parser = {trace: function trace() { }, -yy: {}, -symbols_: {"error":2,"Root":3,"Body":4,"Line":5,"TERMINATOR":6,"Expression":7,"Statement":8,"Return":9,"Comment":10,"STATEMENT":11,"Value":12,"Invocation":13,"Code":14,"Operation":15,"Assign":16,"If":17,"Try":18,"While":19,"For":20,"Switch":21,"Class":22,"Throw":23,"Block":24,"INDENT":25,"OUTDENT":26,"Identifier":27,"IDENTIFIER":28,"AlphaNumeric":29,"NUMBER":30,"STRING":31,"Literal":32,"JS":33,"REGEX":34,"DEBUGGER":35,"UNDEFINED":36,"NULL":37,"BOOL":38,"Assignable":39,"=":40,"AssignObj":41,"ObjAssignable":42,":":43,"ThisProperty":44,"RETURN":45,"HERECOMMENT":46,"PARAM_START":47,"ParamList":48,"PARAM_END":49,"FuncGlyph":50,"->":51,"=>":52,"OptComma":53,",":54,"Param":55,"ParamVar":56,"...":57,"Array":58,"Object":59,"Splat":60,"SimpleAssignable":61,"Accessor":62,"Parenthetical":63,"Range":64,"This":65,".":66,"?.":67,"::":68,"?::":69,"Index":70,"INDEX_START":71,"IndexValue":72,"INDEX_END":73,"INDEX_SOAK":74,"Slice":75,"{":76,"AssignList":77,"}":78,"CLASS":79,"EXTENDS":80,"OptFuncExist":81,"Arguments":82,"SUPER":83,"FUNC_EXIST":84,"CALL_START":85,"CALL_END":86,"ArgList":87,"THIS":88,"@":89,"[":90,"]":91,"RangeDots":92,"..":93,"Arg":94,"SimpleArgs":95,"TRY":96,"Catch":97,"FINALLY":98,"CATCH":99,"THROW":100,"(":101,")":102,"WhileSource":103,"WHILE":104,"WHEN":105,"UNTIL":106,"Loop":107,"LOOP":108,"ForBody":109,"FOR":110,"ForStart":111,"ForSource":112,"ForVariables":113,"OWN":114,"ForValue":115,"FORIN":116,"FOROF":117,"BY":118,"SWITCH":119,"Whens":120,"ELSE":121,"When":122,"LEADING_WHEN":123,"IfBlock":124,"IF":125,"POST_IF":126,"UNARY":127,"-":128,"+":129,"--":130,"++":131,"?":132,"MATH":133,"SHIFT":134,"COMPARE":135,"LOGIC":136,"RELATION":137,"COMPOUND_ASSIGN":138,"$accept":0,"$end":1}, -terminals_: {2:"error",6:"TERMINATOR",11:"STATEMENT",25:"INDENT",26:"OUTDENT",28:"IDENTIFIER",30:"NUMBER",31:"STRING",33:"JS",34:"REGEX",35:"DEBUGGER",36:"UNDEFINED",37:"NULL",38:"BOOL",40:"=",43:":",45:"RETURN",46:"HERECOMMENT",47:"PARAM_START",49:"PARAM_END",51:"->",52:"=>",54:",",57:"...",66:".",67:"?.",68:"::",69:"?::",71:"INDEX_START",73:"INDEX_END",74:"INDEX_SOAK",76:"{",78:"}",79:"CLASS",80:"EXTENDS",83:"SUPER",84:"FUNC_EXIST",85:"CALL_START",86:"CALL_END",88:"THIS",89:"@",90:"[",91:"]",93:"..",96:"TRY",98:"FINALLY",99:"CATCH",100:"THROW",101:"(",102:")",104:"WHILE",105:"WHEN",106:"UNTIL",108:"LOOP",110:"FOR",114:"OWN",116:"FORIN",117:"FOROF",118:"BY",119:"SWITCH",121:"ELSE",123:"LEADING_WHEN",125:"IF",126:"POST_IF",127:"UNARY",128:"-",129:"+",130:"--",131:"++",132:"?",133:"MATH",134:"SHIFT",135:"COMPARE",136:"LOGIC",137:"RELATION",138:"COMPOUND_ASSIGN"}, -productions_: [0,[3,0],[3,1],[4,1],[4,3],[4,2],[5,1],[5,1],[8,1],[8,1],[8,1],[7,1],[7,1],[7,1],[7,1],[7,1],[7,1],[7,1],[7,1],[7,1],[7,1],[7,1],[7,1],[24,2],[24,3],[27,1],[29,1],[29,1],[32,1],[32,1],[32,1],[32,1],[32,1],[32,1],[32,1],[16,3],[16,4],[16,5],[41,1],[41,3],[41,5],[41,1],[42,1],[42,1],[42,1],[9,2],[9,1],[10,1],[14,5],[14,2],[50,1],[50,1],[53,0],[53,1],[48,0],[48,1],[48,3],[48,4],[48,6],[55,1],[55,2],[55,3],[56,1],[56,1],[56,1],[56,1],[60,2],[61,1],[61,2],[61,2],[61,1],[39,1],[39,1],[39,1],[12,1],[12,1],[12,1],[12,1],[12,1],[62,2],[62,2],[62,2],[62,2],[62,1],[62,1],[70,3],[70,2],[72,1],[72,1],[59,4],[77,0],[77,1],[77,3],[77,4],[77,6],[22,1],[22,2],[22,3],[22,4],[22,2],[22,3],[22,4],[22,5],[13,3],[13,3],[13,1],[13,2],[81,0],[81,1],[82,2],[82,4],[65,1],[65,1],[44,2],[58,2],[58,4],[92,1],[92,1],[64,5],[75,3],[75,2],[75,2],[75,1],[87,1],[87,3],[87,4],[87,4],[87,6],[94,1],[94,1],[95,1],[95,3],[18,2],[18,3],[18,4],[18,5],[97,3],[97,3],[97,2],[23,2],[63,3],[63,5],[103,2],[103,4],[103,2],[103,4],[19,2],[19,2],[19,2],[19,1],[107,2],[107,2],[20,2],[20,2],[20,2],[109,2],[109,2],[111,2],[111,3],[115,1],[115,1],[115,1],[115,1],[113,1],[113,3],[112,2],[112,2],[112,4],[112,4],[112,4],[112,6],[112,6],[21,5],[21,7],[21,4],[21,6],[120,1],[120,2],[122,3],[122,4],[124,3],[124,5],[17,1],[17,3],[17,3],[17,3],[15,2],[15,2],[15,2],[15,2],[15,2],[15,2],[15,2],[15,2],[15,3],[15,3],[15,3],[15,3],[15,3],[15,3],[15,3],[15,3],[15,5],[15,4],[15,3]], -performAction: function anonymous(yytext, yyleng, yylineno, yy, yystate /* action[1] */, $$ /* vstack */, _$ /* lstack */) { - -var $0 = $$.length - 1; -switch (yystate) { -case 1:return this.$ = yy.addLocationDataFn(_$[$0], _$[$0])(new yy.Block); -break; -case 2:return this.$ = $$[$0]; -break; -case 3:this.$ = yy.addLocationDataFn(_$[$0], _$[$0])(yy.Block.wrap([$$[$0]])); -break; -case 4:this.$ = yy.addLocationDataFn(_$[$0-2], _$[$0])($$[$0-2].push($$[$0])); -break; -case 5:this.$ = $$[$0-1]; -break; -case 6:this.$ = $$[$0]; -break; -case 7:this.$ = $$[$0]; -break; -case 8:this.$ = $$[$0]; -break; -case 9:this.$ = $$[$0]; -break; -case 10:this.$ = yy.addLocationDataFn(_$[$0], _$[$0])(new yy.Literal($$[$0])); -break; -case 11:this.$ = $$[$0]; -break; -case 12:this.$ = $$[$0]; -break; -case 13:this.$ = $$[$0]; -break; -case 14:this.$ = $$[$0]; -break; -case 15:this.$ = $$[$0]; -break; -case 16:this.$ = $$[$0]; -break; -case 17:this.$ = $$[$0]; -break; -case 18:this.$ = $$[$0]; -break; -case 19:this.$ = $$[$0]; -break; -case 20:this.$ = $$[$0]; -break; -case 21:this.$ = $$[$0]; -break; -case 22:this.$ = $$[$0]; -break; -case 23:this.$ = yy.addLocationDataFn(_$[$0-1], _$[$0])(new yy.Block); -break; -case 24:this.$ = yy.addLocationDataFn(_$[$0-2], _$[$0])($$[$0-1]); -break; -case 25:this.$ = yy.addLocationDataFn(_$[$0], _$[$0])(new yy.Literal($$[$0])); -break; -case 26:this.$ = yy.addLocationDataFn(_$[$0], _$[$0])(new yy.Literal($$[$0])); -break; -case 27:this.$ = yy.addLocationDataFn(_$[$0], _$[$0])(new yy.Literal($$[$0])); -break; -case 28:this.$ = $$[$0]; -break; -case 29:this.$ = yy.addLocationDataFn(_$[$0], _$[$0])(new yy.Literal($$[$0])); -break; -case 30:this.$ = yy.addLocationDataFn(_$[$0], _$[$0])(new yy.Literal($$[$0])); -break; -case 31:this.$ = yy.addLocationDataFn(_$[$0], _$[$0])(new yy.Literal($$[$0])); -break; -case 32:this.$ = yy.addLocationDataFn(_$[$0], _$[$0])(new yy.Undefined); -break; -case 33:this.$ = yy.addLocationDataFn(_$[$0], _$[$0])(new yy.Null); -break; -case 34:this.$ = yy.addLocationDataFn(_$[$0], _$[$0])(new yy.Bool($$[$0])); -break; -case 35:this.$ = yy.addLocationDataFn(_$[$0-2], _$[$0])(new yy.Assign($$[$0-2], $$[$0])); -break; -case 36:this.$ = yy.addLocationDataFn(_$[$0-3], _$[$0])(new yy.Assign($$[$0-3], $$[$0])); -break; -case 37:this.$ = yy.addLocationDataFn(_$[$0-4], _$[$0])(new yy.Assign($$[$0-4], $$[$0-1])); -break; -case 38:this.$ = yy.addLocationDataFn(_$[$0], _$[$0])(new yy.Value($$[$0])); -break; -case 39:this.$ = yy.addLocationDataFn(_$[$0-2], _$[$0])(new yy.Assign(yy.addLocationDataFn(_$[$0-2])(new yy.Value($$[$0-2])), $$[$0], 'object')); -break; -case 40:this.$ = yy.addLocationDataFn(_$[$0-4], _$[$0])(new yy.Assign(yy.addLocationDataFn(_$[$0-4])(new yy.Value($$[$0-4])), $$[$0-1], 'object')); -break; -case 41:this.$ = $$[$0]; -break; -case 42:this.$ = $$[$0]; -break; -case 43:this.$ = $$[$0]; -break; -case 44:this.$ = $$[$0]; -break; -case 45:this.$ = yy.addLocationDataFn(_$[$0-1], _$[$0])(new yy.Return($$[$0])); -break; -case 46:this.$ = yy.addLocationDataFn(_$[$0], _$[$0])(new yy.Return); -break; -case 47:this.$ = yy.addLocationDataFn(_$[$0], _$[$0])(new yy.Comment($$[$0])); -break; -case 48:this.$ = yy.addLocationDataFn(_$[$0-4], _$[$0])(new yy.Code($$[$0-3], $$[$0], $$[$0-1])); -break; -case 49:this.$ = yy.addLocationDataFn(_$[$0-1], _$[$0])(new yy.Code([], $$[$0], $$[$0-1])); -break; -case 50:this.$ = yy.addLocationDataFn(_$[$0], _$[$0])('func'); -break; -case 51:this.$ = yy.addLocationDataFn(_$[$0], _$[$0])('boundfunc'); -break; -case 52:this.$ = $$[$0]; -break; -case 53:this.$ = $$[$0]; -break; -case 54:this.$ = yy.addLocationDataFn(_$[$0], _$[$0])([]); -break; -case 55:this.$ = yy.addLocationDataFn(_$[$0], _$[$0])([$$[$0]]); -break; -case 56:this.$ = yy.addLocationDataFn(_$[$0-2], _$[$0])($$[$0-2].concat($$[$0])); -break; -case 57:this.$ = yy.addLocationDataFn(_$[$0-3], _$[$0])($$[$0-3].concat($$[$0])); -break; -case 58:this.$ = yy.addLocationDataFn(_$[$0-5], _$[$0])($$[$0-5].concat($$[$0-2])); -break; -case 59:this.$ = yy.addLocationDataFn(_$[$0], _$[$0])(new yy.Param($$[$0])); -break; -case 60:this.$ = yy.addLocationDataFn(_$[$0-1], _$[$0])(new yy.Param($$[$0-1], null, true)); -break; -case 61:this.$ = yy.addLocationDataFn(_$[$0-2], _$[$0])(new yy.Param($$[$0-2], $$[$0])); -break; -case 62:this.$ = $$[$0]; -break; -case 63:this.$ = $$[$0]; -break; -case 64:this.$ = $$[$0]; -break; -case 65:this.$ = $$[$0]; -break; -case 66:this.$ = yy.addLocationDataFn(_$[$0-1], _$[$0])(new yy.Splat($$[$0-1])); -break; -case 67:this.$ = yy.addLocationDataFn(_$[$0], _$[$0])(new yy.Value($$[$0])); -break; -case 68:this.$ = yy.addLocationDataFn(_$[$0-1], _$[$0])($$[$0-1].add($$[$0])); -break; -case 69:this.$ = yy.addLocationDataFn(_$[$0-1], _$[$0])(new yy.Value($$[$0-1], [].concat($$[$0]))); -break; -case 70:this.$ = $$[$0]; -break; -case 71:this.$ = $$[$0]; -break; -case 72:this.$ = yy.addLocationDataFn(_$[$0], _$[$0])(new yy.Value($$[$0])); -break; -case 73:this.$ = yy.addLocationDataFn(_$[$0], _$[$0])(new yy.Value($$[$0])); -break; -case 74:this.$ = $$[$0]; -break; -case 75:this.$ = yy.addLocationDataFn(_$[$0], _$[$0])(new yy.Value($$[$0])); -break; -case 76:this.$ = yy.addLocationDataFn(_$[$0], _$[$0])(new yy.Value($$[$0])); -break; -case 77:this.$ = yy.addLocationDataFn(_$[$0], _$[$0])(new yy.Value($$[$0])); -break; -case 78:this.$ = $$[$0]; -break; -case 79:this.$ = yy.addLocationDataFn(_$[$0-1], _$[$0])(new yy.Access($$[$0])); -break; -case 80:this.$ = yy.addLocationDataFn(_$[$0-1], _$[$0])(new yy.Access($$[$0], 'soak')); -break; -case 81:this.$ = yy.addLocationDataFn(_$[$0-1], _$[$0])([yy.addLocationDataFn(_$[$0-1])(new yy.Access(new yy.Literal('prototype'))), yy.addLocationDataFn(_$[$0])(new yy.Access($$[$0]))]); -break; -case 82:this.$ = yy.addLocationDataFn(_$[$0-1], _$[$0])([yy.addLocationDataFn(_$[$0-1])(new yy.Access(new yy.Literal('prototype'), 'soak')), yy.addLocationDataFn(_$[$0])(new yy.Access($$[$0]))]); -break; -case 83:this.$ = yy.addLocationDataFn(_$[$0], _$[$0])(new yy.Access(new yy.Literal('prototype'))); -break; -case 84:this.$ = $$[$0]; -break; -case 85:this.$ = yy.addLocationDataFn(_$[$0-2], _$[$0])($$[$0-1]); -break; -case 86:this.$ = yy.addLocationDataFn(_$[$0-1], _$[$0])(yy.extend($$[$0], { - soak: true - })); -break; -case 87:this.$ = yy.addLocationDataFn(_$[$0], _$[$0])(new yy.Index($$[$0])); -break; -case 88:this.$ = yy.addLocationDataFn(_$[$0], _$[$0])(new yy.Slice($$[$0])); -break; -case 89:this.$ = yy.addLocationDataFn(_$[$0-3], _$[$0])(new yy.Obj($$[$0-2], $$[$0-3].generated)); -break; -case 90:this.$ = yy.addLocationDataFn(_$[$0], _$[$0])([]); -break; -case 91:this.$ = yy.addLocationDataFn(_$[$0], _$[$0])([$$[$0]]); -break; -case 92:this.$ = yy.addLocationDataFn(_$[$0-2], _$[$0])($$[$0-2].concat($$[$0])); -break; -case 93:this.$ = yy.addLocationDataFn(_$[$0-3], _$[$0])($$[$0-3].concat($$[$0])); -break; -case 94:this.$ = yy.addLocationDataFn(_$[$0-5], _$[$0])($$[$0-5].concat($$[$0-2])); -break; -case 95:this.$ = yy.addLocationDataFn(_$[$0], _$[$0])(new yy.Class); -break; -case 96:this.$ = yy.addLocationDataFn(_$[$0-1], _$[$0])(new yy.Class(null, null, $$[$0])); -break; -case 97:this.$ = yy.addLocationDataFn(_$[$0-2], _$[$0])(new yy.Class(null, $$[$0])); -break; -case 98:this.$ = yy.addLocationDataFn(_$[$0-3], _$[$0])(new yy.Class(null, $$[$0-1], $$[$0])); -break; -case 99:this.$ = yy.addLocationDataFn(_$[$0-1], _$[$0])(new yy.Class($$[$0])); -break; -case 100:this.$ = yy.addLocationDataFn(_$[$0-2], _$[$0])(new yy.Class($$[$0-1], null, $$[$0])); -break; -case 101:this.$ = yy.addLocationDataFn(_$[$0-3], _$[$0])(new yy.Class($$[$0-2], $$[$0])); -break; -case 102:this.$ = yy.addLocationDataFn(_$[$0-4], _$[$0])(new yy.Class($$[$0-3], $$[$0-1], $$[$0])); -break; -case 103:this.$ = yy.addLocationDataFn(_$[$0-2], _$[$0])(new yy.Call($$[$0-2], $$[$0], $$[$0-1])); -break; -case 104:this.$ = yy.addLocationDataFn(_$[$0-2], _$[$0])(new yy.Call($$[$0-2], $$[$0], $$[$0-1])); -break; -case 105:this.$ = yy.addLocationDataFn(_$[$0], _$[$0])(new yy.Call('super', [new yy.Splat(new yy.Literal('arguments'))])); -break; -case 106:this.$ = yy.addLocationDataFn(_$[$0-1], _$[$0])(new yy.Call('super', $$[$0])); -break; -case 107:this.$ = yy.addLocationDataFn(_$[$0], _$[$0])(false); -break; -case 108:this.$ = yy.addLocationDataFn(_$[$0], _$[$0])(true); -break; -case 109:this.$ = yy.addLocationDataFn(_$[$0-1], _$[$0])([]); -break; -case 110:this.$ = yy.addLocationDataFn(_$[$0-3], _$[$0])($$[$0-2]); -break; -case 111:this.$ = yy.addLocationDataFn(_$[$0], _$[$0])(new yy.Value(new yy.Literal('this'))); -break; -case 112:this.$ = yy.addLocationDataFn(_$[$0], _$[$0])(new yy.Value(new yy.Literal('this'))); -break; -case 113:this.$ = yy.addLocationDataFn(_$[$0-1], _$[$0])(new yy.Value(yy.addLocationDataFn(_$[$0-1])(new yy.Literal('this')), [yy.addLocationDataFn(_$[$0])(new yy.Access($$[$0]))], 'this')); -break; -case 114:this.$ = yy.addLocationDataFn(_$[$0-1], _$[$0])(new yy.Arr([])); -break; -case 115:this.$ = yy.addLocationDataFn(_$[$0-3], _$[$0])(new yy.Arr($$[$0-2])); -break; -case 116:this.$ = yy.addLocationDataFn(_$[$0], _$[$0])('inclusive'); -break; -case 117:this.$ = yy.addLocationDataFn(_$[$0], _$[$0])('exclusive'); -break; -case 118:this.$ = yy.addLocationDataFn(_$[$0-4], _$[$0])(new yy.Range($$[$0-3], $$[$0-1], $$[$0-2])); -break; -case 119:this.$ = yy.addLocationDataFn(_$[$0-2], _$[$0])(new yy.Range($$[$0-2], $$[$0], $$[$0-1])); -break; -case 120:this.$ = yy.addLocationDataFn(_$[$0-1], _$[$0])(new yy.Range($$[$0-1], null, $$[$0])); -break; -case 121:this.$ = yy.addLocationDataFn(_$[$0-1], _$[$0])(new yy.Range(null, $$[$0], $$[$0-1])); -break; -case 122:this.$ = yy.addLocationDataFn(_$[$0], _$[$0])(new yy.Range(null, null, $$[$0])); -break; -case 123:this.$ = yy.addLocationDataFn(_$[$0], _$[$0])([$$[$0]]); -break; -case 124:this.$ = yy.addLocationDataFn(_$[$0-2], _$[$0])($$[$0-2].concat($$[$0])); -break; -case 125:this.$ = yy.addLocationDataFn(_$[$0-3], _$[$0])($$[$0-3].concat($$[$0])); -break; -case 126:this.$ = yy.addLocationDataFn(_$[$0-3], _$[$0])($$[$0-2]); -break; -case 127:this.$ = yy.addLocationDataFn(_$[$0-5], _$[$0])($$[$0-5].concat($$[$0-2])); -break; -case 128:this.$ = $$[$0]; -break; -case 129:this.$ = $$[$0]; -break; -case 130:this.$ = $$[$0]; -break; -case 131:this.$ = yy.addLocationDataFn(_$[$0-2], _$[$0])([].concat($$[$0-2], $$[$0])); -break; -case 132:this.$ = yy.addLocationDataFn(_$[$0-1], _$[$0])(new yy.Try($$[$0])); -break; -case 133:this.$ = yy.addLocationDataFn(_$[$0-2], _$[$0])(new yy.Try($$[$0-1], $$[$0][0], $$[$0][1])); -break; -case 134:this.$ = yy.addLocationDataFn(_$[$0-3], _$[$0])(new yy.Try($$[$0-2], null, null, $$[$0])); -break; -case 135:this.$ = yy.addLocationDataFn(_$[$0-4], _$[$0])(new yy.Try($$[$0-3], $$[$0-2][0], $$[$0-2][1], $$[$0])); -break; -case 136:this.$ = yy.addLocationDataFn(_$[$0-2], _$[$0])([$$[$0-1], $$[$0]]); -break; -case 137:this.$ = yy.addLocationDataFn(_$[$0-2], _$[$0])([yy.addLocationDataFn(_$[$0-1])(new yy.Value($$[$0-1])), $$[$0]]); -break; -case 138:this.$ = yy.addLocationDataFn(_$[$0-1], _$[$0])([null, $$[$0]]); -break; -case 139:this.$ = yy.addLocationDataFn(_$[$0-1], _$[$0])(new yy.Throw($$[$0])); -break; -case 140:this.$ = yy.addLocationDataFn(_$[$0-2], _$[$0])(new yy.Parens($$[$0-1])); -break; -case 141:this.$ = yy.addLocationDataFn(_$[$0-4], _$[$0])(new yy.Parens($$[$0-2])); -break; -case 142:this.$ = yy.addLocationDataFn(_$[$0-1], _$[$0])(new yy.While($$[$0])); -break; -case 143:this.$ = yy.addLocationDataFn(_$[$0-3], _$[$0])(new yy.While($$[$0-2], { - guard: $$[$0] - })); -break; -case 144:this.$ = yy.addLocationDataFn(_$[$0-1], _$[$0])(new yy.While($$[$0], { - invert: true - })); -break; -case 145:this.$ = yy.addLocationDataFn(_$[$0-3], _$[$0])(new yy.While($$[$0-2], { - invert: true, - guard: $$[$0] - })); -break; -case 146:this.$ = yy.addLocationDataFn(_$[$0-1], _$[$0])($$[$0-1].addBody($$[$0])); -break; -case 147:this.$ = yy.addLocationDataFn(_$[$0-1], _$[$0])($$[$0].addBody(yy.addLocationDataFn(_$[$0-1])(yy.Block.wrap([$$[$0-1]])))); -break; -case 148:this.$ = yy.addLocationDataFn(_$[$0-1], _$[$0])($$[$0].addBody(yy.addLocationDataFn(_$[$0-1])(yy.Block.wrap([$$[$0-1]])))); -break; -case 149:this.$ = yy.addLocationDataFn(_$[$0], _$[$0])($$[$0]); -break; -case 150:this.$ = yy.addLocationDataFn(_$[$0-1], _$[$0])(new yy.While(yy.addLocationDataFn(_$[$0-1])(new yy.Literal('true'))).addBody($$[$0])); -break; -case 151:this.$ = yy.addLocationDataFn(_$[$0-1], _$[$0])(new yy.While(yy.addLocationDataFn(_$[$0-1])(new yy.Literal('true'))).addBody(yy.addLocationDataFn(_$[$0])(yy.Block.wrap([$$[$0]])))); -break; -case 152:this.$ = yy.addLocationDataFn(_$[$0-1], _$[$0])(new yy.For($$[$0-1], $$[$0])); -break; -case 153:this.$ = yy.addLocationDataFn(_$[$0-1], _$[$0])(new yy.For($$[$0-1], $$[$0])); -break; -case 154:this.$ = yy.addLocationDataFn(_$[$0-1], _$[$0])(new yy.For($$[$0], $$[$0-1])); -break; -case 155:this.$ = yy.addLocationDataFn(_$[$0-1], _$[$0])({ - source: yy.addLocationDataFn(_$[$0])(new yy.Value($$[$0])) - }); -break; -case 156:this.$ = yy.addLocationDataFn(_$[$0-1], _$[$0])((function () { - $$[$0].own = $$[$0-1].own; - $$[$0].name = $$[$0-1][0]; - $$[$0].index = $$[$0-1][1]; - return $$[$0]; - }())); -break; -case 157:this.$ = yy.addLocationDataFn(_$[$0-1], _$[$0])($$[$0]); -break; -case 158:this.$ = yy.addLocationDataFn(_$[$0-2], _$[$0])((function () { - $$[$0].own = true; - return $$[$0]; - }())); -break; -case 159:this.$ = $$[$0]; -break; -case 160:this.$ = $$[$0]; -break; -case 161:this.$ = yy.addLocationDataFn(_$[$0], _$[$0])(new yy.Value($$[$0])); -break; -case 162:this.$ = yy.addLocationDataFn(_$[$0], _$[$0])(new yy.Value($$[$0])); -break; -case 163:this.$ = yy.addLocationDataFn(_$[$0], _$[$0])([$$[$0]]); -break; -case 164:this.$ = yy.addLocationDataFn(_$[$0-2], _$[$0])([$$[$0-2], $$[$0]]); -break; -case 165:this.$ = yy.addLocationDataFn(_$[$0-1], _$[$0])({ - source: $$[$0] - }); -break; -case 166:this.$ = yy.addLocationDataFn(_$[$0-1], _$[$0])({ - source: $$[$0], - object: true - }); -break; -case 167:this.$ = yy.addLocationDataFn(_$[$0-3], _$[$0])({ - source: $$[$0-2], - guard: $$[$0] - }); -break; -case 168:this.$ = yy.addLocationDataFn(_$[$0-3], _$[$0])({ - source: $$[$0-2], - guard: $$[$0], - object: true - }); -break; -case 169:this.$ = yy.addLocationDataFn(_$[$0-3], _$[$0])({ - source: $$[$0-2], - step: $$[$0] - }); -break; -case 170:this.$ = yy.addLocationDataFn(_$[$0-5], _$[$0])({ - source: $$[$0-4], - guard: $$[$0-2], - step: $$[$0] - }); -break; -case 171:this.$ = yy.addLocationDataFn(_$[$0-5], _$[$0])({ - source: $$[$0-4], - step: $$[$0-2], - guard: $$[$0] - }); -break; -case 172:this.$ = yy.addLocationDataFn(_$[$0-4], _$[$0])(new yy.Switch($$[$0-3], $$[$0-1])); -break; -case 173:this.$ = yy.addLocationDataFn(_$[$0-6], _$[$0])(new yy.Switch($$[$0-5], $$[$0-3], $$[$0-1])); -break; -case 174:this.$ = yy.addLocationDataFn(_$[$0-3], _$[$0])(new yy.Switch(null, $$[$0-1])); -break; -case 175:this.$ = yy.addLocationDataFn(_$[$0-5], _$[$0])(new yy.Switch(null, $$[$0-3], $$[$0-1])); -break; -case 176:this.$ = $$[$0]; -break; -case 177:this.$ = yy.addLocationDataFn(_$[$0-1], _$[$0])($$[$0-1].concat($$[$0])); -break; -case 178:this.$ = yy.addLocationDataFn(_$[$0-2], _$[$0])([[$$[$0-1], $$[$0]]]); -break; -case 179:this.$ = yy.addLocationDataFn(_$[$0-3], _$[$0])([[$$[$0-2], $$[$0-1]]]); -break; -case 180:this.$ = yy.addLocationDataFn(_$[$0-2], _$[$0])(new yy.If($$[$0-1], $$[$0], { - type: $$[$0-2] - })); -break; -case 181:this.$ = yy.addLocationDataFn(_$[$0-4], _$[$0])($$[$0-4].addElse(yy.addLocationDataFn(_$[$0-2], _$[$0])(new yy.If($$[$0-1], $$[$0], { - type: $$[$0-2] - })))); -break; -case 182:this.$ = $$[$0]; -break; -case 183:this.$ = yy.addLocationDataFn(_$[$0-2], _$[$0])($$[$0-2].addElse($$[$0])); -break; -case 184:this.$ = yy.addLocationDataFn(_$[$0-2], _$[$0])(new yy.If($$[$0], yy.addLocationDataFn(_$[$0-2])(yy.Block.wrap([$$[$0-2]])), { - type: $$[$0-1], - statement: true - })); -break; -case 185:this.$ = yy.addLocationDataFn(_$[$0-2], _$[$0])(new yy.If($$[$0], yy.addLocationDataFn(_$[$0-2])(yy.Block.wrap([$$[$0-2]])), { - type: $$[$0-1], - statement: true - })); -break; -case 186:this.$ = yy.addLocationDataFn(_$[$0-1], _$[$0])(new yy.Op($$[$0-1], $$[$0])); -break; -case 187:this.$ = yy.addLocationDataFn(_$[$0-1], _$[$0])(new yy.Op('-', $$[$0])); -break; -case 188:this.$ = yy.addLocationDataFn(_$[$0-1], _$[$0])(new yy.Op('+', $$[$0])); -break; -case 189:this.$ = yy.addLocationDataFn(_$[$0-1], _$[$0])(new yy.Op('--', $$[$0])); -break; -case 190:this.$ = yy.addLocationDataFn(_$[$0-1], _$[$0])(new yy.Op('++', $$[$0])); -break; -case 191:this.$ = yy.addLocationDataFn(_$[$0-1], _$[$0])(new yy.Op('--', $$[$0-1], null, true)); -break; -case 192:this.$ = yy.addLocationDataFn(_$[$0-1], _$[$0])(new yy.Op('++', $$[$0-1], null, true)); -break; -case 193:this.$ = yy.addLocationDataFn(_$[$0-1], _$[$0])(new yy.Existence($$[$0-1])); -break; -case 194:this.$ = yy.addLocationDataFn(_$[$0-2], _$[$0])(new yy.Op('+', $$[$0-2], $$[$0])); -break; -case 195:this.$ = yy.addLocationDataFn(_$[$0-2], _$[$0])(new yy.Op('-', $$[$0-2], $$[$0])); -break; -case 196:this.$ = yy.addLocationDataFn(_$[$0-2], _$[$0])(new yy.Op($$[$0-1], $$[$0-2], $$[$0])); -break; -case 197:this.$ = yy.addLocationDataFn(_$[$0-2], _$[$0])(new yy.Op($$[$0-1], $$[$0-2], $$[$0])); -break; -case 198:this.$ = yy.addLocationDataFn(_$[$0-2], _$[$0])(new yy.Op($$[$0-1], $$[$0-2], $$[$0])); -break; -case 199:this.$ = yy.addLocationDataFn(_$[$0-2], _$[$0])(new yy.Op($$[$0-1], $$[$0-2], $$[$0])); -break; -case 200:this.$ = yy.addLocationDataFn(_$[$0-2], _$[$0])((function () { - if ($$[$0-1].charAt(0) === '!') { - return new yy.Op($$[$0-1].slice(1), $$[$0-2], $$[$0]).invert(); - } else { - return new yy.Op($$[$0-1], $$[$0-2], $$[$0]); - } - }())); -break; -case 201:this.$ = yy.addLocationDataFn(_$[$0-2], _$[$0])(new yy.Assign($$[$0-2], $$[$0], $$[$0-1])); -break; -case 202:this.$ = yy.addLocationDataFn(_$[$0-4], _$[$0])(new yy.Assign($$[$0-4], $$[$0-1], $$[$0-3])); -break; -case 203:this.$ = yy.addLocationDataFn(_$[$0-3], _$[$0])(new yy.Assign($$[$0-3], $$[$0], $$[$0-2])); -break; -case 204:this.$ = yy.addLocationDataFn(_$[$0-2], _$[$0])(new yy.Extends($$[$0-2], $$[$0])); -break; -} -}, -table: [{1:[2,1],3:1,4:2,5:3,7:4,8:5,9:18,10:19,11:[1,20],12:6,13:7,14:8,15:9,16:10,17:11,18:12,19:13,20:14,21:15,22:16,23:17,27:60,28:[1,71],29:47,30:[1,69],31:[1,70],32:22,33:[1,48],34:[1,49],35:[1,50],36:[1,51],37:[1,52],38:[1,53],39:21,44:61,45:[1,43],46:[1,44],47:[1,27],50:28,51:[1,58],52:[1,59],58:45,59:46,61:34,63:23,64:24,65:25,76:[1,68],79:[1,41],83:[1,26],88:[1,56],89:[1,57],90:[1,55],96:[1,36],100:[1,42],101:[1,54],103:37,104:[1,63],106:[1,64],107:38,108:[1,65],109:39,110:[1,66],111:67,119:[1,40],124:35,125:[1,62],127:[1,29],128:[1,30],129:[1,31],130:[1,32],131:[1,33]},{1:[3]},{1:[2,2],6:[1,72]},{1:[2,3],6:[2,3],26:[2,3],102:[2,3]},{1:[2,6],6:[2,6],26:[2,6],102:[2,6],103:82,104:[1,63],106:[1,64],109:83,110:[1,66],111:67,126:[1,81],128:[1,75],129:[1,74],132:[1,73],133:[1,76],134:[1,77],135:[1,78],136:[1,79],137:[1,80]},{1:[2,7],6:[2,7],26:[2,7],102:[2,7],103:85,104:[1,63],106:[1,64],109:86,110:[1,66],111:67,126:[1,84]},{1:[2,11],6:[2,11],25:[2,11],26:[2,11],49:[2,11],54:[2,11],57:[2,11],62:88,66:[1,90],67:[1,91],68:[1,92],69:[1,93],70:94,71:[1,95],73:[2,11],74:[1,96],78:[2,11],81:87,84:[1,89],85:[2,107],86:[2,11],91:[2,11],93:[2,11],102:[2,11],104:[2,11],105:[2,11],106:[2,11],110:[2,11],118:[2,11],126:[2,11],128:[2,11],129:[2,11],132:[2,11],133:[2,11],134:[2,11],135:[2,11],136:[2,11],137:[2,11]},{1:[2,12],6:[2,12],25:[2,12],26:[2,12],49:[2,12],54:[2,12],57:[2,12],62:98,66:[1,90],67:[1,91],68:[1,92],69:[1,93],70:94,71:[1,95],73:[2,12],74:[1,96],78:[2,12],81:97,84:[1,89],85:[2,107],86:[2,12],91:[2,12],93:[2,12],102:[2,12],104:[2,12],105:[2,12],106:[2,12],110:[2,12],118:[2,12],126:[2,12],128:[2,12],129:[2,12],132:[2,12],133:[2,12],134:[2,12],135:[2,12],136:[2,12],137:[2,12]},{1:[2,13],6:[2,13],25:[2,13],26:[2,13],49:[2,13],54:[2,13],57:[2,13],73:[2,13],78:[2,13],86:[2,13],91:[2,13],93:[2,13],102:[2,13],104:[2,13],105:[2,13],106:[2,13],110:[2,13],118:[2,13],126:[2,13],128:[2,13],129:[2,13],132:[2,13],133:[2,13],134:[2,13],135:[2,13],136:[2,13],137:[2,13]},{1:[2,14],6:[2,14],25:[2,14],26:[2,14],49:[2,14],54:[2,14],57:[2,14],73:[2,14],78:[2,14],86:[2,14],91:[2,14],93:[2,14],102:[2,14],104:[2,14],105:[2,14],106:[2,14],110:[2,14],118:[2,14],126:[2,14],128:[2,14],129:[2,14],132:[2,14],133:[2,14],134:[2,14],135:[2,14],136:[2,14],137:[2,14]},{1:[2,15],6:[2,15],25:[2,15],26:[2,15],49:[2,15],54:[2,15],57:[2,15],73:[2,15],78:[2,15],86:[2,15],91:[2,15],93:[2,15],102:[2,15],104:[2,15],105:[2,15],106:[2,15],110:[2,15],118:[2,15],126:[2,15],128:[2,15],129:[2,15],132:[2,15],133:[2,15],134:[2,15],135:[2,15],136:[2,15],137:[2,15]},{1:[2,16],6:[2,16],25:[2,16],26:[2,16],49:[2,16],54:[2,16],57:[2,16],73:[2,16],78:[2,16],86:[2,16],91:[2,16],93:[2,16],102:[2,16],104:[2,16],105:[2,16],106:[2,16],110:[2,16],118:[2,16],126:[2,16],128:[2,16],129:[2,16],132:[2,16],133:[2,16],134:[2,16],135:[2,16],136:[2,16],137:[2,16]},{1:[2,17],6:[2,17],25:[2,17],26:[2,17],49:[2,17],54:[2,17],57:[2,17],73:[2,17],78:[2,17],86:[2,17],91:[2,17],93:[2,17],102:[2,17],104:[2,17],105:[2,17],106:[2,17],110:[2,17],118:[2,17],126:[2,17],128:[2,17],129:[2,17],132:[2,17],133:[2,17],134:[2,17],135:[2,17],136:[2,17],137:[2,17]},{1:[2,18],6:[2,18],25:[2,18],26:[2,18],49:[2,18],54:[2,18],57:[2,18],73:[2,18],78:[2,18],86:[2,18],91:[2,18],93:[2,18],102:[2,18],104:[2,18],105:[2,18],106:[2,18],110:[2,18],118:[2,18],126:[2,18],128:[2,18],129:[2,18],132:[2,18],133:[2,18],134:[2,18],135:[2,18],136:[2,18],137:[2,18]},{1:[2,19],6:[2,19],25:[2,19],26:[2,19],49:[2,19],54:[2,19],57:[2,19],73:[2,19],78:[2,19],86:[2,19],91:[2,19],93:[2,19],102:[2,19],104:[2,19],105:[2,19],106:[2,19],110:[2,19],118:[2,19],126:[2,19],128:[2,19],129:[2,19],132:[2,19],133:[2,19],134:[2,19],135:[2,19],136:[2,19],137:[2,19]},{1:[2,20],6:[2,20],25:[2,20],26:[2,20],49:[2,20],54:[2,20],57:[2,20],73:[2,20],78:[2,20],86:[2,20],91:[2,20],93:[2,20],102:[2,20],104:[2,20],105:[2,20],106:[2,20],110:[2,20],118:[2,20],126:[2,20],128:[2,20],129:[2,20],132:[2,20],133:[2,20],134:[2,20],135:[2,20],136:[2,20],137:[2,20]},{1:[2,21],6:[2,21],25:[2,21],26:[2,21],49:[2,21],54:[2,21],57:[2,21],73:[2,21],78:[2,21],86:[2,21],91:[2,21],93:[2,21],102:[2,21],104:[2,21],105:[2,21],106:[2,21],110:[2,21],118:[2,21],126:[2,21],128:[2,21],129:[2,21],132:[2,21],133:[2,21],134:[2,21],135:[2,21],136:[2,21],137:[2,21]},{1:[2,22],6:[2,22],25:[2,22],26:[2,22],49:[2,22],54:[2,22],57:[2,22],73:[2,22],78:[2,22],86:[2,22],91:[2,22],93:[2,22],102:[2,22],104:[2,22],105:[2,22],106:[2,22],110:[2,22],118:[2,22],126:[2,22],128:[2,22],129:[2,22],132:[2,22],133:[2,22],134:[2,22],135:[2,22],136:[2,22],137:[2,22]},{1:[2,8],6:[2,8],26:[2,8],102:[2,8],104:[2,8],106:[2,8],110:[2,8],126:[2,8]},{1:[2,9],6:[2,9],26:[2,9],102:[2,9],104:[2,9],106:[2,9],110:[2,9],126:[2,9]},{1:[2,10],6:[2,10],26:[2,10],102:[2,10],104:[2,10],106:[2,10],110:[2,10],126:[2,10]},{1:[2,74],6:[2,74],25:[2,74],26:[2,74],40:[1,99],49:[2,74],54:[2,74],57:[2,74],66:[2,74],67:[2,74],68:[2,74],69:[2,74],71:[2,74],73:[2,74],74:[2,74],78:[2,74],84:[2,74],85:[2,74],86:[2,74],91:[2,74],93:[2,74],102:[2,74],104:[2,74],105:[2,74],106:[2,74],110:[2,74],118:[2,74],126:[2,74],128:[2,74],129:[2,74],132:[2,74],133:[2,74],134:[2,74],135:[2,74],136:[2,74],137:[2,74]},{1:[2,75],6:[2,75],25:[2,75],26:[2,75],49:[2,75],54:[2,75],57:[2,75],66:[2,75],67:[2,75],68:[2,75],69:[2,75],71:[2,75],73:[2,75],74:[2,75],78:[2,75],84:[2,75],85:[2,75],86:[2,75],91:[2,75],93:[2,75],102:[2,75],104:[2,75],105:[2,75],106:[2,75],110:[2,75],118:[2,75],126:[2,75],128:[2,75],129:[2,75],132:[2,75],133:[2,75],134:[2,75],135:[2,75],136:[2,75],137:[2,75]},{1:[2,76],6:[2,76],25:[2,76],26:[2,76],49:[2,76],54:[2,76],57:[2,76],66:[2,76],67:[2,76],68:[2,76],69:[2,76],71:[2,76],73:[2,76],74:[2,76],78:[2,76],84:[2,76],85:[2,76],86:[2,76],91:[2,76],93:[2,76],102:[2,76],104:[2,76],105:[2,76],106:[2,76],110:[2,76],118:[2,76],126:[2,76],128:[2,76],129:[2,76],132:[2,76],133:[2,76],134:[2,76],135:[2,76],136:[2,76],137:[2,76]},{1:[2,77],6:[2,77],25:[2,77],26:[2,77],49:[2,77],54:[2,77],57:[2,77],66:[2,77],67:[2,77],68:[2,77],69:[2,77],71:[2,77],73:[2,77],74:[2,77],78:[2,77],84:[2,77],85:[2,77],86:[2,77],91:[2,77],93:[2,77],102:[2,77],104:[2,77],105:[2,77],106:[2,77],110:[2,77],118:[2,77],126:[2,77],128:[2,77],129:[2,77],132:[2,77],133:[2,77],134:[2,77],135:[2,77],136:[2,77],137:[2,77]},{1:[2,78],6:[2,78],25:[2,78],26:[2,78],49:[2,78],54:[2,78],57:[2,78],66:[2,78],67:[2,78],68:[2,78],69:[2,78],71:[2,78],73:[2,78],74:[2,78],78:[2,78],84:[2,78],85:[2,78],86:[2,78],91:[2,78],93:[2,78],102:[2,78],104:[2,78],105:[2,78],106:[2,78],110:[2,78],118:[2,78],126:[2,78],128:[2,78],129:[2,78],132:[2,78],133:[2,78],134:[2,78],135:[2,78],136:[2,78],137:[2,78]},{1:[2,105],6:[2,105],25:[2,105],26:[2,105],49:[2,105],54:[2,105],57:[2,105],66:[2,105],67:[2,105],68:[2,105],69:[2,105],71:[2,105],73:[2,105],74:[2,105],78:[2,105],82:100,84:[2,105],85:[1,101],86:[2,105],91:[2,105],93:[2,105],102:[2,105],104:[2,105],105:[2,105],106:[2,105],110:[2,105],118:[2,105],126:[2,105],128:[2,105],129:[2,105],132:[2,105],133:[2,105],134:[2,105],135:[2,105],136:[2,105],137:[2,105]},{6:[2,54],25:[2,54],27:105,28:[1,71],44:106,48:102,49:[2,54],54:[2,54],55:103,56:104,58:107,59:108,76:[1,68],89:[1,109],90:[1,110]},{24:111,25:[1,112]},{7:113,8:114,9:18,10:19,11:[1,20],12:6,13:7,14:8,15:9,16:10,17:11,18:12,19:13,20:14,21:15,22:16,23:17,27:60,28:[1,71],29:47,30:[1,69],31:[1,70],32:22,33:[1,48],34:[1,49],35:[1,50],36:[1,51],37:[1,52],38:[1,53],39:21,44:61,45:[1,43],46:[1,44],47:[1,27],50:28,51:[1,58],52:[1,59],58:45,59:46,61:34,63:23,64:24,65:25,76:[1,68],79:[1,41],83:[1,26],88:[1,56],89:[1,57],90:[1,55],96:[1,36],100:[1,42],101:[1,54],103:37,104:[1,63],106:[1,64],107:38,108:[1,65],109:39,110:[1,66],111:67,119:[1,40],124:35,125:[1,62],127:[1,29],128:[1,30],129:[1,31],130:[1,32],131:[1,33]},{7:115,8:114,9:18,10:19,11:[1,20],12:6,13:7,14:8,15:9,16:10,17:11,18:12,19:13,20:14,21:15,22:16,23:17,27:60,28:[1,71],29:47,30:[1,69],31:[1,70],32:22,33:[1,48],34:[1,49],35:[1,50],36:[1,51],37:[1,52],38:[1,53],39:21,44:61,45:[1,43],46:[1,44],47:[1,27],50:28,51:[1,58],52:[1,59],58:45,59:46,61:34,63:23,64:24,65:25,76:[1,68],79:[1,41],83:[1,26],88:[1,56],89:[1,57],90:[1,55],96:[1,36],100:[1,42],101:[1,54],103:37,104:[1,63],106:[1,64],107:38,108:[1,65],109:39,110:[1,66],111:67,119:[1,40],124:35,125:[1,62],127:[1,29],128:[1,30],129:[1,31],130:[1,32],131:[1,33]},{7:116,8:114,9:18,10:19,11:[1,20],12:6,13:7,14:8,15:9,16:10,17:11,18:12,19:13,20:14,21:15,22:16,23:17,27:60,28:[1,71],29:47,30:[1,69],31:[1,70],32:22,33:[1,48],34:[1,49],35:[1,50],36:[1,51],37:[1,52],38:[1,53],39:21,44:61,45:[1,43],46:[1,44],47:[1,27],50:28,51:[1,58],52:[1,59],58:45,59:46,61:34,63:23,64:24,65:25,76:[1,68],79:[1,41],83:[1,26],88:[1,56],89:[1,57],90:[1,55],96:[1,36],100:[1,42],101:[1,54],103:37,104:[1,63],106:[1,64],107:38,108:[1,65],109:39,110:[1,66],111:67,119:[1,40],124:35,125:[1,62],127:[1,29],128:[1,30],129:[1,31],130:[1,32],131:[1,33]},{12:118,13:119,27:60,28:[1,71],29:47,30:[1,69],31:[1,70],32:22,33:[1,48],34:[1,49],35:[1,50],36:[1,51],37:[1,52],38:[1,53],39:120,44:61,58:45,59:46,61:117,63:23,64:24,65:25,76:[1,68],83:[1,26],88:[1,56],89:[1,57],90:[1,55],101:[1,54]},{12:118,13:119,27:60,28:[1,71],29:47,30:[1,69],31:[1,70],32:22,33:[1,48],34:[1,49],35:[1,50],36:[1,51],37:[1,52],38:[1,53],39:120,44:61,58:45,59:46,61:121,63:23,64:24,65:25,76:[1,68],83:[1,26],88:[1,56],89:[1,57],90:[1,55],101:[1,54]},{1:[2,71],6:[2,71],25:[2,71],26:[2,71],40:[2,71],49:[2,71],54:[2,71],57:[2,71],66:[2,71],67:[2,71],68:[2,71],69:[2,71],71:[2,71],73:[2,71],74:[2,71],78:[2,71],80:[1,125],84:[2,71],85:[2,71],86:[2,71],91:[2,71],93:[2,71],102:[2,71],104:[2,71],105:[2,71],106:[2,71],110:[2,71],118:[2,71],126:[2,71],128:[2,71],129:[2,71],130:[1,122],131:[1,123],132:[2,71],133:[2,71],134:[2,71],135:[2,71],136:[2,71],137:[2,71],138:[1,124]},{1:[2,182],6:[2,182],25:[2,182],26:[2,182],49:[2,182],54:[2,182],57:[2,182],73:[2,182],78:[2,182],86:[2,182],91:[2,182],93:[2,182],102:[2,182],104:[2,182],105:[2,182],106:[2,182],110:[2,182],118:[2,182],121:[1,126],126:[2,182],128:[2,182],129:[2,182],132:[2,182],133:[2,182],134:[2,182],135:[2,182],136:[2,182],137:[2,182]},{24:127,25:[1,112]},{24:128,25:[1,112]},{1:[2,149],6:[2,149],25:[2,149],26:[2,149],49:[2,149],54:[2,149],57:[2,149],73:[2,149],78:[2,149],86:[2,149],91:[2,149],93:[2,149],102:[2,149],104:[2,149],105:[2,149],106:[2,149],110:[2,149],118:[2,149],126:[2,149],128:[2,149],129:[2,149],132:[2,149],133:[2,149],134:[2,149],135:[2,149],136:[2,149],137:[2,149]},{24:129,25:[1,112]},{7:130,8:114,9:18,10:19,11:[1,20],12:6,13:7,14:8,15:9,16:10,17:11,18:12,19:13,20:14,21:15,22:16,23:17,25:[1,131],27:60,28:[1,71],29:47,30:[1,69],31:[1,70],32:22,33:[1,48],34:[1,49],35:[1,50],36:[1,51],37:[1,52],38:[1,53],39:21,44:61,45:[1,43],46:[1,44],47:[1,27],50:28,51:[1,58],52:[1,59],58:45,59:46,61:34,63:23,64:24,65:25,76:[1,68],79:[1,41],83:[1,26],88:[1,56],89:[1,57],90:[1,55],96:[1,36],100:[1,42],101:[1,54],103:37,104:[1,63],106:[1,64],107:38,108:[1,65],109:39,110:[1,66],111:67,119:[1,40],124:35,125:[1,62],127:[1,29],128:[1,30],129:[1,31],130:[1,32],131:[1,33]},{1:[2,95],6:[2,95],12:118,13:119,24:132,25:[1,112],26:[2,95],27:60,28:[1,71],29:47,30:[1,69],31:[1,70],32:22,33:[1,48],34:[1,49],35:[1,50],36:[1,51],37:[1,52],38:[1,53],39:120,44:61,49:[2,95],54:[2,95],57:[2,95],58:45,59:46,61:134,63:23,64:24,65:25,73:[2,95],76:[1,68],78:[2,95],80:[1,133],83:[1,26],86:[2,95],88:[1,56],89:[1,57],90:[1,55],91:[2,95],93:[2,95],101:[1,54],102:[2,95],104:[2,95],105:[2,95],106:[2,95],110:[2,95],118:[2,95],126:[2,95],128:[2,95],129:[2,95],132:[2,95],133:[2,95],134:[2,95],135:[2,95],136:[2,95],137:[2,95]},{7:135,8:114,9:18,10:19,11:[1,20],12:6,13:7,14:8,15:9,16:10,17:11,18:12,19:13,20:14,21:15,22:16,23:17,27:60,28:[1,71],29:47,30:[1,69],31:[1,70],32:22,33:[1,48],34:[1,49],35:[1,50],36:[1,51],37:[1,52],38:[1,53],39:21,44:61,45:[1,43],46:[1,44],47:[1,27],50:28,51:[1,58],52:[1,59],58:45,59:46,61:34,63:23,64:24,65:25,76:[1,68],79:[1,41],83:[1,26],88:[1,56],89:[1,57],90:[1,55],96:[1,36],100:[1,42],101:[1,54],103:37,104:[1,63],106:[1,64],107:38,108:[1,65],109:39,110:[1,66],111:67,119:[1,40],124:35,125:[1,62],127:[1,29],128:[1,30],129:[1,31],130:[1,32],131:[1,33]},{1:[2,46],6:[2,46],7:136,8:114,9:18,10:19,11:[1,20],12:6,13:7,14:8,15:9,16:10,17:11,18:12,19:13,20:14,21:15,22:16,23:17,26:[2,46],27:60,28:[1,71],29:47,30:[1,69],31:[1,70],32:22,33:[1,48],34:[1,49],35:[1,50],36:[1,51],37:[1,52],38:[1,53],39:21,44:61,45:[1,43],46:[1,44],47:[1,27],50:28,51:[1,58],52:[1,59],58:45,59:46,61:34,63:23,64:24,65:25,76:[1,68],79:[1,41],83:[1,26],88:[1,56],89:[1,57],90:[1,55],96:[1,36],100:[1,42],101:[1,54],102:[2,46],103:37,104:[2,46],106:[2,46],107:38,108:[1,65],109:39,110:[2,46],111:67,119:[1,40],124:35,125:[1,62],126:[2,46],127:[1,29],128:[1,30],129:[1,31],130:[1,32],131:[1,33]},{1:[2,47],6:[2,47],25:[2,47],26:[2,47],54:[2,47],78:[2,47],102:[2,47],104:[2,47],106:[2,47],110:[2,47],126:[2,47]},{1:[2,72],6:[2,72],25:[2,72],26:[2,72],40:[2,72],49:[2,72],54:[2,72],57:[2,72],66:[2,72],67:[2,72],68:[2,72],69:[2,72],71:[2,72],73:[2,72],74:[2,72],78:[2,72],84:[2,72],85:[2,72],86:[2,72],91:[2,72],93:[2,72],102:[2,72],104:[2,72],105:[2,72],106:[2,72],110:[2,72],118:[2,72],126:[2,72],128:[2,72],129:[2,72],132:[2,72],133:[2,72],134:[2,72],135:[2,72],136:[2,72],137:[2,72]},{1:[2,73],6:[2,73],25:[2,73],26:[2,73],40:[2,73],49:[2,73],54:[2,73],57:[2,73],66:[2,73],67:[2,73],68:[2,73],69:[2,73],71:[2,73],73:[2,73],74:[2,73],78:[2,73],84:[2,73],85:[2,73],86:[2,73],91:[2,73],93:[2,73],102:[2,73],104:[2,73],105:[2,73],106:[2,73],110:[2,73],118:[2,73],126:[2,73],128:[2,73],129:[2,73],132:[2,73],133:[2,73],134:[2,73],135:[2,73],136:[2,73],137:[2,73]},{1:[2,28],6:[2,28],25:[2,28],26:[2,28],49:[2,28],54:[2,28],57:[2,28],66:[2,28],67:[2,28],68:[2,28],69:[2,28],71:[2,28],73:[2,28],74:[2,28],78:[2,28],84:[2,28],85:[2,28],86:[2,28],91:[2,28],93:[2,28],102:[2,28],104:[2,28],105:[2,28],106:[2,28],110:[2,28],118:[2,28],126:[2,28],128:[2,28],129:[2,28],132:[2,28],133:[2,28],134:[2,28],135:[2,28],136:[2,28],137:[2,28]},{1:[2,29],6:[2,29],25:[2,29],26:[2,29],49:[2,29],54:[2,29],57:[2,29],66:[2,29],67:[2,29],68:[2,29],69:[2,29],71:[2,29],73:[2,29],74:[2,29],78:[2,29],84:[2,29],85:[2,29],86:[2,29],91:[2,29],93:[2,29],102:[2,29],104:[2,29],105:[2,29],106:[2,29],110:[2,29],118:[2,29],126:[2,29],128:[2,29],129:[2,29],132:[2,29],133:[2,29],134:[2,29],135:[2,29],136:[2,29],137:[2,29]},{1:[2,30],6:[2,30],25:[2,30],26:[2,30],49:[2,30],54:[2,30],57:[2,30],66:[2,30],67:[2,30],68:[2,30],69:[2,30],71:[2,30],73:[2,30],74:[2,30],78:[2,30],84:[2,30],85:[2,30],86:[2,30],91:[2,30],93:[2,30],102:[2,30],104:[2,30],105:[2,30],106:[2,30],110:[2,30],118:[2,30],126:[2,30],128:[2,30],129:[2,30],132:[2,30],133:[2,30],134:[2,30],135:[2,30],136:[2,30],137:[2,30]},{1:[2,31],6:[2,31],25:[2,31],26:[2,31],49:[2,31],54:[2,31],57:[2,31],66:[2,31],67:[2,31],68:[2,31],69:[2,31],71:[2,31],73:[2,31],74:[2,31],78:[2,31],84:[2,31],85:[2,31],86:[2,31],91:[2,31],93:[2,31],102:[2,31],104:[2,31],105:[2,31],106:[2,31],110:[2,31],118:[2,31],126:[2,31],128:[2,31],129:[2,31],132:[2,31],133:[2,31],134:[2,31],135:[2,31],136:[2,31],137:[2,31]},{1:[2,32],6:[2,32],25:[2,32],26:[2,32],49:[2,32],54:[2,32],57:[2,32],66:[2,32],67:[2,32],68:[2,32],69:[2,32],71:[2,32],73:[2,32],74:[2,32],78:[2,32],84:[2,32],85:[2,32],86:[2,32],91:[2,32],93:[2,32],102:[2,32],104:[2,32],105:[2,32],106:[2,32],110:[2,32],118:[2,32],126:[2,32],128:[2,32],129:[2,32],132:[2,32],133:[2,32],134:[2,32],135:[2,32],136:[2,32],137:[2,32]},{1:[2,33],6:[2,33],25:[2,33],26:[2,33],49:[2,33],54:[2,33],57:[2,33],66:[2,33],67:[2,33],68:[2,33],69:[2,33],71:[2,33],73:[2,33],74:[2,33],78:[2,33],84:[2,33],85:[2,33],86:[2,33],91:[2,33],93:[2,33],102:[2,33],104:[2,33],105:[2,33],106:[2,33],110:[2,33],118:[2,33],126:[2,33],128:[2,33],129:[2,33],132:[2,33],133:[2,33],134:[2,33],135:[2,33],136:[2,33],137:[2,33]},{1:[2,34],6:[2,34],25:[2,34],26:[2,34],49:[2,34],54:[2,34],57:[2,34],66:[2,34],67:[2,34],68:[2,34],69:[2,34],71:[2,34],73:[2,34],74:[2,34],78:[2,34],84:[2,34],85:[2,34],86:[2,34],91:[2,34],93:[2,34],102:[2,34],104:[2,34],105:[2,34],106:[2,34],110:[2,34],118:[2,34],126:[2,34],128:[2,34],129:[2,34],132:[2,34],133:[2,34],134:[2,34],135:[2,34],136:[2,34],137:[2,34]},{4:137,5:3,7:4,8:5,9:18,10:19,11:[1,20],12:6,13:7,14:8,15:9,16:10,17:11,18:12,19:13,20:14,21:15,22:16,23:17,25:[1,138],27:60,28:[1,71],29:47,30:[1,69],31:[1,70],32:22,33:[1,48],34:[1,49],35:[1,50],36:[1,51],37:[1,52],38:[1,53],39:21,44:61,45:[1,43],46:[1,44],47:[1,27],50:28,51:[1,58],52:[1,59],58:45,59:46,61:34,63:23,64:24,65:25,76:[1,68],79:[1,41],83:[1,26],88:[1,56],89:[1,57],90:[1,55],96:[1,36],100:[1,42],101:[1,54],103:37,104:[1,63],106:[1,64],107:38,108:[1,65],109:39,110:[1,66],111:67,119:[1,40],124:35,125:[1,62],127:[1,29],128:[1,30],129:[1,31],130:[1,32],131:[1,33]},{7:139,8:114,9:18,10:19,11:[1,20],12:6,13:7,14:8,15:9,16:10,17:11,18:12,19:13,20:14,21:15,22:16,23:17,25:[1,143],27:60,28:[1,71],29:47,30:[1,69],31:[1,70],32:22,33:[1,48],34:[1,49],35:[1,50],36:[1,51],37:[1,52],38:[1,53],39:21,44:61,45:[1,43],46:[1,44],47:[1,27],50:28,51:[1,58],52:[1,59],58:45,59:46,60:144,61:34,63:23,64:24,65:25,76:[1,68],79:[1,41],83:[1,26],87:141,88:[1,56],89:[1,57],90:[1,55],91:[1,140],94:142,96:[1,36],100:[1,42],101:[1,54],103:37,104:[1,63],106:[1,64],107:38,108:[1,65],109:39,110:[1,66],111:67,119:[1,40],124:35,125:[1,62],127:[1,29],128:[1,30],129:[1,31],130:[1,32],131:[1,33]},{1:[2,111],6:[2,111],25:[2,111],26:[2,111],49:[2,111],54:[2,111],57:[2,111],66:[2,111],67:[2,111],68:[2,111],69:[2,111],71:[2,111],73:[2,111],74:[2,111],78:[2,111],84:[2,111],85:[2,111],86:[2,111],91:[2,111],93:[2,111],102:[2,111],104:[2,111],105:[2,111],106:[2,111],110:[2,111],118:[2,111],126:[2,111],128:[2,111],129:[2,111],132:[2,111],133:[2,111],134:[2,111],135:[2,111],136:[2,111],137:[2,111]},{1:[2,112],6:[2,112],25:[2,112],26:[2,112],27:145,28:[1,71],49:[2,112],54:[2,112],57:[2,112],66:[2,112],67:[2,112],68:[2,112],69:[2,112],71:[2,112],73:[2,112],74:[2,112],78:[2,112],84:[2,112],85:[2,112],86:[2,112],91:[2,112],93:[2,112],102:[2,112],104:[2,112],105:[2,112],106:[2,112],110:[2,112],118:[2,112],126:[2,112],128:[2,112],129:[2,112],132:[2,112],133:[2,112],134:[2,112],135:[2,112],136:[2,112],137:[2,112]},{25:[2,50]},{25:[2,51]},{1:[2,67],6:[2,67],25:[2,67],26:[2,67],40:[2,67],49:[2,67],54:[2,67],57:[2,67],66:[2,67],67:[2,67],68:[2,67],69:[2,67],71:[2,67],73:[2,67],74:[2,67],78:[2,67],80:[2,67],84:[2,67],85:[2,67],86:[2,67],91:[2,67],93:[2,67],102:[2,67],104:[2,67],105:[2,67],106:[2,67],110:[2,67],118:[2,67],126:[2,67],128:[2,67],129:[2,67],130:[2,67],131:[2,67],132:[2,67],133:[2,67],134:[2,67],135:[2,67],136:[2,67],137:[2,67],138:[2,67]},{1:[2,70],6:[2,70],25:[2,70],26:[2,70],40:[2,70],49:[2,70],54:[2,70],57:[2,70],66:[2,70],67:[2,70],68:[2,70],69:[2,70],71:[2,70],73:[2,70],74:[2,70],78:[2,70],80:[2,70],84:[2,70],85:[2,70],86:[2,70],91:[2,70],93:[2,70],102:[2,70],104:[2,70],105:[2,70],106:[2,70],110:[2,70],118:[2,70],126:[2,70],128:[2,70],129:[2,70],130:[2,70],131:[2,70],132:[2,70],133:[2,70],134:[2,70],135:[2,70],136:[2,70],137:[2,70],138:[2,70]},{7:146,8:114,9:18,10:19,11:[1,20],12:6,13:7,14:8,15:9,16:10,17:11,18:12,19:13,20:14,21:15,22:16,23:17,27:60,28:[1,71],29:47,30:[1,69],31:[1,70],32:22,33:[1,48],34:[1,49],35:[1,50],36:[1,51],37:[1,52],38:[1,53],39:21,44:61,45:[1,43],46:[1,44],47:[1,27],50:28,51:[1,58],52:[1,59],58:45,59:46,61:34,63:23,64:24,65:25,76:[1,68],79:[1,41],83:[1,26],88:[1,56],89:[1,57],90:[1,55],96:[1,36],100:[1,42],101:[1,54],103:37,104:[1,63],106:[1,64],107:38,108:[1,65],109:39,110:[1,66],111:67,119:[1,40],124:35,125:[1,62],127:[1,29],128:[1,30],129:[1,31],130:[1,32],131:[1,33]},{7:147,8:114,9:18,10:19,11:[1,20],12:6,13:7,14:8,15:9,16:10,17:11,18:12,19:13,20:14,21:15,22:16,23:17,27:60,28:[1,71],29:47,30:[1,69],31:[1,70],32:22,33:[1,48],34:[1,49],35:[1,50],36:[1,51],37:[1,52],38:[1,53],39:21,44:61,45:[1,43],46:[1,44],47:[1,27],50:28,51:[1,58],52:[1,59],58:45,59:46,61:34,63:23,64:24,65:25,76:[1,68],79:[1,41],83:[1,26],88:[1,56],89:[1,57],90:[1,55],96:[1,36],100:[1,42],101:[1,54],103:37,104:[1,63],106:[1,64],107:38,108:[1,65],109:39,110:[1,66],111:67,119:[1,40],124:35,125:[1,62],127:[1,29],128:[1,30],129:[1,31],130:[1,32],131:[1,33]},{7:148,8:114,9:18,10:19,11:[1,20],12:6,13:7,14:8,15:9,16:10,17:11,18:12,19:13,20:14,21:15,22:16,23:17,27:60,28:[1,71],29:47,30:[1,69],31:[1,70],32:22,33:[1,48],34:[1,49],35:[1,50],36:[1,51],37:[1,52],38:[1,53],39:21,44:61,45:[1,43],46:[1,44],47:[1,27],50:28,51:[1,58],52:[1,59],58:45,59:46,61:34,63:23,64:24,65:25,76:[1,68],79:[1,41],83:[1,26],88:[1,56],89:[1,57],90:[1,55],96:[1,36],100:[1,42],101:[1,54],103:37,104:[1,63],106:[1,64],107:38,108:[1,65],109:39,110:[1,66],111:67,119:[1,40],124:35,125:[1,62],127:[1,29],128:[1,30],129:[1,31],130:[1,32],131:[1,33]},{7:150,8:114,9:18,10:19,11:[1,20],12:6,13:7,14:8,15:9,16:10,17:11,18:12,19:13,20:14,21:15,22:16,23:17,24:149,25:[1,112],27:60,28:[1,71],29:47,30:[1,69],31:[1,70],32:22,33:[1,48],34:[1,49],35:[1,50],36:[1,51],37:[1,52],38:[1,53],39:21,44:61,45:[1,43],46:[1,44],47:[1,27],50:28,51:[1,58],52:[1,59],58:45,59:46,61:34,63:23,64:24,65:25,76:[1,68],79:[1,41],83:[1,26],88:[1,56],89:[1,57],90:[1,55],96:[1,36],100:[1,42],101:[1,54],103:37,104:[1,63],106:[1,64],107:38,108:[1,65],109:39,110:[1,66],111:67,119:[1,40],124:35,125:[1,62],127:[1,29],128:[1,30],129:[1,31],130:[1,32],131:[1,33]},{27:155,28:[1,71],44:156,58:157,59:158,64:151,76:[1,68],89:[1,109],90:[1,55],113:152,114:[1,153],115:154},{112:159,116:[1,160],117:[1,161]},{6:[2,90],10:165,25:[2,90],27:166,28:[1,71],29:167,30:[1,69],31:[1,70],41:163,42:164,44:168,46:[1,44],54:[2,90],77:162,78:[2,90],89:[1,109]},{1:[2,26],6:[2,26],25:[2,26],26:[2,26],43:[2,26],49:[2,26],54:[2,26],57:[2,26],66:[2,26],67:[2,26],68:[2,26],69:[2,26],71:[2,26],73:[2,26],74:[2,26],78:[2,26],84:[2,26],85:[2,26],86:[2,26],91:[2,26],93:[2,26],102:[2,26],104:[2,26],105:[2,26],106:[2,26],110:[2,26],118:[2,26],126:[2,26],128:[2,26],129:[2,26],132:[2,26],133:[2,26],134:[2,26],135:[2,26],136:[2,26],137:[2,26]},{1:[2,27],6:[2,27],25:[2,27],26:[2,27],43:[2,27],49:[2,27],54:[2,27],57:[2,27],66:[2,27],67:[2,27],68:[2,27],69:[2,27],71:[2,27],73:[2,27],74:[2,27],78:[2,27],84:[2,27],85:[2,27],86:[2,27],91:[2,27],93:[2,27],102:[2,27],104:[2,27],105:[2,27],106:[2,27],110:[2,27],118:[2,27],126:[2,27],128:[2,27],129:[2,27],132:[2,27],133:[2,27],134:[2,27],135:[2,27],136:[2,27],137:[2,27]},{1:[2,25],6:[2,25],25:[2,25],26:[2,25],40:[2,25],43:[2,25],49:[2,25],54:[2,25],57:[2,25],66:[2,25],67:[2,25],68:[2,25],69:[2,25],71:[2,25],73:[2,25],74:[2,25],78:[2,25],80:[2,25],84:[2,25],85:[2,25],86:[2,25],91:[2,25],93:[2,25],102:[2,25],104:[2,25],105:[2,25],106:[2,25],110:[2,25],116:[2,25],117:[2,25],118:[2,25],126:[2,25],128:[2,25],129:[2,25],130:[2,25],131:[2,25],132:[2,25],133:[2,25],134:[2,25],135:[2,25],136:[2,25],137:[2,25],138:[2,25]},{1:[2,5],5:169,6:[2,5],7:4,8:5,9:18,10:19,11:[1,20],12:6,13:7,14:8,15:9,16:10,17:11,18:12,19:13,20:14,21:15,22:16,23:17,26:[2,5],27:60,28:[1,71],29:47,30:[1,69],31:[1,70],32:22,33:[1,48],34:[1,49],35:[1,50],36:[1,51],37:[1,52],38:[1,53],39:21,44:61,45:[1,43],46:[1,44],47:[1,27],50:28,51:[1,58],52:[1,59],58:45,59:46,61:34,63:23,64:24,65:25,76:[1,68],79:[1,41],83:[1,26],88:[1,56],89:[1,57],90:[1,55],96:[1,36],100:[1,42],101:[1,54],102:[2,5],103:37,104:[1,63],106:[1,64],107:38,108:[1,65],109:39,110:[1,66],111:67,119:[1,40],124:35,125:[1,62],127:[1,29],128:[1,30],129:[1,31],130:[1,32],131:[1,33]},{1:[2,193],6:[2,193],25:[2,193],26:[2,193],49:[2,193],54:[2,193],57:[2,193],73:[2,193],78:[2,193],86:[2,193],91:[2,193],93:[2,193],102:[2,193],104:[2,193],105:[2,193],106:[2,193],110:[2,193],118:[2,193],126:[2,193],128:[2,193],129:[2,193],132:[2,193],133:[2,193],134:[2,193],135:[2,193],136:[2,193],137:[2,193]},{7:170,8:114,9:18,10:19,11:[1,20],12:6,13:7,14:8,15:9,16:10,17:11,18:12,19:13,20:14,21:15,22:16,23:17,27:60,28:[1,71],29:47,30:[1,69],31:[1,70],32:22,33:[1,48],34:[1,49],35:[1,50],36:[1,51],37:[1,52],38:[1,53],39:21,44:61,45:[1,43],46:[1,44],47:[1,27],50:28,51:[1,58],52:[1,59],58:45,59:46,61:34,63:23,64:24,65:25,76:[1,68],79:[1,41],83:[1,26],88:[1,56],89:[1,57],90:[1,55],96:[1,36],100:[1,42],101:[1,54],103:37,104:[1,63],106:[1,64],107:38,108:[1,65],109:39,110:[1,66],111:67,119:[1,40],124:35,125:[1,62],127:[1,29],128:[1,30],129:[1,31],130:[1,32],131:[1,33]},{7:171,8:114,9:18,10:19,11:[1,20],12:6,13:7,14:8,15:9,16:10,17:11,18:12,19:13,20:14,21:15,22:16,23:17,27:60,28:[1,71],29:47,30:[1,69],31:[1,70],32:22,33:[1,48],34:[1,49],35:[1,50],36:[1,51],37:[1,52],38:[1,53],39:21,44:61,45:[1,43],46:[1,44],47:[1,27],50:28,51:[1,58],52:[1,59],58:45,59:46,61:34,63:23,64:24,65:25,76:[1,68],79:[1,41],83:[1,26],88:[1,56],89:[1,57],90:[1,55],96:[1,36],100:[1,42],101:[1,54],103:37,104:[1,63],106:[1,64],107:38,108:[1,65],109:39,110:[1,66],111:67,119:[1,40],124:35,125:[1,62],127:[1,29],128:[1,30],129:[1,31],130:[1,32],131:[1,33]},{7:172,8:114,9:18,10:19,11:[1,20],12:6,13:7,14:8,15:9,16:10,17:11,18:12,19:13,20:14,21:15,22:16,23:17,27:60,28:[1,71],29:47,30:[1,69],31:[1,70],32:22,33:[1,48],34:[1,49],35:[1,50],36:[1,51],37:[1,52],38:[1,53],39:21,44:61,45:[1,43],46:[1,44],47:[1,27],50:28,51:[1,58],52:[1,59],58:45,59:46,61:34,63:23,64:24,65:25,76:[1,68],79:[1,41],83:[1,26],88:[1,56],89:[1,57],90:[1,55],96:[1,36],100:[1,42],101:[1,54],103:37,104:[1,63],106:[1,64],107:38,108:[1,65],109:39,110:[1,66],111:67,119:[1,40],124:35,125:[1,62],127:[1,29],128:[1,30],129:[1,31],130:[1,32],131:[1,33]},{7:173,8:114,9:18,10:19,11:[1,20],12:6,13:7,14:8,15:9,16:10,17:11,18:12,19:13,20:14,21:15,22:16,23:17,27:60,28:[1,71],29:47,30:[1,69],31:[1,70],32:22,33:[1,48],34:[1,49],35:[1,50],36:[1,51],37:[1,52],38:[1,53],39:21,44:61,45:[1,43],46:[1,44],47:[1,27],50:28,51:[1,58],52:[1,59],58:45,59:46,61:34,63:23,64:24,65:25,76:[1,68],79:[1,41],83:[1,26],88:[1,56],89:[1,57],90:[1,55],96:[1,36],100:[1,42],101:[1,54],103:37,104:[1,63],106:[1,64],107:38,108:[1,65],109:39,110:[1,66],111:67,119:[1,40],124:35,125:[1,62],127:[1,29],128:[1,30],129:[1,31],130:[1,32],131:[1,33]},{7:174,8:114,9:18,10:19,11:[1,20],12:6,13:7,14:8,15:9,16:10,17:11,18:12,19:13,20:14,21:15,22:16,23:17,27:60,28:[1,71],29:47,30:[1,69],31:[1,70],32:22,33:[1,48],34:[1,49],35:[1,50],36:[1,51],37:[1,52],38:[1,53],39:21,44:61,45:[1,43],46:[1,44],47:[1,27],50:28,51:[1,58],52:[1,59],58:45,59:46,61:34,63:23,64:24,65:25,76:[1,68],79:[1,41],83:[1,26],88:[1,56],89:[1,57],90:[1,55],96:[1,36],100:[1,42],101:[1,54],103:37,104:[1,63],106:[1,64],107:38,108:[1,65],109:39,110:[1,66],111:67,119:[1,40],124:35,125:[1,62],127:[1,29],128:[1,30],129:[1,31],130:[1,32],131:[1,33]},{7:175,8:114,9:18,10:19,11:[1,20],12:6,13:7,14:8,15:9,16:10,17:11,18:12,19:13,20:14,21:15,22:16,23:17,27:60,28:[1,71],29:47,30:[1,69],31:[1,70],32:22,33:[1,48],34:[1,49],35:[1,50],36:[1,51],37:[1,52],38:[1,53],39:21,44:61,45:[1,43],46:[1,44],47:[1,27],50:28,51:[1,58],52:[1,59],58:45,59:46,61:34,63:23,64:24,65:25,76:[1,68],79:[1,41],83:[1,26],88:[1,56],89:[1,57],90:[1,55],96:[1,36],100:[1,42],101:[1,54],103:37,104:[1,63],106:[1,64],107:38,108:[1,65],109:39,110:[1,66],111:67,119:[1,40],124:35,125:[1,62],127:[1,29],128:[1,30],129:[1,31],130:[1,32],131:[1,33]},{7:176,8:114,9:18,10:19,11:[1,20],12:6,13:7,14:8,15:9,16:10,17:11,18:12,19:13,20:14,21:15,22:16,23:17,27:60,28:[1,71],29:47,30:[1,69],31:[1,70],32:22,33:[1,48],34:[1,49],35:[1,50],36:[1,51],37:[1,52],38:[1,53],39:21,44:61,45:[1,43],46:[1,44],47:[1,27],50:28,51:[1,58],52:[1,59],58:45,59:46,61:34,63:23,64:24,65:25,76:[1,68],79:[1,41],83:[1,26],88:[1,56],89:[1,57],90:[1,55],96:[1,36],100:[1,42],101:[1,54],103:37,104:[1,63],106:[1,64],107:38,108:[1,65],109:39,110:[1,66],111:67,119:[1,40],124:35,125:[1,62],127:[1,29],128:[1,30],129:[1,31],130:[1,32],131:[1,33]},{7:177,8:114,9:18,10:19,11:[1,20],12:6,13:7,14:8,15:9,16:10,17:11,18:12,19:13,20:14,21:15,22:16,23:17,27:60,28:[1,71],29:47,30:[1,69],31:[1,70],32:22,33:[1,48],34:[1,49],35:[1,50],36:[1,51],37:[1,52],38:[1,53],39:21,44:61,45:[1,43],46:[1,44],47:[1,27],50:28,51:[1,58],52:[1,59],58:45,59:46,61:34,63:23,64:24,65:25,76:[1,68],79:[1,41],83:[1,26],88:[1,56],89:[1,57],90:[1,55],96:[1,36],100:[1,42],101:[1,54],103:37,104:[1,63],106:[1,64],107:38,108:[1,65],109:39,110:[1,66],111:67,119:[1,40],124:35,125:[1,62],127:[1,29],128:[1,30],129:[1,31],130:[1,32],131:[1,33]},{1:[2,148],6:[2,148],25:[2,148],26:[2,148],49:[2,148],54:[2,148],57:[2,148],73:[2,148],78:[2,148],86:[2,148],91:[2,148],93:[2,148],102:[2,148],104:[2,148],105:[2,148],106:[2,148],110:[2,148],118:[2,148],126:[2,148],128:[2,148],129:[2,148],132:[2,148],133:[2,148],134:[2,148],135:[2,148],136:[2,148],137:[2,148]},{1:[2,153],6:[2,153],25:[2,153],26:[2,153],49:[2,153],54:[2,153],57:[2,153],73:[2,153],78:[2,153],86:[2,153],91:[2,153],93:[2,153],102:[2,153],104:[2,153],105:[2,153],106:[2,153],110:[2,153],118:[2,153],126:[2,153],128:[2,153],129:[2,153],132:[2,153],133:[2,153],134:[2,153],135:[2,153],136:[2,153],137:[2,153]},{7:178,8:114,9:18,10:19,11:[1,20],12:6,13:7,14:8,15:9,16:10,17:11,18:12,19:13,20:14,21:15,22:16,23:17,27:60,28:[1,71],29:47,30:[1,69],31:[1,70],32:22,33:[1,48],34:[1,49],35:[1,50],36:[1,51],37:[1,52],38:[1,53],39:21,44:61,45:[1,43],46:[1,44],47:[1,27],50:28,51:[1,58],52:[1,59],58:45,59:46,61:34,63:23,64:24,65:25,76:[1,68],79:[1,41],83:[1,26],88:[1,56],89:[1,57],90:[1,55],96:[1,36],100:[1,42],101:[1,54],103:37,104:[1,63],106:[1,64],107:38,108:[1,65],109:39,110:[1,66],111:67,119:[1,40],124:35,125:[1,62],127:[1,29],128:[1,30],129:[1,31],130:[1,32],131:[1,33]},{1:[2,147],6:[2,147],25:[2,147],26:[2,147],49:[2,147],54:[2,147],57:[2,147],73:[2,147],78:[2,147],86:[2,147],91:[2,147],93:[2,147],102:[2,147],104:[2,147],105:[2,147],106:[2,147],110:[2,147],118:[2,147],126:[2,147],128:[2,147],129:[2,147],132:[2,147],133:[2,147],134:[2,147],135:[2,147],136:[2,147],137:[2,147]},{1:[2,152],6:[2,152],25:[2,152],26:[2,152],49:[2,152],54:[2,152],57:[2,152],73:[2,152],78:[2,152],86:[2,152],91:[2,152],93:[2,152],102:[2,152],104:[2,152],105:[2,152],106:[2,152],110:[2,152],118:[2,152],126:[2,152],128:[2,152],129:[2,152],132:[2,152],133:[2,152],134:[2,152],135:[2,152],136:[2,152],137:[2,152]},{82:179,85:[1,101]},{1:[2,68],6:[2,68],25:[2,68],26:[2,68],40:[2,68],49:[2,68],54:[2,68],57:[2,68],66:[2,68],67:[2,68],68:[2,68],69:[2,68],71:[2,68],73:[2,68],74:[2,68],78:[2,68],80:[2,68],84:[2,68],85:[2,68],86:[2,68],91:[2,68],93:[2,68],102:[2,68],104:[2,68],105:[2,68],106:[2,68],110:[2,68],118:[2,68],126:[2,68],128:[2,68],129:[2,68],130:[2,68],131:[2,68],132:[2,68],133:[2,68],134:[2,68],135:[2,68],136:[2,68],137:[2,68],138:[2,68]},{85:[2,108]},{27:180,28:[1,71]},{27:181,28:[1,71]},{1:[2,83],6:[2,83],25:[2,83],26:[2,83],27:182,28:[1,71],40:[2,83],49:[2,83],54:[2,83],57:[2,83],66:[2,83],67:[2,83],68:[2,83],69:[2,83],71:[2,83],73:[2,83],74:[2,83],78:[2,83],80:[2,83],84:[2,83],85:[2,83],86:[2,83],91:[2,83],93:[2,83],102:[2,83],104:[2,83],105:[2,83],106:[2,83],110:[2,83],118:[2,83],126:[2,83],128:[2,83],129:[2,83],130:[2,83],131:[2,83],132:[2,83],133:[2,83],134:[2,83],135:[2,83],136:[2,83],137:[2,83],138:[2,83]},{27:183,28:[1,71]},{1:[2,84],6:[2,84],25:[2,84],26:[2,84],40:[2,84],49:[2,84],54:[2,84],57:[2,84],66:[2,84],67:[2,84],68:[2,84],69:[2,84],71:[2,84],73:[2,84],74:[2,84],78:[2,84],80:[2,84],84:[2,84],85:[2,84],86:[2,84],91:[2,84],93:[2,84],102:[2,84],104:[2,84],105:[2,84],106:[2,84],110:[2,84],118:[2,84],126:[2,84],128:[2,84],129:[2,84],130:[2,84],131:[2,84],132:[2,84],133:[2,84],134:[2,84],135:[2,84],136:[2,84],137:[2,84],138:[2,84]},{7:185,8:114,9:18,10:19,11:[1,20],12:6,13:7,14:8,15:9,16:10,17:11,18:12,19:13,20:14,21:15,22:16,23:17,27:60,28:[1,71],29:47,30:[1,69],31:[1,70],32:22,33:[1,48],34:[1,49],35:[1,50],36:[1,51],37:[1,52],38:[1,53],39:21,44:61,45:[1,43],46:[1,44],47:[1,27],50:28,51:[1,58],52:[1,59],57:[1,189],58:45,59:46,61:34,63:23,64:24,65:25,72:184,75:186,76:[1,68],79:[1,41],83:[1,26],88:[1,56],89:[1,57],90:[1,55],92:187,93:[1,188],96:[1,36],100:[1,42],101:[1,54],103:37,104:[1,63],106:[1,64],107:38,108:[1,65],109:39,110:[1,66],111:67,119:[1,40],124:35,125:[1,62],127:[1,29],128:[1,30],129:[1,31],130:[1,32],131:[1,33]},{70:190,71:[1,95],74:[1,96]},{82:191,85:[1,101]},{1:[2,69],6:[2,69],25:[2,69],26:[2,69],40:[2,69],49:[2,69],54:[2,69],57:[2,69],66:[2,69],67:[2,69],68:[2,69],69:[2,69],71:[2,69],73:[2,69],74:[2,69],78:[2,69],80:[2,69],84:[2,69],85:[2,69],86:[2,69],91:[2,69],93:[2,69],102:[2,69],104:[2,69],105:[2,69],106:[2,69],110:[2,69],118:[2,69],126:[2,69],128:[2,69],129:[2,69],130:[2,69],131:[2,69],132:[2,69],133:[2,69],134:[2,69],135:[2,69],136:[2,69],137:[2,69],138:[2,69]},{6:[1,193],7:192,8:114,9:18,10:19,11:[1,20],12:6,13:7,14:8,15:9,16:10,17:11,18:12,19:13,20:14,21:15,22:16,23:17,25:[1,194],27:60,28:[1,71],29:47,30:[1,69],31:[1,70],32:22,33:[1,48],34:[1,49],35:[1,50],36:[1,51],37:[1,52],38:[1,53],39:21,44:61,45:[1,43],46:[1,44],47:[1,27],50:28,51:[1,58],52:[1,59],58:45,59:46,61:34,63:23,64:24,65:25,76:[1,68],79:[1,41],83:[1,26],88:[1,56],89:[1,57],90:[1,55],96:[1,36],100:[1,42],101:[1,54],103:37,104:[1,63],106:[1,64],107:38,108:[1,65],109:39,110:[1,66],111:67,119:[1,40],124:35,125:[1,62],127:[1,29],128:[1,30],129:[1,31],130:[1,32],131:[1,33]},{1:[2,106],6:[2,106],25:[2,106],26:[2,106],49:[2,106],54:[2,106],57:[2,106],66:[2,106],67:[2,106],68:[2,106],69:[2,106],71:[2,106],73:[2,106],74:[2,106],78:[2,106],84:[2,106],85:[2,106],86:[2,106],91:[2,106],93:[2,106],102:[2,106],104:[2,106],105:[2,106],106:[2,106],110:[2,106],118:[2,106],126:[2,106],128:[2,106],129:[2,106],132:[2,106],133:[2,106],134:[2,106],135:[2,106],136:[2,106],137:[2,106]},{7:197,8:114,9:18,10:19,11:[1,20],12:6,13:7,14:8,15:9,16:10,17:11,18:12,19:13,20:14,21:15,22:16,23:17,25:[1,143],27:60,28:[1,71],29:47,30:[1,69],31:[1,70],32:22,33:[1,48],34:[1,49],35:[1,50],36:[1,51],37:[1,52],38:[1,53],39:21,44:61,45:[1,43],46:[1,44],47:[1,27],50:28,51:[1,58],52:[1,59],58:45,59:46,60:144,61:34,63:23,64:24,65:25,76:[1,68],79:[1,41],83:[1,26],86:[1,195],87:196,88:[1,56],89:[1,57],90:[1,55],94:142,96:[1,36],100:[1,42],101:[1,54],103:37,104:[1,63],106:[1,64],107:38,108:[1,65],109:39,110:[1,66],111:67,119:[1,40],124:35,125:[1,62],127:[1,29],128:[1,30],129:[1,31],130:[1,32],131:[1,33]},{6:[2,52],25:[2,52],49:[1,198],53:200,54:[1,199]},{6:[2,55],25:[2,55],26:[2,55],49:[2,55],54:[2,55]},{6:[2,59],25:[2,59],26:[2,59],40:[1,202],49:[2,59],54:[2,59],57:[1,201]},{6:[2,62],25:[2,62],26:[2,62],40:[2,62],49:[2,62],54:[2,62],57:[2,62]},{6:[2,63],25:[2,63],26:[2,63],40:[2,63],49:[2,63],54:[2,63],57:[2,63]},{6:[2,64],25:[2,64],26:[2,64],40:[2,64],49:[2,64],54:[2,64],57:[2,64]},{6:[2,65],25:[2,65],26:[2,65],40:[2,65],49:[2,65],54:[2,65],57:[2,65]},{27:145,28:[1,71]},{7:197,8:114,9:18,10:19,11:[1,20],12:6,13:7,14:8,15:9,16:10,17:11,18:12,19:13,20:14,21:15,22:16,23:17,25:[1,143],27:60,28:[1,71],29:47,30:[1,69],31:[1,70],32:22,33:[1,48],34:[1,49],35:[1,50],36:[1,51],37:[1,52],38:[1,53],39:21,44:61,45:[1,43],46:[1,44],47:[1,27],50:28,51:[1,58],52:[1,59],58:45,59:46,60:144,61:34,63:23,64:24,65:25,76:[1,68],79:[1,41],83:[1,26],87:141,88:[1,56],89:[1,57],90:[1,55],91:[1,140],94:142,96:[1,36],100:[1,42],101:[1,54],103:37,104:[1,63],106:[1,64],107:38,108:[1,65],109:39,110:[1,66],111:67,119:[1,40],124:35,125:[1,62],127:[1,29],128:[1,30],129:[1,31],130:[1,32],131:[1,33]},{1:[2,49],6:[2,49],25:[2,49],26:[2,49],49:[2,49],54:[2,49],57:[2,49],73:[2,49],78:[2,49],86:[2,49],91:[2,49],93:[2,49],102:[2,49],104:[2,49],105:[2,49],106:[2,49],110:[2,49],118:[2,49],126:[2,49],128:[2,49],129:[2,49],132:[2,49],133:[2,49],134:[2,49],135:[2,49],136:[2,49],137:[2,49]},{4:204,5:3,7:4,8:5,9:18,10:19,11:[1,20],12:6,13:7,14:8,15:9,16:10,17:11,18:12,19:13,20:14,21:15,22:16,23:17,26:[1,203],27:60,28:[1,71],29:47,30:[1,69],31:[1,70],32:22,33:[1,48],34:[1,49],35:[1,50],36:[1,51],37:[1,52],38:[1,53],39:21,44:61,45:[1,43],46:[1,44],47:[1,27],50:28,51:[1,58],52:[1,59],58:45,59:46,61:34,63:23,64:24,65:25,76:[1,68],79:[1,41],83:[1,26],88:[1,56],89:[1,57],90:[1,55],96:[1,36],100:[1,42],101:[1,54],103:37,104:[1,63],106:[1,64],107:38,108:[1,65],109:39,110:[1,66],111:67,119:[1,40],124:35,125:[1,62],127:[1,29],128:[1,30],129:[1,31],130:[1,32],131:[1,33]},{1:[2,186],6:[2,186],25:[2,186],26:[2,186],49:[2,186],54:[2,186],57:[2,186],73:[2,186],78:[2,186],86:[2,186],91:[2,186],93:[2,186],102:[2,186],103:82,104:[2,186],105:[2,186],106:[2,186],109:83,110:[2,186],111:67,118:[2,186],126:[2,186],128:[2,186],129:[2,186],132:[1,73],133:[2,186],134:[2,186],135:[2,186],136:[2,186],137:[2,186]},{103:85,104:[1,63],106:[1,64],109:86,110:[1,66],111:67,126:[1,84]},{1:[2,187],6:[2,187],25:[2,187],26:[2,187],49:[2,187],54:[2,187],57:[2,187],73:[2,187],78:[2,187],86:[2,187],91:[2,187],93:[2,187],102:[2,187],103:82,104:[2,187],105:[2,187],106:[2,187],109:83,110:[2,187],111:67,118:[2,187],126:[2,187],128:[2,187],129:[2,187],132:[1,73],133:[2,187],134:[2,187],135:[2,187],136:[2,187],137:[2,187]},{1:[2,188],6:[2,188],25:[2,188],26:[2,188],49:[2,188],54:[2,188],57:[2,188],73:[2,188],78:[2,188],86:[2,188],91:[2,188],93:[2,188],102:[2,188],103:82,104:[2,188],105:[2,188],106:[2,188],109:83,110:[2,188],111:67,118:[2,188],126:[2,188],128:[2,188],129:[2,188],132:[1,73],133:[2,188],134:[2,188],135:[2,188],136:[2,188],137:[2,188]},{1:[2,189],6:[2,189],25:[2,189],26:[2,189],49:[2,189],54:[2,189],57:[2,189],66:[2,71],67:[2,71],68:[2,71],69:[2,71],71:[2,71],73:[2,189],74:[2,71],78:[2,189],84:[2,71],85:[2,71],86:[2,189],91:[2,189],93:[2,189],102:[2,189],104:[2,189],105:[2,189],106:[2,189],110:[2,189],118:[2,189],126:[2,189],128:[2,189],129:[2,189],132:[2,189],133:[2,189],134:[2,189],135:[2,189],136:[2,189],137:[2,189]},{62:88,66:[1,90],67:[1,91],68:[1,92],69:[1,93],70:94,71:[1,95],74:[1,96],81:87,84:[1,89],85:[2,107]},{62:98,66:[1,90],67:[1,91],68:[1,92],69:[1,93],70:94,71:[1,95],74:[1,96],81:97,84:[1,89],85:[2,107]},{66:[2,74],67:[2,74],68:[2,74],69:[2,74],71:[2,74],74:[2,74],84:[2,74],85:[2,74]},{1:[2,190],6:[2,190],25:[2,190],26:[2,190],49:[2,190],54:[2,190],57:[2,190],66:[2,71],67:[2,71],68:[2,71],69:[2,71],71:[2,71],73:[2,190],74:[2,71],78:[2,190],84:[2,71],85:[2,71],86:[2,190],91:[2,190],93:[2,190],102:[2,190],104:[2,190],105:[2,190],106:[2,190],110:[2,190],118:[2,190],126:[2,190],128:[2,190],129:[2,190],132:[2,190],133:[2,190],134:[2,190],135:[2,190],136:[2,190],137:[2,190]},{1:[2,191],6:[2,191],25:[2,191],26:[2,191],49:[2,191],54:[2,191],57:[2,191],73:[2,191],78:[2,191],86:[2,191],91:[2,191],93:[2,191],102:[2,191],104:[2,191],105:[2,191],106:[2,191],110:[2,191],118:[2,191],126:[2,191],128:[2,191],129:[2,191],132:[2,191],133:[2,191],134:[2,191],135:[2,191],136:[2,191],137:[2,191]},{1:[2,192],6:[2,192],25:[2,192],26:[2,192],49:[2,192],54:[2,192],57:[2,192],73:[2,192],78:[2,192],86:[2,192],91:[2,192],93:[2,192],102:[2,192],104:[2,192],105:[2,192],106:[2,192],110:[2,192],118:[2,192],126:[2,192],128:[2,192],129:[2,192],132:[2,192],133:[2,192],134:[2,192],135:[2,192],136:[2,192],137:[2,192]},{6:[1,207],7:205,8:114,9:18,10:19,11:[1,20],12:6,13:7,14:8,15:9,16:10,17:11,18:12,19:13,20:14,21:15,22:16,23:17,25:[1,206],27:60,28:[1,71],29:47,30:[1,69],31:[1,70],32:22,33:[1,48],34:[1,49],35:[1,50],36:[1,51],37:[1,52],38:[1,53],39:21,44:61,45:[1,43],46:[1,44],47:[1,27],50:28,51:[1,58],52:[1,59],58:45,59:46,61:34,63:23,64:24,65:25,76:[1,68],79:[1,41],83:[1,26],88:[1,56],89:[1,57],90:[1,55],96:[1,36],100:[1,42],101:[1,54],103:37,104:[1,63],106:[1,64],107:38,108:[1,65],109:39,110:[1,66],111:67,119:[1,40],124:35,125:[1,62],127:[1,29],128:[1,30],129:[1,31],130:[1,32],131:[1,33]},{7:208,8:114,9:18,10:19,11:[1,20],12:6,13:7,14:8,15:9,16:10,17:11,18:12,19:13,20:14,21:15,22:16,23:17,27:60,28:[1,71],29:47,30:[1,69],31:[1,70],32:22,33:[1,48],34:[1,49],35:[1,50],36:[1,51],37:[1,52],38:[1,53],39:21,44:61,45:[1,43],46:[1,44],47:[1,27],50:28,51:[1,58],52:[1,59],58:45,59:46,61:34,63:23,64:24,65:25,76:[1,68],79:[1,41],83:[1,26],88:[1,56],89:[1,57],90:[1,55],96:[1,36],100:[1,42],101:[1,54],103:37,104:[1,63],106:[1,64],107:38,108:[1,65],109:39,110:[1,66],111:67,119:[1,40],124:35,125:[1,62],127:[1,29],128:[1,30],129:[1,31],130:[1,32],131:[1,33]},{24:209,25:[1,112],125:[1,210]},{1:[2,132],6:[2,132],25:[2,132],26:[2,132],49:[2,132],54:[2,132],57:[2,132],73:[2,132],78:[2,132],86:[2,132],91:[2,132],93:[2,132],97:211,98:[1,212],99:[1,213],102:[2,132],104:[2,132],105:[2,132],106:[2,132],110:[2,132],118:[2,132],126:[2,132],128:[2,132],129:[2,132],132:[2,132],133:[2,132],134:[2,132],135:[2,132],136:[2,132],137:[2,132]},{1:[2,146],6:[2,146],25:[2,146],26:[2,146],49:[2,146],54:[2,146],57:[2,146],73:[2,146],78:[2,146],86:[2,146],91:[2,146],93:[2,146],102:[2,146],104:[2,146],105:[2,146],106:[2,146],110:[2,146],118:[2,146],126:[2,146],128:[2,146],129:[2,146],132:[2,146],133:[2,146],134:[2,146],135:[2,146],136:[2,146],137:[2,146]},{1:[2,154],6:[2,154],25:[2,154],26:[2,154],49:[2,154],54:[2,154],57:[2,154],73:[2,154],78:[2,154],86:[2,154],91:[2,154],93:[2,154],102:[2,154],104:[2,154],105:[2,154],106:[2,154],110:[2,154],118:[2,154],126:[2,154],128:[2,154],129:[2,154],132:[2,154],133:[2,154],134:[2,154],135:[2,154],136:[2,154],137:[2,154]},{25:[1,214],103:82,104:[1,63],106:[1,64],109:83,110:[1,66],111:67,126:[1,81],128:[1,75],129:[1,74],132:[1,73],133:[1,76],134:[1,77],135:[1,78],136:[1,79],137:[1,80]},{120:215,122:216,123:[1,217]},{1:[2,96],6:[2,96],25:[2,96],26:[2,96],49:[2,96],54:[2,96],57:[2,96],73:[2,96],78:[2,96],86:[2,96],91:[2,96],93:[2,96],102:[2,96],104:[2,96],105:[2,96],106:[2,96],110:[2,96],118:[2,96],126:[2,96],128:[2,96],129:[2,96],132:[2,96],133:[2,96],134:[2,96],135:[2,96],136:[2,96],137:[2,96]},{7:218,8:114,9:18,10:19,11:[1,20],12:6,13:7,14:8,15:9,16:10,17:11,18:12,19:13,20:14,21:15,22:16,23:17,27:60,28:[1,71],29:47,30:[1,69],31:[1,70],32:22,33:[1,48],34:[1,49],35:[1,50],36:[1,51],37:[1,52],38:[1,53],39:21,44:61,45:[1,43],46:[1,44],47:[1,27],50:28,51:[1,58],52:[1,59],58:45,59:46,61:34,63:23,64:24,65:25,76:[1,68],79:[1,41],83:[1,26],88:[1,56],89:[1,57],90:[1,55],96:[1,36],100:[1,42],101:[1,54],103:37,104:[1,63],106:[1,64],107:38,108:[1,65],109:39,110:[1,66],111:67,119:[1,40],124:35,125:[1,62],127:[1,29],128:[1,30],129:[1,31],130:[1,32],131:[1,33]},{1:[2,99],6:[2,99],24:219,25:[1,112],26:[2,99],49:[2,99],54:[2,99],57:[2,99],66:[2,71],67:[2,71],68:[2,71],69:[2,71],71:[2,71],73:[2,99],74:[2,71],78:[2,99],80:[1,220],84:[2,71],85:[2,71],86:[2,99],91:[2,99],93:[2,99],102:[2,99],104:[2,99],105:[2,99],106:[2,99],110:[2,99],118:[2,99],126:[2,99],128:[2,99],129:[2,99],132:[2,99],133:[2,99],134:[2,99],135:[2,99],136:[2,99],137:[2,99]},{1:[2,139],6:[2,139],25:[2,139],26:[2,139],49:[2,139],54:[2,139],57:[2,139],73:[2,139],78:[2,139],86:[2,139],91:[2,139],93:[2,139],102:[2,139],103:82,104:[2,139],105:[2,139],106:[2,139],109:83,110:[2,139],111:67,118:[2,139],126:[2,139],128:[1,75],129:[1,74],132:[1,73],133:[1,76],134:[1,77],135:[1,78],136:[1,79],137:[1,80]},{1:[2,45],6:[2,45],26:[2,45],102:[2,45],103:82,104:[2,45],106:[2,45],109:83,110:[2,45],111:67,126:[2,45],128:[1,75],129:[1,74],132:[1,73],133:[1,76],134:[1,77],135:[1,78],136:[1,79],137:[1,80]},{6:[1,72],102:[1,221]},{4:222,5:3,7:4,8:5,9:18,10:19,11:[1,20],12:6,13:7,14:8,15:9,16:10,17:11,18:12,19:13,20:14,21:15,22:16,23:17,27:60,28:[1,71],29:47,30:[1,69],31:[1,70],32:22,33:[1,48],34:[1,49],35:[1,50],36:[1,51],37:[1,52],38:[1,53],39:21,44:61,45:[1,43],46:[1,44],47:[1,27],50:28,51:[1,58],52:[1,59],58:45,59:46,61:34,63:23,64:24,65:25,76:[1,68],79:[1,41],83:[1,26],88:[1,56],89:[1,57],90:[1,55],96:[1,36],100:[1,42],101:[1,54],103:37,104:[1,63],106:[1,64],107:38,108:[1,65],109:39,110:[1,66],111:67,119:[1,40],124:35,125:[1,62],127:[1,29],128:[1,30],129:[1,31],130:[1,32],131:[1,33]},{6:[2,128],25:[2,128],54:[2,128],57:[1,224],91:[2,128],92:223,93:[1,188],103:82,104:[1,63],106:[1,64],109:83,110:[1,66],111:67,126:[1,81],128:[1,75],129:[1,74],132:[1,73],133:[1,76],134:[1,77],135:[1,78],136:[1,79],137:[1,80]},{1:[2,114],6:[2,114],25:[2,114],26:[2,114],40:[2,114],49:[2,114],54:[2,114],57:[2,114],66:[2,114],67:[2,114],68:[2,114],69:[2,114],71:[2,114],73:[2,114],74:[2,114],78:[2,114],84:[2,114],85:[2,114],86:[2,114],91:[2,114],93:[2,114],102:[2,114],104:[2,114],105:[2,114],106:[2,114],110:[2,114],116:[2,114],117:[2,114],118:[2,114],126:[2,114],128:[2,114],129:[2,114],132:[2,114],133:[2,114],134:[2,114],135:[2,114],136:[2,114],137:[2,114]},{6:[2,52],25:[2,52],53:225,54:[1,226],91:[2,52]},{6:[2,123],25:[2,123],26:[2,123],54:[2,123],86:[2,123],91:[2,123]},{7:197,8:114,9:18,10:19,11:[1,20],12:6,13:7,14:8,15:9,16:10,17:11,18:12,19:13,20:14,21:15,22:16,23:17,25:[1,143],27:60,28:[1,71],29:47,30:[1,69],31:[1,70],32:22,33:[1,48],34:[1,49],35:[1,50],36:[1,51],37:[1,52],38:[1,53],39:21,44:61,45:[1,43],46:[1,44],47:[1,27],50:28,51:[1,58],52:[1,59],58:45,59:46,60:144,61:34,63:23,64:24,65:25,76:[1,68],79:[1,41],83:[1,26],87:227,88:[1,56],89:[1,57],90:[1,55],94:142,96:[1,36],100:[1,42],101:[1,54],103:37,104:[1,63],106:[1,64],107:38,108:[1,65],109:39,110:[1,66],111:67,119:[1,40],124:35,125:[1,62],127:[1,29],128:[1,30],129:[1,31],130:[1,32],131:[1,33]},{6:[2,129],25:[2,129],26:[2,129],54:[2,129],86:[2,129],91:[2,129]},{1:[2,113],6:[2,113],25:[2,113],26:[2,113],40:[2,113],43:[2,113],49:[2,113],54:[2,113],57:[2,113],66:[2,113],67:[2,113],68:[2,113],69:[2,113],71:[2,113],73:[2,113],74:[2,113],78:[2,113],80:[2,113],84:[2,113],85:[2,113],86:[2,113],91:[2,113],93:[2,113],102:[2,113],104:[2,113],105:[2,113],106:[2,113],110:[2,113],116:[2,113],117:[2,113],118:[2,113],126:[2,113],128:[2,113],129:[2,113],130:[2,113],131:[2,113],132:[2,113],133:[2,113],134:[2,113],135:[2,113],136:[2,113],137:[2,113],138:[2,113]},{24:228,25:[1,112],103:82,104:[1,63],106:[1,64],109:83,110:[1,66],111:67,126:[1,81],128:[1,75],129:[1,74],132:[1,73],133:[1,76],134:[1,77],135:[1,78],136:[1,79],137:[1,80]},{1:[2,142],6:[2,142],25:[2,142],26:[2,142],49:[2,142],54:[2,142],57:[2,142],73:[2,142],78:[2,142],86:[2,142],91:[2,142],93:[2,142],102:[2,142],103:82,104:[1,63],105:[1,229],106:[1,64],109:83,110:[1,66],111:67,118:[2,142],126:[2,142],128:[1,75],129:[1,74],132:[1,73],133:[1,76],134:[1,77],135:[1,78],136:[1,79],137:[1,80]},{1:[2,144],6:[2,144],25:[2,144],26:[2,144],49:[2,144],54:[2,144],57:[2,144],73:[2,144],78:[2,144],86:[2,144],91:[2,144],93:[2,144],102:[2,144],103:82,104:[1,63],105:[1,230],106:[1,64],109:83,110:[1,66],111:67,118:[2,144],126:[2,144],128:[1,75],129:[1,74],132:[1,73],133:[1,76],134:[1,77],135:[1,78],136:[1,79],137:[1,80]},{1:[2,150],6:[2,150],25:[2,150],26:[2,150],49:[2,150],54:[2,150],57:[2,150],73:[2,150],78:[2,150],86:[2,150],91:[2,150],93:[2,150],102:[2,150],104:[2,150],105:[2,150],106:[2,150],110:[2,150],118:[2,150],126:[2,150],128:[2,150],129:[2,150],132:[2,150],133:[2,150],134:[2,150],135:[2,150],136:[2,150],137:[2,150]},{1:[2,151],6:[2,151],25:[2,151],26:[2,151],49:[2,151],54:[2,151],57:[2,151],73:[2,151],78:[2,151],86:[2,151],91:[2,151],93:[2,151],102:[2,151],103:82,104:[1,63],105:[2,151],106:[1,64],109:83,110:[1,66],111:67,118:[2,151],126:[2,151],128:[1,75],129:[1,74],132:[1,73],133:[1,76],134:[1,77],135:[1,78],136:[1,79],137:[1,80]},{1:[2,155],6:[2,155],25:[2,155],26:[2,155],49:[2,155],54:[2,155],57:[2,155],73:[2,155],78:[2,155],86:[2,155],91:[2,155],93:[2,155],102:[2,155],104:[2,155],105:[2,155],106:[2,155],110:[2,155],118:[2,155],126:[2,155],128:[2,155],129:[2,155],132:[2,155],133:[2,155],134:[2,155],135:[2,155],136:[2,155],137:[2,155]},{116:[2,157],117:[2,157]},{27:155,28:[1,71],44:156,58:157,59:158,76:[1,68],89:[1,109],90:[1,110],113:231,115:154},{54:[1,232],116:[2,163],117:[2,163]},{54:[2,159],116:[2,159],117:[2,159]},{54:[2,160],116:[2,160],117:[2,160]},{54:[2,161],116:[2,161],117:[2,161]},{54:[2,162],116:[2,162],117:[2,162]},{1:[2,156],6:[2,156],25:[2,156],26:[2,156],49:[2,156],54:[2,156],57:[2,156],73:[2,156],78:[2,156],86:[2,156],91:[2,156],93:[2,156],102:[2,156],104:[2,156],105:[2,156],106:[2,156],110:[2,156],118:[2,156],126:[2,156],128:[2,156],129:[2,156],132:[2,156],133:[2,156],134:[2,156],135:[2,156],136:[2,156],137:[2,156]},{7:233,8:114,9:18,10:19,11:[1,20],12:6,13:7,14:8,15:9,16:10,17:11,18:12,19:13,20:14,21:15,22:16,23:17,27:60,28:[1,71],29:47,30:[1,69],31:[1,70],32:22,33:[1,48],34:[1,49],35:[1,50],36:[1,51],37:[1,52],38:[1,53],39:21,44:61,45:[1,43],46:[1,44],47:[1,27],50:28,51:[1,58],52:[1,59],58:45,59:46,61:34,63:23,64:24,65:25,76:[1,68],79:[1,41],83:[1,26],88:[1,56],89:[1,57],90:[1,55],96:[1,36],100:[1,42],101:[1,54],103:37,104:[1,63],106:[1,64],107:38,108:[1,65],109:39,110:[1,66],111:67,119:[1,40],124:35,125:[1,62],127:[1,29],128:[1,30],129:[1,31],130:[1,32],131:[1,33]},{7:234,8:114,9:18,10:19,11:[1,20],12:6,13:7,14:8,15:9,16:10,17:11,18:12,19:13,20:14,21:15,22:16,23:17,27:60,28:[1,71],29:47,30:[1,69],31:[1,70],32:22,33:[1,48],34:[1,49],35:[1,50],36:[1,51],37:[1,52],38:[1,53],39:21,44:61,45:[1,43],46:[1,44],47:[1,27],50:28,51:[1,58],52:[1,59],58:45,59:46,61:34,63:23,64:24,65:25,76:[1,68],79:[1,41],83:[1,26],88:[1,56],89:[1,57],90:[1,55],96:[1,36],100:[1,42],101:[1,54],103:37,104:[1,63],106:[1,64],107:38,108:[1,65],109:39,110:[1,66],111:67,119:[1,40],124:35,125:[1,62],127:[1,29],128:[1,30],129:[1,31],130:[1,32],131:[1,33]},{6:[2,52],25:[2,52],53:235,54:[1,236],78:[2,52]},{6:[2,91],25:[2,91],26:[2,91],54:[2,91],78:[2,91]},{6:[2,38],25:[2,38],26:[2,38],43:[1,237],54:[2,38],78:[2,38]},{6:[2,41],25:[2,41],26:[2,41],54:[2,41],78:[2,41]},{6:[2,42],25:[2,42],26:[2,42],43:[2,42],54:[2,42],78:[2,42]},{6:[2,43],25:[2,43],26:[2,43],43:[2,43],54:[2,43],78:[2,43]},{6:[2,44],25:[2,44],26:[2,44],43:[2,44],54:[2,44],78:[2,44]},{1:[2,4],6:[2,4],26:[2,4],102:[2,4]},{1:[2,194],6:[2,194],25:[2,194],26:[2,194],49:[2,194],54:[2,194],57:[2,194],73:[2,194],78:[2,194],86:[2,194],91:[2,194],93:[2,194],102:[2,194],103:82,104:[2,194],105:[2,194],106:[2,194],109:83,110:[2,194],111:67,118:[2,194],126:[2,194],128:[2,194],129:[2,194],132:[1,73],133:[1,76],134:[2,194],135:[2,194],136:[2,194],137:[2,194]},{1:[2,195],6:[2,195],25:[2,195],26:[2,195],49:[2,195],54:[2,195],57:[2,195],73:[2,195],78:[2,195],86:[2,195],91:[2,195],93:[2,195],102:[2,195],103:82,104:[2,195],105:[2,195],106:[2,195],109:83,110:[2,195],111:67,118:[2,195],126:[2,195],128:[2,195],129:[2,195],132:[1,73],133:[1,76],134:[2,195],135:[2,195],136:[2,195],137:[2,195]},{1:[2,196],6:[2,196],25:[2,196],26:[2,196],49:[2,196],54:[2,196],57:[2,196],73:[2,196],78:[2,196],86:[2,196],91:[2,196],93:[2,196],102:[2,196],103:82,104:[2,196],105:[2,196],106:[2,196],109:83,110:[2,196],111:67,118:[2,196],126:[2,196],128:[2,196],129:[2,196],132:[1,73],133:[2,196],134:[2,196],135:[2,196],136:[2,196],137:[2,196]},{1:[2,197],6:[2,197],25:[2,197],26:[2,197],49:[2,197],54:[2,197],57:[2,197],73:[2,197],78:[2,197],86:[2,197],91:[2,197],93:[2,197],102:[2,197],103:82,104:[2,197],105:[2,197],106:[2,197],109:83,110:[2,197],111:67,118:[2,197],126:[2,197],128:[1,75],129:[1,74],132:[1,73],133:[1,76],134:[2,197],135:[2,197],136:[2,197],137:[2,197]},{1:[2,198],6:[2,198],25:[2,198],26:[2,198],49:[2,198],54:[2,198],57:[2,198],73:[2,198],78:[2,198],86:[2,198],91:[2,198],93:[2,198],102:[2,198],103:82,104:[2,198],105:[2,198],106:[2,198],109:83,110:[2,198],111:67,118:[2,198],126:[2,198],128:[1,75],129:[1,74],132:[1,73],133:[1,76],134:[1,77],135:[2,198],136:[2,198],137:[1,80]},{1:[2,199],6:[2,199],25:[2,199],26:[2,199],49:[2,199],54:[2,199],57:[2,199],73:[2,199],78:[2,199],86:[2,199],91:[2,199],93:[2,199],102:[2,199],103:82,104:[2,199],105:[2,199],106:[2,199],109:83,110:[2,199],111:67,118:[2,199],126:[2,199],128:[1,75],129:[1,74],132:[1,73],133:[1,76],134:[1,77],135:[1,78],136:[2,199],137:[1,80]},{1:[2,200],6:[2,200],25:[2,200],26:[2,200],49:[2,200],54:[2,200],57:[2,200],73:[2,200],78:[2,200],86:[2,200],91:[2,200],93:[2,200],102:[2,200],103:82,104:[2,200],105:[2,200],106:[2,200],109:83,110:[2,200],111:67,118:[2,200],126:[2,200],128:[1,75],129:[1,74],132:[1,73],133:[1,76],134:[1,77],135:[2,200],136:[2,200],137:[2,200]},{1:[2,185],6:[2,185],25:[2,185],26:[2,185],49:[2,185],54:[2,185],57:[2,185],73:[2,185],78:[2,185],86:[2,185],91:[2,185],93:[2,185],102:[2,185],103:82,104:[1,63],105:[2,185],106:[1,64],109:83,110:[1,66],111:67,118:[2,185],126:[1,81],128:[1,75],129:[1,74],132:[1,73],133:[1,76],134:[1,77],135:[1,78],136:[1,79],137:[1,80]},{1:[2,184],6:[2,184],25:[2,184],26:[2,184],49:[2,184],54:[2,184],57:[2,184],73:[2,184],78:[2,184],86:[2,184],91:[2,184],93:[2,184],102:[2,184],103:82,104:[1,63],105:[2,184],106:[1,64],109:83,110:[1,66],111:67,118:[2,184],126:[1,81],128:[1,75],129:[1,74],132:[1,73],133:[1,76],134:[1,77],135:[1,78],136:[1,79],137:[1,80]},{1:[2,103],6:[2,103],25:[2,103],26:[2,103],49:[2,103],54:[2,103],57:[2,103],66:[2,103],67:[2,103],68:[2,103],69:[2,103],71:[2,103],73:[2,103],74:[2,103],78:[2,103],84:[2,103],85:[2,103],86:[2,103],91:[2,103],93:[2,103],102:[2,103],104:[2,103],105:[2,103],106:[2,103],110:[2,103],118:[2,103],126:[2,103],128:[2,103],129:[2,103],132:[2,103],133:[2,103],134:[2,103],135:[2,103],136:[2,103],137:[2,103]},{1:[2,79],6:[2,79],25:[2,79],26:[2,79],40:[2,79],49:[2,79],54:[2,79],57:[2,79],66:[2,79],67:[2,79],68:[2,79],69:[2,79],71:[2,79],73:[2,79],74:[2,79],78:[2,79],80:[2,79],84:[2,79],85:[2,79],86:[2,79],91:[2,79],93:[2,79],102:[2,79],104:[2,79],105:[2,79],106:[2,79],110:[2,79],118:[2,79],126:[2,79],128:[2,79],129:[2,79],130:[2,79],131:[2,79],132:[2,79],133:[2,79],134:[2,79],135:[2,79],136:[2,79],137:[2,79],138:[2,79]},{1:[2,80],6:[2,80],25:[2,80],26:[2,80],40:[2,80],49:[2,80],54:[2,80],57:[2,80],66:[2,80],67:[2,80],68:[2,80],69:[2,80],71:[2,80],73:[2,80],74:[2,80],78:[2,80],80:[2,80],84:[2,80],85:[2,80],86:[2,80],91:[2,80],93:[2,80],102:[2,80],104:[2,80],105:[2,80],106:[2,80],110:[2,80],118:[2,80],126:[2,80],128:[2,80],129:[2,80],130:[2,80],131:[2,80],132:[2,80],133:[2,80],134:[2,80],135:[2,80],136:[2,80],137:[2,80],138:[2,80]},{1:[2,81],6:[2,81],25:[2,81],26:[2,81],40:[2,81],49:[2,81],54:[2,81],57:[2,81],66:[2,81],67:[2,81],68:[2,81],69:[2,81],71:[2,81],73:[2,81],74:[2,81],78:[2,81],80:[2,81],84:[2,81],85:[2,81],86:[2,81],91:[2,81],93:[2,81],102:[2,81],104:[2,81],105:[2,81],106:[2,81],110:[2,81],118:[2,81],126:[2,81],128:[2,81],129:[2,81],130:[2,81],131:[2,81],132:[2,81],133:[2,81],134:[2,81],135:[2,81],136:[2,81],137:[2,81],138:[2,81]},{1:[2,82],6:[2,82],25:[2,82],26:[2,82],40:[2,82],49:[2,82],54:[2,82],57:[2,82],66:[2,82],67:[2,82],68:[2,82],69:[2,82],71:[2,82],73:[2,82],74:[2,82],78:[2,82],80:[2,82],84:[2,82],85:[2,82],86:[2,82],91:[2,82],93:[2,82],102:[2,82],104:[2,82],105:[2,82],106:[2,82],110:[2,82],118:[2,82],126:[2,82],128:[2,82],129:[2,82],130:[2,82],131:[2,82],132:[2,82],133:[2,82],134:[2,82],135:[2,82],136:[2,82],137:[2,82],138:[2,82]},{73:[1,238]},{57:[1,189],73:[2,87],92:239,93:[1,188],103:82,104:[1,63],106:[1,64],109:83,110:[1,66],111:67,126:[1,81],128:[1,75],129:[1,74],132:[1,73],133:[1,76],134:[1,77],135:[1,78],136:[1,79],137:[1,80]},{73:[2,88]},{7:240,8:114,9:18,10:19,11:[1,20],12:6,13:7,14:8,15:9,16:10,17:11,18:12,19:13,20:14,21:15,22:16,23:17,27:60,28:[1,71],29:47,30:[1,69],31:[1,70],32:22,33:[1,48],34:[1,49],35:[1,50],36:[1,51],37:[1,52],38:[1,53],39:21,44:61,45:[1,43],46:[1,44],47:[1,27],50:28,51:[1,58],52:[1,59],58:45,59:46,61:34,63:23,64:24,65:25,73:[2,122],76:[1,68],79:[1,41],83:[1,26],88:[1,56],89:[1,57],90:[1,55],96:[1,36],100:[1,42],101:[1,54],103:37,104:[1,63],106:[1,64],107:38,108:[1,65],109:39,110:[1,66],111:67,119:[1,40],124:35,125:[1,62],127:[1,29],128:[1,30],129:[1,31],130:[1,32],131:[1,33]},{11:[2,116],28:[2,116],30:[2,116],31:[2,116],33:[2,116],34:[2,116],35:[2,116],36:[2,116],37:[2,116],38:[2,116],45:[2,116],46:[2,116],47:[2,116],51:[2,116],52:[2,116],73:[2,116],76:[2,116],79:[2,116],83:[2,116],88:[2,116],89:[2,116],90:[2,116],96:[2,116],100:[2,116],101:[2,116],104:[2,116],106:[2,116],108:[2,116],110:[2,116],119:[2,116],125:[2,116],127:[2,116],128:[2,116],129:[2,116],130:[2,116],131:[2,116]},{11:[2,117],28:[2,117],30:[2,117],31:[2,117],33:[2,117],34:[2,117],35:[2,117],36:[2,117],37:[2,117],38:[2,117],45:[2,117],46:[2,117],47:[2,117],51:[2,117],52:[2,117],73:[2,117],76:[2,117],79:[2,117],83:[2,117],88:[2,117],89:[2,117],90:[2,117],96:[2,117],100:[2,117],101:[2,117],104:[2,117],106:[2,117],108:[2,117],110:[2,117],119:[2,117],125:[2,117],127:[2,117],128:[2,117],129:[2,117],130:[2,117],131:[2,117]},{1:[2,86],6:[2,86],25:[2,86],26:[2,86],40:[2,86],49:[2,86],54:[2,86],57:[2,86],66:[2,86],67:[2,86],68:[2,86],69:[2,86],71:[2,86],73:[2,86],74:[2,86],78:[2,86],80:[2,86],84:[2,86],85:[2,86],86:[2,86],91:[2,86],93:[2,86],102:[2,86],104:[2,86],105:[2,86],106:[2,86],110:[2,86],118:[2,86],126:[2,86],128:[2,86],129:[2,86],130:[2,86],131:[2,86],132:[2,86],133:[2,86],134:[2,86],135:[2,86],136:[2,86],137:[2,86],138:[2,86]},{1:[2,104],6:[2,104],25:[2,104],26:[2,104],49:[2,104],54:[2,104],57:[2,104],66:[2,104],67:[2,104],68:[2,104],69:[2,104],71:[2,104],73:[2,104],74:[2,104],78:[2,104],84:[2,104],85:[2,104],86:[2,104],91:[2,104],93:[2,104],102:[2,104],104:[2,104],105:[2,104],106:[2,104],110:[2,104],118:[2,104],126:[2,104],128:[2,104],129:[2,104],132:[2,104],133:[2,104],134:[2,104],135:[2,104],136:[2,104],137:[2,104]},{1:[2,35],6:[2,35],25:[2,35],26:[2,35],49:[2,35],54:[2,35],57:[2,35],73:[2,35],78:[2,35],86:[2,35],91:[2,35],93:[2,35],102:[2,35],103:82,104:[2,35],105:[2,35],106:[2,35],109:83,110:[2,35],111:67,118:[2,35],126:[2,35],128:[1,75],129:[1,74],132:[1,73],133:[1,76],134:[1,77],135:[1,78],136:[1,79],137:[1,80]},{7:241,8:114,9:18,10:19,11:[1,20],12:6,13:7,14:8,15:9,16:10,17:11,18:12,19:13,20:14,21:15,22:16,23:17,27:60,28:[1,71],29:47,30:[1,69],31:[1,70],32:22,33:[1,48],34:[1,49],35:[1,50],36:[1,51],37:[1,52],38:[1,53],39:21,44:61,45:[1,43],46:[1,44],47:[1,27],50:28,51:[1,58],52:[1,59],58:45,59:46,61:34,63:23,64:24,65:25,76:[1,68],79:[1,41],83:[1,26],88:[1,56],89:[1,57],90:[1,55],96:[1,36],100:[1,42],101:[1,54],103:37,104:[1,63],106:[1,64],107:38,108:[1,65],109:39,110:[1,66],111:67,119:[1,40],124:35,125:[1,62],127:[1,29],128:[1,30],129:[1,31],130:[1,32],131:[1,33]},{7:242,8:114,9:18,10:19,11:[1,20],12:6,13:7,14:8,15:9,16:10,17:11,18:12,19:13,20:14,21:15,22:16,23:17,27:60,28:[1,71],29:47,30:[1,69],31:[1,70],32:22,33:[1,48],34:[1,49],35:[1,50],36:[1,51],37:[1,52],38:[1,53],39:21,44:61,45:[1,43],46:[1,44],47:[1,27],50:28,51:[1,58],52:[1,59],58:45,59:46,61:34,63:23,64:24,65:25,76:[1,68],79:[1,41],83:[1,26],88:[1,56],89:[1,57],90:[1,55],96:[1,36],100:[1,42],101:[1,54],103:37,104:[1,63],106:[1,64],107:38,108:[1,65],109:39,110:[1,66],111:67,119:[1,40],124:35,125:[1,62],127:[1,29],128:[1,30],129:[1,31],130:[1,32],131:[1,33]},{1:[2,109],6:[2,109],25:[2,109],26:[2,109],49:[2,109],54:[2,109],57:[2,109],66:[2,109],67:[2,109],68:[2,109],69:[2,109],71:[2,109],73:[2,109],74:[2,109],78:[2,109],84:[2,109],85:[2,109],86:[2,109],91:[2,109],93:[2,109],102:[2,109],104:[2,109],105:[2,109],106:[2,109],110:[2,109],118:[2,109],126:[2,109],128:[2,109],129:[2,109],132:[2,109],133:[2,109],134:[2,109],135:[2,109],136:[2,109],137:[2,109]},{6:[2,52],25:[2,52],53:243,54:[1,226],86:[2,52]},{6:[2,128],25:[2,128],26:[2,128],54:[2,128],57:[1,244],86:[2,128],91:[2,128],103:82,104:[1,63],106:[1,64],109:83,110:[1,66],111:67,126:[1,81],128:[1,75],129:[1,74],132:[1,73],133:[1,76],134:[1,77],135:[1,78],136:[1,79],137:[1,80]},{50:245,51:[1,58],52:[1,59]},{6:[2,53],25:[2,53],26:[2,53],27:105,28:[1,71],44:106,55:246,56:104,58:107,59:108,76:[1,68],89:[1,109],90:[1,110]},{6:[1,247],25:[1,248]},{6:[2,60],25:[2,60],26:[2,60],49:[2,60],54:[2,60]},{7:249,8:114,9:18,10:19,11:[1,20],12:6,13:7,14:8,15:9,16:10,17:11,18:12,19:13,20:14,21:15,22:16,23:17,27:60,28:[1,71],29:47,30:[1,69],31:[1,70],32:22,33:[1,48],34:[1,49],35:[1,50],36:[1,51],37:[1,52],38:[1,53],39:21,44:61,45:[1,43],46:[1,44],47:[1,27],50:28,51:[1,58],52:[1,59],58:45,59:46,61:34,63:23,64:24,65:25,76:[1,68],79:[1,41],83:[1,26],88:[1,56],89:[1,57],90:[1,55],96:[1,36],100:[1,42],101:[1,54],103:37,104:[1,63],106:[1,64],107:38,108:[1,65],109:39,110:[1,66],111:67,119:[1,40],124:35,125:[1,62],127:[1,29],128:[1,30],129:[1,31],130:[1,32],131:[1,33]},{1:[2,23],6:[2,23],25:[2,23],26:[2,23],49:[2,23],54:[2,23],57:[2,23],73:[2,23],78:[2,23],86:[2,23],91:[2,23],93:[2,23],98:[2,23],99:[2,23],102:[2,23],104:[2,23],105:[2,23],106:[2,23],110:[2,23],118:[2,23],121:[2,23],123:[2,23],126:[2,23],128:[2,23],129:[2,23],132:[2,23],133:[2,23],134:[2,23],135:[2,23],136:[2,23],137:[2,23]},{6:[1,72],26:[1,250]},{1:[2,201],6:[2,201],25:[2,201],26:[2,201],49:[2,201],54:[2,201],57:[2,201],73:[2,201],78:[2,201],86:[2,201],91:[2,201],93:[2,201],102:[2,201],103:82,104:[2,201],105:[2,201],106:[2,201],109:83,110:[2,201],111:67,118:[2,201],126:[2,201],128:[1,75],129:[1,74],132:[1,73],133:[1,76],134:[1,77],135:[1,78],136:[1,79],137:[1,80]},{7:251,8:114,9:18,10:19,11:[1,20],12:6,13:7,14:8,15:9,16:10,17:11,18:12,19:13,20:14,21:15,22:16,23:17,27:60,28:[1,71],29:47,30:[1,69],31:[1,70],32:22,33:[1,48],34:[1,49],35:[1,50],36:[1,51],37:[1,52],38:[1,53],39:21,44:61,45:[1,43],46:[1,44],47:[1,27],50:28,51:[1,58],52:[1,59],58:45,59:46,61:34,63:23,64:24,65:25,76:[1,68],79:[1,41],83:[1,26],88:[1,56],89:[1,57],90:[1,55],96:[1,36],100:[1,42],101:[1,54],103:37,104:[1,63],106:[1,64],107:38,108:[1,65],109:39,110:[1,66],111:67,119:[1,40],124:35,125:[1,62],127:[1,29],128:[1,30],129:[1,31],130:[1,32],131:[1,33]},{7:252,8:114,9:18,10:19,11:[1,20],12:6,13:7,14:8,15:9,16:10,17:11,18:12,19:13,20:14,21:15,22:16,23:17,27:60,28:[1,71],29:47,30:[1,69],31:[1,70],32:22,33:[1,48],34:[1,49],35:[1,50],36:[1,51],37:[1,52],38:[1,53],39:21,44:61,45:[1,43],46:[1,44],47:[1,27],50:28,51:[1,58],52:[1,59],58:45,59:46,61:34,63:23,64:24,65:25,76:[1,68],79:[1,41],83:[1,26],88:[1,56],89:[1,57],90:[1,55],96:[1,36],100:[1,42],101:[1,54],103:37,104:[1,63],106:[1,64],107:38,108:[1,65],109:39,110:[1,66],111:67,119:[1,40],124:35,125:[1,62],127:[1,29],128:[1,30],129:[1,31],130:[1,32],131:[1,33]},{1:[2,204],6:[2,204],25:[2,204],26:[2,204],49:[2,204],54:[2,204],57:[2,204],73:[2,204],78:[2,204],86:[2,204],91:[2,204],93:[2,204],102:[2,204],103:82,104:[2,204],105:[2,204],106:[2,204],109:83,110:[2,204],111:67,118:[2,204],126:[2,204],128:[1,75],129:[1,74],132:[1,73],133:[1,76],134:[1,77],135:[1,78],136:[1,79],137:[1,80]},{1:[2,183],6:[2,183],25:[2,183],26:[2,183],49:[2,183],54:[2,183],57:[2,183],73:[2,183],78:[2,183],86:[2,183],91:[2,183],93:[2,183],102:[2,183],104:[2,183],105:[2,183],106:[2,183],110:[2,183],118:[2,183],126:[2,183],128:[2,183],129:[2,183],132:[2,183],133:[2,183],134:[2,183],135:[2,183],136:[2,183],137:[2,183]},{7:253,8:114,9:18,10:19,11:[1,20],12:6,13:7,14:8,15:9,16:10,17:11,18:12,19:13,20:14,21:15,22:16,23:17,27:60,28:[1,71],29:47,30:[1,69],31:[1,70],32:22,33:[1,48],34:[1,49],35:[1,50],36:[1,51],37:[1,52],38:[1,53],39:21,44:61,45:[1,43],46:[1,44],47:[1,27],50:28,51:[1,58],52:[1,59],58:45,59:46,61:34,63:23,64:24,65:25,76:[1,68],79:[1,41],83:[1,26],88:[1,56],89:[1,57],90:[1,55],96:[1,36],100:[1,42],101:[1,54],103:37,104:[1,63],106:[1,64],107:38,108:[1,65],109:39,110:[1,66],111:67,119:[1,40],124:35,125:[1,62],127:[1,29],128:[1,30],129:[1,31],130:[1,32],131:[1,33]},{1:[2,133],6:[2,133],25:[2,133],26:[2,133],49:[2,133],54:[2,133],57:[2,133],73:[2,133],78:[2,133],86:[2,133],91:[2,133],93:[2,133],98:[1,254],102:[2,133],104:[2,133],105:[2,133],106:[2,133],110:[2,133],118:[2,133],126:[2,133],128:[2,133],129:[2,133],132:[2,133],133:[2,133],134:[2,133],135:[2,133],136:[2,133],137:[2,133]},{24:255,25:[1,112]},{24:258,25:[1,112],27:256,28:[1,71],59:257,76:[1,68]},{120:259,122:216,123:[1,217]},{26:[1,260],121:[1,261],122:262,123:[1,217]},{26:[2,176],121:[2,176],123:[2,176]},{7:264,8:114,9:18,10:19,11:[1,20],12:6,13:7,14:8,15:9,16:10,17:11,18:12,19:13,20:14,21:15,22:16,23:17,27:60,28:[1,71],29:47,30:[1,69],31:[1,70],32:22,33:[1,48],34:[1,49],35:[1,50],36:[1,51],37:[1,52],38:[1,53],39:21,44:61,45:[1,43],46:[1,44],47:[1,27],50:28,51:[1,58],52:[1,59],58:45,59:46,61:34,63:23,64:24,65:25,76:[1,68],79:[1,41],83:[1,26],88:[1,56],89:[1,57],90:[1,55],95:263,96:[1,36],100:[1,42],101:[1,54],103:37,104:[1,63],106:[1,64],107:38,108:[1,65],109:39,110:[1,66],111:67,119:[1,40],124:35,125:[1,62],127:[1,29],128:[1,30],129:[1,31],130:[1,32],131:[1,33]},{1:[2,97],6:[2,97],24:265,25:[1,112],26:[2,97],49:[2,97],54:[2,97],57:[2,97],73:[2,97],78:[2,97],86:[2,97],91:[2,97],93:[2,97],102:[2,97],103:82,104:[1,63],105:[2,97],106:[1,64],109:83,110:[1,66],111:67,118:[2,97],126:[2,97],128:[1,75],129:[1,74],132:[1,73],133:[1,76],134:[1,77],135:[1,78],136:[1,79],137:[1,80]},{1:[2,100],6:[2,100],25:[2,100],26:[2,100],49:[2,100],54:[2,100],57:[2,100],73:[2,100],78:[2,100],86:[2,100],91:[2,100],93:[2,100],102:[2,100],104:[2,100],105:[2,100],106:[2,100],110:[2,100],118:[2,100],126:[2,100],128:[2,100],129:[2,100],132:[2,100],133:[2,100],134:[2,100],135:[2,100],136:[2,100],137:[2,100]},{7:266,8:114,9:18,10:19,11:[1,20],12:6,13:7,14:8,15:9,16:10,17:11,18:12,19:13,20:14,21:15,22:16,23:17,27:60,28:[1,71],29:47,30:[1,69],31:[1,70],32:22,33:[1,48],34:[1,49],35:[1,50],36:[1,51],37:[1,52],38:[1,53],39:21,44:61,45:[1,43],46:[1,44],47:[1,27],50:28,51:[1,58],52:[1,59],58:45,59:46,61:34,63:23,64:24,65:25,76:[1,68],79:[1,41],83:[1,26],88:[1,56],89:[1,57],90:[1,55],96:[1,36],100:[1,42],101:[1,54],103:37,104:[1,63],106:[1,64],107:38,108:[1,65],109:39,110:[1,66],111:67,119:[1,40],124:35,125:[1,62],127:[1,29],128:[1,30],129:[1,31],130:[1,32],131:[1,33]},{1:[2,140],6:[2,140],25:[2,140],26:[2,140],49:[2,140],54:[2,140],57:[2,140],66:[2,140],67:[2,140],68:[2,140],69:[2,140],71:[2,140],73:[2,140],74:[2,140],78:[2,140],84:[2,140],85:[2,140],86:[2,140],91:[2,140],93:[2,140],102:[2,140],104:[2,140],105:[2,140],106:[2,140],110:[2,140],118:[2,140],126:[2,140],128:[2,140],129:[2,140],132:[2,140],133:[2,140],134:[2,140],135:[2,140],136:[2,140],137:[2,140]},{6:[1,72],26:[1,267]},{7:268,8:114,9:18,10:19,11:[1,20],12:6,13:7,14:8,15:9,16:10,17:11,18:12,19:13,20:14,21:15,22:16,23:17,27:60,28:[1,71],29:47,30:[1,69],31:[1,70],32:22,33:[1,48],34:[1,49],35:[1,50],36:[1,51],37:[1,52],38:[1,53],39:21,44:61,45:[1,43],46:[1,44],47:[1,27],50:28,51:[1,58],52:[1,59],58:45,59:46,61:34,63:23,64:24,65:25,76:[1,68],79:[1,41],83:[1,26],88:[1,56],89:[1,57],90:[1,55],96:[1,36],100:[1,42],101:[1,54],103:37,104:[1,63],106:[1,64],107:38,108:[1,65],109:39,110:[1,66],111:67,119:[1,40],124:35,125:[1,62],127:[1,29],128:[1,30],129:[1,31],130:[1,32],131:[1,33]},{6:[2,66],11:[2,117],25:[2,66],28:[2,117],30:[2,117],31:[2,117],33:[2,117],34:[2,117],35:[2,117],36:[2,117],37:[2,117],38:[2,117],45:[2,117],46:[2,117],47:[2,117],51:[2,117],52:[2,117],54:[2,66],76:[2,117],79:[2,117],83:[2,117],88:[2,117],89:[2,117],90:[2,117],91:[2,66],96:[2,117],100:[2,117],101:[2,117],104:[2,117],106:[2,117],108:[2,117],110:[2,117],119:[2,117],125:[2,117],127:[2,117],128:[2,117],129:[2,117],130:[2,117],131:[2,117]},{6:[1,270],25:[1,271],91:[1,269]},{6:[2,53],7:197,8:114,9:18,10:19,11:[1,20],12:6,13:7,14:8,15:9,16:10,17:11,18:12,19:13,20:14,21:15,22:16,23:17,25:[2,53],26:[2,53],27:60,28:[1,71],29:47,30:[1,69],31:[1,70],32:22,33:[1,48],34:[1,49],35:[1,50],36:[1,51],37:[1,52],38:[1,53],39:21,44:61,45:[1,43],46:[1,44],47:[1,27],50:28,51:[1,58],52:[1,59],58:45,59:46,60:144,61:34,63:23,64:24,65:25,76:[1,68],79:[1,41],83:[1,26],86:[2,53],88:[1,56],89:[1,57],90:[1,55],91:[2,53],94:272,96:[1,36],100:[1,42],101:[1,54],103:37,104:[1,63],106:[1,64],107:38,108:[1,65],109:39,110:[1,66],111:67,119:[1,40],124:35,125:[1,62],127:[1,29],128:[1,30],129:[1,31],130:[1,32],131:[1,33]},{6:[2,52],25:[2,52],26:[2,52],53:273,54:[1,226]},{1:[2,180],6:[2,180],25:[2,180],26:[2,180],49:[2,180],54:[2,180],57:[2,180],73:[2,180],78:[2,180],86:[2,180],91:[2,180],93:[2,180],102:[2,180],104:[2,180],105:[2,180],106:[2,180],110:[2,180],118:[2,180],121:[2,180],126:[2,180],128:[2,180],129:[2,180],132:[2,180],133:[2,180],134:[2,180],135:[2,180],136:[2,180],137:[2,180]},{7:274,8:114,9:18,10:19,11:[1,20],12:6,13:7,14:8,15:9,16:10,17:11,18:12,19:13,20:14,21:15,22:16,23:17,27:60,28:[1,71],29:47,30:[1,69],31:[1,70],32:22,33:[1,48],34:[1,49],35:[1,50],36:[1,51],37:[1,52],38:[1,53],39:21,44:61,45:[1,43],46:[1,44],47:[1,27],50:28,51:[1,58],52:[1,59],58:45,59:46,61:34,63:23,64:24,65:25,76:[1,68],79:[1,41],83:[1,26],88:[1,56],89:[1,57],90:[1,55],96:[1,36],100:[1,42],101:[1,54],103:37,104:[1,63],106:[1,64],107:38,108:[1,65],109:39,110:[1,66],111:67,119:[1,40],124:35,125:[1,62],127:[1,29],128:[1,30],129:[1,31],130:[1,32],131:[1,33]},{7:275,8:114,9:18,10:19,11:[1,20],12:6,13:7,14:8,15:9,16:10,17:11,18:12,19:13,20:14,21:15,22:16,23:17,27:60,28:[1,71],29:47,30:[1,69],31:[1,70],32:22,33:[1,48],34:[1,49],35:[1,50],36:[1,51],37:[1,52],38:[1,53],39:21,44:61,45:[1,43],46:[1,44],47:[1,27],50:28,51:[1,58],52:[1,59],58:45,59:46,61:34,63:23,64:24,65:25,76:[1,68],79:[1,41],83:[1,26],88:[1,56],89:[1,57],90:[1,55],96:[1,36],100:[1,42],101:[1,54],103:37,104:[1,63],106:[1,64],107:38,108:[1,65],109:39,110:[1,66],111:67,119:[1,40],124:35,125:[1,62],127:[1,29],128:[1,30],129:[1,31],130:[1,32],131:[1,33]},{116:[2,158],117:[2,158]},{27:155,28:[1,71],44:156,58:157,59:158,76:[1,68],89:[1,109],90:[1,110],115:276},{1:[2,165],6:[2,165],25:[2,165],26:[2,165],49:[2,165],54:[2,165],57:[2,165],73:[2,165],78:[2,165],86:[2,165],91:[2,165],93:[2,165],102:[2,165],103:82,104:[2,165],105:[1,277],106:[2,165],109:83,110:[2,165],111:67,118:[1,278],126:[2,165],128:[1,75],129:[1,74],132:[1,73],133:[1,76],134:[1,77],135:[1,78],136:[1,79],137:[1,80]},{1:[2,166],6:[2,166],25:[2,166],26:[2,166],49:[2,166],54:[2,166],57:[2,166],73:[2,166],78:[2,166],86:[2,166],91:[2,166],93:[2,166],102:[2,166],103:82,104:[2,166],105:[1,279],106:[2,166],109:83,110:[2,166],111:67,118:[2,166],126:[2,166],128:[1,75],129:[1,74],132:[1,73],133:[1,76],134:[1,77],135:[1,78],136:[1,79],137:[1,80]},{6:[1,281],25:[1,282],78:[1,280]},{6:[2,53],10:165,25:[2,53],26:[2,53],27:166,28:[1,71],29:167,30:[1,69],31:[1,70],41:283,42:164,44:168,46:[1,44],78:[2,53],89:[1,109]},{7:284,8:114,9:18,10:19,11:[1,20],12:6,13:7,14:8,15:9,16:10,17:11,18:12,19:13,20:14,21:15,22:16,23:17,25:[1,285],27:60,28:[1,71],29:47,30:[1,69],31:[1,70],32:22,33:[1,48],34:[1,49],35:[1,50],36:[1,51],37:[1,52],38:[1,53],39:21,44:61,45:[1,43],46:[1,44],47:[1,27],50:28,51:[1,58],52:[1,59],58:45,59:46,61:34,63:23,64:24,65:25,76:[1,68],79:[1,41],83:[1,26],88:[1,56],89:[1,57],90:[1,55],96:[1,36],100:[1,42],101:[1,54],103:37,104:[1,63],106:[1,64],107:38,108:[1,65],109:39,110:[1,66],111:67,119:[1,40],124:35,125:[1,62],127:[1,29],128:[1,30],129:[1,31],130:[1,32],131:[1,33]},{1:[2,85],6:[2,85],25:[2,85],26:[2,85],40:[2,85],49:[2,85],54:[2,85],57:[2,85],66:[2,85],67:[2,85],68:[2,85],69:[2,85],71:[2,85],73:[2,85],74:[2,85],78:[2,85],80:[2,85],84:[2,85],85:[2,85],86:[2,85],91:[2,85],93:[2,85],102:[2,85],104:[2,85],105:[2,85],106:[2,85],110:[2,85],118:[2,85],126:[2,85],128:[2,85],129:[2,85],130:[2,85],131:[2,85],132:[2,85],133:[2,85],134:[2,85],135:[2,85],136:[2,85],137:[2,85],138:[2,85]},{7:286,8:114,9:18,10:19,11:[1,20],12:6,13:7,14:8,15:9,16:10,17:11,18:12,19:13,20:14,21:15,22:16,23:17,27:60,28:[1,71],29:47,30:[1,69],31:[1,70],32:22,33:[1,48],34:[1,49],35:[1,50],36:[1,51],37:[1,52],38:[1,53],39:21,44:61,45:[1,43],46:[1,44],47:[1,27],50:28,51:[1,58],52:[1,59],58:45,59:46,61:34,63:23,64:24,65:25,73:[2,120],76:[1,68],79:[1,41],83:[1,26],88:[1,56],89:[1,57],90:[1,55],96:[1,36],100:[1,42],101:[1,54],103:37,104:[1,63],106:[1,64],107:38,108:[1,65],109:39,110:[1,66],111:67,119:[1,40],124:35,125:[1,62],127:[1,29],128:[1,30],129:[1,31],130:[1,32],131:[1,33]},{73:[2,121],103:82,104:[1,63],106:[1,64],109:83,110:[1,66],111:67,126:[1,81],128:[1,75],129:[1,74],132:[1,73],133:[1,76],134:[1,77],135:[1,78],136:[1,79],137:[1,80]},{1:[2,36],6:[2,36],25:[2,36],26:[2,36],49:[2,36],54:[2,36],57:[2,36],73:[2,36],78:[2,36],86:[2,36],91:[2,36],93:[2,36],102:[2,36],103:82,104:[2,36],105:[2,36],106:[2,36],109:83,110:[2,36],111:67,118:[2,36],126:[2,36],128:[1,75],129:[1,74],132:[1,73],133:[1,76],134:[1,77],135:[1,78],136:[1,79],137:[1,80]},{26:[1,287],103:82,104:[1,63],106:[1,64],109:83,110:[1,66],111:67,126:[1,81],128:[1,75],129:[1,74],132:[1,73],133:[1,76],134:[1,77],135:[1,78],136:[1,79],137:[1,80]},{6:[1,270],25:[1,271],86:[1,288]},{6:[2,66],25:[2,66],26:[2,66],54:[2,66],86:[2,66],91:[2,66]},{24:289,25:[1,112]},{6:[2,56],25:[2,56],26:[2,56],49:[2,56],54:[2,56]},{27:105,28:[1,71],44:106,55:290,56:104,58:107,59:108,76:[1,68],89:[1,109],90:[1,110]},{6:[2,54],25:[2,54],26:[2,54],27:105,28:[1,71],44:106,48:291,54:[2,54],55:103,56:104,58:107,59:108,76:[1,68],89:[1,109],90:[1,110]},{6:[2,61],25:[2,61],26:[2,61],49:[2,61],54:[2,61],103:82,104:[1,63],106:[1,64],109:83,110:[1,66],111:67,126:[1,81],128:[1,75],129:[1,74],132:[1,73],133:[1,76],134:[1,77],135:[1,78],136:[1,79],137:[1,80]},{1:[2,24],6:[2,24],25:[2,24],26:[2,24],49:[2,24],54:[2,24],57:[2,24],73:[2,24],78:[2,24],86:[2,24],91:[2,24],93:[2,24],98:[2,24],99:[2,24],102:[2,24],104:[2,24],105:[2,24],106:[2,24],110:[2,24],118:[2,24],121:[2,24],123:[2,24],126:[2,24],128:[2,24],129:[2,24],132:[2,24],133:[2,24],134:[2,24],135:[2,24],136:[2,24],137:[2,24]},{26:[1,292],103:82,104:[1,63],106:[1,64],109:83,110:[1,66],111:67,126:[1,81],128:[1,75],129:[1,74],132:[1,73],133:[1,76],134:[1,77],135:[1,78],136:[1,79],137:[1,80]},{1:[2,203],6:[2,203],25:[2,203],26:[2,203],49:[2,203],54:[2,203],57:[2,203],73:[2,203],78:[2,203],86:[2,203],91:[2,203],93:[2,203],102:[2,203],103:82,104:[2,203],105:[2,203],106:[2,203],109:83,110:[2,203],111:67,118:[2,203],126:[2,203],128:[1,75],129:[1,74],132:[1,73],133:[1,76],134:[1,77],135:[1,78],136:[1,79],137:[1,80]},{24:293,25:[1,112],103:82,104:[1,63],106:[1,64],109:83,110:[1,66],111:67,126:[1,81],128:[1,75],129:[1,74],132:[1,73],133:[1,76],134:[1,77],135:[1,78],136:[1,79],137:[1,80]},{24:294,25:[1,112]},{1:[2,134],6:[2,134],25:[2,134],26:[2,134],49:[2,134],54:[2,134],57:[2,134],73:[2,134],78:[2,134],86:[2,134],91:[2,134],93:[2,134],102:[2,134],104:[2,134],105:[2,134],106:[2,134],110:[2,134],118:[2,134],126:[2,134],128:[2,134],129:[2,134],132:[2,134],133:[2,134],134:[2,134],135:[2,134],136:[2,134],137:[2,134]},{24:295,25:[1,112]},{24:296,25:[1,112]},{1:[2,138],6:[2,138],25:[2,138],26:[2,138],49:[2,138],54:[2,138],57:[2,138],73:[2,138],78:[2,138],86:[2,138],91:[2,138],93:[2,138],98:[2,138],102:[2,138],104:[2,138],105:[2,138],106:[2,138],110:[2,138],118:[2,138],126:[2,138],128:[2,138],129:[2,138],132:[2,138],133:[2,138],134:[2,138],135:[2,138],136:[2,138],137:[2,138]},{26:[1,297],121:[1,298],122:262,123:[1,217]},{1:[2,174],6:[2,174],25:[2,174],26:[2,174],49:[2,174],54:[2,174],57:[2,174],73:[2,174],78:[2,174],86:[2,174],91:[2,174],93:[2,174],102:[2,174],104:[2,174],105:[2,174],106:[2,174],110:[2,174],118:[2,174],126:[2,174],128:[2,174],129:[2,174],132:[2,174],133:[2,174],134:[2,174],135:[2,174],136:[2,174],137:[2,174]},{24:299,25:[1,112]},{26:[2,177],121:[2,177],123:[2,177]},{24:300,25:[1,112],54:[1,301]},{25:[2,130],54:[2,130],103:82,104:[1,63],106:[1,64],109:83,110:[1,66],111:67,126:[1,81],128:[1,75],129:[1,74],132:[1,73],133:[1,76],134:[1,77],135:[1,78],136:[1,79],137:[1,80]},{1:[2,98],6:[2,98],25:[2,98],26:[2,98],49:[2,98],54:[2,98],57:[2,98],73:[2,98],78:[2,98],86:[2,98],91:[2,98],93:[2,98],102:[2,98],104:[2,98],105:[2,98],106:[2,98],110:[2,98],118:[2,98],126:[2,98],128:[2,98],129:[2,98],132:[2,98],133:[2,98],134:[2,98],135:[2,98],136:[2,98],137:[2,98]},{1:[2,101],6:[2,101],24:302,25:[1,112],26:[2,101],49:[2,101],54:[2,101],57:[2,101],73:[2,101],78:[2,101],86:[2,101],91:[2,101],93:[2,101],102:[2,101],103:82,104:[1,63],105:[2,101],106:[1,64],109:83,110:[1,66],111:67,118:[2,101],126:[2,101],128:[1,75],129:[1,74],132:[1,73],133:[1,76],134:[1,77],135:[1,78],136:[1,79],137:[1,80]},{102:[1,303]},{91:[1,304],103:82,104:[1,63],106:[1,64],109:83,110:[1,66],111:67,126:[1,81],128:[1,75],129:[1,74],132:[1,73],133:[1,76],134:[1,77],135:[1,78],136:[1,79],137:[1,80]},{1:[2,115],6:[2,115],25:[2,115],26:[2,115],40:[2,115],49:[2,115],54:[2,115],57:[2,115],66:[2,115],67:[2,115],68:[2,115],69:[2,115],71:[2,115],73:[2,115],74:[2,115],78:[2,115],84:[2,115],85:[2,115],86:[2,115],91:[2,115],93:[2,115],102:[2,115],104:[2,115],105:[2,115],106:[2,115],110:[2,115],116:[2,115],117:[2,115],118:[2,115],126:[2,115],128:[2,115],129:[2,115],132:[2,115],133:[2,115],134:[2,115],135:[2,115],136:[2,115],137:[2,115]},{7:197,8:114,9:18,10:19,11:[1,20],12:6,13:7,14:8,15:9,16:10,17:11,18:12,19:13,20:14,21:15,22:16,23:17,27:60,28:[1,71],29:47,30:[1,69],31:[1,70],32:22,33:[1,48],34:[1,49],35:[1,50],36:[1,51],37:[1,52],38:[1,53],39:21,44:61,45:[1,43],46:[1,44],47:[1,27],50:28,51:[1,58],52:[1,59],58:45,59:46,60:144,61:34,63:23,64:24,65:25,76:[1,68],79:[1,41],83:[1,26],88:[1,56],89:[1,57],90:[1,55],94:305,96:[1,36],100:[1,42],101:[1,54],103:37,104:[1,63],106:[1,64],107:38,108:[1,65],109:39,110:[1,66],111:67,119:[1,40],124:35,125:[1,62],127:[1,29],128:[1,30],129:[1,31],130:[1,32],131:[1,33]},{7:197,8:114,9:18,10:19,11:[1,20],12:6,13:7,14:8,15:9,16:10,17:11,18:12,19:13,20:14,21:15,22:16,23:17,25:[1,143],27:60,28:[1,71],29:47,30:[1,69],31:[1,70],32:22,33:[1,48],34:[1,49],35:[1,50],36:[1,51],37:[1,52],38:[1,53],39:21,44:61,45:[1,43],46:[1,44],47:[1,27],50:28,51:[1,58],52:[1,59],58:45,59:46,60:144,61:34,63:23,64:24,65:25,76:[1,68],79:[1,41],83:[1,26],87:306,88:[1,56],89:[1,57],90:[1,55],94:142,96:[1,36],100:[1,42],101:[1,54],103:37,104:[1,63],106:[1,64],107:38,108:[1,65],109:39,110:[1,66],111:67,119:[1,40],124:35,125:[1,62],127:[1,29],128:[1,30],129:[1,31],130:[1,32],131:[1,33]},{6:[2,124],25:[2,124],26:[2,124],54:[2,124],86:[2,124],91:[2,124]},{6:[1,270],25:[1,271],26:[1,307]},{1:[2,143],6:[2,143],25:[2,143],26:[2,143],49:[2,143],54:[2,143],57:[2,143],73:[2,143],78:[2,143],86:[2,143],91:[2,143],93:[2,143],102:[2,143],103:82,104:[1,63],105:[2,143],106:[1,64],109:83,110:[1,66],111:67,118:[2,143],126:[2,143],128:[1,75],129:[1,74],132:[1,73],133:[1,76],134:[1,77],135:[1,78],136:[1,79],137:[1,80]},{1:[2,145],6:[2,145],25:[2,145],26:[2,145],49:[2,145],54:[2,145],57:[2,145],73:[2,145],78:[2,145],86:[2,145],91:[2,145],93:[2,145],102:[2,145],103:82,104:[1,63],105:[2,145],106:[1,64],109:83,110:[1,66],111:67,118:[2,145],126:[2,145],128:[1,75],129:[1,74],132:[1,73],133:[1,76],134:[1,77],135:[1,78],136:[1,79],137:[1,80]},{116:[2,164],117:[2,164]},{7:308,8:114,9:18,10:19,11:[1,20],12:6,13:7,14:8,15:9,16:10,17:11,18:12,19:13,20:14,21:15,22:16,23:17,27:60,28:[1,71],29:47,30:[1,69],31:[1,70],32:22,33:[1,48],34:[1,49],35:[1,50],36:[1,51],37:[1,52],38:[1,53],39:21,44:61,45:[1,43],46:[1,44],47:[1,27],50:28,51:[1,58],52:[1,59],58:45,59:46,61:34,63:23,64:24,65:25,76:[1,68],79:[1,41],83:[1,26],88:[1,56],89:[1,57],90:[1,55],96:[1,36],100:[1,42],101:[1,54],103:37,104:[1,63],106:[1,64],107:38,108:[1,65],109:39,110:[1,66],111:67,119:[1,40],124:35,125:[1,62],127:[1,29],128:[1,30],129:[1,31],130:[1,32],131:[1,33]},{7:309,8:114,9:18,10:19,11:[1,20],12:6,13:7,14:8,15:9,16:10,17:11,18:12,19:13,20:14,21:15,22:16,23:17,27:60,28:[1,71],29:47,30:[1,69],31:[1,70],32:22,33:[1,48],34:[1,49],35:[1,50],36:[1,51],37:[1,52],38:[1,53],39:21,44:61,45:[1,43],46:[1,44],47:[1,27],50:28,51:[1,58],52:[1,59],58:45,59:46,61:34,63:23,64:24,65:25,76:[1,68],79:[1,41],83:[1,26],88:[1,56],89:[1,57],90:[1,55],96:[1,36],100:[1,42],101:[1,54],103:37,104:[1,63],106:[1,64],107:38,108:[1,65],109:39,110:[1,66],111:67,119:[1,40],124:35,125:[1,62],127:[1,29],128:[1,30],129:[1,31],130:[1,32],131:[1,33]},{7:310,8:114,9:18,10:19,11:[1,20],12:6,13:7,14:8,15:9,16:10,17:11,18:12,19:13,20:14,21:15,22:16,23:17,27:60,28:[1,71],29:47,30:[1,69],31:[1,70],32:22,33:[1,48],34:[1,49],35:[1,50],36:[1,51],37:[1,52],38:[1,53],39:21,44:61,45:[1,43],46:[1,44],47:[1,27],50:28,51:[1,58],52:[1,59],58:45,59:46,61:34,63:23,64:24,65:25,76:[1,68],79:[1,41],83:[1,26],88:[1,56],89:[1,57],90:[1,55],96:[1,36],100:[1,42],101:[1,54],103:37,104:[1,63],106:[1,64],107:38,108:[1,65],109:39,110:[1,66],111:67,119:[1,40],124:35,125:[1,62],127:[1,29],128:[1,30],129:[1,31],130:[1,32],131:[1,33]},{1:[2,89],6:[2,89],25:[2,89],26:[2,89],40:[2,89],49:[2,89],54:[2,89],57:[2,89],66:[2,89],67:[2,89],68:[2,89],69:[2,89],71:[2,89],73:[2,89],74:[2,89],78:[2,89],84:[2,89],85:[2,89],86:[2,89],91:[2,89],93:[2,89],102:[2,89],104:[2,89],105:[2,89],106:[2,89],110:[2,89],116:[2,89],117:[2,89],118:[2,89],126:[2,89],128:[2,89],129:[2,89],132:[2,89],133:[2,89],134:[2,89],135:[2,89],136:[2,89],137:[2,89]},{10:165,27:166,28:[1,71],29:167,30:[1,69],31:[1,70],41:311,42:164,44:168,46:[1,44],89:[1,109]},{6:[2,90],10:165,25:[2,90],26:[2,90],27:166,28:[1,71],29:167,30:[1,69],31:[1,70],41:163,42:164,44:168,46:[1,44],54:[2,90],77:312,89:[1,109]},{6:[2,92],25:[2,92],26:[2,92],54:[2,92],78:[2,92]},{6:[2,39],25:[2,39],26:[2,39],54:[2,39],78:[2,39],103:82,104:[1,63],106:[1,64],109:83,110:[1,66],111:67,126:[1,81],128:[1,75],129:[1,74],132:[1,73],133:[1,76],134:[1,77],135:[1,78],136:[1,79],137:[1,80]},{7:313,8:114,9:18,10:19,11:[1,20],12:6,13:7,14:8,15:9,16:10,17:11,18:12,19:13,20:14,21:15,22:16,23:17,27:60,28:[1,71],29:47,30:[1,69],31:[1,70],32:22,33:[1,48],34:[1,49],35:[1,50],36:[1,51],37:[1,52],38:[1,53],39:21,44:61,45:[1,43],46:[1,44],47:[1,27],50:28,51:[1,58],52:[1,59],58:45,59:46,61:34,63:23,64:24,65:25,76:[1,68],79:[1,41],83:[1,26],88:[1,56],89:[1,57],90:[1,55],96:[1,36],100:[1,42],101:[1,54],103:37,104:[1,63],106:[1,64],107:38,108:[1,65],109:39,110:[1,66],111:67,119:[1,40],124:35,125:[1,62],127:[1,29],128:[1,30],129:[1,31],130:[1,32],131:[1,33]},{73:[2,119],103:82,104:[1,63],106:[1,64],109:83,110:[1,66],111:67,126:[1,81],128:[1,75],129:[1,74],132:[1,73],133:[1,76],134:[1,77],135:[1,78],136:[1,79],137:[1,80]},{1:[2,37],6:[2,37],25:[2,37],26:[2,37],49:[2,37],54:[2,37],57:[2,37],73:[2,37],78:[2,37],86:[2,37],91:[2,37],93:[2,37],102:[2,37],104:[2,37],105:[2,37],106:[2,37],110:[2,37],118:[2,37],126:[2,37],128:[2,37],129:[2,37],132:[2,37],133:[2,37],134:[2,37],135:[2,37],136:[2,37],137:[2,37]},{1:[2,110],6:[2,110],25:[2,110],26:[2,110],49:[2,110],54:[2,110],57:[2,110],66:[2,110],67:[2,110],68:[2,110],69:[2,110],71:[2,110],73:[2,110],74:[2,110],78:[2,110],84:[2,110],85:[2,110],86:[2,110],91:[2,110],93:[2,110],102:[2,110],104:[2,110],105:[2,110],106:[2,110],110:[2,110],118:[2,110],126:[2,110],128:[2,110],129:[2,110],132:[2,110],133:[2,110],134:[2,110],135:[2,110],136:[2,110],137:[2,110]},{1:[2,48],6:[2,48],25:[2,48],26:[2,48],49:[2,48],54:[2,48],57:[2,48],73:[2,48],78:[2,48],86:[2,48],91:[2,48],93:[2,48],102:[2,48],104:[2,48],105:[2,48],106:[2,48],110:[2,48],118:[2,48],126:[2,48],128:[2,48],129:[2,48],132:[2,48],133:[2,48],134:[2,48],135:[2,48],136:[2,48],137:[2,48]},{6:[2,57],25:[2,57],26:[2,57],49:[2,57],54:[2,57]},{6:[2,52],25:[2,52],26:[2,52],53:314,54:[1,199]},{1:[2,202],6:[2,202],25:[2,202],26:[2,202],49:[2,202],54:[2,202],57:[2,202],73:[2,202],78:[2,202],86:[2,202],91:[2,202],93:[2,202],102:[2,202],104:[2,202],105:[2,202],106:[2,202],110:[2,202],118:[2,202],126:[2,202],128:[2,202],129:[2,202],132:[2,202],133:[2,202],134:[2,202],135:[2,202],136:[2,202],137:[2,202]},{1:[2,181],6:[2,181],25:[2,181],26:[2,181],49:[2,181],54:[2,181],57:[2,181],73:[2,181],78:[2,181],86:[2,181],91:[2,181],93:[2,181],102:[2,181],104:[2,181],105:[2,181],106:[2,181],110:[2,181],118:[2,181],121:[2,181],126:[2,181],128:[2,181],129:[2,181],132:[2,181],133:[2,181],134:[2,181],135:[2,181],136:[2,181],137:[2,181]},{1:[2,135],6:[2,135],25:[2,135],26:[2,135],49:[2,135],54:[2,135],57:[2,135],73:[2,135],78:[2,135],86:[2,135],91:[2,135],93:[2,135],102:[2,135],104:[2,135],105:[2,135],106:[2,135],110:[2,135],118:[2,135],126:[2,135],128:[2,135],129:[2,135],132:[2,135],133:[2,135],134:[2,135],135:[2,135],136:[2,135],137:[2,135]},{1:[2,136],6:[2,136],25:[2,136],26:[2,136],49:[2,136],54:[2,136],57:[2,136],73:[2,136],78:[2,136],86:[2,136],91:[2,136],93:[2,136],98:[2,136],102:[2,136],104:[2,136],105:[2,136],106:[2,136],110:[2,136],118:[2,136],126:[2,136],128:[2,136],129:[2,136],132:[2,136],133:[2,136],134:[2,136],135:[2,136],136:[2,136],137:[2,136]},{1:[2,137],6:[2,137],25:[2,137],26:[2,137],49:[2,137],54:[2,137],57:[2,137],73:[2,137],78:[2,137],86:[2,137],91:[2,137],93:[2,137],98:[2,137],102:[2,137],104:[2,137],105:[2,137],106:[2,137],110:[2,137],118:[2,137],126:[2,137],128:[2,137],129:[2,137],132:[2,137],133:[2,137],134:[2,137],135:[2,137],136:[2,137],137:[2,137]},{1:[2,172],6:[2,172],25:[2,172],26:[2,172],49:[2,172],54:[2,172],57:[2,172],73:[2,172],78:[2,172],86:[2,172],91:[2,172],93:[2,172],102:[2,172],104:[2,172],105:[2,172],106:[2,172],110:[2,172],118:[2,172],126:[2,172],128:[2,172],129:[2,172],132:[2,172],133:[2,172],134:[2,172],135:[2,172],136:[2,172],137:[2,172]},{24:315,25:[1,112]},{26:[1,316]},{6:[1,317],26:[2,178],121:[2,178],123:[2,178]},{7:318,8:114,9:18,10:19,11:[1,20],12:6,13:7,14:8,15:9,16:10,17:11,18:12,19:13,20:14,21:15,22:16,23:17,27:60,28:[1,71],29:47,30:[1,69],31:[1,70],32:22,33:[1,48],34:[1,49],35:[1,50],36:[1,51],37:[1,52],38:[1,53],39:21,44:61,45:[1,43],46:[1,44],47:[1,27],50:28,51:[1,58],52:[1,59],58:45,59:46,61:34,63:23,64:24,65:25,76:[1,68],79:[1,41],83:[1,26],88:[1,56],89:[1,57],90:[1,55],96:[1,36],100:[1,42],101:[1,54],103:37,104:[1,63],106:[1,64],107:38,108:[1,65],109:39,110:[1,66],111:67,119:[1,40],124:35,125:[1,62],127:[1,29],128:[1,30],129:[1,31],130:[1,32],131:[1,33]},{1:[2,102],6:[2,102],25:[2,102],26:[2,102],49:[2,102],54:[2,102],57:[2,102],73:[2,102],78:[2,102],86:[2,102],91:[2,102],93:[2,102],102:[2,102],104:[2,102],105:[2,102],106:[2,102],110:[2,102],118:[2,102],126:[2,102],128:[2,102],129:[2,102],132:[2,102],133:[2,102],134:[2,102],135:[2,102],136:[2,102],137:[2,102]},{1:[2,141],6:[2,141],25:[2,141],26:[2,141],49:[2,141],54:[2,141],57:[2,141],66:[2,141],67:[2,141],68:[2,141],69:[2,141],71:[2,141],73:[2,141],74:[2,141],78:[2,141],84:[2,141],85:[2,141],86:[2,141],91:[2,141],93:[2,141],102:[2,141],104:[2,141],105:[2,141],106:[2,141],110:[2,141],118:[2,141],126:[2,141],128:[2,141],129:[2,141],132:[2,141],133:[2,141],134:[2,141],135:[2,141],136:[2,141],137:[2,141]},{1:[2,118],6:[2,118],25:[2,118],26:[2,118],49:[2,118],54:[2,118],57:[2,118],66:[2,118],67:[2,118],68:[2,118],69:[2,118],71:[2,118],73:[2,118],74:[2,118],78:[2,118],84:[2,118],85:[2,118],86:[2,118],91:[2,118],93:[2,118],102:[2,118],104:[2,118],105:[2,118],106:[2,118],110:[2,118],118:[2,118],126:[2,118],128:[2,118],129:[2,118],132:[2,118],133:[2,118],134:[2,118],135:[2,118],136:[2,118],137:[2,118]},{6:[2,125],25:[2,125],26:[2,125],54:[2,125],86:[2,125],91:[2,125]},{6:[2,52],25:[2,52],26:[2,52],53:319,54:[1,226]},{6:[2,126],25:[2,126],26:[2,126],54:[2,126],86:[2,126],91:[2,126]},{1:[2,167],6:[2,167],25:[2,167],26:[2,167],49:[2,167],54:[2,167],57:[2,167],73:[2,167],78:[2,167],86:[2,167],91:[2,167],93:[2,167],102:[2,167],103:82,104:[2,167],105:[2,167],106:[2,167],109:83,110:[2,167],111:67,118:[1,320],126:[2,167],128:[1,75],129:[1,74],132:[1,73],133:[1,76],134:[1,77],135:[1,78],136:[1,79],137:[1,80]},{1:[2,169],6:[2,169],25:[2,169],26:[2,169],49:[2,169],54:[2,169],57:[2,169],73:[2,169],78:[2,169],86:[2,169],91:[2,169],93:[2,169],102:[2,169],103:82,104:[2,169],105:[1,321],106:[2,169],109:83,110:[2,169],111:67,118:[2,169],126:[2,169],128:[1,75],129:[1,74],132:[1,73],133:[1,76],134:[1,77],135:[1,78],136:[1,79],137:[1,80]},{1:[2,168],6:[2,168],25:[2,168],26:[2,168],49:[2,168],54:[2,168],57:[2,168],73:[2,168],78:[2,168],86:[2,168],91:[2,168],93:[2,168],102:[2,168],103:82,104:[2,168],105:[2,168],106:[2,168],109:83,110:[2,168],111:67,118:[2,168],126:[2,168],128:[1,75],129:[1,74],132:[1,73],133:[1,76],134:[1,77],135:[1,78],136:[1,79],137:[1,80]},{6:[2,93],25:[2,93],26:[2,93],54:[2,93],78:[2,93]},{6:[2,52],25:[2,52],26:[2,52],53:322,54:[1,236]},{26:[1,323],103:82,104:[1,63],106:[1,64],109:83,110:[1,66],111:67,126:[1,81],128:[1,75],129:[1,74],132:[1,73],133:[1,76],134:[1,77],135:[1,78],136:[1,79],137:[1,80]},{6:[1,247],25:[1,248],26:[1,324]},{26:[1,325]},{1:[2,175],6:[2,175],25:[2,175],26:[2,175],49:[2,175],54:[2,175],57:[2,175],73:[2,175],78:[2,175],86:[2,175],91:[2,175],93:[2,175],102:[2,175],104:[2,175],105:[2,175],106:[2,175],110:[2,175],118:[2,175],126:[2,175],128:[2,175],129:[2,175],132:[2,175],133:[2,175],134:[2,175],135:[2,175],136:[2,175],137:[2,175]},{26:[2,179],121:[2,179],123:[2,179]},{25:[2,131],54:[2,131],103:82,104:[1,63],106:[1,64],109:83,110:[1,66],111:67,126:[1,81],128:[1,75],129:[1,74],132:[1,73],133:[1,76],134:[1,77],135:[1,78],136:[1,79],137:[1,80]},{6:[1,270],25:[1,271],26:[1,326]},{7:327,8:114,9:18,10:19,11:[1,20],12:6,13:7,14:8,15:9,16:10,17:11,18:12,19:13,20:14,21:15,22:16,23:17,27:60,28:[1,71],29:47,30:[1,69],31:[1,70],32:22,33:[1,48],34:[1,49],35:[1,50],36:[1,51],37:[1,52],38:[1,53],39:21,44:61,45:[1,43],46:[1,44],47:[1,27],50:28,51:[1,58],52:[1,59],58:45,59:46,61:34,63:23,64:24,65:25,76:[1,68],79:[1,41],83:[1,26],88:[1,56],89:[1,57],90:[1,55],96:[1,36],100:[1,42],101:[1,54],103:37,104:[1,63],106:[1,64],107:38,108:[1,65],109:39,110:[1,66],111:67,119:[1,40],124:35,125:[1,62],127:[1,29],128:[1,30],129:[1,31],130:[1,32],131:[1,33]},{7:328,8:114,9:18,10:19,11:[1,20],12:6,13:7,14:8,15:9,16:10,17:11,18:12,19:13,20:14,21:15,22:16,23:17,27:60,28:[1,71],29:47,30:[1,69],31:[1,70],32:22,33:[1,48],34:[1,49],35:[1,50],36:[1,51],37:[1,52],38:[1,53],39:21,44:61,45:[1,43],46:[1,44],47:[1,27],50:28,51:[1,58],52:[1,59],58:45,59:46,61:34,63:23,64:24,65:25,76:[1,68],79:[1,41],83:[1,26],88:[1,56],89:[1,57],90:[1,55],96:[1,36],100:[1,42],101:[1,54],103:37,104:[1,63],106:[1,64],107:38,108:[1,65],109:39,110:[1,66],111:67,119:[1,40],124:35,125:[1,62],127:[1,29],128:[1,30],129:[1,31],130:[1,32],131:[1,33]},{6:[1,281],25:[1,282],26:[1,329]},{6:[2,40],25:[2,40],26:[2,40],54:[2,40],78:[2,40]},{6:[2,58],25:[2,58],26:[2,58],49:[2,58],54:[2,58]},{1:[2,173],6:[2,173],25:[2,173],26:[2,173],49:[2,173],54:[2,173],57:[2,173],73:[2,173],78:[2,173],86:[2,173],91:[2,173],93:[2,173],102:[2,173],104:[2,173],105:[2,173],106:[2,173],110:[2,173],118:[2,173],126:[2,173],128:[2,173],129:[2,173],132:[2,173],133:[2,173],134:[2,173],135:[2,173],136:[2,173],137:[2,173]},{6:[2,127],25:[2,127],26:[2,127],54:[2,127],86:[2,127],91:[2,127]},{1:[2,170],6:[2,170],25:[2,170],26:[2,170],49:[2,170],54:[2,170],57:[2,170],73:[2,170],78:[2,170],86:[2,170],91:[2,170],93:[2,170],102:[2,170],103:82,104:[2,170],105:[2,170],106:[2,170],109:83,110:[2,170],111:67,118:[2,170],126:[2,170],128:[1,75],129:[1,74],132:[1,73],133:[1,76],134:[1,77],135:[1,78],136:[1,79],137:[1,80]},{1:[2,171],6:[2,171],25:[2,171],26:[2,171],49:[2,171],54:[2,171],57:[2,171],73:[2,171],78:[2,171],86:[2,171],91:[2,171],93:[2,171],102:[2,171],103:82,104:[2,171],105:[2,171],106:[2,171],109:83,110:[2,171],111:67,118:[2,171],126:[2,171],128:[1,75],129:[1,74],132:[1,73],133:[1,76],134:[1,77],135:[1,78],136:[1,79],137:[1,80]},{6:[2,94],25:[2,94],26:[2,94],54:[2,94],78:[2,94]}], -defaultActions: {58:[2,50],59:[2,51],89:[2,108],186:[2,88]}, -parseError: function parseError(str, hash) { - if (hash.recoverable) { - this.trace(str); - } else { - var e = new Error(str) - e.location = hash.loc - throw e; - } -}, -parse: function parse(input) { - var self = this, stack = [0], vstack = [null], lstack = [], table = this.table, yytext = '', yylineno = 0, yyleng = 0, recovering = 0, TERROR = 2, EOF = 1; - this.lexer.setInput(input); - this.lexer.yy = this.yy; - this.yy.lexer = this.lexer; - this.yy.parser = this; - if (typeof this.lexer.yylloc == 'undefined') { - this.lexer.yylloc = {}; - } - var yyloc = this.lexer.yylloc; - lstack.push(yyloc); - var ranges = this.lexer.options && this.lexer.options.ranges; - if (typeof this.yy.parseError === 'function') { - this.parseError = this.yy.parseError; - } else { - this.parseError = Object.getPrototypeOf(this).parseError; - } - function popStack(n) { - stack.length = stack.length - 2 * n; - vstack.length = vstack.length - n; - lstack.length = lstack.length - n; - } - function lex() { - var token; - token = self.lexer.lex() || EOF; - if (typeof token !== 'number') { - token = self.symbols_[token] || token; - } - return token; - } - var symbol, preErrorSymbol, state, action, a, r, yyval = {}, p, len, newState, expected; - while (true) { - state = stack[stack.length - 1]; - if (this.defaultActions[state]) { - action = this.defaultActions[state]; - } else { - if (symbol === null || typeof symbol == 'undefined') { - symbol = lex(); - } - action = table[state] && table[state][symbol]; - } - if (typeof action === 'undefined' || !action.length || !action[0]) { - var errStr = ''; - expected = []; - for (p in table[state]) { - if (this.terminals_[p] && p > TERROR) { - expected.push('\'' + this.terminals_[p] + '\''); - } - } - if (this.lexer.showPosition) { - errStr = 'Expecting ' + expected.join(', ') + ', got \'' + (this.terminals_[symbol] || symbol) + '\''; - } else { - errStr = 'Unexpected ' + (symbol == EOF ? 'end of input' : '\'' + (this.terminals_[symbol] || symbol) + '\''); - } - if (this.lexer.yylloc.first_line !== yyloc.first_line) yyloc = this.lexer.yylloc; - this.parseError(errStr, { - text: this.lexer.match, - token: this.terminals_[symbol] || symbol, - line: this.lexer.yylineno, - loc: yyloc, - expected: expected - }); - } - if (action[0] instanceof Array && action.length > 1) { - throw new Error('Parse Error: multiple actions possible at state: ' + state + ', token: ' + symbol); - } - switch (action[0]) { - case 1: - stack.push(symbol); - vstack.push(this.lexer.yytext); - lstack.push(this.lexer.yylloc); - stack.push(action[1]); - symbol = null; - if (!preErrorSymbol) { - yyleng = this.lexer.yyleng; - yytext = this.lexer.yytext; - yylineno = this.lexer.yylineno; - yyloc = this.lexer.yylloc; - if (recovering > 0) { - recovering--; - } - } else { - symbol = preErrorSymbol; - preErrorSymbol = null; - } - break; - case 2: - len = this.productions_[action[1]][1]; - yyval.$ = vstack[vstack.length - len]; - yyval._$ = { - first_line: lstack[lstack.length - (len || 1)].first_line, - last_line: lstack[lstack.length - 1].last_line, - first_column: lstack[lstack.length - (len || 1)].first_column, - last_column: lstack[lstack.length - 1].last_column - }; - if (ranges) { - yyval._$.range = [ - lstack[lstack.length - (len || 1)].range[0], - lstack[lstack.length - 1].range[1] - ]; - } - r = this.performAction.call(yyval, yytext, yyleng, yylineno, this.yy, action[1], vstack, lstack); - if (typeof r !== 'undefined') { - return r; - } - if (len) { - stack = stack.slice(0, -1 * len * 2); - vstack = vstack.slice(0, -1 * len); - lstack = lstack.slice(0, -1 * len); - } - stack.push(this.productions_[action[1]][0]); - vstack.push(yyval.$); - lstack.push(yyval._$); - newState = table[stack[stack.length - 2]][stack[stack.length - 1]]; - stack.push(newState); - break; - case 3: - return true; - } - } - return true; -}}; -undefined -function Parser () { - this.yy = {}; -} -Parser.prototype = parser;parser.Parser = Parser; - -module.exports = new Parser; - - -}); - -ace.define('ace/mode/coffee/nodes', ['require', 'exports', 'module' , 'ace/mode/coffee/scope', 'ace/mode/coffee/lexer', 'ace/mode/coffee/helpers'], function(require, exports, module) { - - var Access, Arr, Assign, Base, Block, Call, Class, Code, CodeFragment, Comment, Existence, Extends, For, HEXNUM, IDENTIFIER, IDENTIFIER_STR, IS_REGEX, IS_STRING, If, In, Index, LEVEL_ACCESS, LEVEL_COND, LEVEL_LIST, LEVEL_OP, LEVEL_PAREN, LEVEL_TOP, Literal, METHOD_DEF, NEGATE, NO, NUMBER, Obj, Op, Param, Parens, RESERVED, Range, Return, SIMPLENUM, STRICT_PROSCRIBED, Scope, Slice, Splat, Switch, TAB, THIS, Throw, Try, UTILITIES, Value, While, YES, addLocationDataFn, compact, del, ends, extend, flatten, fragmentsToText, isLiteralArguments, isLiteralThis, last, locationDataToString, merge, multident, parseNum, some, starts, throwSyntaxError, unfoldSoak, utility, _ref, _ref1, - __hasProp = {}.hasOwnProperty, - __extends = function(child, parent) { for (var key in parent) { if (__hasProp.call(parent, key)) child[key] = parent[key]; } function ctor() { this.constructor = child; } ctor.prototype = parent.prototype; child.prototype = new ctor(); child.__super__ = parent.prototype; return child; }, - __indexOf = [].indexOf || function(item) { for (var i = 0, l = this.length; i < l; i++) { if (i in this && this[i] === item) return i; } return -1; }, - __slice = [].slice; - - Error.stackTraceLimit = Infinity; - - Scope = require('./scope').Scope; - - _ref = require('./lexer'), RESERVED = _ref.RESERVED, STRICT_PROSCRIBED = _ref.STRICT_PROSCRIBED; - - _ref1 = require('./helpers'), compact = _ref1.compact, flatten = _ref1.flatten, extend = _ref1.extend, merge = _ref1.merge, del = _ref1.del, starts = _ref1.starts, ends = _ref1.ends, last = _ref1.last, some = _ref1.some, addLocationDataFn = _ref1.addLocationDataFn, locationDataToString = _ref1.locationDataToString, throwSyntaxError = _ref1.throwSyntaxError; - - exports.extend = extend; - - exports.addLocationDataFn = addLocationDataFn; - - YES = function() { - return true; - }; - - NO = function() { - return false; - }; - - THIS = function() { - return this; - }; - - NEGATE = function() { - this.negated = !this.negated; - return this; - }; - - exports.CodeFragment = CodeFragment = (function() { - function CodeFragment(parent, code) { - var _ref2; - this.code = "" + code; - this.locationData = parent != null ? parent.locationData : void 0; - this.type = (parent != null ? (_ref2 = parent.constructor) != null ? _ref2.name : void 0 : void 0) || 'unknown'; - } - - CodeFragment.prototype.toString = function() { - return "" + this.code + (this.locationData ? ": " + locationDataToString(this.locationData) : ''); - }; - - return CodeFragment; - - })(); - - fragmentsToText = function(fragments) { - var fragment; - return ((function() { - var _i, _len, _results; - _results = []; - for (_i = 0, _len = fragments.length; _i < _len; _i++) { - fragment = fragments[_i]; - _results.push(fragment.code); - } - return _results; - })()).join(''); - }; - - exports.Base = Base = (function() { - function Base() {} - - Base.prototype.compile = function(o, lvl) { - return fragmentsToText(this.compileToFragments(o, lvl)); - }; - - Base.prototype.compileToFragments = function(o, lvl) { - var node; - o = extend({}, o); - if (lvl) { - o.level = lvl; - } - node = this.unfoldSoak(o) || this; - node.tab = o.indent; - if (o.level === LEVEL_TOP || !node.isStatement(o)) { - return node.compileNode(o); - } else { - return node.compileClosure(o); - } - }; - - Base.prototype.compileClosure = function(o) { - var args, argumentsNode, func, jumpNode, meth; - if (jumpNode = this.jumps()) { - jumpNode.error('cannot use a pure statement in an expression'); - } - o.sharedScope = true; - func = new Code([], Block.wrap([this])); - args = []; - if ((argumentsNode = this.contains(isLiteralArguments)) || this.contains(isLiteralThis)) { - args = [new Literal('this')]; - if (argumentsNode) { - meth = 'apply'; - args.push(new Literal('arguments')); - } else { - meth = 'call'; - } - func = new Value(func, [new Access(new Literal(meth))]); - } - return (new Call(func, args)).compileNode(o); - }; - - Base.prototype.cache = function(o, level, reused) { - var ref, sub; - if (!this.isComplex()) { - ref = level ? this.compileToFragments(o, level) : this; - return [ref, ref]; - } else { - ref = new Literal(reused || o.scope.freeVariable('ref')); - sub = new Assign(ref, this); - if (level) { - return [sub.compileToFragments(o, level), [this.makeCode(ref.value)]]; - } else { - return [sub, ref]; - } - } - }; - - Base.prototype.cacheToCodeFragments = function(cacheValues) { - return [fragmentsToText(cacheValues[0]), fragmentsToText(cacheValues[1])]; - }; - - Base.prototype.makeReturn = function(res) { - var me; - me = this.unwrapAll(); - if (res) { - return new Call(new Literal("" + res + ".push"), [me]); - } else { - return new Return(me); - } - }; - - Base.prototype.contains = function(pred) { - var node; - node = void 0; - this.traverseChildren(false, function(n) { - if (pred(n)) { - node = n; - return false; - } - }); - return node; - }; - - Base.prototype.lastNonComment = function(list) { - var i; - i = list.length; - while (i--) { - if (!(list[i] instanceof Comment)) { - return list[i]; - } - } - return null; - }; - - Base.prototype.toString = function(idt, name) { - var tree; - if (idt == null) { - idt = ''; - } - if (name == null) { - name = this.constructor.name; - } - tree = '\n' + idt + name; - if (this.soak) { - tree += '?'; - } - this.eachChild(function(node) { - return tree += node.toString(idt + TAB); - }); - return tree; - }; - - Base.prototype.eachChild = function(func) { - var attr, child, _i, _j, _len, _len1, _ref2, _ref3; - if (!this.children) { - return this; - } - _ref2 = this.children; - for (_i = 0, _len = _ref2.length; _i < _len; _i++) { - attr = _ref2[_i]; - if (this[attr]) { - _ref3 = flatten([this[attr]]); - for (_j = 0, _len1 = _ref3.length; _j < _len1; _j++) { - child = _ref3[_j]; - if (func(child) === false) { - return this; - } - } - } - } - return this; - }; - - Base.prototype.traverseChildren = function(crossScope, func) { - return this.eachChild(function(child) { - var recur; - recur = func(child); - if (recur !== false) { - return child.traverseChildren(crossScope, func); - } - }); - }; - - Base.prototype.invert = function() { - return new Op('!', this); - }; - - Base.prototype.unwrapAll = function() { - var node; - node = this; - while (node !== (node = node.unwrap())) { - continue; - } - return node; - }; - - Base.prototype.children = []; - - Base.prototype.isStatement = NO; - - Base.prototype.jumps = NO; - - Base.prototype.isComplex = YES; - - Base.prototype.isChainable = NO; - - Base.prototype.isAssignable = NO; - - Base.prototype.unwrap = THIS; - - Base.prototype.unfoldSoak = NO; - - Base.prototype.assigns = NO; - - Base.prototype.updateLocationDataIfMissing = function(locationData) { - if (this.locationData) { - return this; - } - this.locationData = locationData; - return this.eachChild(function(child) { - return child.updateLocationDataIfMissing(locationData); - }); - }; - - Base.prototype.error = function(message) { - return throwSyntaxError(message, this.locationData); - }; - - Base.prototype.makeCode = function(code) { - return new CodeFragment(this, code); - }; - - Base.prototype.wrapInBraces = function(fragments) { - return [].concat(this.makeCode('('), fragments, this.makeCode(')')); - }; - - Base.prototype.joinFragmentArrays = function(fragmentsList, joinStr) { - var answer, fragments, i, _i, _len; - answer = []; - for (i = _i = 0, _len = fragmentsList.length; _i < _len; i = ++_i) { - fragments = fragmentsList[i]; - if (i) { - answer.push(this.makeCode(joinStr)); - } - answer = answer.concat(fragments); - } - return answer; - }; - - return Base; - - })(); - - exports.Block = Block = (function(_super) { - __extends(Block, _super); - - function Block(nodes) { - this.expressions = compact(flatten(nodes || [])); - } - - Block.prototype.children = ['expressions']; - - Block.prototype.push = function(node) { - this.expressions.push(node); - return this; - }; - - Block.prototype.pop = function() { - return this.expressions.pop(); - }; - - Block.prototype.unshift = function(node) { - this.expressions.unshift(node); - return this; - }; - - Block.prototype.unwrap = function() { - if (this.expressions.length === 1) { - return this.expressions[0]; - } else { - return this; - } - }; - - Block.prototype.isEmpty = function() { - return !this.expressions.length; - }; - - Block.prototype.isStatement = function(o) { - var exp, _i, _len, _ref2; - _ref2 = this.expressions; - for (_i = 0, _len = _ref2.length; _i < _len; _i++) { - exp = _ref2[_i]; - if (exp.isStatement(o)) { - return true; - } - } - return false; - }; - - Block.prototype.jumps = function(o) { - var exp, jumpNode, _i, _len, _ref2; - _ref2 = this.expressions; - for (_i = 0, _len = _ref2.length; _i < _len; _i++) { - exp = _ref2[_i]; - if (jumpNode = exp.jumps(o)) { - return jumpNode; - } - } - }; - - Block.prototype.makeReturn = function(res) { - var expr, len; - len = this.expressions.length; - while (len--) { - expr = this.expressions[len]; - if (!(expr instanceof Comment)) { - this.expressions[len] = expr.makeReturn(res); - if (expr instanceof Return && !expr.expression) { - this.expressions.splice(len, 1); - } - break; - } - } - return this; - }; - - Block.prototype.compileToFragments = function(o, level) { - if (o == null) { - o = {}; - } - if (o.scope) { - return Block.__super__.compileToFragments.call(this, o, level); - } else { - return this.compileRoot(o); - } - }; - - Block.prototype.compileNode = function(o) { - var answer, compiledNodes, fragments, index, node, top, _i, _len, _ref2; - this.tab = o.indent; - top = o.level === LEVEL_TOP; - compiledNodes = []; - _ref2 = this.expressions; - for (index = _i = 0, _len = _ref2.length; _i < _len; index = ++_i) { - node = _ref2[index]; - node = node.unwrapAll(); - node = node.unfoldSoak(o) || node; - if (node instanceof Block) { - compiledNodes.push(node.compileNode(o)); - } else if (top) { - node.front = true; - fragments = node.compileToFragments(o); - if (!node.isStatement(o)) { - fragments.unshift(this.makeCode("" + this.tab)); - fragments.push(this.makeCode(";")); - } - compiledNodes.push(fragments); - } else { - compiledNodes.push(node.compileToFragments(o, LEVEL_LIST)); - } - } - if (top) { - if (this.spaced) { - return [].concat(this.joinFragmentArrays(compiledNodes, '\n\n'), this.makeCode("\n")); - } else { - return this.joinFragmentArrays(compiledNodes, '\n'); - } - } - if (compiledNodes.length) { - answer = this.joinFragmentArrays(compiledNodes, ', '); - } else { - answer = [this.makeCode("void 0")]; - } - if (compiledNodes.length > 1 && o.level >= LEVEL_LIST) { - return this.wrapInBraces(answer); - } else { - return answer; - } - }; - - Block.prototype.compileRoot = function(o) { - var exp, fragments, i, name, prelude, preludeExps, rest, _i, _len, _ref2; - o.indent = o.bare ? '' : TAB; - o.level = LEVEL_TOP; - this.spaced = true; - o.scope = new Scope(null, this, null); - _ref2 = o.locals || []; - for (_i = 0, _len = _ref2.length; _i < _len; _i++) { - name = _ref2[_i]; - o.scope.parameter(name); - } - prelude = []; - if (!o.bare) { - preludeExps = (function() { - var _j, _len1, _ref3, _results; - _ref3 = this.expressions; - _results = []; - for (i = _j = 0, _len1 = _ref3.length; _j < _len1; i = ++_j) { - exp = _ref3[i]; - if (!(exp.unwrap() instanceof Comment)) { - break; - } - _results.push(exp); - } - return _results; - }).call(this); - rest = this.expressions.slice(preludeExps.length); - this.expressions = preludeExps; - if (preludeExps.length) { - prelude = this.compileNode(merge(o, { - indent: '' - })); - prelude.push(this.makeCode("\n")); - } - this.expressions = rest; - } - fragments = this.compileWithDeclarations(o); - if (o.bare) { - return fragments; - } - return [].concat(prelude, this.makeCode("(function() {\n"), fragments, this.makeCode("\n}).call(this);\n")); - }; - - Block.prototype.compileWithDeclarations = function(o) { - var assigns, declars, exp, fragments, i, post, rest, scope, spaced, _i, _len, _ref2, _ref3, _ref4; - fragments = []; - post = []; - _ref2 = this.expressions; - for (i = _i = 0, _len = _ref2.length; _i < _len; i = ++_i) { - exp = _ref2[i]; - exp = exp.unwrap(); - if (!(exp instanceof Comment || exp instanceof Literal)) { - break; - } - } - o = merge(o, { - level: LEVEL_TOP - }); - if (i) { - rest = this.expressions.splice(i, 9e9); - _ref3 = [this.spaced, false], spaced = _ref3[0], this.spaced = _ref3[1]; - _ref4 = [this.compileNode(o), spaced], fragments = _ref4[0], this.spaced = _ref4[1]; - this.expressions = rest; - } - post = this.compileNode(o); - scope = o.scope; - if (scope.expressions === this) { - declars = o.scope.hasDeclarations(); - assigns = scope.hasAssignments; - if (declars || assigns) { - if (i) { - fragments.push(this.makeCode('\n')); - } - fragments.push(this.makeCode("" + this.tab + "var ")); - if (declars) { - fragments.push(this.makeCode(scope.declaredVariables().join(', '))); - } - if (assigns) { - if (declars) { - fragments.push(this.makeCode(",\n" + (this.tab + TAB))); - } - fragments.push(this.makeCode(scope.assignedVariables().join(",\n" + (this.tab + TAB)))); - } - fragments.push(this.makeCode(";\n" + (this.spaced ? '\n' : ''))); - } else if (fragments.length && post.length) { - fragments.push(this.makeCode("\n")); - } - } - return fragments.concat(post); - }; - - Block.wrap = function(nodes) { - if (nodes.length === 1 && nodes[0] instanceof Block) { - return nodes[0]; - } - return new Block(nodes); - }; - - return Block; - - })(Base); - - exports.Literal = Literal = (function(_super) { - __extends(Literal, _super); - - function Literal(value) { - this.value = value; - } - - Literal.prototype.makeReturn = function() { - if (this.isStatement()) { - return this; - } else { - return Literal.__super__.makeReturn.apply(this, arguments); - } - }; - - Literal.prototype.isAssignable = function() { - return IDENTIFIER.test(this.value); - }; - - Literal.prototype.isStatement = function() { - var _ref2; - return (_ref2 = this.value) === 'break' || _ref2 === 'continue' || _ref2 === 'debugger'; - }; - - Literal.prototype.isComplex = NO; - - Literal.prototype.assigns = function(name) { - return name === this.value; - }; - - Literal.prototype.jumps = function(o) { - if (this.value === 'break' && !((o != null ? o.loop : void 0) || (o != null ? o.block : void 0))) { - return this; - } - if (this.value === 'continue' && !(o != null ? o.loop : void 0)) { - return this; - } - }; - - Literal.prototype.compileNode = function(o) { - var answer, code, _ref2; - code = this.value === 'this' ? ((_ref2 = o.scope.method) != null ? _ref2.bound : void 0) ? o.scope.method.context : this.value : this.value.reserved ? "\"" + this.value + "\"" : this.value; - answer = this.isStatement() ? "" + this.tab + code + ";" : code; - return [this.makeCode(answer)]; - }; - - Literal.prototype.toString = function() { - return ' "' + this.value + '"'; - }; - - return Literal; - - })(Base); - - exports.Undefined = (function(_super) { - __extends(Undefined, _super); - - function Undefined() { - return Undefined.__super__.constructor.apply(this, arguments); - } - - Undefined.prototype.isAssignable = NO; - - Undefined.prototype.isComplex = NO; - - Undefined.prototype.compileNode = function(o) { - return [this.makeCode(o.level >= LEVEL_ACCESS ? '(void 0)' : 'void 0')]; - }; - - return Undefined; - - })(Base); - - exports.Null = (function(_super) { - __extends(Null, _super); - - function Null() { - return Null.__super__.constructor.apply(this, arguments); - } - - Null.prototype.isAssignable = NO; - - Null.prototype.isComplex = NO; - - Null.prototype.compileNode = function() { - return [this.makeCode("null")]; - }; - - return Null; - - })(Base); - - exports.Bool = (function(_super) { - __extends(Bool, _super); - - Bool.prototype.isAssignable = NO; - - Bool.prototype.isComplex = NO; - - Bool.prototype.compileNode = function() { - return [this.makeCode(this.val)]; - }; - - function Bool(val) { - this.val = val; - } - - return Bool; - - })(Base); - - exports.Return = Return = (function(_super) { - __extends(Return, _super); - - function Return(expr) { - if (expr && !expr.unwrap().isUndefined) { - this.expression = expr; - } - } - - Return.prototype.children = ['expression']; - - Return.prototype.isStatement = YES; - - Return.prototype.makeReturn = THIS; - - Return.prototype.jumps = THIS; - - Return.prototype.compileToFragments = function(o, level) { - var expr, _ref2; - expr = (_ref2 = this.expression) != null ? _ref2.makeReturn() : void 0; - if (expr && !(expr instanceof Return)) { - return expr.compileToFragments(o, level); - } else { - return Return.__super__.compileToFragments.call(this, o, level); - } - }; - - Return.prototype.compileNode = function(o) { - var answer; - answer = []; - answer.push(this.makeCode(this.tab + ("return" + (this.expression ? " " : "")))); - if (this.expression) { - answer = answer.concat(this.expression.compileToFragments(o, LEVEL_PAREN)); - } - answer.push(this.makeCode(";")); - return answer; - }; - - return Return; - - })(Base); - - exports.Value = Value = (function(_super) { - __extends(Value, _super); - - function Value(base, props, tag) { - if (!props && base instanceof Value) { - return base; - } - this.base = base; - this.properties = props || []; - if (tag) { - this[tag] = true; - } - return this; - } - - Value.prototype.children = ['base', 'properties']; - - Value.prototype.add = function(props) { - this.properties = this.properties.concat(props); - return this; - }; - - Value.prototype.hasProperties = function() { - return !!this.properties.length; - }; - - Value.prototype.bareLiteral = function(type) { - return !this.properties.length && this.base instanceof type; - }; - - Value.prototype.isArray = function() { - return this.bareLiteral(Arr); - }; - - Value.prototype.isRange = function() { - return this.bareLiteral(Range); - }; - - Value.prototype.isComplex = function() { - return this.hasProperties() || this.base.isComplex(); - }; - - Value.prototype.isAssignable = function() { - return this.hasProperties() || this.base.isAssignable(); - }; - - Value.prototype.isSimpleNumber = function() { - return this.bareLiteral(Literal) && SIMPLENUM.test(this.base.value); - }; - - Value.prototype.isString = function() { - return this.bareLiteral(Literal) && IS_STRING.test(this.base.value); - }; - - Value.prototype.isRegex = function() { - return this.bareLiteral(Literal) && IS_REGEX.test(this.base.value); - }; - - Value.prototype.isAtomic = function() { - var node, _i, _len, _ref2; - _ref2 = this.properties.concat(this.base); - for (_i = 0, _len = _ref2.length; _i < _len; _i++) { - node = _ref2[_i]; - if (node.soak || node instanceof Call) { - return false; - } - } - return true; - }; - - Value.prototype.isNotCallable = function() { - return this.isSimpleNumber() || this.isString() || this.isRegex() || this.isArray() || this.isRange() || this.isSplice() || this.isObject(); - }; - - Value.prototype.isStatement = function(o) { - return !this.properties.length && this.base.isStatement(o); - }; - - Value.prototype.assigns = function(name) { - return !this.properties.length && this.base.assigns(name); - }; - - Value.prototype.jumps = function(o) { - return !this.properties.length && this.base.jumps(o); - }; - - Value.prototype.isObject = function(onlyGenerated) { - if (this.properties.length) { - return false; - } - return (this.base instanceof Obj) && (!onlyGenerated || this.base.generated); - }; - - Value.prototype.isSplice = function() { - return last(this.properties) instanceof Slice; - }; - - Value.prototype.looksStatic = function(className) { - var _ref2; - return this.base.value === className && this.properties.length && ((_ref2 = this.properties[0].name) != null ? _ref2.value : void 0) !== 'prototype'; - }; - - Value.prototype.unwrap = function() { - if (this.properties.length) { - return this; - } else { - return this.base; - } - }; - - Value.prototype.cacheReference = function(o) { - var base, bref, name, nref; - name = last(this.properties); - if (this.properties.length < 2 && !this.base.isComplex() && !(name != null ? name.isComplex() : void 0)) { - return [this, this]; - } - base = new Value(this.base, this.properties.slice(0, -1)); - if (base.isComplex()) { - bref = new Literal(o.scope.freeVariable('base')); - base = new Value(new Parens(new Assign(bref, base))); - } - if (!name) { - return [base, bref]; - } - if (name.isComplex()) { - nref = new Literal(o.scope.freeVariable('name')); - name = new Index(new Assign(nref, name.index)); - nref = new Index(nref); - } - return [base.add(name), new Value(bref || base.base, [nref || name])]; - }; - - Value.prototype.compileNode = function(o) { - var fragments, prop, props, _i, _len; - this.base.front = this.front; - props = this.properties; - fragments = this.base.compileToFragments(o, (props.length ? LEVEL_ACCESS : null)); - if ((this.base instanceof Parens || props.length) && SIMPLENUM.test(fragmentsToText(fragments))) { - fragments.push(this.makeCode('.')); - } - for (_i = 0, _len = props.length; _i < _len; _i++) { - prop = props[_i]; - fragments.push.apply(fragments, prop.compileToFragments(o)); - } - return fragments; - }; - - Value.prototype.unfoldSoak = function(o) { - return this.unfoldedSoak != null ? this.unfoldedSoak : this.unfoldedSoak = (function(_this) { - return function() { - var fst, i, ifn, prop, ref, snd, _i, _len, _ref2, _ref3; - if (ifn = _this.base.unfoldSoak(o)) { - (_ref2 = ifn.body.properties).push.apply(_ref2, _this.properties); - return ifn; - } - _ref3 = _this.properties; - for (i = _i = 0, _len = _ref3.length; _i < _len; i = ++_i) { - prop = _ref3[i]; - if (!prop.soak) { - continue; - } - prop.soak = false; - fst = new Value(_this.base, _this.properties.slice(0, i)); - snd = new Value(_this.base, _this.properties.slice(i)); - if (fst.isComplex()) { - ref = new Literal(o.scope.freeVariable('ref')); - fst = new Parens(new Assign(ref, fst)); - snd.base = ref; - } - return new If(new Existence(fst), snd, { - soak: true - }); - } - return false; - }; - })(this)(); - }; - - return Value; - - })(Base); - - exports.Comment = Comment = (function(_super) { - __extends(Comment, _super); - - function Comment(comment) { - this.comment = comment; - } - - Comment.prototype.isStatement = YES; - - Comment.prototype.makeReturn = THIS; - - Comment.prototype.compileNode = function(o, level) { - var code, comment; - comment = this.comment.replace(/^(\s*)#/gm, "$1 *"); - code = "/*" + (multident(comment, this.tab)) + (__indexOf.call(comment, '\n') >= 0 ? "\n" + this.tab : '') + " */"; - if ((level || o.level) === LEVEL_TOP) { - code = o.indent + code; - } - return [this.makeCode("\n"), this.makeCode(code)]; - }; - - return Comment; - - })(Base); - - exports.Call = Call = (function(_super) { - __extends(Call, _super); - - function Call(variable, args, soak) { - this.args = args != null ? args : []; - this.soak = soak; - this.isNew = false; - this.isSuper = variable === 'super'; - this.variable = this.isSuper ? null : variable; - if (variable instanceof Value && variable.isNotCallable()) { - variable.error("literal is not a function"); - } - } - - Call.prototype.children = ['variable', 'args']; - - Call.prototype.newInstance = function() { - var base, _ref2; - base = ((_ref2 = this.variable) != null ? _ref2.base : void 0) || this.variable; - if (base instanceof Call && !base.isNew) { - base.newInstance(); - } else { - this.isNew = true; - } - return this; - }; - - Call.prototype.superReference = function(o) { - var accesses, method; - method = o.scope.namedMethod(); - if (method != null ? method.klass : void 0) { - accesses = [new Access(new Literal('__super__'))]; - if (method["static"]) { - accesses.push(new Access(new Literal('constructor'))); - } - accesses.push(new Access(new Literal(method.name))); - return (new Value(new Literal(method.klass), accesses)).compile(o); - } else if (method != null ? method.ctor : void 0) { - return "" + method.name + ".__super__.constructor"; - } else { - return this.error('cannot call super outside of an instance method.'); - } - }; - - Call.prototype.superThis = function(o) { - var method; - method = o.scope.method; - return (method && !method.klass && method.context) || "this"; - }; - - Call.prototype.unfoldSoak = function(o) { - var call, ifn, left, list, rite, _i, _len, _ref2, _ref3; - if (this.soak) { - if (this.variable) { - if (ifn = unfoldSoak(o, this, 'variable')) { - return ifn; - } - _ref2 = new Value(this.variable).cacheReference(o), left = _ref2[0], rite = _ref2[1]; - } else { - left = new Literal(this.superReference(o)); - rite = new Value(left); - } - rite = new Call(rite, this.args); - rite.isNew = this.isNew; - left = new Literal("typeof " + (left.compile(o)) + " === \"function\""); - return new If(left, new Value(rite), { - soak: true - }); - } - call = this; - list = []; - while (true) { - if (call.variable instanceof Call) { - list.push(call); - call = call.variable; - continue; - } - if (!(call.variable instanceof Value)) { - break; - } - list.push(call); - if (!((call = call.variable.base) instanceof Call)) { - break; - } - } - _ref3 = list.reverse(); - for (_i = 0, _len = _ref3.length; _i < _len; _i++) { - call = _ref3[_i]; - if (ifn) { - if (call.variable instanceof Call) { - call.variable = ifn; - } else { - call.variable.base = ifn; - } - } - ifn = unfoldSoak(o, call, 'variable'); - } - return ifn; - }; - - Call.prototype.compileNode = function(o) { - var arg, argIndex, compiledArgs, compiledArray, fragments, preface, _i, _len, _ref2, _ref3; - if ((_ref2 = this.variable) != null) { - _ref2.front = this.front; - } - compiledArray = Splat.compileSplattedArray(o, this.args, true); - if (compiledArray.length) { - return this.compileSplat(o, compiledArray); - } - compiledArgs = []; - _ref3 = this.args; - for (argIndex = _i = 0, _len = _ref3.length; _i < _len; argIndex = ++_i) { - arg = _ref3[argIndex]; - if (argIndex) { - compiledArgs.push(this.makeCode(", ")); - } - compiledArgs.push.apply(compiledArgs, arg.compileToFragments(o, LEVEL_LIST)); - } - fragments = []; - if (this.isSuper) { - preface = this.superReference(o) + (".call(" + (this.superThis(o))); - if (compiledArgs.length) { - preface += ", "; - } - fragments.push(this.makeCode(preface)); - } else { - if (this.isNew) { - fragments.push(this.makeCode('new ')); - } - fragments.push.apply(fragments, this.variable.compileToFragments(o, LEVEL_ACCESS)); - fragments.push(this.makeCode("(")); - } - fragments.push.apply(fragments, compiledArgs); - fragments.push(this.makeCode(")")); - return fragments; - }; - - Call.prototype.compileSplat = function(o, splatArgs) { - var answer, base, fun, idt, name, ref; - if (this.isSuper) { - return [].concat(this.makeCode("" + (this.superReference(o)) + ".apply(" + (this.superThis(o)) + ", "), splatArgs, this.makeCode(")")); - } - if (this.isNew) { - idt = this.tab + TAB; - return [].concat(this.makeCode("(function(func, args, ctor) {\n" + idt + "ctor.prototype = func.prototype;\n" + idt + "var child = new ctor, result = func.apply(child, args);\n" + idt + "return Object(result) === result ? result : child;\n" + this.tab + "})("), this.variable.compileToFragments(o, LEVEL_LIST), this.makeCode(", "), splatArgs, this.makeCode(", function(){})")); - } - answer = []; - base = new Value(this.variable); - if ((name = base.properties.pop()) && base.isComplex()) { - ref = o.scope.freeVariable('ref'); - answer = answer.concat(this.makeCode("(" + ref + " = "), base.compileToFragments(o, LEVEL_LIST), this.makeCode(")"), name.compileToFragments(o)); - } else { - fun = base.compileToFragments(o, LEVEL_ACCESS); - if (SIMPLENUM.test(fragmentsToText(fun))) { - fun = this.wrapInBraces(fun); - } - if (name) { - ref = fragmentsToText(fun); - fun.push.apply(fun, name.compileToFragments(o)); - } else { - ref = 'null'; - } - answer = answer.concat(fun); - } - return answer = answer.concat(this.makeCode(".apply(" + ref + ", "), splatArgs, this.makeCode(")")); - }; - - return Call; - - })(Base); - - exports.Extends = Extends = (function(_super) { - __extends(Extends, _super); - - function Extends(child, parent) { - this.child = child; - this.parent = parent; - } - - Extends.prototype.children = ['child', 'parent']; - - Extends.prototype.compileToFragments = function(o) { - return new Call(new Value(new Literal(utility('extends'))), [this.child, this.parent]).compileToFragments(o); - }; - - return Extends; - - })(Base); - - exports.Access = Access = (function(_super) { - __extends(Access, _super); - - function Access(name, tag) { - this.name = name; - this.name.asKey = true; - this.soak = tag === 'soak'; - } - - Access.prototype.children = ['name']; - - Access.prototype.compileToFragments = function(o) { - var name; - name = this.name.compileToFragments(o); - if (IDENTIFIER.test(fragmentsToText(name))) { - name.unshift(this.makeCode(".")); - } else { - name.unshift(this.makeCode("[")); - name.push(this.makeCode("]")); - } - return name; - }; - - Access.prototype.isComplex = NO; - - return Access; - - })(Base); - - exports.Index = Index = (function(_super) { - __extends(Index, _super); - - function Index(index) { - this.index = index; - } - - Index.prototype.children = ['index']; - - Index.prototype.compileToFragments = function(o) { - return [].concat(this.makeCode("["), this.index.compileToFragments(o, LEVEL_PAREN), this.makeCode("]")); - }; - - Index.prototype.isComplex = function() { - return this.index.isComplex(); - }; - - return Index; - - })(Base); - - exports.Range = Range = (function(_super) { - __extends(Range, _super); - - Range.prototype.children = ['from', 'to']; - - function Range(from, to, tag) { - this.from = from; - this.to = to; - this.exclusive = tag === 'exclusive'; - this.equals = this.exclusive ? '' : '='; - } - - Range.prototype.compileVariables = function(o) { - var step, _ref2, _ref3, _ref4, _ref5; - o = merge(o, { - top: true - }); - _ref2 = this.cacheToCodeFragments(this.from.cache(o, LEVEL_LIST)), this.fromC = _ref2[0], this.fromVar = _ref2[1]; - _ref3 = this.cacheToCodeFragments(this.to.cache(o, LEVEL_LIST)), this.toC = _ref3[0], this.toVar = _ref3[1]; - if (step = del(o, 'step')) { - _ref4 = this.cacheToCodeFragments(step.cache(o, LEVEL_LIST)), this.step = _ref4[0], this.stepVar = _ref4[1]; - } - _ref5 = [this.fromVar.match(NUMBER), this.toVar.match(NUMBER)], this.fromNum = _ref5[0], this.toNum = _ref5[1]; - if (this.stepVar) { - return this.stepNum = this.stepVar.match(NUMBER); - } - }; - - Range.prototype.compileNode = function(o) { - var cond, condPart, from, gt, idx, idxName, known, lt, namedIndex, stepPart, to, varPart, _ref2, _ref3; - if (!this.fromVar) { - this.compileVariables(o); - } - if (!o.index) { - return this.compileArray(o); - } - known = this.fromNum && this.toNum; - idx = del(o, 'index'); - idxName = del(o, 'name'); - namedIndex = idxName && idxName !== idx; - varPart = "" + idx + " = " + this.fromC; - if (this.toC !== this.toVar) { - varPart += ", " + this.toC; - } - if (this.step !== this.stepVar) { - varPart += ", " + this.step; - } - _ref2 = ["" + idx + " <" + this.equals, "" + idx + " >" + this.equals], lt = _ref2[0], gt = _ref2[1]; - condPart = this.stepNum ? parseNum(this.stepNum[0]) > 0 ? "" + lt + " " + this.toVar : "" + gt + " " + this.toVar : known ? ((_ref3 = [parseNum(this.fromNum[0]), parseNum(this.toNum[0])], from = _ref3[0], to = _ref3[1], _ref3), from <= to ? "" + lt + " " + to : "" + gt + " " + to) : (cond = this.stepVar ? "" + this.stepVar + " > 0" : "" + this.fromVar + " <= " + this.toVar, "" + cond + " ? " + lt + " " + this.toVar + " : " + gt + " " + this.toVar); - stepPart = this.stepVar ? "" + idx + " += " + this.stepVar : known ? namedIndex ? from <= to ? "++" + idx : "--" + idx : from <= to ? "" + idx + "++" : "" + idx + "--" : namedIndex ? "" + cond + " ? ++" + idx + " : --" + idx : "" + cond + " ? " + idx + "++ : " + idx + "--"; - if (namedIndex) { - varPart = "" + idxName + " = " + varPart; - } - if (namedIndex) { - stepPart = "" + idxName + " = " + stepPart; - } - return [this.makeCode("" + varPart + "; " + condPart + "; " + stepPart)]; - }; - - Range.prototype.compileArray = function(o) { - var args, body, cond, hasArgs, i, idt, post, pre, range, result, vars, _i, _ref2, _ref3, _results; - if (this.fromNum && this.toNum && Math.abs(this.fromNum - this.toNum) <= 20) { - range = (function() { - _results = []; - for (var _i = _ref2 = +this.fromNum, _ref3 = +this.toNum; _ref2 <= _ref3 ? _i <= _ref3 : _i >= _ref3; _ref2 <= _ref3 ? _i++ : _i--){ _results.push(_i); } - return _results; - }).apply(this); - if (this.exclusive) { - range.pop(); - } - return [this.makeCode("[" + (range.join(', ')) + "]")]; - } - idt = this.tab + TAB; - i = o.scope.freeVariable('i'); - result = o.scope.freeVariable('results'); - pre = "\n" + idt + result + " = [];"; - if (this.fromNum && this.toNum) { - o.index = i; - body = fragmentsToText(this.compileNode(o)); - } else { - vars = ("" + i + " = " + this.fromC) + (this.toC !== this.toVar ? ", " + this.toC : ''); - cond = "" + this.fromVar + " <= " + this.toVar; - body = "var " + vars + "; " + cond + " ? " + i + " <" + this.equals + " " + this.toVar + " : " + i + " >" + this.equals + " " + this.toVar + "; " + cond + " ? " + i + "++ : " + i + "--"; - } - post = "{ " + result + ".push(" + i + "); }\n" + idt + "return " + result + ";\n" + o.indent; - hasArgs = function(node) { - return node != null ? node.contains(isLiteralArguments) : void 0; - }; - if (hasArgs(this.from) || hasArgs(this.to)) { - args = ', arguments'; - } - return [this.makeCode("(function() {" + pre + "\n" + idt + "for (" + body + ")" + post + "}).apply(this" + (args != null ? args : '') + ")")]; - }; - - return Range; - - })(Base); - - exports.Slice = Slice = (function(_super) { - __extends(Slice, _super); - - Slice.prototype.children = ['range']; - - function Slice(range) { - this.range = range; - Slice.__super__.constructor.call(this); - } - - Slice.prototype.compileNode = function(o) { - var compiled, compiledText, from, fromCompiled, to, toStr, _ref2; - _ref2 = this.range, to = _ref2.to, from = _ref2.from; - fromCompiled = from && from.compileToFragments(o, LEVEL_PAREN) || [this.makeCode('0')]; - if (to) { - compiled = to.compileToFragments(o, LEVEL_PAREN); - compiledText = fragmentsToText(compiled); - if (!(!this.range.exclusive && +compiledText === -1)) { - toStr = ', ' + (this.range.exclusive ? compiledText : SIMPLENUM.test(compiledText) ? "" + (+compiledText + 1) : (compiled = to.compileToFragments(o, LEVEL_ACCESS), "+" + (fragmentsToText(compiled)) + " + 1 || 9e9")); - } - } - return [this.makeCode(".slice(" + (fragmentsToText(fromCompiled)) + (toStr || '') + ")")]; - }; - - return Slice; - - })(Base); - - exports.Obj = Obj = (function(_super) { - __extends(Obj, _super); - - function Obj(props, generated) { - this.generated = generated != null ? generated : false; - this.objects = this.properties = props || []; - } - - Obj.prototype.children = ['properties']; - - Obj.prototype.compileNode = function(o) { - var answer, i, idt, indent, join, lastNoncom, node, prop, props, _i, _j, _len, _len1; - props = this.properties; - if (!props.length) { - return [this.makeCode(this.front ? '({})' : '{}')]; - } - if (this.generated) { - for (_i = 0, _len = props.length; _i < _len; _i++) { - node = props[_i]; - if (node instanceof Value) { - node.error('cannot have an implicit value in an implicit object'); - } - } - } - idt = o.indent += TAB; - lastNoncom = this.lastNonComment(this.properties); - answer = []; - for (i = _j = 0, _len1 = props.length; _j < _len1; i = ++_j) { - prop = props[i]; - join = i === props.length - 1 ? '' : prop === lastNoncom || prop instanceof Comment ? '\n' : ',\n'; - indent = prop instanceof Comment ? '' : idt; - if (prop instanceof Assign && prop.variable instanceof Value && prop.variable.hasProperties()) { - prop.variable.error('Invalid object key'); - } - if (prop instanceof Value && prop["this"]) { - prop = new Assign(prop.properties[0].name, prop, 'object'); - } - if (!(prop instanceof Comment)) { - if (!(prop instanceof Assign)) { - prop = new Assign(prop, prop, 'object'); - } - (prop.variable.base || prop.variable).asKey = true; - } - if (indent) { - answer.push(this.makeCode(indent)); - } - answer.push.apply(answer, prop.compileToFragments(o, LEVEL_TOP)); - if (join) { - answer.push(this.makeCode(join)); - } - } - answer.unshift(this.makeCode("{" + (props.length && '\n'))); - answer.push(this.makeCode("" + (props.length && '\n' + this.tab) + "}")); - if (this.front) { - return this.wrapInBraces(answer); - } else { - return answer; - } - }; - - Obj.prototype.assigns = function(name) { - var prop, _i, _len, _ref2; - _ref2 = this.properties; - for (_i = 0, _len = _ref2.length; _i < _len; _i++) { - prop = _ref2[_i]; - if (prop.assigns(name)) { - return true; - } - } - return false; - }; - - return Obj; - - })(Base); - - exports.Arr = Arr = (function(_super) { - __extends(Arr, _super); - - function Arr(objs) { - this.objects = objs || []; - } - - Arr.prototype.children = ['objects']; - - Arr.prototype.compileNode = function(o) { - var answer, compiledObjs, fragments, index, obj, _i, _len; - if (!this.objects.length) { - return [this.makeCode('[]')]; - } - o.indent += TAB; - answer = Splat.compileSplattedArray(o, this.objects); - if (answer.length) { - return answer; - } - answer = []; - compiledObjs = (function() { - var _i, _len, _ref2, _results; - _ref2 = this.objects; - _results = []; - for (_i = 0, _len = _ref2.length; _i < _len; _i++) { - obj = _ref2[_i]; - _results.push(obj.compileToFragments(o, LEVEL_LIST)); - } - return _results; - }).call(this); - for (index = _i = 0, _len = compiledObjs.length; _i < _len; index = ++_i) { - fragments = compiledObjs[index]; - if (index) { - answer.push(this.makeCode(", ")); - } - answer.push.apply(answer, fragments); - } - if (fragmentsToText(answer).indexOf('\n') >= 0) { - answer.unshift(this.makeCode("[\n" + o.indent)); - answer.push(this.makeCode("\n" + this.tab + "]")); - } else { - answer.unshift(this.makeCode("[")); - answer.push(this.makeCode("]")); - } - return answer; - }; - - Arr.prototype.assigns = function(name) { - var obj, _i, _len, _ref2; - _ref2 = this.objects; - for (_i = 0, _len = _ref2.length; _i < _len; _i++) { - obj = _ref2[_i]; - if (obj.assigns(name)) { - return true; - } - } - return false; - }; - - return Arr; - - })(Base); - - exports.Class = Class = (function(_super) { - __extends(Class, _super); - - function Class(variable, parent, body) { - this.variable = variable; - this.parent = parent; - this.body = body != null ? body : new Block; - this.boundFuncs = []; - this.body.classBody = true; - } - - Class.prototype.children = ['variable', 'parent', 'body']; - - Class.prototype.determineName = function() { - var decl, tail; - if (!this.variable) { - return null; - } - decl = (tail = last(this.variable.properties)) ? tail instanceof Access && tail.name.value : this.variable.base.value; - if (__indexOf.call(STRICT_PROSCRIBED, decl) >= 0) { - this.variable.error("class variable name may not be " + decl); - } - return decl && (decl = IDENTIFIER.test(decl) && decl); - }; - - Class.prototype.setContext = function(name) { - return this.body.traverseChildren(false, function(node) { - if (node.classBody) { - return false; - } - if (node instanceof Literal && node.value === 'this') { - return node.value = name; - } else if (node instanceof Code) { - node.klass = name; - if (node.bound) { - return node.context = name; - } - } - }); - }; - - Class.prototype.addBoundFunctions = function(o) { - var bvar, lhs, _i, _len, _ref2; - _ref2 = this.boundFuncs; - for (_i = 0, _len = _ref2.length; _i < _len; _i++) { - bvar = _ref2[_i]; - lhs = (new Value(new Literal("this"), [new Access(bvar)])).compile(o); - this.ctor.body.unshift(new Literal("" + lhs + " = " + (utility('bind')) + "(" + lhs + ", this)")); - } - }; - - Class.prototype.addProperties = function(node, name, o) { - var assign, base, exprs, func, props; - props = node.base.properties.slice(0); - exprs = (function() { - var _results; - _results = []; - while (assign = props.shift()) { - if (assign instanceof Assign) { - base = assign.variable.base; - delete assign.context; - func = assign.value; - if (base.value === 'constructor') { - if (this.ctor) { - assign.error('cannot define more than one constructor in a class'); - } - if (func.bound) { - assign.error('cannot define a constructor as a bound function'); - } - if (func instanceof Code) { - assign = this.ctor = func; - } else { - this.externalCtor = o.classScope.freeVariable('class'); - assign = new Assign(new Literal(this.externalCtor), func); - } - } else { - if (assign.variable["this"]) { - func["static"] = true; - } else { - assign.variable = new Value(new Literal(name), [new Access(new Literal('prototype')), new Access(base)]); - if (func instanceof Code && func.bound) { - this.boundFuncs.push(base); - func.bound = false; - } - } - } - } - _results.push(assign); - } - return _results; - }).call(this); - return compact(exprs); - }; - - Class.prototype.walkBody = function(name, o) { - return this.traverseChildren(false, (function(_this) { - return function(child) { - var cont, exps, i, node, _i, _len, _ref2; - cont = true; - if (child instanceof Class) { - return false; - } - if (child instanceof Block) { - _ref2 = exps = child.expressions; - for (i = _i = 0, _len = _ref2.length; _i < _len; i = ++_i) { - node = _ref2[i]; - if (node instanceof Assign && node.variable.looksStatic(name)) { - node.value["static"] = true; - } else if (node instanceof Value && node.isObject(true)) { - cont = false; - exps[i] = _this.addProperties(node, name, o); - } - } - child.expressions = exps = flatten(exps); - } - return cont && !(child instanceof Class); - }; - })(this)); - }; - - Class.prototype.hoistDirectivePrologue = function() { - var expressions, index, node; - index = 0; - expressions = this.body.expressions; - while ((node = expressions[index]) && node instanceof Comment || node instanceof Value && node.isString()) { - ++index; - } - return this.directives = expressions.splice(0, index); - }; - - Class.prototype.ensureConstructor = function(name) { - if (!this.ctor) { - this.ctor = new Code; - if (this.externalCtor) { - this.ctor.body.push(new Literal("" + this.externalCtor + ".apply(this, arguments)")); - } else if (this.parent) { - this.ctor.body.push(new Literal("" + name + ".__super__.constructor.apply(this, arguments)")); - } - this.ctor.body.makeReturn(); - this.body.expressions.unshift(this.ctor); - } - this.ctor.ctor = this.ctor.name = name; - this.ctor.klass = null; - return this.ctor.noReturn = true; - }; - - Class.prototype.compileNode = function(o) { - var args, argumentsNode, func, jumpNode, klass, lname, name, superClass, _ref2; - if (jumpNode = this.body.jumps()) { - jumpNode.error('Class bodies cannot contain pure statements'); - } - if (argumentsNode = this.body.contains(isLiteralArguments)) { - argumentsNode.error("Class bodies shouldn't reference arguments"); - } - name = this.determineName() || '_Class'; - if (name.reserved) { - name = "_" + name; - } - lname = new Literal(name); - func = new Code([], Block.wrap([this.body])); - args = []; - o.classScope = func.makeScope(o.scope); - this.hoistDirectivePrologue(); - this.setContext(name); - this.walkBody(name, o); - this.ensureConstructor(name); - this.addBoundFunctions(o); - this.body.spaced = true; - this.body.expressions.push(lname); - if (this.parent) { - superClass = new Literal(o.classScope.freeVariable('super', false)); - this.body.expressions.unshift(new Extends(lname, superClass)); - func.params.push(new Param(superClass)); - args.push(this.parent); - } - (_ref2 = this.body.expressions).unshift.apply(_ref2, this.directives); - klass = new Parens(new Call(func, args)); - if (this.variable) { - klass = new Assign(this.variable, klass); - } - return klass.compileToFragments(o); - }; - - return Class; - - })(Base); - - exports.Assign = Assign = (function(_super) { - __extends(Assign, _super); - - function Assign(variable, value, context, options) { - var forbidden, name, _ref2; - this.variable = variable; - this.value = value; - this.context = context; - this.param = options && options.param; - this.subpattern = options && options.subpattern; - forbidden = (_ref2 = (name = this.variable.unwrapAll().value), __indexOf.call(STRICT_PROSCRIBED, _ref2) >= 0); - if (forbidden && this.context !== 'object') { - this.variable.error("variable name may not be \"" + name + "\""); - } - } - - Assign.prototype.children = ['variable', 'value']; - - Assign.prototype.isStatement = function(o) { - return (o != null ? o.level : void 0) === LEVEL_TOP && (this.context != null) && __indexOf.call(this.context, "?") >= 0; - }; - - Assign.prototype.assigns = function(name) { - return this[this.context === 'object' ? 'value' : 'variable'].assigns(name); - }; - - Assign.prototype.unfoldSoak = function(o) { - return unfoldSoak(o, this, 'variable'); - }; - - Assign.prototype.compileNode = function(o) { - var answer, compiledName, isValue, match, name, val, varBase, _ref2, _ref3, _ref4; - if (isValue = this.variable instanceof Value) { - if (this.variable.isArray() || this.variable.isObject()) { - return this.compilePatternMatch(o); - } - if (this.variable.isSplice()) { - return this.compileSplice(o); - } - if ((_ref2 = this.context) === '||=' || _ref2 === '&&=' || _ref2 === '?=') { - return this.compileConditional(o); - } - } - compiledName = this.variable.compileToFragments(o, LEVEL_LIST); - name = fragmentsToText(compiledName); - if (!this.context) { - varBase = this.variable.unwrapAll(); - if (!varBase.isAssignable()) { - this.variable.error("\"" + (this.variable.compile(o)) + "\" cannot be assigned"); - } - if (!(typeof varBase.hasProperties === "function" ? varBase.hasProperties() : void 0)) { - if (this.param) { - o.scope.add(name, 'var'); - } else { - o.scope.find(name); - } - } - } - if (this.value instanceof Code && (match = METHOD_DEF.exec(name))) { - if (match[2]) { - this.value.klass = match[1]; - } - this.value.name = (_ref3 = (_ref4 = match[3]) != null ? _ref4 : match[4]) != null ? _ref3 : match[5]; - } - val = this.value.compileToFragments(o, LEVEL_LIST); - if (this.context === 'object') { - return compiledName.concat(this.makeCode(": "), val); - } - answer = compiledName.concat(this.makeCode(" " + (this.context || '=') + " "), val); - if (o.level <= LEVEL_LIST) { - return answer; - } else { - return this.wrapInBraces(answer); - } - }; - - Assign.prototype.compilePatternMatch = function(o) { - var acc, assigns, code, fragments, i, idx, isObject, ivar, name, obj, objects, olen, ref, rest, splat, top, val, value, vvar, vvarText, _i, _len, _ref2, _ref3, _ref4, _ref5, _ref6, _ref7; - top = o.level === LEVEL_TOP; - value = this.value; - objects = this.variable.base.objects; - if (!(olen = objects.length)) { - code = value.compileToFragments(o); - if (o.level >= LEVEL_OP) { - return this.wrapInBraces(code); - } else { - return code; - } - } - isObject = this.variable.isObject(); - if (top && olen === 1 && !((obj = objects[0]) instanceof Splat)) { - if (obj instanceof Assign) { - _ref2 = obj, (_ref3 = _ref2.variable, idx = _ref3.base), obj = _ref2.value; - } else { - idx = isObject ? obj["this"] ? obj.properties[0].name : obj : new Literal(0); - } - acc = IDENTIFIER.test(idx.unwrap().value || 0); - value = new Value(value); - value.properties.push(new (acc ? Access : Index)(idx)); - if (_ref4 = obj.unwrap().value, __indexOf.call(RESERVED, _ref4) >= 0) { - obj.error("assignment to a reserved word: " + (obj.compile(o))); - } - return new Assign(obj, value, null, { - param: this.param - }).compileToFragments(o, LEVEL_TOP); - } - vvar = value.compileToFragments(o, LEVEL_LIST); - vvarText = fragmentsToText(vvar); - assigns = []; - splat = false; - if (!IDENTIFIER.test(vvarText) || this.variable.assigns(vvarText)) { - assigns.push([this.makeCode("" + (ref = o.scope.freeVariable('ref')) + " = ")].concat(__slice.call(vvar))); - vvar = [this.makeCode(ref)]; - vvarText = ref; - } - for (i = _i = 0, _len = objects.length; _i < _len; i = ++_i) { - obj = objects[i]; - idx = i; - if (isObject) { - if (obj instanceof Assign) { - _ref5 = obj, (_ref6 = _ref5.variable, idx = _ref6.base), obj = _ref5.value; - } else { - if (obj.base instanceof Parens) { - _ref7 = new Value(obj.unwrapAll()).cacheReference(o), obj = _ref7[0], idx = _ref7[1]; - } else { - idx = obj["this"] ? obj.properties[0].name : obj; - } - } - } - if (!splat && obj instanceof Splat) { - name = obj.name.unwrap().value; - obj = obj.unwrap(); - val = "" + olen + " <= " + vvarText + ".length ? " + (utility('slice')) + ".call(" + vvarText + ", " + i; - if (rest = olen - i - 1) { - ivar = o.scope.freeVariable('i'); - val += ", " + ivar + " = " + vvarText + ".length - " + rest + ") : (" + ivar + " = " + i + ", [])"; - } else { - val += ") : []"; - } - val = new Literal(val); - splat = "" + ivar + "++"; - } else { - name = obj.unwrap().value; - if (obj instanceof Splat) { - obj.error("multiple splats are disallowed in an assignment"); - } - if (typeof idx === 'number') { - idx = new Literal(splat || idx); - acc = false; - } else { - acc = isObject && IDENTIFIER.test(idx.unwrap().value || 0); - } - val = new Value(new Literal(vvarText), [new (acc ? Access : Index)(idx)]); - } - if ((name != null) && __indexOf.call(RESERVED, name) >= 0) { - obj.error("assignment to a reserved word: " + (obj.compile(o))); - } - assigns.push(new Assign(obj, val, null, { - param: this.param, - subpattern: true - }).compileToFragments(o, LEVEL_LIST)); - } - if (!(top || this.subpattern)) { - assigns.push(vvar); - } - fragments = this.joinFragmentArrays(assigns, ', '); - if (o.level < LEVEL_LIST) { - return fragments; - } else { - return this.wrapInBraces(fragments); - } - }; - - Assign.prototype.compileConditional = function(o) { - var fragments, left, right, _ref2; - _ref2 = this.variable.cacheReference(o), left = _ref2[0], right = _ref2[1]; - if (!left.properties.length && left.base instanceof Literal && left.base.value !== "this" && !o.scope.check(left.base.value)) { - this.variable.error("the variable \"" + left.base.value + "\" can't be assigned with " + this.context + " because it has not been declared before"); - } - if (__indexOf.call(this.context, "?") >= 0) { - o.isExistentialEquals = true; - return new If(new Existence(left), right, { - type: 'if' - }).addElse(new Assign(right, this.value, '=')).compileToFragments(o); - } else { - fragments = new Op(this.context.slice(0, -1), left, new Assign(right, this.value, '=')).compileToFragments(o); - if (o.level <= LEVEL_LIST) { - return fragments; - } else { - return this.wrapInBraces(fragments); - } - } - }; - - Assign.prototype.compileSplice = function(o) { - var answer, exclusive, from, fromDecl, fromRef, name, to, valDef, valRef, _ref2, _ref3, _ref4; - _ref2 = this.variable.properties.pop().range, from = _ref2.from, to = _ref2.to, exclusive = _ref2.exclusive; - name = this.variable.compile(o); - if (from) { - _ref3 = this.cacheToCodeFragments(from.cache(o, LEVEL_OP)), fromDecl = _ref3[0], fromRef = _ref3[1]; - } else { - fromDecl = fromRef = '0'; - } - if (to) { - if (from instanceof Value && from.isSimpleNumber() && to instanceof Value && to.isSimpleNumber()) { - to = to.compile(o) - fromRef; - if (!exclusive) { - to += 1; - } - } else { - to = to.compile(o, LEVEL_ACCESS) + ' - ' + fromRef; - if (!exclusive) { - to += ' + 1'; - } - } - } else { - to = "9e9"; - } - _ref4 = this.value.cache(o, LEVEL_LIST), valDef = _ref4[0], valRef = _ref4[1]; - answer = [].concat(this.makeCode("[].splice.apply(" + name + ", [" + fromDecl + ", " + to + "].concat("), valDef, this.makeCode(")), "), valRef); - if (o.level > LEVEL_TOP) { - return this.wrapInBraces(answer); - } else { - return answer; - } - }; - - return Assign; - - })(Base); - - exports.Code = Code = (function(_super) { - __extends(Code, _super); - - function Code(params, body, tag) { - this.params = params || []; - this.body = body || new Block; - this.bound = tag === 'boundfunc'; - } - - Code.prototype.children = ['params', 'body']; - - Code.prototype.isStatement = function() { - return !!this.ctor; - }; - - Code.prototype.jumps = NO; - - Code.prototype.makeScope = function(parentScope) { - return new Scope(parentScope, this.body, this); - }; - - Code.prototype.compileNode = function(o) { - var answer, boundfunc, code, exprs, i, lit, p, param, params, ref, splats, uniqs, val, wasEmpty, wrapper, _i, _j, _k, _l, _len, _len1, _len2, _len3, _len4, _len5, _m, _n, _ref2, _ref3, _ref4, _ref5, _ref6, _ref7; - if (this.bound && ((_ref2 = o.scope.method) != null ? _ref2.bound : void 0)) { - this.context = o.scope.method.context; - } - if (this.bound && !this.context) { - this.context = '_this'; - wrapper = new Code([new Param(new Literal(this.context))], new Block([this])); - boundfunc = new Call(wrapper, [new Literal('this')]); - boundfunc.updateLocationDataIfMissing(this.locationData); - return boundfunc.compileNode(o); - } - o.scope = del(o, 'classScope') || this.makeScope(o.scope); - o.scope.shared = del(o, 'sharedScope'); - o.indent += TAB; - delete o.bare; - delete o.isExistentialEquals; - params = []; - exprs = []; - _ref3 = this.params; - for (_i = 0, _len = _ref3.length; _i < _len; _i++) { - param = _ref3[_i]; - o.scope.parameter(param.asReference(o)); - } - _ref4 = this.params; - for (_j = 0, _len1 = _ref4.length; _j < _len1; _j++) { - param = _ref4[_j]; - if (!param.splat) { - continue; - } - _ref5 = this.params; - for (_k = 0, _len2 = _ref5.length; _k < _len2; _k++) { - p = _ref5[_k].name; - if (p["this"]) { - p = p.properties[0].name; - } - if (p.value) { - o.scope.add(p.value, 'var', true); - } - } - splats = new Assign(new Value(new Arr((function() { - var _l, _len3, _ref6, _results; - _ref6 = this.params; - _results = []; - for (_l = 0, _len3 = _ref6.length; _l < _len3; _l++) { - p = _ref6[_l]; - _results.push(p.asReference(o)); - } - return _results; - }).call(this))), new Value(new Literal('arguments'))); - break; - } - _ref6 = this.params; - for (_l = 0, _len3 = _ref6.length; _l < _len3; _l++) { - param = _ref6[_l]; - if (param.isComplex()) { - val = ref = param.asReference(o); - if (param.value) { - val = new Op('?', ref, param.value); - } - exprs.push(new Assign(new Value(param.name), val, '=', { - param: true - })); - } else { - ref = param; - if (param.value) { - lit = new Literal(ref.name.value + ' == null'); - val = new Assign(new Value(param.name), param.value, '='); - exprs.push(new If(lit, val)); - } - } - if (!splats) { - params.push(ref); - } - } - wasEmpty = this.body.isEmpty(); - if (splats) { - exprs.unshift(splats); - } - if (exprs.length) { - (_ref7 = this.body.expressions).unshift.apply(_ref7, exprs); - } - for (i = _m = 0, _len4 = params.length; _m < _len4; i = ++_m) { - p = params[i]; - params[i] = p.compileToFragments(o); - o.scope.parameter(fragmentsToText(params[i])); - } - uniqs = []; - this.eachParamName(function(name, node) { - if (__indexOf.call(uniqs, name) >= 0) { - node.error("multiple parameters named '" + name + "'"); - } - return uniqs.push(name); - }); - if (!(wasEmpty || this.noReturn)) { - this.body.makeReturn(); - } - code = 'function'; - if (this.ctor) { - code += ' ' + this.name; - } - code += '('; - answer = [this.makeCode(code)]; - for (i = _n = 0, _len5 = params.length; _n < _len5; i = ++_n) { - p = params[i]; - if (i) { - answer.push(this.makeCode(", ")); - } - answer.push.apply(answer, p); - } - answer.push(this.makeCode(') {')); - if (!this.body.isEmpty()) { - answer = answer.concat(this.makeCode("\n"), this.body.compileWithDeclarations(o), this.makeCode("\n" + this.tab)); - } - answer.push(this.makeCode('}')); - if (this.ctor) { - return [this.makeCode(this.tab)].concat(__slice.call(answer)); - } - if (this.front || (o.level >= LEVEL_ACCESS)) { - return this.wrapInBraces(answer); - } else { - return answer; - } - }; - - Code.prototype.eachParamName = function(iterator) { - var param, _i, _len, _ref2, _results; - _ref2 = this.params; - _results = []; - for (_i = 0, _len = _ref2.length; _i < _len; _i++) { - param = _ref2[_i]; - _results.push(param.eachName(iterator)); - } - return _results; - }; - - Code.prototype.traverseChildren = function(crossScope, func) { - if (crossScope) { - return Code.__super__.traverseChildren.call(this, crossScope, func); - } - }; - - return Code; - - })(Base); - - exports.Param = Param = (function(_super) { - __extends(Param, _super); - - function Param(name, value, splat) { - var _ref2; - this.name = name; - this.value = value; - this.splat = splat; - if (_ref2 = (name = this.name.unwrapAll().value), __indexOf.call(STRICT_PROSCRIBED, _ref2) >= 0) { - this.name.error("parameter name \"" + name + "\" is not allowed"); - } - } - - Param.prototype.children = ['name', 'value']; - - Param.prototype.compileToFragments = function(o) { - return this.name.compileToFragments(o, LEVEL_LIST); - }; - - Param.prototype.asReference = function(o) { - var node; - if (this.reference) { - return this.reference; - } - node = this.name; - if (node["this"]) { - node = node.properties[0].name; - if (node.value.reserved) { - node = new Literal(o.scope.freeVariable(node.value)); - } - } else if (node.isComplex()) { - node = new Literal(o.scope.freeVariable('arg')); - } - node = new Value(node); - if (this.splat) { - node = new Splat(node); - } - node.updateLocationDataIfMissing(this.locationData); - return this.reference = node; - }; - - Param.prototype.isComplex = function() { - return this.name.isComplex(); - }; - - Param.prototype.eachName = function(iterator, name) { - var atParam, node, obj, _i, _len, _ref2; - if (name == null) { - name = this.name; - } - atParam = function(obj) { - var node; - node = obj.properties[0].name; - if (!node.value.reserved) { - return iterator(node.value, node); - } - }; - if (name instanceof Literal) { - return iterator(name.value, name); - } - if (name instanceof Value) { - return atParam(name); - } - _ref2 = name.objects; - for (_i = 0, _len = _ref2.length; _i < _len; _i++) { - obj = _ref2[_i]; - if (obj instanceof Assign) { - this.eachName(iterator, obj.value.unwrap()); - } else if (obj instanceof Splat) { - node = obj.name.unwrap(); - iterator(node.value, node); - } else if (obj instanceof Value) { - if (obj.isArray() || obj.isObject()) { - this.eachName(iterator, obj.base); - } else if (obj["this"]) { - atParam(obj); - } else { - iterator(obj.base.value, obj.base); - } - } else { - obj.error("illegal parameter " + (obj.compile())); - } - } - }; - - return Param; - - })(Base); - - exports.Splat = Splat = (function(_super) { - __extends(Splat, _super); - - Splat.prototype.children = ['name']; - - Splat.prototype.isAssignable = YES; - - function Splat(name) { - this.name = name.compile ? name : new Literal(name); - } - - Splat.prototype.assigns = function(name) { - return this.name.assigns(name); - }; - - Splat.prototype.compileToFragments = function(o) { - return this.name.compileToFragments(o); - }; - - Splat.prototype.unwrap = function() { - return this.name; - }; - - Splat.compileSplattedArray = function(o, list, apply) { - var args, base, compiledNode, concatPart, fragments, i, index, node, _i, _len; - index = -1; - while ((node = list[++index]) && !(node instanceof Splat)) { - continue; - } - if (index >= list.length) { - return []; - } - if (list.length === 1) { - node = list[0]; - fragments = node.compileToFragments(o, LEVEL_LIST); - if (apply) { - return fragments; - } - return [].concat(node.makeCode("" + (utility('slice')) + ".call("), fragments, node.makeCode(")")); - } - args = list.slice(index); - for (i = _i = 0, _len = args.length; _i < _len; i = ++_i) { - node = args[i]; - compiledNode = node.compileToFragments(o, LEVEL_LIST); - args[i] = node instanceof Splat ? [].concat(node.makeCode("" + (utility('slice')) + ".call("), compiledNode, node.makeCode(")")) : [].concat(node.makeCode("["), compiledNode, node.makeCode("]")); - } - if (index === 0) { - node = list[0]; - concatPart = node.joinFragmentArrays(args.slice(1), ', '); - return args[0].concat(node.makeCode(".concat("), concatPart, node.makeCode(")")); - } - base = (function() { - var _j, _len1, _ref2, _results; - _ref2 = list.slice(0, index); - _results = []; - for (_j = 0, _len1 = _ref2.length; _j < _len1; _j++) { - node = _ref2[_j]; - _results.push(node.compileToFragments(o, LEVEL_LIST)); - } - return _results; - })(); - base = list[0].joinFragmentArrays(base, ', '); - concatPart = list[index].joinFragmentArrays(args, ', '); - return [].concat(list[0].makeCode("["), base, list[index].makeCode("].concat("), concatPart, (last(list)).makeCode(")")); - }; - - return Splat; - - })(Base); - - exports.While = While = (function(_super) { - __extends(While, _super); - - function While(condition, options) { - this.condition = (options != null ? options.invert : void 0) ? condition.invert() : condition; - this.guard = options != null ? options.guard : void 0; - } - - While.prototype.children = ['condition', 'guard', 'body']; - - While.prototype.isStatement = YES; - - While.prototype.makeReturn = function(res) { - if (res) { - return While.__super__.makeReturn.apply(this, arguments); - } else { - this.returns = !this.jumps({ - loop: true - }); - return this; - } - }; - - While.prototype.addBody = function(body) { - this.body = body; - return this; - }; - - While.prototype.jumps = function() { - var expressions, jumpNode, node, _i, _len; - expressions = this.body.expressions; - if (!expressions.length) { - return false; - } - for (_i = 0, _len = expressions.length; _i < _len; _i++) { - node = expressions[_i]; - if (jumpNode = node.jumps({ - loop: true - })) { - return jumpNode; - } - } - return false; - }; - - While.prototype.compileNode = function(o) { - var answer, body, rvar, set; - o.indent += TAB; - set = ''; - body = this.body; - if (body.isEmpty()) { - body = this.makeCode(''); - } else { - if (this.returns) { - body.makeReturn(rvar = o.scope.freeVariable('results')); - set = "" + this.tab + rvar + " = [];\n"; - } - if (this.guard) { - if (body.expressions.length > 1) { - body.expressions.unshift(new If((new Parens(this.guard)).invert(), new Literal("continue"))); - } else { - if (this.guard) { - body = Block.wrap([new If(this.guard, body)]); - } - } - } - body = [].concat(this.makeCode("\n"), body.compileToFragments(o, LEVEL_TOP), this.makeCode("\n" + this.tab)); - } - answer = [].concat(this.makeCode(set + this.tab + "while ("), this.condition.compileToFragments(o, LEVEL_PAREN), this.makeCode(") {"), body, this.makeCode("}")); - if (this.returns) { - answer.push(this.makeCode("\n" + this.tab + "return " + rvar + ";")); - } - return answer; - }; - - return While; - - })(Base); - - exports.Op = Op = (function(_super) { - var CONVERSIONS, INVERSIONS; - - __extends(Op, _super); - - function Op(op, first, second, flip) { - if (op === 'in') { - return new In(first, second); - } - if (op === 'do') { - return this.generateDo(first); - } - if (op === 'new') { - if (first instanceof Call && !first["do"] && !first.isNew) { - return first.newInstance(); - } - if (first instanceof Code && first.bound || first["do"]) { - first = new Parens(first); - } - } - this.operator = CONVERSIONS[op] || op; - this.first = first; - this.second = second; - this.flip = !!flip; - return this; - } - - CONVERSIONS = { - '==': '===', - '!=': '!==', - 'of': 'in' - }; - - INVERSIONS = { - '!==': '===', - '===': '!==' - }; - - Op.prototype.children = ['first', 'second']; - - Op.prototype.isSimpleNumber = NO; - - Op.prototype.isUnary = function() { - return !this.second; - }; - - Op.prototype.isComplex = function() { - var _ref2; - return !(this.isUnary() && ((_ref2 = this.operator) === '+' || _ref2 === '-')) || this.first.isComplex(); - }; - - Op.prototype.isChainable = function() { - var _ref2; - return (_ref2 = this.operator) === '<' || _ref2 === '>' || _ref2 === '>=' || _ref2 === '<=' || _ref2 === '===' || _ref2 === '!=='; - }; - - Op.prototype.invert = function() { - var allInvertable, curr, fst, op, _ref2; - if (this.isChainable() && this.first.isChainable()) { - allInvertable = true; - curr = this; - while (curr && curr.operator) { - allInvertable && (allInvertable = curr.operator in INVERSIONS); - curr = curr.first; - } - if (!allInvertable) { - return new Parens(this).invert(); - } - curr = this; - while (curr && curr.operator) { - curr.invert = !curr.invert; - curr.operator = INVERSIONS[curr.operator]; - curr = curr.first; - } - return this; - } else if (op = INVERSIONS[this.operator]) { - this.operator = op; - if (this.first.unwrap() instanceof Op) { - this.first.invert(); - } - return this; - } else if (this.second) { - return new Parens(this).invert(); - } else if (this.operator === '!' && (fst = this.first.unwrap()) instanceof Op && ((_ref2 = fst.operator) === '!' || _ref2 === 'in' || _ref2 === 'instanceof')) { - return fst; - } else { - return new Op('!', this); - } - }; - - Op.prototype.unfoldSoak = function(o) { - var _ref2; - return ((_ref2 = this.operator) === '++' || _ref2 === '--' || _ref2 === 'delete') && unfoldSoak(o, this, 'first'); - }; - - Op.prototype.generateDo = function(exp) { - var call, func, param, passedParams, ref, _i, _len, _ref2; - passedParams = []; - func = exp instanceof Assign && (ref = exp.value.unwrap()) instanceof Code ? ref : exp; - _ref2 = func.params || []; - for (_i = 0, _len = _ref2.length; _i < _len; _i++) { - param = _ref2[_i]; - if (param.value) { - passedParams.push(param.value); - delete param.value; - } else { - passedParams.push(param); - } - } - call = new Call(exp, passedParams); - call["do"] = true; - return call; - }; - - Op.prototype.compileNode = function(o) { - var answer, isChain, _ref2, _ref3; - isChain = this.isChainable() && this.first.isChainable(); - if (!isChain) { - this.first.front = this.front; - } - if (this.operator === 'delete' && o.scope.check(this.first.unwrapAll().value)) { - this.error('delete operand may not be argument or var'); - } - if (((_ref2 = this.operator) === '--' || _ref2 === '++') && (_ref3 = this.first.unwrapAll().value, __indexOf.call(STRICT_PROSCRIBED, _ref3) >= 0)) { - this.error("cannot increment/decrement \"" + (this.first.unwrapAll().value) + "\""); - } - if (this.isUnary()) { - return this.compileUnary(o); - } - if (isChain) { - return this.compileChain(o); - } - if (this.operator === '?') { - return this.compileExistence(o); - } - answer = [].concat(this.first.compileToFragments(o, LEVEL_OP), this.makeCode(' ' + this.operator + ' '), this.second.compileToFragments(o, LEVEL_OP)); - if (o.level <= LEVEL_OP) { - return answer; - } else { - return this.wrapInBraces(answer); - } - }; - - Op.prototype.compileChain = function(o) { - var fragments, fst, shared, _ref2; - _ref2 = this.first.second.cache(o), this.first.second = _ref2[0], shared = _ref2[1]; - fst = this.first.compileToFragments(o, LEVEL_OP); - fragments = fst.concat(this.makeCode(" " + (this.invert ? '&&' : '||') + " "), shared.compileToFragments(o), this.makeCode(" " + this.operator + " "), this.second.compileToFragments(o, LEVEL_OP)); - return this.wrapInBraces(fragments); - }; - - Op.prototype.compileExistence = function(o) { - var fst, ref; - if (this.first.isComplex()) { - ref = new Literal(o.scope.freeVariable('ref')); - fst = new Parens(new Assign(ref, this.first)); - } else { - fst = this.first; - ref = fst; - } - return new If(new Existence(fst), ref, { - type: 'if' - }).addElse(this.second).compileToFragments(o); - }; - - Op.prototype.compileUnary = function(o) { - var op, parts, plusMinus; - parts = []; - op = this.operator; - parts.push([this.makeCode(op)]); - if (op === '!' && this.first instanceof Existence) { - this.first.negated = !this.first.negated; - return this.first.compileToFragments(o); - } - if (o.level >= LEVEL_ACCESS) { - return (new Parens(this)).compileToFragments(o); - } - plusMinus = op === '+' || op === '-'; - if ((op === 'new' || op === 'typeof' || op === 'delete') || plusMinus && this.first instanceof Op && this.first.operator === op) { - parts.push([this.makeCode(' ')]); - } - if ((plusMinus && this.first instanceof Op) || (op === 'new' && this.first.isStatement(o))) { - this.first = new Parens(this.first); - } - parts.push(this.first.compileToFragments(o, LEVEL_OP)); - if (this.flip) { - parts.reverse(); - } - return this.joinFragmentArrays(parts, ''); - }; - - Op.prototype.toString = function(idt) { - return Op.__super__.toString.call(this, idt, this.constructor.name + ' ' + this.operator); - }; - - return Op; - - })(Base); - - exports.In = In = (function(_super) { - __extends(In, _super); - - function In(object, array) { - this.object = object; - this.array = array; - } - - In.prototype.children = ['object', 'array']; - - In.prototype.invert = NEGATE; - - In.prototype.compileNode = function(o) { - var hasSplat, obj, _i, _len, _ref2; - if (this.array instanceof Value && this.array.isArray()) { - _ref2 = this.array.base.objects; - for (_i = 0, _len = _ref2.length; _i < _len; _i++) { - obj = _ref2[_i]; - if (!(obj instanceof Splat)) { - continue; - } - hasSplat = true; - break; - } - if (!hasSplat) { - return this.compileOrTest(o); - } - } - return this.compileLoopTest(o); - }; - - In.prototype.compileOrTest = function(o) { - var cmp, cnj, i, item, ref, sub, tests, _i, _len, _ref2, _ref3, _ref4; - if (this.array.base.objects.length === 0) { - return [this.makeCode("" + (!!this.negated))]; - } - _ref2 = this.object.cache(o, LEVEL_OP), sub = _ref2[0], ref = _ref2[1]; - _ref3 = this.negated ? [' !== ', ' && '] : [' === ', ' || '], cmp = _ref3[0], cnj = _ref3[1]; - tests = []; - _ref4 = this.array.base.objects; - for (i = _i = 0, _len = _ref4.length; _i < _len; i = ++_i) { - item = _ref4[i]; - if (i) { - tests.push(this.makeCode(cnj)); - } - tests = tests.concat((i ? ref : sub), this.makeCode(cmp), item.compileToFragments(o, LEVEL_ACCESS)); - } - if (o.level < LEVEL_OP) { - return tests; - } else { - return this.wrapInBraces(tests); - } - }; - - In.prototype.compileLoopTest = function(o) { - var fragments, ref, sub, _ref2; - _ref2 = this.object.cache(o, LEVEL_LIST), sub = _ref2[0], ref = _ref2[1]; - fragments = [].concat(this.makeCode(utility('indexOf') + ".call("), this.array.compileToFragments(o, LEVEL_LIST), this.makeCode(", "), ref, this.makeCode(") " + (this.negated ? '< 0' : '>= 0'))); - if (fragmentsToText(sub) === fragmentsToText(ref)) { - return fragments; - } - fragments = sub.concat(this.makeCode(', '), fragments); - if (o.level < LEVEL_LIST) { - return fragments; - } else { - return this.wrapInBraces(fragments); - } - }; - - In.prototype.toString = function(idt) { - return In.__super__.toString.call(this, idt, this.constructor.name + (this.negated ? '!' : '')); - }; - - return In; - - })(Base); - - exports.Try = Try = (function(_super) { - __extends(Try, _super); - - function Try(attempt, errorVariable, recovery, ensure) { - this.attempt = attempt; - this.errorVariable = errorVariable; - this.recovery = recovery; - this.ensure = ensure; - } - - Try.prototype.children = ['attempt', 'recovery', 'ensure']; - - Try.prototype.isStatement = YES; - - Try.prototype.jumps = function(o) { - var _ref2; - return this.attempt.jumps(o) || ((_ref2 = this.recovery) != null ? _ref2.jumps(o) : void 0); - }; - - Try.prototype.makeReturn = function(res) { - if (this.attempt) { - this.attempt = this.attempt.makeReturn(res); - } - if (this.recovery) { - this.recovery = this.recovery.makeReturn(res); - } - return this; - }; - - Try.prototype.compileNode = function(o) { - var catchPart, ensurePart, placeholder, tryPart; - o.indent += TAB; - tryPart = this.attempt.compileToFragments(o, LEVEL_TOP); - catchPart = this.recovery ? (placeholder = new Literal('_error'), this.errorVariable ? this.recovery.unshift(new Assign(this.errorVariable, placeholder)) : void 0, [].concat(this.makeCode(" catch ("), placeholder.compileToFragments(o), this.makeCode(") {\n"), this.recovery.compileToFragments(o, LEVEL_TOP), this.makeCode("\n" + this.tab + "}"))) : !(this.ensure || this.recovery) ? [this.makeCode(' catch (_error) {}')] : []; - ensurePart = this.ensure ? [].concat(this.makeCode(" finally {\n"), this.ensure.compileToFragments(o, LEVEL_TOP), this.makeCode("\n" + this.tab + "}")) : []; - return [].concat(this.makeCode("" + this.tab + "try {\n"), tryPart, this.makeCode("\n" + this.tab + "}"), catchPart, ensurePart); - }; - - return Try; - - })(Base); - - exports.Throw = Throw = (function(_super) { - __extends(Throw, _super); - - function Throw(expression) { - this.expression = expression; - } - - Throw.prototype.children = ['expression']; - - Throw.prototype.isStatement = YES; - - Throw.prototype.jumps = NO; - - Throw.prototype.makeReturn = THIS; - - Throw.prototype.compileNode = function(o) { - return [].concat(this.makeCode(this.tab + "throw "), this.expression.compileToFragments(o), this.makeCode(";")); - }; - - return Throw; - - })(Base); - - exports.Existence = Existence = (function(_super) { - __extends(Existence, _super); - - function Existence(expression) { - this.expression = expression; - } - - Existence.prototype.children = ['expression']; - - Existence.prototype.invert = NEGATE; - - Existence.prototype.compileNode = function(o) { - var cmp, cnj, code, _ref2; - this.expression.front = this.front; - code = this.expression.compile(o, LEVEL_OP); - if (IDENTIFIER.test(code) && !o.scope.check(code)) { - _ref2 = this.negated ? ['===', '||'] : ['!==', '&&'], cmp = _ref2[0], cnj = _ref2[1]; - code = "typeof " + code + " " + cmp + " \"undefined\" " + cnj + " " + code + " " + cmp + " null"; - } else { - code = "" + code + " " + (this.negated ? '==' : '!=') + " null"; - } - return [this.makeCode(o.level <= LEVEL_COND ? code : "(" + code + ")")]; - }; - - return Existence; - - })(Base); - - exports.Parens = Parens = (function(_super) { - __extends(Parens, _super); - - function Parens(body) { - this.body = body; - } - - Parens.prototype.children = ['body']; - - Parens.prototype.unwrap = function() { - return this.body; - }; - - Parens.prototype.isComplex = function() { - return this.body.isComplex(); - }; - - Parens.prototype.compileNode = function(o) { - var bare, expr, fragments; - expr = this.body.unwrap(); - if (expr instanceof Value && expr.isAtomic()) { - expr.front = this.front; - return expr.compileToFragments(o); - } - fragments = expr.compileToFragments(o, LEVEL_PAREN); - bare = o.level < LEVEL_OP && (expr instanceof Op || expr instanceof Call || (expr instanceof For && expr.returns)); - if (bare) { - return fragments; - } else { - return this.wrapInBraces(fragments); - } - }; - - return Parens; - - })(Base); - - exports.For = For = (function(_super) { - __extends(For, _super); - - function For(body, source) { - var _ref2; - this.source = source.source, this.guard = source.guard, this.step = source.step, this.name = source.name, this.index = source.index; - this.body = Block.wrap([body]); - this.own = !!source.own; - this.object = !!source.object; - if (this.object) { - _ref2 = [this.index, this.name], this.name = _ref2[0], this.index = _ref2[1]; - } - if (this.index instanceof Value) { - this.index.error('index cannot be a pattern matching expression'); - } - this.range = this.source instanceof Value && this.source.base instanceof Range && !this.source.properties.length; - this.pattern = this.name instanceof Value; - if (this.range && this.index) { - this.index.error('indexes do not apply to range loops'); - } - if (this.range && this.pattern) { - this.name.error('cannot pattern match over range loops'); - } - if (this.own && !this.object) { - this.name.error('cannot use own with for-in'); - } - this.returns = false; - } - - For.prototype.children = ['body', 'source', 'guard', 'step']; - - For.prototype.compileNode = function(o) { - var body, bodyFragments, compare, compareDown, declare, declareDown, defPart, defPartFragments, down, forPartFragments, guardPart, idt1, increment, index, ivar, kvar, kvarAssign, lastJumps, lvar, name, namePart, ref, resultPart, returnResult, rvar, scope, source, step, stepNum, stepVar, svar, varPart, _ref2, _ref3; - body = Block.wrap([this.body]); - lastJumps = (_ref2 = last(body.expressions)) != null ? _ref2.jumps() : void 0; - if (lastJumps && lastJumps instanceof Return) { - this.returns = false; - } - source = this.range ? this.source.base : this.source; - scope = o.scope; - name = this.name && (this.name.compile(o, LEVEL_LIST)); - index = this.index && (this.index.compile(o, LEVEL_LIST)); - if (name && !this.pattern) { - scope.find(name); - } - if (index) { - scope.find(index); - } - if (this.returns) { - rvar = scope.freeVariable('results'); - } - ivar = (this.object && index) || scope.freeVariable('i'); - kvar = (this.range && name) || index || ivar; - kvarAssign = kvar !== ivar ? "" + kvar + " = " : ""; - if (this.step && !this.range) { - _ref3 = this.cacheToCodeFragments(this.step.cache(o, LEVEL_LIST)), step = _ref3[0], stepVar = _ref3[1]; - stepNum = stepVar.match(NUMBER); - } - if (this.pattern) { - name = ivar; - } - varPart = ''; - guardPart = ''; - defPart = ''; - idt1 = this.tab + TAB; - if (this.range) { - forPartFragments = source.compileToFragments(merge(o, { - index: ivar, - name: name, - step: this.step - })); - } else { - svar = this.source.compile(o, LEVEL_LIST); - if ((name || this.own) && !IDENTIFIER.test(svar)) { - defPart += "" + this.tab + (ref = scope.freeVariable('ref')) + " = " + svar + ";\n"; - svar = ref; - } - if (name && !this.pattern) { - namePart = "" + name + " = " + svar + "[" + kvar + "]"; - } - if (!this.object) { - if (step !== stepVar) { - defPart += "" + this.tab + step + ";\n"; - } - if (!(this.step && stepNum && (down = parseNum(stepNum[0]) < 0))) { - lvar = scope.freeVariable('len'); - } - declare = "" + kvarAssign + ivar + " = 0, " + lvar + " = " + svar + ".length"; - declareDown = "" + kvarAssign + ivar + " = " + svar + ".length - 1"; - compare = "" + ivar + " < " + lvar; - compareDown = "" + ivar + " >= 0"; - if (this.step) { - if (stepNum) { - if (down) { - compare = compareDown; - declare = declareDown; - } - } else { - compare = "" + stepVar + " > 0 ? " + compare + " : " + compareDown; - declare = "(" + stepVar + " > 0 ? (" + declare + ") : " + declareDown + ")"; - } - increment = "" + ivar + " += " + stepVar; - } else { - increment = "" + (kvar !== ivar ? "++" + ivar : "" + ivar + "++"); - } - forPartFragments = [this.makeCode("" + declare + "; " + compare + "; " + kvarAssign + increment)]; - } - } - if (this.returns) { - resultPart = "" + this.tab + rvar + " = [];\n"; - returnResult = "\n" + this.tab + "return " + rvar + ";"; - body.makeReturn(rvar); - } - if (this.guard) { - if (body.expressions.length > 1) { - body.expressions.unshift(new If((new Parens(this.guard)).invert(), new Literal("continue"))); - } else { - if (this.guard) { - body = Block.wrap([new If(this.guard, body)]); - } - } - } - if (this.pattern) { - body.expressions.unshift(new Assign(this.name, new Literal("" + svar + "[" + kvar + "]"))); - } - defPartFragments = [].concat(this.makeCode(defPart), this.pluckDirectCall(o, body)); - if (namePart) { - varPart = "\n" + idt1 + namePart + ";"; - } - if (this.object) { - forPartFragments = [this.makeCode("" + kvar + " in " + svar)]; - if (this.own) { - guardPart = "\n" + idt1 + "if (!" + (utility('hasProp')) + ".call(" + svar + ", " + kvar + ")) continue;"; - } - } - bodyFragments = body.compileToFragments(merge(o, { - indent: idt1 - }), LEVEL_TOP); - if (bodyFragments && (bodyFragments.length > 0)) { - bodyFragments = [].concat(this.makeCode("\n"), bodyFragments, this.makeCode("\n")); - } - return [].concat(defPartFragments, this.makeCode("" + (resultPart || '') + this.tab + "for ("), forPartFragments, this.makeCode(") {" + guardPart + varPart), bodyFragments, this.makeCode("" + this.tab + "}" + (returnResult || ''))); - }; - - For.prototype.pluckDirectCall = function(o, body) { - var base, defs, expr, fn, idx, ref, val, _i, _len, _ref2, _ref3, _ref4, _ref5, _ref6, _ref7, _ref8; - defs = []; - _ref2 = body.expressions; - for (idx = _i = 0, _len = _ref2.length; _i < _len; idx = ++_i) { - expr = _ref2[idx]; - expr = expr.unwrapAll(); - if (!(expr instanceof Call)) { - continue; - } - val = (_ref3 = expr.variable) != null ? _ref3.unwrapAll() : void 0; - if (!((val instanceof Code) || (val instanceof Value && ((_ref4 = val.base) != null ? _ref4.unwrapAll() : void 0) instanceof Code && val.properties.length === 1 && ((_ref5 = (_ref6 = val.properties[0].name) != null ? _ref6.value : void 0) === 'call' || _ref5 === 'apply')))) { - continue; - } - fn = ((_ref7 = val.base) != null ? _ref7.unwrapAll() : void 0) || val; - ref = new Literal(o.scope.freeVariable('fn')); - base = new Value(ref); - if (val.base) { - _ref8 = [base, val], val.base = _ref8[0], base = _ref8[1]; - } - body.expressions[idx] = new Call(base, expr.args); - defs = defs.concat(this.makeCode(this.tab), new Assign(ref, fn).compileToFragments(o, LEVEL_TOP), this.makeCode(';\n')); - } - return defs; - }; - - return For; - - })(While); - - exports.Switch = Switch = (function(_super) { - __extends(Switch, _super); - - function Switch(subject, cases, otherwise) { - this.subject = subject; - this.cases = cases; - this.otherwise = otherwise; - } - - Switch.prototype.children = ['subject', 'cases', 'otherwise']; - - Switch.prototype.isStatement = YES; - - Switch.prototype.jumps = function(o) { - var block, conds, jumpNode, _i, _len, _ref2, _ref3, _ref4; - if (o == null) { - o = { - block: true - }; - } - _ref2 = this.cases; - for (_i = 0, _len = _ref2.length; _i < _len; _i++) { - _ref3 = _ref2[_i], conds = _ref3[0], block = _ref3[1]; - if (jumpNode = block.jumps(o)) { - return jumpNode; - } - } - return (_ref4 = this.otherwise) != null ? _ref4.jumps(o) : void 0; - }; - - Switch.prototype.makeReturn = function(res) { - var pair, _i, _len, _ref2, _ref3; - _ref2 = this.cases; - for (_i = 0, _len = _ref2.length; _i < _len; _i++) { - pair = _ref2[_i]; - pair[1].makeReturn(res); - } - if (res) { - this.otherwise || (this.otherwise = new Block([new Literal('void 0')])); - } - if ((_ref3 = this.otherwise) != null) { - _ref3.makeReturn(res); - } - return this; - }; - - Switch.prototype.compileNode = function(o) { - var block, body, cond, conditions, expr, fragments, i, idt1, idt2, _i, _j, _len, _len1, _ref2, _ref3, _ref4; - idt1 = o.indent + TAB; - idt2 = o.indent = idt1 + TAB; - fragments = [].concat(this.makeCode(this.tab + "switch ("), (this.subject ? this.subject.compileToFragments(o, LEVEL_PAREN) : this.makeCode("false")), this.makeCode(") {\n")); - _ref2 = this.cases; - for (i = _i = 0, _len = _ref2.length; _i < _len; i = ++_i) { - _ref3 = _ref2[i], conditions = _ref3[0], block = _ref3[1]; - _ref4 = flatten([conditions]); - for (_j = 0, _len1 = _ref4.length; _j < _len1; _j++) { - cond = _ref4[_j]; - if (!this.subject) { - cond = cond.invert(); - } - fragments = fragments.concat(this.makeCode(idt1 + "case "), cond.compileToFragments(o, LEVEL_PAREN), this.makeCode(":\n")); - } - if ((body = block.compileToFragments(o, LEVEL_TOP)).length > 0) { - fragments = fragments.concat(body, this.makeCode('\n')); - } - if (i === this.cases.length - 1 && !this.otherwise) { - break; - } - expr = this.lastNonComment(block.expressions); - if (expr instanceof Return || (expr instanceof Literal && expr.jumps() && expr.value !== 'debugger')) { - continue; - } - fragments.push(cond.makeCode(idt2 + 'break;\n')); - } - if (this.otherwise && this.otherwise.expressions.length) { - fragments.push.apply(fragments, [this.makeCode(idt1 + "default:\n")].concat(__slice.call(this.otherwise.compileToFragments(o, LEVEL_TOP)), [this.makeCode("\n")])); - } - fragments.push(this.makeCode(this.tab + '}')); - return fragments; - }; - - return Switch; - - })(Base); - - exports.If = If = (function(_super) { - __extends(If, _super); - - function If(condition, body, options) { - this.body = body; - if (options == null) { - options = {}; - } - this.condition = options.type === 'unless' ? condition.invert() : condition; - this.elseBody = null; - this.isChain = false; - this.soak = options.soak; - } - - If.prototype.children = ['condition', 'body', 'elseBody']; - - If.prototype.bodyNode = function() { - var _ref2; - return (_ref2 = this.body) != null ? _ref2.unwrap() : void 0; - }; - - If.prototype.elseBodyNode = function() { - var _ref2; - return (_ref2 = this.elseBody) != null ? _ref2.unwrap() : void 0; - }; - - If.prototype.addElse = function(elseBody) { - if (this.isChain) { - this.elseBodyNode().addElse(elseBody); - } else { - this.isChain = elseBody instanceof If; - this.elseBody = this.ensureBlock(elseBody); - this.elseBody.updateLocationDataIfMissing(elseBody.locationData); - } - return this; - }; - - If.prototype.isStatement = function(o) { - var _ref2; - return (o != null ? o.level : void 0) === LEVEL_TOP || this.bodyNode().isStatement(o) || ((_ref2 = this.elseBodyNode()) != null ? _ref2.isStatement(o) : void 0); - }; - - If.prototype.jumps = function(o) { - var _ref2; - return this.body.jumps(o) || ((_ref2 = this.elseBody) != null ? _ref2.jumps(o) : void 0); - }; - - If.prototype.compileNode = function(o) { - if (this.isStatement(o)) { - return this.compileStatement(o); - } else { - return this.compileExpression(o); - } - }; - - If.prototype.makeReturn = function(res) { - if (res) { - this.elseBody || (this.elseBody = new Block([new Literal('void 0')])); - } - this.body && (this.body = new Block([this.body.makeReturn(res)])); - this.elseBody && (this.elseBody = new Block([this.elseBody.makeReturn(res)])); - return this; - }; - - If.prototype.ensureBlock = function(node) { - if (node instanceof Block) { - return node; - } else { - return new Block([node]); - } - }; - - If.prototype.compileStatement = function(o) { - var answer, body, child, cond, exeq, ifPart, indent; - child = del(o, 'chainChild'); - exeq = del(o, 'isExistentialEquals'); - if (exeq) { - return new If(this.condition.invert(), this.elseBodyNode(), { - type: 'if' - }).compileToFragments(o); - } - indent = o.indent + TAB; - cond = this.condition.compileToFragments(o, LEVEL_PAREN); - body = this.ensureBlock(this.body).compileToFragments(merge(o, { - indent: indent - })); - ifPart = [].concat(this.makeCode("if ("), cond, this.makeCode(") {\n"), body, this.makeCode("\n" + this.tab + "}")); - if (!child) { - ifPart.unshift(this.makeCode(this.tab)); - } - if (!this.elseBody) { - return ifPart; - } - answer = ifPart.concat(this.makeCode(' else ')); - if (this.isChain) { - o.chainChild = true; - answer = answer.concat(this.elseBody.unwrap().compileToFragments(o, LEVEL_TOP)); - } else { - answer = answer.concat(this.makeCode("{\n"), this.elseBody.compileToFragments(merge(o, { - indent: indent - }), LEVEL_TOP), this.makeCode("\n" + this.tab + "}")); - } - return answer; - }; - - If.prototype.compileExpression = function(o) { - var alt, body, cond, fragments; - cond = this.condition.compileToFragments(o, LEVEL_COND); - body = this.bodyNode().compileToFragments(o, LEVEL_LIST); - alt = this.elseBodyNode() ? this.elseBodyNode().compileToFragments(o, LEVEL_LIST) : [this.makeCode('void 0')]; - fragments = cond.concat(this.makeCode(" ? "), body, this.makeCode(" : "), alt); - if (o.level >= LEVEL_COND) { - return this.wrapInBraces(fragments); - } else { - return fragments; - } - }; - - If.prototype.unfoldSoak = function() { - return this.soak && this; - }; - - return If; - - })(Base); - - UTILITIES = { - "extends": function() { - return "function(child, parent) { for (var key in parent) { if (" + (utility('hasProp')) + ".call(parent, key)) child[key] = parent[key]; } function ctor() { this.constructor = child; } ctor.prototype = parent.prototype; child.prototype = new ctor(); child.__super__ = parent.prototype; return child; }"; - }, - bind: function() { - return 'function(fn, me){ return function(){ return fn.apply(me, arguments); }; }'; - }, - indexOf: function() { - return "[].indexOf || function(item) { for (var i = 0, l = this.length; i < l; i++) { if (i in this && this[i] === item) return i; } return -1; }"; - }, - hasProp: function() { - return '{}.hasOwnProperty'; - }, - slice: function() { - return '[].slice'; - } - }; - - LEVEL_TOP = 1; - - LEVEL_PAREN = 2; - - LEVEL_LIST = 3; - - LEVEL_COND = 4; - - LEVEL_OP = 5; - - LEVEL_ACCESS = 6; - - TAB = ' '; - - IDENTIFIER_STR = "[$A-Za-z_\\x7f-\\uffff][$\\w\\x7f-\\uffff]*"; - - IDENTIFIER = RegExp("^" + IDENTIFIER_STR + "$"); - - SIMPLENUM = /^[+-]?\d+$/; - - HEXNUM = /^[+-]?0x[\da-f]+/i; - - NUMBER = /^[+-]?(?:0x[\da-f]+|\d*\.?\d+(?:e[+-]?\d+)?)$/i; - - METHOD_DEF = RegExp("^(" + IDENTIFIER_STR + ")(\\.prototype)?(?:\\.(" + IDENTIFIER_STR + ")|\\[(\"(?:[^\\\\\"\\r\\n]|\\\\.)*\"|'(?:[^\\\\'\\r\\n]|\\\\.)*')\\]|\\[(0x[\\da-fA-F]+|\\d*\\.?\\d+(?:[eE][+-]?\\d+)?)\\])$"); - - IS_STRING = /^['"]/; - - IS_REGEX = /^\//; - - utility = function(name) { - var ref; - ref = "__" + name; - Scope.root.assign(ref, UTILITIES[name]()); - return ref; - }; - - multident = function(code, tab) { - code = code.replace(/\n/g, '$&' + tab); - return code.replace(/\s+$/, ''); - }; - - parseNum = function(x) { - if (x == null) { - return 0; - } else if (x.match(HEXNUM)) { - return parseInt(x, 16); - } else { - return parseFloat(x); - } - }; - - isLiteralArguments = function(node) { - return node instanceof Literal && node.value === 'arguments' && !node.asKey; - }; - - isLiteralThis = function(node) { - return (node instanceof Literal && node.value === 'this' && !node.asKey) || (node instanceof Code && node.bound) || (node instanceof Call && node.isSuper); - }; - - unfoldSoak = function(o, parent, name) { - var ifn; - if (!(ifn = parent[name].unfoldSoak(o))) { - return; - } - parent[name] = ifn.body; - ifn.body = new Value(parent); - return ifn; - }; - - -}); - -ace.define('ace/mode/coffee/scope', ['require', 'exports', 'module' , 'ace/mode/coffee/helpers'], function(require, exports, module) { - - var Scope, extend, last, _ref; - - _ref = require('./helpers'), extend = _ref.extend, last = _ref.last; - - exports.Scope = Scope = (function() { - Scope.root = null; - - function Scope(parent, expressions, method) { - this.parent = parent; - this.expressions = expressions; - this.method = method; - this.variables = [ - { - name: 'arguments', - type: 'arguments' - } - ]; - this.positions = {}; - if (!this.parent) { - Scope.root = this; - } - } - - Scope.prototype.add = function(name, type, immediate) { - if (this.shared && !immediate) { - return this.parent.add(name, type, immediate); - } - if (Object.prototype.hasOwnProperty.call(this.positions, name)) { - return this.variables[this.positions[name]].type = type; - } else { - return this.positions[name] = this.variables.push({ - name: name, - type: type - }) - 1; - } - }; - - Scope.prototype.namedMethod = function() { - var _ref1; - if (((_ref1 = this.method) != null ? _ref1.name : void 0) || !this.parent) { - return this.method; - } - return this.parent.namedMethod(); - }; - - Scope.prototype.find = function(name) { - if (this.check(name)) { - return true; - } - this.add(name, 'var'); - return false; - }; - - Scope.prototype.parameter = function(name) { - if (this.shared && this.parent.check(name, true)) { - return; - } - return this.add(name, 'param'); - }; - - Scope.prototype.check = function(name) { - var _ref1; - return !!(this.type(name) || ((_ref1 = this.parent) != null ? _ref1.check(name) : void 0)); - }; - - Scope.prototype.temporary = function(name, index) { - if (name.length > 1) { - return '_' + name + (index > 1 ? index - 1 : ''); - } else { - return '_' + (index + parseInt(name, 36)).toString(36).replace(/\d/g, 'a'); - } - }; - - Scope.prototype.type = function(name) { - var v, _i, _len, _ref1; - _ref1 = this.variables; - for (_i = 0, _len = _ref1.length; _i < _len; _i++) { - v = _ref1[_i]; - if (v.name === name) { - return v.type; - } - } - return null; - }; - - Scope.prototype.freeVariable = function(name, reserve) { - var index, temp; - if (reserve == null) { - reserve = true; - } - index = 0; - while (this.check((temp = this.temporary(name, index)))) { - index++; - } - if (reserve) { - this.add(temp, 'var', true); - } - return temp; - }; - - Scope.prototype.assign = function(name, value) { - this.add(name, { - value: value, - assigned: true - }, true); - return this.hasAssignments = true; - }; - - Scope.prototype.hasDeclarations = function() { - return !!this.declaredVariables().length; - }; - - Scope.prototype.declaredVariables = function() { - var realVars, tempVars, v, _i, _len, _ref1; - realVars = []; - tempVars = []; - _ref1 = this.variables; - for (_i = 0, _len = _ref1.length; _i < _len; _i++) { - v = _ref1[_i]; - if (v.type === 'var') { - (v.name.charAt(0) === '_' ? tempVars : realVars).push(v.name); - } - } - return realVars.sort().concat(tempVars.sort()); - }; - - Scope.prototype.assignedVariables = function() { - var v, _i, _len, _ref1, _results; - _ref1 = this.variables; - _results = []; - for (_i = 0, _len = _ref1.length; _i < _len; _i++) { - v = _ref1[_i]; - if (v.type.assigned) { - _results.push("" + v.name + " = " + v.type.value); - } - } - return _results; - }; - - return Scope; - - })(); - - -}); \ No newline at end of file diff --git a/IDE/jsrealb-ide/ace-src-noconflict/worker-css.js b/IDE/jsrealb-ide/ace-src-noconflict/worker-css.js deleted file mode 100644 index 5cda16b9..00000000 --- a/IDE/jsrealb-ide/ace-src-noconflict/worker-css.js +++ /dev/null @@ -1,8317 +0,0 @@ -"no use strict"; -;(function(window) { -if (typeof window.window != "undefined" && window.document) { - return; -} - -window.console = function() { - var msgs = Array.prototype.slice.call(arguments, 0); - postMessage({type: "log", data: msgs}); -}; -window.console.error = -window.console.warn = -window.console.log = -window.console.trace = window.console; - -window.window = window; -window.ace = window; - -window.onerror = function(message, file, line, col, err) { - console.error("Worker " + err.stack); -}; - -window.normalizeModule = function(parentId, moduleName) { - if (moduleName.indexOf("!") !== -1) { - var chunks = moduleName.split("!"); - return window.normalizeModule(parentId, chunks[0]) + "!" + window.normalizeModule(parentId, chunks[1]); - } - if (moduleName.charAt(0) == ".") { - var base = parentId.split("/").slice(0, -1).join("/"); - moduleName = (base ? base + "/" : "") + moduleName; - - while(moduleName.indexOf(".") !== -1 && previous != moduleName) { - var previous = moduleName; - moduleName = moduleName.replace(/^\.\//, "").replace(/\/\.\//, "/").replace(/[^\/]+\/\.\.\//, ""); - } - } - - return moduleName; -}; - -window.require = function(parentId, id) { - if (!id) { - id = parentId - parentId = null; - } - if (!id.charAt) - throw new Error("worker.js require() accepts only (parentId, id) as arguments"); - - id = window.normalizeModule(parentId, id); - - var module = window.require.modules[id]; - if (module) { - if (!module.initialized) { - module.initialized = true; - module.exports = module.factory().exports; - } - return module.exports; - } - - var chunks = id.split("/"); - if (!window.require.tlns) - return console.log("unable to load " + id); - chunks[0] = window.require.tlns[chunks[0]] || chunks[0]; - var path = chunks.join("/") + ".js"; - - window.require.id = id; - importScripts(path); - return window.require(parentId, id); -}; -window.require.modules = {}; -window.require.tlns = {}; - -window.define = function(id, deps, factory) { - if (arguments.length == 2) { - factory = deps; - if (typeof id != "string") { - deps = id; - id = window.require.id; - } - } else if (arguments.length == 1) { - factory = id; - deps = [] - id = window.require.id; - } - - if (!deps.length) - deps = ['require', 'exports', 'module'] - - if (id.indexOf("text!") === 0) - return; - - var req = function(childId) { - return window.require(id, childId); - }; - - window.require.modules[id] = { - exports: {}, - factory: function() { - var module = this; - var returnExports = factory.apply(this, deps.map(function(dep) { - switch(dep) { - case 'require': return req - case 'exports': return module.exports - case 'module': return module - default: return req(dep) - } - })); - if (returnExports) - module.exports = returnExports; - return module; - } - }; -}; -window.define.amd = {} - -window.initBaseUrls = function initBaseUrls(topLevelNamespaces) { - require.tlns = topLevelNamespaces; -} - -window.initSender = function initSender() { - - var EventEmitter = window.require("ace/lib/event_emitter").EventEmitter; - var oop = window.require("ace/lib/oop"); - - var Sender = function() {}; - - (function() { - - oop.implement(this, EventEmitter); - - this.callback = function(data, callbackId) { - postMessage({ - type: "call", - id: callbackId, - data: data - }); - }; - - this.emit = function(name, data) { - postMessage({ - type: "event", - name: name, - data: data - }); - }; - - }).call(Sender.prototype); - - return new Sender(); -} - -window.main = null; -window.sender = null; - -window.onmessage = function(e) { - var msg = e.data; - if (msg.command) { - if (main[msg.command]) - main[msg.command].apply(main, msg.args); - else - throw new Error("Unknown command:" + msg.command); - } - else if (msg.init) { - initBaseUrls(msg.tlns); - require("ace/lib/es5-shim"); - sender = initSender(); - var clazz = require(msg.module)[msg.classname]; - main = new clazz(sender); - } - else if (msg.event && sender) { - sender._emit(msg.event, msg.data); - } -}; -})(this);// https://github.com/kriskowal/es5-shim - -ace.define('ace/lib/es5-shim', ['require', 'exports', 'module' ], function(require, exports, module) { - -function Empty() {} - -if (!Function.prototype.bind) { - Function.prototype.bind = function bind(that) { // .length is 1 - var target = this; - if (typeof target != "function") { - throw new TypeError("Function.prototype.bind called on incompatible " + target); - } - var args = slice.call(arguments, 1); // for normal call - var bound = function () { - - if (this instanceof bound) { - - var result = target.apply( - this, - args.concat(slice.call(arguments)) - ); - if (Object(result) === result) { - return result; - } - return this; - - } else { - return target.apply( - that, - args.concat(slice.call(arguments)) - ); - - } - - }; - if(target.prototype) { - Empty.prototype = target.prototype; - bound.prototype = new Empty(); - Empty.prototype = null; - } - return bound; - }; -} -var call = Function.prototype.call; -var prototypeOfArray = Array.prototype; -var prototypeOfObject = Object.prototype; -var slice = prototypeOfArray.slice; -var _toString = call.bind(prototypeOfObject.toString); -var owns = call.bind(prototypeOfObject.hasOwnProperty); -var defineGetter; -var defineSetter; -var lookupGetter; -var lookupSetter; -var supportsAccessors; -if ((supportsAccessors = owns(prototypeOfObject, "__defineGetter__"))) { - defineGetter = call.bind(prototypeOfObject.__defineGetter__); - defineSetter = call.bind(prototypeOfObject.__defineSetter__); - lookupGetter = call.bind(prototypeOfObject.__lookupGetter__); - lookupSetter = call.bind(prototypeOfObject.__lookupSetter__); -} -if ([1,2].splice(0).length != 2) { - if(function() { // test IE < 9 to splice bug - see issue #138 - function makeArray(l) { - var a = new Array(l+2); - a[0] = a[1] = 0; - return a; - } - var array = [], lengthBefore; - - array.splice.apply(array, makeArray(20)); - array.splice.apply(array, makeArray(26)); - - lengthBefore = array.length; //46 - array.splice(5, 0, "XXX"); // add one element - - lengthBefore + 1 == array.length - - if (lengthBefore + 1 == array.length) { - return true;// has right splice implementation without bugs - } - }()) {//IE 6/7 - var array_splice = Array.prototype.splice; - Array.prototype.splice = function(start, deleteCount) { - if (!arguments.length) { - return []; - } else { - return array_splice.apply(this, [ - start === void 0 ? 0 : start, - deleteCount === void 0 ? (this.length - start) : deleteCount - ].concat(slice.call(arguments, 2))) - } - }; - } else {//IE8 - Array.prototype.splice = function(pos, removeCount){ - var length = this.length; - if (pos > 0) { - if (pos > length) - pos = length; - } else if (pos == void 0) { - pos = 0; - } else if (pos < 0) { - pos = Math.max(length + pos, 0); - } - - if (!(pos+removeCount < length)) - removeCount = length - pos; - - var removed = this.slice(pos, pos+removeCount); - var insert = slice.call(arguments, 2); - var add = insert.length; - if (pos === length) { - if (add) { - this.push.apply(this, insert); - } - } else { - var remove = Math.min(removeCount, length - pos); - var tailOldPos = pos + remove; - var tailNewPos = tailOldPos + add - remove; - var tailCount = length - tailOldPos; - var lengthAfterRemove = length - remove; - - if (tailNewPos < tailOldPos) { // case A - for (var i = 0; i < tailCount; ++i) { - this[tailNewPos+i] = this[tailOldPos+i]; - } - } else if (tailNewPos > tailOldPos) { // case B - for (i = tailCount; i--; ) { - this[tailNewPos+i] = this[tailOldPos+i]; - } - } // else, add == remove (nothing to do) - - if (add && pos === lengthAfterRemove) { - this.length = lengthAfterRemove; // truncate array - this.push.apply(this, insert); - } else { - this.length = lengthAfterRemove + add; // reserves space - for (i = 0; i < add; ++i) { - this[pos+i] = insert[i]; - } - } - } - return removed; - }; - } -} -if (!Array.isArray) { - Array.isArray = function isArray(obj) { - return _toString(obj) == "[object Array]"; - }; -} -var boxedString = Object("a"), - splitString = boxedString[0] != "a" || !(0 in boxedString); - -if (!Array.prototype.forEach) { - Array.prototype.forEach = function forEach(fun /*, thisp*/) { - var object = toObject(this), - self = splitString && _toString(this) == "[object String]" ? - this.split("") : - object, - thisp = arguments[1], - i = -1, - length = self.length >>> 0; - if (_toString(fun) != "[object Function]") { - throw new TypeError(); // TODO message - } - - while (++i < length) { - if (i in self) { - fun.call(thisp, self[i], i, object); - } - } - }; -} -if (!Array.prototype.map) { - Array.prototype.map = function map(fun /*, thisp*/) { - var object = toObject(this), - self = splitString && _toString(this) == "[object String]" ? - this.split("") : - object, - length = self.length >>> 0, - result = Array(length), - thisp = arguments[1]; - if (_toString(fun) != "[object Function]") { - throw new TypeError(fun + " is not a function"); - } - - for (var i = 0; i < length; i++) { - if (i in self) - result[i] = fun.call(thisp, self[i], i, object); - } - return result; - }; -} -if (!Array.prototype.filter) { - Array.prototype.filter = function filter(fun /*, thisp */) { - var object = toObject(this), - self = splitString && _toString(this) == "[object String]" ? - this.split("") : - object, - length = self.length >>> 0, - result = [], - value, - thisp = arguments[1]; - if (_toString(fun) != "[object Function]") { - throw new TypeError(fun + " is not a function"); - } - - for (var i = 0; i < length; i++) { - if (i in self) { - value = self[i]; - if (fun.call(thisp, value, i, object)) { - result.push(value); - } - } - } - return result; - }; -} -if (!Array.prototype.every) { - Array.prototype.every = function every(fun /*, thisp */) { - var object = toObject(this), - self = splitString && _toString(this) == "[object String]" ? - this.split("") : - object, - length = self.length >>> 0, - thisp = arguments[1]; - if (_toString(fun) != "[object Function]") { - throw new TypeError(fun + " is not a function"); - } - - for (var i = 0; i < length; i++) { - if (i in self && !fun.call(thisp, self[i], i, object)) { - return false; - } - } - return true; - }; -} -if (!Array.prototype.some) { - Array.prototype.some = function some(fun /*, thisp */) { - var object = toObject(this), - self = splitString && _toString(this) == "[object String]" ? - this.split("") : - object, - length = self.length >>> 0, - thisp = arguments[1]; - if (_toString(fun) != "[object Function]") { - throw new TypeError(fun + " is not a function"); - } - - for (var i = 0; i < length; i++) { - if (i in self && fun.call(thisp, self[i], i, object)) { - return true; - } - } - return false; - }; -} -if (!Array.prototype.reduce) { - Array.prototype.reduce = function reduce(fun /*, initial*/) { - var object = toObject(this), - self = splitString && _toString(this) == "[object String]" ? - this.split("") : - object, - length = self.length >>> 0; - if (_toString(fun) != "[object Function]") { - throw new TypeError(fun + " is not a function"); - } - if (!length && arguments.length == 1) { - throw new TypeError("reduce of empty array with no initial value"); - } - - var i = 0; - var result; - if (arguments.length >= 2) { - result = arguments[1]; - } else { - do { - if (i in self) { - result = self[i++]; - break; - } - if (++i >= length) { - throw new TypeError("reduce of empty array with no initial value"); - } - } while (true); - } - - for (; i < length; i++) { - if (i in self) { - result = fun.call(void 0, result, self[i], i, object); - } - } - - return result; - }; -} -if (!Array.prototype.reduceRight) { - Array.prototype.reduceRight = function reduceRight(fun /*, initial*/) { - var object = toObject(this), - self = splitString && _toString(this) == "[object String]" ? - this.split("") : - object, - length = self.length >>> 0; - if (_toString(fun) != "[object Function]") { - throw new TypeError(fun + " is not a function"); - } - if (!length && arguments.length == 1) { - throw new TypeError("reduceRight of empty array with no initial value"); - } - - var result, i = length - 1; - if (arguments.length >= 2) { - result = arguments[1]; - } else { - do { - if (i in self) { - result = self[i--]; - break; - } - if (--i < 0) { - throw new TypeError("reduceRight of empty array with no initial value"); - } - } while (true); - } - - do { - if (i in this) { - result = fun.call(void 0, result, self[i], i, object); - } - } while (i--); - - return result; - }; -} -if (!Array.prototype.indexOf || ([0, 1].indexOf(1, 2) != -1)) { - Array.prototype.indexOf = function indexOf(sought /*, fromIndex */ ) { - var self = splitString && _toString(this) == "[object String]" ? - this.split("") : - toObject(this), - length = self.length >>> 0; - - if (!length) { - return -1; - } - - var i = 0; - if (arguments.length > 1) { - i = toInteger(arguments[1]); - } - i = i >= 0 ? i : Math.max(0, length + i); - for (; i < length; i++) { - if (i in self && self[i] === sought) { - return i; - } - } - return -1; - }; -} -if (!Array.prototype.lastIndexOf || ([0, 1].lastIndexOf(0, -3) != -1)) { - Array.prototype.lastIndexOf = function lastIndexOf(sought /*, fromIndex */) { - var self = splitString && _toString(this) == "[object String]" ? - this.split("") : - toObject(this), - length = self.length >>> 0; - - if (!length) { - return -1; - } - var i = length - 1; - if (arguments.length > 1) { - i = Math.min(i, toInteger(arguments[1])); - } - i = i >= 0 ? i : length - Math.abs(i); - for (; i >= 0; i--) { - if (i in self && sought === self[i]) { - return i; - } - } - return -1; - }; -} -if (!Object.getPrototypeOf) { - Object.getPrototypeOf = function getPrototypeOf(object) { - return object.__proto__ || ( - object.constructor ? - object.constructor.prototype : - prototypeOfObject - ); - }; -} -if (!Object.getOwnPropertyDescriptor) { - var ERR_NON_OBJECT = "Object.getOwnPropertyDescriptor called on a " + - "non-object: "; - Object.getOwnPropertyDescriptor = function getOwnPropertyDescriptor(object, property) { - if ((typeof object != "object" && typeof object != "function") || object === null) - throw new TypeError(ERR_NON_OBJECT + object); - if (!owns(object, property)) - return; - - var descriptor, getter, setter; - descriptor = { enumerable: true, configurable: true }; - if (supportsAccessors) { - var prototype = object.__proto__; - object.__proto__ = prototypeOfObject; - - var getter = lookupGetter(object, property); - var setter = lookupSetter(object, property); - object.__proto__ = prototype; - - if (getter || setter) { - if (getter) descriptor.get = getter; - if (setter) descriptor.set = setter; - return descriptor; - } - } - descriptor.value = object[property]; - return descriptor; - }; -} -if (!Object.getOwnPropertyNames) { - Object.getOwnPropertyNames = function getOwnPropertyNames(object) { - return Object.keys(object); - }; -} -if (!Object.create) { - var createEmpty; - if (Object.prototype.__proto__ === null) { - createEmpty = function () { - return { "__proto__": null }; - }; - } else { - createEmpty = function () { - var empty = {}; - for (var i in empty) - empty[i] = null; - empty.constructor = - empty.hasOwnProperty = - empty.propertyIsEnumerable = - empty.isPrototypeOf = - empty.toLocaleString = - empty.toString = - empty.valueOf = - empty.__proto__ = null; - return empty; - } - } - - Object.create = function create(prototype, properties) { - var object; - if (prototype === null) { - object = createEmpty(); - } else { - if (typeof prototype != "object") - throw new TypeError("typeof prototype["+(typeof prototype)+"] != 'object'"); - var Type = function () {}; - Type.prototype = prototype; - object = new Type(); - object.__proto__ = prototype; - } - if (properties !== void 0) - Object.defineProperties(object, properties); - return object; - }; -} - -function doesDefinePropertyWork(object) { - try { - Object.defineProperty(object, "sentinel", {}); - return "sentinel" in object; - } catch (exception) { - } -} -if (Object.defineProperty) { - var definePropertyWorksOnObject = doesDefinePropertyWork({}); - var definePropertyWorksOnDom = typeof document == "undefined" || - doesDefinePropertyWork(document.createElement("div")); - if (!definePropertyWorksOnObject || !definePropertyWorksOnDom) { - var definePropertyFallback = Object.defineProperty; - } -} - -if (!Object.defineProperty || definePropertyFallback) { - var ERR_NON_OBJECT_DESCRIPTOR = "Property description must be an object: "; - var ERR_NON_OBJECT_TARGET = "Object.defineProperty called on non-object: " - var ERR_ACCESSORS_NOT_SUPPORTED = "getters & setters can not be defined " + - "on this javascript engine"; - - Object.defineProperty = function defineProperty(object, property, descriptor) { - if ((typeof object != "object" && typeof object != "function") || object === null) - throw new TypeError(ERR_NON_OBJECT_TARGET + object); - if ((typeof descriptor != "object" && typeof descriptor != "function") || descriptor === null) - throw new TypeError(ERR_NON_OBJECT_DESCRIPTOR + descriptor); - if (definePropertyFallback) { - try { - return definePropertyFallback.call(Object, object, property, descriptor); - } catch (exception) { - } - } - if (owns(descriptor, "value")) { - - if (supportsAccessors && (lookupGetter(object, property) || - lookupSetter(object, property))) - { - var prototype = object.__proto__; - object.__proto__ = prototypeOfObject; - delete object[property]; - object[property] = descriptor.value; - object.__proto__ = prototype; - } else { - object[property] = descriptor.value; - } - } else { - if (!supportsAccessors) - throw new TypeError(ERR_ACCESSORS_NOT_SUPPORTED); - if (owns(descriptor, "get")) - defineGetter(object, property, descriptor.get); - if (owns(descriptor, "set")) - defineSetter(object, property, descriptor.set); - } - - return object; - }; -} -if (!Object.defineProperties) { - Object.defineProperties = function defineProperties(object, properties) { - for (var property in properties) { - if (owns(properties, property)) - Object.defineProperty(object, property, properties[property]); - } - return object; - }; -} -if (!Object.seal) { - Object.seal = function seal(object) { - return object; - }; -} -if (!Object.freeze) { - Object.freeze = function freeze(object) { - return object; - }; -} -try { - Object.freeze(function () {}); -} catch (exception) { - Object.freeze = (function freeze(freezeObject) { - return function freeze(object) { - if (typeof object == "function") { - return object; - } else { - return freezeObject(object); - } - }; - })(Object.freeze); -} -if (!Object.preventExtensions) { - Object.preventExtensions = function preventExtensions(object) { - return object; - }; -} -if (!Object.isSealed) { - Object.isSealed = function isSealed(object) { - return false; - }; -} -if (!Object.isFrozen) { - Object.isFrozen = function isFrozen(object) { - return false; - }; -} -if (!Object.isExtensible) { - Object.isExtensible = function isExtensible(object) { - if (Object(object) === object) { - throw new TypeError(); // TODO message - } - var name = ''; - while (owns(object, name)) { - name += '?'; - } - object[name] = true; - var returnValue = owns(object, name); - delete object[name]; - return returnValue; - }; -} -if (!Object.keys) { - var hasDontEnumBug = true, - dontEnums = [ - "toString", - "toLocaleString", - "valueOf", - "hasOwnProperty", - "isPrototypeOf", - "propertyIsEnumerable", - "constructor" - ], - dontEnumsLength = dontEnums.length; - - for (var key in {"toString": null}) { - hasDontEnumBug = false; - } - - Object.keys = function keys(object) { - - if ( - (typeof object != "object" && typeof object != "function") || - object === null - ) { - throw new TypeError("Object.keys called on a non-object"); - } - - var keys = []; - for (var name in object) { - if (owns(object, name)) { - keys.push(name); - } - } - - if (hasDontEnumBug) { - for (var i = 0, ii = dontEnumsLength; i < ii; i++) { - var dontEnum = dontEnums[i]; - if (owns(object, dontEnum)) { - keys.push(dontEnum); - } - } - } - return keys; - }; - -} -if (!Date.now) { - Date.now = function now() { - return new Date().getTime(); - }; -} -var ws = "\x09\x0A\x0B\x0C\x0D\x20\xA0\u1680\u180E\u2000\u2001\u2002\u2003" + - "\u2004\u2005\u2006\u2007\u2008\u2009\u200A\u202F\u205F\u3000\u2028" + - "\u2029\uFEFF"; -if (!String.prototype.trim || ws.trim()) { - ws = "[" + ws + "]"; - var trimBeginRegexp = new RegExp("^" + ws + ws + "*"), - trimEndRegexp = new RegExp(ws + ws + "*$"); - String.prototype.trim = function trim() { - return String(this).replace(trimBeginRegexp, "").replace(trimEndRegexp, ""); - }; -} - -function toInteger(n) { - n = +n; - if (n !== n) { // isNaN - n = 0; - } else if (n !== 0 && n !== (1/0) && n !== -(1/0)) { - n = (n > 0 || -1) * Math.floor(Math.abs(n)); - } - return n; -} - -function isPrimitive(input) { - var type = typeof input; - return ( - input === null || - type === "undefined" || - type === "boolean" || - type === "number" || - type === "string" - ); -} - -function toPrimitive(input) { - var val, valueOf, toString; - if (isPrimitive(input)) { - return input; - } - valueOf = input.valueOf; - if (typeof valueOf === "function") { - val = valueOf.call(input); - if (isPrimitive(val)) { - return val; - } - } - toString = input.toString; - if (typeof toString === "function") { - val = toString.call(input); - if (isPrimitive(val)) { - return val; - } - } - throw new TypeError(); -} -var toObject = function (o) { - if (o == null) { // this matches both null and undefined - throw new TypeError("can't convert "+o+" to object"); - } - return Object(o); -}; - -}); - -ace.define('ace/mode/css_worker', ['require', 'exports', 'module' , 'ace/lib/oop', 'ace/lib/lang', 'ace/worker/mirror', 'ace/mode/css/csslint'], function(require, exports, module) { - - -var oop = require("../lib/oop"); -var lang = require("../lib/lang"); -var Mirror = require("../worker/mirror").Mirror; -var CSSLint = require("./css/csslint").CSSLint; - -var Worker = exports.Worker = function(sender) { - Mirror.call(this, sender); - this.setTimeout(400); - this.ruleset = null; - this.setDisabledRules("ids"); - this.setInfoRules("adjoining-classes|qualified-headings|zero-units|gradients|import|outline-none"); -}; - -oop.inherits(Worker, Mirror); - -(function() { - this.setInfoRules = function(ruleNames) { - if (typeof ruleNames == "string") - ruleNames = ruleNames.split("|"); - this.infoRules = lang.arrayToMap(ruleNames); - this.doc.getValue() && this.deferredUpdate.schedule(100); - }; - - this.setDisabledRules = function(ruleNames) { - if (!ruleNames) { - this.ruleset = null; - } else { - if (typeof ruleNames == "string") - ruleNames = ruleNames.split("|"); - var all = {}; - - CSSLint.getRules().forEach(function(x){ - all[x.id] = true; - }); - ruleNames.forEach(function(x) { - delete all[x]; - }); - - this.ruleset = all; - } - this.doc.getValue() && this.deferredUpdate.schedule(100); - }; - - this.onUpdate = function() { - var value = this.doc.getValue(); - var infoRules = this.infoRules; - - var result = CSSLint.verify(value, this.ruleset); - this.sender.emit("csslint", result.messages.map(function(msg) { - return { - row: msg.line - 1, - column: msg.col - 1, - text: msg.message, - type: infoRules[msg.rule.id] ? "info" : msg.type, - rule: msg.rule.name - } - })); - }; - -}).call(Worker.prototype); - -}); - -ace.define('ace/lib/oop', ['require', 'exports', 'module' ], function(require, exports, module) { - - -exports.inherits = function(ctor, superCtor) { - ctor.super_ = superCtor; - ctor.prototype = Object.create(superCtor.prototype, { - constructor: { - value: ctor, - enumerable: false, - writable: true, - configurable: true - } - }); -}; - -exports.mixin = function(obj, mixin) { - for (var key in mixin) { - obj[key] = mixin[key]; - } - return obj; -}; - -exports.implement = function(proto, mixin) { - exports.mixin(proto, mixin); -}; - -}); - -ace.define('ace/lib/lang', ['require', 'exports', 'module' ], function(require, exports, module) { - - -exports.stringReverse = function(string) { - return string.split("").reverse().join(""); -}; - -exports.stringRepeat = function (string, count) { - var result = ''; - while (count > 0) { - if (count & 1) - result += string; - - if (count >>= 1) - string += string; - } - return result; -}; - -var trimBeginRegexp = /^\s\s*/; -var trimEndRegexp = /\s\s*$/; - -exports.stringTrimLeft = function (string) { - return string.replace(trimBeginRegexp, ''); -}; - -exports.stringTrimRight = function (string) { - return string.replace(trimEndRegexp, ''); -}; - -exports.copyObject = function(obj) { - var copy = {}; - for (var key in obj) { - copy[key] = obj[key]; - } - return copy; -}; - -exports.copyArray = function(array){ - var copy = []; - for (var i=0, l=array.length; i= length) { - position.row = Math.max(0, length - 1); - position.column = this.getLine(length-1).length; - } else if (position.row < 0) - position.row = 0; - return position; - }; - this.insert = function(position, text) { - if (!text || text.length === 0) - return position; - - position = this.$clipPosition(position); - if (this.getLength() <= 1) - this.$detectNewLine(text); - - var lines = this.$split(text); - var firstLine = lines.splice(0, 1)[0]; - var lastLine = lines.length == 0 ? null : lines.splice(lines.length - 1, 1)[0]; - - position = this.insertInLine(position, firstLine); - if (lastLine !== null) { - position = this.insertNewLine(position); // terminate first line - position = this._insertLines(position.row, lines); - position = this.insertInLine(position, lastLine || ""); - } - return position; - }; - this.insertLines = function(row, lines) { - if (row >= this.getLength()) - return this.insert({row: row, column: 0}, "\n" + lines.join("\n")); - return this._insertLines(Math.max(row, 0), lines); - }; - this._insertLines = function(row, lines) { - if (lines.length == 0) - return {row: row, column: 0}; - if (lines.length > 0xFFFF) { - var end = this._insertLines(row, lines.slice(0xFFFF)); - lines = lines.slice(0, 0xFFFF); - } - - var args = [row, 0]; - args.push.apply(args, lines); - this.$lines.splice.apply(this.$lines, args); - - var range = new Range(row, 0, row + lines.length, 0); - var delta = { - action: "insertLines", - range: range, - lines: lines - }; - this._emit("change", { data: delta }); - return end || range.end; - }; - this.insertNewLine = function(position) { - position = this.$clipPosition(position); - var line = this.$lines[position.row] || ""; - - this.$lines[position.row] = line.substring(0, position.column); - this.$lines.splice(position.row + 1, 0, line.substring(position.column, line.length)); - - var end = { - row : position.row + 1, - column : 0 - }; - - var delta = { - action: "insertText", - range: Range.fromPoints(position, end), - text: this.getNewLineCharacter() - }; - this._emit("change", { data: delta }); - - return end; - }; - this.insertInLine = function(position, text) { - if (text.length == 0) - return position; - - var line = this.$lines[position.row] || ""; - - this.$lines[position.row] = line.substring(0, position.column) + text - + line.substring(position.column); - - var end = { - row : position.row, - column : position.column + text.length - }; - - var delta = { - action: "insertText", - range: Range.fromPoints(position, end), - text: text - }; - this._emit("change", { data: delta }); - - return end; - }; - this.remove = function(range) { - if (!range instanceof Range) - range = Range.fromPoints(range.start, range.end); - range.start = this.$clipPosition(range.start); - range.end = this.$clipPosition(range.end); - - if (range.isEmpty()) - return range.start; - - var firstRow = range.start.row; - var lastRow = range.end.row; - - if (range.isMultiLine()) { - var firstFullRow = range.start.column == 0 ? firstRow : firstRow + 1; - var lastFullRow = lastRow - 1; - - if (range.end.column > 0) - this.removeInLine(lastRow, 0, range.end.column); - - if (lastFullRow >= firstFullRow) - this._removeLines(firstFullRow, lastFullRow); - - if (firstFullRow != firstRow) { - this.removeInLine(firstRow, range.start.column, this.getLine(firstRow).length); - this.removeNewLine(range.start.row); - } - } - else { - this.removeInLine(firstRow, range.start.column, range.end.column); - } - return range.start; - }; - this.removeInLine = function(row, startColumn, endColumn) { - if (startColumn == endColumn) - return; - - var range = new Range(row, startColumn, row, endColumn); - var line = this.getLine(row); - var removed = line.substring(startColumn, endColumn); - var newLine = line.substring(0, startColumn) + line.substring(endColumn, line.length); - this.$lines.splice(row, 1, newLine); - - var delta = { - action: "removeText", - range: range, - text: removed - }; - this._emit("change", { data: delta }); - return range.start; - }; - this.removeLines = function(firstRow, lastRow) { - if (firstRow < 0 || lastRow >= this.getLength()) - return this.remove(new Range(firstRow, 0, lastRow + 1, 0)); - return this._removeLines(firstRow, lastRow); - }; - - this._removeLines = function(firstRow, lastRow) { - var range = new Range(firstRow, 0, lastRow + 1, 0); - var removed = this.$lines.splice(firstRow, lastRow - firstRow + 1); - - var delta = { - action: "removeLines", - range: range, - nl: this.getNewLineCharacter(), - lines: removed - }; - this._emit("change", { data: delta }); - return removed; - }; - this.removeNewLine = function(row) { - var firstLine = this.getLine(row); - var secondLine = this.getLine(row+1); - - var range = new Range(row, firstLine.length, row+1, 0); - var line = firstLine + secondLine; - - this.$lines.splice(row, 2, line); - - var delta = { - action: "removeText", - range: range, - text: this.getNewLineCharacter() - }; - this._emit("change", { data: delta }); - }; - this.replace = function(range, text) { - if (!range instanceof Range) - range = Range.fromPoints(range.start, range.end); - if (text.length == 0 && range.isEmpty()) - return range.start; - if (text == this.getTextRange(range)) - return range.end; - - this.remove(range); - if (text) { - var end = this.insert(range.start, text); - } - else { - end = range.start; - } - - return end; - }; - this.applyDeltas = function(deltas) { - for (var i=0; i=0; i--) { - var delta = deltas[i]; - - var range = Range.fromPoints(delta.range.start, delta.range.end); - - if (delta.action == "insertLines") - this._removeLines(range.start.row, range.end.row - 1); - else if (delta.action == "insertText") - this.remove(range); - else if (delta.action == "removeLines") - this._insertLines(range.start.row, delta.lines); - else if (delta.action == "removeText") - this.insert(range.start, delta.text); - } - }; - this.indexToPosition = function(index, startRow) { - var lines = this.$lines || this.getAllLines(); - var newlineLength = this.getNewLineCharacter().length; - for (var i = startRow || 0, l = lines.length; i < l; i++) { - index -= lines[i].length + newlineLength; - if (index < 0) - return {row: i, column: index + lines[i].length + newlineLength}; - } - return {row: l-1, column: lines[l-1].length}; - }; - this.positionToIndex = function(pos, startRow) { - var lines = this.$lines || this.getAllLines(); - var newlineLength = this.getNewLineCharacter().length; - var index = 0; - var row = Math.min(pos.row, lines.length); - for (var i = startRow || 0; i < row; ++i) - index += lines[i].length + newlineLength; - - return index + pos.column; - }; - -}).call(Document.prototype); - -exports.Document = Document; -}); - -ace.define('ace/lib/event_emitter', ['require', 'exports', 'module' ], function(require, exports, module) { - - -var EventEmitter = {}; -var stopPropagation = function() { this.propagationStopped = true; }; -var preventDefault = function() { this.defaultPrevented = true; }; - -EventEmitter._emit = -EventEmitter._dispatchEvent = function(eventName, e) { - this._eventRegistry || (this._eventRegistry = {}); - this._defaultHandlers || (this._defaultHandlers = {}); - - var listeners = this._eventRegistry[eventName] || []; - var defaultHandler = this._defaultHandlers[eventName]; - if (!listeners.length && !defaultHandler) - return; - - if (typeof e != "object" || !e) - e = {}; - - if (!e.type) - e.type = eventName; - if (!e.stopPropagation) - e.stopPropagation = stopPropagation; - if (!e.preventDefault) - e.preventDefault = preventDefault; - - listeners = listeners.slice(); - for (var i=0; i [" + this.end.row + "/" + this.end.column + "]"); - }; - - this.contains = function(row, column) { - return this.compare(row, column) == 0; - }; - this.compareRange = function(range) { - var cmp, - end = range.end, - start = range.start; - - cmp = this.compare(end.row, end.column); - if (cmp == 1) { - cmp = this.compare(start.row, start.column); - if (cmp == 1) { - return 2; - } else if (cmp == 0) { - return 1; - } else { - return 0; - } - } else if (cmp == -1) { - return -2; - } else { - cmp = this.compare(start.row, start.column); - if (cmp == -1) { - return -1; - } else if (cmp == 1) { - return 42; - } else { - return 0; - } - } - }; - this.comparePoint = function(p) { - return this.compare(p.row, p.column); - }; - this.containsRange = function(range) { - return this.comparePoint(range.start) == 0 && this.comparePoint(range.end) == 0; - }; - this.intersects = function(range) { - var cmp = this.compareRange(range); - return (cmp == -1 || cmp == 0 || cmp == 1); - }; - this.isEnd = function(row, column) { - return this.end.row == row && this.end.column == column; - }; - this.isStart = function(row, column) { - return this.start.row == row && this.start.column == column; - }; - this.setStart = function(row, column) { - if (typeof row == "object") { - this.start.column = row.column; - this.start.row = row.row; - } else { - this.start.row = row; - this.start.column = column; - } - }; - this.setEnd = function(row, column) { - if (typeof row == "object") { - this.end.column = row.column; - this.end.row = row.row; - } else { - this.end.row = row; - this.end.column = column; - } - }; - this.inside = function(row, column) { - if (this.compare(row, column) == 0) { - if (this.isEnd(row, column) || this.isStart(row, column)) { - return false; - } else { - return true; - } - } - return false; - }; - this.insideStart = function(row, column) { - if (this.compare(row, column) == 0) { - if (this.isEnd(row, column)) { - return false; - } else { - return true; - } - } - return false; - }; - this.insideEnd = function(row, column) { - if (this.compare(row, column) == 0) { - if (this.isStart(row, column)) { - return false; - } else { - return true; - } - } - return false; - }; - this.compare = function(row, column) { - if (!this.isMultiLine()) { - if (row === this.start.row) { - return column < this.start.column ? -1 : (column > this.end.column ? 1 : 0); - }; - } - - if (row < this.start.row) - return -1; - - if (row > this.end.row) - return 1; - - if (this.start.row === row) - return column >= this.start.column ? 0 : -1; - - if (this.end.row === row) - return column <= this.end.column ? 0 : 1; - - return 0; - }; - this.compareStart = function(row, column) { - if (this.start.row == row && this.start.column == column) { - return -1; - } else { - return this.compare(row, column); - } - }; - this.compareEnd = function(row, column) { - if (this.end.row == row && this.end.column == column) { - return 1; - } else { - return this.compare(row, column); - } - }; - this.compareInside = function(row, column) { - if (this.end.row == row && this.end.column == column) { - return 1; - } else if (this.start.row == row && this.start.column == column) { - return -1; - } else { - return this.compare(row, column); - } - }; - this.clipRows = function(firstRow, lastRow) { - if (this.end.row > lastRow) - var end = {row: lastRow + 1, column: 0}; - else if (this.end.row < firstRow) - var end = {row: firstRow, column: 0}; - - if (this.start.row > lastRow) - var start = {row: lastRow + 1, column: 0}; - else if (this.start.row < firstRow) - var start = {row: firstRow, column: 0}; - - return Range.fromPoints(start || this.start, end || this.end); - }; - this.extend = function(row, column) { - var cmp = this.compare(row, column); - - if (cmp == 0) - return this; - else if (cmp == -1) - var start = {row: row, column: column}; - else - var end = {row: row, column: column}; - - return Range.fromPoints(start || this.start, end || this.end); - }; - - this.isEmpty = function() { - return (this.start.row === this.end.row && this.start.column === this.end.column); - }; - this.isMultiLine = function() { - return (this.start.row !== this.end.row); - }; - this.clone = function() { - return Range.fromPoints(this.start, this.end); - }; - this.collapseRows = function() { - if (this.end.column == 0) - return new Range(this.start.row, 0, Math.max(this.start.row, this.end.row-1), 0) - else - return new Range(this.start.row, 0, this.end.row, 0) - }; - this.toScreenRange = function(session) { - var screenPosStart = session.documentToScreenPosition(this.start); - var screenPosEnd = session.documentToScreenPosition(this.end); - - return new Range( - screenPosStart.row, screenPosStart.column, - screenPosEnd.row, screenPosEnd.column - ); - }; - this.moveBy = function(row, column) { - this.start.row += row; - this.start.column += column; - this.end.row += row; - this.end.column += column; - }; - -}).call(Range.prototype); -Range.fromPoints = function(start, end) { - return new Range(start.row, start.column, end.row, end.column); -}; -Range.comparePoints = comparePoints; - -Range.comparePoints = function(p1, p2) { - return p1.row - p2.row || p1.column - p2.column; -}; - - -exports.Range = Range; -}); - -ace.define('ace/anchor', ['require', 'exports', 'module' , 'ace/lib/oop', 'ace/lib/event_emitter'], function(require, exports, module) { - - -var oop = require("./lib/oop"); -var EventEmitter = require("./lib/event_emitter").EventEmitter; - -var Anchor = exports.Anchor = function(doc, row, column) { - this.$onChange = this.onChange.bind(this); - this.attach(doc); - - if (typeof column == "undefined") - this.setPosition(row.row, row.column); - else - this.setPosition(row, column); -}; - -(function() { - - oop.implement(this, EventEmitter); - this.getPosition = function() { - return this.$clipPositionToDocument(this.row, this.column); - }; - this.getDocument = function() { - return this.document; - }; - this.$insertRight = false; - this.onChange = function(e) { - var delta = e.data; - var range = delta.range; - - if (range.start.row == range.end.row && range.start.row != this.row) - return; - - if (range.start.row > this.row) - return; - - if (range.start.row == this.row && range.start.column > this.column) - return; - - var row = this.row; - var column = this.column; - var start = range.start; - var end = range.end; - - if (delta.action === "insertText") { - if (start.row === row && start.column <= column) { - if (start.column === column && this.$insertRight) { - } else if (start.row === end.row) { - column += end.column - start.column; - } else { - column -= start.column; - row += end.row - start.row; - } - } else if (start.row !== end.row && start.row < row) { - row += end.row - start.row; - } - } else if (delta.action === "insertLines") { - if (start.row <= row) { - row += end.row - start.row; - } - } else if (delta.action === "removeText") { - if (start.row === row && start.column < column) { - if (end.column >= column) - column = start.column; - else - column = Math.max(0, column - (end.column - start.column)); - - } else if (start.row !== end.row && start.row < row) { - if (end.row === row) - column = Math.max(0, column - end.column) + start.column; - row -= (end.row - start.row); - } else if (end.row === row) { - row -= end.row - start.row; - column = Math.max(0, column - end.column) + start.column; - } - } else if (delta.action == "removeLines") { - if (start.row <= row) { - if (end.row <= row) - row -= end.row - start.row; - else { - row = start.row; - column = 0; - } - } - } - - this.setPosition(row, column, true); - }; - this.setPosition = function(row, column, noClip) { - var pos; - if (noClip) { - pos = { - row: row, - column: column - }; - } else { - pos = this.$clipPositionToDocument(row, column); - } - - if (this.row == pos.row && this.column == pos.column) - return; - - var old = { - row: this.row, - column: this.column - }; - - this.row = pos.row; - this.column = pos.column; - this._emit("change", { - old: old, - value: pos - }); - }; - this.detach = function() { - this.document.removeEventListener("change", this.$onChange); - }; - this.attach = function(doc) { - this.document = doc || this.document; - this.document.on("change", this.$onChange); - }; - this.$clipPositionToDocument = function(row, column) { - var pos = {}; - - if (row >= this.document.getLength()) { - pos.row = Math.max(0, this.document.getLength() - 1); - pos.column = this.document.getLine(pos.row).length; - } - else if (row < 0) { - pos.row = 0; - pos.column = 0; - } - else { - pos.row = row; - pos.column = Math.min(this.document.getLine(pos.row).length, Math.max(0, column)); - } - - if (column < 0) - pos.column = 0; - - return pos; - }; - -}).call(Anchor.prototype); - -}); -ace.define('ace/mode/css/csslint', ['require', 'exports', 'module' ], function(require, exports, module) { -var parserlib = {}; -(function(){ -function EventTarget(){ - this._listeners = {}; -} - -EventTarget.prototype = { - constructor: EventTarget, - addListener: function(type, listener){ - if (!this._listeners[type]){ - this._listeners[type] = []; - } - - this._listeners[type].push(listener); - }, - fire: function(event){ - if (typeof event == "string"){ - event = { type: event }; - } - if (typeof event.target != "undefined"){ - event.target = this; - } - - if (typeof event.type == "undefined"){ - throw new Error("Event object missing 'type' property."); - } - - if (this._listeners[event.type]){ - var listeners = this._listeners[event.type].concat(); - for (var i=0, len=listeners.length; i < len; i++){ - listeners[i].call(this, event); - } - } - }, - removeListener: function(type, listener){ - if (this._listeners[type]){ - var listeners = this._listeners[type]; - for (var i=0, len=listeners.length; i < len; i++){ - if (listeners[i] === listener){ - listeners.splice(i, 1); - break; - } - } - - - } - } -}; -function StringReader(text){ - this._input = text.replace(/\n\r?/g, "\n"); - this._line = 1; - this._col = 1; - this._cursor = 0; -} - -StringReader.prototype = { - constructor: StringReader, - getCol: function(){ - return this._col; - }, - getLine: function(){ - return this._line ; - }, - eof: function(){ - return (this._cursor == this._input.length); - }, - peek: function(count){ - var c = null; - count = (typeof count == "undefined" ? 1 : count); - if (this._cursor < this._input.length){ - c = this._input.charAt(this._cursor + count - 1); - } - - return c; - }, - read: function(){ - var c = null; - if (this._cursor < this._input.length){ - if (this._input.charAt(this._cursor) == "\n"){ - this._line++; - this._col=1; - } else { - this._col++; - } - c = this._input.charAt(this._cursor++); - } - - return c; - }, - mark: function(){ - this._bookmark = { - cursor: this._cursor, - line: this._line, - col: this._col - }; - }, - - reset: function(){ - if (this._bookmark){ - this._cursor = this._bookmark.cursor; - this._line = this._bookmark.line; - this._col = this._bookmark.col; - delete this._bookmark; - } - }, - readTo: function(pattern){ - - var buffer = "", - c; - while (buffer.length < pattern.length || buffer.lastIndexOf(pattern) != buffer.length - pattern.length){ - c = this.read(); - if (c){ - buffer += c; - } else { - throw new Error("Expected \"" + pattern + "\" at line " + this._line + ", col " + this._col + "."); - } - } - - return buffer; - - }, - readWhile: function(filter){ - - var buffer = "", - c = this.read(); - - while(c !== null && filter(c)){ - buffer += c; - c = this.read(); - } - - return buffer; - - }, - readMatch: function(matcher){ - - var source = this._input.substring(this._cursor), - value = null; - if (typeof matcher == "string"){ - if (source.indexOf(matcher) === 0){ - value = this.readCount(matcher.length); - } - } else if (matcher instanceof RegExp){ - if (matcher.test(source)){ - value = this.readCount(RegExp.lastMatch.length); - } - } - - return value; - }, - readCount: function(count){ - var buffer = ""; - - while(count--){ - buffer += this.read(); - } - - return buffer; - } - -}; -function SyntaxError(message, line, col){ - this.col = col; - this.line = line; - this.message = message; - -} -SyntaxError.prototype = new Error(); -function SyntaxUnit(text, line, col, type){ - this.col = col; - this.line = line; - this.text = text; - this.type = type; -} -SyntaxUnit.fromToken = function(token){ - return new SyntaxUnit(token.value, token.startLine, token.startCol); -}; - -SyntaxUnit.prototype = { - constructor: SyntaxUnit, - valueOf: function(){ - return this.toString(); - }, - toString: function(){ - return this.text; - } - -}; -function TokenStreamBase(input, tokenData){ - this._reader = input ? new StringReader(input.toString()) : null; - this._token = null; - this._tokenData = tokenData; - this._lt = []; - this._ltIndex = 0; - - this._ltIndexCache = []; -} -TokenStreamBase.createTokenData = function(tokens){ - - var nameMap = [], - typeMap = {}, - tokenData = tokens.concat([]), - i = 0, - len = tokenData.length+1; - - tokenData.UNKNOWN = -1; - tokenData.unshift({name:"EOF"}); - - for (; i < len; i++){ - nameMap.push(tokenData[i].name); - tokenData[tokenData[i].name] = i; - if (tokenData[i].text){ - typeMap[tokenData[i].text] = i; - } - } - - tokenData.name = function(tt){ - return nameMap[tt]; - }; - - tokenData.type = function(c){ - return typeMap[c]; - }; - - return tokenData; -}; - -TokenStreamBase.prototype = { - constructor: TokenStreamBase, - match: function(tokenTypes, channel){ - if (!(tokenTypes instanceof Array)){ - tokenTypes = [tokenTypes]; - } - - var tt = this.get(channel), - i = 0, - len = tokenTypes.length; - - while(i < len){ - if (tt == tokenTypes[i++]){ - return true; - } - } - this.unget(); - return false; - }, - mustMatch: function(tokenTypes, channel){ - - var token; - if (!(tokenTypes instanceof Array)){ - tokenTypes = [tokenTypes]; - } - - if (!this.match.apply(this, arguments)){ - token = this.LT(1); - throw new SyntaxError("Expected " + this._tokenData[tokenTypes[0]].name + - " at line " + token.startLine + ", col " + token.startCol + ".", token.startLine, token.startCol); - } - }, - advance: function(tokenTypes, channel){ - - while(this.LA(0) !== 0 && !this.match(tokenTypes, channel)){ - this.get(); - } - - return this.LA(0); - }, - get: function(channel){ - - var tokenInfo = this._tokenData, - reader = this._reader, - value, - i =0, - len = tokenInfo.length, - found = false, - token, - info; - if (this._lt.length && this._ltIndex >= 0 && this._ltIndex < this._lt.length){ - - i++; - this._token = this._lt[this._ltIndex++]; - info = tokenInfo[this._token.type]; - while((info.channel !== undefined && channel !== info.channel) && - this._ltIndex < this._lt.length){ - this._token = this._lt[this._ltIndex++]; - info = tokenInfo[this._token.type]; - i++; - } - if ((info.channel === undefined || channel === info.channel) && - this._ltIndex <= this._lt.length){ - this._ltIndexCache.push(i); - return this._token.type; - } - } - token = this._getToken(); - if (token.type > -1 && !tokenInfo[token.type].hide){ - token.channel = tokenInfo[token.type].channel; - this._token = token; - this._lt.push(token); - this._ltIndexCache.push(this._lt.length - this._ltIndex + i); - if (this._lt.length > 5){ - this._lt.shift(); - } - if (this._ltIndexCache.length > 5){ - this._ltIndexCache.shift(); - } - this._ltIndex = this._lt.length; - } - info = tokenInfo[token.type]; - if (info && - (info.hide || - (info.channel !== undefined && channel !== info.channel))){ - return this.get(channel); - } else { - return token.type; - } - }, - LA: function(index){ - var total = index, - tt; - if (index > 0){ - if (index > 5){ - throw new Error("Too much lookahead."); - } - while(total){ - tt = this.get(); - total--; - } - while(total < index){ - this.unget(); - total++; - } - } else if (index < 0){ - - if(this._lt[this._ltIndex+index]){ - tt = this._lt[this._ltIndex+index].type; - } else { - throw new Error("Too much lookbehind."); - } - - } else { - tt = this._token.type; - } - - return tt; - - }, - LT: function(index){ - this.LA(index); - return this._lt[this._ltIndex+index-1]; - }, - peek: function(){ - return this.LA(1); - }, - token: function(){ - return this._token; - }, - tokenName: function(tokenType){ - if (tokenType < 0 || tokenType > this._tokenData.length){ - return "UNKNOWN_TOKEN"; - } else { - return this._tokenData[tokenType].name; - } - }, - tokenType: function(tokenName){ - return this._tokenData[tokenName] || -1; - }, - unget: function(){ - if (this._ltIndexCache.length){ - this._ltIndex -= this._ltIndexCache.pop();//--; - this._token = this._lt[this._ltIndex - 1]; - } else { - throw new Error("Too much lookahead."); - } - } - -}; - - - - -parserlib.util = { -StringReader: StringReader, -SyntaxError : SyntaxError, -SyntaxUnit : SyntaxUnit, -EventTarget : EventTarget, -TokenStreamBase : TokenStreamBase -}; -})(); -(function(){ -var EventTarget = parserlib.util.EventTarget, -TokenStreamBase = parserlib.util.TokenStreamBase, -StringReader = parserlib.util.StringReader, -SyntaxError = parserlib.util.SyntaxError, -SyntaxUnit = parserlib.util.SyntaxUnit; - - -var Colors = { - aliceblue :"#f0f8ff", - antiquewhite :"#faebd7", - aqua :"#00ffff", - aquamarine :"#7fffd4", - azure :"#f0ffff", - beige :"#f5f5dc", - bisque :"#ffe4c4", - black :"#000000", - blanchedalmond :"#ffebcd", - blue :"#0000ff", - blueviolet :"#8a2be2", - brown :"#a52a2a", - burlywood :"#deb887", - cadetblue :"#5f9ea0", - chartreuse :"#7fff00", - chocolate :"#d2691e", - coral :"#ff7f50", - cornflowerblue :"#6495ed", - cornsilk :"#fff8dc", - crimson :"#dc143c", - cyan :"#00ffff", - darkblue :"#00008b", - darkcyan :"#008b8b", - darkgoldenrod :"#b8860b", - darkgray :"#a9a9a9", - darkgreen :"#006400", - darkkhaki :"#bdb76b", - darkmagenta :"#8b008b", - darkolivegreen :"#556b2f", - darkorange :"#ff8c00", - darkorchid :"#9932cc", - darkred :"#8b0000", - darksalmon :"#e9967a", - darkseagreen :"#8fbc8f", - darkslateblue :"#483d8b", - darkslategray :"#2f4f4f", - darkturquoise :"#00ced1", - darkviolet :"#9400d3", - deeppink :"#ff1493", - deepskyblue :"#00bfff", - dimgray :"#696969", - dodgerblue :"#1e90ff", - firebrick :"#b22222", - floralwhite :"#fffaf0", - forestgreen :"#228b22", - fuchsia :"#ff00ff", - gainsboro :"#dcdcdc", - ghostwhite :"#f8f8ff", - gold :"#ffd700", - goldenrod :"#daa520", - gray :"#808080", - green :"#008000", - greenyellow :"#adff2f", - honeydew :"#f0fff0", - hotpink :"#ff69b4", - indianred :"#cd5c5c", - indigo :"#4b0082", - ivory :"#fffff0", - khaki :"#f0e68c", - lavender :"#e6e6fa", - lavenderblush :"#fff0f5", - lawngreen :"#7cfc00", - lemonchiffon :"#fffacd", - lightblue :"#add8e6", - lightcoral :"#f08080", - lightcyan :"#e0ffff", - lightgoldenrodyellow :"#fafad2", - lightgray :"#d3d3d3", - lightgreen :"#90ee90", - lightpink :"#ffb6c1", - lightsalmon :"#ffa07a", - lightseagreen :"#20b2aa", - lightskyblue :"#87cefa", - lightslategray :"#778899", - lightsteelblue :"#b0c4de", - lightyellow :"#ffffe0", - lime :"#00ff00", - limegreen :"#32cd32", - linen :"#faf0e6", - magenta :"#ff00ff", - maroon :"#800000", - mediumaquamarine:"#66cdaa", - mediumblue :"#0000cd", - mediumorchid :"#ba55d3", - mediumpurple :"#9370d8", - mediumseagreen :"#3cb371", - mediumslateblue :"#7b68ee", - mediumspringgreen :"#00fa9a", - mediumturquoise :"#48d1cc", - mediumvioletred :"#c71585", - midnightblue :"#191970", - mintcream :"#f5fffa", - mistyrose :"#ffe4e1", - moccasin :"#ffe4b5", - navajowhite :"#ffdead", - navy :"#000080", - oldlace :"#fdf5e6", - olive :"#808000", - olivedrab :"#6b8e23", - orange :"#ffa500", - orangered :"#ff4500", - orchid :"#da70d6", - palegoldenrod :"#eee8aa", - palegreen :"#98fb98", - paleturquoise :"#afeeee", - palevioletred :"#d87093", - papayawhip :"#ffefd5", - peachpuff :"#ffdab9", - peru :"#cd853f", - pink :"#ffc0cb", - plum :"#dda0dd", - powderblue :"#b0e0e6", - purple :"#800080", - red :"#ff0000", - rosybrown :"#bc8f8f", - royalblue :"#4169e1", - saddlebrown :"#8b4513", - salmon :"#fa8072", - sandybrown :"#f4a460", - seagreen :"#2e8b57", - seashell :"#fff5ee", - sienna :"#a0522d", - silver :"#c0c0c0", - skyblue :"#87ceeb", - slateblue :"#6a5acd", - slategray :"#708090", - snow :"#fffafa", - springgreen :"#00ff7f", - steelblue :"#4682b4", - tan :"#d2b48c", - teal :"#008080", - thistle :"#d8bfd8", - tomato :"#ff6347", - turquoise :"#40e0d0", - violet :"#ee82ee", - wheat :"#f5deb3", - white :"#ffffff", - whitesmoke :"#f5f5f5", - yellow :"#ffff00", - yellowgreen :"#9acd32", - activeBorder :"Active window border.", - activecaption :"Active window caption.", - appworkspace :"Background color of multiple document interface.", - background :"Desktop background.", - buttonface :"The face background color for 3-D elements that appear 3-D due to one layer of surrounding border.", - buttonhighlight :"The color of the border facing the light source for 3-D elements that appear 3-D due to one layer of surrounding border.", - buttonshadow :"The color of the border away from the light source for 3-D elements that appear 3-D due to one layer of surrounding border.", - buttontext :"Text on push buttons.", - captiontext :"Text in caption, size box, and scrollbar arrow box.", - graytext :"Grayed (disabled) text. This color is set to #000 if the current display driver does not support a solid gray color.", - highlight :"Item(s) selected in a control.", - highlighttext :"Text of item(s) selected in a control.", - inactiveborder :"Inactive window border.", - inactivecaption :"Inactive window caption.", - inactivecaptiontext :"Color of text in an inactive caption.", - infobackground :"Background color for tooltip controls.", - infotext :"Text color for tooltip controls.", - menu :"Menu background.", - menutext :"Text in menus.", - scrollbar :"Scroll bar gray area.", - threeddarkshadow :"The color of the darker (generally outer) of the two borders away from the light source for 3-D elements that appear 3-D due to two concentric layers of surrounding border.", - threedface :"The face background color for 3-D elements that appear 3-D due to two concentric layers of surrounding border.", - threedhighlight :"The color of the lighter (generally outer) of the two borders facing the light source for 3-D elements that appear 3-D due to two concentric layers of surrounding border.", - threedlightshadow :"The color of the darker (generally inner) of the two borders facing the light source for 3-D elements that appear 3-D due to two concentric layers of surrounding border.", - threedshadow :"The color of the lighter (generally inner) of the two borders away from the light source for 3-D elements that appear 3-D due to two concentric layers of surrounding border.", - window :"Window background.", - windowframe :"Window frame.", - windowtext :"Text in windows." -}; -function Combinator(text, line, col){ - - SyntaxUnit.call(this, text, line, col, Parser.COMBINATOR_TYPE); - this.type = "unknown"; - if (/^\s+$/.test(text)){ - this.type = "descendant"; - } else if (text == ">"){ - this.type = "child"; - } else if (text == "+"){ - this.type = "adjacent-sibling"; - } else if (text == "~"){ - this.type = "sibling"; - } - -} - -Combinator.prototype = new SyntaxUnit(); -Combinator.prototype.constructor = Combinator; -function MediaFeature(name, value){ - - SyntaxUnit.call(this, "(" + name + (value !== null ? ":" + value : "") + ")", name.startLine, name.startCol, Parser.MEDIA_FEATURE_TYPE); - this.name = name; - this.value = value; -} - -MediaFeature.prototype = new SyntaxUnit(); -MediaFeature.prototype.constructor = MediaFeature; -function MediaQuery(modifier, mediaType, features, line, col){ - - SyntaxUnit.call(this, (modifier ? modifier + " ": "") + (mediaType ? mediaType : "") + (mediaType && features.length > 0 ? " and " : "") + features.join(" and "), line, col, Parser.MEDIA_QUERY_TYPE); - this.modifier = modifier; - this.mediaType = mediaType; - this.features = features; - -} - -MediaQuery.prototype = new SyntaxUnit(); -MediaQuery.prototype.constructor = MediaQuery; -function Parser(options){ - EventTarget.call(this); - - - this.options = options || {}; - - this._tokenStream = null; -} -Parser.DEFAULT_TYPE = 0; -Parser.COMBINATOR_TYPE = 1; -Parser.MEDIA_FEATURE_TYPE = 2; -Parser.MEDIA_QUERY_TYPE = 3; -Parser.PROPERTY_NAME_TYPE = 4; -Parser.PROPERTY_VALUE_TYPE = 5; -Parser.PROPERTY_VALUE_PART_TYPE = 6; -Parser.SELECTOR_TYPE = 7; -Parser.SELECTOR_PART_TYPE = 8; -Parser.SELECTOR_SUB_PART_TYPE = 9; - -Parser.prototype = function(){ - - var proto = new EventTarget(), //new prototype - prop, - additions = { - constructor: Parser, - DEFAULT_TYPE : 0, - COMBINATOR_TYPE : 1, - MEDIA_FEATURE_TYPE : 2, - MEDIA_QUERY_TYPE : 3, - PROPERTY_NAME_TYPE : 4, - PROPERTY_VALUE_TYPE : 5, - PROPERTY_VALUE_PART_TYPE : 6, - SELECTOR_TYPE : 7, - SELECTOR_PART_TYPE : 8, - SELECTOR_SUB_PART_TYPE : 9, - - _stylesheet: function(){ - - var tokenStream = this._tokenStream, - charset = null, - count, - token, - tt; - - this.fire("startstylesheet"); - this._charset(); - - this._skipCruft(); - while (tokenStream.peek() == Tokens.IMPORT_SYM){ - this._import(); - this._skipCruft(); - } - while (tokenStream.peek() == Tokens.NAMESPACE_SYM){ - this._namespace(); - this._skipCruft(); - } - tt = tokenStream.peek(); - while(tt > Tokens.EOF){ - - try { - - switch(tt){ - case Tokens.MEDIA_SYM: - this._media(); - this._skipCruft(); - break; - case Tokens.PAGE_SYM: - this._page(); - this._skipCruft(); - break; - case Tokens.FONT_FACE_SYM: - this._font_face(); - this._skipCruft(); - break; - case Tokens.KEYFRAMES_SYM: - this._keyframes(); - this._skipCruft(); - break; - case Tokens.VIEWPORT_SYM: - this._viewport(); - this._skipCruft(); - break; - case Tokens.UNKNOWN_SYM: //unknown @ rule - tokenStream.get(); - if (!this.options.strict){ - this.fire({ - type: "error", - error: null, - message: "Unknown @ rule: " + tokenStream.LT(0).value + ".", - line: tokenStream.LT(0).startLine, - col: tokenStream.LT(0).startCol - }); - count=0; - while (tokenStream.advance([Tokens.LBRACE, Tokens.RBRACE]) == Tokens.LBRACE){ - count++; //keep track of nesting depth - } - - while(count){ - tokenStream.advance([Tokens.RBRACE]); - count--; - } - - } else { - throw new SyntaxError("Unknown @ rule.", tokenStream.LT(0).startLine, tokenStream.LT(0).startCol); - } - break; - case Tokens.S: - this._readWhitespace(); - break; - default: - if(!this._ruleset()){ - switch(tt){ - case Tokens.CHARSET_SYM: - token = tokenStream.LT(1); - this._charset(false); - throw new SyntaxError("@charset not allowed here.", token.startLine, token.startCol); - case Tokens.IMPORT_SYM: - token = tokenStream.LT(1); - this._import(false); - throw new SyntaxError("@import not allowed here.", token.startLine, token.startCol); - case Tokens.NAMESPACE_SYM: - token = tokenStream.LT(1); - this._namespace(false); - throw new SyntaxError("@namespace not allowed here.", token.startLine, token.startCol); - default: - tokenStream.get(); //get the last token - this._unexpectedToken(tokenStream.token()); - } - - } - } - } catch(ex) { - if (ex instanceof SyntaxError && !this.options.strict){ - this.fire({ - type: "error", - error: ex, - message: ex.message, - line: ex.line, - col: ex.col - }); - } else { - throw ex; - } - } - - tt = tokenStream.peek(); - } - - if (tt != Tokens.EOF){ - this._unexpectedToken(tokenStream.token()); - } - - this.fire("endstylesheet"); - }, - - _charset: function(emit){ - var tokenStream = this._tokenStream, - charset, - token, - line, - col; - - if (tokenStream.match(Tokens.CHARSET_SYM)){ - line = tokenStream.token().startLine; - col = tokenStream.token().startCol; - - this._readWhitespace(); - tokenStream.mustMatch(Tokens.STRING); - - token = tokenStream.token(); - charset = token.value; - - this._readWhitespace(); - tokenStream.mustMatch(Tokens.SEMICOLON); - - if (emit !== false){ - this.fire({ - type: "charset", - charset:charset, - line: line, - col: col - }); - } - } - }, - - _import: function(emit){ - - var tokenStream = this._tokenStream, - tt, - uri, - importToken, - mediaList = []; - tokenStream.mustMatch(Tokens.IMPORT_SYM); - importToken = tokenStream.token(); - this._readWhitespace(); - - tokenStream.mustMatch([Tokens.STRING, Tokens.URI]); - uri = tokenStream.token().value.replace(/(?:url\()?["']([^"']+)["']\)?/, "$1"); - - this._readWhitespace(); - - mediaList = this._media_query_list(); - tokenStream.mustMatch(Tokens.SEMICOLON); - this._readWhitespace(); - - if (emit !== false){ - this.fire({ - type: "import", - uri: uri, - media: mediaList, - line: importToken.startLine, - col: importToken.startCol - }); - } - - }, - - _namespace: function(emit){ - - var tokenStream = this._tokenStream, - line, - col, - prefix, - uri; - tokenStream.mustMatch(Tokens.NAMESPACE_SYM); - line = tokenStream.token().startLine; - col = tokenStream.token().startCol; - this._readWhitespace(); - if (tokenStream.match(Tokens.IDENT)){ - prefix = tokenStream.token().value; - this._readWhitespace(); - } - - tokenStream.mustMatch([Tokens.STRING, Tokens.URI]); - uri = tokenStream.token().value.replace(/(?:url\()?["']([^"']+)["']\)?/, "$1"); - - this._readWhitespace(); - tokenStream.mustMatch(Tokens.SEMICOLON); - this._readWhitespace(); - - if (emit !== false){ - this.fire({ - type: "namespace", - prefix: prefix, - uri: uri, - line: line, - col: col - }); - } - - }, - - _media: function(){ - var tokenStream = this._tokenStream, - line, - col, - mediaList;// = []; - tokenStream.mustMatch(Tokens.MEDIA_SYM); - line = tokenStream.token().startLine; - col = tokenStream.token().startCol; - - this._readWhitespace(); - - mediaList = this._media_query_list(); - - tokenStream.mustMatch(Tokens.LBRACE); - this._readWhitespace(); - - this.fire({ - type: "startmedia", - media: mediaList, - line: line, - col: col - }); - - while(true) { - if (tokenStream.peek() == Tokens.PAGE_SYM){ - this._page(); - } else if (tokenStream.peek() == Tokens.FONT_FACE_SYM){ - this._font_face(); - } else if (!this._ruleset()){ - break; - } - } - - tokenStream.mustMatch(Tokens.RBRACE); - this._readWhitespace(); - - this.fire({ - type: "endmedia", - media: mediaList, - line: line, - col: col - }); - }, - _media_query_list: function(){ - var tokenStream = this._tokenStream, - mediaList = []; - - - this._readWhitespace(); - - if (tokenStream.peek() == Tokens.IDENT || tokenStream.peek() == Tokens.LPAREN){ - mediaList.push(this._media_query()); - } - - while(tokenStream.match(Tokens.COMMA)){ - this._readWhitespace(); - mediaList.push(this._media_query()); - } - - return mediaList; - }, - _media_query: function(){ - var tokenStream = this._tokenStream, - type = null, - ident = null, - token = null, - expressions = []; - - if (tokenStream.match(Tokens.IDENT)){ - ident = tokenStream.token().value.toLowerCase(); - if (ident != "only" && ident != "not"){ - tokenStream.unget(); - ident = null; - } else { - token = tokenStream.token(); - } - } - - this._readWhitespace(); - - if (tokenStream.peek() == Tokens.IDENT){ - type = this._media_type(); - if (token === null){ - token = tokenStream.token(); - } - } else if (tokenStream.peek() == Tokens.LPAREN){ - if (token === null){ - token = tokenStream.LT(1); - } - expressions.push(this._media_expression()); - } - - if (type === null && expressions.length === 0){ - return null; - } else { - this._readWhitespace(); - while (tokenStream.match(Tokens.IDENT)){ - if (tokenStream.token().value.toLowerCase() != "and"){ - this._unexpectedToken(tokenStream.token()); - } - - this._readWhitespace(); - expressions.push(this._media_expression()); - } - } - - return new MediaQuery(ident, type, expressions, token.startLine, token.startCol); - }, - _media_type: function(){ - return this._media_feature(); - }, - _media_expression: function(){ - var tokenStream = this._tokenStream, - feature = null, - token, - expression = null; - - tokenStream.mustMatch(Tokens.LPAREN); - - feature = this._media_feature(); - this._readWhitespace(); - - if (tokenStream.match(Tokens.COLON)){ - this._readWhitespace(); - token = tokenStream.LT(1); - expression = this._expression(); - } - - tokenStream.mustMatch(Tokens.RPAREN); - this._readWhitespace(); - - return new MediaFeature(feature, (expression ? new SyntaxUnit(expression, token.startLine, token.startCol) : null)); - }, - _media_feature: function(){ - var tokenStream = this._tokenStream; - - tokenStream.mustMatch(Tokens.IDENT); - - return SyntaxUnit.fromToken(tokenStream.token()); - }, - _page: function(){ - var tokenStream = this._tokenStream, - line, - col, - identifier = null, - pseudoPage = null; - tokenStream.mustMatch(Tokens.PAGE_SYM); - line = tokenStream.token().startLine; - col = tokenStream.token().startCol; - - this._readWhitespace(); - - if (tokenStream.match(Tokens.IDENT)){ - identifier = tokenStream.token().value; - if (identifier.toLowerCase() === "auto"){ - this._unexpectedToken(tokenStream.token()); - } - } - if (tokenStream.peek() == Tokens.COLON){ - pseudoPage = this._pseudo_page(); - } - - this._readWhitespace(); - - this.fire({ - type: "startpage", - id: identifier, - pseudo: pseudoPage, - line: line, - col: col - }); - - this._readDeclarations(true, true); - - this.fire({ - type: "endpage", - id: identifier, - pseudo: pseudoPage, - line: line, - col: col - }); - - }, - _margin: function(){ - var tokenStream = this._tokenStream, - line, - col, - marginSym = this._margin_sym(); - - if (marginSym){ - line = tokenStream.token().startLine; - col = tokenStream.token().startCol; - - this.fire({ - type: "startpagemargin", - margin: marginSym, - line: line, - col: col - }); - - this._readDeclarations(true); - - this.fire({ - type: "endpagemargin", - margin: marginSym, - line: line, - col: col - }); - return true; - } else { - return false; - } - }, - _margin_sym: function(){ - - var tokenStream = this._tokenStream; - - if(tokenStream.match([Tokens.TOPLEFTCORNER_SYM, Tokens.TOPLEFT_SYM, - Tokens.TOPCENTER_SYM, Tokens.TOPRIGHT_SYM, Tokens.TOPRIGHTCORNER_SYM, - Tokens.BOTTOMLEFTCORNER_SYM, Tokens.BOTTOMLEFT_SYM, - Tokens.BOTTOMCENTER_SYM, Tokens.BOTTOMRIGHT_SYM, - Tokens.BOTTOMRIGHTCORNER_SYM, Tokens.LEFTTOP_SYM, - Tokens.LEFTMIDDLE_SYM, Tokens.LEFTBOTTOM_SYM, Tokens.RIGHTTOP_SYM, - Tokens.RIGHTMIDDLE_SYM, Tokens.RIGHTBOTTOM_SYM])) - { - return SyntaxUnit.fromToken(tokenStream.token()); - } else { - return null; - } - - }, - - _pseudo_page: function(){ - - var tokenStream = this._tokenStream; - - tokenStream.mustMatch(Tokens.COLON); - tokenStream.mustMatch(Tokens.IDENT); - - return tokenStream.token().value; - }, - - _font_face: function(){ - var tokenStream = this._tokenStream, - line, - col; - tokenStream.mustMatch(Tokens.FONT_FACE_SYM); - line = tokenStream.token().startLine; - col = tokenStream.token().startCol; - - this._readWhitespace(); - - this.fire({ - type: "startfontface", - line: line, - col: col - }); - - this._readDeclarations(true); - - this.fire({ - type: "endfontface", - line: line, - col: col - }); - }, - - _viewport: function(){ - var tokenStream = this._tokenStream, - line, - col; - - tokenStream.mustMatch(Tokens.VIEWPORT_SYM); - line = tokenStream.token().startLine; - col = tokenStream.token().startCol; - - this._readWhitespace(); - - this.fire({ - type: "startviewport", - line: line, - col: col - }); - - this._readDeclarations(true); - - this.fire({ - type: "endviewport", - line: line, - col: col - }); - - }, - - _operator: function(inFunction){ - - var tokenStream = this._tokenStream, - token = null; - - if (tokenStream.match([Tokens.SLASH, Tokens.COMMA]) || - (inFunction && tokenStream.match([Tokens.PLUS, Tokens.STAR, Tokens.MINUS]))){ - token = tokenStream.token(); - this._readWhitespace(); - } - return token ? PropertyValuePart.fromToken(token) : null; - - }, - - _combinator: function(){ - - var tokenStream = this._tokenStream, - value = null, - token; - - if(tokenStream.match([Tokens.PLUS, Tokens.GREATER, Tokens.TILDE])){ - token = tokenStream.token(); - value = new Combinator(token.value, token.startLine, token.startCol); - this._readWhitespace(); - } - - return value; - }, - - _unary_operator: function(){ - - var tokenStream = this._tokenStream; - - if (tokenStream.match([Tokens.MINUS, Tokens.PLUS])){ - return tokenStream.token().value; - } else { - return null; - } - }, - - _property: function(){ - - var tokenStream = this._tokenStream, - value = null, - hack = null, - tokenValue, - token, - line, - col; - if (tokenStream.peek() == Tokens.STAR && this.options.starHack){ - tokenStream.get(); - token = tokenStream.token(); - hack = token.value; - line = token.startLine; - col = token.startCol; - } - - if(tokenStream.match(Tokens.IDENT)){ - token = tokenStream.token(); - tokenValue = token.value; - if (tokenValue.charAt(0) == "_" && this.options.underscoreHack){ - hack = "_"; - tokenValue = tokenValue.substring(1); - } - - value = new PropertyName(tokenValue, hack, (line||token.startLine), (col||token.startCol)); - this._readWhitespace(); - } - - return value; - }, - _ruleset: function(){ - - var tokenStream = this._tokenStream, - tt, - selectors; - try { - selectors = this._selectors_group(); - } catch (ex){ - if (ex instanceof SyntaxError && !this.options.strict){ - this.fire({ - type: "error", - error: ex, - message: ex.message, - line: ex.line, - col: ex.col - }); - tt = tokenStream.advance([Tokens.RBRACE]); - if (tt == Tokens.RBRACE){ - } else { - throw ex; - } - - } else { - throw ex; - } - return true; - } - if (selectors){ - - this.fire({ - type: "startrule", - selectors: selectors, - line: selectors[0].line, - col: selectors[0].col - }); - - this._readDeclarations(true); - - this.fire({ - type: "endrule", - selectors: selectors, - line: selectors[0].line, - col: selectors[0].col - }); - - } - - return selectors; - - }, - _selectors_group: function(){ - var tokenStream = this._tokenStream, - selectors = [], - selector; - - selector = this._selector(); - if (selector !== null){ - - selectors.push(selector); - while(tokenStream.match(Tokens.COMMA)){ - this._readWhitespace(); - selector = this._selector(); - if (selector !== null){ - selectors.push(selector); - } else { - this._unexpectedToken(tokenStream.LT(1)); - } - } - } - - return selectors.length ? selectors : null; - }, - _selector: function(){ - - var tokenStream = this._tokenStream, - selector = [], - nextSelector = null, - combinator = null, - ws = null; - nextSelector = this._simple_selector_sequence(); - if (nextSelector === null){ - return null; - } - - selector.push(nextSelector); - - do { - combinator = this._combinator(); - - if (combinator !== null){ - selector.push(combinator); - nextSelector = this._simple_selector_sequence(); - if (nextSelector === null){ - this._unexpectedToken(tokenStream.LT(1)); - } else { - selector.push(nextSelector); - } - } else { - if (this._readWhitespace()){ - ws = new Combinator(tokenStream.token().value, tokenStream.token().startLine, tokenStream.token().startCol); - combinator = this._combinator(); - nextSelector = this._simple_selector_sequence(); - if (nextSelector === null){ - if (combinator !== null){ - this._unexpectedToken(tokenStream.LT(1)); - } - } else { - - if (combinator !== null){ - selector.push(combinator); - } else { - selector.push(ws); - } - - selector.push(nextSelector); - } - } else { - break; - } - - } - } while(true); - - return new Selector(selector, selector[0].line, selector[0].col); - }, - _simple_selector_sequence: function(){ - - var tokenStream = this._tokenStream, - elementName = null, - modifiers = [], - selectorText= "", - components = [ - function(){ - return tokenStream.match(Tokens.HASH) ? - new SelectorSubPart(tokenStream.token().value, "id", tokenStream.token().startLine, tokenStream.token().startCol) : - null; - }, - this._class, - this._attrib, - this._pseudo, - this._negation - ], - i = 0, - len = components.length, - component = null, - found = false, - line, - col; - line = tokenStream.LT(1).startLine; - col = tokenStream.LT(1).startCol; - - elementName = this._type_selector(); - if (!elementName){ - elementName = this._universal(); - } - - if (elementName !== null){ - selectorText += elementName; - } - - while(true){ - if (tokenStream.peek() === Tokens.S){ - break; - } - while(i < len && component === null){ - component = components[i++].call(this); - } - - if (component === null){ - if (selectorText === ""){ - return null; - } else { - break; - } - } else { - i = 0; - modifiers.push(component); - selectorText += component.toString(); - component = null; - } - } - - - return selectorText !== "" ? - new SelectorPart(elementName, modifiers, selectorText, line, col) : - null; - }, - _type_selector: function(){ - - var tokenStream = this._tokenStream, - ns = this._namespace_prefix(), - elementName = this._element_name(); - - if (!elementName){ - if (ns){ - tokenStream.unget(); - if (ns.length > 1){ - tokenStream.unget(); - } - } - - return null; - } else { - if (ns){ - elementName.text = ns + elementName.text; - elementName.col -= ns.length; - } - return elementName; - } - }, - _class: function(){ - - var tokenStream = this._tokenStream, - token; - - if (tokenStream.match(Tokens.DOT)){ - tokenStream.mustMatch(Tokens.IDENT); - token = tokenStream.token(); - return new SelectorSubPart("." + token.value, "class", token.startLine, token.startCol - 1); - } else { - return null; - } - - }, - _element_name: function(){ - - var tokenStream = this._tokenStream, - token; - - if (tokenStream.match(Tokens.IDENT)){ - token = tokenStream.token(); - return new SelectorSubPart(token.value, "elementName", token.startLine, token.startCol); - - } else { - return null; - } - }, - _namespace_prefix: function(){ - var tokenStream = this._tokenStream, - value = ""; - if (tokenStream.LA(1) === Tokens.PIPE || tokenStream.LA(2) === Tokens.PIPE){ - - if(tokenStream.match([Tokens.IDENT, Tokens.STAR])){ - value += tokenStream.token().value; - } - - tokenStream.mustMatch(Tokens.PIPE); - value += "|"; - - } - - return value.length ? value : null; - }, - _universal: function(){ - var tokenStream = this._tokenStream, - value = "", - ns; - - ns = this._namespace_prefix(); - if(ns){ - value += ns; - } - - if(tokenStream.match(Tokens.STAR)){ - value += "*"; - } - - return value.length ? value : null; - - }, - _attrib: function(){ - - var tokenStream = this._tokenStream, - value = null, - ns, - token; - - if (tokenStream.match(Tokens.LBRACKET)){ - token = tokenStream.token(); - value = token.value; - value += this._readWhitespace(); - - ns = this._namespace_prefix(); - - if (ns){ - value += ns; - } - - tokenStream.mustMatch(Tokens.IDENT); - value += tokenStream.token().value; - value += this._readWhitespace(); - - if(tokenStream.match([Tokens.PREFIXMATCH, Tokens.SUFFIXMATCH, Tokens.SUBSTRINGMATCH, - Tokens.EQUALS, Tokens.INCLUDES, Tokens.DASHMATCH])){ - - value += tokenStream.token().value; - value += this._readWhitespace(); - - tokenStream.mustMatch([Tokens.IDENT, Tokens.STRING]); - value += tokenStream.token().value; - value += this._readWhitespace(); - } - - tokenStream.mustMatch(Tokens.RBRACKET); - - return new SelectorSubPart(value + "]", "attribute", token.startLine, token.startCol); - } else { - return null; - } - }, - _pseudo: function(){ - - var tokenStream = this._tokenStream, - pseudo = null, - colons = ":", - line, - col; - - if (tokenStream.match(Tokens.COLON)){ - - if (tokenStream.match(Tokens.COLON)){ - colons += ":"; - } - - if (tokenStream.match(Tokens.IDENT)){ - pseudo = tokenStream.token().value; - line = tokenStream.token().startLine; - col = tokenStream.token().startCol - colons.length; - } else if (tokenStream.peek() == Tokens.FUNCTION){ - line = tokenStream.LT(1).startLine; - col = tokenStream.LT(1).startCol - colons.length; - pseudo = this._functional_pseudo(); - } - - if (pseudo){ - pseudo = new SelectorSubPart(colons + pseudo, "pseudo", line, col); - } - } - - return pseudo; - }, - _functional_pseudo: function(){ - - var tokenStream = this._tokenStream, - value = null; - - if(tokenStream.match(Tokens.FUNCTION)){ - value = tokenStream.token().value; - value += this._readWhitespace(); - value += this._expression(); - tokenStream.mustMatch(Tokens.RPAREN); - value += ")"; - } - - return value; - }, - _expression: function(){ - - var tokenStream = this._tokenStream, - value = ""; - - while(tokenStream.match([Tokens.PLUS, Tokens.MINUS, Tokens.DIMENSION, - Tokens.NUMBER, Tokens.STRING, Tokens.IDENT, Tokens.LENGTH, - Tokens.FREQ, Tokens.ANGLE, Tokens.TIME, - Tokens.RESOLUTION, Tokens.SLASH])){ - - value += tokenStream.token().value; - value += this._readWhitespace(); - } - - return value.length ? value : null; - - }, - _negation: function(){ - - var tokenStream = this._tokenStream, - line, - col, - value = "", - arg, - subpart = null; - - if (tokenStream.match(Tokens.NOT)){ - value = tokenStream.token().value; - line = tokenStream.token().startLine; - col = tokenStream.token().startCol; - value += this._readWhitespace(); - arg = this._negation_arg(); - value += arg; - value += this._readWhitespace(); - tokenStream.match(Tokens.RPAREN); - value += tokenStream.token().value; - - subpart = new SelectorSubPart(value, "not", line, col); - subpart.args.push(arg); - } - - return subpart; - }, - _negation_arg: function(){ - - var tokenStream = this._tokenStream, - args = [ - this._type_selector, - this._universal, - function(){ - return tokenStream.match(Tokens.HASH) ? - new SelectorSubPart(tokenStream.token().value, "id", tokenStream.token().startLine, tokenStream.token().startCol) : - null; - }, - this._class, - this._attrib, - this._pseudo - ], - arg = null, - i = 0, - len = args.length, - elementName, - line, - col, - part; - - line = tokenStream.LT(1).startLine; - col = tokenStream.LT(1).startCol; - - while(i < len && arg === null){ - - arg = args[i].call(this); - i++; - } - if (arg === null){ - this._unexpectedToken(tokenStream.LT(1)); - } - if (arg.type == "elementName"){ - part = new SelectorPart(arg, [], arg.toString(), line, col); - } else { - part = new SelectorPart(null, [arg], arg.toString(), line, col); - } - - return part; - }, - - _declaration: function(){ - - var tokenStream = this._tokenStream, - property = null, - expr = null, - prio = null, - error = null, - invalid = null, - propertyName= ""; - - property = this._property(); - if (property !== null){ - - tokenStream.mustMatch(Tokens.COLON); - this._readWhitespace(); - - expr = this._expr(); - if (!expr || expr.length === 0){ - this._unexpectedToken(tokenStream.LT(1)); - } - - prio = this._prio(); - propertyName = property.toString(); - if (this.options.starHack && property.hack == "*" || - this.options.underscoreHack && property.hack == "_") { - - propertyName = property.text; - } - - try { - this._validateProperty(propertyName, expr); - } catch (ex) { - invalid = ex; - } - - this.fire({ - type: "property", - property: property, - value: expr, - important: prio, - line: property.line, - col: property.col, - invalid: invalid - }); - - return true; - } else { - return false; - } - }, - - _prio: function(){ - - var tokenStream = this._tokenStream, - result = tokenStream.match(Tokens.IMPORTANT_SYM); - - this._readWhitespace(); - return result; - }, - - _expr: function(inFunction){ - - var tokenStream = this._tokenStream, - values = [], - value = null, - operator = null; - - value = this._term(); - if (value !== null){ - - values.push(value); - - do { - operator = this._operator(inFunction); - if (operator){ - values.push(operator); - } /*else { - values.push(new PropertyValue(valueParts, valueParts[0].line, valueParts[0].col)); - valueParts = []; - }*/ - - value = this._term(); - - if (value === null){ - break; - } else { - values.push(value); - } - } while(true); - } - - return values.length > 0 ? new PropertyValue(values, values[0].line, values[0].col) : null; - }, - - _term: function(){ - - var tokenStream = this._tokenStream, - unary = null, - value = null, - token, - line, - col; - unary = this._unary_operator(); - if (unary !== null){ - line = tokenStream.token().startLine; - col = tokenStream.token().startCol; - } - if (tokenStream.peek() == Tokens.IE_FUNCTION && this.options.ieFilters){ - - value = this._ie_function(); - if (unary === null){ - line = tokenStream.token().startLine; - col = tokenStream.token().startCol; - } - } else if (tokenStream.match([Tokens.NUMBER, Tokens.PERCENTAGE, Tokens.LENGTH, - Tokens.ANGLE, Tokens.TIME, - Tokens.FREQ, Tokens.STRING, Tokens.IDENT, Tokens.URI, Tokens.UNICODE_RANGE])){ - - value = tokenStream.token().value; - if (unary === null){ - line = tokenStream.token().startLine; - col = tokenStream.token().startCol; - } - this._readWhitespace(); - } else { - token = this._hexcolor(); - if (token === null){ - if (unary === null){ - line = tokenStream.LT(1).startLine; - col = tokenStream.LT(1).startCol; - } - if (value === null){ - if (tokenStream.LA(3) == Tokens.EQUALS && this.options.ieFilters){ - value = this._ie_function(); - } else { - value = this._function(); - } - } - - } else { - value = token.value; - if (unary === null){ - line = token.startLine; - col = token.startCol; - } - } - - } - - return value !== null ? - new PropertyValuePart(unary !== null ? unary + value : value, line, col) : - null; - - }, - - _function: function(){ - - var tokenStream = this._tokenStream, - functionText = null, - expr = null, - lt; - - if (tokenStream.match(Tokens.FUNCTION)){ - functionText = tokenStream.token().value; - this._readWhitespace(); - expr = this._expr(true); - functionText += expr; - if (this.options.ieFilters && tokenStream.peek() == Tokens.EQUALS){ - do { - - if (this._readWhitespace()){ - functionText += tokenStream.token().value; - } - if (tokenStream.LA(0) == Tokens.COMMA){ - functionText += tokenStream.token().value; - } - - tokenStream.match(Tokens.IDENT); - functionText += tokenStream.token().value; - - tokenStream.match(Tokens.EQUALS); - functionText += tokenStream.token().value; - lt = tokenStream.peek(); - while(lt != Tokens.COMMA && lt != Tokens.S && lt != Tokens.RPAREN){ - tokenStream.get(); - functionText += tokenStream.token().value; - lt = tokenStream.peek(); - } - } while(tokenStream.match([Tokens.COMMA, Tokens.S])); - } - - tokenStream.match(Tokens.RPAREN); - functionText += ")"; - this._readWhitespace(); - } - - return functionText; - }, - - _ie_function: function(){ - - var tokenStream = this._tokenStream, - functionText = null, - expr = null, - lt; - if (tokenStream.match([Tokens.IE_FUNCTION, Tokens.FUNCTION])){ - functionText = tokenStream.token().value; - - do { - - if (this._readWhitespace()){ - functionText += tokenStream.token().value; - } - if (tokenStream.LA(0) == Tokens.COMMA){ - functionText += tokenStream.token().value; - } - - tokenStream.match(Tokens.IDENT); - functionText += tokenStream.token().value; - - tokenStream.match(Tokens.EQUALS); - functionText += tokenStream.token().value; - lt = tokenStream.peek(); - while(lt != Tokens.COMMA && lt != Tokens.S && lt != Tokens.RPAREN){ - tokenStream.get(); - functionText += tokenStream.token().value; - lt = tokenStream.peek(); - } - } while(tokenStream.match([Tokens.COMMA, Tokens.S])); - - tokenStream.match(Tokens.RPAREN); - functionText += ")"; - this._readWhitespace(); - } - - return functionText; - }, - - _hexcolor: function(){ - - var tokenStream = this._tokenStream, - token = null, - color; - - if(tokenStream.match(Tokens.HASH)){ - - token = tokenStream.token(); - color = token.value; - if (!/#[a-f0-9]{3,6}/i.test(color)){ - throw new SyntaxError("Expected a hex color but found '" + color + "' at line " + token.startLine + ", col " + token.startCol + ".", token.startLine, token.startCol); - } - this._readWhitespace(); - } - - return token; - }, - - _keyframes: function(){ - var tokenStream = this._tokenStream, - token, - tt, - name, - prefix = ""; - - tokenStream.mustMatch(Tokens.KEYFRAMES_SYM); - token = tokenStream.token(); - if (/^@\-([^\-]+)\-/.test(token.value)) { - prefix = RegExp.$1; - } - - this._readWhitespace(); - name = this._keyframe_name(); - - this._readWhitespace(); - tokenStream.mustMatch(Tokens.LBRACE); - - this.fire({ - type: "startkeyframes", - name: name, - prefix: prefix, - line: token.startLine, - col: token.startCol - }); - - this._readWhitespace(); - tt = tokenStream.peek(); - while(tt == Tokens.IDENT || tt == Tokens.PERCENTAGE) { - this._keyframe_rule(); - this._readWhitespace(); - tt = tokenStream.peek(); - } - - this.fire({ - type: "endkeyframes", - name: name, - prefix: prefix, - line: token.startLine, - col: token.startCol - }); - - this._readWhitespace(); - tokenStream.mustMatch(Tokens.RBRACE); - - }, - - _keyframe_name: function(){ - var tokenStream = this._tokenStream, - token; - - tokenStream.mustMatch([Tokens.IDENT, Tokens.STRING]); - return SyntaxUnit.fromToken(tokenStream.token()); - }, - - _keyframe_rule: function(){ - var tokenStream = this._tokenStream, - token, - keyList = this._key_list(); - - this.fire({ - type: "startkeyframerule", - keys: keyList, - line: keyList[0].line, - col: keyList[0].col - }); - - this._readDeclarations(true); - - this.fire({ - type: "endkeyframerule", - keys: keyList, - line: keyList[0].line, - col: keyList[0].col - }); - - }, - - _key_list: function(){ - var tokenStream = this._tokenStream, - token, - key, - keyList = []; - keyList.push(this._key()); - - this._readWhitespace(); - - while(tokenStream.match(Tokens.COMMA)){ - this._readWhitespace(); - keyList.push(this._key()); - this._readWhitespace(); - } - - return keyList; - }, - - _key: function(){ - - var tokenStream = this._tokenStream, - token; - - if (tokenStream.match(Tokens.PERCENTAGE)){ - return SyntaxUnit.fromToken(tokenStream.token()); - } else if (tokenStream.match(Tokens.IDENT)){ - token = tokenStream.token(); - - if (/from|to/i.test(token.value)){ - return SyntaxUnit.fromToken(token); - } - - tokenStream.unget(); - } - this._unexpectedToken(tokenStream.LT(1)); - }, - _skipCruft: function(){ - while(this._tokenStream.match([Tokens.S, Tokens.CDO, Tokens.CDC])){ - } - }, - _readDeclarations: function(checkStart, readMargins){ - var tokenStream = this._tokenStream, - tt; - - - this._readWhitespace(); - - if (checkStart){ - tokenStream.mustMatch(Tokens.LBRACE); - } - - this._readWhitespace(); - - try { - - while(true){ - - if (tokenStream.match(Tokens.SEMICOLON) || (readMargins && this._margin())){ - } else if (this._declaration()){ - if (!tokenStream.match(Tokens.SEMICOLON)){ - break; - } - } else { - break; - } - this._readWhitespace(); - } - - tokenStream.mustMatch(Tokens.RBRACE); - this._readWhitespace(); - - } catch (ex) { - if (ex instanceof SyntaxError && !this.options.strict){ - this.fire({ - type: "error", - error: ex, - message: ex.message, - line: ex.line, - col: ex.col - }); - tt = tokenStream.advance([Tokens.SEMICOLON, Tokens.RBRACE]); - if (tt == Tokens.SEMICOLON){ - this._readDeclarations(false, readMargins); - } else if (tt != Tokens.RBRACE){ - throw ex; - } - - } else { - throw ex; - } - } - - }, - _readWhitespace: function(){ - - var tokenStream = this._tokenStream, - ws = ""; - - while(tokenStream.match(Tokens.S)){ - ws += tokenStream.token().value; - } - - return ws; - }, - _unexpectedToken: function(token){ - throw new SyntaxError("Unexpected token '" + token.value + "' at line " + token.startLine + ", col " + token.startCol + ".", token.startLine, token.startCol); - }, - _verifyEnd: function(){ - if (this._tokenStream.LA(1) != Tokens.EOF){ - this._unexpectedToken(this._tokenStream.LT(1)); - } - }, - _validateProperty: function(property, value){ - Validation.validate(property, value); - }, - - parse: function(input){ - this._tokenStream = new TokenStream(input, Tokens); - this._stylesheet(); - }, - - parseStyleSheet: function(input){ - return this.parse(input); - }, - - parseMediaQuery: function(input){ - this._tokenStream = new TokenStream(input, Tokens); - var result = this._media_query(); - this._verifyEnd(); - return result; - }, - parsePropertyValue: function(input){ - - this._tokenStream = new TokenStream(input, Tokens); - this._readWhitespace(); - - var result = this._expr(); - this._readWhitespace(); - this._verifyEnd(); - return result; - }, - parseRule: function(input){ - this._tokenStream = new TokenStream(input, Tokens); - this._readWhitespace(); - - var result = this._ruleset(); - this._readWhitespace(); - this._verifyEnd(); - return result; - }, - parseSelector: function(input){ - - this._tokenStream = new TokenStream(input, Tokens); - this._readWhitespace(); - - var result = this._selector(); - this._readWhitespace(); - this._verifyEnd(); - return result; - }, - parseStyleAttribute: function(input){ - input += "}"; // for error recovery in _readDeclarations() - this._tokenStream = new TokenStream(input, Tokens); - this._readDeclarations(); - } - }; - for (prop in additions){ - if (additions.hasOwnProperty(prop)){ - proto[prop] = additions[prop]; - } - } - - return proto; -}(); -var Properties = { - "alignment-adjust" : "auto | baseline | before-edge | text-before-edge | middle | central | after-edge | text-after-edge | ideographic | alphabetic | hanging | mathematical | | ", - "alignment-baseline" : "baseline | use-script | before-edge | text-before-edge | after-edge | text-after-edge | central | middle | ideographic | alphabetic | hanging | mathematical", - "animation" : 1, - "animation-delay" : { multi: "
- -
-
- Réalisationrealisation - - - - -
-
-
- Cliquer sur un noeud pour voir l'état de sa réalisation - Click on a node to see the state of its realisation -
-