{ "version": 3, "sources": [ "node_modules/browserify/node_modules/browser-pack/_prelude.js", "src/entry.js", "lib/deparam.js", "lib/grammar/_tokenizer-table.js", "lib/grammar/tokenizer.js", "lib/trie.js", "node_modules/codemirror/addon/display/fullscreen.js", "node_modules/codemirror/addon/edit/matchbrackets.js", "node_modules/codemirror/addon/fold/brace-fold.js", "node_modules/codemirror/addon/fold/foldcode.js", "node_modules/codemirror/addon/fold/foldgutter.js", "node_modules/codemirror/addon/fold/xml-fold.js", "node_modules/codemirror/addon/hint/show-hint.js", "node_modules/codemirror/addon/runmode/runmode.js", "node_modules/codemirror/addon/search/searchcursor.js", "node_modules/yasgui-utils/node_modules/store/store.js", "node_modules/yasgui-utils/package.json", "node_modules/yasgui-utils/src/main.js", "node_modules/yasgui-utils/src/storage.js", "node_modules/yasgui-utils/src/svg.js", "package.json", "src/autocompleters/autocompleterBase.js", "src/autocompleters/classes.js", "src/autocompleters/prefixes.js", "src/autocompleters/properties.js", "src/autocompleters/utils.js", "src/autocompleters/variables.js", "src/curl.js", "src/defaults.js", "src/imgs.js", "src/main.js", "src/prefixFold.js", "src/prefixUtils.js", "src/sparql.js", "src/tokenUtils.js", "src/tooltip.js", "src/utils.js" ], "names": [], "mappings": "AAAA;ACAA;AACA;AACA;AACA;;ACHA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACjGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC1yHA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACnjBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AClRA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACzCA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACxHA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACzGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACrJA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACxIA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACtLA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACrYA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACxEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC7LA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC/KA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC/BA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACnBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC1DA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC3BA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC9EA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACpSA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AChDA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AChIA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACpDA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC9HA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACtDA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC9BA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC1KA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACVA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACpyBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AChIA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACxIA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACxJA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACzEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AClCA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA", "file": "generated.js", "sourceRoot": "", "sourcesContent": [ "(function e(t,n,r){function s(o,u){if(!n[o]){if(!t[o]){var a=typeof require==\"function\"&&require;if(!u&&a)return a(o,!0);if(i)return i(o,!0);var f=new Error(\"Cannot find module '\"+o+\"'\");throw f.code=\"MODULE_NOT_FOUND\",f}var l=n[o]={exports:{}};t[o][0].call(l.exports,function(e){var n=t[o][1][e];return s(n?n:e)},l,l.exports,e,t,n,r)}return n[o].exports}var i=typeof require==\"function\"&&require;for(var o=0;o\": [], \n \"<=\": [], \n \">=\": [], \n \"IN\": [], \n \"NOT\": [], \n \"+\": [], \n \"-\": [], \n \"INTEGER_POSITIVE\": [], \n \"DECIMAL_POSITIVE\": [], \n \"DOUBLE_POSITIVE\": [], \n \"INTEGER_NEGATIVE\": [], \n \"DECIMAL_NEGATIVE\": [], \n \"DOUBLE_NEGATIVE\": [], \n \";\": []}, \n \"*or([[+,multiplicativeExpression],[-,multiplicativeExpression],[or([numericLiteralPositive,numericLiteralNegative]),?or([[*,unaryExpression],[/,unaryExpression]])]])\" : {\n \"+\": [\"or([[+,multiplicativeExpression],[-,multiplicativeExpression],[or([numericLiteralPositive,numericLiteralNegative]),?or([[*,unaryExpression],[/,unaryExpression]])]])\",\"*or([[+,multiplicativeExpression],[-,multiplicativeExpression],[or([numericLiteralPositive,numericLiteralNegative]),?or([[*,unaryExpression],[/,unaryExpression]])]])\"], \n \"-\": [\"or([[+,multiplicativeExpression],[-,multiplicativeExpression],[or([numericLiteralPositive,numericLiteralNegative]),?or([[*,unaryExpression],[/,unaryExpression]])]])\",\"*or([[+,multiplicativeExpression],[-,multiplicativeExpression],[or([numericLiteralPositive,numericLiteralNegative]),?or([[*,unaryExpression],[/,unaryExpression]])]])\"], \n \"INTEGER_POSITIVE\": [\"or([[+,multiplicativeExpression],[-,multiplicativeExpression],[or([numericLiteralPositive,numericLiteralNegative]),?or([[*,unaryExpression],[/,unaryExpression]])]])\",\"*or([[+,multiplicativeExpression],[-,multiplicativeExpression],[or([numericLiteralPositive,numericLiteralNegative]),?or([[*,unaryExpression],[/,unaryExpression]])]])\"], \n \"DECIMAL_POSITIVE\": [\"or([[+,multiplicativeExpression],[-,multiplicativeExpression],[or([numericLiteralPositive,numericLiteralNegative]),?or([[*,unaryExpression],[/,unaryExpression]])]])\",\"*or([[+,multiplicativeExpression],[-,multiplicativeExpression],[or([numericLiteralPositive,numericLiteralNegative]),?or([[*,unaryExpression],[/,unaryExpression]])]])\"], \n \"DOUBLE_POSITIVE\": [\"or([[+,multiplicativeExpression],[-,multiplicativeExpression],[or([numericLiteralPositive,numericLiteralNegative]),?or([[*,unaryExpression],[/,unaryExpression]])]])\",\"*or([[+,multiplicativeExpression],[-,multiplicativeExpression],[or([numericLiteralPositive,numericLiteralNegative]),?or([[*,unaryExpression],[/,unaryExpression]])]])\"], \n \"INTEGER_NEGATIVE\": [\"or([[+,multiplicativeExpression],[-,multiplicativeExpression],[or([numericLiteralPositive,numericLiteralNegative]),?or([[*,unaryExpression],[/,unaryExpression]])]])\",\"*or([[+,multiplicativeExpression],[-,multiplicativeExpression],[or([numericLiteralPositive,numericLiteralNegative]),?or([[*,unaryExpression],[/,unaryExpression]])]])\"], \n \"DECIMAL_NEGATIVE\": [\"or([[+,multiplicativeExpression],[-,multiplicativeExpression],[or([numericLiteralPositive,numericLiteralNegative]),?or([[*,unaryExpression],[/,unaryExpression]])]])\",\"*or([[+,multiplicativeExpression],[-,multiplicativeExpression],[or([numericLiteralPositive,numericLiteralNegative]),?or([[*,unaryExpression],[/,unaryExpression]])]])\"], \n \"DOUBLE_NEGATIVE\": [\"or([[+,multiplicativeExpression],[-,multiplicativeExpression],[or([numericLiteralPositive,numericLiteralNegative]),?or([[*,unaryExpression],[/,unaryExpression]])]])\",\"*or([[+,multiplicativeExpression],[-,multiplicativeExpression],[or([numericLiteralPositive,numericLiteralNegative]),?or([[*,unaryExpression],[/,unaryExpression]])]])\"], \n \"AS\": [], \n \")\": [], \n \",\": [], \n \"||\": [], \n \"&&\": [], \n \"=\": [], \n \"!=\": [], \n \"<\": [], \n \">\": [], \n \"<=\": [], \n \">=\": [], \n \"IN\": [], \n \"NOT\": [], \n \";\": []}, \n \"*or([baseDecl,prefixDecl])\" : {\n \"BASE\": [\"or([baseDecl,prefixDecl])\",\"*or([baseDecl,prefixDecl])\"], \n \"PREFIX\": [\"or([baseDecl,prefixDecl])\",\"*or([baseDecl,prefixDecl])\"], \n \"$\": [], \n \"CONSTRUCT\": [], \n \"DESCRIBE\": [], \n \"ASK\": [], \n \"INSERT\": [], \n \"DELETE\": [], \n \"SELECT\": [], \n \"LOAD\": [], \n \"CLEAR\": [], \n \"DROP\": [], \n \"ADD\": [], \n \"MOVE\": [], \n \"COPY\": [], \n \"CREATE\": [], \n \"WITH\": []}, \n \"*or([var,[ (,expression,AS,var,)]])\" : {\n \"(\": [\"or([var,[ (,expression,AS,var,)]])\",\"*or([var,[ (,expression,AS,var,)]])\"], \n \"VAR1\": [\"or([var,[ (,expression,AS,var,)]])\",\"*or([var,[ (,expression,AS,var,)]])\"], \n \"VAR2\": [\"or([var,[ (,expression,AS,var,)]])\",\"*or([var,[ (,expression,AS,var,)]])\"], \n \"WHERE\": [], \n \"{\": [], \n \"FROM\": []}, \n \"*orderCondition\" : {\n \"ASC\": [\"orderCondition\",\"*orderCondition\"], \n \"DESC\": [\"orderCondition\",\"*orderCondition\"], \n \"VAR1\": [\"orderCondition\",\"*orderCondition\"], \n \"VAR2\": [\"orderCondition\",\"*orderCondition\"], \n \"(\": [\"orderCondition\",\"*orderCondition\"], \n \"STR\": [\"orderCondition\",\"*orderCondition\"], \n \"LANG\": [\"orderCondition\",\"*orderCondition\"], \n \"LANGMATCHES\": [\"orderCondition\",\"*orderCondition\"], \n \"DATATYPE\": [\"orderCondition\",\"*orderCondition\"], \n \"BOUND\": [\"orderCondition\",\"*orderCondition\"], \n \"IRI\": [\"orderCondition\",\"*orderCondition\"], \n \"URI\": [\"orderCondition\",\"*orderCondition\"], \n \"BNODE\": [\"orderCondition\",\"*orderCondition\"], \n \"RAND\": [\"orderCondition\",\"*orderCondition\"], \n \"ABS\": [\"orderCondition\",\"*orderCondition\"], \n \"CEIL\": [\"orderCondition\",\"*orderCondition\"], \n \"FLOOR\": [\"orderCondition\",\"*orderCondition\"], \n \"ROUND\": [\"orderCondition\",\"*orderCondition\"], \n \"CONCAT\": [\"orderCondition\",\"*orderCondition\"], \n \"STRLEN\": [\"orderCondition\",\"*orderCondition\"], \n \"UCASE\": [\"orderCondition\",\"*orderCondition\"], \n \"LCASE\": [\"orderCondition\",\"*orderCondition\"], \n \"ENCODE_FOR_URI\": [\"orderCondition\",\"*orderCondition\"], \n \"CONTAINS\": [\"orderCondition\",\"*orderCondition\"], \n \"STRSTARTS\": [\"orderCondition\",\"*orderCondition\"], \n \"STRENDS\": [\"orderCondition\",\"*orderCondition\"], \n \"STRBEFORE\": [\"orderCondition\",\"*orderCondition\"], \n \"STRAFTER\": [\"orderCondition\",\"*orderCondition\"], \n \"YEAR\": [\"orderCondition\",\"*orderCondition\"], \n \"MONTH\": [\"orderCondition\",\"*orderCondition\"], \n \"DAY\": [\"orderCondition\",\"*orderCondition\"], \n \"HOURS\": [\"orderCondition\",\"*orderCondition\"], \n \"MINUTES\": [\"orderCondition\",\"*orderCondition\"], \n \"SECONDS\": [\"orderCondition\",\"*orderCondition\"], \n \"TIMEZONE\": [\"orderCondition\",\"*orderCondition\"], \n \"TZ\": [\"orderCondition\",\"*orderCondition\"], \n \"NOW\": [\"orderCondition\",\"*orderCondition\"], \n \"UUID\": [\"orderCondition\",\"*orderCondition\"], \n \"STRUUID\": [\"orderCondition\",\"*orderCondition\"], \n \"MD5\": [\"orderCondition\",\"*orderCondition\"], \n \"SHA1\": [\"orderCondition\",\"*orderCondition\"], \n \"SHA256\": [\"orderCondition\",\"*orderCondition\"], \n \"SHA384\": [\"orderCondition\",\"*orderCondition\"], \n \"SHA512\": [\"orderCondition\",\"*orderCondition\"], \n \"COALESCE\": [\"orderCondition\",\"*orderCondition\"], \n \"IF\": [\"orderCondition\",\"*orderCondition\"], \n \"STRLANG\": [\"orderCondition\",\"*orderCondition\"], \n \"STRDT\": [\"orderCondition\",\"*orderCondition\"], \n \"SAMETERM\": [\"orderCondition\",\"*orderCondition\"], \n \"ISIRI\": [\"orderCondition\",\"*orderCondition\"], \n \"ISURI\": [\"orderCondition\",\"*orderCondition\"], \n \"ISBLANK\": [\"orderCondition\",\"*orderCondition\"], \n \"ISLITERAL\": [\"orderCondition\",\"*orderCondition\"], \n \"ISNUMERIC\": [\"orderCondition\",\"*orderCondition\"], \n \"SUBSTR\": [\"orderCondition\",\"*orderCondition\"], \n \"REPLACE\": [\"orderCondition\",\"*orderCondition\"], \n \"REGEX\": [\"orderCondition\",\"*orderCondition\"], \n \"EXISTS\": [\"orderCondition\",\"*orderCondition\"], \n \"NOT\": [\"orderCondition\",\"*orderCondition\"], \n \"IRI_REF\": [\"orderCondition\",\"*orderCondition\"], \n \"PNAME_LN\": [\"orderCondition\",\"*orderCondition\"], \n \"PNAME_NS\": [\"orderCondition\",\"*orderCondition\"], \n \"VALUES\": [], \n \"LIMIT\": [], \n \"OFFSET\": [], \n \"$\": [], \n \"}\": []}, \n \"*usingClause\" : {\n \"USING\": [\"usingClause\",\"*usingClause\"], \n \"WHERE\": []}, \n \"*var\" : {\n \"VAR1\": [\"var\",\"*var\"], \n \"VAR2\": [\"var\",\"*var\"], \n \")\": []}, \n \"*varOrIRIref\" : {\n \"VAR1\": [\"varOrIRIref\",\"*varOrIRIref\"], \n \"VAR2\": [\"varOrIRIref\",\"*varOrIRIref\"], \n \"IRI_REF\": [\"varOrIRIref\",\"*varOrIRIref\"], \n \"PNAME_LN\": [\"varOrIRIref\",\"*varOrIRIref\"], \n \"PNAME_NS\": [\"varOrIRIref\",\"*varOrIRIref\"], \n \"ORDER\": [], \n \"HAVING\": [], \n \"GROUP\": [], \n \"LIMIT\": [], \n \"OFFSET\": [], \n \"WHERE\": [], \n \"{\": [], \n \"FROM\": [], \n \"VALUES\": [], \n \"$\": []}, \n \"+graphNode\" : {\n \"(\": [\"graphNode\",\"*graphNode\"], \n \"[\": [\"graphNode\",\"*graphNode\"], \n \"VAR1\": [\"graphNode\",\"*graphNode\"], \n \"VAR2\": [\"graphNode\",\"*graphNode\"], \n \"NIL\": [\"graphNode\",\"*graphNode\"], \n \"IRI_REF\": [\"graphNode\",\"*graphNode\"], \n \"TRUE\": [\"graphNode\",\"*graphNode\"], \n \"FALSE\": [\"graphNode\",\"*graphNode\"], \n \"BLANK_NODE_LABEL\": [\"graphNode\",\"*graphNode\"], \n \"ANON\": [\"graphNode\",\"*graphNode\"], \n \"PNAME_LN\": [\"graphNode\",\"*graphNode\"], \n \"PNAME_NS\": [\"graphNode\",\"*graphNode\"], \n \"STRING_LITERAL1\": [\"graphNode\",\"*graphNode\"], \n \"STRING_LITERAL2\": [\"graphNode\",\"*graphNode\"], \n \"STRING_LITERAL_LONG1\": [\"graphNode\",\"*graphNode\"], \n \"STRING_LITERAL_LONG2\": [\"graphNode\",\"*graphNode\"], \n \"INTEGER\": [\"graphNode\",\"*graphNode\"], \n \"DECIMAL\": [\"graphNode\",\"*graphNode\"], \n \"DOUBLE\": [\"graphNode\",\"*graphNode\"], \n \"INTEGER_POSITIVE\": [\"graphNode\",\"*graphNode\"], \n \"DECIMAL_POSITIVE\": [\"graphNode\",\"*graphNode\"], \n \"DOUBLE_POSITIVE\": [\"graphNode\",\"*graphNode\"], \n \"INTEGER_NEGATIVE\": [\"graphNode\",\"*graphNode\"], \n \"DECIMAL_NEGATIVE\": [\"graphNode\",\"*graphNode\"], \n \"DOUBLE_NEGATIVE\": [\"graphNode\",\"*graphNode\"]}, \n \"+graphNodePath\" : {\n \"(\": [\"graphNodePath\",\"*graphNodePath\"], \n \"[\": [\"graphNodePath\",\"*graphNodePath\"], \n \"VAR1\": [\"graphNodePath\",\"*graphNodePath\"], \n \"VAR2\": [\"graphNodePath\",\"*graphNodePath\"], \n \"NIL\": [\"graphNodePath\",\"*graphNodePath\"], \n \"IRI_REF\": [\"graphNodePath\",\"*graphNodePath\"], \n \"TRUE\": [\"graphNodePath\",\"*graphNodePath\"], \n \"FALSE\": [\"graphNodePath\",\"*graphNodePath\"], \n \"BLANK_NODE_LABEL\": [\"graphNodePath\",\"*graphNodePath\"], \n \"ANON\": [\"graphNodePath\",\"*graphNodePath\"], \n \"PNAME_LN\": [\"graphNodePath\",\"*graphNodePath\"], \n \"PNAME_NS\": [\"graphNodePath\",\"*graphNodePath\"], \n \"STRING_LITERAL1\": [\"graphNodePath\",\"*graphNodePath\"], \n \"STRING_LITERAL2\": [\"graphNodePath\",\"*graphNodePath\"], \n \"STRING_LITERAL_LONG1\": [\"graphNodePath\",\"*graphNodePath\"], \n \"STRING_LITERAL_LONG2\": [\"graphNodePath\",\"*graphNodePath\"], \n \"INTEGER\": [\"graphNodePath\",\"*graphNodePath\"], \n \"DECIMAL\": [\"graphNodePath\",\"*graphNodePath\"], \n \"DOUBLE\": [\"graphNodePath\",\"*graphNodePath\"], \n \"INTEGER_POSITIVE\": [\"graphNodePath\",\"*graphNodePath\"], \n \"DECIMAL_POSITIVE\": [\"graphNodePath\",\"*graphNodePath\"], \n \"DOUBLE_POSITIVE\": [\"graphNodePath\",\"*graphNodePath\"], \n \"INTEGER_NEGATIVE\": [\"graphNodePath\",\"*graphNodePath\"], \n \"DECIMAL_NEGATIVE\": [\"graphNodePath\",\"*graphNodePath\"], \n \"DOUBLE_NEGATIVE\": [\"graphNodePath\",\"*graphNodePath\"]}, \n \"+groupCondition\" : {\n \"(\": [\"groupCondition\",\"*groupCondition\"], \n \"STR\": [\"groupCondition\",\"*groupCondition\"], \n \"LANG\": [\"groupCondition\",\"*groupCondition\"], \n \"LANGMATCHES\": [\"groupCondition\",\"*groupCondition\"], \n \"DATATYPE\": [\"groupCondition\",\"*groupCondition\"], \n \"BOUND\": [\"groupCondition\",\"*groupCondition\"], \n \"IRI\": [\"groupCondition\",\"*groupCondition\"], \n \"URI\": [\"groupCondition\",\"*groupCondition\"], \n \"BNODE\": [\"groupCondition\",\"*groupCondition\"], \n \"RAND\": [\"groupCondition\",\"*groupCondition\"], \n \"ABS\": [\"groupCondition\",\"*groupCondition\"], \n \"CEIL\": [\"groupCondition\",\"*groupCondition\"], \n \"FLOOR\": [\"groupCondition\",\"*groupCondition\"], \n \"ROUND\": [\"groupCondition\",\"*groupCondition\"], \n \"CONCAT\": [\"groupCondition\",\"*groupCondition\"], \n \"STRLEN\": [\"groupCondition\",\"*groupCondition\"], \n \"UCASE\": [\"groupCondition\",\"*groupCondition\"], \n \"LCASE\": [\"groupCondition\",\"*groupCondition\"], \n \"ENCODE_FOR_URI\": [\"groupCondition\",\"*groupCondition\"], \n \"CONTAINS\": [\"groupCondition\",\"*groupCondition\"], \n \"STRSTARTS\": [\"groupCondition\",\"*groupCondition\"], \n \"STRENDS\": [\"groupCondition\",\"*groupCondition\"], \n \"STRBEFORE\": [\"groupCondition\",\"*groupCondition\"], \n \"STRAFTER\": [\"groupCondition\",\"*groupCondition\"], \n \"YEAR\": [\"groupCondition\",\"*groupCondition\"], \n \"MONTH\": [\"groupCondition\",\"*groupCondition\"], \n \"DAY\": [\"groupCondition\",\"*groupCondition\"], \n \"HOURS\": [\"groupCondition\",\"*groupCondition\"], \n \"MINUTES\": [\"groupCondition\",\"*groupCondition\"], \n \"SECONDS\": [\"groupCondition\",\"*groupCondition\"], \n \"TIMEZONE\": [\"groupCondition\",\"*groupCondition\"], \n \"TZ\": [\"groupCondition\",\"*groupCondition\"], \n \"NOW\": [\"groupCondition\",\"*groupCondition\"], \n \"UUID\": [\"groupCondition\",\"*groupCondition\"], \n \"STRUUID\": [\"groupCondition\",\"*groupCondition\"], \n \"MD5\": [\"groupCondition\",\"*groupCondition\"], \n \"SHA1\": [\"groupCondition\",\"*groupCondition\"], \n \"SHA256\": [\"groupCondition\",\"*groupCondition\"], \n \"SHA384\": [\"groupCondition\",\"*groupCondition\"], \n \"SHA512\": [\"groupCondition\",\"*groupCondition\"], \n \"COALESCE\": [\"groupCondition\",\"*groupCondition\"], \n \"IF\": [\"groupCondition\",\"*groupCondition\"], \n \"STRLANG\": [\"groupCondition\",\"*groupCondition\"], \n \"STRDT\": [\"groupCondition\",\"*groupCondition\"], \n \"SAMETERM\": [\"groupCondition\",\"*groupCondition\"], \n \"ISIRI\": [\"groupCondition\",\"*groupCondition\"], \n \"ISURI\": [\"groupCondition\",\"*groupCondition\"], \n \"ISBLANK\": [\"groupCondition\",\"*groupCondition\"], \n \"ISLITERAL\": [\"groupCondition\",\"*groupCondition\"], \n \"ISNUMERIC\": [\"groupCondition\",\"*groupCondition\"], \n \"VAR1\": [\"groupCondition\",\"*groupCondition\"], \n \"VAR2\": [\"groupCondition\",\"*groupCondition\"], \n \"SUBSTR\": [\"groupCondition\",\"*groupCondition\"], \n \"REPLACE\": [\"groupCondition\",\"*groupCondition\"], \n \"REGEX\": [\"groupCondition\",\"*groupCondition\"], \n \"EXISTS\": [\"groupCondition\",\"*groupCondition\"], \n \"NOT\": [\"groupCondition\",\"*groupCondition\"], \n \"IRI_REF\": [\"groupCondition\",\"*groupCondition\"], \n \"PNAME_LN\": [\"groupCondition\",\"*groupCondition\"], \n \"PNAME_NS\": [\"groupCondition\",\"*groupCondition\"]}, \n \"+havingCondition\" : {\n \"(\": [\"havingCondition\",\"*havingCondition\"], \n \"STR\": [\"havingCondition\",\"*havingCondition\"], \n \"LANG\": [\"havingCondition\",\"*havingCondition\"], \n \"LANGMATCHES\": [\"havingCondition\",\"*havingCondition\"], \n \"DATATYPE\": [\"havingCondition\",\"*havingCondition\"], \n \"BOUND\": [\"havingCondition\",\"*havingCondition\"], \n \"IRI\": [\"havingCondition\",\"*havingCondition\"], \n \"URI\": [\"havingCondition\",\"*havingCondition\"], \n \"BNODE\": [\"havingCondition\",\"*havingCondition\"], \n \"RAND\": [\"havingCondition\",\"*havingCondition\"], \n \"ABS\": [\"havingCondition\",\"*havingCondition\"], \n \"CEIL\": [\"havingCondition\",\"*havingCondition\"], \n \"FLOOR\": [\"havingCondition\",\"*havingCondition\"], \n \"ROUND\": [\"havingCondition\",\"*havingCondition\"], \n \"CONCAT\": [\"havingCondition\",\"*havingCondition\"], \n \"STRLEN\": [\"havingCondition\",\"*havingCondition\"], \n \"UCASE\": [\"havingCondition\",\"*havingCondition\"], \n \"LCASE\": [\"havingCondition\",\"*havingCondition\"], \n \"ENCODE_FOR_URI\": [\"havingCondition\",\"*havingCondition\"], \n \"CONTAINS\": [\"havingCondition\",\"*havingCondition\"], \n \"STRSTARTS\": [\"havingCondition\",\"*havingCondition\"], \n \"STRENDS\": [\"havingCondition\",\"*havingCondition\"], \n \"STRBEFORE\": [\"havingCondition\",\"*havingCondition\"], \n \"STRAFTER\": [\"havingCondition\",\"*havingCondition\"], \n \"YEAR\": [\"havingCondition\",\"*havingCondition\"], \n \"MONTH\": [\"havingCondition\",\"*havingCondition\"], \n \"DAY\": [\"havingCondition\",\"*havingCondition\"], \n \"HOURS\": [\"havingCondition\",\"*havingCondition\"], \n \"MINUTES\": [\"havingCondition\",\"*havingCondition\"], \n \"SECONDS\": [\"havingCondition\",\"*havingCondition\"], \n \"TIMEZONE\": [\"havingCondition\",\"*havingCondition\"], \n \"TZ\": [\"havingCondition\",\"*havingCondition\"], \n \"NOW\": [\"havingCondition\",\"*havingCondition\"], \n \"UUID\": [\"havingCondition\",\"*havingCondition\"], \n \"STRUUID\": [\"havingCondition\",\"*havingCondition\"], \n \"MD5\": [\"havingCondition\",\"*havingCondition\"], \n \"SHA1\": [\"havingCondition\",\"*havingCondition\"], \n \"SHA256\": [\"havingCondition\",\"*havingCondition\"], \n \"SHA384\": [\"havingCondition\",\"*havingCondition\"], \n \"SHA512\": [\"havingCondition\",\"*havingCondition\"], \n \"COALESCE\": [\"havingCondition\",\"*havingCondition\"], \n \"IF\": [\"havingCondition\",\"*havingCondition\"], \n \"STRLANG\": [\"havingCondition\",\"*havingCondition\"], \n \"STRDT\": [\"havingCondition\",\"*havingCondition\"], \n \"SAMETERM\": [\"havingCondition\",\"*havingCondition\"], \n \"ISIRI\": [\"havingCondition\",\"*havingCondition\"], \n \"ISURI\": [\"havingCondition\",\"*havingCondition\"], \n \"ISBLANK\": [\"havingCondition\",\"*havingCondition\"], \n \"ISLITERAL\": [\"havingCondition\",\"*havingCondition\"], \n \"ISNUMERIC\": [\"havingCondition\",\"*havingCondition\"], \n \"SUBSTR\": [\"havingCondition\",\"*havingCondition\"], \n \"REPLACE\": [\"havingCondition\",\"*havingCondition\"], \n \"REGEX\": [\"havingCondition\",\"*havingCondition\"], \n \"EXISTS\": [\"havingCondition\",\"*havingCondition\"], \n \"NOT\": [\"havingCondition\",\"*havingCondition\"], \n \"IRI_REF\": [\"havingCondition\",\"*havingCondition\"], \n \"PNAME_LN\": [\"havingCondition\",\"*havingCondition\"], \n \"PNAME_NS\": [\"havingCondition\",\"*havingCondition\"]}, \n \"+or([var,[ (,expression,AS,var,)]])\" : {\n \"(\": [\"or([var,[ (,expression,AS,var,)]])\",\"*or([var,[ (,expression,AS,var,)]])\"], \n \"VAR1\": [\"or([var,[ (,expression,AS,var,)]])\",\"*or([var,[ (,expression,AS,var,)]])\"], \n \"VAR2\": [\"or([var,[ (,expression,AS,var,)]])\",\"*or([var,[ (,expression,AS,var,)]])\"]}, \n \"+orderCondition\" : {\n \"ASC\": [\"orderCondition\",\"*orderCondition\"], \n \"DESC\": [\"orderCondition\",\"*orderCondition\"], \n \"VAR1\": [\"orderCondition\",\"*orderCondition\"], \n \"VAR2\": [\"orderCondition\",\"*orderCondition\"], \n \"(\": [\"orderCondition\",\"*orderCondition\"], \n \"STR\": [\"orderCondition\",\"*orderCondition\"], \n \"LANG\": [\"orderCondition\",\"*orderCondition\"], \n \"LANGMATCHES\": [\"orderCondition\",\"*orderCondition\"], \n \"DATATYPE\": [\"orderCondition\",\"*orderCondition\"], \n \"BOUND\": [\"orderCondition\",\"*orderCondition\"], \n \"IRI\": [\"orderCondition\",\"*orderCondition\"], \n \"URI\": [\"orderCondition\",\"*orderCondition\"], \n \"BNODE\": [\"orderCondition\",\"*orderCondition\"], \n \"RAND\": [\"orderCondition\",\"*orderCondition\"], \n \"ABS\": [\"orderCondition\",\"*orderCondition\"], \n \"CEIL\": [\"orderCondition\",\"*orderCondition\"], \n \"FLOOR\": [\"orderCondition\",\"*orderCondition\"], \n \"ROUND\": [\"orderCondition\",\"*orderCondition\"], \n \"CONCAT\": [\"orderCondition\",\"*orderCondition\"], \n \"STRLEN\": [\"orderCondition\",\"*orderCondition\"], \n \"UCASE\": [\"orderCondition\",\"*orderCondition\"], \n \"LCASE\": [\"orderCondition\",\"*orderCondition\"], \n \"ENCODE_FOR_URI\": [\"orderCondition\",\"*orderCondition\"], \n \"CONTAINS\": [\"orderCondition\",\"*orderCondition\"], \n \"STRSTARTS\": [\"orderCondition\",\"*orderCondition\"], \n \"STRENDS\": [\"orderCondition\",\"*orderCondition\"], \n \"STRBEFORE\": [\"orderCondition\",\"*orderCondition\"], \n \"STRAFTER\": [\"orderCondition\",\"*orderCondition\"], \n \"YEAR\": [\"orderCondition\",\"*orderCondition\"], \n \"MONTH\": [\"orderCondition\",\"*orderCondition\"], \n \"DAY\": [\"orderCondition\",\"*orderCondition\"], \n \"HOURS\": [\"orderCondition\",\"*orderCondition\"], \n \"MINUTES\": [\"orderCondition\",\"*orderCondition\"], \n \"SECONDS\": [\"orderCondition\",\"*orderCondition\"], \n \"TIMEZONE\": [\"orderCondition\",\"*orderCondition\"], \n \"TZ\": [\"orderCondition\",\"*orderCondition\"], \n \"NOW\": [\"orderCondition\",\"*orderCondition\"], \n \"UUID\": [\"orderCondition\",\"*orderCondition\"], \n \"STRUUID\": [\"orderCondition\",\"*orderCondition\"], \n \"MD5\": [\"orderCondition\",\"*orderCondition\"], \n \"SHA1\": [\"orderCondition\",\"*orderCondition\"], \n \"SHA256\": [\"orderCondition\",\"*orderCondition\"], \n \"SHA384\": [\"orderCondition\",\"*orderCondition\"], \n \"SHA512\": [\"orderCondition\",\"*orderCondition\"], \n \"COALESCE\": [\"orderCondition\",\"*orderCondition\"], \n \"IF\": [\"orderCondition\",\"*orderCondition\"], \n \"STRLANG\": [\"orderCondition\",\"*orderCondition\"], \n \"STRDT\": [\"orderCondition\",\"*orderCondition\"], \n \"SAMETERM\": [\"orderCondition\",\"*orderCondition\"], \n \"ISIRI\": [\"orderCondition\",\"*orderCondition\"], \n \"ISURI\": [\"orderCondition\",\"*orderCondition\"], \n \"ISBLANK\": [\"orderCondition\",\"*orderCondition\"], \n \"ISLITERAL\": [\"orderCondition\",\"*orderCondition\"], \n \"ISNUMERIC\": [\"orderCondition\",\"*orderCondition\"], \n \"SUBSTR\": [\"orderCondition\",\"*orderCondition\"], \n \"REPLACE\": [\"orderCondition\",\"*orderCondition\"], \n \"REGEX\": [\"orderCondition\",\"*orderCondition\"], \n \"EXISTS\": [\"orderCondition\",\"*orderCondition\"], \n \"NOT\": [\"orderCondition\",\"*orderCondition\"], \n \"IRI_REF\": [\"orderCondition\",\"*orderCondition\"], \n \"PNAME_LN\": [\"orderCondition\",\"*orderCondition\"], \n \"PNAME_NS\": [\"orderCondition\",\"*orderCondition\"]}, \n \"+varOrIRIref\" : {\n \"VAR1\": [\"varOrIRIref\",\"*varOrIRIref\"], \n \"VAR2\": [\"varOrIRIref\",\"*varOrIRIref\"], \n \"IRI_REF\": [\"varOrIRIref\",\"*varOrIRIref\"], \n \"PNAME_LN\": [\"varOrIRIref\",\"*varOrIRIref\"], \n \"PNAME_NS\": [\"varOrIRIref\",\"*varOrIRIref\"]}, \n \"?.\" : {\n \".\": [\".\"], \n \"VAR1\": [], \n \"VAR2\": [], \n \"NIL\": [], \n \"(\": [], \n \"[\": [], \n \"IRI_REF\": [], \n \"TRUE\": [], \n \"FALSE\": [], \n \"BLANK_NODE_LABEL\": [], \n \"ANON\": [], \n \"PNAME_LN\": [], \n \"PNAME_NS\": [], \n \"STRING_LITERAL1\": [], \n \"STRING_LITERAL2\": [], \n \"STRING_LITERAL_LONG1\": [], \n \"STRING_LITERAL_LONG2\": [], \n \"INTEGER\": [], \n \"DECIMAL\": [], \n \"DOUBLE\": [], \n \"INTEGER_POSITIVE\": [], \n \"DECIMAL_POSITIVE\": [], \n \"DOUBLE_POSITIVE\": [], \n \"INTEGER_NEGATIVE\": [], \n \"DECIMAL_NEGATIVE\": [], \n \"DOUBLE_NEGATIVE\": [], \n \"GRAPH\": [], \n \"{\": [], \n \"OPTIONAL\": [], \n \"MINUS\": [], \n \"SERVICE\": [], \n \"FILTER\": [], \n \"BIND\": [], \n \"VALUES\": [], \n \"}\": []}, \n \"?DISTINCT\" : {\n \"DISTINCT\": [\"DISTINCT\"], \n \"!\": [], \n \"+\": [], \n \"-\": [], \n \"VAR1\": [], \n \"VAR2\": [], \n \"(\": [], \n \"STR\": [], \n \"LANG\": [], \n \"LANGMATCHES\": [], \n \"DATATYPE\": [], \n \"BOUND\": [], \n \"IRI\": [], \n \"URI\": [], \n \"BNODE\": [], \n \"RAND\": [], \n \"ABS\": [], \n \"CEIL\": [], \n \"FLOOR\": [], \n \"ROUND\": [], \n \"CONCAT\": [], \n \"STRLEN\": [], \n \"UCASE\": [], \n \"LCASE\": [], \n \"ENCODE_FOR_URI\": [], \n \"CONTAINS\": [], \n \"STRSTARTS\": [], \n \"STRENDS\": [], \n \"STRBEFORE\": [], \n \"STRAFTER\": [], \n \"YEAR\": [], \n \"MONTH\": [], \n \"DAY\": [], \n \"HOURS\": [], \n \"MINUTES\": [], \n \"SECONDS\": [], \n \"TIMEZONE\": [], \n \"TZ\": [], \n \"NOW\": [], \n \"UUID\": [], \n \"STRUUID\": [], \n \"MD5\": [], \n \"SHA1\": [], \n \"SHA256\": [], \n \"SHA384\": [], \n \"SHA512\": [], \n \"COALESCE\": [], \n \"IF\": [], \n \"STRLANG\": [], \n \"STRDT\": [], \n \"SAMETERM\": [], \n \"ISIRI\": [], \n \"ISURI\": [], \n \"ISBLANK\": [], \n \"ISLITERAL\": [], \n \"ISNUMERIC\": [], \n \"TRUE\": [], \n \"FALSE\": [], \n \"COUNT\": [], \n \"SUM\": [], \n \"MIN\": [], \n \"MAX\": [], \n \"AVG\": [], \n \"SAMPLE\": [], \n \"GROUP_CONCAT\": [], \n \"SUBSTR\": [], \n \"REPLACE\": [], \n \"REGEX\": [], \n \"EXISTS\": [], \n \"NOT\": [], \n \"IRI_REF\": [], \n \"STRING_LITERAL1\": [], \n \"STRING_LITERAL2\": [], \n \"STRING_LITERAL_LONG1\": [], \n \"STRING_LITERAL_LONG2\": [], \n \"INTEGER\": [], \n \"DECIMAL\": [], \n \"DOUBLE\": [], \n \"INTEGER_POSITIVE\": [], \n \"DECIMAL_POSITIVE\": [], \n \"DOUBLE_POSITIVE\": [], \n \"INTEGER_NEGATIVE\": [], \n \"DECIMAL_NEGATIVE\": [], \n \"DOUBLE_NEGATIVE\": [], \n \"PNAME_LN\": [], \n \"PNAME_NS\": [], \n \"*\": []}, \n \"?GRAPH\" : {\n \"GRAPH\": [\"GRAPH\"], \n \"IRI_REF\": [], \n \"PNAME_LN\": [], \n \"PNAME_NS\": []}, \n \"?SILENT\" : {\n \"SILENT\": [\"SILENT\"], \n \"VAR1\": [], \n \"VAR2\": [], \n \"IRI_REF\": [], \n \"PNAME_LN\": [], \n \"PNAME_NS\": []}, \n \"?SILENT_1\" : {\n \"SILENT\": [\"SILENT\"], \n \"IRI_REF\": [], \n \"PNAME_LN\": [], \n \"PNAME_NS\": []}, \n \"?SILENT_2\" : {\n \"SILENT\": [\"SILENT\"], \n \"GRAPH\": [], \n \"DEFAULT\": [], \n \"NAMED\": [], \n \"ALL\": []}, \n \"?SILENT_3\" : {\n \"SILENT\": [\"SILENT\"], \n \"GRAPH\": []}, \n \"?SILENT_4\" : {\n \"SILENT\": [\"SILENT\"], \n \"DEFAULT\": [], \n \"GRAPH\": [], \n \"IRI_REF\": [], \n \"PNAME_LN\": [], \n \"PNAME_NS\": []}, \n \"?WHERE\" : {\n \"WHERE\": [\"WHERE\"], \n \"{\": []}, \n \"?[,,expression]\" : {\n \",\": [\"[,,expression]\"], \n \")\": []}, \n \"?[.,?constructTriples]\" : {\n \".\": [\"[.,?constructTriples]\"], \n \"}\": []}, \n \"?[.,?triplesBlock]\" : {\n \".\": [\"[.,?triplesBlock]\"], \n \"{\": [], \n \"OPTIONAL\": [], \n \"MINUS\": [], \n \"GRAPH\": [], \n \"SERVICE\": [], \n \"FILTER\": [], \n \"BIND\": [], \n \"VALUES\": [], \n \"}\": []}, \n \"?[.,?triplesTemplate]\" : {\n \".\": [\"[.,?triplesTemplate]\"], \n \"}\": [], \n \"GRAPH\": []}, \n \"?[;,SEPARATOR,=,string]\" : {\n \";\": [\"[;,SEPARATOR,=,string]\"], \n \")\": []}, \n \"?[;,update]\" : {\n \";\": [\"[;,update]\"], \n \"$\": []}, \n \"?[AS,var]\" : {\n \"AS\": [\"[AS,var]\"], \n \")\": []}, \n \"?[INTO,graphRef]\" : {\n \"INTO\": [\"[INTO,graphRef]\"], \n \";\": [], \n \"$\": []}, \n \"?[or([verbPath,verbSimple]),objectList]\" : {\n \"VAR1\": [\"[or([verbPath,verbSimple]),objectList]\"], \n \"VAR2\": [\"[or([verbPath,verbSimple]),objectList]\"], \n \"^\": [\"[or([verbPath,verbSimple]),objectList]\"], \n \"a\": [\"[or([verbPath,verbSimple]),objectList]\"], \n \"!\": [\"[or([verbPath,verbSimple]),objectList]\"], \n \"(\": [\"[or([verbPath,verbSimple]),objectList]\"], \n \"IRI_REF\": [\"[or([verbPath,verbSimple]),objectList]\"], \n \"PNAME_LN\": [\"[or([verbPath,verbSimple]),objectList]\"], \n \"PNAME_NS\": [\"[or([verbPath,verbSimple]),objectList]\"], \n \";\": [], \n \".\": [], \n \"]\": [], \n \"{\": [], \n \"OPTIONAL\": [], \n \"MINUS\": [], \n \"GRAPH\": [], \n \"SERVICE\": [], \n \"FILTER\": [], \n \"BIND\": [], \n \"VALUES\": [], \n \"}\": []}, \n \"?[pathOneInPropertySet,*[|,pathOneInPropertySet]]\" : {\n \"a\": [\"[pathOneInPropertySet,*[|,pathOneInPropertySet]]\"], \n \"^\": [\"[pathOneInPropertySet,*[|,pathOneInPropertySet]]\"], \n \"IRI_REF\": [\"[pathOneInPropertySet,*[|,pathOneInPropertySet]]\"], \n \"PNAME_LN\": [\"[pathOneInPropertySet,*[|,pathOneInPropertySet]]\"], \n \"PNAME_NS\": [\"[pathOneInPropertySet,*[|,pathOneInPropertySet]]\"], \n \")\": []}, \n \"?[update1,?[;,update]]\" : {\n \"INSERT\": [\"[update1,?[;,update]]\"], \n \"DELETE\": [\"[update1,?[;,update]]\"], \n \"LOAD\": [\"[update1,?[;,update]]\"], \n \"CLEAR\": [\"[update1,?[;,update]]\"], \n \"DROP\": [\"[update1,?[;,update]]\"], \n \"ADD\": [\"[update1,?[;,update]]\"], \n \"MOVE\": [\"[update1,?[;,update]]\"], \n \"COPY\": [\"[update1,?[;,update]]\"], \n \"CREATE\": [\"[update1,?[;,update]]\"], \n \"WITH\": [\"[update1,?[;,update]]\"], \n \"$\": []}, \n \"?[verb,objectList]\" : {\n \"a\": [\"[verb,objectList]\"], \n \"VAR1\": [\"[verb,objectList]\"], \n \"VAR2\": [\"[verb,objectList]\"], \n \"IRI_REF\": [\"[verb,objectList]\"], \n \"PNAME_LN\": [\"[verb,objectList]\"], \n \"PNAME_NS\": [\"[verb,objectList]\"], \n \";\": [], \n \".\": [], \n \"]\": [], \n \"}\": [], \n \"GRAPH\": [], \n \"{\": [], \n \"OPTIONAL\": [], \n \"MINUS\": [], \n \"SERVICE\": [], \n \"FILTER\": [], \n \"BIND\": [], \n \"VALUES\": []}, \n \"?argList\" : {\n \"NIL\": [\"argList\"], \n \"(\": [\"argList\"], \n \"AS\": [], \n \")\": [], \n \",\": [], \n \"||\": [], \n \"&&\": [], \n \"=\": [], \n \"!=\": [], \n \"<\": [], \n \">\": [], \n \"<=\": [], \n \">=\": [], \n \"IN\": [], \n \"NOT\": [], \n \"+\": [], \n \"-\": [], \n \"INTEGER_POSITIVE\": [], \n \"DECIMAL_POSITIVE\": [], \n \"DOUBLE_POSITIVE\": [], \n \"INTEGER_NEGATIVE\": [], \n \"DECIMAL_NEGATIVE\": [], \n \"DOUBLE_NEGATIVE\": [], \n \"*\": [], \n \"/\": [], \n \";\": []}, \n \"?constructTriples\" : {\n \"VAR1\": [\"constructTriples\"], \n \"VAR2\": [\"constructTriples\"], \n \"NIL\": [\"constructTriples\"], \n \"(\": [\"constructTriples\"], \n \"[\": [\"constructTriples\"], \n \"IRI_REF\": [\"constructTriples\"], \n \"TRUE\": [\"constructTriples\"], \n \"FALSE\": [\"constructTriples\"], \n \"BLANK_NODE_LABEL\": [\"constructTriples\"], \n \"ANON\": [\"constructTriples\"], \n \"PNAME_LN\": [\"constructTriples\"], \n \"PNAME_NS\": [\"constructTriples\"], \n \"STRING_LITERAL1\": [\"constructTriples\"], \n \"STRING_LITERAL2\": [\"constructTriples\"], \n \"STRING_LITERAL_LONG1\": [\"constructTriples\"], \n \"STRING_LITERAL_LONG2\": [\"constructTriples\"], \n \"INTEGER\": [\"constructTriples\"], \n \"DECIMAL\": [\"constructTriples\"], \n \"DOUBLE\": [\"constructTriples\"], \n \"INTEGER_POSITIVE\": [\"constructTriples\"], \n \"DECIMAL_POSITIVE\": [\"constructTriples\"], \n \"DOUBLE_POSITIVE\": [\"constructTriples\"], \n \"INTEGER_NEGATIVE\": [\"constructTriples\"], \n \"DECIMAL_NEGATIVE\": [\"constructTriples\"], \n \"DOUBLE_NEGATIVE\": [\"constructTriples\"], \n \"}\": []}, \n \"?groupClause\" : {\n \"GROUP\": [\"groupClause\"], \n \"VALUES\": [], \n \"LIMIT\": [], \n \"OFFSET\": [], \n \"ORDER\": [], \n \"HAVING\": [], \n \"$\": [], \n \"}\": []}, \n \"?havingClause\" : {\n \"HAVING\": [\"havingClause\"], \n \"VALUES\": [], \n \"LIMIT\": [], \n \"OFFSET\": [], \n \"ORDER\": [], \n \"$\": [], \n \"}\": []}, \n \"?insertClause\" : {\n \"INSERT\": [\"insertClause\"], \n \"WHERE\": [], \n \"USING\": []}, \n \"?limitClause\" : {\n \"LIMIT\": [\"limitClause\"], \n \"VALUES\": [], \n \"$\": [], \n \"}\": []}, \n \"?limitOffsetClauses\" : {\n \"LIMIT\": [\"limitOffsetClauses\"], \n \"OFFSET\": [\"limitOffsetClauses\"], \n \"VALUES\": [], \n \"$\": [], \n \"}\": []}, \n \"?offsetClause\" : {\n \"OFFSET\": [\"offsetClause\"], \n \"VALUES\": [], \n \"$\": [], \n \"}\": []}, \n \"?or([DISTINCT,REDUCED])\" : {\n \"DISTINCT\": [\"or([DISTINCT,REDUCED])\"], \n \"REDUCED\": [\"or([DISTINCT,REDUCED])\"], \n \"*\": [], \n \"(\": [], \n \"VAR1\": [], \n \"VAR2\": []}, \n \"?or([LANGTAG,[^^,iriRef]])\" : {\n \"LANGTAG\": [\"or([LANGTAG,[^^,iriRef]])\"], \n \"^^\": [\"or([LANGTAG,[^^,iriRef]])\"], \n \"UNDEF\": [], \n \"IRI_REF\": [], \n \"TRUE\": [], \n \"FALSE\": [], \n \"PNAME_LN\": [], \n \"PNAME_NS\": [], \n \"STRING_LITERAL1\": [], \n \"STRING_LITERAL2\": [], \n \"STRING_LITERAL_LONG1\": [], \n \"STRING_LITERAL_LONG2\": [], \n \"INTEGER\": [], \n \"DECIMAL\": [], \n \"DOUBLE\": [], \n \"INTEGER_POSITIVE\": [], \n \"DECIMAL_POSITIVE\": [], \n \"DOUBLE_POSITIVE\": [], \n \"INTEGER_NEGATIVE\": [], \n \"DECIMAL_NEGATIVE\": [], \n \"DOUBLE_NEGATIVE\": [], \n \"a\": [], \n \"VAR1\": [], \n \"VAR2\": [], \n \"^\": [], \n \"!\": [], \n \"(\": [], \n \".\": [], \n \";\": [], \n \",\": [], \n \"AS\": [], \n \")\": [], \n \"||\": [], \n \"&&\": [], \n \"=\": [], \n \"!=\": [], \n \"<\": [], \n \">\": [], \n \"<=\": [], \n \">=\": [], \n \"IN\": [], \n \"NOT\": [], \n \"+\": [], \n \"-\": [], \n \"*\": [], \n \"/\": [], \n \"}\": [], \n \"[\": [], \n \"NIL\": [], \n \"BLANK_NODE_LABEL\": [], \n \"ANON\": [], \n \"]\": [], \n \"GRAPH\": [], \n \"{\": [], \n \"OPTIONAL\": [], \n \"MINUS\": [], \n \"SERVICE\": [], \n \"FILTER\": [], \n \"BIND\": [], \n \"VALUES\": []}, \n \"?or([[*,unaryExpression],[/,unaryExpression]])\" : {\n \"*\": [\"or([[*,unaryExpression],[/,unaryExpression]])\"], \n \"/\": [\"or([[*,unaryExpression],[/,unaryExpression]])\"], \n \"+\": [], \n \"-\": [], \n \"INTEGER_POSITIVE\": [], \n \"DECIMAL_POSITIVE\": [], \n \"DOUBLE_POSITIVE\": [], \n \"INTEGER_NEGATIVE\": [], \n \"DECIMAL_NEGATIVE\": [], \n \"DOUBLE_NEGATIVE\": [], \n \"AS\": [], \n \")\": [], \n \",\": [], \n \"||\": [], \n \"&&\": [], \n \"=\": [], \n \"!=\": [], \n \"<\": [], \n \">\": [], \n \"<=\": [], \n \">=\": [], \n \"IN\": [], \n \"NOT\": [], \n \";\": []}, \n \"?or([[=,numericExpression],[!=,numericExpression],[<,numericExpression],[>,numericExpression],[<=,numericExpression],[>=,numericExpression],[IN,expressionList],[NOT,IN,expressionList]])\" : {\n \"=\": [\"or([[=,numericExpression],[!=,numericExpression],[<,numericExpression],[>,numericExpression],[<=,numericExpression],[>=,numericExpression],[IN,expressionList],[NOT,IN,expressionList]])\"], \n \"!=\": [\"or([[=,numericExpression],[!=,numericExpression],[<,numericExpression],[>,numericExpression],[<=,numericExpression],[>=,numericExpression],[IN,expressionList],[NOT,IN,expressionList]])\"], \n \"<\": [\"or([[=,numericExpression],[!=,numericExpression],[<,numericExpression],[>,numericExpression],[<=,numericExpression],[>=,numericExpression],[IN,expressionList],[NOT,IN,expressionList]])\"], \n \">\": [\"or([[=,numericExpression],[!=,numericExpression],[<,numericExpression],[>,numericExpression],[<=,numericExpression],[>=,numericExpression],[IN,expressionList],[NOT,IN,expressionList]])\"], \n \"<=\": [\"or([[=,numericExpression],[!=,numericExpression],[<,numericExpression],[>,numericExpression],[<=,numericExpression],[>=,numericExpression],[IN,expressionList],[NOT,IN,expressionList]])\"], \n \">=\": [\"or([[=,numericExpression],[!=,numericExpression],[<,numericExpression],[>,numericExpression],[<=,numericExpression],[>=,numericExpression],[IN,expressionList],[NOT,IN,expressionList]])\"], \n \"IN\": [\"or([[=,numericExpression],[!=,numericExpression],[<,numericExpression],[>,numericExpression],[<=,numericExpression],[>=,numericExpression],[IN,expressionList],[NOT,IN,expressionList]])\"], \n \"NOT\": [\"or([[=,numericExpression],[!=,numericExpression],[<,numericExpression],[>,numericExpression],[<=,numericExpression],[>=,numericExpression],[IN,expressionList],[NOT,IN,expressionList]])\"], \n \"AS\": [], \n \")\": [], \n \",\": [], \n \"||\": [], \n \"&&\": [], \n \";\": []}, \n \"?orderClause\" : {\n \"ORDER\": [\"orderClause\"], \n \"VALUES\": [], \n \"LIMIT\": [], \n \"OFFSET\": [], \n \"$\": [], \n \"}\": []}, \n \"?pathMod\" : {\n \"*\": [\"pathMod\"], \n \"?\": [\"pathMod\"], \n \"+\": [\"pathMod\"], \n \"{\": [\"pathMod\"], \n \"|\": [], \n \"/\": [], \n \")\": [], \n \"(\": [], \n \"[\": [], \n \"VAR1\": [], \n \"VAR2\": [], \n \"NIL\": [], \n \"IRI_REF\": [], \n \"TRUE\": [], \n \"FALSE\": [], \n \"BLANK_NODE_LABEL\": [], \n \"ANON\": [], \n \"PNAME_LN\": [], \n \"PNAME_NS\": [], \n \"STRING_LITERAL1\": [], \n \"STRING_LITERAL2\": [], \n \"STRING_LITERAL_LONG1\": [], \n \"STRING_LITERAL_LONG2\": [], \n \"INTEGER\": [], \n \"DECIMAL\": [], \n \"DOUBLE\": [], \n \"INTEGER_POSITIVE\": [], \n \"DECIMAL_POSITIVE\": [], \n \"DOUBLE_POSITIVE\": [], \n \"INTEGER_NEGATIVE\": [], \n \"DECIMAL_NEGATIVE\": [], \n \"DOUBLE_NEGATIVE\": []}, \n \"?triplesBlock\" : {\n \"VAR1\": [\"triplesBlock\"], \n \"VAR2\": [\"triplesBlock\"], \n \"NIL\": [\"triplesBlock\"], \n \"(\": [\"triplesBlock\"], \n \"[\": [\"triplesBlock\"], \n \"IRI_REF\": [\"triplesBlock\"], \n \"TRUE\": [\"triplesBlock\"], \n \"FALSE\": [\"triplesBlock\"], \n \"BLANK_NODE_LABEL\": [\"triplesBlock\"], \n \"ANON\": [\"triplesBlock\"], \n \"PNAME_LN\": [\"triplesBlock\"], \n \"PNAME_NS\": [\"triplesBlock\"], \n \"STRING_LITERAL1\": [\"triplesBlock\"], \n \"STRING_LITERAL2\": [\"triplesBlock\"], \n \"STRING_LITERAL_LONG1\": [\"triplesBlock\"], \n \"STRING_LITERAL_LONG2\": [\"triplesBlock\"], \n \"INTEGER\": [\"triplesBlock\"], \n \"DECIMAL\": [\"triplesBlock\"], \n \"DOUBLE\": [\"triplesBlock\"], \n \"INTEGER_POSITIVE\": [\"triplesBlock\"], \n \"DECIMAL_POSITIVE\": [\"triplesBlock\"], \n \"DOUBLE_POSITIVE\": [\"triplesBlock\"], \n \"INTEGER_NEGATIVE\": [\"triplesBlock\"], \n \"DECIMAL_NEGATIVE\": [\"triplesBlock\"], \n \"DOUBLE_NEGATIVE\": [\"triplesBlock\"], \n \"{\": [], \n \"OPTIONAL\": [], \n \"MINUS\": [], \n \"GRAPH\": [], \n \"SERVICE\": [], \n \"FILTER\": [], \n \"BIND\": [], \n \"VALUES\": [], \n \"}\": []}, \n \"?triplesTemplate\" : {\n \"VAR1\": [\"triplesTemplate\"], \n \"VAR2\": [\"triplesTemplate\"], \n \"NIL\": [\"triplesTemplate\"], \n \"(\": [\"triplesTemplate\"], \n \"[\": [\"triplesTemplate\"], \n \"IRI_REF\": [\"triplesTemplate\"], \n \"TRUE\": [\"triplesTemplate\"], \n \"FALSE\": [\"triplesTemplate\"], \n \"BLANK_NODE_LABEL\": [\"triplesTemplate\"], \n \"ANON\": [\"triplesTemplate\"], \n \"PNAME_LN\": [\"triplesTemplate\"], \n \"PNAME_NS\": [\"triplesTemplate\"], \n \"STRING_LITERAL1\": [\"triplesTemplate\"], \n \"STRING_LITERAL2\": [\"triplesTemplate\"], \n \"STRING_LITERAL_LONG1\": [\"triplesTemplate\"], \n \"STRING_LITERAL_LONG2\": [\"triplesTemplate\"], \n \"INTEGER\": [\"triplesTemplate\"], \n \"DECIMAL\": [\"triplesTemplate\"], \n \"DOUBLE\": [\"triplesTemplate\"], \n \"INTEGER_POSITIVE\": [\"triplesTemplate\"], \n \"DECIMAL_POSITIVE\": [\"triplesTemplate\"], \n \"DOUBLE_POSITIVE\": [\"triplesTemplate\"], \n \"INTEGER_NEGATIVE\": [\"triplesTemplate\"], \n \"DECIMAL_NEGATIVE\": [\"triplesTemplate\"], \n \"DOUBLE_NEGATIVE\": [\"triplesTemplate\"], \n \"}\": [], \n \"GRAPH\": []}, \n \"?whereClause\" : {\n \"WHERE\": [\"whereClause\"], \n \"{\": [\"whereClause\"], \n \"ORDER\": [], \n \"HAVING\": [], \n \"GROUP\": [], \n \"LIMIT\": [], \n \"OFFSET\": [], \n \"VALUES\": [], \n \"$\": []}, \n \"[ (,*dataBlockValue,)]\" : {\n \"(\": [\"(\",\"*dataBlockValue\",\")\"]}, \n \"[ (,*var,)]\" : {\n \"(\": [\"(\",\"*var\",\")\"]}, \n \"[ (,expression,)]\" : {\n \"(\": [\"(\",\"expression\",\")\"]}, \n \"[ (,expression,AS,var,)]\" : {\n \"(\": [\"(\",\"expression\",\"AS\",\"var\",\")\"]}, \n \"[!=,numericExpression]\" : {\n \"!=\": [\"!=\",\"numericExpression\"]}, \n \"[&&,valueLogical]\" : {\n \"&&\": [\"&&\",\"valueLogical\"]}, \n \"[*,unaryExpression]\" : {\n \"*\": [\"*\",\"unaryExpression\"]}, \n \"[*datasetClause,WHERE,{,?triplesTemplate,},solutionModifier]\" : {\n \"WHERE\": [\"*datasetClause\",\"WHERE\",\"{\",\"?triplesTemplate\",\"}\",\"solutionModifier\"], \n \"FROM\": [\"*datasetClause\",\"WHERE\",\"{\",\"?triplesTemplate\",\"}\",\"solutionModifier\"]}, \n \"[+,multiplicativeExpression]\" : {\n \"+\": [\"+\",\"multiplicativeExpression\"]}, \n \"[,,expression]\" : {\n \",\": [\",\",\"expression\"]}, \n \"[,,integer,}]\" : {\n \",\": [\",\",\"integer\",\"}\"]}, \n \"[,,objectPath]\" : {\n \",\": [\",\",\"objectPath\"]}, \n \"[,,object]\" : {\n \",\": [\",\",\"object\"]}, \n \"[,,or([},[integer,}]])]\" : {\n \",\": [\",\",\"or([},[integer,}]])\"]}, \n \"[-,multiplicativeExpression]\" : {\n \"-\": [\"-\",\"multiplicativeExpression\"]}, \n \"[.,?constructTriples]\" : {\n \".\": [\".\",\"?constructTriples\"]}, \n \"[.,?triplesBlock]\" : {\n \".\": [\".\",\"?triplesBlock\"]}, \n \"[.,?triplesTemplate]\" : {\n \".\": [\".\",\"?triplesTemplate\"]}, \n \"[/,pathEltOrInverse]\" : {\n \"/\": [\"/\",\"pathEltOrInverse\"]}, \n \"[/,unaryExpression]\" : {\n \"/\": [\"/\",\"unaryExpression\"]}, \n \"[;,?[or([verbPath,verbSimple]),objectList]]\" : {\n \";\": [\";\",\"?[or([verbPath,verbSimple]),objectList]\"]}, \n \"[;,?[verb,objectList]]\" : {\n \";\": [\";\",\"?[verb,objectList]\"]}, \n \"[;,SEPARATOR,=,string]\" : {\n \";\": [\";\",\"SEPARATOR\",\"=\",\"string\"]}, \n \"[;,update]\" : {\n \";\": [\";\",\"update\"]}, \n \"[<,numericExpression]\" : {\n \"<\": [\"<\",\"numericExpression\"]}, \n \"[<=,numericExpression]\" : {\n \"<=\": [\"<=\",\"numericExpression\"]}, \n \"[=,numericExpression]\" : {\n \"=\": [\"=\",\"numericExpression\"]}, \n \"[>,numericExpression]\" : {\n \">\": [\">\",\"numericExpression\"]}, \n \"[>=,numericExpression]\" : {\n \">=\": [\">=\",\"numericExpression\"]}, \n \"[AS,var]\" : {\n \"AS\": [\"AS\",\"var\"]}, \n \"[IN,expressionList]\" : {\n \"IN\": [\"IN\",\"expressionList\"]}, \n \"[INTO,graphRef]\" : {\n \"INTO\": [\"INTO\",\"graphRef\"]}, \n \"[NAMED,iriRef]\" : {\n \"NAMED\": [\"NAMED\",\"iriRef\"]}, \n \"[NOT,IN,expressionList]\" : {\n \"NOT\": [\"NOT\",\"IN\",\"expressionList\"]}, \n \"[UNION,groupGraphPattern]\" : {\n \"UNION\": [\"UNION\",\"groupGraphPattern\"]}, \n \"[^^,iriRef]\" : {\n \"^^\": [\"^^\",\"iriRef\"]}, \n \"[constructTemplate,*datasetClause,whereClause,solutionModifier]\" : {\n \"{\": [\"constructTemplate\",\"*datasetClause\",\"whereClause\",\"solutionModifier\"]}, \n \"[deleteClause,?insertClause]\" : {\n \"DELETE\": [\"deleteClause\",\"?insertClause\"]}, \n \"[graphPatternNotTriples,?.,?triplesBlock]\" : {\n \"{\": [\"graphPatternNotTriples\",\"?.\",\"?triplesBlock\"], \n \"OPTIONAL\": [\"graphPatternNotTriples\",\"?.\",\"?triplesBlock\"], \n \"MINUS\": [\"graphPatternNotTriples\",\"?.\",\"?triplesBlock\"], \n \"GRAPH\": [\"graphPatternNotTriples\",\"?.\",\"?triplesBlock\"], \n \"SERVICE\": [\"graphPatternNotTriples\",\"?.\",\"?triplesBlock\"], \n \"FILTER\": [\"graphPatternNotTriples\",\"?.\",\"?triplesBlock\"], \n \"BIND\": [\"graphPatternNotTriples\",\"?.\",\"?triplesBlock\"], \n \"VALUES\": [\"graphPatternNotTriples\",\"?.\",\"?triplesBlock\"]}, \n \"[integer,or([[,,or([},[integer,}]])],}])]\" : {\n \"INTEGER\": [\"integer\",\"or([[,,or([},[integer,}]])],}])\"]}, \n \"[integer,}]\" : {\n \"INTEGER\": [\"integer\",\"}\"]}, \n \"[or([numericLiteralPositive,numericLiteralNegative]),?or([[*,unaryExpression],[/,unaryExpression]])]\" : {\n \"INTEGER_POSITIVE\": [\"or([numericLiteralPositive,numericLiteralNegative])\",\"?or([[*,unaryExpression],[/,unaryExpression]])\"], \n \"DECIMAL_POSITIVE\": [\"or([numericLiteralPositive,numericLiteralNegative])\",\"?or([[*,unaryExpression],[/,unaryExpression]])\"], \n \"DOUBLE_POSITIVE\": [\"or([numericLiteralPositive,numericLiteralNegative])\",\"?or([[*,unaryExpression],[/,unaryExpression]])\"], \n \"INTEGER_NEGATIVE\": [\"or([numericLiteralPositive,numericLiteralNegative])\",\"?or([[*,unaryExpression],[/,unaryExpression]])\"], \n \"DECIMAL_NEGATIVE\": [\"or([numericLiteralPositive,numericLiteralNegative])\",\"?or([[*,unaryExpression],[/,unaryExpression]])\"], \n \"DOUBLE_NEGATIVE\": [\"or([numericLiteralPositive,numericLiteralNegative])\",\"?or([[*,unaryExpression],[/,unaryExpression]])\"]}, \n \"[or([verbPath,verbSimple]),objectList]\" : {\n \"VAR1\": [\"or([verbPath,verbSimple])\",\"objectList\"], \n \"VAR2\": [\"or([verbPath,verbSimple])\",\"objectList\"], \n \"^\": [\"or([verbPath,verbSimple])\",\"objectList\"], \n \"a\": [\"or([verbPath,verbSimple])\",\"objectList\"], \n \"!\": [\"or([verbPath,verbSimple])\",\"objectList\"], \n \"(\": [\"or([verbPath,verbSimple])\",\"objectList\"], \n \"IRI_REF\": [\"or([verbPath,verbSimple])\",\"objectList\"], \n \"PNAME_LN\": [\"or([verbPath,verbSimple])\",\"objectList\"], \n \"PNAME_NS\": [\"or([verbPath,verbSimple])\",\"objectList\"]}, \n \"[pathOneInPropertySet,*[|,pathOneInPropertySet]]\" : {\n \"a\": [\"pathOneInPropertySet\",\"*[|,pathOneInPropertySet]\"], \n \"^\": [\"pathOneInPropertySet\",\"*[|,pathOneInPropertySet]\"], \n \"IRI_REF\": [\"pathOneInPropertySet\",\"*[|,pathOneInPropertySet]\"], \n \"PNAME_LN\": [\"pathOneInPropertySet\",\"*[|,pathOneInPropertySet]\"], \n \"PNAME_NS\": [\"pathOneInPropertySet\",\"*[|,pathOneInPropertySet]\"]}, \n \"[quadsNotTriples,?.,?triplesTemplate]\" : {\n \"GRAPH\": [\"quadsNotTriples\",\"?.\",\"?triplesTemplate\"]}, \n \"[update1,?[;,update]]\" : {\n \"INSERT\": [\"update1\",\"?[;,update]\"], \n \"DELETE\": [\"update1\",\"?[;,update]\"], \n \"LOAD\": [\"update1\",\"?[;,update]\"], \n \"CLEAR\": [\"update1\",\"?[;,update]\"], \n \"DROP\": [\"update1\",\"?[;,update]\"], \n \"ADD\": [\"update1\",\"?[;,update]\"], \n \"MOVE\": [\"update1\",\"?[;,update]\"], \n \"COPY\": [\"update1\",\"?[;,update]\"], \n \"CREATE\": [\"update1\",\"?[;,update]\"], \n \"WITH\": [\"update1\",\"?[;,update]\"]}, \n \"[verb,objectList]\" : {\n \"a\": [\"verb\",\"objectList\"], \n \"VAR1\": [\"verb\",\"objectList\"], \n \"VAR2\": [\"verb\",\"objectList\"], \n \"IRI_REF\": [\"verb\",\"objectList\"], \n \"PNAME_LN\": [\"verb\",\"objectList\"], \n \"PNAME_NS\": [\"verb\",\"objectList\"]}, \n \"[|,pathOneInPropertySet]\" : {\n \"|\": [\"|\",\"pathOneInPropertySet\"]}, \n \"[|,pathSequence]\" : {\n \"|\": [\"|\",\"pathSequence\"]}, \n \"[||,conditionalAndExpression]\" : {\n \"||\": [\"||\",\"conditionalAndExpression\"]}, \n \"add\" : {\n \"ADD\": [\"ADD\",\"?SILENT_4\",\"graphOrDefault\",\"TO\",\"graphOrDefault\"]}, \n \"additiveExpression\" : {\n \"!\": [\"multiplicativeExpression\",\"*or([[+,multiplicativeExpression],[-,multiplicativeExpression],[or([numericLiteralPositive,numericLiteralNegative]),?or([[*,unaryExpression],[/,unaryExpression]])]])\"], \n \"+\": [\"multiplicativeExpression\",\"*or([[+,multiplicativeExpression],[-,multiplicativeExpression],[or([numericLiteralPositive,numericLiteralNegative]),?or([[*,unaryExpression],[/,unaryExpression]])]])\"], \n \"-\": [\"multiplicativeExpression\",\"*or([[+,multiplicativeExpression],[-,multiplicativeExpression],[or([numericLiteralPositive,numericLiteralNegative]),?or([[*,unaryExpression],[/,unaryExpression]])]])\"], \n \"VAR1\": [\"multiplicativeExpression\",\"*or([[+,multiplicativeExpression],[-,multiplicativeExpression],[or([numericLiteralPositive,numericLiteralNegative]),?or([[*,unaryExpression],[/,unaryExpression]])]])\"], \n \"VAR2\": [\"multiplicativeExpression\",\"*or([[+,multiplicativeExpression],[-,multiplicativeExpression],[or([numericLiteralPositive,numericLiteralNegative]),?or([[*,unaryExpression],[/,unaryExpression]])]])\"], \n \"(\": [\"multiplicativeExpression\",\"*or([[+,multiplicativeExpression],[-,multiplicativeExpression],[or([numericLiteralPositive,numericLiteralNegative]),?or([[*,unaryExpression],[/,unaryExpression]])]])\"], \n \"STR\": [\"multiplicativeExpression\",\"*or([[+,multiplicativeExpression],[-,multiplicativeExpression],[or([numericLiteralPositive,numericLiteralNegative]),?or([[*,unaryExpression],[/,unaryExpression]])]])\"], \n \"LANG\": [\"multiplicativeExpression\",\"*or([[+,multiplicativeExpression],[-,multiplicativeExpression],[or([numericLiteralPositive,numericLiteralNegative]),?or([[*,unaryExpression],[/,unaryExpression]])]])\"], \n \"LANGMATCHES\": [\"multiplicativeExpression\",\"*or([[+,multiplicativeExpression],[-,multiplicativeExpression],[or([numericLiteralPositive,numericLiteralNegative]),?or([[*,unaryExpression],[/,unaryExpression]])]])\"], \n \"DATATYPE\": [\"multiplicativeExpression\",\"*or([[+,multiplicativeExpression],[-,multiplicativeExpression],[or([numericLiteralPositive,numericLiteralNegative]),?or([[*,unaryExpression],[/,unaryExpression]])]])\"], \n \"BOUND\": [\"multiplicativeExpression\",\"*or([[+,multiplicativeExpression],[-,multiplicativeExpression],[or([numericLiteralPositive,numericLiteralNegative]),?or([[*,unaryExpression],[/,unaryExpression]])]])\"], \n \"IRI\": [\"multiplicativeExpression\",\"*or([[+,multiplicativeExpression],[-,multiplicativeExpression],[or([numericLiteralPositive,numericLiteralNegative]),?or([[*,unaryExpression],[/,unaryExpression]])]])\"], \n \"URI\": [\"multiplicativeExpression\",\"*or([[+,multiplicativeExpression],[-,multiplicativeExpression],[or([numericLiteralPositive,numericLiteralNegative]),?or([[*,unaryExpression],[/,unaryExpression]])]])\"], \n \"BNODE\": [\"multiplicativeExpression\",\"*or([[+,multiplicativeExpression],[-,multiplicativeExpression],[or([numericLiteralPositive,numericLiteralNegative]),?or([[*,unaryExpression],[/,unaryExpression]])]])\"], \n \"RAND\": [\"multiplicativeExpression\",\"*or([[+,multiplicativeExpression],[-,multiplicativeExpression],[or([numericLiteralPositive,numericLiteralNegative]),?or([[*,unaryExpression],[/,unaryExpression]])]])\"], \n \"ABS\": [\"multiplicativeExpression\",\"*or([[+,multiplicativeExpression],[-,multiplicativeExpression],[or([numericLiteralPositive,numericLiteralNegative]),?or([[*,unaryExpression],[/,unaryExpression]])]])\"], \n \"CEIL\": [\"multiplicativeExpression\",\"*or([[+,multiplicativeExpression],[-,multiplicativeExpression],[or([numericLiteralPositive,numericLiteralNegative]),?or([[*,unaryExpression],[/,unaryExpression]])]])\"], \n \"FLOOR\": [\"multiplicativeExpression\",\"*or([[+,multiplicativeExpression],[-,multiplicativeExpression],[or([numericLiteralPositive,numericLiteralNegative]),?or([[*,unaryExpression],[/,unaryExpression]])]])\"], \n \"ROUND\": [\"multiplicativeExpression\",\"*or([[+,multiplicativeExpression],[-,multiplicativeExpression],[or([numericLiteralPositive,numericLiteralNegative]),?or([[*,unaryExpression],[/,unaryExpression]])]])\"], \n \"CONCAT\": [\"multiplicativeExpression\",\"*or([[+,multiplicativeExpression],[-,multiplicativeExpression],[or([numericLiteralPositive,numericLiteralNegative]),?or([[*,unaryExpression],[/,unaryExpression]])]])\"], \n \"STRLEN\": [\"multiplicativeExpression\",\"*or([[+,multiplicativeExpression],[-,multiplicativeExpression],[or([numericLiteralPositive,numericLiteralNegative]),?or([[*,unaryExpression],[/,unaryExpression]])]])\"], \n \"UCASE\": [\"multiplicativeExpression\",\"*or([[+,multiplicativeExpression],[-,multiplicativeExpression],[or([numericLiteralPositive,numericLiteralNegative]),?or([[*,unaryExpression],[/,unaryExpression]])]])\"], \n \"LCASE\": [\"multiplicativeExpression\",\"*or([[+,multiplicativeExpression],[-,multiplicativeExpression],[or([numericLiteralPositive,numericLiteralNegative]),?or([[*,unaryExpression],[/,unaryExpression]])]])\"], \n \"ENCODE_FOR_URI\": [\"multiplicativeExpression\",\"*or([[+,multiplicativeExpression],[-,multiplicativeExpression],[or([numericLiteralPositive,numericLiteralNegative]),?or([[*,unaryExpression],[/,unaryExpression]])]])\"], \n \"CONTAINS\": [\"multiplicativeExpression\",\"*or([[+,multiplicativeExpression],[-,multiplicativeExpression],[or([numericLiteralPositive,numericLiteralNegative]),?or([[*,unaryExpression],[/,unaryExpression]])]])\"], \n \"STRSTARTS\": [\"multiplicativeExpression\",\"*or([[+,multiplicativeExpression],[-,multiplicativeExpression],[or([numericLiteralPositive,numericLiteralNegative]),?or([[*,unaryExpression],[/,unaryExpression]])]])\"], \n \"STRENDS\": [\"multiplicativeExpression\",\"*or([[+,multiplicativeExpression],[-,multiplicativeExpression],[or([numericLiteralPositive,numericLiteralNegative]),?or([[*,unaryExpression],[/,unaryExpression]])]])\"], \n \"STRBEFORE\": [\"multiplicativeExpression\",\"*or([[+,multiplicativeExpression],[-,multiplicativeExpression],[or([numericLiteralPositive,numericLiteralNegative]),?or([[*,unaryExpression],[/,unaryExpression]])]])\"], \n \"STRAFTER\": [\"multiplicativeExpression\",\"*or([[+,multiplicativeExpression],[-,multiplicativeExpression],[or([numericLiteralPositive,numericLiteralNegative]),?or([[*,unaryExpression],[/,unaryExpression]])]])\"], \n \"YEAR\": [\"multiplicativeExpression\",\"*or([[+,multiplicativeExpression],[-,multiplicativeExpression],[or([numericLiteralPositive,numericLiteralNegative]),?or([[*,unaryExpression],[/,unaryExpression]])]])\"], \n \"MONTH\": [\"multiplicativeExpression\",\"*or([[+,multiplicativeExpression],[-,multiplicativeExpression],[or([numericLiteralPositive,numericLiteralNegative]),?or([[*,unaryExpression],[/,unaryExpression]])]])\"], \n \"DAY\": [\"multiplicativeExpression\",\"*or([[+,multiplicativeExpression],[-,multiplicativeExpression],[or([numericLiteralPositive,numericLiteralNegative]),?or([[*,unaryExpression],[/,unaryExpression]])]])\"], \n \"HOURS\": [\"multiplicativeExpression\",\"*or([[+,multiplicativeExpression],[-,multiplicativeExpression],[or([numericLiteralPositive,numericLiteralNegative]),?or([[*,unaryExpression],[/,unaryExpression]])]])\"], \n \"MINUTES\": [\"multiplicativeExpression\",\"*or([[+,multiplicativeExpression],[-,multiplicativeExpression],[or([numericLiteralPositive,numericLiteralNegative]),?or([[*,unaryExpression],[/,unaryExpression]])]])\"], \n \"SECONDS\": [\"multiplicativeExpression\",\"*or([[+,multiplicativeExpression],[-,multiplicativeExpression],[or([numericLiteralPositive,numericLiteralNegative]),?or([[*,unaryExpression],[/,unaryExpression]])]])\"], \n \"TIMEZONE\": [\"multiplicativeExpression\",\"*or([[+,multiplicativeExpression],[-,multiplicativeExpression],[or([numericLiteralPositive,numericLiteralNegative]),?or([[*,unaryExpression],[/,unaryExpression]])]])\"], \n \"TZ\": [\"multiplicativeExpression\",\"*or([[+,multiplicativeExpression],[-,multiplicativeExpression],[or([numericLiteralPositive,numericLiteralNegative]),?or([[*,unaryExpression],[/,unaryExpression]])]])\"], \n \"NOW\": [\"multiplicativeExpression\",\"*or([[+,multiplicativeExpression],[-,multiplicativeExpression],[or([numericLiteralPositive,numericLiteralNegative]),?or([[*,unaryExpression],[/,unaryExpression]])]])\"], \n \"UUID\": [\"multiplicativeExpression\",\"*or([[+,multiplicativeExpression],[-,multiplicativeExpression],[or([numericLiteralPositive,numericLiteralNegative]),?or([[*,unaryExpression],[/,unaryExpression]])]])\"], \n \"STRUUID\": [\"multiplicativeExpression\",\"*or([[+,multiplicativeExpression],[-,multiplicativeExpression],[or([numericLiteralPositive,numericLiteralNegative]),?or([[*,unaryExpression],[/,unaryExpression]])]])\"], \n \"MD5\": [\"multiplicativeExpression\",\"*or([[+,multiplicativeExpression],[-,multiplicativeExpression],[or([numericLiteralPositive,numericLiteralNegative]),?or([[*,unaryExpression],[/,unaryExpression]])]])\"], \n \"SHA1\": [\"multiplicativeExpression\",\"*or([[+,multiplicativeExpression],[-,multiplicativeExpression],[or([numericLiteralPositive,numericLiteralNegative]),?or([[*,unaryExpression],[/,unaryExpression]])]])\"], \n \"SHA256\": [\"multiplicativeExpression\",\"*or([[+,multiplicativeExpression],[-,multiplicativeExpression],[or([numericLiteralPositive,numericLiteralNegative]),?or([[*,unaryExpression],[/,unaryExpression]])]])\"], \n \"SHA384\": [\"multiplicativeExpression\",\"*or([[+,multiplicativeExpression],[-,multiplicativeExpression],[or([numericLiteralPositive,numericLiteralNegative]),?or([[*,unaryExpression],[/,unaryExpression]])]])\"], \n \"SHA512\": [\"multiplicativeExpression\",\"*or([[+,multiplicativeExpression],[-,multiplicativeExpression],[or([numericLiteralPositive,numericLiteralNegative]),?or([[*,unaryExpression],[/,unaryExpression]])]])\"], \n \"COALESCE\": [\"multiplicativeExpression\",\"*or([[+,multiplicativeExpression],[-,multiplicativeExpression],[or([numericLiteralPositive,numericLiteralNegative]),?or([[*,unaryExpression],[/,unaryExpression]])]])\"], \n \"IF\": [\"multiplicativeExpression\",\"*or([[+,multiplicativeExpression],[-,multiplicativeExpression],[or([numericLiteralPositive,numericLiteralNegative]),?or([[*,unaryExpression],[/,unaryExpression]])]])\"], \n \"STRLANG\": [\"multiplicativeExpression\",\"*or([[+,multiplicativeExpression],[-,multiplicativeExpression],[or([numericLiteralPositive,numericLiteralNegative]),?or([[*,unaryExpression],[/,unaryExpression]])]])\"], \n \"STRDT\": [\"multiplicativeExpression\",\"*or([[+,multiplicativeExpression],[-,multiplicativeExpression],[or([numericLiteralPositive,numericLiteralNegative]),?or([[*,unaryExpression],[/,unaryExpression]])]])\"], \n \"SAMETERM\": [\"multiplicativeExpression\",\"*or([[+,multiplicativeExpression],[-,multiplicativeExpression],[or([numericLiteralPositive,numericLiteralNegative]),?or([[*,unaryExpression],[/,unaryExpression]])]])\"], \n \"ISIRI\": [\"multiplicativeExpression\",\"*or([[+,multiplicativeExpression],[-,multiplicativeExpression],[or([numericLiteralPositive,numericLiteralNegative]),?or([[*,unaryExpression],[/,unaryExpression]])]])\"], \n \"ISURI\": [\"multiplicativeExpression\",\"*or([[+,multiplicativeExpression],[-,multiplicativeExpression],[or([numericLiteralPositive,numericLiteralNegative]),?or([[*,unaryExpression],[/,unaryExpression]])]])\"], \n \"ISBLANK\": [\"multiplicativeExpression\",\"*or([[+,multiplicativeExpression],[-,multiplicativeExpression],[or([numericLiteralPositive,numericLiteralNegative]),?or([[*,unaryExpression],[/,unaryExpression]])]])\"], \n \"ISLITERAL\": [\"multiplicativeExpression\",\"*or([[+,multiplicativeExpression],[-,multiplicativeExpression],[or([numericLiteralPositive,numericLiteralNegative]),?or([[*,unaryExpression],[/,unaryExpression]])]])\"], \n \"ISNUMERIC\": [\"multiplicativeExpression\",\"*or([[+,multiplicativeExpression],[-,multiplicativeExpression],[or([numericLiteralPositive,numericLiteralNegative]),?or([[*,unaryExpression],[/,unaryExpression]])]])\"], \n \"TRUE\": [\"multiplicativeExpression\",\"*or([[+,multiplicativeExpression],[-,multiplicativeExpression],[or([numericLiteralPositive,numericLiteralNegative]),?or([[*,unaryExpression],[/,unaryExpression]])]])\"], \n \"FALSE\": [\"multiplicativeExpression\",\"*or([[+,multiplicativeExpression],[-,multiplicativeExpression],[or([numericLiteralPositive,numericLiteralNegative]),?or([[*,unaryExpression],[/,unaryExpression]])]])\"], \n \"COUNT\": [\"multiplicativeExpression\",\"*or([[+,multiplicativeExpression],[-,multiplicativeExpression],[or([numericLiteralPositive,numericLiteralNegative]),?or([[*,unaryExpression],[/,unaryExpression]])]])\"], \n \"SUM\": [\"multiplicativeExpression\",\"*or([[+,multiplicativeExpression],[-,multiplicativeExpression],[or([numericLiteralPositive,numericLiteralNegative]),?or([[*,unaryExpression],[/,unaryExpression]])]])\"], \n \"MIN\": [\"multiplicativeExpression\",\"*or([[+,multiplicativeExpression],[-,multiplicativeExpression],[or([numericLiteralPositive,numericLiteralNegative]),?or([[*,unaryExpression],[/,unaryExpression]])]])\"], \n \"MAX\": [\"multiplicativeExpression\",\"*or([[+,multiplicativeExpression],[-,multiplicativeExpression],[or([numericLiteralPositive,numericLiteralNegative]),?or([[*,unaryExpression],[/,unaryExpression]])]])\"], \n \"AVG\": [\"multiplicativeExpression\",\"*or([[+,multiplicativeExpression],[-,multiplicativeExpression],[or([numericLiteralPositive,numericLiteralNegative]),?or([[*,unaryExpression],[/,unaryExpression]])]])\"], \n \"SAMPLE\": [\"multiplicativeExpression\",\"*or([[+,multiplicativeExpression],[-,multiplicativeExpression],[or([numericLiteralPositive,numericLiteralNegative]),?or([[*,unaryExpression],[/,unaryExpression]])]])\"], \n \"GROUP_CONCAT\": [\"multiplicativeExpression\",\"*or([[+,multiplicativeExpression],[-,multiplicativeExpression],[or([numericLiteralPositive,numericLiteralNegative]),?or([[*,unaryExpression],[/,unaryExpression]])]])\"], \n \"SUBSTR\": [\"multiplicativeExpression\",\"*or([[+,multiplicativeExpression],[-,multiplicativeExpression],[or([numericLiteralPositive,numericLiteralNegative]),?or([[*,unaryExpression],[/,unaryExpression]])]])\"], \n \"REPLACE\": [\"multiplicativeExpression\",\"*or([[+,multiplicativeExpression],[-,multiplicativeExpression],[or([numericLiteralPositive,numericLiteralNegative]),?or([[*,unaryExpression],[/,unaryExpression]])]])\"], \n \"REGEX\": [\"multiplicativeExpression\",\"*or([[+,multiplicativeExpression],[-,multiplicativeExpression],[or([numericLiteralPositive,numericLiteralNegative]),?or([[*,unaryExpression],[/,unaryExpression]])]])\"], \n \"EXISTS\": [\"multiplicativeExpression\",\"*or([[+,multiplicativeExpression],[-,multiplicativeExpression],[or([numericLiteralPositive,numericLiteralNegative]),?or([[*,unaryExpression],[/,unaryExpression]])]])\"], \n \"NOT\": [\"multiplicativeExpression\",\"*or([[+,multiplicativeExpression],[-,multiplicativeExpression],[or([numericLiteralPositive,numericLiteralNegative]),?or([[*,unaryExpression],[/,unaryExpression]])]])\"], \n \"IRI_REF\": [\"multiplicativeExpression\",\"*or([[+,multiplicativeExpression],[-,multiplicativeExpression],[or([numericLiteralPositive,numericLiteralNegative]),?or([[*,unaryExpression],[/,unaryExpression]])]])\"], \n \"STRING_LITERAL1\": [\"multiplicativeExpression\",\"*or([[+,multiplicativeExpression],[-,multiplicativeExpression],[or([numericLiteralPositive,numericLiteralNegative]),?or([[*,unaryExpression],[/,unaryExpression]])]])\"], \n \"STRING_LITERAL2\": [\"multiplicativeExpression\",\"*or([[+,multiplicativeExpression],[-,multiplicativeExpression],[or([numericLiteralPositive,numericLiteralNegative]),?or([[*,unaryExpression],[/,unaryExpression]])]])\"], \n \"STRING_LITERAL_LONG1\": [\"multiplicativeExpression\",\"*or([[+,multiplicativeExpression],[-,multiplicativeExpression],[or([numericLiteralPositive,numericLiteralNegative]),?or([[*,unaryExpression],[/,unaryExpression]])]])\"], \n \"STRING_LITERAL_LONG2\": [\"multiplicativeExpression\",\"*or([[+,multiplicativeExpression],[-,multiplicativeExpression],[or([numericLiteralPositive,numericLiteralNegative]),?or([[*,unaryExpression],[/,unaryExpression]])]])\"], \n \"INTEGER\": [\"multiplicativeExpression\",\"*or([[+,multiplicativeExpression],[-,multiplicativeExpression],[or([numericLiteralPositive,numericLiteralNegative]),?or([[*,unaryExpression],[/,unaryExpression]])]])\"], \n \"DECIMAL\": [\"multiplicativeExpression\",\"*or([[+,multiplicativeExpression],[-,multiplicativeExpression],[or([numericLiteralPositive,numericLiteralNegative]),?or([[*,unaryExpression],[/,unaryExpression]])]])\"], \n \"DOUBLE\": [\"multiplicativeExpression\",\"*or([[+,multiplicativeExpression],[-,multiplicativeExpression],[or([numericLiteralPositive,numericLiteralNegative]),?or([[*,unaryExpression],[/,unaryExpression]])]])\"], \n \"INTEGER_POSITIVE\": [\"multiplicativeExpression\",\"*or([[+,multiplicativeExpression],[-,multiplicativeExpression],[or([numericLiteralPositive,numericLiteralNegative]),?or([[*,unaryExpression],[/,unaryExpression]])]])\"], \n \"DECIMAL_POSITIVE\": [\"multiplicativeExpression\",\"*or([[+,multiplicativeExpression],[-,multiplicativeExpression],[or([numericLiteralPositive,numericLiteralNegative]),?or([[*,unaryExpression],[/,unaryExpression]])]])\"], \n \"DOUBLE_POSITIVE\": [\"multiplicativeExpression\",\"*or([[+,multiplicativeExpression],[-,multiplicativeExpression],[or([numericLiteralPositive,numericLiteralNegative]),?or([[*,unaryExpression],[/,unaryExpression]])]])\"], \n \"INTEGER_NEGATIVE\": [\"multiplicativeExpression\",\"*or([[+,multiplicativeExpression],[-,multiplicativeExpression],[or([numericLiteralPositive,numericLiteralNegative]),?or([[*,unaryExpression],[/,unaryExpression]])]])\"], \n \"DECIMAL_NEGATIVE\": [\"multiplicativeExpression\",\"*or([[+,multiplicativeExpression],[-,multiplicativeExpression],[or([numericLiteralPositive,numericLiteralNegative]),?or([[*,unaryExpression],[/,unaryExpression]])]])\"], \n \"DOUBLE_NEGATIVE\": [\"multiplicativeExpression\",\"*or([[+,multiplicativeExpression],[-,multiplicativeExpression],[or([numericLiteralPositive,numericLiteralNegative]),?or([[*,unaryExpression],[/,unaryExpression]])]])\"], \n \"PNAME_LN\": [\"multiplicativeExpression\",\"*or([[+,multiplicativeExpression],[-,multiplicativeExpression],[or([numericLiteralPositive,numericLiteralNegative]),?or([[*,unaryExpression],[/,unaryExpression]])]])\"], \n \"PNAME_NS\": [\"multiplicativeExpression\",\"*or([[+,multiplicativeExpression],[-,multiplicativeExpression],[or([numericLiteralPositive,numericLiteralNegative]),?or([[*,unaryExpression],[/,unaryExpression]])]])\"]}, \n \"aggregate\" : {\n \"COUNT\": [\"COUNT\",\"(\",\"?DISTINCT\",\"or([*,expression])\",\")\"], \n \"SUM\": [\"SUM\",\"(\",\"?DISTINCT\",\"expression\",\")\"], \n \"MIN\": [\"MIN\",\"(\",\"?DISTINCT\",\"expression\",\")\"], \n \"MAX\": [\"MAX\",\"(\",\"?DISTINCT\",\"expression\",\")\"], \n \"AVG\": [\"AVG\",\"(\",\"?DISTINCT\",\"expression\",\")\"], \n \"SAMPLE\": [\"SAMPLE\",\"(\",\"?DISTINCT\",\"expression\",\")\"], \n \"GROUP_CONCAT\": [\"GROUP_CONCAT\",\"(\",\"?DISTINCT\",\"expression\",\"?[;,SEPARATOR,=,string]\",\")\"]}, \n \"allowBnodes\" : {\n \"}\": []}, \n \"allowVars\" : {\n \"}\": []}, \n \"argList\" : {\n \"NIL\": [\"NIL\"], \n \"(\": [\"(\",\"?DISTINCT\",\"expression\",\"*[,,expression]\",\")\"]}, \n \"askQuery\" : {\n \"ASK\": [\"ASK\",\"*datasetClause\",\"whereClause\",\"solutionModifier\"]}, \n \"baseDecl\" : {\n \"BASE\": [\"BASE\",\"IRI_REF\"]}, \n \"bind\" : {\n \"BIND\": [\"BIND\",\"(\",\"expression\",\"AS\",\"var\",\")\"]}, \n \"blankNode\" : {\n \"BLANK_NODE_LABEL\": [\"BLANK_NODE_LABEL\"], \n \"ANON\": [\"ANON\"]}, \n \"blankNodePropertyList\" : {\n \"[\": [\"[\",\"propertyListNotEmpty\",\"]\"]}, \n \"blankNodePropertyListPath\" : {\n \"[\": [\"[\",\"propertyListPathNotEmpty\",\"]\"]}, \n \"booleanLiteral\" : {\n \"TRUE\": [\"TRUE\"], \n \"FALSE\": [\"FALSE\"]}, \n \"brackettedExpression\" : {\n \"(\": [\"(\",\"expression\",\")\"]}, \n \"builtInCall\" : {\n \"STR\": [\"STR\",\"(\",\"expression\",\")\"], \n \"LANG\": [\"LANG\",\"(\",\"expression\",\")\"], \n \"LANGMATCHES\": [\"LANGMATCHES\",\"(\",\"expression\",\",\",\"expression\",\")\"], \n \"DATATYPE\": [\"DATATYPE\",\"(\",\"expression\",\")\"], \n \"BOUND\": [\"BOUND\",\"(\",\"var\",\")\"], \n \"IRI\": [\"IRI\",\"(\",\"expression\",\")\"], \n \"URI\": [\"URI\",\"(\",\"expression\",\")\"], \n \"BNODE\": [\"BNODE\",\"or([[ (,expression,)],NIL])\"], \n \"RAND\": [\"RAND\",\"NIL\"], \n \"ABS\": [\"ABS\",\"(\",\"expression\",\")\"], \n \"CEIL\": [\"CEIL\",\"(\",\"expression\",\")\"], \n \"FLOOR\": [\"FLOOR\",\"(\",\"expression\",\")\"], \n \"ROUND\": [\"ROUND\",\"(\",\"expression\",\")\"], \n \"CONCAT\": [\"CONCAT\",\"expressionList\"], \n \"SUBSTR\": [\"substringExpression\"], \n \"STRLEN\": [\"STRLEN\",\"(\",\"expression\",\")\"], \n \"REPLACE\": [\"strReplaceExpression\"], \n \"UCASE\": [\"UCASE\",\"(\",\"expression\",\")\"], \n \"LCASE\": [\"LCASE\",\"(\",\"expression\",\")\"], \n \"ENCODE_FOR_URI\": [\"ENCODE_FOR_URI\",\"(\",\"expression\",\")\"], \n \"CONTAINS\": [\"CONTAINS\",\"(\",\"expression\",\",\",\"expression\",\")\"], \n \"STRSTARTS\": [\"STRSTARTS\",\"(\",\"expression\",\",\",\"expression\",\")\"], \n \"STRENDS\": [\"STRENDS\",\"(\",\"expression\",\",\",\"expression\",\")\"], \n \"STRBEFORE\": [\"STRBEFORE\",\"(\",\"expression\",\",\",\"expression\",\")\"], \n \"STRAFTER\": [\"STRAFTER\",\"(\",\"expression\",\",\",\"expression\",\")\"], \n \"YEAR\": [\"YEAR\",\"(\",\"expression\",\")\"], \n \"MONTH\": [\"MONTH\",\"(\",\"expression\",\")\"], \n \"DAY\": [\"DAY\",\"(\",\"expression\",\")\"], \n \"HOURS\": [\"HOURS\",\"(\",\"expression\",\")\"], \n \"MINUTES\": [\"MINUTES\",\"(\",\"expression\",\")\"], \n \"SECONDS\": [\"SECONDS\",\"(\",\"expression\",\")\"], \n \"TIMEZONE\": [\"TIMEZONE\",\"(\",\"expression\",\")\"], \n \"TZ\": [\"TZ\",\"(\",\"expression\",\")\"], \n \"NOW\": [\"NOW\",\"NIL\"], \n \"UUID\": [\"UUID\",\"NIL\"], \n \"STRUUID\": [\"STRUUID\",\"NIL\"], \n \"MD5\": [\"MD5\",\"(\",\"expression\",\")\"], \n \"SHA1\": [\"SHA1\",\"(\",\"expression\",\")\"], \n \"SHA256\": [\"SHA256\",\"(\",\"expression\",\")\"], \n \"SHA384\": [\"SHA384\",\"(\",\"expression\",\")\"], \n \"SHA512\": [\"SHA512\",\"(\",\"expression\",\")\"], \n \"COALESCE\": [\"COALESCE\",\"expressionList\"], \n \"IF\": [\"IF\",\"(\",\"expression\",\",\",\"expression\",\",\",\"expression\",\")\"], \n \"STRLANG\": [\"STRLANG\",\"(\",\"expression\",\",\",\"expression\",\")\"], \n \"STRDT\": [\"STRDT\",\"(\",\"expression\",\",\",\"expression\",\")\"], \n \"SAMETERM\": [\"SAMETERM\",\"(\",\"expression\",\",\",\"expression\",\")\"], \n \"ISIRI\": [\"ISIRI\",\"(\",\"expression\",\")\"], \n \"ISURI\": [\"ISURI\",\"(\",\"expression\",\")\"], \n \"ISBLANK\": [\"ISBLANK\",\"(\",\"expression\",\")\"], \n \"ISLITERAL\": [\"ISLITERAL\",\"(\",\"expression\",\")\"], \n \"ISNUMERIC\": [\"ISNUMERIC\",\"(\",\"expression\",\")\"], \n \"REGEX\": [\"regexExpression\"], \n \"EXISTS\": [\"existsFunc\"], \n \"NOT\": [\"notExistsFunc\"]}, \n \"clear\" : {\n \"CLEAR\": [\"CLEAR\",\"?SILENT_2\",\"graphRefAll\"]}, \n \"collection\" : {\n \"(\": [\"(\",\"+graphNode\",\")\"]}, \n \"collectionPath\" : {\n \"(\": [\"(\",\"+graphNodePath\",\")\"]}, \n \"conditionalAndExpression\" : {\n \"!\": [\"valueLogical\",\"*[&&,valueLogical]\"], \n \"+\": [\"valueLogical\",\"*[&&,valueLogical]\"], \n \"-\": [\"valueLogical\",\"*[&&,valueLogical]\"], \n \"VAR1\": [\"valueLogical\",\"*[&&,valueLogical]\"], \n \"VAR2\": [\"valueLogical\",\"*[&&,valueLogical]\"], \n \"(\": [\"valueLogical\",\"*[&&,valueLogical]\"], \n \"STR\": [\"valueLogical\",\"*[&&,valueLogical]\"], \n \"LANG\": [\"valueLogical\",\"*[&&,valueLogical]\"], \n \"LANGMATCHES\": [\"valueLogical\",\"*[&&,valueLogical]\"], \n \"DATATYPE\": [\"valueLogical\",\"*[&&,valueLogical]\"], \n \"BOUND\": [\"valueLogical\",\"*[&&,valueLogical]\"], \n \"IRI\": [\"valueLogical\",\"*[&&,valueLogical]\"], \n \"URI\": [\"valueLogical\",\"*[&&,valueLogical]\"], \n \"BNODE\": [\"valueLogical\",\"*[&&,valueLogical]\"], \n \"RAND\": [\"valueLogical\",\"*[&&,valueLogical]\"], \n \"ABS\": [\"valueLogical\",\"*[&&,valueLogical]\"], \n \"CEIL\": [\"valueLogical\",\"*[&&,valueLogical]\"], \n \"FLOOR\": [\"valueLogical\",\"*[&&,valueLogical]\"], \n \"ROUND\": [\"valueLogical\",\"*[&&,valueLogical]\"], \n \"CONCAT\": [\"valueLogical\",\"*[&&,valueLogical]\"], \n \"STRLEN\": [\"valueLogical\",\"*[&&,valueLogical]\"], \n \"UCASE\": [\"valueLogical\",\"*[&&,valueLogical]\"], \n \"LCASE\": [\"valueLogical\",\"*[&&,valueLogical]\"], \n \"ENCODE_FOR_URI\": [\"valueLogical\",\"*[&&,valueLogical]\"], \n \"CONTAINS\": [\"valueLogical\",\"*[&&,valueLogical]\"], \n \"STRSTARTS\": [\"valueLogical\",\"*[&&,valueLogical]\"], \n \"STRENDS\": [\"valueLogical\",\"*[&&,valueLogical]\"], \n \"STRBEFORE\": [\"valueLogical\",\"*[&&,valueLogical]\"], \n \"STRAFTER\": [\"valueLogical\",\"*[&&,valueLogical]\"], \n \"YEAR\": [\"valueLogical\",\"*[&&,valueLogical]\"], \n \"MONTH\": [\"valueLogical\",\"*[&&,valueLogical]\"], \n \"DAY\": [\"valueLogical\",\"*[&&,valueLogical]\"], \n \"HOURS\": [\"valueLogical\",\"*[&&,valueLogical]\"], \n \"MINUTES\": [\"valueLogical\",\"*[&&,valueLogical]\"], \n \"SECONDS\": [\"valueLogical\",\"*[&&,valueLogical]\"], \n \"TIMEZONE\": [\"valueLogical\",\"*[&&,valueLogical]\"], \n \"TZ\": [\"valueLogical\",\"*[&&,valueLogical]\"], \n \"NOW\": [\"valueLogical\",\"*[&&,valueLogical]\"], \n \"UUID\": [\"valueLogical\",\"*[&&,valueLogical]\"], \n \"STRUUID\": [\"valueLogical\",\"*[&&,valueLogical]\"], \n \"MD5\": [\"valueLogical\",\"*[&&,valueLogical]\"], \n \"SHA1\": [\"valueLogical\",\"*[&&,valueLogical]\"], \n \"SHA256\": [\"valueLogical\",\"*[&&,valueLogical]\"], \n \"SHA384\": [\"valueLogical\",\"*[&&,valueLogical]\"], \n \"SHA512\": [\"valueLogical\",\"*[&&,valueLogical]\"], \n \"COALESCE\": [\"valueLogical\",\"*[&&,valueLogical]\"], \n \"IF\": [\"valueLogical\",\"*[&&,valueLogical]\"], \n \"STRLANG\": [\"valueLogical\",\"*[&&,valueLogical]\"], \n \"STRDT\": [\"valueLogical\",\"*[&&,valueLogical]\"], \n \"SAMETERM\": [\"valueLogical\",\"*[&&,valueLogical]\"], \n \"ISIRI\": [\"valueLogical\",\"*[&&,valueLogical]\"], \n \"ISURI\": [\"valueLogical\",\"*[&&,valueLogical]\"], \n \"ISBLANK\": [\"valueLogical\",\"*[&&,valueLogical]\"], \n \"ISLITERAL\": [\"valueLogical\",\"*[&&,valueLogical]\"], \n \"ISNUMERIC\": [\"valueLogical\",\"*[&&,valueLogical]\"], \n \"TRUE\": [\"valueLogical\",\"*[&&,valueLogical]\"], \n \"FALSE\": [\"valueLogical\",\"*[&&,valueLogical]\"], \n \"COUNT\": [\"valueLogical\",\"*[&&,valueLogical]\"], \n \"SUM\": [\"valueLogical\",\"*[&&,valueLogical]\"], \n \"MIN\": [\"valueLogical\",\"*[&&,valueLogical]\"], \n \"MAX\": [\"valueLogical\",\"*[&&,valueLogical]\"], \n \"AVG\": [\"valueLogical\",\"*[&&,valueLogical]\"], \n \"SAMPLE\": [\"valueLogical\",\"*[&&,valueLogical]\"], \n \"GROUP_CONCAT\": [\"valueLogical\",\"*[&&,valueLogical]\"], \n \"SUBSTR\": [\"valueLogical\",\"*[&&,valueLogical]\"], \n \"REPLACE\": [\"valueLogical\",\"*[&&,valueLogical]\"], \n \"REGEX\": [\"valueLogical\",\"*[&&,valueLogical]\"], \n \"EXISTS\": [\"valueLogical\",\"*[&&,valueLogical]\"], \n \"NOT\": [\"valueLogical\",\"*[&&,valueLogical]\"], \n \"IRI_REF\": [\"valueLogical\",\"*[&&,valueLogical]\"], \n \"STRING_LITERAL1\": [\"valueLogical\",\"*[&&,valueLogical]\"], \n \"STRING_LITERAL2\": [\"valueLogical\",\"*[&&,valueLogical]\"], \n \"STRING_LITERAL_LONG1\": [\"valueLogical\",\"*[&&,valueLogical]\"], \n \"STRING_LITERAL_LONG2\": [\"valueLogical\",\"*[&&,valueLogical]\"], \n \"INTEGER\": [\"valueLogical\",\"*[&&,valueLogical]\"], \n \"DECIMAL\": [\"valueLogical\",\"*[&&,valueLogical]\"], \n \"DOUBLE\": [\"valueLogical\",\"*[&&,valueLogical]\"], \n \"INTEGER_POSITIVE\": [\"valueLogical\",\"*[&&,valueLogical]\"], \n \"DECIMAL_POSITIVE\": [\"valueLogical\",\"*[&&,valueLogical]\"], \n \"DOUBLE_POSITIVE\": [\"valueLogical\",\"*[&&,valueLogical]\"], \n \"INTEGER_NEGATIVE\": [\"valueLogical\",\"*[&&,valueLogical]\"], \n \"DECIMAL_NEGATIVE\": [\"valueLogical\",\"*[&&,valueLogical]\"], \n \"DOUBLE_NEGATIVE\": [\"valueLogical\",\"*[&&,valueLogical]\"], \n \"PNAME_LN\": [\"valueLogical\",\"*[&&,valueLogical]\"], \n \"PNAME_NS\": [\"valueLogical\",\"*[&&,valueLogical]\"]}, \n \"conditionalOrExpression\" : {\n \"!\": [\"conditionalAndExpression\",\"*[||,conditionalAndExpression]\"], \n \"+\": [\"conditionalAndExpression\",\"*[||,conditionalAndExpression]\"], \n \"-\": [\"conditionalAndExpression\",\"*[||,conditionalAndExpression]\"], \n \"VAR1\": [\"conditionalAndExpression\",\"*[||,conditionalAndExpression]\"], \n \"VAR2\": [\"conditionalAndExpression\",\"*[||,conditionalAndExpression]\"], \n \"(\": [\"conditionalAndExpression\",\"*[||,conditionalAndExpression]\"], \n \"STR\": [\"conditionalAndExpression\",\"*[||,conditionalAndExpression]\"], \n \"LANG\": [\"conditionalAndExpression\",\"*[||,conditionalAndExpression]\"], \n \"LANGMATCHES\": [\"conditionalAndExpression\",\"*[||,conditionalAndExpression]\"], \n \"DATATYPE\": [\"conditionalAndExpression\",\"*[||,conditionalAndExpression]\"], \n \"BOUND\": [\"conditionalAndExpression\",\"*[||,conditionalAndExpression]\"], \n \"IRI\": [\"conditionalAndExpression\",\"*[||,conditionalAndExpression]\"], \n \"URI\": [\"conditionalAndExpression\",\"*[||,conditionalAndExpression]\"], \n \"BNODE\": [\"conditionalAndExpression\",\"*[||,conditionalAndExpression]\"], \n \"RAND\": [\"conditionalAndExpression\",\"*[||,conditionalAndExpression]\"], \n \"ABS\": [\"conditionalAndExpression\",\"*[||,conditionalAndExpression]\"], \n \"CEIL\": [\"conditionalAndExpression\",\"*[||,conditionalAndExpression]\"], \n \"FLOOR\": [\"conditionalAndExpression\",\"*[||,conditionalAndExpression]\"], \n \"ROUND\": [\"conditionalAndExpression\",\"*[||,conditionalAndExpression]\"], \n \"CONCAT\": [\"conditionalAndExpression\",\"*[||,conditionalAndExpression]\"], \n \"STRLEN\": [\"conditionalAndExpression\",\"*[||,conditionalAndExpression]\"], \n \"UCASE\": [\"conditionalAndExpression\",\"*[||,conditionalAndExpression]\"], \n \"LCASE\": [\"conditionalAndExpression\",\"*[||,conditionalAndExpression]\"], \n \"ENCODE_FOR_URI\": [\"conditionalAndExpression\",\"*[||,conditionalAndExpression]\"], \n \"CONTAINS\": [\"conditionalAndExpression\",\"*[||,conditionalAndExpression]\"], \n \"STRSTARTS\": [\"conditionalAndExpression\",\"*[||,conditionalAndExpression]\"], \n \"STRENDS\": [\"conditionalAndExpression\",\"*[||,conditionalAndExpression]\"], \n \"STRBEFORE\": [\"conditionalAndExpression\",\"*[||,conditionalAndExpression]\"], \n \"STRAFTER\": [\"conditionalAndExpression\",\"*[||,conditionalAndExpression]\"], \n \"YEAR\": [\"conditionalAndExpression\",\"*[||,conditionalAndExpression]\"], \n \"MONTH\": [\"conditionalAndExpression\",\"*[||,conditionalAndExpression]\"], \n \"DAY\": [\"conditionalAndExpression\",\"*[||,conditionalAndExpression]\"], \n \"HOURS\": [\"conditionalAndExpression\",\"*[||,conditionalAndExpression]\"], \n \"MINUTES\": [\"conditionalAndExpression\",\"*[||,conditionalAndExpression]\"], \n \"SECONDS\": [\"conditionalAndExpression\",\"*[||,conditionalAndExpression]\"], \n \"TIMEZONE\": [\"conditionalAndExpression\",\"*[||,conditionalAndExpression]\"], \n \"TZ\": [\"conditionalAndExpression\",\"*[||,conditionalAndExpression]\"], \n \"NOW\": [\"conditionalAndExpression\",\"*[||,conditionalAndExpression]\"], \n \"UUID\": [\"conditionalAndExpression\",\"*[||,conditionalAndExpression]\"], \n \"STRUUID\": [\"conditionalAndExpression\",\"*[||,conditionalAndExpression]\"], \n \"MD5\": [\"conditionalAndExpression\",\"*[||,conditionalAndExpression]\"], \n \"SHA1\": [\"conditionalAndExpression\",\"*[||,conditionalAndExpression]\"], \n \"SHA256\": [\"conditionalAndExpression\",\"*[||,conditionalAndExpression]\"], \n \"SHA384\": [\"conditionalAndExpression\",\"*[||,conditionalAndExpression]\"], \n \"SHA512\": [\"conditionalAndExpression\",\"*[||,conditionalAndExpression]\"], \n \"COALESCE\": [\"conditionalAndExpression\",\"*[||,conditionalAndExpression]\"], \n \"IF\": [\"conditionalAndExpression\",\"*[||,conditionalAndExpression]\"], \n \"STRLANG\": [\"conditionalAndExpression\",\"*[||,conditionalAndExpression]\"], \n \"STRDT\": [\"conditionalAndExpression\",\"*[||,conditionalAndExpression]\"], \n \"SAMETERM\": [\"conditionalAndExpression\",\"*[||,conditionalAndExpression]\"], \n \"ISIRI\": [\"conditionalAndExpression\",\"*[||,conditionalAndExpression]\"], \n \"ISURI\": [\"conditionalAndExpression\",\"*[||,conditionalAndExpression]\"], \n \"ISBLANK\": [\"conditionalAndExpression\",\"*[||,conditionalAndExpression]\"], \n \"ISLITERAL\": [\"conditionalAndExpression\",\"*[||,conditionalAndExpression]\"], \n \"ISNUMERIC\": [\"conditionalAndExpression\",\"*[||,conditionalAndExpression]\"], \n \"TRUE\": [\"conditionalAndExpression\",\"*[||,conditionalAndExpression]\"], \n \"FALSE\": [\"conditionalAndExpression\",\"*[||,conditionalAndExpression]\"], \n \"COUNT\": [\"conditionalAndExpression\",\"*[||,conditionalAndExpression]\"], \n \"SUM\": [\"conditionalAndExpression\",\"*[||,conditionalAndExpression]\"], \n \"MIN\": [\"conditionalAndExpression\",\"*[||,conditionalAndExpression]\"], \n \"MAX\": [\"conditionalAndExpression\",\"*[||,conditionalAndExpression]\"], \n \"AVG\": [\"conditionalAndExpression\",\"*[||,conditionalAndExpression]\"], \n \"SAMPLE\": [\"conditionalAndExpression\",\"*[||,conditionalAndExpression]\"], \n \"GROUP_CONCAT\": [\"conditionalAndExpression\",\"*[||,conditionalAndExpression]\"], \n \"SUBSTR\": [\"conditionalAndExpression\",\"*[||,conditionalAndExpression]\"], \n \"REPLACE\": [\"conditionalAndExpression\",\"*[||,conditionalAndExpression]\"], \n \"REGEX\": [\"conditionalAndExpression\",\"*[||,conditionalAndExpression]\"], \n \"EXISTS\": [\"conditionalAndExpression\",\"*[||,conditionalAndExpression]\"], \n \"NOT\": [\"conditionalAndExpression\",\"*[||,conditionalAndExpression]\"], \n \"IRI_REF\": [\"conditionalAndExpression\",\"*[||,conditionalAndExpression]\"], \n \"STRING_LITERAL1\": [\"conditionalAndExpression\",\"*[||,conditionalAndExpression]\"], \n \"STRING_LITERAL2\": [\"conditionalAndExpression\",\"*[||,conditionalAndExpression]\"], \n \"STRING_LITERAL_LONG1\": [\"conditionalAndExpression\",\"*[||,conditionalAndExpression]\"], \n \"STRING_LITERAL_LONG2\": [\"conditionalAndExpression\",\"*[||,conditionalAndExpression]\"], \n \"INTEGER\": [\"conditionalAndExpression\",\"*[||,conditionalAndExpression]\"], \n \"DECIMAL\": [\"conditionalAndExpression\",\"*[||,conditionalAndExpression]\"], \n \"DOUBLE\": [\"conditionalAndExpression\",\"*[||,conditionalAndExpression]\"], \n \"INTEGER_POSITIVE\": [\"conditionalAndExpression\",\"*[||,conditionalAndExpression]\"], \n \"DECIMAL_POSITIVE\": [\"conditionalAndExpression\",\"*[||,conditionalAndExpression]\"], \n \"DOUBLE_POSITIVE\": [\"conditionalAndExpression\",\"*[||,conditionalAndExpression]\"], \n \"INTEGER_NEGATIVE\": [\"conditionalAndExpression\",\"*[||,conditionalAndExpression]\"], \n \"DECIMAL_NEGATIVE\": [\"conditionalAndExpression\",\"*[||,conditionalAndExpression]\"], \n \"DOUBLE_NEGATIVE\": [\"conditionalAndExpression\",\"*[||,conditionalAndExpression]\"], \n \"PNAME_LN\": [\"conditionalAndExpression\",\"*[||,conditionalAndExpression]\"], \n \"PNAME_NS\": [\"conditionalAndExpression\",\"*[||,conditionalAndExpression]\"]}, \n \"constraint\" : {\n \"(\": [\"brackettedExpression\"], \n \"STR\": [\"builtInCall\"], \n \"LANG\": [\"builtInCall\"], \n \"LANGMATCHES\": [\"builtInCall\"], \n \"DATATYPE\": [\"builtInCall\"], \n \"BOUND\": [\"builtInCall\"], \n \"IRI\": [\"builtInCall\"], \n \"URI\": [\"builtInCall\"], \n \"BNODE\": [\"builtInCall\"], \n \"RAND\": [\"builtInCall\"], \n \"ABS\": [\"builtInCall\"], \n \"CEIL\": [\"builtInCall\"], \n \"FLOOR\": [\"builtInCall\"], \n \"ROUND\": [\"builtInCall\"], \n \"CONCAT\": [\"builtInCall\"], \n \"STRLEN\": [\"builtInCall\"], \n \"UCASE\": [\"builtInCall\"], \n \"LCASE\": [\"builtInCall\"], \n \"ENCODE_FOR_URI\": [\"builtInCall\"], \n \"CONTAINS\": [\"builtInCall\"], \n \"STRSTARTS\": [\"builtInCall\"], \n \"STRENDS\": [\"builtInCall\"], \n \"STRBEFORE\": [\"builtInCall\"], \n \"STRAFTER\": [\"builtInCall\"], \n \"YEAR\": [\"builtInCall\"], \n \"MONTH\": [\"builtInCall\"], \n \"DAY\": [\"builtInCall\"], \n \"HOURS\": [\"builtInCall\"], \n \"MINUTES\": [\"builtInCall\"], \n \"SECONDS\": [\"builtInCall\"], \n \"TIMEZONE\": [\"builtInCall\"], \n \"TZ\": [\"builtInCall\"], \n \"NOW\": [\"builtInCall\"], \n \"UUID\": [\"builtInCall\"], \n \"STRUUID\": [\"builtInCall\"], \n \"MD5\": [\"builtInCall\"], \n \"SHA1\": [\"builtInCall\"], \n \"SHA256\": [\"builtInCall\"], \n \"SHA384\": [\"builtInCall\"], \n \"SHA512\": [\"builtInCall\"], \n \"COALESCE\": [\"builtInCall\"], \n \"IF\": [\"builtInCall\"], \n \"STRLANG\": [\"builtInCall\"], \n \"STRDT\": [\"builtInCall\"], \n \"SAMETERM\": [\"builtInCall\"], \n \"ISIRI\": [\"builtInCall\"], \n \"ISURI\": [\"builtInCall\"], \n \"ISBLANK\": [\"builtInCall\"], \n \"ISLITERAL\": [\"builtInCall\"], \n \"ISNUMERIC\": [\"builtInCall\"], \n \"SUBSTR\": [\"builtInCall\"], \n \"REPLACE\": [\"builtInCall\"], \n \"REGEX\": [\"builtInCall\"], \n \"EXISTS\": [\"builtInCall\"], \n \"NOT\": [\"builtInCall\"], \n \"IRI_REF\": [\"functionCall\"], \n \"PNAME_LN\": [\"functionCall\"], \n \"PNAME_NS\": [\"functionCall\"]}, \n \"constructQuery\" : {\n \"CONSTRUCT\": [\"CONSTRUCT\",\"or([[constructTemplate,*datasetClause,whereClause,solutionModifier],[*datasetClause,WHERE,{,?triplesTemplate,},solutionModifier]])\"]}, \n \"constructTemplate\" : {\n \"{\": [\"{\",\"?constructTriples\",\"}\"]}, \n \"constructTriples\" : {\n \"VAR1\": [\"triplesSameSubject\",\"?[.,?constructTriples]\"], \n \"VAR2\": [\"triplesSameSubject\",\"?[.,?constructTriples]\"], \n \"NIL\": [\"triplesSameSubject\",\"?[.,?constructTriples]\"], \n \"(\": [\"triplesSameSubject\",\"?[.,?constructTriples]\"], \n \"[\": [\"triplesSameSubject\",\"?[.,?constructTriples]\"], \n \"IRI_REF\": [\"triplesSameSubject\",\"?[.,?constructTriples]\"], \n \"TRUE\": [\"triplesSameSubject\",\"?[.,?constructTriples]\"], \n \"FALSE\": [\"triplesSameSubject\",\"?[.,?constructTriples]\"], \n \"BLANK_NODE_LABEL\": [\"triplesSameSubject\",\"?[.,?constructTriples]\"], \n \"ANON\": [\"triplesSameSubject\",\"?[.,?constructTriples]\"], \n \"PNAME_LN\": [\"triplesSameSubject\",\"?[.,?constructTriples]\"], \n \"PNAME_NS\": [\"triplesSameSubject\",\"?[.,?constructTriples]\"], \n \"STRING_LITERAL1\": [\"triplesSameSubject\",\"?[.,?constructTriples]\"], \n \"STRING_LITERAL2\": [\"triplesSameSubject\",\"?[.,?constructTriples]\"], \n \"STRING_LITERAL_LONG1\": [\"triplesSameSubject\",\"?[.,?constructTriples]\"], \n \"STRING_LITERAL_LONG2\": [\"triplesSameSubject\",\"?[.,?constructTriples]\"], \n \"INTEGER\": [\"triplesSameSubject\",\"?[.,?constructTriples]\"], \n \"DECIMAL\": [\"triplesSameSubject\",\"?[.,?constructTriples]\"], \n \"DOUBLE\": [\"triplesSameSubject\",\"?[.,?constructTriples]\"], \n \"INTEGER_POSITIVE\": [\"triplesSameSubject\",\"?[.,?constructTriples]\"], \n \"DECIMAL_POSITIVE\": [\"triplesSameSubject\",\"?[.,?constructTriples]\"], \n \"DOUBLE_POSITIVE\": [\"triplesSameSubject\",\"?[.,?constructTriples]\"], \n \"INTEGER_NEGATIVE\": [\"triplesSameSubject\",\"?[.,?constructTriples]\"], \n \"DECIMAL_NEGATIVE\": [\"triplesSameSubject\",\"?[.,?constructTriples]\"], \n \"DOUBLE_NEGATIVE\": [\"triplesSameSubject\",\"?[.,?constructTriples]\"]}, \n \"copy\" : {\n \"COPY\": [\"COPY\",\"?SILENT_4\",\"graphOrDefault\",\"TO\",\"graphOrDefault\"]}, \n \"create\" : {\n \"CREATE\": [\"CREATE\",\"?SILENT_3\",\"graphRef\"]}, \n \"dataBlock\" : {\n \"NIL\": [\"or([inlineDataOneVar,inlineDataFull])\"], \n \"(\": [\"or([inlineDataOneVar,inlineDataFull])\"], \n \"VAR1\": [\"or([inlineDataOneVar,inlineDataFull])\"], \n \"VAR2\": [\"or([inlineDataOneVar,inlineDataFull])\"]}, \n \"dataBlockValue\" : {\n \"IRI_REF\": [\"iriRef\"], \n \"PNAME_LN\": [\"iriRef\"], \n \"PNAME_NS\": [\"iriRef\"], \n \"STRING_LITERAL1\": [\"rdfLiteral\"], \n \"STRING_LITERAL2\": [\"rdfLiteral\"], \n \"STRING_LITERAL_LONG1\": [\"rdfLiteral\"], \n \"STRING_LITERAL_LONG2\": [\"rdfLiteral\"], \n \"INTEGER\": [\"numericLiteral\"], \n \"DECIMAL\": [\"numericLiteral\"], \n \"DOUBLE\": [\"numericLiteral\"], \n \"INTEGER_POSITIVE\": [\"numericLiteral\"], \n \"DECIMAL_POSITIVE\": [\"numericLiteral\"], \n \"DOUBLE_POSITIVE\": [\"numericLiteral\"], \n \"INTEGER_NEGATIVE\": [\"numericLiteral\"], \n \"DECIMAL_NEGATIVE\": [\"numericLiteral\"], \n \"DOUBLE_NEGATIVE\": [\"numericLiteral\"], \n \"TRUE\": [\"booleanLiteral\"], \n \"FALSE\": [\"booleanLiteral\"], \n \"UNDEF\": [\"UNDEF\"]}, \n \"datasetClause\" : {\n \"FROM\": [\"FROM\",\"or([defaultGraphClause,namedGraphClause])\"]}, \n \"defaultGraphClause\" : {\n \"IRI_REF\": [\"sourceSelector\"], \n \"PNAME_LN\": [\"sourceSelector\"], \n \"PNAME_NS\": [\"sourceSelector\"]}, \n \"delete1\" : {\n \"DATA\": [\"DATA\",\"quadDataNoBnodes\"], \n \"WHERE\": [\"WHERE\",\"quadPatternNoBnodes\"], \n \"{\": [\"quadPatternNoBnodes\",\"?insertClause\",\"*usingClause\",\"WHERE\",\"groupGraphPattern\"]}, \n \"deleteClause\" : {\n \"DELETE\": [\"DELETE\",\"quadPattern\"]}, \n \"describeDatasetClause\" : {\n \"FROM\": [\"FROM\",\"or([defaultGraphClause,namedGraphClause])\"]}, \n \"describeQuery\" : {\n \"DESCRIBE\": [\"DESCRIBE\",\"or([+varOrIRIref,*])\",\"*describeDatasetClause\",\"?whereClause\",\"solutionModifier\"]}, \n \"disallowBnodes\" : {\n \"}\": [], \n \"GRAPH\": [], \n \"VAR1\": [], \n \"VAR2\": [], \n \"NIL\": [], \n \"(\": [], \n \"[\": [], \n \"IRI_REF\": [], \n \"TRUE\": [], \n \"FALSE\": [], \n \"BLANK_NODE_LABEL\": [], \n \"ANON\": [], \n \"PNAME_LN\": [], \n \"PNAME_NS\": [], \n \"STRING_LITERAL1\": [], \n \"STRING_LITERAL2\": [], \n \"STRING_LITERAL_LONG1\": [], \n \"STRING_LITERAL_LONG2\": [], \n \"INTEGER\": [], \n \"DECIMAL\": [], \n \"DOUBLE\": [], \n \"INTEGER_POSITIVE\": [], \n \"DECIMAL_POSITIVE\": [], \n \"DOUBLE_POSITIVE\": [], \n \"INTEGER_NEGATIVE\": [], \n \"DECIMAL_NEGATIVE\": [], \n \"DOUBLE_NEGATIVE\": []}, \n \"disallowVars\" : {\n \"}\": [], \n \"GRAPH\": [], \n \"VAR1\": [], \n \"VAR2\": [], \n \"NIL\": [], \n \"(\": [], \n \"[\": [], \n \"IRI_REF\": [], \n \"TRUE\": [], \n \"FALSE\": [], \n \"BLANK_NODE_LABEL\": [], \n \"ANON\": [], \n \"PNAME_LN\": [], \n \"PNAME_NS\": [], \n \"STRING_LITERAL1\": [], \n \"STRING_LITERAL2\": [], \n \"STRING_LITERAL_LONG1\": [], \n \"STRING_LITERAL_LONG2\": [], \n \"INTEGER\": [], \n \"DECIMAL\": [], \n \"DOUBLE\": [], \n \"INTEGER_POSITIVE\": [], \n \"DECIMAL_POSITIVE\": [], \n \"DOUBLE_POSITIVE\": [], \n \"INTEGER_NEGATIVE\": [], \n \"DECIMAL_NEGATIVE\": [], \n \"DOUBLE_NEGATIVE\": []}, \n \"drop\" : {\n \"DROP\": [\"DROP\",\"?SILENT_2\",\"graphRefAll\"]}, \n \"existsFunc\" : {\n \"EXISTS\": [\"EXISTS\",\"groupGraphPattern\"]}, \n \"expression\" : {\n \"!\": [\"conditionalOrExpression\"], \n \"+\": [\"conditionalOrExpression\"], \n \"-\": [\"conditionalOrExpression\"], \n \"VAR1\": [\"conditionalOrExpression\"], \n \"VAR2\": [\"conditionalOrExpression\"], \n \"(\": [\"conditionalOrExpression\"], \n \"STR\": [\"conditionalOrExpression\"], \n \"LANG\": [\"conditionalOrExpression\"], \n \"LANGMATCHES\": [\"conditionalOrExpression\"], \n \"DATATYPE\": [\"conditionalOrExpression\"], \n \"BOUND\": [\"conditionalOrExpression\"], \n \"IRI\": [\"conditionalOrExpression\"], \n \"URI\": [\"conditionalOrExpression\"], \n \"BNODE\": [\"conditionalOrExpression\"], \n \"RAND\": [\"conditionalOrExpression\"], \n \"ABS\": [\"conditionalOrExpression\"], \n \"CEIL\": [\"conditionalOrExpression\"], \n \"FLOOR\": [\"conditionalOrExpression\"], \n \"ROUND\": [\"conditionalOrExpression\"], \n \"CONCAT\": [\"conditionalOrExpression\"], \n \"STRLEN\": [\"conditionalOrExpression\"], \n \"UCASE\": [\"conditionalOrExpression\"], \n \"LCASE\": [\"conditionalOrExpression\"], \n \"ENCODE_FOR_URI\": [\"conditionalOrExpression\"], \n \"CONTAINS\": [\"conditionalOrExpression\"], \n \"STRSTARTS\": [\"conditionalOrExpression\"], \n \"STRENDS\": [\"conditionalOrExpression\"], \n \"STRBEFORE\": [\"conditionalOrExpression\"], \n \"STRAFTER\": [\"conditionalOrExpression\"], \n \"YEAR\": [\"conditionalOrExpression\"], \n \"MONTH\": [\"conditionalOrExpression\"], \n \"DAY\": [\"conditionalOrExpression\"], \n \"HOURS\": [\"conditionalOrExpression\"], \n \"MINUTES\": [\"conditionalOrExpression\"], \n \"SECONDS\": [\"conditionalOrExpression\"], \n \"TIMEZONE\": [\"conditionalOrExpression\"], \n \"TZ\": [\"conditionalOrExpression\"], \n \"NOW\": [\"conditionalOrExpression\"], \n \"UUID\": [\"conditionalOrExpression\"], \n \"STRUUID\": [\"conditionalOrExpression\"], \n \"MD5\": [\"conditionalOrExpression\"], \n \"SHA1\": [\"conditionalOrExpression\"], \n \"SHA256\": [\"conditionalOrExpression\"], \n \"SHA384\": [\"conditionalOrExpression\"], \n \"SHA512\": [\"conditionalOrExpression\"], \n \"COALESCE\": [\"conditionalOrExpression\"], \n \"IF\": [\"conditionalOrExpression\"], \n \"STRLANG\": [\"conditionalOrExpression\"], \n \"STRDT\": [\"conditionalOrExpression\"], \n \"SAMETERM\": [\"conditionalOrExpression\"], \n \"ISIRI\": [\"conditionalOrExpression\"], \n \"ISURI\": [\"conditionalOrExpression\"], \n \"ISBLANK\": [\"conditionalOrExpression\"], \n \"ISLITERAL\": [\"conditionalOrExpression\"], \n \"ISNUMERIC\": [\"conditionalOrExpression\"], \n \"TRUE\": [\"conditionalOrExpression\"], \n \"FALSE\": [\"conditionalOrExpression\"], \n \"COUNT\": [\"conditionalOrExpression\"], \n \"SUM\": [\"conditionalOrExpression\"], \n \"MIN\": [\"conditionalOrExpression\"], \n \"MAX\": [\"conditionalOrExpression\"], \n \"AVG\": [\"conditionalOrExpression\"], \n \"SAMPLE\": [\"conditionalOrExpression\"], \n \"GROUP_CONCAT\": [\"conditionalOrExpression\"], \n \"SUBSTR\": [\"conditionalOrExpression\"], \n \"REPLACE\": [\"conditionalOrExpression\"], \n \"REGEX\": [\"conditionalOrExpression\"], \n \"EXISTS\": [\"conditionalOrExpression\"], \n \"NOT\": [\"conditionalOrExpression\"], \n \"IRI_REF\": [\"conditionalOrExpression\"], \n \"STRING_LITERAL1\": [\"conditionalOrExpression\"], \n \"STRING_LITERAL2\": [\"conditionalOrExpression\"], \n \"STRING_LITERAL_LONG1\": [\"conditionalOrExpression\"], \n \"STRING_LITERAL_LONG2\": [\"conditionalOrExpression\"], \n \"INTEGER\": [\"conditionalOrExpression\"], \n \"DECIMAL\": [\"conditionalOrExpression\"], \n \"DOUBLE\": [\"conditionalOrExpression\"], \n \"INTEGER_POSITIVE\": [\"conditionalOrExpression\"], \n \"DECIMAL_POSITIVE\": [\"conditionalOrExpression\"], \n \"DOUBLE_POSITIVE\": [\"conditionalOrExpression\"], \n \"INTEGER_NEGATIVE\": [\"conditionalOrExpression\"], \n \"DECIMAL_NEGATIVE\": [\"conditionalOrExpression\"], \n \"DOUBLE_NEGATIVE\": [\"conditionalOrExpression\"], \n \"PNAME_LN\": [\"conditionalOrExpression\"], \n \"PNAME_NS\": [\"conditionalOrExpression\"]}, \n \"expressionList\" : {\n \"NIL\": [\"NIL\"], \n \"(\": [\"(\",\"expression\",\"*[,,expression]\",\")\"]}, \n \"filter\" : {\n \"FILTER\": [\"FILTER\",\"constraint\"]}, \n \"functionCall\" : {\n \"IRI_REF\": [\"iriRef\",\"argList\"], \n \"PNAME_LN\": [\"iriRef\",\"argList\"], \n \"PNAME_NS\": [\"iriRef\",\"argList\"]}, \n \"graphGraphPattern\" : {\n \"GRAPH\": [\"GRAPH\",\"varOrIRIref\",\"groupGraphPattern\"]}, \n \"graphNode\" : {\n \"VAR1\": [\"varOrTerm\"], \n \"VAR2\": [\"varOrTerm\"], \n \"NIL\": [\"varOrTerm\"], \n \"IRI_REF\": [\"varOrTerm\"], \n \"TRUE\": [\"varOrTerm\"], \n \"FALSE\": [\"varOrTerm\"], \n \"BLANK_NODE_LABEL\": [\"varOrTerm\"], \n \"ANON\": [\"varOrTerm\"], \n \"PNAME_LN\": [\"varOrTerm\"], \n \"PNAME_NS\": [\"varOrTerm\"], \n \"STRING_LITERAL1\": [\"varOrTerm\"], \n \"STRING_LITERAL2\": [\"varOrTerm\"], \n \"STRING_LITERAL_LONG1\": [\"varOrTerm\"], \n \"STRING_LITERAL_LONG2\": [\"varOrTerm\"], \n \"INTEGER\": [\"varOrTerm\"], \n \"DECIMAL\": [\"varOrTerm\"], \n \"DOUBLE\": [\"varOrTerm\"], \n \"INTEGER_POSITIVE\": [\"varOrTerm\"], \n \"DECIMAL_POSITIVE\": [\"varOrTerm\"], \n \"DOUBLE_POSITIVE\": [\"varOrTerm\"], \n \"INTEGER_NEGATIVE\": [\"varOrTerm\"], \n \"DECIMAL_NEGATIVE\": [\"varOrTerm\"], \n \"DOUBLE_NEGATIVE\": [\"varOrTerm\"], \n \"(\": [\"triplesNode\"], \n \"[\": [\"triplesNode\"]}, \n \"graphNodePath\" : {\n \"VAR1\": [\"varOrTerm\"], \n \"VAR2\": [\"varOrTerm\"], \n \"NIL\": [\"varOrTerm\"], \n \"IRI_REF\": [\"varOrTerm\"], \n \"TRUE\": [\"varOrTerm\"], \n \"FALSE\": [\"varOrTerm\"], \n \"BLANK_NODE_LABEL\": [\"varOrTerm\"], \n \"ANON\": [\"varOrTerm\"], \n \"PNAME_LN\": [\"varOrTerm\"], \n \"PNAME_NS\": [\"varOrTerm\"], \n \"STRING_LITERAL1\": [\"varOrTerm\"], \n \"STRING_LITERAL2\": [\"varOrTerm\"], \n \"STRING_LITERAL_LONG1\": [\"varOrTerm\"], \n \"STRING_LITERAL_LONG2\": [\"varOrTerm\"], \n \"INTEGER\": [\"varOrTerm\"], \n \"DECIMAL\": [\"varOrTerm\"], \n \"DOUBLE\": [\"varOrTerm\"], \n \"INTEGER_POSITIVE\": [\"varOrTerm\"], \n \"DECIMAL_POSITIVE\": [\"varOrTerm\"], \n \"DOUBLE_POSITIVE\": [\"varOrTerm\"], \n \"INTEGER_NEGATIVE\": [\"varOrTerm\"], \n \"DECIMAL_NEGATIVE\": [\"varOrTerm\"], \n \"DOUBLE_NEGATIVE\": [\"varOrTerm\"], \n \"(\": [\"triplesNodePath\"], \n \"[\": [\"triplesNodePath\"]}, \n \"graphOrDefault\" : {\n \"DEFAULT\": [\"DEFAULT\"], \n \"IRI_REF\": [\"?GRAPH\",\"iriRef\"], \n \"PNAME_LN\": [\"?GRAPH\",\"iriRef\"], \n \"PNAME_NS\": [\"?GRAPH\",\"iriRef\"], \n \"GRAPH\": [\"?GRAPH\",\"iriRef\"]}, \n \"graphPatternNotTriples\" : {\n \"{\": [\"groupOrUnionGraphPattern\"], \n \"OPTIONAL\": [\"optionalGraphPattern\"], \n \"MINUS\": [\"minusGraphPattern\"], \n \"GRAPH\": [\"graphGraphPattern\"], \n \"SERVICE\": [\"serviceGraphPattern\"], \n \"FILTER\": [\"filter\"], \n \"BIND\": [\"bind\"], \n \"VALUES\": [\"inlineData\"]}, \n \"graphRef\" : {\n \"GRAPH\": [\"GRAPH\",\"iriRef\"]}, \n \"graphRefAll\" : {\n \"GRAPH\": [\"graphRef\"], \n \"DEFAULT\": [\"DEFAULT\"], \n \"NAMED\": [\"NAMED\"], \n \"ALL\": [\"ALL\"]}, \n \"graphTerm\" : {\n \"IRI_REF\": [\"iriRef\"], \n \"PNAME_LN\": [\"iriRef\"], \n \"PNAME_NS\": [\"iriRef\"], \n \"STRING_LITERAL1\": [\"rdfLiteral\"], \n \"STRING_LITERAL2\": [\"rdfLiteral\"], \n \"STRING_LITERAL_LONG1\": [\"rdfLiteral\"], \n \"STRING_LITERAL_LONG2\": [\"rdfLiteral\"], \n \"INTEGER\": [\"numericLiteral\"], \n \"DECIMAL\": [\"numericLiteral\"], \n \"DOUBLE\": [\"numericLiteral\"], \n \"INTEGER_POSITIVE\": [\"numericLiteral\"], \n \"DECIMAL_POSITIVE\": [\"numericLiteral\"], \n \"DOUBLE_POSITIVE\": [\"numericLiteral\"], \n \"INTEGER_NEGATIVE\": [\"numericLiteral\"], \n \"DECIMAL_NEGATIVE\": [\"numericLiteral\"], \n \"DOUBLE_NEGATIVE\": [\"numericLiteral\"], \n \"TRUE\": [\"booleanLiteral\"], \n \"FALSE\": [\"booleanLiteral\"], \n \"BLANK_NODE_LABEL\": [\"blankNode\"], \n \"ANON\": [\"blankNode\"], \n \"NIL\": [\"NIL\"]}, \n \"groupClause\" : {\n \"GROUP\": [\"GROUP\",\"BY\",\"+groupCondition\"]}, \n \"groupCondition\" : {\n \"STR\": [\"builtInCall\"], \n \"LANG\": [\"builtInCall\"], \n \"LANGMATCHES\": [\"builtInCall\"], \n \"DATATYPE\": [\"builtInCall\"], \n \"BOUND\": [\"builtInCall\"], \n \"IRI\": [\"builtInCall\"], \n \"URI\": [\"builtInCall\"], \n \"BNODE\": [\"builtInCall\"], \n \"RAND\": [\"builtInCall\"], \n \"ABS\": [\"builtInCall\"], \n \"CEIL\": [\"builtInCall\"], \n \"FLOOR\": [\"builtInCall\"], \n \"ROUND\": [\"builtInCall\"], \n \"CONCAT\": [\"builtInCall\"], \n \"STRLEN\": [\"builtInCall\"], \n \"UCASE\": [\"builtInCall\"], \n \"LCASE\": [\"builtInCall\"], \n \"ENCODE_FOR_URI\": [\"builtInCall\"], \n \"CONTAINS\": [\"builtInCall\"], \n \"STRSTARTS\": [\"builtInCall\"], \n \"STRENDS\": [\"builtInCall\"], \n \"STRBEFORE\": [\"builtInCall\"], \n \"STRAFTER\": [\"builtInCall\"], \n \"YEAR\": [\"builtInCall\"], \n \"MONTH\": [\"builtInCall\"], \n \"DAY\": [\"builtInCall\"], \n \"HOURS\": [\"builtInCall\"], \n \"MINUTES\": [\"builtInCall\"], \n \"SECONDS\": [\"builtInCall\"], \n \"TIMEZONE\": [\"builtInCall\"], \n \"TZ\": [\"builtInCall\"], \n \"NOW\": [\"builtInCall\"], \n \"UUID\": [\"builtInCall\"], \n \"STRUUID\": [\"builtInCall\"], \n \"MD5\": [\"builtInCall\"], \n \"SHA1\": [\"builtInCall\"], \n \"SHA256\": [\"builtInCall\"], \n \"SHA384\": [\"builtInCall\"], \n \"SHA512\": [\"builtInCall\"], \n \"COALESCE\": [\"builtInCall\"], \n \"IF\": [\"builtInCall\"], \n \"STRLANG\": [\"builtInCall\"], \n \"STRDT\": [\"builtInCall\"], \n \"SAMETERM\": [\"builtInCall\"], \n \"ISIRI\": [\"builtInCall\"], \n \"ISURI\": [\"builtInCall\"], \n \"ISBLANK\": [\"builtInCall\"], \n \"ISLITERAL\": [\"builtInCall\"], \n \"ISNUMERIC\": [\"builtInCall\"], \n \"SUBSTR\": [\"builtInCall\"], \n \"REPLACE\": [\"builtInCall\"], \n \"REGEX\": [\"builtInCall\"], \n \"EXISTS\": [\"builtInCall\"], \n \"NOT\": [\"builtInCall\"], \n \"IRI_REF\": [\"functionCall\"], \n \"PNAME_LN\": [\"functionCall\"], \n \"PNAME_NS\": [\"functionCall\"], \n \"(\": [\"(\",\"expression\",\"?[AS,var]\",\")\"], \n \"VAR1\": [\"var\"], \n \"VAR2\": [\"var\"]}, \n \"groupGraphPattern\" : {\n \"{\": [\"{\",\"or([subSelect,groupGraphPatternSub])\",\"}\"]}, \n \"groupGraphPatternSub\" : {\n \"{\": [\"?triplesBlock\",\"*[graphPatternNotTriples,?.,?triplesBlock]\"], \n \"OPTIONAL\": [\"?triplesBlock\",\"*[graphPatternNotTriples,?.,?triplesBlock]\"], \n \"MINUS\": [\"?triplesBlock\",\"*[graphPatternNotTriples,?.,?triplesBlock]\"], \n \"GRAPH\": [\"?triplesBlock\",\"*[graphPatternNotTriples,?.,?triplesBlock]\"], \n \"SERVICE\": [\"?triplesBlock\",\"*[graphPatternNotTriples,?.,?triplesBlock]\"], \n \"FILTER\": [\"?triplesBlock\",\"*[graphPatternNotTriples,?.,?triplesBlock]\"], \n \"BIND\": [\"?triplesBlock\",\"*[graphPatternNotTriples,?.,?triplesBlock]\"], \n \"VALUES\": [\"?triplesBlock\",\"*[graphPatternNotTriples,?.,?triplesBlock]\"], \n \"VAR1\": [\"?triplesBlock\",\"*[graphPatternNotTriples,?.,?triplesBlock]\"], \n \"VAR2\": [\"?triplesBlock\",\"*[graphPatternNotTriples,?.,?triplesBlock]\"], \n \"NIL\": [\"?triplesBlock\",\"*[graphPatternNotTriples,?.,?triplesBlock]\"], \n \"(\": [\"?triplesBlock\",\"*[graphPatternNotTriples,?.,?triplesBlock]\"], \n \"[\": [\"?triplesBlock\",\"*[graphPatternNotTriples,?.,?triplesBlock]\"], \n \"IRI_REF\": [\"?triplesBlock\",\"*[graphPatternNotTriples,?.,?triplesBlock]\"], \n \"TRUE\": [\"?triplesBlock\",\"*[graphPatternNotTriples,?.,?triplesBlock]\"], \n \"FALSE\": [\"?triplesBlock\",\"*[graphPatternNotTriples,?.,?triplesBlock]\"], \n \"BLANK_NODE_LABEL\": [\"?triplesBlock\",\"*[graphPatternNotTriples,?.,?triplesBlock]\"], \n \"ANON\": [\"?triplesBlock\",\"*[graphPatternNotTriples,?.,?triplesBlock]\"], \n \"PNAME_LN\": [\"?triplesBlock\",\"*[graphPatternNotTriples,?.,?triplesBlock]\"], \n \"PNAME_NS\": [\"?triplesBlock\",\"*[graphPatternNotTriples,?.,?triplesBlock]\"], \n \"STRING_LITERAL1\": [\"?triplesBlock\",\"*[graphPatternNotTriples,?.,?triplesBlock]\"], \n \"STRING_LITERAL2\": [\"?triplesBlock\",\"*[graphPatternNotTriples,?.,?triplesBlock]\"], \n \"STRING_LITERAL_LONG1\": [\"?triplesBlock\",\"*[graphPatternNotTriples,?.,?triplesBlock]\"], \n \"STRING_LITERAL_LONG2\": [\"?triplesBlock\",\"*[graphPatternNotTriples,?.,?triplesBlock]\"], \n \"INTEGER\": [\"?triplesBlock\",\"*[graphPatternNotTriples,?.,?triplesBlock]\"], \n \"DECIMAL\": [\"?triplesBlock\",\"*[graphPatternNotTriples,?.,?triplesBlock]\"], \n \"DOUBLE\": [\"?triplesBlock\",\"*[graphPatternNotTriples,?.,?triplesBlock]\"], \n \"INTEGER_POSITIVE\": [\"?triplesBlock\",\"*[graphPatternNotTriples,?.,?triplesBlock]\"], \n \"DECIMAL_POSITIVE\": [\"?triplesBlock\",\"*[graphPatternNotTriples,?.,?triplesBlock]\"], \n \"DOUBLE_POSITIVE\": [\"?triplesBlock\",\"*[graphPatternNotTriples,?.,?triplesBlock]\"], \n \"INTEGER_NEGATIVE\": [\"?triplesBlock\",\"*[graphPatternNotTriples,?.,?triplesBlock]\"], \n \"DECIMAL_NEGATIVE\": [\"?triplesBlock\",\"*[graphPatternNotTriples,?.,?triplesBlock]\"], \n \"DOUBLE_NEGATIVE\": [\"?triplesBlock\",\"*[graphPatternNotTriples,?.,?triplesBlock]\"], \n \"}\": [\"?triplesBlock\",\"*[graphPatternNotTriples,?.,?triplesBlock]\"]}, \n \"groupOrUnionGraphPattern\" : {\n \"{\": [\"groupGraphPattern\",\"*[UNION,groupGraphPattern]\"]}, \n \"havingClause\" : {\n \"HAVING\": [\"HAVING\",\"+havingCondition\"]}, \n \"havingCondition\" : {\n \"(\": [\"constraint\"], \n \"STR\": [\"constraint\"], \n \"LANG\": [\"constraint\"], \n \"LANGMATCHES\": [\"constraint\"], \n \"DATATYPE\": [\"constraint\"], \n \"BOUND\": [\"constraint\"], \n \"IRI\": [\"constraint\"], \n \"URI\": [\"constraint\"], \n \"BNODE\": [\"constraint\"], \n \"RAND\": [\"constraint\"], \n \"ABS\": [\"constraint\"], \n \"CEIL\": [\"constraint\"], \n \"FLOOR\": [\"constraint\"], \n \"ROUND\": [\"constraint\"], \n \"CONCAT\": [\"constraint\"], \n \"STRLEN\": [\"constraint\"], \n \"UCASE\": [\"constraint\"], \n \"LCASE\": [\"constraint\"], \n \"ENCODE_FOR_URI\": [\"constraint\"], \n \"CONTAINS\": [\"constraint\"], \n \"STRSTARTS\": [\"constraint\"], \n \"STRENDS\": [\"constraint\"], \n \"STRBEFORE\": [\"constraint\"], \n \"STRAFTER\": [\"constraint\"], \n \"YEAR\": [\"constraint\"], \n \"MONTH\": [\"constraint\"], \n \"DAY\": [\"constraint\"], \n \"HOURS\": [\"constraint\"], \n \"MINUTES\": [\"constraint\"], \n \"SECONDS\": [\"constraint\"], \n \"TIMEZONE\": [\"constraint\"], \n \"TZ\": [\"constraint\"], \n \"NOW\": [\"constraint\"], \n \"UUID\": [\"constraint\"], \n \"STRUUID\": [\"constraint\"], \n \"MD5\": [\"constraint\"], \n \"SHA1\": [\"constraint\"], \n \"SHA256\": [\"constraint\"], \n \"SHA384\": [\"constraint\"], \n \"SHA512\": [\"constraint\"], \n \"COALESCE\": [\"constraint\"], \n \"IF\": [\"constraint\"], \n \"STRLANG\": [\"constraint\"], \n \"STRDT\": [\"constraint\"], \n \"SAMETERM\": [\"constraint\"], \n \"ISIRI\": [\"constraint\"], \n \"ISURI\": [\"constraint\"], \n \"ISBLANK\": [\"constraint\"], \n \"ISLITERAL\": [\"constraint\"], \n \"ISNUMERIC\": [\"constraint\"], \n \"SUBSTR\": [\"constraint\"], \n \"REPLACE\": [\"constraint\"], \n \"REGEX\": [\"constraint\"], \n \"EXISTS\": [\"constraint\"], \n \"NOT\": [\"constraint\"], \n \"IRI_REF\": [\"constraint\"], \n \"PNAME_LN\": [\"constraint\"], \n \"PNAME_NS\": [\"constraint\"]}, \n \"inlineData\" : {\n \"VALUES\": [\"VALUES\",\"dataBlock\"]}, \n \"inlineDataFull\" : {\n \"NIL\": [\"or([NIL,[ (,*var,)]])\",\"{\",\"*or([[ (,*dataBlockValue,)],NIL])\",\"}\"], \n \"(\": [\"or([NIL,[ (,*var,)]])\",\"{\",\"*or([[ (,*dataBlockValue,)],NIL])\",\"}\"]}, \n \"inlineDataOneVar\" : {\n \"VAR1\": [\"var\",\"{\",\"*dataBlockValue\",\"}\"], \n \"VAR2\": [\"var\",\"{\",\"*dataBlockValue\",\"}\"]}, \n \"insert1\" : {\n \"DATA\": [\"DATA\",\"quadData\"], \n \"{\": [\"quadPattern\",\"*usingClause\",\"WHERE\",\"groupGraphPattern\"]}, \n \"insertClause\" : {\n \"INSERT\": [\"INSERT\",\"quadPattern\"]}, \n \"integer\" : {\n \"INTEGER\": [\"INTEGER\"]}, \n \"iriRef\" : {\n \"IRI_REF\": [\"IRI_REF\"], \n \"PNAME_LN\": [\"prefixedName\"], \n \"PNAME_NS\": [\"prefixedName\"]}, \n \"iriRefOrFunction\" : {\n \"IRI_REF\": [\"iriRef\",\"?argList\"], \n \"PNAME_LN\": [\"iriRef\",\"?argList\"], \n \"PNAME_NS\": [\"iriRef\",\"?argList\"]}, \n \"limitClause\" : {\n \"LIMIT\": [\"LIMIT\",\"INTEGER\"]}, \n \"limitOffsetClauses\" : {\n \"LIMIT\": [\"limitClause\",\"?offsetClause\"], \n \"OFFSET\": [\"offsetClause\",\"?limitClause\"]}, \n \"load\" : {\n \"LOAD\": [\"LOAD\",\"?SILENT_1\",\"iriRef\",\"?[INTO,graphRef]\"]}, \n \"minusGraphPattern\" : {\n \"MINUS\": [\"MINUS\",\"groupGraphPattern\"]}, \n \"modify\" : {\n \"WITH\": [\"WITH\",\"iriRef\",\"or([[deleteClause,?insertClause],insertClause])\",\"*usingClause\",\"WHERE\",\"groupGraphPattern\"]}, \n \"move\" : {\n \"MOVE\": [\"MOVE\",\"?SILENT_4\",\"graphOrDefault\",\"TO\",\"graphOrDefault\"]}, \n \"multiplicativeExpression\" : {\n \"!\": [\"unaryExpression\",\"*or([[*,unaryExpression],[/,unaryExpression]])\"], \n \"+\": [\"unaryExpression\",\"*or([[*,unaryExpression],[/,unaryExpression]])\"], \n \"-\": [\"unaryExpression\",\"*or([[*,unaryExpression],[/,unaryExpression]])\"], \n \"VAR1\": [\"unaryExpression\",\"*or([[*,unaryExpression],[/,unaryExpression]])\"], \n \"VAR2\": [\"unaryExpression\",\"*or([[*,unaryExpression],[/,unaryExpression]])\"], \n \"(\": [\"unaryExpression\",\"*or([[*,unaryExpression],[/,unaryExpression]])\"], \n \"STR\": [\"unaryExpression\",\"*or([[*,unaryExpression],[/,unaryExpression]])\"], \n \"LANG\": [\"unaryExpression\",\"*or([[*,unaryExpression],[/,unaryExpression]])\"], \n \"LANGMATCHES\": [\"unaryExpression\",\"*or([[*,unaryExpression],[/,unaryExpression]])\"], \n \"DATATYPE\": [\"unaryExpression\",\"*or([[*,unaryExpression],[/,unaryExpression]])\"], \n \"BOUND\": [\"unaryExpression\",\"*or([[*,unaryExpression],[/,unaryExpression]])\"], \n \"IRI\": [\"unaryExpression\",\"*or([[*,unaryExpression],[/,unaryExpression]])\"], \n \"URI\": [\"unaryExpression\",\"*or([[*,unaryExpression],[/,unaryExpression]])\"], \n \"BNODE\": [\"unaryExpression\",\"*or([[*,unaryExpression],[/,unaryExpression]])\"], \n \"RAND\": [\"unaryExpression\",\"*or([[*,unaryExpression],[/,unaryExpression]])\"], \n \"ABS\": [\"unaryExpression\",\"*or([[*,unaryExpression],[/,unaryExpression]])\"], \n \"CEIL\": [\"unaryExpression\",\"*or([[*,unaryExpression],[/,unaryExpression]])\"], \n \"FLOOR\": [\"unaryExpression\",\"*or([[*,unaryExpression],[/,unaryExpression]])\"], \n \"ROUND\": [\"unaryExpression\",\"*or([[*,unaryExpression],[/,unaryExpression]])\"], \n \"CONCAT\": [\"unaryExpression\",\"*or([[*,unaryExpression],[/,unaryExpression]])\"], \n \"STRLEN\": [\"unaryExpression\",\"*or([[*,unaryExpression],[/,unaryExpression]])\"], \n \"UCASE\": [\"unaryExpression\",\"*or([[*,unaryExpression],[/,unaryExpression]])\"], \n \"LCASE\": [\"unaryExpression\",\"*or([[*,unaryExpression],[/,unaryExpression]])\"], \n \"ENCODE_FOR_URI\": [\"unaryExpression\",\"*or([[*,unaryExpression],[/,unaryExpression]])\"], \n \"CONTAINS\": [\"unaryExpression\",\"*or([[*,unaryExpression],[/,unaryExpression]])\"], \n \"STRSTARTS\": [\"unaryExpression\",\"*or([[*,unaryExpression],[/,unaryExpression]])\"], \n \"STRENDS\": [\"unaryExpression\",\"*or([[*,unaryExpression],[/,unaryExpression]])\"], \n \"STRBEFORE\": [\"unaryExpression\",\"*or([[*,unaryExpression],[/,unaryExpression]])\"], \n \"STRAFTER\": [\"unaryExpression\",\"*or([[*,unaryExpression],[/,unaryExpression]])\"], \n \"YEAR\": [\"unaryExpression\",\"*or([[*,unaryExpression],[/,unaryExpression]])\"], \n \"MONTH\": [\"unaryExpression\",\"*or([[*,unaryExpression],[/,unaryExpression]])\"], \n \"DAY\": [\"unaryExpression\",\"*or([[*,unaryExpression],[/,unaryExpression]])\"], \n \"HOURS\": [\"unaryExpression\",\"*or([[*,unaryExpression],[/,unaryExpression]])\"], \n \"MINUTES\": [\"unaryExpression\",\"*or([[*,unaryExpression],[/,unaryExpression]])\"], \n \"SECONDS\": [\"unaryExpression\",\"*or([[*,unaryExpression],[/,unaryExpression]])\"], \n \"TIMEZONE\": [\"unaryExpression\",\"*or([[*,unaryExpression],[/,unaryExpression]])\"], \n \"TZ\": [\"unaryExpression\",\"*or([[*,unaryExpression],[/,unaryExpression]])\"], \n \"NOW\": [\"unaryExpression\",\"*or([[*,unaryExpression],[/,unaryExpression]])\"], \n \"UUID\": [\"unaryExpression\",\"*or([[*,unaryExpression],[/,unaryExpression]])\"], \n \"STRUUID\": [\"unaryExpression\",\"*or([[*,unaryExpression],[/,unaryExpression]])\"], \n \"MD5\": [\"unaryExpression\",\"*or([[*,unaryExpression],[/,unaryExpression]])\"], \n \"SHA1\": [\"unaryExpression\",\"*or([[*,unaryExpression],[/,unaryExpression]])\"], \n \"SHA256\": [\"unaryExpression\",\"*or([[*,unaryExpression],[/,unaryExpression]])\"], \n \"SHA384\": [\"unaryExpression\",\"*or([[*,unaryExpression],[/,unaryExpression]])\"], \n \"SHA512\": [\"unaryExpression\",\"*or([[*,unaryExpression],[/,unaryExpression]])\"], \n \"COALESCE\": [\"unaryExpression\",\"*or([[*,unaryExpression],[/,unaryExpression]])\"], \n \"IF\": [\"unaryExpression\",\"*or([[*,unaryExpression],[/,unaryExpression]])\"], \n \"STRLANG\": [\"unaryExpression\",\"*or([[*,unaryExpression],[/,unaryExpression]])\"], \n \"STRDT\": [\"unaryExpression\",\"*or([[*,unaryExpression],[/,unaryExpression]])\"], \n \"SAMETERM\": [\"unaryExpression\",\"*or([[*,unaryExpression],[/,unaryExpression]])\"], \n \"ISIRI\": [\"unaryExpression\",\"*or([[*,unaryExpression],[/,unaryExpression]])\"], \n \"ISURI\": [\"unaryExpression\",\"*or([[*,unaryExpression],[/,unaryExpression]])\"], \n \"ISBLANK\": [\"unaryExpression\",\"*or([[*,unaryExpression],[/,unaryExpression]])\"], \n \"ISLITERAL\": [\"unaryExpression\",\"*or([[*,unaryExpression],[/,unaryExpression]])\"], \n \"ISNUMERIC\": [\"unaryExpression\",\"*or([[*,unaryExpression],[/,unaryExpression]])\"], \n \"TRUE\": [\"unaryExpression\",\"*or([[*,unaryExpression],[/,unaryExpression]])\"], \n \"FALSE\": [\"unaryExpression\",\"*or([[*,unaryExpression],[/,unaryExpression]])\"], \n \"COUNT\": [\"unaryExpression\",\"*or([[*,unaryExpression],[/,unaryExpression]])\"], \n \"SUM\": [\"unaryExpression\",\"*or([[*,unaryExpression],[/,unaryExpression]])\"], \n \"MIN\": [\"unaryExpression\",\"*or([[*,unaryExpression],[/,unaryExpression]])\"], \n \"MAX\": [\"unaryExpression\",\"*or([[*,unaryExpression],[/,unaryExpression]])\"], \n \"AVG\": [\"unaryExpression\",\"*or([[*,unaryExpression],[/,unaryExpression]])\"], \n \"SAMPLE\": [\"unaryExpression\",\"*or([[*,unaryExpression],[/,unaryExpression]])\"], \n \"GROUP_CONCAT\": [\"unaryExpression\",\"*or([[*,unaryExpression],[/,unaryExpression]])\"], \n \"SUBSTR\": [\"unaryExpression\",\"*or([[*,unaryExpression],[/,unaryExpression]])\"], \n \"REPLACE\": [\"unaryExpression\",\"*or([[*,unaryExpression],[/,unaryExpression]])\"], \n \"REGEX\": [\"unaryExpression\",\"*or([[*,unaryExpression],[/,unaryExpression]])\"], \n \"EXISTS\": [\"unaryExpression\",\"*or([[*,unaryExpression],[/,unaryExpression]])\"], \n \"NOT\": [\"unaryExpression\",\"*or([[*,unaryExpression],[/,unaryExpression]])\"], \n \"IRI_REF\": [\"unaryExpression\",\"*or([[*,unaryExpression],[/,unaryExpression]])\"], \n \"STRING_LITERAL1\": [\"unaryExpression\",\"*or([[*,unaryExpression],[/,unaryExpression]])\"], \n \"STRING_LITERAL2\": [\"unaryExpression\",\"*or([[*,unaryExpression],[/,unaryExpression]])\"], \n \"STRING_LITERAL_LONG1\": [\"unaryExpression\",\"*or([[*,unaryExpression],[/,unaryExpression]])\"], \n \"STRING_LITERAL_LONG2\": [\"unaryExpression\",\"*or([[*,unaryExpression],[/,unaryExpression]])\"], \n \"INTEGER\": [\"unaryExpression\",\"*or([[*,unaryExpression],[/,unaryExpression]])\"], \n \"DECIMAL\": [\"unaryExpression\",\"*or([[*,unaryExpression],[/,unaryExpression]])\"], \n \"DOUBLE\": [\"unaryExpression\",\"*or([[*,unaryExpression],[/,unaryExpression]])\"], \n \"INTEGER_POSITIVE\": [\"unaryExpression\",\"*or([[*,unaryExpression],[/,unaryExpression]])\"], \n \"DECIMAL_POSITIVE\": [\"unaryExpression\",\"*or([[*,unaryExpression],[/,unaryExpression]])\"], \n \"DOUBLE_POSITIVE\": [\"unaryExpression\",\"*or([[*,unaryExpression],[/,unaryExpression]])\"], \n \"INTEGER_NEGATIVE\": [\"unaryExpression\",\"*or([[*,unaryExpression],[/,unaryExpression]])\"], \n \"DECIMAL_NEGATIVE\": [\"unaryExpression\",\"*or([[*,unaryExpression],[/,unaryExpression]])\"], \n \"DOUBLE_NEGATIVE\": [\"unaryExpression\",\"*or([[*,unaryExpression],[/,unaryExpression]])\"], \n \"PNAME_LN\": [\"unaryExpression\",\"*or([[*,unaryExpression],[/,unaryExpression]])\"], \n \"PNAME_NS\": [\"unaryExpression\",\"*or([[*,unaryExpression],[/,unaryExpression]])\"]}, \n \"namedGraphClause\" : {\n \"NAMED\": [\"NAMED\",\"sourceSelector\"]}, \n \"notExistsFunc\" : {\n \"NOT\": [\"NOT\",\"EXISTS\",\"groupGraphPattern\"]}, \n \"numericExpression\" : {\n \"!\": [\"additiveExpression\"], \n \"+\": [\"additiveExpression\"], \n \"-\": [\"additiveExpression\"], \n \"VAR1\": [\"additiveExpression\"], \n \"VAR2\": [\"additiveExpression\"], \n \"(\": [\"additiveExpression\"], \n \"STR\": [\"additiveExpression\"], \n \"LANG\": [\"additiveExpression\"], \n \"LANGMATCHES\": [\"additiveExpression\"], \n \"DATATYPE\": [\"additiveExpression\"], \n \"BOUND\": [\"additiveExpression\"], \n \"IRI\": [\"additiveExpression\"], \n \"URI\": [\"additiveExpression\"], \n \"BNODE\": [\"additiveExpression\"], \n \"RAND\": [\"additiveExpression\"], \n \"ABS\": [\"additiveExpression\"], \n \"CEIL\": [\"additiveExpression\"], \n \"FLOOR\": [\"additiveExpression\"], \n \"ROUND\": [\"additiveExpression\"], \n \"CONCAT\": [\"additiveExpression\"], \n \"STRLEN\": [\"additiveExpression\"], \n \"UCASE\": [\"additiveExpression\"], \n \"LCASE\": [\"additiveExpression\"], \n \"ENCODE_FOR_URI\": [\"additiveExpression\"], \n \"CONTAINS\": [\"additiveExpression\"], \n \"STRSTARTS\": [\"additiveExpression\"], \n \"STRENDS\": [\"additiveExpression\"], \n \"STRBEFORE\": [\"additiveExpression\"], \n \"STRAFTER\": [\"additiveExpression\"], \n \"YEAR\": [\"additiveExpression\"], \n \"MONTH\": [\"additiveExpression\"], \n \"DAY\": [\"additiveExpression\"], \n \"HOURS\": [\"additiveExpression\"], \n \"MINUTES\": [\"additiveExpression\"], \n \"SECONDS\": [\"additiveExpression\"], \n \"TIMEZONE\": [\"additiveExpression\"], \n \"TZ\": [\"additiveExpression\"], \n \"NOW\": [\"additiveExpression\"], \n \"UUID\": [\"additiveExpression\"], \n \"STRUUID\": [\"additiveExpression\"], \n \"MD5\": [\"additiveExpression\"], \n \"SHA1\": [\"additiveExpression\"], \n \"SHA256\": [\"additiveExpression\"], \n \"SHA384\": [\"additiveExpression\"], \n \"SHA512\": [\"additiveExpression\"], \n \"COALESCE\": [\"additiveExpression\"], \n \"IF\": [\"additiveExpression\"], \n \"STRLANG\": [\"additiveExpression\"], \n \"STRDT\": [\"additiveExpression\"], \n \"SAMETERM\": [\"additiveExpression\"], \n \"ISIRI\": [\"additiveExpression\"], \n \"ISURI\": [\"additiveExpression\"], \n \"ISBLANK\": [\"additiveExpression\"], \n \"ISLITERAL\": [\"additiveExpression\"], \n \"ISNUMERIC\": [\"additiveExpression\"], \n \"TRUE\": [\"additiveExpression\"], \n \"FALSE\": [\"additiveExpression\"], \n \"COUNT\": [\"additiveExpression\"], \n \"SUM\": [\"additiveExpression\"], \n \"MIN\": [\"additiveExpression\"], \n \"MAX\": [\"additiveExpression\"], \n \"AVG\": [\"additiveExpression\"], \n \"SAMPLE\": [\"additiveExpression\"], \n \"GROUP_CONCAT\": [\"additiveExpression\"], \n \"SUBSTR\": [\"additiveExpression\"], \n \"REPLACE\": [\"additiveExpression\"], \n \"REGEX\": [\"additiveExpression\"], \n \"EXISTS\": [\"additiveExpression\"], \n \"NOT\": [\"additiveExpression\"], \n \"IRI_REF\": [\"additiveExpression\"], \n \"STRING_LITERAL1\": [\"additiveExpression\"], \n \"STRING_LITERAL2\": [\"additiveExpression\"], \n \"STRING_LITERAL_LONG1\": [\"additiveExpression\"], \n \"STRING_LITERAL_LONG2\": [\"additiveExpression\"], \n \"INTEGER\": [\"additiveExpression\"], \n \"DECIMAL\": [\"additiveExpression\"], \n \"DOUBLE\": [\"additiveExpression\"], \n \"INTEGER_POSITIVE\": [\"additiveExpression\"], \n \"DECIMAL_POSITIVE\": [\"additiveExpression\"], \n \"DOUBLE_POSITIVE\": [\"additiveExpression\"], \n \"INTEGER_NEGATIVE\": [\"additiveExpression\"], \n \"DECIMAL_NEGATIVE\": [\"additiveExpression\"], \n \"DOUBLE_NEGATIVE\": [\"additiveExpression\"], \n \"PNAME_LN\": [\"additiveExpression\"], \n \"PNAME_NS\": [\"additiveExpression\"]}, \n \"numericLiteral\" : {\n \"INTEGER\": [\"numericLiteralUnsigned\"], \n \"DECIMAL\": [\"numericLiteralUnsigned\"], \n \"DOUBLE\": [\"numericLiteralUnsigned\"], \n \"INTEGER_POSITIVE\": [\"numericLiteralPositive\"], \n \"DECIMAL_POSITIVE\": [\"numericLiteralPositive\"], \n \"DOUBLE_POSITIVE\": [\"numericLiteralPositive\"], \n \"INTEGER_NEGATIVE\": [\"numericLiteralNegative\"], \n \"DECIMAL_NEGATIVE\": [\"numericLiteralNegative\"], \n \"DOUBLE_NEGATIVE\": [\"numericLiteralNegative\"]}, \n \"numericLiteralNegative\" : {\n \"INTEGER_NEGATIVE\": [\"INTEGER_NEGATIVE\"], \n \"DECIMAL_NEGATIVE\": [\"DECIMAL_NEGATIVE\"], \n \"DOUBLE_NEGATIVE\": [\"DOUBLE_NEGATIVE\"]}, \n \"numericLiteralPositive\" : {\n \"INTEGER_POSITIVE\": [\"INTEGER_POSITIVE\"], \n \"DECIMAL_POSITIVE\": [\"DECIMAL_POSITIVE\"], \n \"DOUBLE_POSITIVE\": [\"DOUBLE_POSITIVE\"]}, \n \"numericLiteralUnsigned\" : {\n \"INTEGER\": [\"INTEGER\"], \n \"DECIMAL\": [\"DECIMAL\"], \n \"DOUBLE\": [\"DOUBLE\"]}, \n \"object\" : {\n \"(\": [\"graphNode\"], \n \"[\": [\"graphNode\"], \n \"VAR1\": [\"graphNode\"], \n \"VAR2\": [\"graphNode\"], \n \"NIL\": [\"graphNode\"], \n \"IRI_REF\": [\"graphNode\"], \n \"TRUE\": [\"graphNode\"], \n \"FALSE\": [\"graphNode\"], \n \"BLANK_NODE_LABEL\": [\"graphNode\"], \n \"ANON\": [\"graphNode\"], \n \"PNAME_LN\": [\"graphNode\"], \n \"PNAME_NS\": [\"graphNode\"], \n \"STRING_LITERAL1\": [\"graphNode\"], \n \"STRING_LITERAL2\": [\"graphNode\"], \n \"STRING_LITERAL_LONG1\": [\"graphNode\"], \n \"STRING_LITERAL_LONG2\": [\"graphNode\"], \n \"INTEGER\": [\"graphNode\"], \n \"DECIMAL\": [\"graphNode\"], \n \"DOUBLE\": [\"graphNode\"], \n \"INTEGER_POSITIVE\": [\"graphNode\"], \n \"DECIMAL_POSITIVE\": [\"graphNode\"], \n \"DOUBLE_POSITIVE\": [\"graphNode\"], \n \"INTEGER_NEGATIVE\": [\"graphNode\"], \n \"DECIMAL_NEGATIVE\": [\"graphNode\"], \n \"DOUBLE_NEGATIVE\": [\"graphNode\"]}, \n \"objectList\" : {\n \"(\": [\"object\",\"*[,,object]\"], \n \"[\": [\"object\",\"*[,,object]\"], \n \"VAR1\": [\"object\",\"*[,,object]\"], \n \"VAR2\": [\"object\",\"*[,,object]\"], \n \"NIL\": [\"object\",\"*[,,object]\"], \n \"IRI_REF\": [\"object\",\"*[,,object]\"], \n \"TRUE\": [\"object\",\"*[,,object]\"], \n \"FALSE\": [\"object\",\"*[,,object]\"], \n \"BLANK_NODE_LABEL\": [\"object\",\"*[,,object]\"], \n \"ANON\": [\"object\",\"*[,,object]\"], \n \"PNAME_LN\": [\"object\",\"*[,,object]\"], \n \"PNAME_NS\": [\"object\",\"*[,,object]\"], \n \"STRING_LITERAL1\": [\"object\",\"*[,,object]\"], \n \"STRING_LITERAL2\": [\"object\",\"*[,,object]\"], \n \"STRING_LITERAL_LONG1\": [\"object\",\"*[,,object]\"], \n \"STRING_LITERAL_LONG2\": [\"object\",\"*[,,object]\"], \n \"INTEGER\": [\"object\",\"*[,,object]\"], \n \"DECIMAL\": [\"object\",\"*[,,object]\"], \n \"DOUBLE\": [\"object\",\"*[,,object]\"], \n \"INTEGER_POSITIVE\": [\"object\",\"*[,,object]\"], \n \"DECIMAL_POSITIVE\": [\"object\",\"*[,,object]\"], \n \"DOUBLE_POSITIVE\": [\"object\",\"*[,,object]\"], \n \"INTEGER_NEGATIVE\": [\"object\",\"*[,,object]\"], \n \"DECIMAL_NEGATIVE\": [\"object\",\"*[,,object]\"], \n \"DOUBLE_NEGATIVE\": [\"object\",\"*[,,object]\"]}, \n \"objectListPath\" : {\n \"(\": [\"objectPath\",\"*[,,objectPath]\"], \n \"[\": [\"objectPath\",\"*[,,objectPath]\"], \n \"VAR1\": [\"objectPath\",\"*[,,objectPath]\"], \n \"VAR2\": [\"objectPath\",\"*[,,objectPath]\"], \n \"NIL\": [\"objectPath\",\"*[,,objectPath]\"], \n \"IRI_REF\": [\"objectPath\",\"*[,,objectPath]\"], \n \"TRUE\": [\"objectPath\",\"*[,,objectPath]\"], \n \"FALSE\": [\"objectPath\",\"*[,,objectPath]\"], \n \"BLANK_NODE_LABEL\": [\"objectPath\",\"*[,,objectPath]\"], \n \"ANON\": [\"objectPath\",\"*[,,objectPath]\"], \n \"PNAME_LN\": [\"objectPath\",\"*[,,objectPath]\"], \n \"PNAME_NS\": [\"objectPath\",\"*[,,objectPath]\"], \n \"STRING_LITERAL1\": [\"objectPath\",\"*[,,objectPath]\"], \n \"STRING_LITERAL2\": [\"objectPath\",\"*[,,objectPath]\"], \n \"STRING_LITERAL_LONG1\": [\"objectPath\",\"*[,,objectPath]\"], \n \"STRING_LITERAL_LONG2\": [\"objectPath\",\"*[,,objectPath]\"], \n \"INTEGER\": [\"objectPath\",\"*[,,objectPath]\"], \n \"DECIMAL\": [\"objectPath\",\"*[,,objectPath]\"], \n \"DOUBLE\": [\"objectPath\",\"*[,,objectPath]\"], \n \"INTEGER_POSITIVE\": [\"objectPath\",\"*[,,objectPath]\"], \n \"DECIMAL_POSITIVE\": [\"objectPath\",\"*[,,objectPath]\"], \n \"DOUBLE_POSITIVE\": [\"objectPath\",\"*[,,objectPath]\"], \n \"INTEGER_NEGATIVE\": [\"objectPath\",\"*[,,objectPath]\"], \n \"DECIMAL_NEGATIVE\": [\"objectPath\",\"*[,,objectPath]\"], \n \"DOUBLE_NEGATIVE\": [\"objectPath\",\"*[,,objectPath]\"]}, \n \"objectPath\" : {\n \"(\": [\"graphNodePath\"], \n \"[\": [\"graphNodePath\"], \n \"VAR1\": [\"graphNodePath\"], \n \"VAR2\": [\"graphNodePath\"], \n \"NIL\": [\"graphNodePath\"], \n \"IRI_REF\": [\"graphNodePath\"], \n \"TRUE\": [\"graphNodePath\"], \n \"FALSE\": [\"graphNodePath\"], \n \"BLANK_NODE_LABEL\": [\"graphNodePath\"], \n \"ANON\": [\"graphNodePath\"], \n \"PNAME_LN\": [\"graphNodePath\"], \n \"PNAME_NS\": [\"graphNodePath\"], \n \"STRING_LITERAL1\": [\"graphNodePath\"], \n \"STRING_LITERAL2\": [\"graphNodePath\"], \n \"STRING_LITERAL_LONG1\": [\"graphNodePath\"], \n \"STRING_LITERAL_LONG2\": [\"graphNodePath\"], \n \"INTEGER\": [\"graphNodePath\"], \n \"DECIMAL\": [\"graphNodePath\"], \n \"DOUBLE\": [\"graphNodePath\"], \n \"INTEGER_POSITIVE\": [\"graphNodePath\"], \n \"DECIMAL_POSITIVE\": [\"graphNodePath\"], \n \"DOUBLE_POSITIVE\": [\"graphNodePath\"], \n \"INTEGER_NEGATIVE\": [\"graphNodePath\"], \n \"DECIMAL_NEGATIVE\": [\"graphNodePath\"], \n \"DOUBLE_NEGATIVE\": [\"graphNodePath\"]}, \n \"offsetClause\" : {\n \"OFFSET\": [\"OFFSET\",\"INTEGER\"]}, \n \"optionalGraphPattern\" : {\n \"OPTIONAL\": [\"OPTIONAL\",\"groupGraphPattern\"]}, \n \"or([*,expression])\" : {\n \"*\": [\"*\"], \n \"!\": [\"expression\"], \n \"+\": [\"expression\"], \n \"-\": [\"expression\"], \n \"VAR1\": [\"expression\"], \n \"VAR2\": [\"expression\"], \n \"(\": [\"expression\"], \n \"STR\": [\"expression\"], \n \"LANG\": [\"expression\"], \n \"LANGMATCHES\": [\"expression\"], \n \"DATATYPE\": [\"expression\"], \n \"BOUND\": [\"expression\"], \n \"IRI\": [\"expression\"], \n \"URI\": [\"expression\"], \n \"BNODE\": [\"expression\"], \n \"RAND\": [\"expression\"], \n \"ABS\": [\"expression\"], \n \"CEIL\": [\"expression\"], \n \"FLOOR\": [\"expression\"], \n \"ROUND\": [\"expression\"], \n \"CONCAT\": [\"expression\"], \n \"STRLEN\": [\"expression\"], \n \"UCASE\": [\"expression\"], \n \"LCASE\": [\"expression\"], \n \"ENCODE_FOR_URI\": [\"expression\"], \n \"CONTAINS\": [\"expression\"], \n \"STRSTARTS\": [\"expression\"], \n \"STRENDS\": [\"expression\"], \n \"STRBEFORE\": [\"expression\"], \n \"STRAFTER\": [\"expression\"], \n \"YEAR\": [\"expression\"], \n \"MONTH\": [\"expression\"], \n \"DAY\": [\"expression\"], \n \"HOURS\": [\"expression\"], \n \"MINUTES\": [\"expression\"], \n \"SECONDS\": [\"expression\"], \n \"TIMEZONE\": [\"expression\"], \n \"TZ\": [\"expression\"], \n \"NOW\": [\"expression\"], \n \"UUID\": [\"expression\"], \n \"STRUUID\": [\"expression\"], \n \"MD5\": [\"expression\"], \n \"SHA1\": [\"expression\"], \n \"SHA256\": [\"expression\"], \n \"SHA384\": [\"expression\"], \n \"SHA512\": [\"expression\"], \n \"COALESCE\": [\"expression\"], \n \"IF\": [\"expression\"], \n \"STRLANG\": [\"expression\"], \n \"STRDT\": [\"expression\"], \n \"SAMETERM\": [\"expression\"], \n \"ISIRI\": [\"expression\"], \n \"ISURI\": [\"expression\"], \n \"ISBLANK\": [\"expression\"], \n \"ISLITERAL\": [\"expression\"], \n \"ISNUMERIC\": [\"expression\"], \n \"TRUE\": [\"expression\"], \n \"FALSE\": [\"expression\"], \n \"COUNT\": [\"expression\"], \n \"SUM\": [\"expression\"], \n \"MIN\": [\"expression\"], \n \"MAX\": [\"expression\"], \n \"AVG\": [\"expression\"], \n \"SAMPLE\": [\"expression\"], \n \"GROUP_CONCAT\": [\"expression\"], \n \"SUBSTR\": [\"expression\"], \n \"REPLACE\": [\"expression\"], \n \"REGEX\": [\"expression\"], \n \"EXISTS\": [\"expression\"], \n \"NOT\": [\"expression\"], \n \"IRI_REF\": [\"expression\"], \n \"STRING_LITERAL1\": [\"expression\"], \n \"STRING_LITERAL2\": [\"expression\"], \n \"STRING_LITERAL_LONG1\": [\"expression\"], \n \"STRING_LITERAL_LONG2\": [\"expression\"], \n \"INTEGER\": [\"expression\"], \n \"DECIMAL\": [\"expression\"], \n \"DOUBLE\": [\"expression\"], \n \"INTEGER_POSITIVE\": [\"expression\"], \n \"DECIMAL_POSITIVE\": [\"expression\"], \n \"DOUBLE_POSITIVE\": [\"expression\"], \n \"INTEGER_NEGATIVE\": [\"expression\"], \n \"DECIMAL_NEGATIVE\": [\"expression\"], \n \"DOUBLE_NEGATIVE\": [\"expression\"], \n \"PNAME_LN\": [\"expression\"], \n \"PNAME_NS\": [\"expression\"]}, \n \"or([+or([var,[ (,expression,AS,var,)]]),*])\" : {\n \"(\": [\"+or([var,[ (,expression,AS,var,)]])\"], \n \"VAR1\": [\"+or([var,[ (,expression,AS,var,)]])\"], \n \"VAR2\": [\"+or([var,[ (,expression,AS,var,)]])\"], \n \"*\": [\"*\"]}, \n \"or([+varOrIRIref,*])\" : {\n \"VAR1\": [\"+varOrIRIref\"], \n \"VAR2\": [\"+varOrIRIref\"], \n \"IRI_REF\": [\"+varOrIRIref\"], \n \"PNAME_LN\": [\"+varOrIRIref\"], \n \"PNAME_NS\": [\"+varOrIRIref\"], \n \"*\": [\"*\"]}, \n \"or([ASC,DESC])\" : {\n \"ASC\": [\"ASC\"], \n \"DESC\": [\"DESC\"]}, \n \"or([DISTINCT,REDUCED])\" : {\n \"DISTINCT\": [\"DISTINCT\"], \n \"REDUCED\": [\"REDUCED\"]}, \n \"or([LANGTAG,[^^,iriRef]])\" : {\n \"LANGTAG\": [\"LANGTAG\"], \n \"^^\": [\"[^^,iriRef]\"]}, \n \"or([NIL,[ (,*var,)]])\" : {\n \"NIL\": [\"NIL\"], \n \"(\": [\"[ (,*var,)]\"]}, \n \"or([[ (,*dataBlockValue,)],NIL])\" : {\n \"(\": [\"[ (,*dataBlockValue,)]\"], \n \"NIL\": [\"NIL\"]}, \n \"or([[ (,expression,)],NIL])\" : {\n \"(\": [\"[ (,expression,)]\"], \n \"NIL\": [\"NIL\"]}, \n \"or([[*,unaryExpression],[/,unaryExpression]])\" : {\n \"*\": [\"[*,unaryExpression]\"], \n \"/\": [\"[/,unaryExpression]\"]}, \n \"or([[+,multiplicativeExpression],[-,multiplicativeExpression],[or([numericLiteralPositive,numericLiteralNegative]),?or([[*,unaryExpression],[/,unaryExpression]])]])\" : {\n \"+\": [\"[+,multiplicativeExpression]\"], \n \"-\": [\"[-,multiplicativeExpression]\"], \n \"INTEGER_POSITIVE\": [\"[or([numericLiteralPositive,numericLiteralNegative]),?or([[*,unaryExpression],[/,unaryExpression]])]\"], \n \"DECIMAL_POSITIVE\": [\"[or([numericLiteralPositive,numericLiteralNegative]),?or([[*,unaryExpression],[/,unaryExpression]])]\"], \n \"DOUBLE_POSITIVE\": [\"[or([numericLiteralPositive,numericLiteralNegative]),?or([[*,unaryExpression],[/,unaryExpression]])]\"], \n \"INTEGER_NEGATIVE\": [\"[or([numericLiteralPositive,numericLiteralNegative]),?or([[*,unaryExpression],[/,unaryExpression]])]\"], \n \"DECIMAL_NEGATIVE\": [\"[or([numericLiteralPositive,numericLiteralNegative]),?or([[*,unaryExpression],[/,unaryExpression]])]\"], \n \"DOUBLE_NEGATIVE\": [\"[or([numericLiteralPositive,numericLiteralNegative]),?or([[*,unaryExpression],[/,unaryExpression]])]\"]}, \n \"or([[,,or([},[integer,}]])],}])\" : {\n \",\": [\"[,,or([},[integer,}]])]\"], \n \"}\": [\"}\"]}, \n \"or([[=,numericExpression],[!=,numericExpression],[<,numericExpression],[>,numericExpression],[<=,numericExpression],[>=,numericExpression],[IN,expressionList],[NOT,IN,expressionList]])\" : {\n \"=\": [\"[=,numericExpression]\"], \n \"!=\": [\"[!=,numericExpression]\"], \n \"<\": [\"[<,numericExpression]\"], \n \">\": [\"[>,numericExpression]\"], \n \"<=\": [\"[<=,numericExpression]\"], \n \">=\": [\"[>=,numericExpression]\"], \n \"IN\": [\"[IN,expressionList]\"], \n \"NOT\": [\"[NOT,IN,expressionList]\"]}, \n \"or([[constructTemplate,*datasetClause,whereClause,solutionModifier],[*datasetClause,WHERE,{,?triplesTemplate,},solutionModifier]])\" : {\n \"{\": [\"[constructTemplate,*datasetClause,whereClause,solutionModifier]\"], \n \"WHERE\": [\"[*datasetClause,WHERE,{,?triplesTemplate,},solutionModifier]\"], \n \"FROM\": [\"[*datasetClause,WHERE,{,?triplesTemplate,},solutionModifier]\"]}, \n \"or([[deleteClause,?insertClause],insertClause])\" : {\n \"DELETE\": [\"[deleteClause,?insertClause]\"], \n \"INSERT\": [\"insertClause\"]}, \n \"or([[integer,or([[,,or([},[integer,}]])],}])],[,,integer,}]])\" : {\n \"INTEGER\": [\"[integer,or([[,,or([},[integer,}]])],}])]\"], \n \",\": [\"[,,integer,}]\"]}, \n \"or([baseDecl,prefixDecl])\" : {\n \"BASE\": [\"baseDecl\"], \n \"PREFIX\": [\"prefixDecl\"]}, \n \"or([defaultGraphClause,namedGraphClause])\" : {\n \"IRI_REF\": [\"defaultGraphClause\"], \n \"PNAME_LN\": [\"defaultGraphClause\"], \n \"PNAME_NS\": [\"defaultGraphClause\"], \n \"NAMED\": [\"namedGraphClause\"]}, \n \"or([inlineDataOneVar,inlineDataFull])\" : {\n \"VAR1\": [\"inlineDataOneVar\"], \n \"VAR2\": [\"inlineDataOneVar\"], \n \"NIL\": [\"inlineDataFull\"], \n \"(\": [\"inlineDataFull\"]}, \n \"or([iriRef,[NAMED,iriRef]])\" : {\n \"IRI_REF\": [\"iriRef\"], \n \"PNAME_LN\": [\"iriRef\"], \n \"PNAME_NS\": [\"iriRef\"], \n \"NAMED\": [\"[NAMED,iriRef]\"]}, \n \"or([iriRef,a])\" : {\n \"IRI_REF\": [\"iriRef\"], \n \"PNAME_LN\": [\"iriRef\"], \n \"PNAME_NS\": [\"iriRef\"], \n \"a\": [\"a\"]}, \n \"or([numericLiteralPositive,numericLiteralNegative])\" : {\n \"INTEGER_POSITIVE\": [\"numericLiteralPositive\"], \n \"DECIMAL_POSITIVE\": [\"numericLiteralPositive\"], \n \"DOUBLE_POSITIVE\": [\"numericLiteralPositive\"], \n \"INTEGER_NEGATIVE\": [\"numericLiteralNegative\"], \n \"DECIMAL_NEGATIVE\": [\"numericLiteralNegative\"], \n \"DOUBLE_NEGATIVE\": [\"numericLiteralNegative\"]}, \n \"or([queryAll,updateAll])\" : {\n \"CONSTRUCT\": [\"queryAll\"], \n \"DESCRIBE\": [\"queryAll\"], \n \"ASK\": [\"queryAll\"], \n \"SELECT\": [\"queryAll\"], \n \"INSERT\": [\"updateAll\"], \n \"DELETE\": [\"updateAll\"], \n \"LOAD\": [\"updateAll\"], \n \"CLEAR\": [\"updateAll\"], \n \"DROP\": [\"updateAll\"], \n \"ADD\": [\"updateAll\"], \n \"MOVE\": [\"updateAll\"], \n \"COPY\": [\"updateAll\"], \n \"CREATE\": [\"updateAll\"], \n \"WITH\": [\"updateAll\"], \n \"$\": [\"updateAll\"]}, \n \"or([selectQuery,constructQuery,describeQuery,askQuery])\" : {\n \"SELECT\": [\"selectQuery\"], \n \"CONSTRUCT\": [\"constructQuery\"], \n \"DESCRIBE\": [\"describeQuery\"], \n \"ASK\": [\"askQuery\"]}, \n \"or([subSelect,groupGraphPatternSub])\" : {\n \"SELECT\": [\"subSelect\"], \n \"{\": [\"groupGraphPatternSub\"], \n \"OPTIONAL\": [\"groupGraphPatternSub\"], \n \"MINUS\": [\"groupGraphPatternSub\"], \n \"GRAPH\": [\"groupGraphPatternSub\"], \n \"SERVICE\": [\"groupGraphPatternSub\"], \n \"FILTER\": [\"groupGraphPatternSub\"], \n \"BIND\": [\"groupGraphPatternSub\"], \n \"VALUES\": [\"groupGraphPatternSub\"], \n \"VAR1\": [\"groupGraphPatternSub\"], \n \"VAR2\": [\"groupGraphPatternSub\"], \n \"NIL\": [\"groupGraphPatternSub\"], \n \"(\": [\"groupGraphPatternSub\"], \n \"[\": [\"groupGraphPatternSub\"], \n \"IRI_REF\": [\"groupGraphPatternSub\"], \n \"TRUE\": [\"groupGraphPatternSub\"], \n \"FALSE\": [\"groupGraphPatternSub\"], \n \"BLANK_NODE_LABEL\": [\"groupGraphPatternSub\"], \n \"ANON\": [\"groupGraphPatternSub\"], \n \"PNAME_LN\": [\"groupGraphPatternSub\"], \n \"PNAME_NS\": [\"groupGraphPatternSub\"], \n \"STRING_LITERAL1\": [\"groupGraphPatternSub\"], \n \"STRING_LITERAL2\": [\"groupGraphPatternSub\"], \n \"STRING_LITERAL_LONG1\": [\"groupGraphPatternSub\"], \n \"STRING_LITERAL_LONG2\": [\"groupGraphPatternSub\"], \n \"INTEGER\": [\"groupGraphPatternSub\"], \n \"DECIMAL\": [\"groupGraphPatternSub\"], \n \"DOUBLE\": [\"groupGraphPatternSub\"], \n \"INTEGER_POSITIVE\": [\"groupGraphPatternSub\"], \n \"DECIMAL_POSITIVE\": [\"groupGraphPatternSub\"], \n \"DOUBLE_POSITIVE\": [\"groupGraphPatternSub\"], \n \"INTEGER_NEGATIVE\": [\"groupGraphPatternSub\"], \n \"DECIMAL_NEGATIVE\": [\"groupGraphPatternSub\"], \n \"DOUBLE_NEGATIVE\": [\"groupGraphPatternSub\"], \n \"}\": [\"groupGraphPatternSub\"]}, \n \"or([var,[ (,expression,AS,var,)]])\" : {\n \"VAR1\": [\"var\"], \n \"VAR2\": [\"var\"], \n \"(\": [\"[ (,expression,AS,var,)]\"]}, \n \"or([verbPath,verbSimple])\" : {\n \"^\": [\"verbPath\"], \n \"a\": [\"verbPath\"], \n \"!\": [\"verbPath\"], \n \"(\": [\"verbPath\"], \n \"IRI_REF\": [\"verbPath\"], \n \"PNAME_LN\": [\"verbPath\"], \n \"PNAME_NS\": [\"verbPath\"], \n \"VAR1\": [\"verbSimple\"], \n \"VAR2\": [\"verbSimple\"]}, \n \"or([},[integer,}]])\" : {\n \"}\": [\"}\"], \n \"INTEGER\": [\"[integer,}]\"]}, \n \"orderClause\" : {\n \"ORDER\": [\"ORDER\",\"BY\",\"+orderCondition\"]}, \n \"orderCondition\" : {\n \"ASC\": [\"or([ASC,DESC])\",\"brackettedExpression\"], \n \"DESC\": [\"or([ASC,DESC])\",\"brackettedExpression\"], \n \"(\": [\"constraint\"], \n \"STR\": [\"constraint\"], \n \"LANG\": [\"constraint\"], \n \"LANGMATCHES\": [\"constraint\"], \n \"DATATYPE\": [\"constraint\"], \n \"BOUND\": [\"constraint\"], \n \"IRI\": [\"constraint\"], \n \"URI\": [\"constraint\"], \n \"BNODE\": [\"constraint\"], \n \"RAND\": [\"constraint\"], \n \"ABS\": [\"constraint\"], \n \"CEIL\": [\"constraint\"], \n \"FLOOR\": [\"constraint\"], \n \"ROUND\": [\"constraint\"], \n \"CONCAT\": [\"constraint\"], \n \"STRLEN\": [\"constraint\"], \n \"UCASE\": [\"constraint\"], \n \"LCASE\": [\"constraint\"], \n \"ENCODE_FOR_URI\": [\"constraint\"], \n \"CONTAINS\": [\"constraint\"], \n \"STRSTARTS\": [\"constraint\"], \n \"STRENDS\": [\"constraint\"], \n \"STRBEFORE\": [\"constraint\"], \n \"STRAFTER\": [\"constraint\"], \n \"YEAR\": [\"constraint\"], \n \"MONTH\": [\"constraint\"], \n \"DAY\": [\"constraint\"], \n \"HOURS\": [\"constraint\"], \n \"MINUTES\": [\"constraint\"], \n \"SECONDS\": [\"constraint\"], \n \"TIMEZONE\": [\"constraint\"], \n \"TZ\": [\"constraint\"], \n \"NOW\": [\"constraint\"], \n \"UUID\": [\"constraint\"], \n \"STRUUID\": [\"constraint\"], \n \"MD5\": [\"constraint\"], \n \"SHA1\": [\"constraint\"], \n \"SHA256\": [\"constraint\"], \n \"SHA384\": [\"constraint\"], \n \"SHA512\": [\"constraint\"], \n \"COALESCE\": [\"constraint\"], \n \"IF\": [\"constraint\"], \n \"STRLANG\": [\"constraint\"], \n \"STRDT\": [\"constraint\"], \n \"SAMETERM\": [\"constraint\"], \n \"ISIRI\": [\"constraint\"], \n \"ISURI\": [\"constraint\"], \n \"ISBLANK\": [\"constraint\"], \n \"ISLITERAL\": [\"constraint\"], \n \"ISNUMERIC\": [\"constraint\"], \n \"SUBSTR\": [\"constraint\"], \n \"REPLACE\": [\"constraint\"], \n \"REGEX\": [\"constraint\"], \n \"EXISTS\": [\"constraint\"], \n \"NOT\": [\"constraint\"], \n \"IRI_REF\": [\"constraint\"], \n \"PNAME_LN\": [\"constraint\"], \n \"PNAME_NS\": [\"constraint\"], \n \"VAR1\": [\"var\"], \n \"VAR2\": [\"var\"]}, \n \"path\" : {\n \"^\": [\"pathAlternative\"], \n \"a\": [\"pathAlternative\"], \n \"!\": [\"pathAlternative\"], \n \"(\": [\"pathAlternative\"], \n \"IRI_REF\": [\"pathAlternative\"], \n \"PNAME_LN\": [\"pathAlternative\"], \n \"PNAME_NS\": [\"pathAlternative\"]}, \n \"pathAlternative\" : {\n \"^\": [\"pathSequence\",\"*[|,pathSequence]\"], \n \"a\": [\"pathSequence\",\"*[|,pathSequence]\"], \n \"!\": [\"pathSequence\",\"*[|,pathSequence]\"], \n \"(\": [\"pathSequence\",\"*[|,pathSequence]\"], \n \"IRI_REF\": [\"pathSequence\",\"*[|,pathSequence]\"], \n \"PNAME_LN\": [\"pathSequence\",\"*[|,pathSequence]\"], \n \"PNAME_NS\": [\"pathSequence\",\"*[|,pathSequence]\"]}, \n \"pathElt\" : {\n \"a\": [\"pathPrimary\",\"?pathMod\"], \n \"!\": [\"pathPrimary\",\"?pathMod\"], \n \"(\": [\"pathPrimary\",\"?pathMod\"], \n \"IRI_REF\": [\"pathPrimary\",\"?pathMod\"], \n \"PNAME_LN\": [\"pathPrimary\",\"?pathMod\"], \n \"PNAME_NS\": [\"pathPrimary\",\"?pathMod\"]}, \n \"pathEltOrInverse\" : {\n \"a\": [\"pathElt\"], \n \"!\": [\"pathElt\"], \n \"(\": [\"pathElt\"], \n \"IRI_REF\": [\"pathElt\"], \n \"PNAME_LN\": [\"pathElt\"], \n \"PNAME_NS\": [\"pathElt\"], \n \"^\": [\"^\",\"pathElt\"]}, \n \"pathMod\" : {\n \"*\": [\"*\"], \n \"?\": [\"?\"], \n \"+\": [\"+\"], \n \"{\": [\"{\",\"or([[integer,or([[,,or([},[integer,}]])],}])],[,,integer,}]])\"]}, \n \"pathNegatedPropertySet\" : {\n \"a\": [\"pathOneInPropertySet\"], \n \"^\": [\"pathOneInPropertySet\"], \n \"IRI_REF\": [\"pathOneInPropertySet\"], \n \"PNAME_LN\": [\"pathOneInPropertySet\"], \n \"PNAME_NS\": [\"pathOneInPropertySet\"], \n \"(\": [\"(\",\"?[pathOneInPropertySet,*[|,pathOneInPropertySet]]\",\")\"]}, \n \"pathOneInPropertySet\" : {\n \"IRI_REF\": [\"iriRef\"], \n \"PNAME_LN\": [\"iriRef\"], \n \"PNAME_NS\": [\"iriRef\"], \n \"a\": [\"a\"], \n \"^\": [\"^\",\"or([iriRef,a])\"]}, \n \"pathPrimary\" : {\n \"IRI_REF\": [\"storeProperty\",\"iriRef\"], \n \"PNAME_LN\": [\"storeProperty\",\"iriRef\"], \n \"PNAME_NS\": [\"storeProperty\",\"iriRef\"], \n \"a\": [\"storeProperty\",\"a\"], \n \"!\": [\"!\",\"pathNegatedPropertySet\"], \n \"(\": [\"(\",\"path\",\")\"]}, \n \"pathSequence\" : {\n \"^\": [\"pathEltOrInverse\",\"*[/,pathEltOrInverse]\"], \n \"a\": [\"pathEltOrInverse\",\"*[/,pathEltOrInverse]\"], \n \"!\": [\"pathEltOrInverse\",\"*[/,pathEltOrInverse]\"], \n \"(\": [\"pathEltOrInverse\",\"*[/,pathEltOrInverse]\"], \n \"IRI_REF\": [\"pathEltOrInverse\",\"*[/,pathEltOrInverse]\"], \n \"PNAME_LN\": [\"pathEltOrInverse\",\"*[/,pathEltOrInverse]\"], \n \"PNAME_NS\": [\"pathEltOrInverse\",\"*[/,pathEltOrInverse]\"]}, \n \"prefixDecl\" : {\n \"PREFIX\": [\"PREFIX\",\"PNAME_NS\",\"IRI_REF\"]}, \n \"prefixedName\" : {\n \"PNAME_LN\": [\"PNAME_LN\"], \n \"PNAME_NS\": [\"PNAME_NS\"]}, \n \"primaryExpression\" : {\n \"(\": [\"brackettedExpression\"], \n \"STR\": [\"builtInCall\"], \n \"LANG\": [\"builtInCall\"], \n \"LANGMATCHES\": [\"builtInCall\"], \n \"DATATYPE\": [\"builtInCall\"], \n \"BOUND\": [\"builtInCall\"], \n \"IRI\": [\"builtInCall\"], \n \"URI\": [\"builtInCall\"], \n \"BNODE\": [\"builtInCall\"], \n \"RAND\": [\"builtInCall\"], \n \"ABS\": [\"builtInCall\"], \n \"CEIL\": [\"builtInCall\"], \n \"FLOOR\": [\"builtInCall\"], \n \"ROUND\": [\"builtInCall\"], \n \"CONCAT\": [\"builtInCall\"], \n \"STRLEN\": [\"builtInCall\"], \n \"UCASE\": [\"builtInCall\"], \n \"LCASE\": [\"builtInCall\"], \n \"ENCODE_FOR_URI\": [\"builtInCall\"], \n \"CONTAINS\": [\"builtInCall\"], \n \"STRSTARTS\": [\"builtInCall\"], \n \"STRENDS\": [\"builtInCall\"], \n \"STRBEFORE\": [\"builtInCall\"], \n \"STRAFTER\": [\"builtInCall\"], \n \"YEAR\": [\"builtInCall\"], \n \"MONTH\": [\"builtInCall\"], \n \"DAY\": [\"builtInCall\"], \n \"HOURS\": [\"builtInCall\"], \n \"MINUTES\": [\"builtInCall\"], \n \"SECONDS\": [\"builtInCall\"], \n \"TIMEZONE\": [\"builtInCall\"], \n \"TZ\": [\"builtInCall\"], \n \"NOW\": [\"builtInCall\"], \n \"UUID\": [\"builtInCall\"], \n \"STRUUID\": [\"builtInCall\"], \n \"MD5\": [\"builtInCall\"], \n \"SHA1\": [\"builtInCall\"], \n \"SHA256\": [\"builtInCall\"], \n \"SHA384\": [\"builtInCall\"], \n \"SHA512\": [\"builtInCall\"], \n \"COALESCE\": [\"builtInCall\"], \n \"IF\": [\"builtInCall\"], \n \"STRLANG\": [\"builtInCall\"], \n \"STRDT\": [\"builtInCall\"], \n \"SAMETERM\": [\"builtInCall\"], \n \"ISIRI\": [\"builtInCall\"], \n \"ISURI\": [\"builtInCall\"], \n \"ISBLANK\": [\"builtInCall\"], \n \"ISLITERAL\": [\"builtInCall\"], \n \"ISNUMERIC\": [\"builtInCall\"], \n \"SUBSTR\": [\"builtInCall\"], \n \"REPLACE\": [\"builtInCall\"], \n \"REGEX\": [\"builtInCall\"], \n \"EXISTS\": [\"builtInCall\"], \n \"NOT\": [\"builtInCall\"], \n \"IRI_REF\": [\"iriRefOrFunction\"], \n \"PNAME_LN\": [\"iriRefOrFunction\"], \n \"PNAME_NS\": [\"iriRefOrFunction\"], \n \"STRING_LITERAL1\": [\"rdfLiteral\"], \n \"STRING_LITERAL2\": [\"rdfLiteral\"], \n \"STRING_LITERAL_LONG1\": [\"rdfLiteral\"], \n \"STRING_LITERAL_LONG2\": [\"rdfLiteral\"], \n \"INTEGER\": [\"numericLiteral\"], \n \"DECIMAL\": [\"numericLiteral\"], \n \"DOUBLE\": [\"numericLiteral\"], \n \"INTEGER_POSITIVE\": [\"numericLiteral\"], \n \"DECIMAL_POSITIVE\": [\"numericLiteral\"], \n \"DOUBLE_POSITIVE\": [\"numericLiteral\"], \n \"INTEGER_NEGATIVE\": [\"numericLiteral\"], \n \"DECIMAL_NEGATIVE\": [\"numericLiteral\"], \n \"DOUBLE_NEGATIVE\": [\"numericLiteral\"], \n \"TRUE\": [\"booleanLiteral\"], \n \"FALSE\": [\"booleanLiteral\"], \n \"VAR1\": [\"var\"], \n \"VAR2\": [\"var\"], \n \"COUNT\": [\"aggregate\"], \n \"SUM\": [\"aggregate\"], \n \"MIN\": [\"aggregate\"], \n \"MAX\": [\"aggregate\"], \n \"AVG\": [\"aggregate\"], \n \"SAMPLE\": [\"aggregate\"], \n \"GROUP_CONCAT\": [\"aggregate\"]}, \n \"prologue\" : {\n \"BASE\": [\"*or([baseDecl,prefixDecl])\"], \n \"PREFIX\": [\"*or([baseDecl,prefixDecl])\"], \n \"$\": [\"*or([baseDecl,prefixDecl])\"], \n \"CONSTRUCT\": [\"*or([baseDecl,prefixDecl])\"], \n \"DESCRIBE\": [\"*or([baseDecl,prefixDecl])\"], \n \"ASK\": [\"*or([baseDecl,prefixDecl])\"], \n \"INSERT\": [\"*or([baseDecl,prefixDecl])\"], \n \"DELETE\": [\"*or([baseDecl,prefixDecl])\"], \n \"SELECT\": [\"*or([baseDecl,prefixDecl])\"], \n \"LOAD\": [\"*or([baseDecl,prefixDecl])\"], \n \"CLEAR\": [\"*or([baseDecl,prefixDecl])\"], \n \"DROP\": [\"*or([baseDecl,prefixDecl])\"], \n \"ADD\": [\"*or([baseDecl,prefixDecl])\"], \n \"MOVE\": [\"*or([baseDecl,prefixDecl])\"], \n \"COPY\": [\"*or([baseDecl,prefixDecl])\"], \n \"CREATE\": [\"*or([baseDecl,prefixDecl])\"], \n \"WITH\": [\"*or([baseDecl,prefixDecl])\"]}, \n \"propertyList\" : {\n \"a\": [\"propertyListNotEmpty\"], \n \"VAR1\": [\"propertyListNotEmpty\"], \n \"VAR2\": [\"propertyListNotEmpty\"], \n \"IRI_REF\": [\"propertyListNotEmpty\"], \n \"PNAME_LN\": [\"propertyListNotEmpty\"], \n \"PNAME_NS\": [\"propertyListNotEmpty\"], \n \".\": [], \n \"}\": [], \n \"GRAPH\": []}, \n \"propertyListNotEmpty\" : {\n \"a\": [\"verb\",\"objectList\",\"*[;,?[verb,objectList]]\"], \n \"VAR1\": [\"verb\",\"objectList\",\"*[;,?[verb,objectList]]\"], \n \"VAR2\": [\"verb\",\"objectList\",\"*[;,?[verb,objectList]]\"], \n \"IRI_REF\": [\"verb\",\"objectList\",\"*[;,?[verb,objectList]]\"], \n \"PNAME_LN\": [\"verb\",\"objectList\",\"*[;,?[verb,objectList]]\"], \n \"PNAME_NS\": [\"verb\",\"objectList\",\"*[;,?[verb,objectList]]\"]}, \n \"propertyListPath\" : {\n \"a\": [\"propertyListNotEmpty\"], \n \"VAR1\": [\"propertyListNotEmpty\"], \n \"VAR2\": [\"propertyListNotEmpty\"], \n \"IRI_REF\": [\"propertyListNotEmpty\"], \n \"PNAME_LN\": [\"propertyListNotEmpty\"], \n \"PNAME_NS\": [\"propertyListNotEmpty\"], \n \".\": [], \n \"{\": [], \n \"OPTIONAL\": [], \n \"MINUS\": [], \n \"GRAPH\": [], \n \"SERVICE\": [], \n \"FILTER\": [], \n \"BIND\": [], \n \"VALUES\": [], \n \"}\": []}, \n \"propertyListPathNotEmpty\" : {\n \"VAR1\": [\"or([verbPath,verbSimple])\",\"objectListPath\",\"*[;,?[or([verbPath,verbSimple]),objectList]]\"], \n \"VAR2\": [\"or([verbPath,verbSimple])\",\"objectListPath\",\"*[;,?[or([verbPath,verbSimple]),objectList]]\"], \n \"^\": [\"or([verbPath,verbSimple])\",\"objectListPath\",\"*[;,?[or([verbPath,verbSimple]),objectList]]\"], \n \"a\": [\"or([verbPath,verbSimple])\",\"objectListPath\",\"*[;,?[or([verbPath,verbSimple]),objectList]]\"], \n \"!\": [\"or([verbPath,verbSimple])\",\"objectListPath\",\"*[;,?[or([verbPath,verbSimple]),objectList]]\"], \n \"(\": [\"or([verbPath,verbSimple])\",\"objectListPath\",\"*[;,?[or([verbPath,verbSimple]),objectList]]\"], \n \"IRI_REF\": [\"or([verbPath,verbSimple])\",\"objectListPath\",\"*[;,?[or([verbPath,verbSimple]),objectList]]\"], \n \"PNAME_LN\": [\"or([verbPath,verbSimple])\",\"objectListPath\",\"*[;,?[or([verbPath,verbSimple]),objectList]]\"], \n \"PNAME_NS\": [\"or([verbPath,verbSimple])\",\"objectListPath\",\"*[;,?[or([verbPath,verbSimple]),objectList]]\"]}, \n \"quadData\" : {\n \"{\": [\"{\",\"disallowVars\",\"quads\",\"allowVars\",\"}\"]}, \n \"quadDataNoBnodes\" : {\n \"{\": [\"{\",\"disallowBnodes\",\"disallowVars\",\"quads\",\"allowVars\",\"allowBnodes\",\"}\"]}, \n \"quadPattern\" : {\n \"{\": [\"{\",\"quads\",\"}\"]}, \n \"quadPatternNoBnodes\" : {\n \"{\": [\"{\",\"disallowBnodes\",\"quads\",\"allowBnodes\",\"}\"]}, \n \"quads\" : {\n \"GRAPH\": [\"?triplesTemplate\",\"*[quadsNotTriples,?.,?triplesTemplate]\"], \n \"VAR1\": [\"?triplesTemplate\",\"*[quadsNotTriples,?.,?triplesTemplate]\"], \n \"VAR2\": [\"?triplesTemplate\",\"*[quadsNotTriples,?.,?triplesTemplate]\"], \n \"NIL\": [\"?triplesTemplate\",\"*[quadsNotTriples,?.,?triplesTemplate]\"], \n \"(\": [\"?triplesTemplate\",\"*[quadsNotTriples,?.,?triplesTemplate]\"], \n \"[\": [\"?triplesTemplate\",\"*[quadsNotTriples,?.,?triplesTemplate]\"], \n \"IRI_REF\": [\"?triplesTemplate\",\"*[quadsNotTriples,?.,?triplesTemplate]\"], \n \"TRUE\": [\"?triplesTemplate\",\"*[quadsNotTriples,?.,?triplesTemplate]\"], \n \"FALSE\": [\"?triplesTemplate\",\"*[quadsNotTriples,?.,?triplesTemplate]\"], \n \"BLANK_NODE_LABEL\": [\"?triplesTemplate\",\"*[quadsNotTriples,?.,?triplesTemplate]\"], \n \"ANON\": [\"?triplesTemplate\",\"*[quadsNotTriples,?.,?triplesTemplate]\"], \n \"PNAME_LN\": [\"?triplesTemplate\",\"*[quadsNotTriples,?.,?triplesTemplate]\"], \n \"PNAME_NS\": [\"?triplesTemplate\",\"*[quadsNotTriples,?.,?triplesTemplate]\"], \n \"STRING_LITERAL1\": [\"?triplesTemplate\",\"*[quadsNotTriples,?.,?triplesTemplate]\"], \n \"STRING_LITERAL2\": [\"?triplesTemplate\",\"*[quadsNotTriples,?.,?triplesTemplate]\"], \n \"STRING_LITERAL_LONG1\": [\"?triplesTemplate\",\"*[quadsNotTriples,?.,?triplesTemplate]\"], \n \"STRING_LITERAL_LONG2\": [\"?triplesTemplate\",\"*[quadsNotTriples,?.,?triplesTemplate]\"], \n \"INTEGER\": [\"?triplesTemplate\",\"*[quadsNotTriples,?.,?triplesTemplate]\"], \n \"DECIMAL\": [\"?triplesTemplate\",\"*[quadsNotTriples,?.,?triplesTemplate]\"], \n \"DOUBLE\": [\"?triplesTemplate\",\"*[quadsNotTriples,?.,?triplesTemplate]\"], \n \"INTEGER_POSITIVE\": [\"?triplesTemplate\",\"*[quadsNotTriples,?.,?triplesTemplate]\"], \n \"DECIMAL_POSITIVE\": [\"?triplesTemplate\",\"*[quadsNotTriples,?.,?triplesTemplate]\"], \n \"DOUBLE_POSITIVE\": [\"?triplesTemplate\",\"*[quadsNotTriples,?.,?triplesTemplate]\"], \n \"INTEGER_NEGATIVE\": [\"?triplesTemplate\",\"*[quadsNotTriples,?.,?triplesTemplate]\"], \n \"DECIMAL_NEGATIVE\": [\"?triplesTemplate\",\"*[quadsNotTriples,?.,?triplesTemplate]\"], \n \"DOUBLE_NEGATIVE\": [\"?triplesTemplate\",\"*[quadsNotTriples,?.,?triplesTemplate]\"], \n \"}\": [\"?triplesTemplate\",\"*[quadsNotTriples,?.,?triplesTemplate]\"]}, \n \"quadsNotTriples\" : {\n \"GRAPH\": [\"GRAPH\",\"varOrIRIref\",\"{\",\"?triplesTemplate\",\"}\"]}, \n \"queryAll\" : {\n \"CONSTRUCT\": [\"or([selectQuery,constructQuery,describeQuery,askQuery])\",\"valuesClause\"], \n \"DESCRIBE\": [\"or([selectQuery,constructQuery,describeQuery,askQuery])\",\"valuesClause\"], \n \"ASK\": [\"or([selectQuery,constructQuery,describeQuery,askQuery])\",\"valuesClause\"], \n \"SELECT\": [\"or([selectQuery,constructQuery,describeQuery,askQuery])\",\"valuesClause\"]}, \n \"rdfLiteral\" : {\n \"STRING_LITERAL1\": [\"string\",\"?or([LANGTAG,[^^,iriRef]])\"], \n \"STRING_LITERAL2\": [\"string\",\"?or([LANGTAG,[^^,iriRef]])\"], \n \"STRING_LITERAL_LONG1\": [\"string\",\"?or([LANGTAG,[^^,iriRef]])\"], \n \"STRING_LITERAL_LONG2\": [\"string\",\"?or([LANGTAG,[^^,iriRef]])\"]}, \n \"regexExpression\" : {\n \"REGEX\": [\"REGEX\",\"(\",\"expression\",\",\",\"expression\",\"?[,,expression]\",\")\"]}, \n \"relationalExpression\" : {\n \"!\": [\"numericExpression\",\"?or([[=,numericExpression],[!=,numericExpression],[<,numericExpression],[>,numericExpression],[<=,numericExpression],[>=,numericExpression],[IN,expressionList],[NOT,IN,expressionList]])\"], \n \"+\": [\"numericExpression\",\"?or([[=,numericExpression],[!=,numericExpression],[<,numericExpression],[>,numericExpression],[<=,numericExpression],[>=,numericExpression],[IN,expressionList],[NOT,IN,expressionList]])\"], \n \"-\": [\"numericExpression\",\"?or([[=,numericExpression],[!=,numericExpression],[<,numericExpression],[>,numericExpression],[<=,numericExpression],[>=,numericExpression],[IN,expressionList],[NOT,IN,expressionList]])\"], \n \"VAR1\": [\"numericExpression\",\"?or([[=,numericExpression],[!=,numericExpression],[<,numericExpression],[>,numericExpression],[<=,numericExpression],[>=,numericExpression],[IN,expressionList],[NOT,IN,expressionList]])\"], \n \"VAR2\": [\"numericExpression\",\"?or([[=,numericExpression],[!=,numericExpression],[<,numericExpression],[>,numericExpression],[<=,numericExpression],[>=,numericExpression],[IN,expressionList],[NOT,IN,expressionList]])\"], \n \"(\": [\"numericExpression\",\"?or([[=,numericExpression],[!=,numericExpression],[<,numericExpression],[>,numericExpression],[<=,numericExpression],[>=,numericExpression],[IN,expressionList],[NOT,IN,expressionList]])\"], \n \"STR\": [\"numericExpression\",\"?or([[=,numericExpression],[!=,numericExpression],[<,numericExpression],[>,numericExpression],[<=,numericExpression],[>=,numericExpression],[IN,expressionList],[NOT,IN,expressionList]])\"], \n \"LANG\": [\"numericExpression\",\"?or([[=,numericExpression],[!=,numericExpression],[<,numericExpression],[>,numericExpression],[<=,numericExpression],[>=,numericExpression],[IN,expressionList],[NOT,IN,expressionList]])\"], \n \"LANGMATCHES\": [\"numericExpression\",\"?or([[=,numericExpression],[!=,numericExpression],[<,numericExpression],[>,numericExpression],[<=,numericExpression],[>=,numericExpression],[IN,expressionList],[NOT,IN,expressionList]])\"], \n \"DATATYPE\": [\"numericExpression\",\"?or([[=,numericExpression],[!=,numericExpression],[<,numericExpression],[>,numericExpression],[<=,numericExpression],[>=,numericExpression],[IN,expressionList],[NOT,IN,expressionList]])\"], \n \"BOUND\": [\"numericExpression\",\"?or([[=,numericExpression],[!=,numericExpression],[<,numericExpression],[>,numericExpression],[<=,numericExpression],[>=,numericExpression],[IN,expressionList],[NOT,IN,expressionList]])\"], \n \"IRI\": [\"numericExpression\",\"?or([[=,numericExpression],[!=,numericExpression],[<,numericExpression],[>,numericExpression],[<=,numericExpression],[>=,numericExpression],[IN,expressionList],[NOT,IN,expressionList]])\"], \n \"URI\": [\"numericExpression\",\"?or([[=,numericExpression],[!=,numericExpression],[<,numericExpression],[>,numericExpression],[<=,numericExpression],[>=,numericExpression],[IN,expressionList],[NOT,IN,expressionList]])\"], \n \"BNODE\": [\"numericExpression\",\"?or([[=,numericExpression],[!=,numericExpression],[<,numericExpression],[>,numericExpression],[<=,numericExpression],[>=,numericExpression],[IN,expressionList],[NOT,IN,expressionList]])\"], \n \"RAND\": [\"numericExpression\",\"?or([[=,numericExpression],[!=,numericExpression],[<,numericExpression],[>,numericExpression],[<=,numericExpression],[>=,numericExpression],[IN,expressionList],[NOT,IN,expressionList]])\"], \n \"ABS\": [\"numericExpression\",\"?or([[=,numericExpression],[!=,numericExpression],[<,numericExpression],[>,numericExpression],[<=,numericExpression],[>=,numericExpression],[IN,expressionList],[NOT,IN,expressionList]])\"], \n \"CEIL\": [\"numericExpression\",\"?or([[=,numericExpression],[!=,numericExpression],[<,numericExpression],[>,numericExpression],[<=,numericExpression],[>=,numericExpression],[IN,expressionList],[NOT,IN,expressionList]])\"], \n \"FLOOR\": [\"numericExpression\",\"?or([[=,numericExpression],[!=,numericExpression],[<,numericExpression],[>,numericExpression],[<=,numericExpression],[>=,numericExpression],[IN,expressionList],[NOT,IN,expressionList]])\"], \n \"ROUND\": [\"numericExpression\",\"?or([[=,numericExpression],[!=,numericExpression],[<,numericExpression],[>,numericExpression],[<=,numericExpression],[>=,numericExpression],[IN,expressionList],[NOT,IN,expressionList]])\"], \n \"CONCAT\": [\"numericExpression\",\"?or([[=,numericExpression],[!=,numericExpression],[<,numericExpression],[>,numericExpression],[<=,numericExpression],[>=,numericExpression],[IN,expressionList],[NOT,IN,expressionList]])\"], \n \"STRLEN\": [\"numericExpression\",\"?or([[=,numericExpression],[!=,numericExpression],[<,numericExpression],[>,numericExpression],[<=,numericExpression],[>=,numericExpression],[IN,expressionList],[NOT,IN,expressionList]])\"], \n \"UCASE\": [\"numericExpression\",\"?or([[=,numericExpression],[!=,numericExpression],[<,numericExpression],[>,numericExpression],[<=,numericExpression],[>=,numericExpression],[IN,expressionList],[NOT,IN,expressionList]])\"], \n \"LCASE\": [\"numericExpression\",\"?or([[=,numericExpression],[!=,numericExpression],[<,numericExpression],[>,numericExpression],[<=,numericExpression],[>=,numericExpression],[IN,expressionList],[NOT,IN,expressionList]])\"], \n \"ENCODE_FOR_URI\": [\"numericExpression\",\"?or([[=,numericExpression],[!=,numericExpression],[<,numericExpression],[>,numericExpression],[<=,numericExpression],[>=,numericExpression],[IN,expressionList],[NOT,IN,expressionList]])\"], \n \"CONTAINS\": [\"numericExpression\",\"?or([[=,numericExpression],[!=,numericExpression],[<,numericExpression],[>,numericExpression],[<=,numericExpression],[>=,numericExpression],[IN,expressionList],[NOT,IN,expressionList]])\"], \n \"STRSTARTS\": [\"numericExpression\",\"?or([[=,numericExpression],[!=,numericExpression],[<,numericExpression],[>,numericExpression],[<=,numericExpression],[>=,numericExpression],[IN,expressionList],[NOT,IN,expressionList]])\"], \n \"STRENDS\": [\"numericExpression\",\"?or([[=,numericExpression],[!=,numericExpression],[<,numericExpression],[>,numericExpression],[<=,numericExpression],[>=,numericExpression],[IN,expressionList],[NOT,IN,expressionList]])\"], \n \"STRBEFORE\": [\"numericExpression\",\"?or([[=,numericExpression],[!=,numericExpression],[<,numericExpression],[>,numericExpression],[<=,numericExpression],[>=,numericExpression],[IN,expressionList],[NOT,IN,expressionList]])\"], \n \"STRAFTER\": [\"numericExpression\",\"?or([[=,numericExpression],[!=,numericExpression],[<,numericExpression],[>,numericExpression],[<=,numericExpression],[>=,numericExpression],[IN,expressionList],[NOT,IN,expressionList]])\"], \n \"YEAR\": [\"numericExpression\",\"?or([[=,numericExpression],[!=,numericExpression],[<,numericExpression],[>,numericExpression],[<=,numericExpression],[>=,numericExpression],[IN,expressionList],[NOT,IN,expressionList]])\"], \n \"MONTH\": [\"numericExpression\",\"?or([[=,numericExpression],[!=,numericExpression],[<,numericExpression],[>,numericExpression],[<=,numericExpression],[>=,numericExpression],[IN,expressionList],[NOT,IN,expressionList]])\"], \n \"DAY\": [\"numericExpression\",\"?or([[=,numericExpression],[!=,numericExpression],[<,numericExpression],[>,numericExpression],[<=,numericExpression],[>=,numericExpression],[IN,expressionList],[NOT,IN,expressionList]])\"], \n \"HOURS\": [\"numericExpression\",\"?or([[=,numericExpression],[!=,numericExpression],[<,numericExpression],[>,numericExpression],[<=,numericExpression],[>=,numericExpression],[IN,expressionList],[NOT,IN,expressionList]])\"], \n \"MINUTES\": [\"numericExpression\",\"?or([[=,numericExpression],[!=,numericExpression],[<,numericExpression],[>,numericExpression],[<=,numericExpression],[>=,numericExpression],[IN,expressionList],[NOT,IN,expressionList]])\"], \n \"SECONDS\": [\"numericExpression\",\"?or([[=,numericExpression],[!=,numericExpression],[<,numericExpression],[>,numericExpression],[<=,numericExpression],[>=,numericExpression],[IN,expressionList],[NOT,IN,expressionList]])\"], \n \"TIMEZONE\": [\"numericExpression\",\"?or([[=,numericExpression],[!=,numericExpression],[<,numericExpression],[>,numericExpression],[<=,numericExpression],[>=,numericExpression],[IN,expressionList],[NOT,IN,expressionList]])\"], \n \"TZ\": [\"numericExpression\",\"?or([[=,numericExpression],[!=,numericExpression],[<,numericExpression],[>,numericExpression],[<=,numericExpression],[>=,numericExpression],[IN,expressionList],[NOT,IN,expressionList]])\"], \n \"NOW\": [\"numericExpression\",\"?or([[=,numericExpression],[!=,numericExpression],[<,numericExpression],[>,numericExpression],[<=,numericExpression],[>=,numericExpression],[IN,expressionList],[NOT,IN,expressionList]])\"], \n \"UUID\": [\"numericExpression\",\"?or([[=,numericExpression],[!=,numericExpression],[<,numericExpression],[>,numericExpression],[<=,numericExpression],[>=,numericExpression],[IN,expressionList],[NOT,IN,expressionList]])\"], \n \"STRUUID\": [\"numericExpression\",\"?or([[=,numericExpression],[!=,numericExpression],[<,numericExpression],[>,numericExpression],[<=,numericExpression],[>=,numericExpression],[IN,expressionList],[NOT,IN,expressionList]])\"], \n \"MD5\": [\"numericExpression\",\"?or([[=,numericExpression],[!=,numericExpression],[<,numericExpression],[>,numericExpression],[<=,numericExpression],[>=,numericExpression],[IN,expressionList],[NOT,IN,expressionList]])\"], \n \"SHA1\": [\"numericExpression\",\"?or([[=,numericExpression],[!=,numericExpression],[<,numericExpression],[>,numericExpression],[<=,numericExpression],[>=,numericExpression],[IN,expressionList],[NOT,IN,expressionList]])\"], \n \"SHA256\": [\"numericExpression\",\"?or([[=,numericExpression],[!=,numericExpression],[<,numericExpression],[>,numericExpression],[<=,numericExpression],[>=,numericExpression],[IN,expressionList],[NOT,IN,expressionList]])\"], \n \"SHA384\": [\"numericExpression\",\"?or([[=,numericExpression],[!=,numericExpression],[<,numericExpression],[>,numericExpression],[<=,numericExpression],[>=,numericExpression],[IN,expressionList],[NOT,IN,expressionList]])\"], \n \"SHA512\": [\"numericExpression\",\"?or([[=,numericExpression],[!=,numericExpression],[<,numericExpression],[>,numericExpression],[<=,numericExpression],[>=,numericExpression],[IN,expressionList],[NOT,IN,expressionList]])\"], \n \"COALESCE\": [\"numericExpression\",\"?or([[=,numericExpression],[!=,numericExpression],[<,numericExpression],[>,numericExpression],[<=,numericExpression],[>=,numericExpression],[IN,expressionList],[NOT,IN,expressionList]])\"], \n \"IF\": [\"numericExpression\",\"?or([[=,numericExpression],[!=,numericExpression],[<,numericExpression],[>,numericExpression],[<=,numericExpression],[>=,numericExpression],[IN,expressionList],[NOT,IN,expressionList]])\"], \n \"STRLANG\": [\"numericExpression\",\"?or([[=,numericExpression],[!=,numericExpression],[<,numericExpression],[>,numericExpression],[<=,numericExpression],[>=,numericExpression],[IN,expressionList],[NOT,IN,expressionList]])\"], \n \"STRDT\": [\"numericExpression\",\"?or([[=,numericExpression],[!=,numericExpression],[<,numericExpression],[>,numericExpression],[<=,numericExpression],[>=,numericExpression],[IN,expressionList],[NOT,IN,expressionList]])\"], \n \"SAMETERM\": [\"numericExpression\",\"?or([[=,numericExpression],[!=,numericExpression],[<,numericExpression],[>,numericExpression],[<=,numericExpression],[>=,numericExpression],[IN,expressionList],[NOT,IN,expressionList]])\"], \n \"ISIRI\": [\"numericExpression\",\"?or([[=,numericExpression],[!=,numericExpression],[<,numericExpression],[>,numericExpression],[<=,numericExpression],[>=,numericExpression],[IN,expressionList],[NOT,IN,expressionList]])\"], \n \"ISURI\": [\"numericExpression\",\"?or([[=,numericExpression],[!=,numericExpression],[<,numericExpression],[>,numericExpression],[<=,numericExpression],[>=,numericExpression],[IN,expressionList],[NOT,IN,expressionList]])\"], \n \"ISBLANK\": [\"numericExpression\",\"?or([[=,numericExpression],[!=,numericExpression],[<,numericExpression],[>,numericExpression],[<=,numericExpression],[>=,numericExpression],[IN,expressionList],[NOT,IN,expressionList]])\"], \n \"ISLITERAL\": [\"numericExpression\",\"?or([[=,numericExpression],[!=,numericExpression],[<,numericExpression],[>,numericExpression],[<=,numericExpression],[>=,numericExpression],[IN,expressionList],[NOT,IN,expressionList]])\"], \n \"ISNUMERIC\": [\"numericExpression\",\"?or([[=,numericExpression],[!=,numericExpression],[<,numericExpression],[>,numericExpression],[<=,numericExpression],[>=,numericExpression],[IN,expressionList],[NOT,IN,expressionList]])\"], \n \"TRUE\": [\"numericExpression\",\"?or([[=,numericExpression],[!=,numericExpression],[<,numericExpression],[>,numericExpression],[<=,numericExpression],[>=,numericExpression],[IN,expressionList],[NOT,IN,expressionList]])\"], \n \"FALSE\": [\"numericExpression\",\"?or([[=,numericExpression],[!=,numericExpression],[<,numericExpression],[>,numericExpression],[<=,numericExpression],[>=,numericExpression],[IN,expressionList],[NOT,IN,expressionList]])\"], \n \"COUNT\": [\"numericExpression\",\"?or([[=,numericExpression],[!=,numericExpression],[<,numericExpression],[>,numericExpression],[<=,numericExpression],[>=,numericExpression],[IN,expressionList],[NOT,IN,expressionList]])\"], \n \"SUM\": [\"numericExpression\",\"?or([[=,numericExpression],[!=,numericExpression],[<,numericExpression],[>,numericExpression],[<=,numericExpression],[>=,numericExpression],[IN,expressionList],[NOT,IN,expressionList]])\"], \n \"MIN\": [\"numericExpression\",\"?or([[=,numericExpression],[!=,numericExpression],[<,numericExpression],[>,numericExpression],[<=,numericExpression],[>=,numericExpression],[IN,expressionList],[NOT,IN,expressionList]])\"], \n \"MAX\": [\"numericExpression\",\"?or([[=,numericExpression],[!=,numericExpression],[<,numericExpression],[>,numericExpression],[<=,numericExpression],[>=,numericExpression],[IN,expressionList],[NOT,IN,expressionList]])\"], \n \"AVG\": [\"numericExpression\",\"?or([[=,numericExpression],[!=,numericExpression],[<,numericExpression],[>,numericExpression],[<=,numericExpression],[>=,numericExpression],[IN,expressionList],[NOT,IN,expressionList]])\"], \n \"SAMPLE\": [\"numericExpression\",\"?or([[=,numericExpression],[!=,numericExpression],[<,numericExpression],[>,numericExpression],[<=,numericExpression],[>=,numericExpression],[IN,expressionList],[NOT,IN,expressionList]])\"], \n \"GROUP_CONCAT\": [\"numericExpression\",\"?or([[=,numericExpression],[!=,numericExpression],[<,numericExpression],[>,numericExpression],[<=,numericExpression],[>=,numericExpression],[IN,expressionList],[NOT,IN,expressionList]])\"], \n \"SUBSTR\": [\"numericExpression\",\"?or([[=,numericExpression],[!=,numericExpression],[<,numericExpression],[>,numericExpression],[<=,numericExpression],[>=,numericExpression],[IN,expressionList],[NOT,IN,expressionList]])\"], \n \"REPLACE\": [\"numericExpression\",\"?or([[=,numericExpression],[!=,numericExpression],[<,numericExpression],[>,numericExpression],[<=,numericExpression],[>=,numericExpression],[IN,expressionList],[NOT,IN,expressionList]])\"], \n \"REGEX\": [\"numericExpression\",\"?or([[=,numericExpression],[!=,numericExpression],[<,numericExpression],[>,numericExpression],[<=,numericExpression],[>=,numericExpression],[IN,expressionList],[NOT,IN,expressionList]])\"], \n \"EXISTS\": [\"numericExpression\",\"?or([[=,numericExpression],[!=,numericExpression],[<,numericExpression],[>,numericExpression],[<=,numericExpression],[>=,numericExpression],[IN,expressionList],[NOT,IN,expressionList]])\"], \n \"NOT\": [\"numericExpression\",\"?or([[=,numericExpression],[!=,numericExpression],[<,numericExpression],[>,numericExpression],[<=,numericExpression],[>=,numericExpression],[IN,expressionList],[NOT,IN,expressionList]])\"], \n \"IRI_REF\": [\"numericExpression\",\"?or([[=,numericExpression],[!=,numericExpression],[<,numericExpression],[>,numericExpression],[<=,numericExpression],[>=,numericExpression],[IN,expressionList],[NOT,IN,expressionList]])\"], \n \"STRING_LITERAL1\": [\"numericExpression\",\"?or([[=,numericExpression],[!=,numericExpression],[<,numericExpression],[>,numericExpression],[<=,numericExpression],[>=,numericExpression],[IN,expressionList],[NOT,IN,expressionList]])\"], \n \"STRING_LITERAL2\": [\"numericExpression\",\"?or([[=,numericExpression],[!=,numericExpression],[<,numericExpression],[>,numericExpression],[<=,numericExpression],[>=,numericExpression],[IN,expressionList],[NOT,IN,expressionList]])\"], \n \"STRING_LITERAL_LONG1\": [\"numericExpression\",\"?or([[=,numericExpression],[!=,numericExpression],[<,numericExpression],[>,numericExpression],[<=,numericExpression],[>=,numericExpression],[IN,expressionList],[NOT,IN,expressionList]])\"], \n \"STRING_LITERAL_LONG2\": [\"numericExpression\",\"?or([[=,numericExpression],[!=,numericExpression],[<,numericExpression],[>,numericExpression],[<=,numericExpression],[>=,numericExpression],[IN,expressionList],[NOT,IN,expressionList]])\"], \n \"INTEGER\": [\"numericExpression\",\"?or([[=,numericExpression],[!=,numericExpression],[<,numericExpression],[>,numericExpression],[<=,numericExpression],[>=,numericExpression],[IN,expressionList],[NOT,IN,expressionList]])\"], \n \"DECIMAL\": [\"numericExpression\",\"?or([[=,numericExpression],[!=,numericExpression],[<,numericExpression],[>,numericExpression],[<=,numericExpression],[>=,numericExpression],[IN,expressionList],[NOT,IN,expressionList]])\"], \n \"DOUBLE\": [\"numericExpression\",\"?or([[=,numericExpression],[!=,numericExpression],[<,numericExpression],[>,numericExpression],[<=,numericExpression],[>=,numericExpression],[IN,expressionList],[NOT,IN,expressionList]])\"], \n \"INTEGER_POSITIVE\": [\"numericExpression\",\"?or([[=,numericExpression],[!=,numericExpression],[<,numericExpression],[>,numericExpression],[<=,numericExpression],[>=,numericExpression],[IN,expressionList],[NOT,IN,expressionList]])\"], \n \"DECIMAL_POSITIVE\": [\"numericExpression\",\"?or([[=,numericExpression],[!=,numericExpression],[<,numericExpression],[>,numericExpression],[<=,numericExpression],[>=,numericExpression],[IN,expressionList],[NOT,IN,expressionList]])\"], \n \"DOUBLE_POSITIVE\": [\"numericExpression\",\"?or([[=,numericExpression],[!=,numericExpression],[<,numericExpression],[>,numericExpression],[<=,numericExpression],[>=,numericExpression],[IN,expressionList],[NOT,IN,expressionList]])\"], \n \"INTEGER_NEGATIVE\": [\"numericExpression\",\"?or([[=,numericExpression],[!=,numericExpression],[<,numericExpression],[>,numericExpression],[<=,numericExpression],[>=,numericExpression],[IN,expressionList],[NOT,IN,expressionList]])\"], \n \"DECIMAL_NEGATIVE\": [\"numericExpression\",\"?or([[=,numericExpression],[!=,numericExpression],[<,numericExpression],[>,numericExpression],[<=,numericExpression],[>=,numericExpression],[IN,expressionList],[NOT,IN,expressionList]])\"], \n \"DOUBLE_NEGATIVE\": [\"numericExpression\",\"?or([[=,numericExpression],[!=,numericExpression],[<,numericExpression],[>,numericExpression],[<=,numericExpression],[>=,numericExpression],[IN,expressionList],[NOT,IN,expressionList]])\"], \n \"PNAME_LN\": [\"numericExpression\",\"?or([[=,numericExpression],[!=,numericExpression],[<,numericExpression],[>,numericExpression],[<=,numericExpression],[>=,numericExpression],[IN,expressionList],[NOT,IN,expressionList]])\"], \n \"PNAME_NS\": [\"numericExpression\",\"?or([[=,numericExpression],[!=,numericExpression],[<,numericExpression],[>,numericExpression],[<=,numericExpression],[>=,numericExpression],[IN,expressionList],[NOT,IN,expressionList]])\"]}, \n \"selectClause\" : {\n \"SELECT\": [\"SELECT\",\"?or([DISTINCT,REDUCED])\",\"or([+or([var,[ (,expression,AS,var,)]]),*])\"]}, \n \"selectQuery\" : {\n \"SELECT\": [\"selectClause\",\"*datasetClause\",\"whereClause\",\"solutionModifier\"]}, \n \"serviceGraphPattern\" : {\n \"SERVICE\": [\"SERVICE\",\"?SILENT\",\"varOrIRIref\",\"groupGraphPattern\"]}, \n \"solutionModifier\" : {\n \"LIMIT\": [\"?groupClause\",\"?havingClause\",\"?orderClause\",\"?limitOffsetClauses\"], \n \"OFFSET\": [\"?groupClause\",\"?havingClause\",\"?orderClause\",\"?limitOffsetClauses\"], \n \"ORDER\": [\"?groupClause\",\"?havingClause\",\"?orderClause\",\"?limitOffsetClauses\"], \n \"HAVING\": [\"?groupClause\",\"?havingClause\",\"?orderClause\",\"?limitOffsetClauses\"], \n \"GROUP\": [\"?groupClause\",\"?havingClause\",\"?orderClause\",\"?limitOffsetClauses\"], \n \"VALUES\": [\"?groupClause\",\"?havingClause\",\"?orderClause\",\"?limitOffsetClauses\"], \n \"$\": [\"?groupClause\",\"?havingClause\",\"?orderClause\",\"?limitOffsetClauses\"], \n \"}\": [\"?groupClause\",\"?havingClause\",\"?orderClause\",\"?limitOffsetClauses\"]}, \n \"sourceSelector\" : {\n \"IRI_REF\": [\"iriRef\"], \n \"PNAME_LN\": [\"iriRef\"], \n \"PNAME_NS\": [\"iriRef\"]}, \n \"sparql11\" : {\n \"$\": [\"prologue\",\"or([queryAll,updateAll])\",\"$\"], \n \"CONSTRUCT\": [\"prologue\",\"or([queryAll,updateAll])\",\"$\"], \n \"DESCRIBE\": [\"prologue\",\"or([queryAll,updateAll])\",\"$\"], \n \"ASK\": [\"prologue\",\"or([queryAll,updateAll])\",\"$\"], \n \"INSERT\": [\"prologue\",\"or([queryAll,updateAll])\",\"$\"], \n \"DELETE\": [\"prologue\",\"or([queryAll,updateAll])\",\"$\"], \n \"SELECT\": [\"prologue\",\"or([queryAll,updateAll])\",\"$\"], \n \"LOAD\": [\"prologue\",\"or([queryAll,updateAll])\",\"$\"], \n \"CLEAR\": [\"prologue\",\"or([queryAll,updateAll])\",\"$\"], \n \"DROP\": [\"prologue\",\"or([queryAll,updateAll])\",\"$\"], \n \"ADD\": [\"prologue\",\"or([queryAll,updateAll])\",\"$\"], \n \"MOVE\": [\"prologue\",\"or([queryAll,updateAll])\",\"$\"], \n \"COPY\": [\"prologue\",\"or([queryAll,updateAll])\",\"$\"], \n \"CREATE\": [\"prologue\",\"or([queryAll,updateAll])\",\"$\"], \n \"WITH\": [\"prologue\",\"or([queryAll,updateAll])\",\"$\"], \n \"BASE\": [\"prologue\",\"or([queryAll,updateAll])\",\"$\"], \n \"PREFIX\": [\"prologue\",\"or([queryAll,updateAll])\",\"$\"]}, \n \"storeProperty\" : {\n \"VAR1\": [], \n \"VAR2\": [], \n \"IRI_REF\": [], \n \"PNAME_LN\": [], \n \"PNAME_NS\": [], \n \"a\": []}, \n \"strReplaceExpression\" : {\n \"REPLACE\": [\"REPLACE\",\"(\",\"expression\",\",\",\"expression\",\",\",\"expression\",\"?[,,expression]\",\")\"]}, \n \"string\" : {\n \"STRING_LITERAL1\": [\"STRING_LITERAL1\"], \n \"STRING_LITERAL2\": [\"STRING_LITERAL2\"], \n \"STRING_LITERAL_LONG1\": [\"STRING_LITERAL_LONG1\"], \n \"STRING_LITERAL_LONG2\": [\"STRING_LITERAL_LONG2\"]}, \n \"subSelect\" : {\n \"SELECT\": [\"selectClause\",\"whereClause\",\"solutionModifier\",\"valuesClause\"]}, \n \"substringExpression\" : {\n \"SUBSTR\": [\"SUBSTR\",\"(\",\"expression\",\",\",\"expression\",\"?[,,expression]\",\")\"]}, \n \"triplesBlock\" : {\n \"VAR1\": [\"triplesSameSubjectPath\",\"?[.,?triplesBlock]\"], \n \"VAR2\": [\"triplesSameSubjectPath\",\"?[.,?triplesBlock]\"], \n \"NIL\": [\"triplesSameSubjectPath\",\"?[.,?triplesBlock]\"], \n \"(\": [\"triplesSameSubjectPath\",\"?[.,?triplesBlock]\"], \n \"[\": [\"triplesSameSubjectPath\",\"?[.,?triplesBlock]\"], \n \"IRI_REF\": [\"triplesSameSubjectPath\",\"?[.,?triplesBlock]\"], \n \"TRUE\": [\"triplesSameSubjectPath\",\"?[.,?triplesBlock]\"], \n \"FALSE\": [\"triplesSameSubjectPath\",\"?[.,?triplesBlock]\"], \n \"BLANK_NODE_LABEL\": [\"triplesSameSubjectPath\",\"?[.,?triplesBlock]\"], \n \"ANON\": [\"triplesSameSubjectPath\",\"?[.,?triplesBlock]\"], \n \"PNAME_LN\": [\"triplesSameSubjectPath\",\"?[.,?triplesBlock]\"], \n \"PNAME_NS\": [\"triplesSameSubjectPath\",\"?[.,?triplesBlock]\"], \n \"STRING_LITERAL1\": [\"triplesSameSubjectPath\",\"?[.,?triplesBlock]\"], \n \"STRING_LITERAL2\": [\"triplesSameSubjectPath\",\"?[.,?triplesBlock]\"], \n \"STRING_LITERAL_LONG1\": [\"triplesSameSubjectPath\",\"?[.,?triplesBlock]\"], \n \"STRING_LITERAL_LONG2\": [\"triplesSameSubjectPath\",\"?[.,?triplesBlock]\"], \n \"INTEGER\": [\"triplesSameSubjectPath\",\"?[.,?triplesBlock]\"], \n \"DECIMAL\": [\"triplesSameSubjectPath\",\"?[.,?triplesBlock]\"], \n \"DOUBLE\": [\"triplesSameSubjectPath\",\"?[.,?triplesBlock]\"], \n \"INTEGER_POSITIVE\": [\"triplesSameSubjectPath\",\"?[.,?triplesBlock]\"], \n \"DECIMAL_POSITIVE\": [\"triplesSameSubjectPath\",\"?[.,?triplesBlock]\"], \n \"DOUBLE_POSITIVE\": [\"triplesSameSubjectPath\",\"?[.,?triplesBlock]\"], \n \"INTEGER_NEGATIVE\": [\"triplesSameSubjectPath\",\"?[.,?triplesBlock]\"], \n \"DECIMAL_NEGATIVE\": [\"triplesSameSubjectPath\",\"?[.,?triplesBlock]\"], \n \"DOUBLE_NEGATIVE\": [\"triplesSameSubjectPath\",\"?[.,?triplesBlock]\"]}, \n \"triplesNode\" : {\n \"(\": [\"collection\"], \n \"[\": [\"blankNodePropertyList\"]}, \n \"triplesNodePath\" : {\n \"(\": [\"collectionPath\"], \n \"[\": [\"blankNodePropertyListPath\"]}, \n \"triplesSameSubject\" : {\n \"VAR1\": [\"varOrTerm\",\"propertyListNotEmpty\"], \n \"VAR2\": [\"varOrTerm\",\"propertyListNotEmpty\"], \n \"NIL\": [\"varOrTerm\",\"propertyListNotEmpty\"], \n \"IRI_REF\": [\"varOrTerm\",\"propertyListNotEmpty\"], \n \"TRUE\": [\"varOrTerm\",\"propertyListNotEmpty\"], \n \"FALSE\": [\"varOrTerm\",\"propertyListNotEmpty\"], \n \"BLANK_NODE_LABEL\": [\"varOrTerm\",\"propertyListNotEmpty\"], \n \"ANON\": [\"varOrTerm\",\"propertyListNotEmpty\"], \n \"PNAME_LN\": [\"varOrTerm\",\"propertyListNotEmpty\"], \n \"PNAME_NS\": [\"varOrTerm\",\"propertyListNotEmpty\"], \n \"STRING_LITERAL1\": [\"varOrTerm\",\"propertyListNotEmpty\"], \n \"STRING_LITERAL2\": [\"varOrTerm\",\"propertyListNotEmpty\"], \n \"STRING_LITERAL_LONG1\": [\"varOrTerm\",\"propertyListNotEmpty\"], \n \"STRING_LITERAL_LONG2\": [\"varOrTerm\",\"propertyListNotEmpty\"], \n \"INTEGER\": [\"varOrTerm\",\"propertyListNotEmpty\"], \n \"DECIMAL\": [\"varOrTerm\",\"propertyListNotEmpty\"], \n \"DOUBLE\": [\"varOrTerm\",\"propertyListNotEmpty\"], \n \"INTEGER_POSITIVE\": [\"varOrTerm\",\"propertyListNotEmpty\"], \n \"DECIMAL_POSITIVE\": [\"varOrTerm\",\"propertyListNotEmpty\"], \n \"DOUBLE_POSITIVE\": [\"varOrTerm\",\"propertyListNotEmpty\"], \n \"INTEGER_NEGATIVE\": [\"varOrTerm\",\"propertyListNotEmpty\"], \n \"DECIMAL_NEGATIVE\": [\"varOrTerm\",\"propertyListNotEmpty\"], \n \"DOUBLE_NEGATIVE\": [\"varOrTerm\",\"propertyListNotEmpty\"], \n \"(\": [\"triplesNode\",\"propertyList\"], \n \"[\": [\"triplesNode\",\"propertyList\"]}, \n \"triplesSameSubjectPath\" : {\n \"VAR1\": [\"varOrTerm\",\"propertyListPathNotEmpty\"], \n \"VAR2\": [\"varOrTerm\",\"propertyListPathNotEmpty\"], \n \"NIL\": [\"varOrTerm\",\"propertyListPathNotEmpty\"], \n \"IRI_REF\": [\"varOrTerm\",\"propertyListPathNotEmpty\"], \n \"TRUE\": [\"varOrTerm\",\"propertyListPathNotEmpty\"], \n \"FALSE\": [\"varOrTerm\",\"propertyListPathNotEmpty\"], \n \"BLANK_NODE_LABEL\": [\"varOrTerm\",\"propertyListPathNotEmpty\"], \n \"ANON\": [\"varOrTerm\",\"propertyListPathNotEmpty\"], \n \"PNAME_LN\": [\"varOrTerm\",\"propertyListPathNotEmpty\"], \n \"PNAME_NS\": [\"varOrTerm\",\"propertyListPathNotEmpty\"], \n \"STRING_LITERAL1\": [\"varOrTerm\",\"propertyListPathNotEmpty\"], \n \"STRING_LITERAL2\": [\"varOrTerm\",\"propertyListPathNotEmpty\"], \n \"STRING_LITERAL_LONG1\": [\"varOrTerm\",\"propertyListPathNotEmpty\"], \n \"STRING_LITERAL_LONG2\": [\"varOrTerm\",\"propertyListPathNotEmpty\"], \n \"INTEGER\": [\"varOrTerm\",\"propertyListPathNotEmpty\"], \n \"DECIMAL\": [\"varOrTerm\",\"propertyListPathNotEmpty\"], \n \"DOUBLE\": [\"varOrTerm\",\"propertyListPathNotEmpty\"], \n \"INTEGER_POSITIVE\": [\"varOrTerm\",\"propertyListPathNotEmpty\"], \n \"DECIMAL_POSITIVE\": [\"varOrTerm\",\"propertyListPathNotEmpty\"], \n \"DOUBLE_POSITIVE\": [\"varOrTerm\",\"propertyListPathNotEmpty\"], \n \"INTEGER_NEGATIVE\": [\"varOrTerm\",\"propertyListPathNotEmpty\"], \n \"DECIMAL_NEGATIVE\": [\"varOrTerm\",\"propertyListPathNotEmpty\"], \n \"DOUBLE_NEGATIVE\": [\"varOrTerm\",\"propertyListPathNotEmpty\"], \n \"(\": [\"triplesNodePath\",\"propertyListPath\"], \n \"[\": [\"triplesNodePath\",\"propertyListPath\"]}, \n \"triplesTemplate\" : {\n \"VAR1\": [\"triplesSameSubject\",\"?[.,?triplesTemplate]\"], \n \"VAR2\": [\"triplesSameSubject\",\"?[.,?triplesTemplate]\"], \n \"NIL\": [\"triplesSameSubject\",\"?[.,?triplesTemplate]\"], \n \"(\": [\"triplesSameSubject\",\"?[.,?triplesTemplate]\"], \n \"[\": [\"triplesSameSubject\",\"?[.,?triplesTemplate]\"], \n \"IRI_REF\": [\"triplesSameSubject\",\"?[.,?triplesTemplate]\"], \n \"TRUE\": [\"triplesSameSubject\",\"?[.,?triplesTemplate]\"], \n \"FALSE\": [\"triplesSameSubject\",\"?[.,?triplesTemplate]\"], \n \"BLANK_NODE_LABEL\": [\"triplesSameSubject\",\"?[.,?triplesTemplate]\"], \n \"ANON\": [\"triplesSameSubject\",\"?[.,?triplesTemplate]\"], \n \"PNAME_LN\": [\"triplesSameSubject\",\"?[.,?triplesTemplate]\"], \n \"PNAME_NS\": [\"triplesSameSubject\",\"?[.,?triplesTemplate]\"], \n \"STRING_LITERAL1\": [\"triplesSameSubject\",\"?[.,?triplesTemplate]\"], \n \"STRING_LITERAL2\": [\"triplesSameSubject\",\"?[.,?triplesTemplate]\"], \n \"STRING_LITERAL_LONG1\": [\"triplesSameSubject\",\"?[.,?triplesTemplate]\"], \n \"STRING_LITERAL_LONG2\": [\"triplesSameSubject\",\"?[.,?triplesTemplate]\"], \n \"INTEGER\": [\"triplesSameSubject\",\"?[.,?triplesTemplate]\"], \n \"DECIMAL\": [\"triplesSameSubject\",\"?[.,?triplesTemplate]\"], \n \"DOUBLE\": [\"triplesSameSubject\",\"?[.,?triplesTemplate]\"], \n \"INTEGER_POSITIVE\": [\"triplesSameSubject\",\"?[.,?triplesTemplate]\"], \n \"DECIMAL_POSITIVE\": [\"triplesSameSubject\",\"?[.,?triplesTemplate]\"], \n \"DOUBLE_POSITIVE\": [\"triplesSameSubject\",\"?[.,?triplesTemplate]\"], \n \"INTEGER_NEGATIVE\": [\"triplesSameSubject\",\"?[.,?triplesTemplate]\"], \n \"DECIMAL_NEGATIVE\": [\"triplesSameSubject\",\"?[.,?triplesTemplate]\"], \n \"DOUBLE_NEGATIVE\": [\"triplesSameSubject\",\"?[.,?triplesTemplate]\"]}, \n \"unaryExpression\" : {\n \"!\": [\"!\",\"primaryExpression\"], \n \"+\": [\"+\",\"primaryExpression\"], \n \"-\": [\"-\",\"primaryExpression\"], \n \"VAR1\": [\"primaryExpression\"], \n \"VAR2\": [\"primaryExpression\"], \n \"(\": [\"primaryExpression\"], \n \"STR\": [\"primaryExpression\"], \n \"LANG\": [\"primaryExpression\"], \n \"LANGMATCHES\": [\"primaryExpression\"], \n \"DATATYPE\": [\"primaryExpression\"], \n \"BOUND\": [\"primaryExpression\"], \n \"IRI\": [\"primaryExpression\"], \n \"URI\": [\"primaryExpression\"], \n \"BNODE\": [\"primaryExpression\"], \n \"RAND\": [\"primaryExpression\"], \n \"ABS\": [\"primaryExpression\"], \n \"CEIL\": [\"primaryExpression\"], \n \"FLOOR\": [\"primaryExpression\"], \n \"ROUND\": [\"primaryExpression\"], \n \"CONCAT\": [\"primaryExpression\"], \n \"STRLEN\": [\"primaryExpression\"], \n \"UCASE\": [\"primaryExpression\"], \n \"LCASE\": [\"primaryExpression\"], \n \"ENCODE_FOR_URI\": [\"primaryExpression\"], \n \"CONTAINS\": [\"primaryExpression\"], \n \"STRSTARTS\": [\"primaryExpression\"], \n \"STRENDS\": [\"primaryExpression\"], \n \"STRBEFORE\": [\"primaryExpression\"], \n \"STRAFTER\": [\"primaryExpression\"], \n \"YEAR\": [\"primaryExpression\"], \n \"MONTH\": [\"primaryExpression\"], \n \"DAY\": [\"primaryExpression\"], \n \"HOURS\": [\"primaryExpression\"], \n \"MINUTES\": [\"primaryExpression\"], \n \"SECONDS\": [\"primaryExpression\"], \n \"TIMEZONE\": [\"primaryExpression\"], \n \"TZ\": [\"primaryExpression\"], \n \"NOW\": [\"primaryExpression\"], \n \"UUID\": [\"primaryExpression\"], \n \"STRUUID\": [\"primaryExpression\"], \n \"MD5\": [\"primaryExpression\"], \n \"SHA1\": [\"primaryExpression\"], \n \"SHA256\": [\"primaryExpression\"], \n \"SHA384\": [\"primaryExpression\"], \n \"SHA512\": [\"primaryExpression\"], \n \"COALESCE\": [\"primaryExpression\"], \n \"IF\": [\"primaryExpression\"], \n \"STRLANG\": [\"primaryExpression\"], \n \"STRDT\": [\"primaryExpression\"], \n \"SAMETERM\": [\"primaryExpression\"], \n \"ISIRI\": [\"primaryExpression\"], \n \"ISURI\": [\"primaryExpression\"], \n \"ISBLANK\": [\"primaryExpression\"], \n \"ISLITERAL\": [\"primaryExpression\"], \n \"ISNUMERIC\": [\"primaryExpression\"], \n \"TRUE\": [\"primaryExpression\"], \n \"FALSE\": [\"primaryExpression\"], \n \"COUNT\": [\"primaryExpression\"], \n \"SUM\": [\"primaryExpression\"], \n \"MIN\": [\"primaryExpression\"], \n \"MAX\": [\"primaryExpression\"], \n \"AVG\": [\"primaryExpression\"], \n \"SAMPLE\": [\"primaryExpression\"], \n \"GROUP_CONCAT\": [\"primaryExpression\"], \n \"SUBSTR\": [\"primaryExpression\"], \n \"REPLACE\": [\"primaryExpression\"], \n \"REGEX\": [\"primaryExpression\"], \n \"EXISTS\": [\"primaryExpression\"], \n \"NOT\": [\"primaryExpression\"], \n \"IRI_REF\": [\"primaryExpression\"], \n \"STRING_LITERAL1\": [\"primaryExpression\"], \n \"STRING_LITERAL2\": [\"primaryExpression\"], \n \"STRING_LITERAL_LONG1\": [\"primaryExpression\"], \n \"STRING_LITERAL_LONG2\": [\"primaryExpression\"], \n \"INTEGER\": [\"primaryExpression\"], \n \"DECIMAL\": [\"primaryExpression\"], \n \"DOUBLE\": [\"primaryExpression\"], \n \"INTEGER_POSITIVE\": [\"primaryExpression\"], \n \"DECIMAL_POSITIVE\": [\"primaryExpression\"], \n \"DOUBLE_POSITIVE\": [\"primaryExpression\"], \n \"INTEGER_NEGATIVE\": [\"primaryExpression\"], \n \"DECIMAL_NEGATIVE\": [\"primaryExpression\"], \n \"DOUBLE_NEGATIVE\": [\"primaryExpression\"], \n \"PNAME_LN\": [\"primaryExpression\"], \n \"PNAME_NS\": [\"primaryExpression\"]}, \n \"update\" : {\n \"INSERT\": [\"prologue\",\"?[update1,?[;,update]]\"], \n \"DELETE\": [\"prologue\",\"?[update1,?[;,update]]\"], \n \"LOAD\": [\"prologue\",\"?[update1,?[;,update]]\"], \n \"CLEAR\": [\"prologue\",\"?[update1,?[;,update]]\"], \n \"DROP\": [\"prologue\",\"?[update1,?[;,update]]\"], \n \"ADD\": [\"prologue\",\"?[update1,?[;,update]]\"], \n \"MOVE\": [\"prologue\",\"?[update1,?[;,update]]\"], \n \"COPY\": [\"prologue\",\"?[update1,?[;,update]]\"], \n \"CREATE\": [\"prologue\",\"?[update1,?[;,update]]\"], \n \"WITH\": [\"prologue\",\"?[update1,?[;,update]]\"], \n \"BASE\": [\"prologue\",\"?[update1,?[;,update]]\"], \n \"PREFIX\": [\"prologue\",\"?[update1,?[;,update]]\"], \n \"$\": [\"prologue\",\"?[update1,?[;,update]]\"]}, \n \"update1\" : {\n \"LOAD\": [\"load\"], \n \"CLEAR\": [\"clear\"], \n \"DROP\": [\"drop\"], \n \"ADD\": [\"add\"], \n \"MOVE\": [\"move\"], \n \"COPY\": [\"copy\"], \n \"CREATE\": [\"create\"], \n \"INSERT\": [\"INSERT\",\"insert1\"], \n \"DELETE\": [\"DELETE\",\"delete1\"], \n \"WITH\": [\"modify\"]}, \n \"updateAll\" : {\n \"INSERT\": [\"?[update1,?[;,update]]\"], \n \"DELETE\": [\"?[update1,?[;,update]]\"], \n \"LOAD\": [\"?[update1,?[;,update]]\"], \n \"CLEAR\": [\"?[update1,?[;,update]]\"], \n \"DROP\": [\"?[update1,?[;,update]]\"], \n \"ADD\": [\"?[update1,?[;,update]]\"], \n \"MOVE\": [\"?[update1,?[;,update]]\"], \n \"COPY\": [\"?[update1,?[;,update]]\"], \n \"CREATE\": [\"?[update1,?[;,update]]\"], \n \"WITH\": [\"?[update1,?[;,update]]\"], \n \"$\": [\"?[update1,?[;,update]]\"]}, \n \"usingClause\" : {\n \"USING\": [\"USING\",\"or([iriRef,[NAMED,iriRef]])\"]}, \n \"valueLogical\" : {\n \"!\": [\"relationalExpression\"], \n \"+\": [\"relationalExpression\"], \n \"-\": [\"relationalExpression\"], \n \"VAR1\": [\"relationalExpression\"], \n \"VAR2\": [\"relationalExpression\"], \n \"(\": [\"relationalExpression\"], \n \"STR\": [\"relationalExpression\"], \n \"LANG\": [\"relationalExpression\"], \n \"LANGMATCHES\": [\"relationalExpression\"], \n \"DATATYPE\": [\"relationalExpression\"], \n \"BOUND\": [\"relationalExpression\"], \n \"IRI\": [\"relationalExpression\"], \n \"URI\": [\"relationalExpression\"], \n \"BNODE\": [\"relationalExpression\"], \n \"RAND\": [\"relationalExpression\"], \n \"ABS\": [\"relationalExpression\"], \n \"CEIL\": [\"relationalExpression\"], \n \"FLOOR\": [\"relationalExpression\"], \n \"ROUND\": [\"relationalExpression\"], \n \"CONCAT\": [\"relationalExpression\"], \n \"STRLEN\": [\"relationalExpression\"], \n \"UCASE\": [\"relationalExpression\"], \n \"LCASE\": [\"relationalExpression\"], \n \"ENCODE_FOR_URI\": [\"relationalExpression\"], \n \"CONTAINS\": [\"relationalExpression\"], \n \"STRSTARTS\": [\"relationalExpression\"], \n \"STRENDS\": [\"relationalExpression\"], \n \"STRBEFORE\": [\"relationalExpression\"], \n \"STRAFTER\": [\"relationalExpression\"], \n \"YEAR\": [\"relationalExpression\"], \n \"MONTH\": [\"relationalExpression\"], \n \"DAY\": [\"relationalExpression\"], \n \"HOURS\": [\"relationalExpression\"], \n \"MINUTES\": [\"relationalExpression\"], \n \"SECONDS\": [\"relationalExpression\"], \n \"TIMEZONE\": [\"relationalExpression\"], \n \"TZ\": [\"relationalExpression\"], \n \"NOW\": [\"relationalExpression\"], \n \"UUID\": [\"relationalExpression\"], \n \"STRUUID\": [\"relationalExpression\"], \n \"MD5\": [\"relationalExpression\"], \n \"SHA1\": [\"relationalExpression\"], \n \"SHA256\": [\"relationalExpression\"], \n \"SHA384\": [\"relationalExpression\"], \n \"SHA512\": [\"relationalExpression\"], \n \"COALESCE\": [\"relationalExpression\"], \n \"IF\": [\"relationalExpression\"], \n \"STRLANG\": [\"relationalExpression\"], \n \"STRDT\": [\"relationalExpression\"], \n \"SAMETERM\": [\"relationalExpression\"], \n \"ISIRI\": [\"relationalExpression\"], \n \"ISURI\": [\"relationalExpression\"], \n \"ISBLANK\": [\"relationalExpression\"], \n \"ISLITERAL\": [\"relationalExpression\"], \n \"ISNUMERIC\": [\"relationalExpression\"], \n \"TRUE\": [\"relationalExpression\"], \n \"FALSE\": [\"relationalExpression\"], \n \"COUNT\": [\"relationalExpression\"], \n \"SUM\": [\"relationalExpression\"], \n \"MIN\": [\"relationalExpression\"], \n \"MAX\": [\"relationalExpression\"], \n \"AVG\": [\"relationalExpression\"], \n \"SAMPLE\": [\"relationalExpression\"], \n \"GROUP_CONCAT\": [\"relationalExpression\"], \n \"SUBSTR\": [\"relationalExpression\"], \n \"REPLACE\": [\"relationalExpression\"], \n \"REGEX\": [\"relationalExpression\"], \n \"EXISTS\": [\"relationalExpression\"], \n \"NOT\": [\"relationalExpression\"], \n \"IRI_REF\": [\"relationalExpression\"], \n \"STRING_LITERAL1\": [\"relationalExpression\"], \n \"STRING_LITERAL2\": [\"relationalExpression\"], \n \"STRING_LITERAL_LONG1\": [\"relationalExpression\"], \n \"STRING_LITERAL_LONG2\": [\"relationalExpression\"], \n \"INTEGER\": [\"relationalExpression\"], \n \"DECIMAL\": [\"relationalExpression\"], \n \"DOUBLE\": [\"relationalExpression\"], \n \"INTEGER_POSITIVE\": [\"relationalExpression\"], \n \"DECIMAL_POSITIVE\": [\"relationalExpression\"], \n \"DOUBLE_POSITIVE\": [\"relationalExpression\"], \n \"INTEGER_NEGATIVE\": [\"relationalExpression\"], \n \"DECIMAL_NEGATIVE\": [\"relationalExpression\"], \n \"DOUBLE_NEGATIVE\": [\"relationalExpression\"], \n \"PNAME_LN\": [\"relationalExpression\"], \n \"PNAME_NS\": [\"relationalExpression\"]}, \n \"valuesClause\" : {\n \"VALUES\": [\"VALUES\",\"dataBlock\"], \n \"$\": [], \n \"}\": []}, \n \"var\" : {\n \"VAR1\": [\"VAR1\"], \n \"VAR2\": [\"VAR2\"]}, \n \"varOrIRIref\" : {\n \"VAR1\": [\"var\"], \n \"VAR2\": [\"var\"], \n \"IRI_REF\": [\"iriRef\"], \n \"PNAME_LN\": [\"iriRef\"], \n \"PNAME_NS\": [\"iriRef\"]}, \n \"varOrTerm\" : {\n \"VAR1\": [\"var\"], \n \"VAR2\": [\"var\"], \n \"NIL\": [\"graphTerm\"], \n \"IRI_REF\": [\"graphTerm\"], \n \"TRUE\": [\"graphTerm\"], \n \"FALSE\": [\"graphTerm\"], \n \"BLANK_NODE_LABEL\": [\"graphTerm\"], \n \"ANON\": [\"graphTerm\"], \n \"PNAME_LN\": [\"graphTerm\"], \n \"PNAME_NS\": [\"graphTerm\"], \n \"STRING_LITERAL1\": [\"graphTerm\"], \n \"STRING_LITERAL2\": [\"graphTerm\"], \n \"STRING_LITERAL_LONG1\": [\"graphTerm\"], \n \"STRING_LITERAL_LONG2\": [\"graphTerm\"], \n \"INTEGER\": [\"graphTerm\"], \n \"DECIMAL\": [\"graphTerm\"], \n \"DOUBLE\": [\"graphTerm\"], \n \"INTEGER_POSITIVE\": [\"graphTerm\"], \n \"DECIMAL_POSITIVE\": [\"graphTerm\"], \n \"DOUBLE_POSITIVE\": [\"graphTerm\"], \n \"INTEGER_NEGATIVE\": [\"graphTerm\"], \n \"DECIMAL_NEGATIVE\": [\"graphTerm\"], \n \"DOUBLE_NEGATIVE\": [\"graphTerm\"]}, \n \"verb\" : {\n \"VAR1\": [\"storeProperty\",\"varOrIRIref\"], \n \"VAR2\": [\"storeProperty\",\"varOrIRIref\"], \n \"IRI_REF\": [\"storeProperty\",\"varOrIRIref\"], \n \"PNAME_LN\": [\"storeProperty\",\"varOrIRIref\"], \n \"PNAME_NS\": [\"storeProperty\",\"varOrIRIref\"], \n \"a\": [\"storeProperty\",\"a\"]}, \n \"verbPath\" : {\n \"^\": [\"path\"], \n \"a\": [\"path\"], \n \"!\": [\"path\"], \n \"(\": [\"path\"], \n \"IRI_REF\": [\"path\"], \n \"PNAME_LN\": [\"path\"], \n \"PNAME_NS\": [\"path\"]}, \n \"verbSimple\" : {\n \"VAR1\": [\"var\"], \n \"VAR2\": [\"var\"]}, \n \"whereClause\" : {\n \"{\": [\"?WHERE\",\"groupGraphPattern\"], \n \"WHERE\": [\"?WHERE\",\"groupGraphPattern\"]}\n},\n\nkeywords:/^(GROUP_CONCAT|DATATYPE|BASE|PREFIX|SELECT|CONSTRUCT|DESCRIBE|ASK|FROM|NAMED|ORDER|BY|LIMIT|ASC|DESC|OFFSET|DISTINCT|REDUCED|WHERE|GRAPH|OPTIONAL|UNION|FILTER|GROUP|HAVING|AS|VALUES|LOAD|CLEAR|DROP|CREATE|MOVE|COPY|SILENT|INSERT|DELETE|DATA|WITH|TO|USING|NAMED|MINUS|BIND|LANGMATCHES|LANG|BOUND|SAMETERM|ISIRI|ISURI|ISBLANK|ISLITERAL|REGEX|TRUE|FALSE|UNDEF|ADD|DEFAULT|ALL|SERVICE|INTO|IN|NOT|IRI|URI|BNODE|RAND|ABS|CEIL|FLOOR|ROUND|CONCAT|STRLEN|UCASE|LCASE|ENCODE_FOR_URI|CONTAINS|STRSTARTS|STRENDS|STRBEFORE|STRAFTER|YEAR|MONTH|DAY|HOURS|MINUTES|SECONDS|TIMEZONE|TZ|NOW|UUID|STRUUID|MD5|SHA1|SHA256|SHA384|SHA512|COALESCE|IF|STRLANG|STRDT|ISNUMERIC|SUBSTR|REPLACE|EXISTS|COUNT|SUM|MIN|MAX|AVG|SAMPLE|SEPARATOR|STR)/i ,\n\npunct:/^(\\*|a|\\.|\\{|\\}|,|\\(|\\)|;|\\[|\\]|\\|\\||&&|=|!=|!|<=|>=|<|>|\\+|-|\\/|\\^\\^|\\?|\\||\\^)/ ,\n\nstartSymbol:\"sparql11\",\nacceptEmpty:true,\n}", "\"use strict\";\nvar CodeMirror = (function(){try{return require('codemirror')}catch(e){return window.CodeMirror}})();\nCodeMirror.defineMode(\"sparql11\", function(config, parserConfig) {\n\n\tvar indentUnit = config.indentUnit;\n\n\tvar grammar = require('./_tokenizer-table.js');\n\tvar ll1_table = grammar.table;\n\n\tvar IRI_REF = '<[^<>\\\"\\'\\|\\{\\}\\^\\\\\\x00-\\x20]*>';\n\t/*\n\t * PN_CHARS_BASE =\n\t * '[A-Z]|[a-z]|[\\\\u00C0-\\\\u00D6]|[\\\\u00D8-\\\\u00F6]|[\\\\u00F8-\\\\u02FF]|[\\\\u0370-\\\\u037D]|[\\\\u037F-\\\\u1FFF]|[\\\\u200C-\\\\u200D]|[\\\\u2070-\\\\u218F]|[\\\\u2C00-\\\\u2FEF]|[\\\\u3001-\\\\uD7FF]|[\\\\uF900-\\\\uFDCF]|[\\\\uFDF0-\\\\uFFFD]|[\\\\u10000-\\\\uEFFFF]';\n\t */\n\n\tvar PN_CHARS_BASE =\n\t\t'[A-Za-z\\\\u00C0-\\\\u00D6\\\\u00D8-\\\\u00F6\\\\u00F8-\\\\u02FF\\\\u0370-\\\\u037D\\\\u037F-\\\\u1FFF\\\\u200C-\\\\u200D\\\\u2070-\\\\u218F\\\\u2C00-\\\\u2FEF\\\\u3001-\\\\uD7FF\\\\uF900-\\\\uFDCF\\\\uFDF0-\\\\uFFFD]';\n\tvar PN_CHARS_U = PN_CHARS_BASE+'|_';\n\n\tvar PN_CHARS= '('+PN_CHARS_U+'|-|[0-9\\\\u00B7\\\\u0300-\\\\u036F\\\\u203F-\\\\u2040])';\n\tvar VARNAME = '('+PN_CHARS_U+'|[0-9])'+\n\t\t'('+PN_CHARS_U+'|[0-9\\\\u00B7\\\\u0300-\\\\u036F\\\\u203F-\\\\u2040])*';\n\tvar VAR1 = '\\\\?'+VARNAME;\n\tvar VAR2 = '\\\\$'+VARNAME;\n\n\tvar PN_PREFIX= '('+PN_CHARS_BASE+')((('+PN_CHARS+')|\\\\.)*('+PN_CHARS+'))?';\n\n\tvar HEX= '[0-9A-Fa-f]';\n\tvar PERCENT='(%'+HEX+HEX+')';\n\tvar PN_LOCAL_ESC='(\\\\\\\\[_~\\\\.\\\\-!\\\\$&\\'\\\\(\\\\)\\\\*\\\\+,;=/\\\\?#@%])';\n\tvar PLX= '('+PERCENT+'|'+PN_LOCAL_ESC+')';\n\tvar PN_LOCAL= '('+PN_CHARS_U+'|:|[0-9]|'+PLX+')(('+PN_CHARS+'|\\\\.|:|'+PLX+')*('+PN_CHARS+'|:|'+PLX+'))?';\n\tvar BLANK_NODE_LABEL = '_:('+PN_CHARS_U+'|[0-9])(('+PN_CHARS+'|\\\\.)*'+PN_CHARS+')?';\n\tvar PNAME_NS = '('+PN_PREFIX+')?:';\n\tvar PNAME_LN = PNAME_NS+PN_LOCAL;\n\tvar LANGTAG = '@[a-zA-Z]+(-[a-zA-Z0-9]+)*';\n\n\tvar EXPONENT = '[eE][\\\\+-]?[0-9]+';\n\tvar INTEGER = '[0-9]+';\n\tvar DECIMAL = '(([0-9]+\\\\.[0-9]*)|(\\\\.[0-9]+))';\n\tvar DOUBLE =\n\t\t'(([0-9]+\\\\.[0-9]*'+EXPONENT+')|'+\n\t\t'(\\\\.[0-9]+'+EXPONENT+')|'+\n\t\t'([0-9]+'+EXPONENT+'))';\n\n\tvar INTEGER_POSITIVE = '\\\\+' + INTEGER;\n\tvar DECIMAL_POSITIVE = '\\\\+' + DECIMAL;\n\tvar DOUBLE_POSITIVE = '\\\\+' + DOUBLE;\n\tvar INTEGER_NEGATIVE = '-' + INTEGER;\n\tvar DECIMAL_NEGATIVE = '-' + DECIMAL;\n\tvar DOUBLE_NEGATIVE = '-' + DOUBLE;\n\n\tvar ECHAR = '\\\\\\\\[tbnrf\\\\\\\\\"\\']';\n\t\n\t\n\t //IMPORTANT: this unicode rule is not in the official grammar.\n //Reason: https://github.com/YASGUI/YASQE/issues/49\n //unicode escape sequences (which the sparql spec considers part of the pre-processing of sparql queries)\n //are marked as invalid. We have little choice (other than adding a layer of complixity) than to modify the grammar accordingly\n //however, for now only allow these escape sequences in literals (where actually, this should be allows in e.g. prefixes as well)\n\tvar hex4 = HEX + '{4}'\n\tvar unicode = '(\\\\\\\\u' + hex4 +'|\\\\\\\\U00(10|0' + HEX + ')'+ hex4 + ')';\n\tvar LINE_BREAK = \"\\n\";\n\tvar STRING_LITERAL1 = \"'(([^\\\\x27\\\\x5C\\\\x0A\\\\x0D])|\"+ECHAR+\"|\" + unicode + \")*'\";\n\tvar STRING_LITERAL2 = '\"(([^\\\\x22\\\\x5C\\\\x0A\\\\x0D])|'+ECHAR+'|' + unicode + ')*\"';\n\t\n\tvar STRING_LITERAL_LONG = {\n\t\tSINGLE: {\n\t\t\tCAT: \"STRING_LITERAL_LONG1\",\n\t\t\tQUOTES: \"'''\",\n\t\t\tCONTENTS: \"(('|'')?([^'\\\\\\\\]|\"+ECHAR+\"|\"+unicode+\"))*\",\n\t\t\t\n\t\t},\n\t\tDOUBLE: {\n\t\t\tCAT: \"STRING_LITERAL_LONG2\",\n\t\t\tQUOTES: '\"\"\"',\n\t\t\tCONTENTS: '((\"|\"\")?([^\"\\\\\\\\]|'+ECHAR+'|'+unicode+'))*',\n\t\t}\n\t};\n\tfor (var key in STRING_LITERAL_LONG) {\n\t\tSTRING_LITERAL_LONG[key].COMPLETE = STRING_LITERAL_LONG[key].QUOTES + STRING_LITERAL_LONG[key].CONTENTS + STRING_LITERAL_LONG[key].QUOTES;\n\t}\n//\tvar STRING_LITERAL_LONG_QUOTES = {\n//\t\t\"STRING_LITERAL_LONG_QUOTES1\": \"'''\",\n//\t\t\"STRING_LITERAL_LONG_QUOTES2\": '\"\"\"',\n//\t}\n//\tvar STRING_LITERAL_LONG_CONTENTS = {\n//\t\t\"STRING_LITERAL_LONG_QUOTES1\": \"(('|'')?([^'\\\\\\\\]|\"+ECHAR+\"|\"+unicode+\"))*\",\n//\t\t\"STRING_LITERAL_LONG_QUOTES2\": '((\"|\"\")?([^\"\\\\\\\\]|'+ECHAR+'|'+unicode+'))*'\n//\t};\n//\tvar STRING_LITERAL_LONG1 = STRING_LITERAL_LONG['SINGLE'].QUOTES + STRING_LITERAL_LONG['SINGLE'].CONTENTS + STRING_LITERAL_LONG['SINGLE'].QUOTES;\n//\tvar STRING_LITERAL_LONG2 = STRING_LITERAL_LONG['DOUBLE'].QUOTES + STRING_LITERAL_LONG['DOUBLE'].CONTENTS + STRING_LITERAL_LONG['DOUBLE'].QUOTES;\n\t\n//\tvar stringLiteralLongContentTerminals = {};\n//\tfor (var key in STRING_LITERAL_LONG) {\n//\t\tstringLiteralLongContentTerminals[key] = {\n//\t\t\tname: key,\n//\t\t\tregex:new RegExp(\"^\"+STRING_LITERAL_LONG_CONTENTS[key]),\n//\t\t\tstyle:\"string\"\n//\t\t};\n//\t}\n\t//some regular expressions not used in regular terminals, because this is used accross lines\n\tvar stringLiteralLongRegex = {};\n\tfor (var key in STRING_LITERAL_LONG) {\n\t\tstringLiteralLongRegex[key] = {\n\t\t\tcomplete: {\n\t\t\t\tname: \"STRING_LITERAL_LONG_\" + key,\n\t\t\t\tregex:new RegExp(\"^\"+STRING_LITERAL_LONG[key].COMPLETE),\n\t\t\t\tstyle:\"string\"\n\t\t\t},\n\t\t\tcontents: {\n\t\t\t\tname: \"STRING_LITERAL_LONG_\" + key,\n\t\t\t\tregex:new RegExp(\"^\"+STRING_LITERAL_LONG[key].CONTENTS),\n\t\t\t\tstyle:\"string\"\n\t\t\t},\n\t\t\tclosing: {\n\t\t\t\tname: \"STRING_LITERAL_LONG_\" + key,\n\t\t\t\tregex:new RegExp(\"^\"+STRING_LITERAL_LONG[key].CONTENTS + STRING_LITERAL_LONG[key].QUOTES),\n\t\t\t\tstyle:\"string\"\n\t\t\t},\n\t\t\tquotes: {\n\t\t\t\tname: \"STRING_LITERAL_LONG_QUOTES_\" + key,\n\t\t\t\tregex:new RegExp(\"^\"+STRING_LITERAL_LONG[key].QUOTES),\n\t\t\t\tstyle:\"string\"\n\t\t\t},\n\t\t\n\t\t}\n\t}\n\t\n\tvar WS = '[\\\\x20\\\\x09\\\\x0D\\\\x0A]';\n\t// Careful! Code mirror feeds one line at a time with no \\n\n\t// ... but otherwise comment is terminated by \\n\n\tvar COMMENT = '#([^\\\\n\\\\r]*[\\\\n\\\\r]|[^\\\\n\\\\r]*$)';\n\tvar WS_OR_COMMENT_STAR = '('+WS+'|('+COMMENT+'))*';\n\tvar NIL = '\\\\('+WS_OR_COMMENT_STAR+'\\\\)';\n\tvar ANON = '\\\\['+WS_OR_COMMENT_STAR+'\\\\]';\n\tvar terminals= [\n\t\t{ name: \"WS\",\n\t\t\tregex:new RegExp(\"^\"+WS+\"+\"),\n\t\t\tstyle:\"ws\" },\n\n\t\t{ name: \"COMMENT\",\n\t\t\tregex:new RegExp(\"^\"+COMMENT),\n\t\t\tstyle:\"comment\" },\n\n\t\t{ name: \"IRI_REF\",\n\t\t\tregex:new RegExp(\"^\"+IRI_REF),\n\t\t\tstyle:\"variable-3\" },\n\n\t\t{ name: \"VAR1\",\n\t\t\tregex:new RegExp(\"^\"+VAR1),\n\t\t\tstyle:\"atom\"},\n\n\t\t{ name: \"VAR2\",\n\t\t\tregex:new RegExp(\"^\"+VAR2),\n\t\t\tstyle:\"atom\"},\n\n\t\t{ name: \"LANGTAG\",\n\t\t\tregex:new RegExp(\"^\"+LANGTAG),\n\t\t\tstyle:\"meta\"},\n\n\t\t{ name: \"DOUBLE\",\n\t\t\tregex:new RegExp(\"^\"+DOUBLE),\n\t\t\tstyle:\"number\" },\n\n\t\t{ name: \"DECIMAL\",\n\t\t\tregex:new RegExp(\"^\"+DECIMAL),\n\t\t\tstyle:\"number\" },\n\n\t\t{ name: \"INTEGER\",\n\t\t\tregex:new RegExp(\"^\"+INTEGER),\n\t\t\tstyle:\"number\" },\n\n\t\t{ name: \"DOUBLE_POSITIVE\",\n\t\t\tregex:new RegExp(\"^\"+DOUBLE_POSITIVE),\n\t\t\tstyle:\"number\" },\n\n\t\t{ name: \"DECIMAL_POSITIVE\",\n\t\t\tregex:new RegExp(\"^\"+DECIMAL_POSITIVE),\n\t\t\tstyle:\"number\" },\n\n\t\t{ name: \"INTEGER_POSITIVE\",\n\t\t\tregex:new RegExp(\"^\"+INTEGER_POSITIVE),\n\t\t\tstyle:\"number\" },\n\n\t\t{ name: \"DOUBLE_NEGATIVE\",\n\t\t\tregex:new RegExp(\"^\"+DOUBLE_NEGATIVE),\n\t\t\tstyle:\"number\" },\n\n\t\t{ name: \"DECIMAL_NEGATIVE\",\n\t\t\tregex:new RegExp(\"^\"+DECIMAL_NEGATIVE),\n\t\t\tstyle:\"number\" },\n\n\t\t{ name: \"INTEGER_NEGATIVE\",\n\t\t\tregex:new RegExp(\"^\"+INTEGER_NEGATIVE),\n\t\t\tstyle:\"number\" },\n//\t\tstringLiteralLongRegex.SINGLE.complete,\n//\t\tstringLiteralLongRegex.DOUBLE.complete,\n//\t\tstringLiteralLongRegex.SINGLE.quotes,\n//\t\tstringLiteralLongRegex.DOUBLE.quotes,\n\t\t\n\t\t{ name: \"STRING_LITERAL1\",\n\t\t\tregex:new RegExp(\"^\"+STRING_LITERAL1),\n\t\t\tstyle:\"string\" },\n\n\t\t{ name: \"STRING_LITERAL2\",\n\t\t\tregex:new RegExp(\"^\"+STRING_LITERAL2),\n\t\t\tstyle:\"string\" },\n\n\t\t// Enclosed comments won't be highlighted\n\t\t{ name: \"NIL\",\n\t\t\tregex:new RegExp(\"^\"+NIL),\n\t\t\tstyle:\"punc\" },\n\n\t\t// Enclosed comments won't be highlighted\n\t\t{ name: \"ANON\",\n\t\t\tregex:new RegExp(\"^\"+ANON),\n\t\t\tstyle:\"punc\" },\n\n\t\t{ name: \"PNAME_LN\",\n\t\t\tregex:new RegExp(\"^\"+PNAME_LN),\n\t\t\tstyle:\"string-2\" },\n\n\t\t{ name: \"PNAME_NS\",\n\t\t\tregex:new RegExp(\"^\"+PNAME_NS),\n\t\t\tstyle:\"string-2\" },\n\n\t\t{ name: \"BLANK_NODE_LABEL\",\n\t\t\tregex:new RegExp(\"^\"+BLANK_NODE_LABEL),\n\t\t\tstyle:\"string-2\" }\n\t];\n\n\tfunction getPossibles(symbol) {\n\t\tvar possibles=[], possiblesOb=ll1_table[symbol];\n\t\tif (possiblesOb!=undefined) {\n\t\t\tfor (var property in possiblesOb) {\n\t\t\t\tpossibles.push(property.toString());\n\t\t\t}\n\t\t} else {\n\t\t\tpossibles.push(symbol);\n\t\t}\n\t\treturn possibles;\n\t}\n\n\n\tfunction tokenBase(stream, state) {\n\n\t\tfunction nextToken() {\n\t\t\tvar consumed=null;\n\t\t\tif (state.inLiteral) {\n\t\t\t\t\n\t\t\t\tvar closingQuotes = false;\n\t\t\t\t//multi-line literal. try to parse contents.\n\t\t\t\tconsumed = stream.match(stringLiteralLongRegex[state.inLiteral].contents.regex, true, false);\n\t\t\t\tif (consumed && consumed[0].length == 0) {\n\t\t\t\t\t//try seeing whether we can consume closing quotes, to avoid stopping\n\t\t\t\t\tconsumed = stream.match(stringLiteralLongRegex[state.inLiteral].closing.regex, true, false);\n\t\t\t\t\tclosingQuotes = true;\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\tif (consumed && consumed[0].length > 0) {\n\t\t\t\t\t//some string content here. \n\t\t\t\t\t var returnObj = {\n\t\t\t\t\t\tquotePos: (closingQuotes? 'end': 'content'),\n\t\t\t\t\t\tcat: STRING_LITERAL_LONG[state.inLiteral].CAT,\n\t\t\t\t\t\tstyle: stringLiteralLongRegex[state.inLiteral].complete.style,\n\t\t\t\t\t\ttext: consumed[0],\n\t\t\t\t\t\tstart: stream.start\n\t\t\t\t\t};\n\t\t\t\t\t if (closingQuotes) state.inLiteral = false;\n\t\t\t\t\t return returnObj;\n\t\t\t\t}\n\t\t\t}\n\t\t\t\n\t\t\t//Multiline literals\n\t\t\tfor (var quoteType in stringLiteralLongRegex) {\n\t\t\t\tconsumed= stream.match(stringLiteralLongRegex[quoteType].quotes.regex,true,false);\n\t\t\t\tif (consumed) {\n\t\t\t\t\tvar quotePos;\n\t\t\t\t\tif (state.inLiteral) {\n\t\t\t\t\t\t//end of literal. everything is fine\n\t\t\t\t\t\tstate.inLiteral = false;\n\t\t\t\t\t\tquotePos = 'end';\n\t\t\t\t\t} else {\n\t\t\t\t\t\tstate.inLiteral = quoteType;\n\t\t\t\t\t\tquotePos = 'start';\n\t\t\t\t\t}\n\t\t\t\t\treturn {\n\t\t\t\t\t\tcat: STRING_LITERAL_LONG[quoteType].CAT,\n\t\t\t\t\t\tstyle: stringLiteralLongRegex[quoteType].quotes.style,\n\t\t\t\t\t\ttext: consumed[0],\n\t\t\t\t\t\tquotePos: quotePos,\n\t\t\t\t\t\tstart: stream.start\n\t\t\t\t\t};\n\t\t\t\t}\n\t\t\t}\n\t\t\t\n\t\t\t\n\t\t\t\n\t\t\t// Tokens defined by individual regular expressions\n\t\t\tfor (var i=0; i\",\n\t\t\t\t\t\t\t style: \"error\",\n\t\t\t\t\t\t\t text: consumed[0],\n\t\t\t\t\t\t\t start: stream.start\n\t\t\t\t\t\t };\n\t\t}\n\n\t\tfunction recordFailurePos() {\n\t\t\t// tokenOb.style= \"sp-invalid\";\n\t\t\tvar col= stream.column();\n\t\t\tstate.errorStartPos= col;\n\t\t\tstate.errorEndPos= col+tokenOb.text.length;\n\t\t};\n\n\t\tfunction setQueryType(s) {\n\t\t\tif (state.queryType==null) {\n\t\t\t\tif (s ==\"SELECT\" || s==\"CONSTRUCT\" || s==\"ASK\" || s==\"DESCRIBE\" || s==\"INSERT\" || s==\"DELETE\" || s==\"LOAD\" || s==\"CLEAR\" || s==\"CREATE\" || s==\"DROP\" || s==\"COPY\" || s==\"MOVE\" || s==\"ADD\")\n\t\t\t\t\tstate.queryType=s;\n\t\t\t}\n\t\t}\n\n\t\t// Some fake non-terminals are just there to have side-effect on state\n\t\t// - i.e. allow or disallow variables and bnodes in certain non-nesting\n\t\t// contexts\n\t\tfunction setSideConditions(topSymbol) {\n\t\t\tif (topSymbol==\"disallowVars\") state.allowVars=false;\n\t\t\telse if (topSymbol==\"allowVars\") state.allowVars=true;\n\t\t\telse if (topSymbol==\"disallowBnodes\") state.allowBnodes=false;\n\t\t\telse if (topSymbol==\"allowBnodes\") state.allowBnodes=true;\n\t\t\telse if (topSymbol==\"storeProperty\") state.storeProperty=true;\n\t\t}\n\n\t\tfunction checkSideConditions(topSymbol) {\n\t\t\treturn(\n\t\t\t\t(state.allowVars || topSymbol!=\"var\") &&\n\t\t\t\t\t(state.allowBnodes ||\n\t\t\t\t\t (topSymbol!=\"blankNode\" &&\n\t\t\t\t\t\ttopSymbol!=\"blankNodePropertyList\" &&\n\t\t\t\t\t\ttopSymbol!=\"blankNodePropertyListPath\")));\n\t\t}\n\n\t\t// CodeMirror works with one line at a time,\n\t\t// but newline should behave like whitespace\n\t\t// - i.e. a definite break between tokens (for autocompleter)\n\t\tif (stream.pos==0)\n\t\t\tstate.possibleCurrent= state.possibleNext;\n\n\t\tvar tokenOb= nextToken();\n\n\n\t\tif (tokenOb.cat==\"\") {\n\t\t\t// set error state, and\n\t\t\tif (state.OK==true) {\n\t\t\t\tstate.OK=false;\n\t\t\t\trecordFailurePos();\n\t\t\t}\n\t\t\tstate.complete=false;\n\t\t\t// alert(\"Invalid:\"+tokenOb.text);\n\t\t\treturn tokenOb.style;\n\t\t}\n\n\t\tif (tokenOb.cat == \"WS\" || tokenOb.cat == \"COMMENT\" || (tokenOb.quotePos && tokenOb.quotePos != 'end')) {\n\t\t\tstate.possibleCurrent = state.possibleNext;\n\t\t\treturn(tokenOb.style);\n\t\t}\n\t\t// Otherwise, run the parser until the token is digested\n\t\t// or failure\n\t\tvar finished= false;\n\t\tvar topSymbol;\n\t\tvar token= tokenOb.cat;\n\t\t\n\t\tif (!tokenOb.quotePos || tokenOb.quotePos == 'end') {\n\t\t// Incremental LL1 parse\n\t\t\twhile(state.stack.length>0 && token && state.OK && !finished ) {\n\t\t\t\ttopSymbol= state.stack.pop();\n\t\n\t\t\t\tif (!ll1_table[topSymbol]) {\n\t\t\t\t\t// Top symbol is a terminal\n\t\t\t\t\tif (topSymbol == token) {\n\t\t\t\t\t\t// Matching terminals\n\t\t\t\t\t\t// - consume token from input stream\n\t\t\t\t\t\tfinished=true;\n\t\t\t\t\t\tsetQueryType(topSymbol);\n\t\t\t\t\t\t// Check whether $ (end of input token) is poss next\n\t\t\t\t\t\t// for everything on stack\n\t\t\t\t\t\tvar allNillable=true;\n\t\t\t\t\t\tfor(var sp=state.stack.length;sp>0;--sp) {\n\t\t\t\t\t\t\tvar item=ll1_table[state.stack[sp-1]];\n\t\t\t\t\t\t\tif (!item || !item[\"$\"])\n\t\t\t\t\t\t\t\tallNillable=false;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tstate.complete= allNillable;\n\t\t\t\t\t\tif (state.storeProperty && token.cat != \"punc\") {\n\t\t\t\t\t\t\tstate.lastProperty = tokenOb.text;\n\t\t\t\t\t\t\tstate.storeProperty = false;\n\t\t\t\t\t\t}\n\t\t\t\t\t} else {\n\t\t\t\t\t\tstate.OK=false;\n\t\t\t\t\t\tstate.complete=false;\n\t\t\t\t\t\trecordFailurePos();\n\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\t// topSymbol is nonterminal\n\t\t\t\t\t// - see if there is an entry for topSymbol\n\t\t\t\t\t// and nextToken in table\n\t\t\t\t\tvar nextSymbols= ll1_table[topSymbol][token];\n\t\t\t\t\tif (nextSymbols!=undefined && checkSideConditions(topSymbol)) {\n\t\t\t\t\t\t// Match - copy RHS of rule to stack\n\t\t\t\t\t\tfor (var i=nextSymbols.length-1; i>=0; --i) {\n\t\t\t\t\t\t\tstate.stack.push(nextSymbols[i]);\n\t\t\t\t\t\t}\n\t\t\t\t\t\t// Peform any non-grammatical side-effects\n\t\t\t\t\t\tsetSideConditions(topSymbol);\n\t\t\t\t\t} else {\n\t\t\t\t\t\t// No match in table - fail\n\t\t\t\t\t\tstate.OK=false;\n\t\t\t\t\t\tstate.complete=false;\n\t\t\t\t\t\trecordFailurePos();\n\t\t\t\t\t\tstate.stack.push(topSymbol); // Shove topSymbol back on stack\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\tif (!finished && state.OK) { \n\t\t\tstate.OK=false; state.complete=false; recordFailurePos(); \n\t\t}\n\t\t\n\t\tif (state.possibleCurrent.indexOf('a') >= 0){\n\t\t\tstate.lastPredicateOffset = tokenOb.start;\n\t\t}\n\t\tstate.possibleCurrent = state.possibleNext;\n\t\t\n\t\tstate.possibleNext = getPossibles(state.stack[state.stack.length-1]);\n\n\t\treturn tokenOb.style;\n\t}\n\n\tvar indentTop={\n\t\t\"*[,, object]\": 3,\n\t\t\"*[(,),object]\": 3,\n\t\t\"*[(,),objectPath]\": 3,\n\t\t\"*[/,pathEltOrInverse]\": 2,\n\t\t\"object\": 2,\n\t\t\"objectPath\": 2,\n\t\t\"objectList\": 2,\n\t\t\"objectListPath\": 2,\n\t\t\"storeProperty\": 2,\n\t\t\"pathMod\": 2,\n\t\t\"?pathMod\": 2,\n\t\t\"propertyListNotEmpty\": 1,\n\t\t\"propertyList\": 1,\n\t\t\"propertyListPath\": 1,\n\t\t\"propertyListPathNotEmpty\": 1,\n\t\t\"?[verb,objectList]\": 1,\n//\t\t\"?[or([verbPath, verbSimple]),objectList]\": 1,\n\t};\n\n\tvar indentTable={\n\t\t\"}\":1,\n\t\t\"]\":0,\n\t\t\")\":1,\n\t\t\"{\":-1,\n\t\t\"(\":-1,\n//\t\t\"*[;,?[or([verbPath,verbSimple]),objectList]]\": 1,\n\t};\n\t\n\n\tfunction indent(state, textAfter) {\n\t\t//just avoid we don't indent multi-line literals\n\t\tif (state.inLiteral) return 0;\n\t\tif (state.stack.length && state.stack[state.stack.length-1] == \"?[or([verbPath,verbSimple]),objectList]\") {\n\t\t\t//we are after a semi-colon. I.e., nicely align this line with predicate position of previous line\n\t\t\treturn state.lastPredicateOffset;\n\t\t} else {\n\t\t\tvar n = 0; // indent level\n\t\t\tvar i = state.stack.length-1;\n\t\t\tif (/^[\\}\\]\\)]/.test(textAfter)) {\n\t\t\t\t// Skip stack items until after matching bracket\n\t\t\t\tvar closeBracket=textAfter.substr(0,1);\n\t\t\t\tfor( ;i>=0;--i)\t{\n\t\t\t\t\tif (state.stack[i]==closeBracket) {\n\t\t\t\t\t\t--i; \n\t\t\t\t\t\tbreak;\n\t\t\t\t\t};\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\t// Consider nullable non-terminals if at top of stack\n\t\t\t\tvar dn = indentTop[state.stack[i]];\n\t\t\t\tif (dn) { \n\t\t\t\t\tn += dn; \n\t\t\t\t\t--i;\n\t\t\t\t}\n\t\t\t}\n\t\t\tfor( ;i>=0;--i)\t{\n\t\t\t\tvar dn = indentTable[state.stack[i]];\n\t\t\t\tif (dn) {\n\t\t\t\t\tn+=dn;\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn n * config.indentUnit;\n\t\t}\n\t};\n\n\treturn {\n\t\ttoken: tokenBase,\n\t\tstartState: function(base) {\n\t\t\treturn {\n\t\t\t\ttokenize: tokenBase,\n\t\t\t\tOK: true,\n\t\t\t\tcomplete: grammar.acceptEmpty,\n\t\t\t\terrorStartPos: null,\n\t\t\t\terrorEndPos: null,\n\t\t\t\tqueryType: null,\n\t\t\t\tpossibleCurrent: getPossibles(grammar.startSymbol),\n\t\t\t\tpossibleNext: getPossibles(grammar.startSymbol),\n\t\t\t\tallowVars : true,\n\t\t\t\tallowBnodes : true,\n\t\t\t\tstoreProperty : false,\n\t\t\t\tlastProperty : \"\",\n\t\t\t\tinLiteral: false,\n\t\t\t\tstack: [grammar.startSymbol],\n\t\t\t\tlastPredicateOffset: config.indentUnit,\n\t\t\t}; \n\t\t},\n\t\tindent: indent,\n\t\telectricChars: \"}])\"\n\t};\n}\n);\nCodeMirror.defineMIME(\"application/x-sparql-query\", \"sparql11\");\n", "/*\n* TRIE implementation in Javascript\n* Copyright (c) 2010 Saurabh Odhyan | http://odhyan.com\n* \n* Permission is hereby granted, free of charge, to any person obtaining a copy\n* of this software and associated documentation files (the \"Software\"), to deal\n* in the Software without restriction, including without limitation the rights\n* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n* copies of the Software, and to permit persons to whom the Software is\n* furnished to do so, subject to the following conditions:\n* \n* The above copyright notice and this permission notice shall be included in\n* all copies or substantial portions of the Software.\n* \n* THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n* THE SOFTWARE.\n*\n* Date: Nov 7, 2010\n*/\n\n/*\n* A trie, or prefix tree, is a multi-way tree structure useful for storing strings over an alphabet. \n* It has been used to store large dictionaries of English (say) words in spell-checking programs \n* and in natural-language \"understanding\" programs. \n* @see http://en.wikipedia.org/wiki/Trie\n* @see http://www.csse.monash.edu.au/~lloyd/tildeAlgDS/Tree/Trie/\n/*\n\n* @class Trie\n* @constructor\n*/ \nvar Trie = module.exports = function() {\n this.words = 0;\n this.prefixes = 0;\n this.children = [];\n};\n\nTrie.prototype = {\n \n /*\n * Insert a word into the dictionary. \n * Recursively traverse through the trie nodes, and create new node if does not already exist.\n *\n * @method insert\n * @param {String} str Word to insert in the dictionary\n * @param {Integer} pos Current index of the string to be inserted\n * @return {Void}\n */\n insert: function(str, pos) {\n if(str.length == 0) { //blank string cannot be inserted\n return;\n }\n \n var T = this,\n k,\n child;\n \n if(pos === undefined) {\n pos = 0;\n }\n if(pos === str.length) {\n T.words ++;\n return;\n }\n T.prefixes ++;\n k = str[pos];\n if(T.children[k] === undefined) { //if node for this char doesn't exist, create one\n T.children[k] = new Trie();\n }\n child = T.children[k];\n child.insert(str, pos + 1);\n },\n \n /*\n * Remove a word from the dictionary.\n *\n * @method remove\n * @param {String} str Word to be removed\n * @param {Integer} pos Current index of the string to be removed\n * @return {Void}\n */\n remove: function(str, pos) {\n if(str.length == 0) {\n return;\n }\n \n var T = this,\n k,\n child;\n \n if(pos === undefined) {\n pos = 0;\n } \n if(T === undefined) {\n return;\n }\n if(pos === str.length) {\n T.words --;\n return;\n }\n T.prefixes --;\n k = str[pos];\n child = T.children[k];\n child.remove(str, pos + 1);\n },\n \n /*\n * Update an existing word in the dictionary. \n * This method removes the old word from the dictionary and inserts the new word.\n *\n * @method update\n * @param {String} strOld The old word to be replaced\n * @param {String} strNew The new word to be inserted\n * @return {Void}\n */\n update: function(strOld, strNew) {\n if(strOld.length == 0 || strNew.length == 0) {\n return;\n }\n this.remove(strOld);\n this.insert(strNew);\n },\n \n /*\n * Count the number of times a given word has been inserted into the dictionary\n *\n * @method countWord\n * @param {String} str Word to get count of\n * @param {Integer} pos Current index of the given word\n * @return {Integer} The number of times a given word exists in the dictionary\n */\n countWord: function(str, pos) {\n if(str.length == 0) {\n return 0;\n }\n \n var T = this,\n k,\n child,\n ret = 0;\n \n if(pos === undefined) {\n pos = 0;\n } \n if(pos === str.length) {\n return T.words;\n }\n k = str[pos];\n child = T.children[k];\n if(child !== undefined) { //node exists\n ret = child.countWord(str, pos + 1);\n }\n return ret;\n },\n \n /*\n * Count the number of times a given prefix exists in the dictionary\n *\n * @method countPrefix\n * @param {String} str Prefix to get count of\n * @param {Integer} pos Current index of the given prefix\n * @return {Integer} The number of times a given prefix exists in the dictionary\n */\n countPrefix: function(str, pos) {\n if(str.length == 0) {\n return 0;\n }\n \n var T = this,\n k,\n child,\n ret = 0;\n\n if(pos === undefined) {\n pos = 0;\n }\n if(pos === str.length) {\n return T.prefixes;\n }\n var k = str[pos];\n child = T.children[k];\n if(child !== undefined) { //node exists\n ret = child.countPrefix(str, pos + 1); \n }\n return ret; \n },\n \n /*\n * Find a word in the dictionary\n *\n * @method find\n * @param {String} str The word to find in the dictionary\n * @return {Boolean} True if the word exists in the dictionary, else false\n */\n find: function(str) {\n if(str.length == 0) {\n return false;\n }\n \n if(this.countWord(str) > 0) {\n return true;\n } else {\n return false;\n }\n },\n \n /*\n * Get all words in the dictionary\n *\n * @method getAllWords\n * @param {String} str Prefix of current word\n * @return {Array} Array of words in the dictionary\n */\n getAllWords: function(str) {\n var T = this,\n k,\n child,\n ret = [];\n if(str === undefined) {\n str = \"\";\n }\n if(T === undefined) {\n return [];\n }\n if(T.words > 0) {\n ret.push(str);\n }\n for(k in T.children) {\n child = T.children[k];\n ret = ret.concat(child.getAllWords(str + k));\n }\n return ret;\n },\n \n /*\n * Autocomplete a given prefix\n *\n * @method autoComplete\n * @param {String} str Prefix to be completed based on dictionary entries\n * @param {Integer} pos Current index of the prefix\n * @return {Array} Array of possible suggestions\n */\n autoComplete: function(str, pos) {\n \n \n var T = this,\n k,\n child;\n if(str.length == 0) {\n\t\t\tif (pos === undefined) {\n\t\t\t\treturn T.getAllWords(str);\n\t\t\t} else {\n\t\t\t\treturn [];\n\t\t\t}\n }\n if(pos === undefined) {\n pos = 0;\n } \n k = str[pos];\n child = T.children[k];\n if(child === undefined) { //node doesn't exist\n return [];\n }\n if(pos === str.length - 1) {\n return child.getAllWords(str);\n }\n return child.autoComplete(str, pos + 1);\n }\n};\n", "// CodeMirror, copyright (c) by Marijn Haverbeke and others\n// Distributed under an MIT license: http://codemirror.net/LICENSE\n\n(function(mod) {\n if (typeof exports == \"object\" && typeof module == \"object\") // CommonJS\n mod((function(){try{return require('codemirror')}catch(e){return window.CodeMirror}})());\n else if (typeof define == \"function\" && define.amd) // AMD\n define([\"../../lib/codemirror\"], mod);\n else // Plain browser env\n mod(CodeMirror);\n})(function(CodeMirror) {\n \"use strict\";\n\n CodeMirror.defineOption(\"fullScreen\", false, function(cm, val, old) {\n if (old == CodeMirror.Init) old = false;\n if (!old == !val) return;\n if (val) setFullscreen(cm);\n else setNormal(cm);\n });\n\n function setFullscreen(cm) {\n var wrap = cm.getWrapperElement();\n cm.state.fullScreenRestore = {scrollTop: window.pageYOffset, scrollLeft: window.pageXOffset,\n width: wrap.style.width, height: wrap.style.height};\n wrap.style.width = \"\";\n wrap.style.height = \"auto\";\n wrap.className += \" CodeMirror-fullscreen\";\n document.documentElement.style.overflow = \"hidden\";\n cm.refresh();\n }\n\n function setNormal(cm) {\n var wrap = cm.getWrapperElement();\n wrap.className = wrap.className.replace(/\\s*CodeMirror-fullscreen\\b/, \"\");\n document.documentElement.style.overflow = \"\";\n var info = cm.state.fullScreenRestore;\n wrap.style.width = info.width; wrap.style.height = info.height;\n window.scrollTo(info.scrollLeft, info.scrollTop);\n cm.refresh();\n }\n});\n", "// CodeMirror, copyright (c) by Marijn Haverbeke and others\n// Distributed under an MIT license: http://codemirror.net/LICENSE\n\n(function(mod) {\n if (typeof exports == \"object\" && typeof module == \"object\") // CommonJS\n mod((function(){try{return require('codemirror')}catch(e){return window.CodeMirror}})());\n else if (typeof define == \"function\" && define.amd) // AMD\n define([\"../../lib/codemirror\"], mod);\n else // Plain browser env\n mod(CodeMirror);\n})(function(CodeMirror) {\n var ie_lt8 = /MSIE \\d/.test(navigator.userAgent) &&\n (document.documentMode == null || document.documentMode < 8);\n\n var Pos = CodeMirror.Pos;\n\n var matching = {\"(\": \")>\", \")\": \"(<\", \"[\": \"]>\", \"]\": \"[<\", \"{\": \"}>\", \"}\": \"{<\"};\n\n function findMatchingBracket(cm, where, strict, config) {\n var line = cm.getLineHandle(where.line), pos = where.ch - 1;\n var match = (pos >= 0 && matching[line.text.charAt(pos)]) || matching[line.text.charAt(++pos)];\n if (!match) return null;\n var dir = match.charAt(1) == \">\" ? 1 : -1;\n if (strict && (dir > 0) != (pos == where.ch)) return null;\n var style = cm.getTokenTypeAt(Pos(where.line, pos + 1));\n\n var found = scanForBracket(cm, Pos(where.line, pos + (dir > 0 ? 1 : 0)), dir, style || null, config);\n if (found == null) return null;\n return {from: Pos(where.line, pos), to: found && found.pos,\n match: found && found.ch == match.charAt(0), forward: dir > 0};\n }\n\n // bracketRegex is used to specify which type of bracket to scan\n // should be a regexp, e.g. /[[\\]]/\n //\n // Note: If \"where\" is on an open bracket, then this bracket is ignored.\n //\n // Returns false when no bracket was found, null when it reached\n // maxScanLines and gave up\n function scanForBracket(cm, where, dir, style, config) {\n var maxScanLen = (config && config.maxScanLineLength) || 10000;\n var maxScanLines = (config && config.maxScanLines) || 1000;\n\n var stack = [];\n var re = config && config.bracketRegex ? config.bracketRegex : /[(){}[\\]]/;\n var lineEnd = dir > 0 ? Math.min(where.line + maxScanLines, cm.lastLine() + 1)\n : Math.max(cm.firstLine() - 1, where.line - maxScanLines);\n for (var lineNo = where.line; lineNo != lineEnd; lineNo += dir) {\n var line = cm.getLine(lineNo);\n if (!line) continue;\n var pos = dir > 0 ? 0 : line.length - 1, end = dir > 0 ? line.length : -1;\n if (line.length > maxScanLen) continue;\n if (lineNo == where.line) pos = where.ch - (dir < 0 ? 1 : 0);\n for (; pos != end; pos += dir) {\n var ch = line.charAt(pos);\n if (re.test(ch) && (style === undefined || cm.getTokenTypeAt(Pos(lineNo, pos + 1)) == style)) {\n var match = matching[ch];\n if ((match.charAt(1) == \">\") == (dir > 0)) stack.push(ch);\n else if (!stack.length) return {pos: Pos(lineNo, pos), ch: ch};\n else stack.pop();\n }\n }\n }\n return lineNo - dir == (dir > 0 ? cm.lastLine() : cm.firstLine()) ? false : null;\n }\n\n function matchBrackets(cm, autoclear, config) {\n // Disable brace matching in long lines, since it'll cause hugely slow updates\n var maxHighlightLen = cm.state.matchBrackets.maxHighlightLineLength || 1000;\n var marks = [], ranges = cm.listSelections();\n for (var i = 0; i < ranges.length; i++) {\n var match = ranges[i].empty() && findMatchingBracket(cm, ranges[i].head, false, config);\n if (match && cm.getLine(match.from.line).length <= maxHighlightLen) {\n var style = match.match ? \"CodeMirror-matchingbracket\" : \"CodeMirror-nonmatchingbracket\";\n marks.push(cm.markText(match.from, Pos(match.from.line, match.from.ch + 1), {className: style}));\n if (match.to && cm.getLine(match.to.line).length <= maxHighlightLen)\n marks.push(cm.markText(match.to, Pos(match.to.line, match.to.ch + 1), {className: style}));\n }\n }\n\n if (marks.length) {\n // Kludge to work around the IE bug from issue #1193, where text\n // input stops going to the textare whever this fires.\n if (ie_lt8 && cm.state.focused) cm.display.input.focus();\n\n var clear = function() {\n cm.operation(function() {\n for (var i = 0; i < marks.length; i++) marks[i].clear();\n });\n };\n if (autoclear) setTimeout(clear, 800);\n else return clear;\n }\n }\n\n var currentlyHighlighted = null;\n function doMatchBrackets(cm) {\n cm.operation(function() {\n if (currentlyHighlighted) {currentlyHighlighted(); currentlyHighlighted = null;}\n currentlyHighlighted = matchBrackets(cm, false, cm.state.matchBrackets);\n });\n }\n\n CodeMirror.defineOption(\"matchBrackets\", false, function(cm, val, old) {\n if (old && old != CodeMirror.Init)\n cm.off(\"cursorActivity\", doMatchBrackets);\n if (val) {\n cm.state.matchBrackets = typeof val == \"object\" ? val : {};\n cm.on(\"cursorActivity\", doMatchBrackets);\n }\n });\n\n CodeMirror.defineExtension(\"matchBrackets\", function() {matchBrackets(this, true);});\n CodeMirror.defineExtension(\"findMatchingBracket\", function(pos, strict, config){\n return findMatchingBracket(this, pos, strict, config);\n });\n CodeMirror.defineExtension(\"scanForBracket\", function(pos, dir, style, config){\n return scanForBracket(this, pos, dir, style, config);\n });\n});\n", "// CodeMirror, copyright (c) by Marijn Haverbeke and others\n// Distributed under an MIT license: http://codemirror.net/LICENSE\n\n(function(mod) {\n if (typeof exports == \"object\" && typeof module == \"object\") // CommonJS\n mod((function(){try{return require('codemirror')}catch(e){return window.CodeMirror}})());\n else if (typeof define == \"function\" && define.amd) // AMD\n define([\"../../lib/codemirror\"], mod);\n else // Plain browser env\n mod(CodeMirror);\n})(function(CodeMirror) {\n\"use strict\";\n\nCodeMirror.registerHelper(\"fold\", \"brace\", function(cm, start) {\n var line = start.line, lineText = cm.getLine(line);\n var startCh, tokenType;\n\n function findOpening(openCh) {\n for (var at = start.ch, pass = 0;;) {\n var found = at <= 0 ? -1 : lineText.lastIndexOf(openCh, at - 1);\n if (found == -1) {\n if (pass == 1) break;\n pass = 1;\n at = lineText.length;\n continue;\n }\n if (pass == 1 && found < start.ch) break;\n tokenType = cm.getTokenTypeAt(CodeMirror.Pos(line, found + 1));\n if (!/^(comment|string)/.test(tokenType)) return found + 1;\n at = found - 1;\n }\n }\n\n var startToken = \"{\", endToken = \"}\", startCh = findOpening(\"{\");\n if (startCh == null) {\n startToken = \"[\", endToken = \"]\";\n startCh = findOpening(\"[\");\n }\n\n if (startCh == null) return;\n var count = 1, lastLine = cm.lastLine(), end, endCh;\n outer: for (var i = line; i <= lastLine; ++i) {\n var text = cm.getLine(i), pos = i == line ? startCh : 0;\n for (;;) {\n var nextOpen = text.indexOf(startToken, pos), nextClose = text.indexOf(endToken, pos);\n if (nextOpen < 0) nextOpen = text.length;\n if (nextClose < 0) nextClose = text.length;\n pos = Math.min(nextOpen, nextClose);\n if (pos == text.length) break;\n if (cm.getTokenTypeAt(CodeMirror.Pos(i, pos + 1)) == tokenType) {\n if (pos == nextOpen) ++count;\n else if (!--count) { end = i; endCh = pos; break outer; }\n }\n ++pos;\n }\n }\n if (end == null || line == end && endCh == startCh) return;\n return {from: CodeMirror.Pos(line, startCh),\n to: CodeMirror.Pos(end, endCh)};\n});\n\nCodeMirror.registerHelper(\"fold\", \"import\", function(cm, start) {\n function hasImport(line) {\n if (line < cm.firstLine() || line > cm.lastLine()) return null;\n var start = cm.getTokenAt(CodeMirror.Pos(line, 1));\n if (!/\\S/.test(start.string)) start = cm.getTokenAt(CodeMirror.Pos(line, start.end + 1));\n if (start.type != \"keyword\" || start.string != \"import\") return null;\n // Now find closing semicolon, return its position\n for (var i = line, e = Math.min(cm.lastLine(), line + 10); i <= e; ++i) {\n var text = cm.getLine(i), semi = text.indexOf(\";\");\n if (semi != -1) return {startCh: start.end, end: CodeMirror.Pos(i, semi)};\n }\n }\n\n var start = start.line, has = hasImport(start), prev;\n if (!has || hasImport(start - 1) || ((prev = hasImport(start - 2)) && prev.end.line == start - 1))\n return null;\n for (var end = has.end;;) {\n var next = hasImport(end.line + 1);\n if (next == null) break;\n end = next.end;\n }\n return {from: cm.clipPos(CodeMirror.Pos(start, has.startCh + 1)), to: end};\n});\n\nCodeMirror.registerHelper(\"fold\", \"include\", function(cm, start) {\n function hasInclude(line) {\n if (line < cm.firstLine() || line > cm.lastLine()) return null;\n var start = cm.getTokenAt(CodeMirror.Pos(line, 1));\n if (!/\\S/.test(start.string)) start = cm.getTokenAt(CodeMirror.Pos(line, start.end + 1));\n if (start.type == \"meta\" && start.string.slice(0, 8) == \"#include\") return start.start + 8;\n }\n\n var start = start.line, has = hasInclude(start);\n if (has == null || hasInclude(start - 1) != null) return null;\n for (var end = start;;) {\n var next = hasInclude(end + 1);\n if (next == null) break;\n ++end;\n }\n return {from: CodeMirror.Pos(start, has + 1),\n to: cm.clipPos(CodeMirror.Pos(end))};\n});\n\n});\n", "// CodeMirror, copyright (c) by Marijn Haverbeke and others\n// Distributed under an MIT license: http://codemirror.net/LICENSE\n\n(function(mod) {\n if (typeof exports == \"object\" && typeof module == \"object\") // CommonJS\n mod((function(){try{return require('codemirror')}catch(e){return window.CodeMirror}})());\n else if (typeof define == \"function\" && define.amd) // AMD\n define([\"../../lib/codemirror\"], mod);\n else // Plain browser env\n mod(CodeMirror);\n})(function(CodeMirror) {\n \"use strict\";\n\n function doFold(cm, pos, options, force) {\n if (options && options.call) {\n var finder = options;\n options = null;\n } else {\n var finder = getOption(cm, options, \"rangeFinder\");\n }\n if (typeof pos == \"number\") pos = CodeMirror.Pos(pos, 0);\n var minSize = getOption(cm, options, \"minFoldSize\");\n\n function getRange(allowFolded) {\n var range = finder(cm, pos);\n if (!range || range.to.line - range.from.line < minSize) return null;\n var marks = cm.findMarksAt(range.from);\n for (var i = 0; i < marks.length; ++i) {\n if (marks[i].__isFold && force !== \"fold\") {\n if (!allowFolded) return null;\n range.cleared = true;\n marks[i].clear();\n }\n }\n return range;\n }\n\n var range = getRange(true);\n if (getOption(cm, options, \"scanUp\")) while (!range && pos.line > cm.firstLine()) {\n pos = CodeMirror.Pos(pos.line - 1, 0);\n range = getRange(false);\n }\n if (!range || range.cleared || force === \"unfold\") return;\n\n var myWidget = makeWidget(cm, options);\n CodeMirror.on(myWidget, \"mousedown\", function(e) {\n myRange.clear();\n CodeMirror.e_preventDefault(e);\n });\n var myRange = cm.markText(range.from, range.to, {\n replacedWith: myWidget,\n clearOnEnter: true,\n __isFold: true\n });\n myRange.on(\"clear\", function(from, to) {\n CodeMirror.signal(cm, \"unfold\", cm, from, to);\n });\n CodeMirror.signal(cm, \"fold\", cm, range.from, range.to);\n }\n\n function makeWidget(cm, options) {\n var widget = getOption(cm, options, \"widget\");\n if (typeof widget == \"string\") {\n var text = document.createTextNode(widget);\n widget = document.createElement(\"span\");\n widget.appendChild(text);\n widget.className = \"CodeMirror-foldmarker\";\n }\n return widget;\n }\n\n // Clumsy backwards-compatible interface\n CodeMirror.newFoldFunction = function(rangeFinder, widget) {\n return function(cm, pos) { doFold(cm, pos, {rangeFinder: rangeFinder, widget: widget}); };\n };\n\n // New-style interface\n CodeMirror.defineExtension(\"foldCode\", function(pos, options, force) {\n doFold(this, pos, options, force);\n });\n\n CodeMirror.defineExtension(\"isFolded\", function(pos) {\n var marks = this.findMarksAt(pos);\n for (var i = 0; i < marks.length; ++i)\n if (marks[i].__isFold) return true;\n });\n\n CodeMirror.commands.toggleFold = function(cm) {\n cm.foldCode(cm.getCursor());\n };\n CodeMirror.commands.fold = function(cm) {\n cm.foldCode(cm.getCursor(), null, \"fold\");\n };\n CodeMirror.commands.unfold = function(cm) {\n cm.foldCode(cm.getCursor(), null, \"unfold\");\n };\n CodeMirror.commands.foldAll = function(cm) {\n cm.operation(function() {\n for (var i = cm.firstLine(), e = cm.lastLine(); i <= e; i++)\n cm.foldCode(CodeMirror.Pos(i, 0), null, \"fold\");\n });\n };\n CodeMirror.commands.unfoldAll = function(cm) {\n cm.operation(function() {\n for (var i = cm.firstLine(), e = cm.lastLine(); i <= e; i++)\n cm.foldCode(CodeMirror.Pos(i, 0), null, \"unfold\");\n });\n };\n\n CodeMirror.registerHelper(\"fold\", \"combine\", function() {\n var funcs = Array.prototype.slice.call(arguments, 0);\n return function(cm, start) {\n for (var i = 0; i < funcs.length; ++i) {\n var found = funcs[i](cm, start);\n if (found) return found;\n }\n };\n });\n\n CodeMirror.registerHelper(\"fold\", \"auto\", function(cm, start) {\n var helpers = cm.getHelpers(start, \"fold\");\n for (var i = 0; i < helpers.length; i++) {\n var cur = helpers[i](cm, start);\n if (cur) return cur;\n }\n });\n\n var defaultOptions = {\n rangeFinder: CodeMirror.fold.auto,\n widget: \"\\u2194\",\n minFoldSize: 0,\n scanUp: false\n };\n\n CodeMirror.defineOption(\"foldOptions\", null);\n\n function getOption(cm, options, name) {\n if (options && options[name] !== undefined)\n return options[name];\n var editorOptions = cm.options.foldOptions;\n if (editorOptions && editorOptions[name] !== undefined)\n return editorOptions[name];\n return defaultOptions[name];\n }\n\n CodeMirror.defineExtension(\"foldOption\", function(options, name) {\n return getOption(this, options, name);\n });\n});\n", "// CodeMirror, copyright (c) by Marijn Haverbeke and others\n// Distributed under an MIT license: http://codemirror.net/LICENSE\n\n(function(mod) {\n if (typeof exports == \"object\" && typeof module == \"object\") // CommonJS\n mod((function(){try{return require('codemirror')}catch(e){return window.CodeMirror}})(), require(\"./foldcode\"));\n else if (typeof define == \"function\" && define.amd) // AMD\n define([\"../../lib/codemirror\", \"./foldcode\"], mod);\n else // Plain browser env\n mod(CodeMirror);\n})(function(CodeMirror) {\n \"use strict\";\n\n CodeMirror.defineOption(\"foldGutter\", false, function(cm, val, old) {\n if (old && old != CodeMirror.Init) {\n cm.clearGutter(cm.state.foldGutter.options.gutter);\n cm.state.foldGutter = null;\n cm.off(\"gutterClick\", onGutterClick);\n cm.off(\"change\", onChange);\n cm.off(\"viewportChange\", onViewportChange);\n cm.off(\"fold\", onFold);\n cm.off(\"unfold\", onFold);\n cm.off(\"swapDoc\", updateInViewport);\n }\n if (val) {\n cm.state.foldGutter = new State(parseOptions(val));\n updateInViewport(cm);\n cm.on(\"gutterClick\", onGutterClick);\n cm.on(\"change\", onChange);\n cm.on(\"viewportChange\", onViewportChange);\n cm.on(\"fold\", onFold);\n cm.on(\"unfold\", onFold);\n cm.on(\"swapDoc\", updateInViewport);\n }\n });\n\n var Pos = CodeMirror.Pos;\n\n function State(options) {\n this.options = options;\n this.from = this.to = 0;\n }\n\n function parseOptions(opts) {\n if (opts === true) opts = {};\n if (opts.gutter == null) opts.gutter = \"CodeMirror-foldgutter\";\n if (opts.indicatorOpen == null) opts.indicatorOpen = \"CodeMirror-foldgutter-open\";\n if (opts.indicatorFolded == null) opts.indicatorFolded = \"CodeMirror-foldgutter-folded\";\n return opts;\n }\n\n function isFolded(cm, line) {\n var marks = cm.findMarksAt(Pos(line));\n for (var i = 0; i < marks.length; ++i)\n if (marks[i].__isFold && marks[i].find().from.line == line) return true;\n }\n\n function marker(spec) {\n if (typeof spec == \"string\") {\n var elt = document.createElement(\"div\");\n elt.className = spec + \" CodeMirror-guttermarker-subtle\";\n return elt;\n } else {\n return spec.cloneNode(true);\n }\n }\n\n function updateFoldInfo(cm, from, to) {\n var opts = cm.state.foldGutter.options, cur = from;\n var minSize = cm.foldOption(opts, \"minFoldSize\");\n var func = cm.foldOption(opts, \"rangeFinder\");\n cm.eachLine(from, to, function(line) {\n var mark = null;\n if (isFolded(cm, cur)) {\n mark = marker(opts.indicatorFolded);\n } else {\n var pos = Pos(cur, 0);\n var range = func && func(cm, pos);\n if (range && range.to.line - range.from.line >= minSize)\n mark = marker(opts.indicatorOpen);\n }\n cm.setGutterMarker(line, opts.gutter, mark);\n ++cur;\n });\n }\n\n function updateInViewport(cm) {\n var vp = cm.getViewport(), state = cm.state.foldGutter;\n if (!state) return;\n cm.operation(function() {\n updateFoldInfo(cm, vp.from, vp.to);\n });\n state.from = vp.from; state.to = vp.to;\n }\n\n function onGutterClick(cm, line, gutter) {\n var opts = cm.state.foldGutter.options;\n if (gutter != opts.gutter) return;\n cm.foldCode(Pos(line, 0), opts.rangeFinder);\n }\n\n function onChange(cm) {\n var state = cm.state.foldGutter, opts = cm.state.foldGutter.options;\n state.from = state.to = 0;\n clearTimeout(state.changeUpdate);\n state.changeUpdate = setTimeout(function() { updateInViewport(cm); }, opts.foldOnChangeTimeSpan || 600);\n }\n\n function onViewportChange(cm) {\n var state = cm.state.foldGutter, opts = cm.state.foldGutter.options;\n clearTimeout(state.changeUpdate);\n state.changeUpdate = setTimeout(function() {\n var vp = cm.getViewport();\n if (state.from == state.to || vp.from - state.to > 20 || state.from - vp.to > 20) {\n updateInViewport(cm);\n } else {\n cm.operation(function() {\n if (vp.from < state.from) {\n updateFoldInfo(cm, vp.from, state.from);\n state.from = vp.from;\n }\n if (vp.to > state.to) {\n updateFoldInfo(cm, state.to, vp.to);\n state.to = vp.to;\n }\n });\n }\n }, opts.updateViewportTimeSpan || 400);\n }\n\n function onFold(cm, from) {\n var state = cm.state.foldGutter, line = from.line;\n if (line >= state.from && line < state.to)\n updateFoldInfo(cm, line, line + 1);\n }\n});\n", "// CodeMirror, copyright (c) by Marijn Haverbeke and others\n// Distributed under an MIT license: http://codemirror.net/LICENSE\n\n(function(mod) {\n if (typeof exports == \"object\" && typeof module == \"object\") // CommonJS\n mod((function(){try{return require('codemirror')}catch(e){return window.CodeMirror}})());\n else if (typeof define == \"function\" && define.amd) // AMD\n define([\"../../lib/codemirror\"], mod);\n else // Plain browser env\n mod(CodeMirror);\n})(function(CodeMirror) {\n \"use strict\";\n\n var Pos = CodeMirror.Pos;\n function cmp(a, b) { return a.line - b.line || a.ch - b.ch; }\n\n var nameStartChar = \"A-Z_a-z\\\\u00C0-\\\\u00D6\\\\u00D8-\\\\u00F6\\\\u00F8-\\\\u02FF\\\\u0370-\\\\u037D\\\\u037F-\\\\u1FFF\\\\u200C-\\\\u200D\\\\u2070-\\\\u218F\\\\u2C00-\\\\u2FEF\\\\u3001-\\\\uD7FF\\\\uF900-\\\\uFDCF\\\\uFDF0-\\\\uFFFD\";\n var nameChar = nameStartChar + \"\\-\\:\\.0-9\\\\u00B7\\\\u0300-\\\\u036F\\\\u203F-\\\\u2040\";\n var xmlTagStart = new RegExp(\"<(/?)([\" + nameStartChar + \"][\" + nameChar + \"]*)\", \"g\");\n\n function Iter(cm, line, ch, range) {\n this.line = line; this.ch = ch;\n this.cm = cm; this.text = cm.getLine(line);\n this.min = range ? range.from : cm.firstLine();\n this.max = range ? range.to - 1 : cm.lastLine();\n }\n\n function tagAt(iter, ch) {\n var type = iter.cm.getTokenTypeAt(Pos(iter.line, ch));\n return type && /\\btag\\b/.test(type);\n }\n\n function nextLine(iter) {\n if (iter.line >= iter.max) return;\n iter.ch = 0;\n iter.text = iter.cm.getLine(++iter.line);\n return true;\n }\n function prevLine(iter) {\n if (iter.line <= iter.min) return;\n iter.text = iter.cm.getLine(--iter.line);\n iter.ch = iter.text.length;\n return true;\n }\n\n function toTagEnd(iter) {\n for (;;) {\n var gt = iter.text.indexOf(\">\", iter.ch);\n if (gt == -1) { if (nextLine(iter)) continue; else return; }\n if (!tagAt(iter, gt + 1)) { iter.ch = gt + 1; continue; }\n var lastSlash = iter.text.lastIndexOf(\"/\", gt);\n var selfClose = lastSlash > -1 && !/\\S/.test(iter.text.slice(lastSlash + 1, gt));\n iter.ch = gt + 1;\n return selfClose ? \"selfClose\" : \"regular\";\n }\n }\n function toTagStart(iter) {\n for (;;) {\n var lt = iter.ch ? iter.text.lastIndexOf(\"<\", iter.ch - 1) : -1;\n if (lt == -1) { if (prevLine(iter)) continue; else return; }\n if (!tagAt(iter, lt + 1)) { iter.ch = lt; continue; }\n xmlTagStart.lastIndex = lt;\n iter.ch = lt;\n var match = xmlTagStart.exec(iter.text);\n if (match && match.index == lt) return match;\n }\n }\n\n function toNextTag(iter) {\n for (;;) {\n xmlTagStart.lastIndex = iter.ch;\n var found = xmlTagStart.exec(iter.text);\n if (!found) { if (nextLine(iter)) continue; else return; }\n if (!tagAt(iter, found.index + 1)) { iter.ch = found.index + 1; continue; }\n iter.ch = found.index + found[0].length;\n return found;\n }\n }\n function toPrevTag(iter) {\n for (;;) {\n var gt = iter.ch ? iter.text.lastIndexOf(\">\", iter.ch - 1) : -1;\n if (gt == -1) { if (prevLine(iter)) continue; else return; }\n if (!tagAt(iter, gt + 1)) { iter.ch = gt; continue; }\n var lastSlash = iter.text.lastIndexOf(\"/\", gt);\n var selfClose = lastSlash > -1 && !/\\S/.test(iter.text.slice(lastSlash + 1, gt));\n iter.ch = gt + 1;\n return selfClose ? \"selfClose\" : \"regular\";\n }\n }\n\n function findMatchingClose(iter, tag) {\n var stack = [];\n for (;;) {\n var next = toNextTag(iter), end, startLine = iter.line, startCh = iter.ch - (next ? next[0].length : 0);\n if (!next || !(end = toTagEnd(iter))) return;\n if (end == \"selfClose\") continue;\n if (next[1]) { // closing tag\n for (var i = stack.length - 1; i >= 0; --i) if (stack[i] == next[2]) {\n stack.length = i;\n break;\n }\n if (i < 0 && (!tag || tag == next[2])) return {\n tag: next[2],\n from: Pos(startLine, startCh),\n to: Pos(iter.line, iter.ch)\n };\n } else { // opening tag\n stack.push(next[2]);\n }\n }\n }\n function findMatchingOpen(iter, tag) {\n var stack = [];\n for (;;) {\n var prev = toPrevTag(iter);\n if (!prev) return;\n if (prev == \"selfClose\") { toTagStart(iter); continue; }\n var endLine = iter.line, endCh = iter.ch;\n var start = toTagStart(iter);\n if (!start) return;\n if (start[1]) { // closing tag\n stack.push(start[2]);\n } else { // opening tag\n for (var i = stack.length - 1; i >= 0; --i) if (stack[i] == start[2]) {\n stack.length = i;\n break;\n }\n if (i < 0 && (!tag || tag == start[2])) return {\n tag: start[2],\n from: Pos(iter.line, iter.ch),\n to: Pos(endLine, endCh)\n };\n }\n }\n }\n\n CodeMirror.registerHelper(\"fold\", \"xml\", function(cm, start) {\n var iter = new Iter(cm, start.line, 0);\n for (;;) {\n var openTag = toNextTag(iter), end;\n if (!openTag || iter.line != start.line || !(end = toTagEnd(iter))) return;\n if (!openTag[1] && end != \"selfClose\") {\n var start = Pos(iter.line, iter.ch);\n var close = findMatchingClose(iter, openTag[2]);\n return close && {from: start, to: close.from};\n }\n }\n });\n CodeMirror.findMatchingTag = function(cm, pos, range) {\n var iter = new Iter(cm, pos.line, pos.ch, range);\n if (iter.text.indexOf(\">\") == -1 && iter.text.indexOf(\"<\") == -1) return;\n var end = toTagEnd(iter), to = end && Pos(iter.line, iter.ch);\n var start = end && toTagStart(iter);\n if (!end || !start || cmp(iter, pos) > 0) return;\n var here = {from: Pos(iter.line, iter.ch), to: to, tag: start[2]};\n if (end == \"selfClose\") return {open: here, close: null, at: \"open\"};\n\n if (start[1]) { // closing tag\n return {open: findMatchingOpen(iter, start[2]), close: here, at: \"close\"};\n } else { // opening tag\n iter = new Iter(cm, to.line, to.ch, range);\n return {open: here, close: findMatchingClose(iter, start[2]), at: \"open\"};\n }\n };\n\n CodeMirror.findEnclosingTag = function(cm, pos, range) {\n var iter = new Iter(cm, pos.line, pos.ch, range);\n for (;;) {\n var open = findMatchingOpen(iter);\n if (!open) break;\n var forward = new Iter(cm, pos.line, pos.ch, range);\n var close = findMatchingClose(forward, open.tag);\n if (close) return {open: open, close: close};\n }\n };\n\n // Used by addon/edit/closetag.js\n CodeMirror.scanForClosingTag = function(cm, pos, name, end) {\n var iter = new Iter(cm, pos.line, pos.ch, end ? {from: 0, to: end} : null);\n return findMatchingClose(iter, name);\n };\n});\n", "// CodeMirror, copyright (c) by Marijn Haverbeke and others\n// Distributed under an MIT license: http://codemirror.net/LICENSE\n\n(function(mod) {\n if (typeof exports == \"object\" && typeof module == \"object\") // CommonJS\n mod((function(){try{return require('codemirror')}catch(e){return window.CodeMirror}})());\n else if (typeof define == \"function\" && define.amd) // AMD\n define([\"../../lib/codemirror\"], mod);\n else // Plain browser env\n mod(CodeMirror);\n})(function(CodeMirror) {\n \"use strict\";\n\n var HINT_ELEMENT_CLASS = \"CodeMirror-hint\";\n var ACTIVE_HINT_ELEMENT_CLASS = \"CodeMirror-hint-active\";\n\n // This is the old interface, kept around for now to stay\n // backwards-compatible.\n CodeMirror.showHint = function(cm, getHints, options) {\n if (!getHints) return cm.showHint(options);\n if (options && options.async) getHints.async = true;\n var newOpts = {hint: getHints};\n if (options) for (var prop in options) newOpts[prop] = options[prop];\n return cm.showHint(newOpts);\n };\n\n CodeMirror.defineExtension(\"showHint\", function(options) {\n // We want a single cursor position.\n if (this.listSelections().length > 1 || this.somethingSelected()) return;\n\n if (this.state.completionActive) this.state.completionActive.close();\n var completion = this.state.completionActive = new Completion(this, options);\n var getHints = completion.options.hint;\n if (!getHints) return;\n\n CodeMirror.signal(this, \"startCompletion\", this);\n if (getHints.async)\n getHints(this, function(hints) { completion.showHints(hints); }, completion.options);\n else\n return completion.showHints(getHints(this, completion.options));\n });\n\n function Completion(cm, options) {\n this.cm = cm;\n this.options = this.buildOptions(options);\n this.widget = this.onClose = null;\n }\n\n Completion.prototype = {\n close: function() {\n if (!this.active()) return;\n this.cm.state.completionActive = null;\n\n if (this.widget) this.widget.close();\n if (this.onClose) this.onClose();\n CodeMirror.signal(this.cm, \"endCompletion\", this.cm);\n },\n\n active: function() {\n return this.cm.state.completionActive == this;\n },\n\n pick: function(data, i) {\n var completion = data.list[i];\n if (completion.hint) completion.hint(this.cm, data, completion);\n else this.cm.replaceRange(getText(completion), completion.from || data.from,\n completion.to || data.to, \"complete\");\n CodeMirror.signal(data, \"pick\", completion);\n this.close();\n },\n\n showHints: function(data) {\n if (!data || !data.list.length || !this.active()) return this.close();\n\n if (this.options.completeSingle && data.list.length == 1)\n this.pick(data, 0);\n else\n this.showWidget(data);\n },\n\n showWidget: function(data) {\n this.widget = new Widget(this, data);\n CodeMirror.signal(data, \"shown\");\n\n var debounce = 0, completion = this, finished;\n var closeOn = this.options.closeCharacters;\n var startPos = this.cm.getCursor(), startLen = this.cm.getLine(startPos.line).length;\n\n var requestAnimationFrame = window.requestAnimationFrame || function(fn) {\n return setTimeout(fn, 1000/60);\n };\n var cancelAnimationFrame = window.cancelAnimationFrame || clearTimeout;\n\n function done() {\n if (finished) return;\n finished = true;\n completion.close();\n completion.cm.off(\"cursorActivity\", activity);\n if (data) CodeMirror.signal(data, \"close\");\n }\n\n function update() {\n if (finished) return;\n CodeMirror.signal(data, \"update\");\n var getHints = completion.options.hint;\n if (getHints.async)\n getHints(completion.cm, finishUpdate, completion.options);\n else\n finishUpdate(getHints(completion.cm, completion.options));\n }\n function finishUpdate(data_) {\n data = data_;\n if (finished) return;\n if (!data || !data.list.length) return done();\n if (completion.widget) completion.widget.close();\n completion.widget = new Widget(completion, data);\n }\n\n function clearDebounce() {\n if (debounce) {\n cancelAnimationFrame(debounce);\n debounce = 0;\n }\n }\n\n function activity() {\n clearDebounce();\n var pos = completion.cm.getCursor(), line = completion.cm.getLine(pos.line);\n if (pos.line != startPos.line || line.length - pos.ch != startLen - startPos.ch ||\n pos.ch < startPos.ch || completion.cm.somethingSelected() ||\n (pos.ch && closeOn.test(line.charAt(pos.ch - 1)))) {\n completion.close();\n } else {\n debounce = requestAnimationFrame(update);\n if (completion.widget) completion.widget.close();\n }\n }\n this.cm.on(\"cursorActivity\", activity);\n this.onClose = done;\n },\n\n buildOptions: function(options) {\n var editor = this.cm.options.hintOptions;\n var out = {};\n for (var prop in defaultOptions) out[prop] = defaultOptions[prop];\n if (editor) for (var prop in editor)\n if (editor[prop] !== undefined) out[prop] = editor[prop];\n if (options) for (var prop in options)\n if (options[prop] !== undefined) out[prop] = options[prop];\n return out;\n }\n };\n\n function getText(completion) {\n if (typeof completion == \"string\") return completion;\n else return completion.text;\n }\n\n function buildKeyMap(completion, handle) {\n var baseMap = {\n Up: function() {handle.moveFocus(-1);},\n Down: function() {handle.moveFocus(1);},\n PageUp: function() {handle.moveFocus(-handle.menuSize() + 1, true);},\n PageDown: function() {handle.moveFocus(handle.menuSize() - 1, true);},\n Home: function() {handle.setFocus(0);},\n End: function() {handle.setFocus(handle.length - 1);},\n Enter: handle.pick,\n Tab: handle.pick,\n Esc: handle.close\n };\n var custom = completion.options.customKeys;\n var ourMap = custom ? {} : baseMap;\n function addBinding(key, val) {\n var bound;\n if (typeof val != \"string\")\n bound = function(cm) { return val(cm, handle); };\n // This mechanism is deprecated\n else if (baseMap.hasOwnProperty(val))\n bound = baseMap[val];\n else\n bound = val;\n ourMap[key] = bound;\n }\n if (custom)\n for (var key in custom) if (custom.hasOwnProperty(key))\n addBinding(key, custom[key]);\n var extra = completion.options.extraKeys;\n if (extra)\n for (var key in extra) if (extra.hasOwnProperty(key))\n addBinding(key, extra[key]);\n return ourMap;\n }\n\n function getHintElement(hintsElement, el) {\n while (el && el != hintsElement) {\n if (el.nodeName.toUpperCase() === \"LI\" && el.parentNode == hintsElement) return el;\n el = el.parentNode;\n }\n }\n\n function Widget(completion, data) {\n this.completion = completion;\n this.data = data;\n var widget = this, cm = completion.cm;\n\n var hints = this.hints = document.createElement(\"ul\");\n hints.className = \"CodeMirror-hints\";\n this.selectedHint = data.selectedHint || 0;\n\n var completions = data.list;\n for (var i = 0; i < completions.length; ++i) {\n var elt = hints.appendChild(document.createElement(\"li\")), cur = completions[i];\n var className = HINT_ELEMENT_CLASS + (i != this.selectedHint ? \"\" : \" \" + ACTIVE_HINT_ELEMENT_CLASS);\n if (cur.className != null) className = cur.className + \" \" + className;\n elt.className = className;\n if (cur.render) cur.render(elt, data, cur);\n else elt.appendChild(document.createTextNode(cur.displayText || getText(cur)));\n elt.hintId = i;\n }\n\n var pos = cm.cursorCoords(completion.options.alignWithWord ? data.from : null);\n var left = pos.left, top = pos.bottom, below = true;\n hints.style.left = left + \"px\";\n hints.style.top = top + \"px\";\n // If we're at the edge of the screen, then we want the menu to appear on the left of the cursor.\n var winW = window.innerWidth || Math.max(document.body.offsetWidth, document.documentElement.offsetWidth);\n var winH = window.innerHeight || Math.max(document.body.offsetHeight, document.documentElement.offsetHeight);\n (completion.options.container || document.body).appendChild(hints);\n var box = hints.getBoundingClientRect(), overlapY = box.bottom - winH;\n if (overlapY > 0) {\n var height = box.bottom - box.top, curTop = pos.top - (pos.bottom - box.top);\n if (curTop - height > 0) { // Fits above cursor\n hints.style.top = (top = pos.top - height) + \"px\";\n below = false;\n } else if (height > winH) {\n hints.style.height = (winH - 5) + \"px\";\n hints.style.top = (top = pos.bottom - box.top) + \"px\";\n var cursor = cm.getCursor();\n if (data.from.ch != cursor.ch) {\n pos = cm.cursorCoords(cursor);\n hints.style.left = (left = pos.left) + \"px\";\n box = hints.getBoundingClientRect();\n }\n }\n }\n var overlapX = box.right - winW;\n if (overlapX > 0) {\n if (box.right - box.left > winW) {\n hints.style.width = (winW - 5) + \"px\";\n overlapX -= (box.right - box.left) - winW;\n }\n hints.style.left = (left = pos.left - overlapX) + \"px\";\n }\n\n cm.addKeyMap(this.keyMap = buildKeyMap(completion, {\n moveFocus: function(n, avoidWrap) { widget.changeActive(widget.selectedHint + n, avoidWrap); },\n setFocus: function(n) { widget.changeActive(n); },\n menuSize: function() { return widget.screenAmount(); },\n length: completions.length,\n close: function() { completion.close(); },\n pick: function() { widget.pick(); },\n data: data\n }));\n\n if (completion.options.closeOnUnfocus) {\n var closingOnBlur;\n cm.on(\"blur\", this.onBlur = function() { closingOnBlur = setTimeout(function() { completion.close(); }, 100); });\n cm.on(\"focus\", this.onFocus = function() { clearTimeout(closingOnBlur); });\n }\n\n var startScroll = cm.getScrollInfo();\n cm.on(\"scroll\", this.onScroll = function() {\n var curScroll = cm.getScrollInfo(), editor = cm.getWrapperElement().getBoundingClientRect();\n var newTop = top + startScroll.top - curScroll.top;\n var point = newTop - (window.pageYOffset || (document.documentElement || document.body).scrollTop);\n if (!below) point += hints.offsetHeight;\n if (point <= editor.top || point >= editor.bottom) return completion.close();\n hints.style.top = newTop + \"px\";\n hints.style.left = (left + startScroll.left - curScroll.left) + \"px\";\n });\n\n CodeMirror.on(hints, \"dblclick\", function(e) {\n var t = getHintElement(hints, e.target || e.srcElement);\n if (t && t.hintId != null) {widget.changeActive(t.hintId); widget.pick();}\n });\n\n CodeMirror.on(hints, \"click\", function(e) {\n var t = getHintElement(hints, e.target || e.srcElement);\n if (t && t.hintId != null) {\n widget.changeActive(t.hintId);\n if (completion.options.completeOnSingleClick) widget.pick();\n }\n });\n\n CodeMirror.on(hints, \"mousedown\", function() {\n setTimeout(function(){cm.focus();}, 20);\n });\n\n CodeMirror.signal(data, \"select\", completions[0], hints.firstChild);\n return true;\n }\n\n Widget.prototype = {\n close: function() {\n if (this.completion.widget != this) return;\n this.completion.widget = null;\n this.hints.parentNode.removeChild(this.hints);\n this.completion.cm.removeKeyMap(this.keyMap);\n\n var cm = this.completion.cm;\n if (this.completion.options.closeOnUnfocus) {\n cm.off(\"blur\", this.onBlur);\n cm.off(\"focus\", this.onFocus);\n }\n cm.off(\"scroll\", this.onScroll);\n },\n\n pick: function() {\n this.completion.pick(this.data, this.selectedHint);\n },\n\n changeActive: function(i, avoidWrap) {\n if (i >= this.data.list.length)\n i = avoidWrap ? this.data.list.length - 1 : 0;\n else if (i < 0)\n i = avoidWrap ? 0 : this.data.list.length - 1;\n if (this.selectedHint == i) return;\n var node = this.hints.childNodes[this.selectedHint];\n node.className = node.className.replace(\" \" + ACTIVE_HINT_ELEMENT_CLASS, \"\");\n node = this.hints.childNodes[this.selectedHint = i];\n node.className += \" \" + ACTIVE_HINT_ELEMENT_CLASS;\n if (node.offsetTop < this.hints.scrollTop)\n this.hints.scrollTop = node.offsetTop - 3;\n else if (node.offsetTop + node.offsetHeight > this.hints.scrollTop + this.hints.clientHeight)\n this.hints.scrollTop = node.offsetTop + node.offsetHeight - this.hints.clientHeight + 3;\n CodeMirror.signal(this.data, \"select\", this.data.list[this.selectedHint], node);\n },\n\n screenAmount: function() {\n return Math.floor(this.hints.clientHeight / this.hints.firstChild.offsetHeight) || 1;\n }\n };\n\n CodeMirror.registerHelper(\"hint\", \"auto\", function(cm, options) {\n var helpers = cm.getHelpers(cm.getCursor(), \"hint\"), words;\n if (helpers.length) {\n for (var i = 0; i < helpers.length; i++) {\n var cur = helpers[i](cm, options);\n if (cur && cur.list.length) return cur;\n }\n } else if (words = cm.getHelper(cm.getCursor(), \"hintWords\")) {\n if (words) return CodeMirror.hint.fromList(cm, {words: words});\n } else if (CodeMirror.hint.anyword) {\n return CodeMirror.hint.anyword(cm, options);\n }\n });\n\n CodeMirror.registerHelper(\"hint\", \"fromList\", function(cm, options) {\n var cur = cm.getCursor(), token = cm.getTokenAt(cur);\n var found = [];\n for (var i = 0; i < options.words.length; i++) {\n var word = options.words[i];\n if (word.slice(0, token.string.length) == token.string)\n found.push(word);\n }\n\n if (found.length) return {\n list: found,\n from: CodeMirror.Pos(cur.line, token.start),\n to: CodeMirror.Pos(cur.line, token.end)\n };\n });\n\n CodeMirror.commands.autocomplete = CodeMirror.showHint;\n\n var defaultOptions = {\n hint: CodeMirror.hint.auto,\n completeSingle: true,\n alignWithWord: true,\n closeCharacters: /[\\s()\\[\\]{};:>,]/,\n closeOnUnfocus: true,\n completeOnSingleClick: false,\n container: null,\n customKeys: null,\n extraKeys: null\n };\n\n CodeMirror.defineOption(\"hintOptions\", null);\n});\n", "// CodeMirror, copyright (c) by Marijn Haverbeke and others\n// Distributed under an MIT license: http://codemirror.net/LICENSE\n\n(function(mod) {\n if (typeof exports == \"object\" && typeof module == \"object\") // CommonJS\n mod((function(){try{return require('codemirror')}catch(e){return window.CodeMirror}})());\n else if (typeof define == \"function\" && define.amd) // AMD\n define([\"../../lib/codemirror\"], mod);\n else // Plain browser env\n mod(CodeMirror);\n})(function(CodeMirror) {\n\"use strict\";\n\nCodeMirror.runMode = function(string, modespec, callback, options) {\n var mode = CodeMirror.getMode(CodeMirror.defaults, modespec);\n var ie = /MSIE \\d/.test(navigator.userAgent);\n var ie_lt9 = ie && (document.documentMode == null || document.documentMode < 9);\n\n if (callback.nodeType == 1) {\n var tabSize = (options && options.tabSize) || CodeMirror.defaults.tabSize;\n var node = callback, col = 0;\n node.innerHTML = \"\";\n callback = function(text, style) {\n if (text == \"\\n\") {\n // Emitting LF or CRLF on IE8 or earlier results in an incorrect display.\n // Emitting a carriage return makes everything ok.\n node.appendChild(document.createTextNode(ie_lt9 ? '\\r' : text));\n col = 0;\n return;\n }\n var content = \"\";\n // replace tabs\n for (var pos = 0;;) {\n var idx = text.indexOf(\"\\t\", pos);\n if (idx == -1) {\n content += text.slice(pos);\n col += text.length - pos;\n break;\n } else {\n col += idx - pos;\n content += text.slice(pos, idx);\n var size = tabSize - col % tabSize;\n col += size;\n for (var i = 0; i < size; ++i) content += \" \";\n pos = idx + 1;\n }\n }\n\n if (style) {\n var sp = node.appendChild(document.createElement(\"span\"));\n sp.className = \"cm-\" + style.replace(/ +/g, \" cm-\");\n sp.appendChild(document.createTextNode(content));\n } else {\n node.appendChild(document.createTextNode(content));\n }\n };\n }\n\n var lines = CodeMirror.splitLines(string), state = (options && options.state) || CodeMirror.startState(mode);\n for (var i = 0, e = lines.length; i < e; ++i) {\n if (i) callback(\"\\n\");\n var stream = new CodeMirror.StringStream(lines[i]);\n if (!stream.string && mode.blankLine) mode.blankLine(state);\n while (!stream.eol()) {\n var style = mode.token(stream, state);\n callback(stream.current(), style, i, stream.start, state);\n stream.start = stream.pos;\n }\n }\n};\n\n});\n", "// CodeMirror, copyright (c) by Marijn Haverbeke and others\n// Distributed under an MIT license: http://codemirror.net/LICENSE\n\n(function(mod) {\n if (typeof exports == \"object\" && typeof module == \"object\") // CommonJS\n mod((function(){try{return require('codemirror')}catch(e){return window.CodeMirror}})());\n else if (typeof define == \"function\" && define.amd) // AMD\n define([\"../../lib/codemirror\"], mod);\n else // Plain browser env\n mod(CodeMirror);\n})(function(CodeMirror) {\n \"use strict\";\n var Pos = CodeMirror.Pos;\n\n function SearchCursor(doc, query, pos, caseFold) {\n this.atOccurrence = false; this.doc = doc;\n if (caseFold == null && typeof query == \"string\") caseFold = false;\n\n pos = pos ? doc.clipPos(pos) : Pos(0, 0);\n this.pos = {from: pos, to: pos};\n\n // The matches method is filled in based on the type of query.\n // It takes a position and a direction, and returns an object\n // describing the next occurrence of the query, or null if no\n // more matches were found.\n if (typeof query != \"string\") { // Regexp match\n if (!query.global) query = new RegExp(query.source, query.ignoreCase ? \"ig\" : \"g\");\n this.matches = function(reverse, pos) {\n if (reverse) {\n query.lastIndex = 0;\n var line = doc.getLine(pos.line).slice(0, pos.ch), cutOff = 0, match, start;\n for (;;) {\n query.lastIndex = cutOff;\n var newMatch = query.exec(line);\n if (!newMatch) break;\n match = newMatch;\n start = match.index;\n cutOff = match.index + (match[0].length || 1);\n if (cutOff == line.length) break;\n }\n var matchLen = (match && match[0].length) || 0;\n if (!matchLen) {\n if (start == 0 && line.length == 0) {match = undefined;}\n else if (start != doc.getLine(pos.line).length) {\n matchLen++;\n }\n }\n } else {\n query.lastIndex = pos.ch;\n var line = doc.getLine(pos.line), match = query.exec(line);\n var matchLen = (match && match[0].length) || 0;\n var start = match && match.index;\n if (start + matchLen != line.length && !matchLen) matchLen = 1;\n }\n if (match && matchLen)\n return {from: Pos(pos.line, start),\n to: Pos(pos.line, start + matchLen),\n match: match};\n };\n } else { // String query\n var origQuery = query;\n if (caseFold) query = query.toLowerCase();\n var fold = caseFold ? function(str){return str.toLowerCase();} : function(str){return str;};\n var target = query.split(\"\\n\");\n // Different methods for single-line and multi-line queries\n if (target.length == 1) {\n if (!query.length) {\n // Empty string would match anything and never progress, so\n // we define it to match nothing instead.\n this.matches = function() {};\n } else {\n this.matches = function(reverse, pos) {\n if (reverse) {\n var orig = doc.getLine(pos.line).slice(0, pos.ch), line = fold(orig);\n var match = line.lastIndexOf(query);\n if (match > -1) {\n match = adjustPos(orig, line, match);\n return {from: Pos(pos.line, match), to: Pos(pos.line, match + origQuery.length)};\n }\n } else {\n var orig = doc.getLine(pos.line).slice(pos.ch), line = fold(orig);\n var match = line.indexOf(query);\n if (match > -1) {\n match = adjustPos(orig, line, match) + pos.ch;\n return {from: Pos(pos.line, match), to: Pos(pos.line, match + origQuery.length)};\n }\n }\n };\n }\n } else {\n var origTarget = origQuery.split(\"\\n\");\n this.matches = function(reverse, pos) {\n var last = target.length - 1;\n if (reverse) {\n if (pos.line - (target.length - 1) < doc.firstLine()) return;\n if (fold(doc.getLine(pos.line).slice(0, origTarget[last].length)) != target[target.length - 1]) return;\n var to = Pos(pos.line, origTarget[last].length);\n for (var ln = pos.line - 1, i = last - 1; i >= 1; --i, --ln)\n if (target[i] != fold(doc.getLine(ln))) return;\n var line = doc.getLine(ln), cut = line.length - origTarget[0].length;\n if (fold(line.slice(cut)) != target[0]) return;\n return {from: Pos(ln, cut), to: to};\n } else {\n if (pos.line + (target.length - 1) > doc.lastLine()) return;\n var line = doc.getLine(pos.line), cut = line.length - origTarget[0].length;\n if (fold(line.slice(cut)) != target[0]) return;\n var from = Pos(pos.line, cut);\n for (var ln = pos.line + 1, i = 1; i < last; ++i, ++ln)\n if (target[i] != fold(doc.getLine(ln))) return;\n if (fold(doc.getLine(ln).slice(0, origTarget[last].length)) != target[last]) return;\n return {from: from, to: Pos(ln, origTarget[last].length)};\n }\n };\n }\n }\n }\n\n SearchCursor.prototype = {\n findNext: function() {return this.find(false);},\n findPrevious: function() {return this.find(true);},\n\n find: function(reverse) {\n var self = this, pos = this.doc.clipPos(reverse ? this.pos.from : this.pos.to);\n function savePosAndFail(line) {\n var pos = Pos(line, 0);\n self.pos = {from: pos, to: pos};\n self.atOccurrence = false;\n return false;\n }\n\n for (;;) {\n if (this.pos = this.matches(reverse, pos)) {\n this.atOccurrence = true;\n return this.pos.match || true;\n }\n if (reverse) {\n if (!pos.line) return savePosAndFail(0);\n pos = Pos(pos.line-1, this.doc.getLine(pos.line-1).length);\n }\n else {\n var maxLine = this.doc.lineCount();\n if (pos.line == maxLine - 1) return savePosAndFail(maxLine);\n pos = Pos(pos.line + 1, 0);\n }\n }\n },\n\n from: function() {if (this.atOccurrence) return this.pos.from;},\n to: function() {if (this.atOccurrence) return this.pos.to;},\n\n replace: function(newText) {\n if (!this.atOccurrence) return;\n var lines = CodeMirror.splitLines(newText);\n this.doc.replaceRange(lines, this.pos.from, this.pos.to);\n this.pos.to = Pos(this.pos.from.line + lines.length - 1,\n lines[lines.length - 1].length + (lines.length == 1 ? this.pos.from.ch : 0));\n }\n };\n\n // Maps a position in a case-folded line back to a position in the original line\n // (compensating for codepoints increasing in number during folding)\n function adjustPos(orig, folded, pos) {\n if (orig.length == folded.length) return pos;\n for (var pos1 = Math.min(pos, orig.length);;) {\n var len1 = orig.slice(0, pos1).toLowerCase().length;\n if (len1 < pos) ++pos1;\n else if (len1 > pos) --pos1;\n else return pos1;\n }\n }\n\n CodeMirror.defineExtension(\"getSearchCursor\", function(query, pos, caseFold) {\n return new SearchCursor(this.doc, query, pos, caseFold);\n });\n CodeMirror.defineDocExtension(\"getSearchCursor\", function(query, pos, caseFold) {\n return new SearchCursor(this, query, pos, caseFold);\n });\n\n CodeMirror.defineExtension(\"selectMatches\", function(query, caseFold) {\n var ranges = [], next;\n var cur = this.getSearchCursor(query, this.getCursor(\"from\"), caseFold);\n while (next = cur.findNext()) {\n if (CodeMirror.cmpPos(cur.to(), this.getCursor(\"to\")) > 0) break;\n ranges.push({anchor: cur.from(), head: cur.to()});\n }\n if (ranges.length)\n this.setSelections(ranges, 0);\n });\n});\n", ";(function(win){\n\tvar store = {},\n\t\tdoc = win.document,\n\t\tlocalStorageName = 'localStorage',\n\t\tscriptTag = 'script',\n\t\tstorage\n\n\tstore.disabled = false\n\tstore.version = '1.3.17'\n\tstore.set = function(key, value) {}\n\tstore.get = function(key, defaultVal) {}\n\tstore.has = function(key) { return store.get(key) !== undefined }\n\tstore.remove = function(key) {}\n\tstore.clear = function() {}\n\tstore.transact = function(key, defaultVal, transactionFn) {\n\t\tif (transactionFn == null) {\n\t\t\ttransactionFn = defaultVal\n\t\t\tdefaultVal = null\n\t\t}\n\t\tif (defaultVal == null) {\n\t\t\tdefaultVal = {}\n\t\t}\n\t\tvar val = store.get(key, defaultVal)\n\t\ttransactionFn(val)\n\t\tstore.set(key, val)\n\t}\n\tstore.getAll = function() {}\n\tstore.forEach = function() {}\n\n\tstore.serialize = function(value) {\n\t\treturn JSON.stringify(value)\n\t}\n\tstore.deserialize = function(value) {\n\t\tif (typeof value != 'string') { return undefined }\n\t\ttry { return JSON.parse(value) }\n\t\tcatch(e) { return value || undefined }\n\t}\n\n\t// Functions to encapsulate questionable FireFox 3.6.13 behavior\n\t// when about.config::dom.storage.enabled === false\n\t// See https://github.com/marcuswestin/store.js/issues#issue/13\n\tfunction isLocalStorageNameSupported() {\n\t\ttry { return (localStorageName in win && win[localStorageName]) }\n\t\tcatch(err) { return false }\n\t}\n\n\tif (isLocalStorageNameSupported()) {\n\t\tstorage = win[localStorageName]\n\t\tstore.set = function(key, val) {\n\t\t\tif (val === undefined) { return store.remove(key) }\n\t\t\tstorage.setItem(key, store.serialize(val))\n\t\t\treturn val\n\t\t}\n\t\tstore.get = function(key, defaultVal) {\n\t\t\tvar val = store.deserialize(storage.getItem(key))\n\t\t\treturn (val === undefined ? defaultVal : val)\n\t\t}\n\t\tstore.remove = function(key) { storage.removeItem(key) }\n\t\tstore.clear = function() { storage.clear() }\n\t\tstore.getAll = function() {\n\t\t\tvar ret = {}\n\t\t\tstore.forEach(function(key, val) {\n\t\t\t\tret[key] = val\n\t\t\t})\n\t\t\treturn ret\n\t\t}\n\t\tstore.forEach = function(callback) {\n\t\t\tfor (var i=0; idocument.w=window')\n\t\t\tstorageContainer.close()\n\t\t\tstorageOwner = storageContainer.w.frames[0].document\n\t\t\tstorage = storageOwner.createElement('div')\n\t\t} catch(e) {\n\t\t\t// somehow ActiveXObject instantiation failed (perhaps some special\n\t\t\t// security settings or otherwse), fall back to per-path storage\n\t\t\tstorage = doc.createElement('div')\n\t\t\tstorageOwner = doc.body\n\t\t}\n\t\tvar withIEStorage = function(storeFunction) {\n\t\t\treturn function() {\n\t\t\t\tvar args = Array.prototype.slice.call(arguments, 0)\n\t\t\t\targs.unshift(storage)\n\t\t\t\t// See http://msdn.microsoft.com/en-us/library/ms531081(v=VS.85).aspx\n\t\t\t\t// and http://msdn.microsoft.com/en-us/library/ms531424(v=VS.85).aspx\n\t\t\t\tstorageOwner.appendChild(storage)\n\t\t\t\tstorage.addBehavior('#default#userData')\n\t\t\t\tstorage.load(localStorageName)\n\t\t\t\tvar result = storeFunction.apply(store, args)\n\t\t\t\tstorageOwner.removeChild(storage)\n\t\t\t\treturn result\n\t\t\t}\n\t\t}\n\n\t\t// In IE7, keys cannot start with a digit or contain certain chars.\n\t\t// See https://github.com/marcuswestin/store.js/issues/40\n\t\t// See https://github.com/marcuswestin/store.js/issues/83\n\t\tvar forbiddenCharsRegex = new RegExp(\"[!\\\"#$%&'()*+,/\\\\\\\\:;<=>?@[\\\\]^`{|}~]\", \"g\")\n\t\tfunction ieKeyFix(key) {\n\t\t\treturn key.replace(/^d/, '___$&').replace(forbiddenCharsRegex, '___')\n\t\t}\n\t\tstore.set = withIEStorage(function(storage, key, val) {\n\t\t\tkey = ieKeyFix(key)\n\t\t\tif (val === undefined) { return store.remove(key) }\n\t\t\tstorage.setAttribute(key, store.serialize(val))\n\t\t\tstorage.save(localStorageName)\n\t\t\treturn val\n\t\t})\n\t\tstore.get = withIEStorage(function(storage, key, defaultVal) {\n\t\t\tkey = ieKeyFix(key)\n\t\t\tvar val = store.deserialize(storage.getAttribute(key))\n\t\t\treturn (val === undefined ? defaultVal : val)\n\t\t})\n\t\tstore.remove = withIEStorage(function(storage, key) {\n\t\t\tkey = ieKeyFix(key)\n\t\t\tstorage.removeAttribute(key)\n\t\t\tstorage.save(localStorageName)\n\t\t})\n\t\tstore.clear = withIEStorage(function(storage) {\n\t\t\tvar attributes = storage.XMLDocument.documentElement.attributes\n\t\t\tstorage.load(localStorageName)\n\t\t\tfor (var i=0, attr; attr=attributes[i]; i++) {\n\t\t\t\tstorage.removeAttribute(attr.name)\n\t\t\t}\n\t\t\tstorage.save(localStorageName)\n\t\t})\n\t\tstore.getAll = function(storage) {\n\t\t\tvar ret = {}\n\t\t\tstore.forEach(function(key, val) {\n\t\t\t\tret[key] = val\n\t\t\t})\n\t\t\treturn ret\n\t\t}\n\t\tstore.forEach = withIEStorage(function(storage, callback) {\n\t\t\tvar attributes = storage.XMLDocument.documentElement.attributes\n\t\t\tfor (var i=0, attr; attr=attributes[i]; ++i) {\n\t\t\t\tcallback(attr.name, store.deserialize(storage.getAttribute(attr.name)))\n\t\t\t}\n\t\t})\n\t}\n\n\ttry {\n\t\tvar testKey = '__storejs__'\n\t\tstore.set(testKey, testKey)\n\t\tif (store.get(testKey) != testKey) { store.disabled = true }\n\t\tstore.remove(testKey)\n\t} catch(e) {\n\t\tstore.disabled = true\n\t}\n\tstore.enabled = !store.disabled\n\n\tif (typeof module != 'undefined' && module.exports && this.module !== module) { module.exports = store }\n\telse if (typeof define === 'function' && define.amd) { define(store) }\n\telse { win.store = store }\n\n})(Function('return this')());\n", "module.exports={\n \"name\": \"yasgui-utils\",\n \"version\": \"1.6.0\",\n \"description\": \"Utils for YASGUI libs\",\n \"main\": \"src/main.js\",\n \"repository\": {\n \"type\": \"git\",\n \"url\": \"git://github.com/YASGUI/Utils.git\"\n },\n \"licenses\": [\n {\n \"type\": \"MIT\",\n \"url\": \"http://yasgui.github.io/license.txt\"\n }\n ],\n \"author\": \"Laurens Rietveld\",\n \"maintainers\": [\n {\n \"name\": \"Laurens Rietveld\",\n \"email\": \"laurens.rietveld@gmail.com\",\n \"web\": \"http://laurensrietveld.nl\"\n }\n ],\n \"bugs\": {\n \"url\": \"https://github.com/YASGUI/Utils/issues\"\n },\n \"homepage\": \"https://github.com/YASGUI/Utils\",\n \"dependencies\": {\n \"store\": \"^1.3.14\"\n }\n}\n", "window.console = window.console || {\"log\":function(){}};//make sure any console statements don't break IE\nmodule.exports = {\n\tstorage: require(\"./storage.js\"),\n\tsvg: require(\"./svg.js\"),\n\tversion: {\n\t\t\"yasgui-utils\" : require(\"../package.json\").version,\n\t},\n\tnestedExists : function(obj) {\n\t\tvar args = Array.prototype.slice.call(arguments, 1);\n\n\t\tfor (var i = 0; i < args.length; i++) {\n\t\t\tif (!obj || !obj.hasOwnProperty(args[i])) {\n\t\t\t\treturn false;\n\t\t\t}\n\t\t\tobj = obj[args[i]];\n\t\t}\n\t\treturn true;\n\t}\n};\n", "var store = require(\"store\");\nvar times = {\n\tday: function() {\n\t\treturn 1000 * 3600 * 24;//millis to day\n\t},\n\tmonth: function() {\n\t\ttimes.day() * 30;\n\t},\n\tyear: function() {\n\t\ttimes.month() * 12;\n\t}\n};\n\nvar root = module.exports = {\n\tset : function(key, val, exp) {\n if (!store.enabled) return;//this is probably in private mode. Don't run, as we might get Js errors\n\t\tif (key && val !== undefined) {\n\t\t\tif (typeof exp == \"string\") {\n\t\t\t\texp = times[exp]();\n\t\t\t}\n\t\t\t//try to store string for dom objects (e.g. XML result). Otherwise, we might get a circular reference error when stringifying this\n\t\t\tif (val.documentElement) val = new XMLSerializer().serializeToString(val.documentElement);\n\t\t\tstore.set(key, {\n\t\t\t\tval : val,\n\t\t\t\texp : exp,\n\t\t\t\ttime : new Date().getTime()\n\t\t\t});\n\t\t}\n\t},\n\tremove: function(key) {\n\t\tif (!store.enabled) return;//this is probably in private mode. Don't run, as we might get Js errors\n\t\tif (key) store.remove(key)\n\t},\n\tremoveAll: function(filter) {\n\t\tif (!store.enabled) return;//this is probably in private mode. Don't run, as we might get Js errors\n\t\tif (typeof filter === 'function') {\n\t\t\tfor (var key in store.getAll()) {\n\t\t\t\tif (filter(key, root.get(key))) root.remove(key);\n\t\t\t}\n\t\t}\n\t},\n\tget : function(key) {\n if (!store.enabled) return null;//this is probably in private mode. Don't run, as we might get Js errors\n\t\tif (key) {\n\t\t\tvar info = store.get(key);\n\t\t\tif (!info) {\n\t\t\t\treturn null;\n\t\t\t}\n\t\t\tif (info.exp && new Date().getTime() - info.time > info.exp) {\n\t\t\t\treturn null;\n\t\t\t}\n\t\t\treturn info.val;\n\t\t} else {\n\t\t\treturn null;\n\t\t}\n\t}\n\n};\n", "module.exports = {\n\tdraw: function(parent, svgString) {\n\t\tif (!parent) return;\n\t\tvar el = module.exports.getElement(svgString);\n\t\tif (el) {\n\t\t\tif (parent.append) {\n\t\t\t\tparent.append(el);\n\t\t\t} else {\n\t\t\t\t//regular dom doc\n\t\t\t\tparent.appendChild(el);\n\t\t\t}\n\t\t}\n\t},\n\tgetElement: function(svgString) {\n\t\tif (svgString && svgString.indexOf(\" 0) {\n\t\t\t//position completion notifications\n\t\t\tvar scrollBar = $(yasqe.getWrapperElement()).find(\".CodeMirror-vscrollbar\");\n\t\t\tvar offset = 0;\n\t\t\tif (scrollBar.is(\":visible\")) {\n\t\t\t\toffset = scrollBar.outerWidth();\n\t\t\t}\n\t\t\tneedPossibleAdjustment.forEach(function(notification) {\n\t\t\t\tnotification.css(\"right\", offset)\n\t\t\t});\n\t\t}\n\t});\n\n\n\n\t/**\n\t * Store bulk completions in memory as trie, and store these in localstorage as well (if enabled)\n\t * \n\t * @method doc.storeBulkCompletions\n\t * @param completions {array}\n\t */\n\tvar storeBulkCompletions = function(completer, completions) {\n\t\t// store array as trie\n\t\ttries[completer.name] = new Trie();\n\t\tfor (var i = 0; i < completions.length; i++) {\n\t\t\ttries[completer.name].insert(completions[i]);\n\t\t}\n\t\t// store in localstorage as well\n\t\tvar storageId = utils.getPersistencyId(yasqe, completer.persistent);\n\t\tif (storageId) yutils.storage.set(storageId, completions, \"month\");\n\t};\n\n\tvar initCompleter = function(name, completionInit) {\n\t\tvar completer = completers[name] = new completionInit(yasqe, name);\n\t\tcompleter.name = name;\n\t\tif (completer.bulk) {\n\t\t\tvar storeArrayAsBulk = function(suggestions) {\n\t\t\t\tif (suggestions && suggestions instanceof Array && suggestions.length > 0) {\n\t\t\t\t\tstoreBulkCompletions(completer, suggestions);\n\t\t\t\t}\n\t\t\t}\n\t\t\tif (completer.get instanceof Array) {\n\t\t\t\t// we don't care whether the completions are already stored in\n\t\t\t\t// localstorage. just use this one\n\t\t\t\tstoreArrayAsBulk(completer.get);\n\t\t\t} else {\n\t\t\t\t// if completions are defined in localstorage, use those! (calling the\n\t\t\t\t// function may come with overhead (e.g. async calls))\n\t\t\t\tvar completionsFromStorage = null;\n\t\t\t\tvar persistencyIdentifier = utils.getPersistencyId(yasqe, completer.persistent);\n\t\t\t\tif (persistencyIdentifier)\n\t\t\t\t\tcompletionsFromStorage = yutils.storage.get(persistencyIdentifier);\n\t\t\t\tif (completionsFromStorage && completionsFromStorage.length > 0) {\n\t\t\t\t\tstoreArrayAsBulk(completionsFromStorage);\n\t\t\t\t} else {\n\t\t\t\t\t// nothing in storage. check whether we have a function via which we\n\t\t\t\t\t// can get our prefixes\n\t\t\t\t\tif (completer.get instanceof Function) {\n\t\t\t\t\t\tif (completer.async) {\n\t\t\t\t\t\t\tcompleter.get(null, storeArrayAsBulk);\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tstoreArrayAsBulk(completer.get());\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t};\n\n\tvar autoComplete = function(fromAutoShow) {\n\t\tif (yasqe.somethingSelected())\n\t\t\treturn;\n\t\tvar tryHintType = function(completer) {\n\t\t\tif (fromAutoShow // from autoShow, i.e. this gets called each time the editor content changes\n\t\t\t\t&& (!completer.autoShow // autoshow for this particular type of autocompletion is -not- enabled\n\t\t\t\t\t|| (!completer.bulk && completer.async)) // async is enabled (don't want to re-do ajax-like request for every editor change)\n\t\t\t) {\n\t\t\t\treturn false;\n\t\t\t}\n\n\t\t\tvar hintConfig = {\n\t\t\t\tcloseCharacters: /(?=a)b/,\n\t\t\t\tcompleteSingle: false\n\t\t\t};\n\t\t\tif (!completer.bulk && completer.async) {\n\t\t\t\thintConfig.async = true;\n\t\t\t}\n\t\t\tvar wrappedHintCallback = function(yasqe, callback) {\n\t\t\t\treturn getCompletionHintsObject(completer, callback);\n\t\t\t};\n\t\t\tvar result = YASQE.showHint(yasqe, wrappedHintCallback, hintConfig);\n\t\t\treturn true;\n\t\t};\n\t\tfor (var completerName in completers) {\n\t\t\tif ($.inArray(completerName, yasqe.options.autocompleters) == -1) continue; //this completer is disabled\n\t\t\tvar completer = completers[completerName];\n\t\t\tif (!completer.isValidCompletionPosition) continue; //no way to check whether we are in a valid position\n\n\t\t\tif (!completer.isValidCompletionPosition()) {\n\t\t\t\t//if needed, fire callbacks for when we are -not- in valid completion position\n\t\t\t\tif (completer.callbacks && completer.callbacks.invalidPosition) {\n\t\t\t\t\tcompleter.callbacks.invalidPosition(yasqe, completer);\n\t\t\t\t}\n\t\t\t\t//not in a valid position, so continue to next completion candidate type\n\t\t\t\tcontinue;\n\t\t\t}\n\t\t\t// run valid position handler, if there is one (if it returns false, stop the autocompletion!)\n\t\t\tif (completer.callbacks && completer.callbacks.validPosition) {\n\t\t\t\tif (completer.callbacks.validPosition(yasqe, completer) === false)\n\t\t\t\t\tcontinue;\n\t\t\t}\n\t\t\tvar success = tryHintType(completer);\n\t\t\tif (success)\n\t\t\t\tbreak;\n\t\t}\n\t};\n\n\n\n\tvar getCompletionHintsObject = function(completer, callback) {\n\t\tvar getSuggestionsFromToken = function(partialToken) {\n\t\t\tvar stringToAutocomplete = partialToken.autocompletionString || partialToken.string;\n\t\t\tvar suggestions = [];\n\t\t\tif (tries[completer.name]) {\n\t\t\t\tsuggestions = tries[completer.name].autoComplete(stringToAutocomplete);\n\t\t\t} else if (typeof completer.get == \"function\" && completer.async == false) {\n\t\t\t\tsuggestions = completer.get(stringToAutocomplete);\n\t\t\t} else if (typeof completer.get == \"object\") {\n\t\t\t\tvar partialTokenLength = stringToAutocomplete.length;\n\t\t\t\tfor (var i = 0; i < completer.get.length; i++) {\n\t\t\t\t\tvar completion = completer.get[i];\n\t\t\t\t\tif (completion.slice(0, partialTokenLength) == stringToAutocomplete) {\n\t\t\t\t\t\tsuggestions.push(completion);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn getSuggestionsAsHintObject(suggestions, completer, partialToken);\n\n\t\t};\n\n\n\t\tvar token = yasqe.getCompleteToken();\n\t\tif (completer.preProcessToken) {\n\t\t\ttoken = completer.preProcessToken(token);\n\t\t}\n\n\t\tif (token) {\n\t\t\t// use custom completionhint function, to avoid reaching a loop when the\n\t\t\t// completionhint is the same as the current token\n\t\t\t// regular behaviour would keep changing the codemirror dom, hence\n\t\t\t// constantly calling this callback\n\t\t\tif (!completer.bulk && completer.async) {\n\t\t\t\tvar wrappedCallback = function(suggestions) {\n\t\t\t\t\tcallback(getSuggestionsAsHintObject(suggestions, completer, token));\n\t\t\t\t};\n\t\t\t\tcompleter.get(token, wrappedCallback);\n\t\t\t} else {\n\t\t\t\treturn getSuggestionsFromToken(token);\n\n\t\t\t}\n\t\t}\n\t};\n\n\n\t/**\n\t * get our array of suggestions (strings) in the codemirror hint format\n\t */\n\tvar getSuggestionsAsHintObject = function(suggestions, completer, token) {\n\t\tvar hintList = [];\n\t\tfor (var i = 0; i < suggestions.length; i++) {\n\t\t\tvar suggestedString = suggestions[i];\n\t\t\tif (completer.postProcessToken) {\n\t\t\t\tsuggestedString = completer.postProcessToken(token, suggestedString);\n\t\t\t}\n\t\t\thintList.push({\n\t\t\t\ttext: suggestedString,\n\t\t\t\tdisplayText: suggestedString,\n\t\t\t\thint: selectHint,\n\t\t\t});\n\t\t}\n\n\t\tvar cur = yasqe.getCursor();\n\t\tvar returnObj = {\n\t\t\tcompletionToken: token.string,\n\t\t\tlist: hintList,\n\t\t\tfrom: {\n\t\t\t\tline: cur.line,\n\t\t\t\tch: token.start\n\t\t\t},\n\t\t\tto: {\n\t\t\t\tline: cur.line,\n\t\t\t\tch: token.end\n\t\t\t}\n\t\t};\n\t\t//if we have some autocompletion handlers specified, add these these to the object. Codemirror will take care of firing these\n\t\tif (completer.callbacks) {\n\t\t\tfor (var callbackName in completer.callbacks) {\n\t\t\t\tif (completer.callbacks[callbackName]) {\n\t\t\t\t\tYASQE.on(returnObj, callbackName, completer.callbacks[callbackName]);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\treturn returnObj;\n\t};\n\n\treturn {\n\t\tinit: initCompleter,\n\t\tcompleters: completers,\n\t\tnotifications: {\n\t\t\tgetEl: function(completer) {\n\t\t\t\treturn $(completionNotifications[completer.name]);\n\t\t\t},\n\t\t\tshow: function(yasqe, completer) {\n\t\t\t\t//only draw when the user needs to use a keypress to summon autocompletions\n\t\t\t\tif (!completer.autoshow) {\n\t\t\t\t\tif (!completionNotifications[completer.name]) completionNotifications[completer.name] = $(\"
\");\n\t\t\t\t\tcompletionNotifications[completer.name]\n\t\t\t\t\t\t.show()\n\t\t\t\t\t\t.text(\"Press \" + (navigator.userAgent.indexOf('Mac OS X') != -1 ? \"CMD\" : \"CTRL\") + \" - to autocomplete\")\n\t\t\t\t\t\t.appendTo($(yasqe.getWrapperElement()));\n\t\t\t\t}\n\t\t\t},\n\t\t\thide: function(yasqe, completer) {\n\t\t\t\tif (completionNotifications[completer.name]) {\n\t\t\t\t\tcompletionNotifications[completer.name].hide();\n\t\t\t\t}\n\t\t\t}\n\n\t\t},\n\t\tautoComplete: autoComplete,\n\t\tgetTrie: function(completer) {\n\t\t\treturn (typeof completer == \"string\" ? tries[completer] : tries[completer.name]);\n\t\t}\n\t}\n};\n\n\n\n\n\n\n\n\n\n/**\n * function which fires after the user selects a completion. this function checks whether we actually need to store this one (if completion is same as current token, don't do anything)\n */\nvar selectHint = function(yasqe, data, completion) {\n\tif (completion.text != yasqe.getTokenAt(yasqe.getCursor()).string) {\n\t\tyasqe.replaceRange(completion.text, data.from, data.to);\n\t}\n};\n\n\n\n\n\n//\n//module.exports = {\n//\tpreprocessPrefixTokenForCompletion: preprocessPrefixTokenForCompletion,\n//\tpostprocessResourceTokenForCompletion: postprocessResourceTokenForCompletion,\n//\tpreprocessResourceTokenForCompletion: preprocessResourceTokenForCompletion,\n//\tshowCompletionNotification: showCompletionNotification,\n//\thideCompletionNotification: hideCompletionNotification,\n//\tautoComplete: autoComplete,\n//\tautocompleteVariables: autocompleteVariables,\n//\tfetchFromPrefixCc: fetchFromPrefixCc,\n//\tfetchFromLov: fetchFromLov,\n////\tstoreBulkCompletions: storeBulkCompletions,\n//\tloadBulkCompletions: loadBulkCompletions,\n//};", "'use strict';\nvar $ = (function(){try{return require('jquery')}catch(e){return window.jQuery}})();\nmodule.exports = function(yasqe, name) {\n\treturn {\n\t\tisValidCompletionPosition: function() {\n\t\t\treturn module.exports.isValidCompletionPosition(yasqe);\n\t\t},\n\t\tget: function(token, callback) {\n\t\t\treturn require('./utils').fetchFromLov(yasqe, this, token, callback);\n\t\t},\n\t\tpreProcessToken: function(token) {\n\t\t\treturn module.exports.preProcessToken(yasqe, token)\n\t\t},\n\t\tpostProcessToken: function(token, suggestedString) {\n\t\t\treturn module.exports.postProcessToken(yasqe, token, suggestedString);\n\t\t},\n\t\tasync: true,\n\t\tbulk: false,\n\t\tautoShow: false,\n\t\tpersistent: name,\n\t\tcallbacks: {\n\t\t\tvalidPosition: yasqe.autocompleters.notifications.show,\n\t\t\tinvalidPosition: yasqe.autocompleters.notifications.hide,\n\t\t}\n\t}\n};\n\nmodule.exports.isValidCompletionPosition = function(yasqe) {\n\tvar token = yasqe.getCompleteToken();\n\tif (token.string.indexOf(\"?\") == 0)\n\t\treturn false;\n\tvar cur = yasqe.getCursor();\n\tvar previousToken = yasqe.getPreviousNonWsToken(cur.line, token);\n\tif (previousToken.string == \"a\")\n\t\treturn true;\n\tif (previousToken.string == \"rdf:type\")\n\t\treturn true;\n\tif (previousToken.string == \"rdfs:domain\")\n\t\treturn true;\n\tif (previousToken.string == \"rdfs:range\")\n\t\treturn true;\n\treturn false;\n};\nmodule.exports.preProcessToken = function(yasqe, token) {\n\treturn require('./utils.js').preprocessResourceTokenForCompletion(yasqe, token);\n};\nmodule.exports.postProcessToken = function(yasqe, token, suggestedString) {\n\treturn require('./utils.js').postprocessResourceTokenForCompletion(yasqe, token, suggestedString)\n};", "'use strict';\nvar $ = (function(){try{return require('jquery')}catch(e){return window.jQuery}})();\n//this is a mapping from the class names (generic ones, for compatability with codemirror themes), to what they -actually- represent\nvar tokenTypes = {\n\t\"string-2\": \"prefixed\",\n\t\"atom\": \"var\"\n};\n\nmodule.exports = function(yasqe, completerName) {\n\t//this autocompleter also fires on-change!\n\tyasqe.on(\"change\", function() {\n\t\tmodule.exports.appendPrefixIfNeeded(yasqe, completerName);\n\t});\n\n\n\treturn {\n\t\tisValidCompletionPosition: function() {\n\t\t\treturn module.exports.isValidCompletionPosition(yasqe);\n\t\t},\n\t\tget: function(token, callback) {\n\t\t\t$.get(\"http://prefix.cc/popular/all.file.json\", function(data) {\n\t\t\t\tvar prefixArray = [];\n\t\t\t\tfor (var prefix in data) {\n\t\t\t\t\tif (prefix == \"bif\")\n\t\t\t\t\t\tcontinue; // skip this one! see #231\n\t\t\t\t\tvar completeString = prefix + \": <\" + data[prefix] + \">\";\n\t\t\t\t\tprefixArray.push(completeString); // the array we want to store in localstorage\n\t\t\t\t}\n\n\t\t\t\tprefixArray.sort();\n\t\t\t\tcallback(prefixArray);\n\t\t\t});\n\t\t},\n\t\tpreProcessToken: function(token) {\n\t\t\treturn module.exports.preprocessPrefixTokenForCompletion(yasqe, token)\n\t\t},\n\t\tasync: true,\n\t\tbulk: true,\n\t\tautoShow: true,\n\t\tpersistent: completerName,\n\t\tcallbacks: {\n\t\t\tpick: function() {\n\t\t\t\tyasqe.collapsePrefixes(false);\n\t\t\t}\n\t\t}\n\t};\n};\nmodule.exports.isValidCompletionPosition = function(yasqe) {\n\tvar cur = yasqe.getCursor(),\n\t\ttoken = yasqe.getTokenAt(cur);\n\n\t// not at end of line\n\tif (yasqe.getLine(cur.line).length > cur.ch)\n\t\treturn false;\n\n\tif (token.type != \"ws\") {\n\t\t// we want to complete token, e.g. when the prefix starts with an a\n\t\t// (treated as a token in itself..)\n\t\t// but we to avoid including the PREFIX tag. So when we have just\n\t\t// typed a space after the prefix tag, don't get the complete token\n\t\ttoken = yasqe.getCompleteToken();\n\t}\n\n\t// we shouldnt be at the uri part the prefix declaration\n\t// also check whether current token isnt 'a' (that makes codemirror\n\t// thing a namespace is a possiblecurrent\n\tif (!token.string.indexOf(\"a\") == 0 && $.inArray(\"PNAME_NS\", token.state.possibleCurrent) == -1)\n\t\treturn false;\n\n\t// First token of line needs to be PREFIX,\n\t// there should be no trailing text (otherwise, text is wrongly inserted\n\t// in between)\n\tvar previousToken = yasqe.getPreviousNonWsToken(cur.line, token);\n\tif (!previousToken || previousToken.string.toUpperCase() != \"PREFIX\") return false;\n\treturn true;\n};\nmodule.exports.preprocessPrefixTokenForCompletion = function(yasqe, token) {\n\tvar previousToken = yasqe.getPreviousNonWsToken(yasqe.getCursor().line, token);\n\tif (previousToken && previousToken.string && previousToken.string.slice(-1) == \":\") {\n\t\t//combine both tokens! In this case we have the cursor at the end of line \"PREFIX bla: <\".\n\t\t//we want the token to be \"bla: <\", en not \"<\"\n\t\ttoken = {\n\t\t\tstart: previousToken.start,\n\t\t\tend: token.end,\n\t\t\tstring: previousToken.string + \" \" + token.string,\n\t\t\tstate: token.state\n\t\t};\n\t}\n\treturn token;\n};\n/**\n * Check whether typed prefix is declared. If not, automatically add declaration\n * using list from prefix.cc\n * \n * @param yasqe\n */\nmodule.exports.appendPrefixIfNeeded = function(yasqe, completerName) {\n\tif (!yasqe.autocompleters.getTrie(completerName))\n\t\treturn; // no prefixed defined. just stop\n\tif (!yasqe.options.autocompleters || yasqe.options.autocompleters.indexOf(completerName) == -1) return; //this autocompleter is disabled\n\tvar cur = yasqe.getCursor();\n\n\tvar token = yasqe.getTokenAt(cur);\n\tif (tokenTypes[token.type] == \"prefixed\") {\n\t\tvar colonIndex = token.string.indexOf(\":\");\n\t\tif (colonIndex !== -1) {\n\t\t\t// check previous token isnt PREFIX, or a '<'(which would mean we are in a uri)\n\t\t\t//\t\t\tvar firstTokenString = yasqe.getNextNonWsToken(cur.line).string.toUpperCase();\n\t\t\tvar lastNonWsTokenString = yasqe.getPreviousNonWsToken(cur.line, token).string.toUpperCase();\n\t\t\tvar previousToken = yasqe.getTokenAt({\n\t\t\t\tline: cur.line,\n\t\t\t\tch: token.start\n\t\t\t}); // needs to be null (beginning of line), or whitespace\n\t\t\tif (lastNonWsTokenString != \"PREFIX\" && (previousToken.type == \"ws\" || previousToken.type == null)) {\n\t\t\t\t// check whether it isnt defined already (saves us from looping\n\t\t\t\t// through the array)\n\t\t\t\tvar currentPrefix = token.string.substring(0, colonIndex + 1);\n\t\t\t\tvar queryPrefixes = yasqe.getPrefixesFromQuery();\n\t\t\t\tif (queryPrefixes[currentPrefix.slice(0, -1)] == null) {\n\t\t\t\t\t// ok, so it isnt added yet!\n\t\t\t\t\tvar completions = yasqe.autocompleters.getTrie(completerName).autoComplete(currentPrefix);\n\t\t\t\t\tif (completions.length > 0) {\n\t\t\t\t\t\tyasqe.addPrefixes(completions[0]);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n};", "'use strict';\nvar $ = (function(){try{return require('jquery')}catch(e){return window.jQuery}})();\nmodule.exports = function(yasqe, name) {\n\treturn {\n\t\tisValidCompletionPosition: function() {\n\t\t\treturn module.exports.isValidCompletionPosition(yasqe);\n\t\t},\n\t\tget: function(token, callback) {\n\t\t\treturn require('./utils').fetchFromLov(yasqe, this, token, callback);\n\t\t},\n\t\tpreProcessToken: function(token) {\n\t\t\treturn module.exports.preProcessToken(yasqe, token)\n\t\t},\n\t\tpostProcessToken: function(token, suggestedString) {\n\t\t\treturn module.exports.postProcessToken(yasqe, token, suggestedString);\n\t\t},\n\t\tasync: true,\n\t\tbulk: false,\n\t\tautoShow: false,\n\t\tpersistent: name,\n\t\tcallbacks: {\n\t\t\tvalidPosition: yasqe.autocompleters.notifications.show,\n\t\t\tinvalidPosition: yasqe.autocompleters.notifications.hide,\n\t\t}\n\t}\n};\n\nmodule.exports.isValidCompletionPosition = function(yasqe) {\n\tvar token = yasqe.getCompleteToken();\n\tif (token.string.length == 0)\n\t\treturn false; //we want -something- to autocomplete\n\tif (token.string.indexOf(\"?\") == 0)\n\t\treturn false; // we are typing a var\n\tif ($.inArray(\"a\", token.state.possibleCurrent) >= 0)\n\t\treturn true; // predicate pos\n\tvar cur = yasqe.getCursor();\n\tvar previousToken = yasqe.getPreviousNonWsToken(cur.line, token);\n\tif (previousToken.string == \"rdfs:subPropertyOf\")\n\t\treturn true;\n\n\t// hmm, we would like -better- checks here, e.g. checking whether we are\n\t// in a subject, and whether next item is a rdfs:subpropertyof.\n\t// difficult though... the grammar we use is unreliable when the query\n\t// is invalid (i.e. during typing), and often the predicate is not typed\n\t// yet, when we are busy writing the subject...\n\treturn false;\n};\nmodule.exports.preProcessToken = function(yasqe, token) {\n\treturn require('./utils.js').preprocessResourceTokenForCompletion(yasqe, token);\n};\nmodule.exports.postProcessToken = function(yasqe, token, suggestedString) {\n\treturn require('./utils.js').postprocessResourceTokenForCompletion(yasqe, token, suggestedString)\n};", "'use strict';\nvar $ = (function(){try{return require('jquery')}catch(e){return window.jQuery}})(),\n\tutils = require('./utils.js'),\n\tyutils = require('yasgui-utils');\n/**\n * Where the base class only contains functionality related to -all- completions, this class contains some utils used here and there in our autocompletions\n */\n\n\n\n/**\n * Converts rdf:type to http://.../type and converts to http://...\n * Stores additional info such as the used namespace and prefix in the token object\n */\nvar preprocessResourceTokenForCompletion = function(yasqe, token) {\n\tvar queryPrefixes = yasqe.getPrefixesFromQuery();\n\tif (!token.string.indexOf(\"<\") == 0) {\n\t\ttoken.tokenPrefix = token.string.substring(0, token.string.indexOf(\":\") + 1);\n\n\t\tif (queryPrefixes[token.tokenPrefix.slice(0, -1)] != null) {\n\t\t\ttoken.tokenPrefixUri = queryPrefixes[token.tokenPrefix.slice(0, -1)];\n\t\t}\n\t}\n\n\ttoken.autocompletionString = token.string.trim();\n\tif (!token.string.indexOf(\"<\") == 0 && token.string.indexOf(\":\") > -1) {\n\t\t// hmm, the token is prefixed. We still need the complete uri for autocompletions. generate this!\n\t\tfor (var prefix in queryPrefixes) {\n\t\t\tif (token.string.indexOf(prefix) == 0) {\n\t\t\t\ttoken.autocompletionString = queryPrefixes[prefix];\n\t\t\t\ttoken.autocompletionString += token.string.substring(prefix.length + 1);\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\t}\n\n\tif (token.autocompletionString.indexOf(\"<\") == 0) token.autocompletionString = token.autocompletionString.substring(1);\n\tif (token.autocompletionString.indexOf(\">\", token.length - 1) !== -1) token.autocompletionString = token.autocompletionString.substring(0, token.autocompletionString.length - 1);\n\treturn token;\n};\n\nvar postprocessResourceTokenForCompletion = function(yasqe, token, suggestedString) {\n\tif (token.tokenPrefix && token.autocompletionString && token.tokenPrefixUri) {\n\t\t// we need to get the suggested string back to prefixed form\n\t\tsuggestedString = token.tokenPrefix + suggestedString.substring(token.tokenPrefixUri.length);\n\t} else {\n\t\t// it is a regular uri. add '<' and '>' to string\n\t\tsuggestedString = \"<\" + suggestedString + \">\";\n\t}\n\treturn suggestedString;\n};\n\nvar fetchFromLov = function(yasqe, completer, token, callback) {\n\tif (!token || !token.string || token.string.trim().length == 0) {\n\t\tyasqe.autocompleters.notifications.getEl(completer)\n\t\t\t.empty()\n\t\t\t.append(\"Nothing to autocomplete yet!\");\n\t\treturn false;\n\t}\n\tvar maxResults = 50;\n\n\tvar args = {\n\t\tq: token.autocompletionString,\n\t\tpage: 1\n\t};\n\tif (completer.name == \"classes\") {\n\t\targs.type = \"class\";\n\t} else {\n\t\targs.type = \"property\";\n\t}\n\tvar results = [];\n\tvar url = \"\";\n\tvar updateUrl = function() {\n\t\turl = \"http://lov.okfn.org/dataset/lov/api/v2/autocomplete/terms?\" + $.param(args);\n\t};\n\tupdateUrl();\n\tvar increasePage = function() {\n\t\targs.page++;\n\t\tupdateUrl();\n\t};\n\tvar doRequests = function() {\n\t\t$.get(\n\t\t\turl,\n\t\t\tfunction(data) {\n\t\t\t\tfor (var i = 0; i < data.results.length; i++) {\n\t\t\t\t\tif ($.isArray(data.results[i].uri) && data.results[i].uri.length > 0) {\n\t\t\t\t\t\tresults.push(data.results[i].uri[0]);\n\t\t\t\t\t} else {\n\t\t\t\t\t\tresults.push(data.results[i].uri);\n\t\t\t\t\t}\n\n\t\t\t\t}\n\t\t\t\tif (results.length < data.total_results && results.length < maxResults) {\n\t\t\t\t\tincreasePage();\n\t\t\t\t\tdoRequests();\n\t\t\t\t} else {\n\t\t\t\t\t//if notification bar is there, show feedback, or close\n\t\t\t\t\tif (results.length > 0) {\n\t\t\t\t\t\tyasqe.autocompleters.notifications.hide(yasqe, completer)\n\t\t\t\t\t} else {\n\t\t\t\t\t\tyasqe.autocompleters.notifications.getEl(completer).text(\"0 matches found...\");\n\t\t\t\t\t}\n\t\t\t\t\tcallback(results);\n\t\t\t\t\t// requests done! Don't call this function again\n\t\t\t\t}\n\t\t\t}).fail(function(jqXHR, textStatus, errorThrown) {\n\t\t\tyasqe.autocompleters.notifications.getEl(completer)\n\t\t\t\t.empty()\n\t\t\t\t.append(\"Failed fetching suggestions..\");\n\n\t\t});\n\t};\n\t//if notification bar is there, show a loader\n\tyasqe.autocompleters.notifications.getEl(completer)\n\t\t.empty()\n\t\t.append($(\"Fetchting autocompletions  \"))\n\t\t.append($(yutils.svg.getElement(require('../imgs.js').loader)).addClass(\"notificationLoader\"));\n\tdoRequests();\n};\n\n\n\nmodule.exports = {\n\tfetchFromLov: fetchFromLov,\n\tpreprocessResourceTokenForCompletion: preprocessResourceTokenForCompletion,\n\tpostprocessResourceTokenForCompletion: postprocessResourceTokenForCompletion,\n};", "'use strict';\nvar $ = (function(){try{return require('jquery')}catch(e){return window.jQuery}})();\nmodule.exports = function(yasqe) {\n\treturn {\n\t\tisValidCompletionPosition: function() {\n\t\t\tvar token = yasqe.getTokenAt(yasqe.getCursor());\n\t\t\tif (token.type != \"ws\") {\n\t\t\t\ttoken = yasqe.getCompleteToken(token);\n\t\t\t\tif (token && token.string.indexOf(\"?\") == 0) {\n\t\t\t\t\treturn true;\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn false;\n\t\t},\n\t\tget: function(token) {\n\t\t\tif (token.trim().length == 0) return []; //nothing to autocomplete\n\t\t\tvar distinctVars = {};\n\t\t\t//do this outside of codemirror. I expect jquery to be faster here (just finding dom elements with classnames)\n\t\t\t$(yasqe.getWrapperElement()).find(\".cm-atom\").each(function() {\n\t\t\t\tvar variable = this.innerHTML;\n\t\t\t\tif (variable.indexOf(\"?\") == 0) {\n\t\t\t\t\t//ok, lets check if the next element in the div is an atom as well. In that case, they belong together (may happen sometimes when query is not syntactically valid)\n\t\t\t\t\tvar nextEl = $(this).next();\n\t\t\t\t\tvar nextElClass = nextEl.attr('class');\n\t\t\t\t\tif (nextElClass && nextEl.attr('class').indexOf(\"cm-atom\") >= 0) {\n\t\t\t\t\t\tvariable += nextEl.text();\n\t\t\t\t\t}\n\n\t\t\t\t\t//skip single questionmarks\n\t\t\t\t\tif (variable.length <= 1) return;\n\n\t\t\t\t\t//it should match our token ofcourse\n\t\t\t\t\tif (variable.indexOf(token) !== 0) return;\n\n\t\t\t\t\t//skip exact matches\n\t\t\t\t\tif (variable == token) return;\n\n\t\t\t\t\t//store in map so we have a unique list \n\t\t\t\t\tdistinctVars[variable] = true;\n\n\n\t\t\t\t}\n\t\t\t});\n\t\t\tvar variables = [];\n\t\t\tfor (var variable in distinctVars) {\n\t\t\t\tvariables.push(variable);\n\t\t\t}\n\t\t\tvariables.sort();\n\t\t\treturn variables;\n\t\t},\n\t\tasync: false,\n\t\tbulk: false,\n\t\tautoShow: true,\n\t}\n};", "var sparql = require('./sparql.js'),\n $ = (function(){try{return require('jquery')}catch(e){return window.jQuery}})();\nvar quote = function(string) {\n return \"'\" + string + \"'\";\n}\nmodule.exports = {\n createCurlString : function(yasqe, config) {\n var ajaxConfig = sparql.getAjaxConfig(yasqe, config);\n \n var url = yasqe.options.sparql.endpoint;\n if (yasqe.options.sparql.requestMethod == 'GET') {\n url += '?' + $.param(ajaxConfig.data);\n }\n var cmds = [\n 'curl', url,\n '-X', yasqe.options.sparql.requestMethod\n ];\n if (yasqe.options.sparql.requestMethod == 'POST') {\n cmds.push('--data ' + quote($.param(ajaxConfig.data)));\n }\n for (var header in ajaxConfig.headers) {\n cmds.push('-H ' + quote(header + ': ' + ajaxConfig.headers[header]));\n }\n return cmds.join(' ');\n\n\n\n\n }\n}\n", "/**\n * The default options of YASQE (check the CodeMirror documentation for even\n * more options, such as disabling line numbers, or changing keyboard shortcut\n * keys). Either change the default options by setting YASQE.defaults, or by\n * passing your own options as second argument to the YASQE constructor\n */\nvar $ = (function(){try{return require('jquery')}catch(e){return window.jQuery}})(),\n\tYASQE = require('./main.js');\nYASQE.defaults = $.extend(true, {}, YASQE.defaults, {\n\tmode: \"sparql11\",\n\t/**\n\t * Query string\n\t */\n\tvalue: \"PREFIX rdf: \\nPREFIX rdfs: \\nSELECT * WHERE {\\n ?sub ?pred ?obj .\\n} \\nLIMIT 10\",\n\thighlightSelectionMatches: {\n\t\tshowToken: /\\w/\n\t},\n\ttabMode: \"indent\",\n\tlineNumbers: true,\n\tlineWrapping: true,\n\tbackdrop: false,\n\tfoldGutter: {\n\t\trangeFinder: new YASQE.fold.combine(YASQE.fold.brace, YASQE.fold.prefix)\n\t},\n\tcollapsePrefixesOnLoad: false,\n\tgutters: [\"gutterErrorBar\", \"CodeMirror-linenumbers\", \"CodeMirror-foldgutter\"],\n\tmatchBrackets: true,\n\tfixedGutter: true,\n\tsyntaxErrorCheck: true,\n\t/**\n\t * Extra shortcut keys. Check the CodeMirror manual on how to add your own\n\t *\n\t * @property extraKeys\n\t * @type object\n\t */\n\textraKeys: {\n\t\t//\t\t\t\t\t\"Ctrl-Space\" : function(yasqe) {\n\t\t//\t\t\t\t\t\tYASQE.autoComplete(yasqe);\n\t\t//\t\t\t\t\t},\n\t\t\"Ctrl-Space\": YASQE.autoComplete,\n\n\t\t\"Cmd-Space\": YASQE.autoComplete,\n\t\t\"Ctrl-D\": YASQE.deleteLine,\n\t\t\"Ctrl-K\": YASQE.deleteLine,\n\t\t\"Cmd-D\": YASQE.deleteLine,\n\t\t\"Cmd-K\": YASQE.deleteLine,\n\t\t\"Ctrl-/\": YASQE.commentLines,\n\t\t\"Cmd-/\": YASQE.commentLines,\n\t\t\"Ctrl-Alt-Down\": YASQE.copyLineDown,\n\t\t\"Ctrl-Alt-Up\": YASQE.copyLineUp,\n\t\t\"Cmd-Alt-Down\": YASQE.copyLineDown,\n\t\t\"Cmd-Alt-Up\": YASQE.copyLineUp,\n\t\t\"Shift-Ctrl-F\": YASQE.doAutoFormat,\n\t\t\"Shift-Cmd-F\": YASQE.doAutoFormat,\n\t\t\"Ctrl-]\": YASQE.indentMore,\n\t\t\"Cmd-]\": YASQE.indentMore,\n\t\t\"Ctrl-[\": YASQE.indentLess,\n\t\t\"Cmd-[\": YASQE.indentLess,\n\t\t\"Ctrl-S\": YASQE.storeQuery,\n\t\t\"Cmd-S\": YASQE.storeQuery,\n\t\t\"Ctrl-Enter\": YASQE.executeQuery,\n\t\t\"Cmd-Enter\": YASQE.executeQuery,\n\t\t\"F11\": function(yasqe) {\n\t\t\tyasqe.setOption(\"fullScreen\", !yasqe.getOption(\"fullScreen\"));\n\t\t},\n\t\t\"Esc\": function(yasqe) {\n\t\t\tif (yasqe.getOption(\"fullScreen\")) yasqe.setOption(\"fullScreen\", false);\n\t\t}\n\t},\n\tcursorHeight: 0.9,\n\n\n\t/**\n\t * Show a button with which users can create a link to this query. Set this value to null to disable this functionality.\n\t * By default, this feature is enabled, and the only the query value is appended to the link.\n\t * ps. This function should return an object which is parseable by jQuery.param (http://api.jquery.com/jQuery.param/)\n\t */\n\tcreateShareLink: YASQE.createShareLink,\n\n\tcreateShortLink: null,\n\n\t/**\n\t * Consume links shared by others, by checking the url for arguments coming from a query link. Defaults by only checking the 'query=' argument in the url\n\t */\n\tconsumeShareLink: YASQE.consumeShareLink,\n\n\n\n\n\t/**\n\t * Change persistency settings for the YASQE query value. Setting the values\n\t * to null, will disable persistancy: nothing is stored between browser\n\t * sessions Setting the values to a string (or a function which returns a\n\t * string), will store the query in localstorage using the specified string.\n\t * By default, the ID is dynamically generated using the closest dom ID, to avoid collissions when using multiple YASQE items on one\n\t * page\n\t *\n\t * @type function|string\n\t */\n\tpersistent: function(yasqe) {\n\t\treturn \"yasqe_\" + $(yasqe.getWrapperElement()).closest('[id]').attr('id') + \"_queryVal\";\n\t},\n\n\n\t/**\n\t * Settings for querying sparql endpoints\n\t */\n\tsparql: {\n\t\tshowQueryButton: false,\n\n\t\t/**f\n\t\t * Endpoint to query\n\t\t *\n\t\t * @property sparql.endpoint\n\t\t * @type String|function\n\t\t */\n\t\tendpoint: \"http://dbpedia.org/sparql\",\n\t\t/**\n\t\t * Request method via which to access SPARQL endpoint\n\t\t *\n\t\t * @property sparql.requestMethod\n\t\t * @type String|function\n\t\t */\n\t\trequestMethod: \"POST\",\n\n\t\t/**\n\t\t * @type String|function\n\t\t */\n\t\tacceptHeaderGraph: \"text/turtle,*/*;q=0.9\",\n\t\t/**\n\t\t * @type String|function\n\t\t */\n\t\tacceptHeaderSelect: \"application/sparql-results+json,*/*;q=0.9\",\n\t\t/**\n\t\t * @type String|function\n\t\t */\n\t\tacceptHeaderUpdate: \"text/plain,*/*;q=0.9\",\n\n\t\t/**\n\t\t * Named graphs to query.\n\t\t */\n\t\tnamedGraphs: [],\n\t\t/**\n\t\t * Default graphs to query.\n\t\t */\n\t\tdefaultGraphs: [],\n\n\t\t/**\n\t\t * Additional request arguments. Add them in the form: {name: \"name\", value: \"value\"}\n\t\t */\n\t\targs: [],\n\n\t\t/**\n\t\t * Additional request headers\n\t\t */\n\t\theaders: {},\n\n\t\tgetQueryForAjax: null,\n\t\t/**\n\t\t * Set of ajax callbacks\n\t\t */\n\t\tcallbacks: {\n\t\t\tbeforeSend: null,\n\t\t\tcomplete: null,\n\t\t\terror: null,\n\t\t\tsuccess: null\n\t\t},\n\t\thandlers: {} //keep here for backwards compatability\n\t},\n});\n", "'use strict';\nmodule.exports = {\n\tquery: '\t',\n\tqueryInvalid: 'image/svg+xml',\n\tdownload: '\t',\n\tshare: '',\n\twarning: '',\n\tfullscreen: 'image/svg+xml',\n\tsmallscreen: 'image/svg+xml',\n};\n", "'use strict';\n//make sure any console statements\nwindow.console = window.console || {\n\t\"log\": function() {}\n};\n\n/**\n * Load libraries\n */\nvar $ = (function(){try{return require('jquery')}catch(e){return window.jQuery}})(),\n\tCodeMirror = (function(){try{return require('codemirror')}catch(e){return window.CodeMirror}})(),\n\tutils = require('./utils.js'),\n\tyutils = require('yasgui-utils'),\n\timgs = require('./imgs.js');\n\nrequire(\"../lib/deparam.js\");\nrequire('codemirror/addon/fold/foldcode.js');\nrequire('codemirror/addon/fold/foldgutter.js');\nrequire('codemirror/addon/fold/xml-fold.js');\nrequire('codemirror/addon/fold/brace-fold.js');\nrequire('./prefixFold.js');\nrequire('codemirror/addon/hint/show-hint.js');\nrequire('codemirror/addon/search/searchcursor.js');\nrequire('codemirror/addon/edit/matchbrackets.js');\nrequire('codemirror/addon/runmode/runmode.js');\nrequire('codemirror/addon/display/fullscreen.js');\nrequire('../lib/grammar/tokenizer.js');\n\n\n\n/**\n * Main YASQE constructor. Pass a DOM element as argument to append the editor to, and (optionally) pass along config settings (see the YASQE.defaults object below, as well as the regular CodeMirror documentation, for more information on configurability)\n *\n * @constructor\n * @param {DOM-Element} parent element to append editor to.\n * @param {object} settings\n * @class YASQE\n * @return {doc} YASQE document\n */\nvar root = module.exports = function(parent, config) {\n\tvar rootEl = $(\"
\", {\n\t\tclass: 'yasqe'\n\t}).appendTo($(parent));\n\tconfig = extendConfig(config);\n\tvar yasqe = extendCmInstance(CodeMirror(rootEl[0], config));\n\tpostProcessCmElement(yasqe);\n\treturn yasqe;\n};\n\n/**\n * Extend config object, which we will pass on to the CM constructor later on.\n * Need this, to make sure our own 'onBlur' etc events do not get overwritten by\n * people who add their own onblur events to the config Additionally, need this\n * to include the CM defaults ourselves. CodeMirror has a method for including\n * defaults, but we can't rely on that one: it assumes flat config object, where\n * we have nested objects (e.g. the persistency option)\n *\n * @private\n */\nvar extendConfig = function(config) {\n\tvar extendedConfig = $.extend(true, {}, root.defaults, config);\n\n\t// I know, codemirror deals with default options as well.\n\t//However, it does not do this recursively (i.e. the persistency option)\n\n\n\treturn extendedConfig;\n};\n/**\n * Add extra functions to the CM document (i.e. the codemirror instantiated\n * object)\n *\n * @private\n */\nvar extendCmInstance = function(yasqe) {\n\t//instantiate autocompleters\n\tyasqe.autocompleters = require('./autocompleters/autocompleterBase.js')(root, yasqe);\n\tif (yasqe.options.autocompleters) {\n\t\tyasqe.options.autocompleters.forEach(function(name) {\n\t\t\tif (root.Autocompleters[name]) yasqe.autocompleters.init(name, root.Autocompleters[name]);\n\t\t})\n\t}\n\tyasqe.lastQueryDuration = null;\n\tyasqe.getCompleteToken = function(token, cur) {\n\t\treturn require('./tokenUtils.js').getCompleteToken(yasqe, token, cur);\n\t};\n\tyasqe.getPreviousNonWsToken = function(line, token) {\n\t\treturn require('./tokenUtils.js').getPreviousNonWsToken(yasqe, line, token);\n\t};\n\tyasqe.getNextNonWsToken = function(lineNumber, charNumber) {\n\t\treturn require('./tokenUtils.js').getNextNonWsToken(yasqe, lineNumber, charNumber);\n\t};\n\tyasqe.collapsePrefixes = function(collapse) {\n\t\tyasqe.foldCode(require('./prefixFold.js').findFirstPrefixLine(yasqe), YASQE.fold.prefix, (collapse ? \"fold\" : \"unfold\"));\n\t};\n\tvar backdrop = null;\n\tvar animateSpeed = null;\n\tyasqe.setBackdrop = function(show) {\n\n\n\t\tif (yasqe.options.backdrop || yasqe.options.backdrop === 0 || yasqe.options.backdrop === '0') {\n\t\t\tif (animateSpeed === null) {\n\t\t\t\tanimateSpeed = +yasqe.options.backdrop;\n\t\t\t\tif (animateSpeed === 1) {\n\t\t\t\t\t//ah, yasqe.options.backdrop was 'true'. Set this to default animate speed 400\n\t\t\t\t\tanimateSpeed = 400;\n\t\t\t\t}\n\t\t\t}\n\n\n\t\t\tif (!backdrop) {\n\t\t\t\tbackdrop = $('
', {\n\t\t\t\t\t\tclass: 'backdrop'\n\t\t\t\t\t})\n\t\t\t\t\t.click(function() {\n\t\t\t\t\t\t$(this).hide();\n\t\t\t\t\t})\n\t\t\t\t\t.insertAfter($(yasqe.getWrapperElement()));\n\t\t\t}\n\t\t\tif (show) {\n\t\t\t\tbackdrop.show(animateSpeed);\n\t\t\t} else {\n\t\t\t\tbackdrop.hide(animateSpeed);\n\t\t\t}\n\t\t}\n\t};\n\t/**\n\t * Execute query. Pass a callback function, or a configuration object (see\n\t * default settings below for possible values) I.e., you can change the\n\t * query configuration by either changing the default settings, changing the\n\t * settings of this document, or by passing query settings to this function\n\t *\n\t * @method doc.query\n\t * @param function|object\n\t */\n\tyasqe.query = function(callbackOrConfig) {\n\t\troot.executeQuery(yasqe, callbackOrConfig);\n\t};\n\n\tyasqe.getUrlArguments = function(config) {\n\t\treturn root.getUrlArguments(yasqe, config);\n\t};\n\n\t/**\n\t * Fetch defined prefixes from query string\n\t *\n\t * @method doc.getPrefixesFromQuery\n\t * @return object\n\t */\n\tyasqe.getPrefixesFromQuery = function() {\n\t\treturn require('./prefixUtils.js').getPrefixesFromQuery(yasqe);\n\t};\n\n\tyasqe.addPrefixes = function(prefixes) {\n\t\treturn require('./prefixUtils.js').addPrefixes(yasqe, prefixes);\n\t};\n\tyasqe.removePrefixes = function(prefixes) {\n\t\treturn require('./prefixUtils.js').removePrefixes(yasqe, prefixes);\n\t};\n\n\tyasqe.getValueWithoutComments = function() {\n\t\tvar cleanedQuery = \"\";\n\t\troot.runMode(yasqe.getValue(), \"sparql11\", function(stringVal, className) {\n\t\t\tif (className != \"comment\") {\n\t\t\t\tcleanedQuery += stringVal;\n\t\t\t}\n\t\t});\n\t\treturn cleanedQuery;\n\t};\n\t/**\n\t * Fetch the query type (e.g., SELECT||DESCRIBE||INSERT||DELETE||ASK||CONSTRUCT)\n\t *\n\t * @method doc.getQueryType\n\t * @return string\n\t *\n\t */\n\tyasqe.getQueryType = function() {\n\t\treturn yasqe.queryType;\n\t};\n\t/**\n\t * Fetch the query mode: 'query' or 'update'\n\t *\n\t * @method doc.getQueryMode\n\t * @return string\n\t *\n\t */\n\tyasqe.getQueryMode = function() {\n\t\tvar type = yasqe.getQueryType();\n\t\tif (type == \"INSERT\" || type == \"DELETE\" || type == \"LOAD\" || type == \"CLEAR\" || type == \"CREATE\" || type == \"DROP\" || type == \"COPY\" || type == \"MOVE\" || type == \"ADD\") {\n\t\t\treturn \"update\";\n\t\t} else {\n\t\t\treturn \"query\";\n\t\t}\n\n\t};\n\n\tyasqe.setCheckSyntaxErrors = function(isEnabled) {\n\t\tyasqe.options.syntaxErrorCheck = isEnabled;\n\t\tcheckSyntax(yasqe);\n\t};\n\n\tyasqe.enableCompleter = function(name) {\n\t\taddCompleterToSettings(yasqe.options, name);\n\t\tif (root.Autocompleters[name]) yasqe.autocompleters.init(name, root.Autocompleters[name]);\n\t};\n\tyasqe.disableCompleter = function(name) {\n\t\tremoveCompleterFromSettings(yasqe.options, name);\n\t};\n\treturn yasqe;\n};\n\nvar addCompleterToSettings = function(settings, name) {\n\tif (!settings.autocompleters) settings.autocompleters = [];\n\tsettings.autocompleters.push(name);\n};\nvar removeCompleterFromSettings = function(settings, name) {\n\tif (typeof settings.autocompleters == \"object\") {\n\t\tvar index = $.inArray(name, settings.autocompleters);\n\t\tif (index >= 0) {\n\t\t\tsettings.autocompleters.splice(index, 1);\n\t\t\tremoveCompleterFromSettings(settings, name); //just in case. suppose 1 completer is listed twice\n\t\t}\n\t}\n};\nvar postProcessCmElement = function(yasqe) {\n\t/**\n\t * Set doc value\n\t */\n\tvar storageId = utils.getPersistencyId(yasqe, yasqe.options.persistent);\n\tif (storageId) {\n\t\tvar valueFromStorage = yutils.storage.get(storageId);\n\t\tif (valueFromStorage)\n\t\t\tyasqe.setValue(valueFromStorage);\n\t}\n\n\troot.drawButtons(yasqe);\n\n\t/**\n\t * Add event handlers\n\t */\n\tyasqe.on('blur', function(yasqe, eventInfo) {\n\t\troot.storeQuery(yasqe);\n\t});\n\tyasqe.on('change', function(yasqe, eventInfo) {\n\t\tcheckSyntax(yasqe);\n\t\troot.updateQueryButton(yasqe);\n\t\troot.positionButtons(yasqe);\n\t});\n\tyasqe.on('changes', function() {\n\t\t//e.g. on paste\n\t\tcheckSyntax(yasqe);\n\t\troot.updateQueryButton(yasqe);\n\t\troot.positionButtons(yasqe);\n\t});\n\n\tyasqe.on('cursorActivity', function(yasqe, eventInfo) {\n\t\tupdateButtonsTransparency(yasqe);\n\t});\n\tyasqe.prevQueryValid = false;\n\tcheckSyntax(yasqe); // on first load, check as well (our stored or default query might be incorrect)\n\troot.positionButtons(yasqe);\n\n\t$(yasqe.getWrapperElement()).on('mouseenter', '.cm-atom', function() {\n\t\tvar matchText = $(this).text();\n\t\t$(yasqe.getWrapperElement()).find('.cm-atom').filter(function() {\n\t\t\treturn $(this).text() === matchText;\n\t\t}).addClass('matchingVar');\n\t}).on('mouseleave', '.cm-atom', function() {\n\t\t$(yasqe.getWrapperElement()).find('.matchingVar').removeClass('matchingVar');\n\t});\n\t/**\n\t * check url args and modify yasqe settings if needed\n\t */\n\tif (yasqe.options.consumeShareLink) {\n\t\tyasqe.options.consumeShareLink(yasqe, getUrlParams());\n\t\t//and: add a hash listener!\n\t\twindow.addEventListener(\"hashchange\", function() {\n\t\t\tyasqe.options.consumeShareLink(yasqe, getUrlParams());\n\t\t});\n\t}\n\tif (yasqe.options.collapsePrefixesOnLoad) yasqe.collapsePrefixes(true);\n};\n\n/**\n * get url params. first try fetching using hash. If it fails, try the regular query parameters (for backwards compatability)\n */\nvar getUrlParams = function() {\n\t//first try hash\n\tvar urlParams = null;\n\tif (window.location.hash.length > 1) {\n\t\t//firefox does some decoding if we're using window.location.hash (e.g. the + sign in contentType settings)\n\t\t//Don't want this. So simply get the hash string ourselves\n\t\turlParams = $.deparam(location.href.split(\"#\")[1])\n\t}\n\tif ((!urlParams || !('query' in urlParams)) && window.location.search.length > 1) {\n\t\t//ok, then just try regular url params\n\t\turlParams = $.deparam(window.location.search.substring(1));\n\t}\n\treturn urlParams;\n};\n\n\n\n/**\n * Update transparency of buttons. Increase transparency when cursor is below buttons\n */\n\nvar updateButtonsTransparency = function(yasqe) {\n\tyasqe.cursor = $(\".CodeMirror-cursor\");\n\tif (yasqe.buttons && yasqe.buttons.is(\":visible\") && yasqe.cursor.length > 0) {\n\t\tif (utils.elementsOverlap(yasqe.cursor, yasqe.buttons)) {\n\t\t\tyasqe.buttons.find(\"svg\").attr(\"opacity\", \"0.2\");\n\t\t} else {\n\t\t\tyasqe.buttons.find(\"svg\").attr(\"opacity\", \"1.0\");\n\t\t}\n\t}\n};\n\n\n\n\n\n\n\n\n\nvar clearError = null;\nvar checkSyntax = function(yasqe, deepcheck) {\n\n\tyasqe.queryValid = true;\n\n\tyasqe.clearGutter(\"gutterErrorBar\");\n\n\tvar state = null;\n\tfor (var l = 0; l < yasqe.lineCount(); ++l) {\n\t\tvar precise = false;\n\t\tif (!yasqe.prevQueryValid) {\n\t\t\t// we don't want cached information in this case, otherwise the\n\t\t\t// previous error sign might still show up,\n\t\t\t// even though the syntax error might be gone already\n\t\t\tprecise = true;\n\t\t}\n\n\t\tvar token = yasqe.getTokenAt({\n\t\t\tline: l,\n\t\t\tch: yasqe.getLine(l).length\n\t\t}, precise);\n\t\tvar state = token.state;\n\t\tyasqe.queryType = state.queryType;\n\t\tif (state.OK == false) {\n\t\t\tif (!yasqe.options.syntaxErrorCheck) {\n\t\t\t\t//the library we use already marks everything as being an error. Overwrite this class attribute.\n\t\t\t\t$(yasqe.getWrapperElement).find(\".sp-error\").css(\"color\", \"black\");\n\t\t\t\t//we don't want to gutter error, so return\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tvar warningEl = yutils.svg.getElement(imgs.warning);\n\t\t\tif (state.possibleCurrent && state.possibleCurrent.length > 0) {\n\t\t\t\t//\t\t\t\twarningEl.style.zIndex = \"99999999\";\n\t\t\t\trequire('./tooltip')(yasqe, warningEl, function() {\n\t\t\t\t\tvar expectedEncoded = [];\n\t\t\t\t\tstate.possibleCurrent.forEach(function(expected) {\n\t\t\t\t\t\texpectedEncoded.push(\"\" + $(\"
\").text(expected).html() + \"\");\n\t\t\t\t\t});\n\t\t\t\t\treturn \"This line is invalid. Expected: \" + expectedEncoded.join(\", \");\n\t\t\t\t});\n\t\t\t}\n\t\t\twarningEl.style.marginTop = \"2px\";\n\t\t\twarningEl.style.marginLeft = \"2px\";\n\t\t\twarningEl.className = 'parseErrorIcon';\n\t\t\tyasqe.setGutterMarker(l, \"gutterErrorBar\", warningEl);\n\n\t\t\tyasqe.queryValid = false;\n\t\t\tbreak;\n\t\t}\n\t}\n\tyasqe.prevQueryValid = yasqe.queryValid;\n\tif (deepcheck) {\n\t\tif (state != null && state.stack != undefined) {\n\t\t\tvar stack = state.stack,\n\t\t\t\tlen = state.stack.length;\n\t\t\t// Because incremental parser doesn't receive end-of-input\n\t\t\t// it can't clear stack, so we have to check that whatever\n\t\t\t// is left on the stack is nillable\n\t\t\tif (len > 1)\n\t\t\t\tyasqe.queryValid = false;\n\t\t\telse if (len == 1) {\n\t\t\t\tif (stack[0] != \"solutionModifier\" && stack[0] != \"?limitOffsetClauses\" && stack[0] != \"?offsetClause\")\n\t\t\t\t\tyasqe.queryValid = false;\n\t\t\t}\n\t\t}\n\t}\n};\n/**\n * Static Utils\n */\n// first take all CodeMirror references and store them in the YASQE object\n$.extend(root, CodeMirror);\n\n\n//add registrar for autocompleters\nroot.Autocompleters = {};\nroot.registerAutocompleter = function(name, constructor) {\n\troot.Autocompleters[name] = constructor;\n\taddCompleterToSettings(root.defaults, name);\n}\n\nroot.autoComplete = function(yasqe) {\n\t//this function gets called when pressing the keyboard shortcut. I.e., autoShow = false\n\tyasqe.autocompleters.autoComplete(false);\n};\n//include the autocompleters we provide out-of-the-box\nroot.registerAutocompleter(\"prefixes\", require(\"./autocompleters/prefixes.js\"));\nroot.registerAutocompleter(\"properties\", require(\"./autocompleters/properties.js\"));\nroot.registerAutocompleter(\"classes\", require(\"./autocompleters/classes.js\"));\nroot.registerAutocompleter(\"variables\", require(\"./autocompleters/variables.js\"));\n\n\nroot.positionButtons = function(yasqe) {\n\tvar scrollBar = $(yasqe.getWrapperElement()).find(\".CodeMirror-vscrollbar\");\n\tvar offset = 0;\n\tif (scrollBar.is(\":visible\")) {\n\t\toffset = scrollBar.outerWidth();\n\t}\n\tif (yasqe.buttons.is(\":visible\")) yasqe.buttons.css(\"right\", offset + 4);\n};\n\n/**\n * Create a share link\n *\n * @method YASQE.createShareLink\n * @param {doc} YASQE document\n * @default {query: doc.getValue()}\n * @return object\n */\nroot.createShareLink = function(yasqe) {\n\t//extend existing link, so first fetch current arguments\n\tvar urlParams = {};\n\tif (window.location.hash.length > 1) urlParams = $.deparam(window.location.hash.substring(1));\n\turlParams['query'] = yasqe.getValue();\n\treturn urlParams;\n};\nroot.getAsCurl = function(yasqe, ajaxConfig) {\n\tvar curl = require('./curl.js');\n\treturn curl.createCurlString(yasqe, ajaxConfig);\n};\n/**\n * Consume the share link, by parsing the document URL for possible yasqe arguments, and setting the appropriate values in the YASQE doc\n *\n * @method YASQE.consumeShareLink\n * @param {doc} YASQE document\n */\nroot.consumeShareLink = function(yasqe, urlParams) {\n\tif (urlParams && urlParams.query) {\n\t\tyasqe.setValue(urlParams.query);\n\t}\n};\nroot.drawButtons = function(yasqe) {\n\tyasqe.buttons = $(\"
\").appendTo($(yasqe.getWrapperElement()));\n\n\t/**\n\t * draw share link button\n\t */\n\tif (yasqe.options.createShareLink) {\n\n\t\tvar svgShare = $(yutils.svg.getElement(imgs.share));\n\t\tsvgShare.click(function(event) {\n\t\t\t\tevent.stopPropagation();\n\t\t\t\tvar popup = $(\"
\").appendTo(yasqe.buttons);\n\t\t\t\t$('html').click(function() {\n\t\t\t\t\tif (popup) popup.remove();\n\t\t\t\t});\n\n\t\t\t\tpopup.click(function(event) {\n\t\t\t\t\tevent.stopPropagation();\n\t\t\t\t});\n\t\t\t\tvar $input = $(\"\").val(location.protocol + '//' + location.host + location.pathname + location.search + \"#\" + $.param(yasqe.options.createShareLink(yasqe)));\n\n\t\t\t\t$input.focus(function() {\n\t\t\t\t\tvar $this = $(this);\n\t\t\t\t\t$this.select();\n\n\t\t\t\t\t// Work around Chrome's little problem\n\t\t\t\t\t$this.mouseup(function() {\n\t\t\t\t\t\t// Prevent further mouseup intervention\n\t\t\t\t\t\t$this.unbind(\"mouseup\");\n\t\t\t\t\t\treturn false;\n\t\t\t\t\t});\n\t\t\t\t});\n\n\t\t\t\tpopup.empty().append($('
', {class:'inputWrapper'}).append($input));\n\t\t\t\tif (yasqe.options.createShortLink) {\n\t\t\t\t\tpopup.addClass('enableShort');\n\t\t\t\t\t$('')\n\t\t\t\t\t\t.addClass('yasqe_btn yasqe_btn-sm yasqe_btn-primary')\n\t\t\t\t\t\t.click(function() {\n\t\t\t\t\t\t\t$(this).parent().find('button').attr('disabled', 'disabled');\n\t\t\t\t\t\t\tyasqe.options.createShortLink($input.val(), function(errString, shortLink) {\n\t\t\t\t\t\t\t\tif (errString) {\n\t\t\t\t\t\t\t\t\t$input.remove();\n\t\t\t\t\t\t\t\t\tpopup.find('.inputWrapper').append($('', {class:\"shortlinkErr\"}).text(errString));\n\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\t$input.val(shortLink).focus();\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t})\n\t\t\t\t\t\t}).appendTo(popup);\n\t\t\t\t}\n\t\t\t\t$('')\n\t\t\t\t\t.addClass('yasqe_btn yasqe_btn-sm yasqe_btn-primary')\n\t\t\t\t\t.click(function() {\n\n\t\t\t\t\t\t$(this).parent().find('button').attr('disabled', 'disabled');\n\t\t\t\t\t\t$input.val(root.getAsCurl(yasqe)).focus();\n\t\t\t\t\t}).appendTo(popup);\n\t\t\t\tvar positions = svgShare.position();\n\t\t\t\tpopup.css(\"top\", (positions.top + svgShare.outerHeight() + parseInt(popup.css('padding-top')) ) + \"px\").css(\"left\", ((positions.left + svgShare.outerWidth()) - popup.outerWidth()) + \"px\");\n\t\t\t\t$input.focus();\n\t\t\t})\n\t\t\t.addClass(\"yasqe_share\")\n\t\t\t.attr(\"title\", \"Share your query\")\n\t\t\t.appendTo(yasqe.buttons);\n\n\t}\n\n\n\t/**\n\t * draw fullscreen button\n\t */\n\n\tvar toggleFullscreen = $('
', {\n\t\t\tclass: 'fullscreenToggleBtns'\n\t\t})\n\t\t.append($(yutils.svg.getElement(imgs.fullscreen))\n\t\t\t.addClass(\"yasqe_fullscreenBtn\")\n\t\t\t.attr(\"title\", \"Set editor full screen\")\n\t\t\t.click(function() {\n\t\t\t\tyasqe.setOption(\"fullScreen\", true);\n\t\t\t}))\n\t\t.append($(yutils.svg.getElement(imgs.smallscreen))\n\t\t\t.addClass(\"yasqe_smallscreenBtn\")\n\t\t\t.attr(\"title\", \"Set editor to normale size\")\n\t\t\t.click(function() {\n\t\t\t\tyasqe.setOption(\"fullScreen\", false);\n\t\t\t}))\n\tyasqe.buttons.append(toggleFullscreen);\n\n\n\tif (yasqe.options.sparql.showQueryButton) {\n\t\t$(\"
\", {\n\t\t\t\tclass: 'yasqe_queryButton'\n\t\t\t})\n\t\t\t.click(function() {\n\t\t\t\tif ($(this).hasClass(\"query_busy\")) {\n\t\t\t\t\tif (yasqe.xhr) yasqe.xhr.abort();\n\t\t\t\t\troot.updateQueryButton(yasqe);\n\t\t\t\t} else {\n\t\t\t\t\tyasqe.query();\n\t\t\t\t}\n\t\t\t})\n\t\t\t.appendTo(yasqe.buttons);\n\t\troot.updateQueryButton(yasqe);\n\t}\n\n};\n\n\nvar queryButtonIds = {\n\t\"busy\": \"loader\",\n\t\"valid\": \"query\",\n\t\"error\": \"queryInvalid\"\n};\n\n/**\n * Update the query button depending on current query status. If no query status is passed via the parameter, it auto-detects the current query status\n *\n * @param {doc} YASQE document\n * @param status {string|null, \"busy\"|\"valid\"|\"error\"}\n */\nroot.updateQueryButton = function(yasqe, status) {\n\tvar queryButton = $(yasqe.getWrapperElement()).find(\".yasqe_queryButton\");\n\tif (queryButton.length == 0) return; //no query button drawn\n\n\t//detect status\n\tif (!status) {\n\t\tstatus = \"valid\";\n\t\tif (yasqe.queryValid === false) status = \"error\";\n\t}\n\n\tif (status != yasqe.queryStatus) {\n\t\tqueryButton\n\t\t\t.empty()\n\t\t\t.removeClass(function(index, classNames) {\n\t\t\t\treturn classNames.split(\" \").filter(function(c) {\n\t\t\t\t\t//remove classname from previous status\n\t\t\t\t\treturn c.indexOf(\"query_\") == 0;\n\t\t\t\t}).join(\" \");\n\t\t\t});\n\n\t\tif (status == \"busy\") {\n\t\t\tqueryButton.append($('
', {\n\t\t\t\tclass: 'loader',\n\t\t\t}));\n\t\t\tyasqe.queryStatus = status;\n\t\t} else if (status == \"valid\" || status == \"error\") {\n\t\t\tqueryButton.addClass(\"query_\" + status);\n\t\t\tyutils.svg.draw(queryButton, imgs[queryButtonIds[status]]);\n\t\t\tyasqe.queryStatus = status;\n\t\t}\n\t}\n};\n/**\n * Initialize YASQE from an existing text area (see http://codemirror.net/doc/manual.html#fromTextArea for more info)\n *\n * @method YASQE.fromTextArea\n * @param textArea {DOM element}\n * @param config {object}\n * @returns {doc} YASQE document\n */\nroot.fromTextArea = function(textAreaEl, config) {\n\tconfig = extendConfig(config);\n\t//add yasqe div as parent (needed for styles to be manageable and scoped).\n\t//In this case, I -also- put it as parent el of the text area. This is wrapped in a div now\n\tvar rootEl = $(\"
\", {\n\t\tclass: 'yasqe'\n\t}).insertBefore($(textAreaEl)).append($(textAreaEl));\n\tvar yasqe = extendCmInstance(CodeMirror.fromTextArea(textAreaEl, config));\n\tpostProcessCmElement(yasqe);\n\treturn yasqe;\n};\n\n\nroot.storeQuery = function(yasqe) {\n\tvar storageId = utils.getPersistencyId(yasqe, yasqe.options.persistent);\n\tif (storageId) {\n\t\tyutils.storage.set(storageId, yasqe.getValue(), \"month\");\n\t}\n};\nroot.commentLines = function(yasqe) {\n\tvar startLine = yasqe.getCursor(true).line;\n\tvar endLine = yasqe.getCursor(false).line;\n\tvar min = Math.min(startLine, endLine);\n\tvar max = Math.max(startLine, endLine);\n\n\t// if all lines start with #, remove this char. Otherwise add this char\n\tvar linesAreCommented = true;\n\tfor (var i = min; i <= max; i++) {\n\t\tvar line = yasqe.getLine(i);\n\t\tif (line.length == 0 || line.substring(0, 1) != \"#\") {\n\t\t\tlinesAreCommented = false;\n\t\t\tbreak;\n\t\t}\n\t}\n\tfor (var i = min; i <= max; i++) {\n\t\tif (linesAreCommented) {\n\t\t\t// lines are commented, so remove comments\n\t\t\tyasqe.replaceRange(\"\", {\n\t\t\t\tline: i,\n\t\t\t\tch: 0\n\t\t\t}, {\n\t\t\t\tline: i,\n\t\t\t\tch: 1\n\t\t\t});\n\t\t} else {\n\t\t\t// Not all lines are commented, so add comments\n\t\t\tyasqe.replaceRange(\"#\", {\n\t\t\t\tline: i,\n\t\t\t\tch: 0\n\t\t\t});\n\t\t}\n\n\t}\n};\n\nroot.copyLineUp = function(yasqe) {\n\tvar cursor = yasqe.getCursor();\n\tvar lineCount = yasqe.lineCount();\n\t// First create new empty line at end of text\n\tyasqe.replaceRange(\"\\n\", {\n\t\tline: lineCount - 1,\n\t\tch: yasqe.getLine(lineCount - 1).length\n\t});\n\t// Copy all lines to their next line\n\tfor (var i = lineCount; i > cursor.line; i--) {\n\t\tvar line = yasqe.getLine(i - 1);\n\t\tyasqe.replaceRange(line, {\n\t\t\tline: i,\n\t\t\tch: 0\n\t\t}, {\n\t\t\tline: i,\n\t\t\tch: yasqe.getLine(i).length\n\t\t});\n\t}\n};\nroot.copyLineDown = function(yasqe) {\n\troot.copyLineUp(yasqe);\n\t// Make sure cursor goes one down (we are copying downwards)\n\tvar cursor = yasqe.getCursor();\n\tcursor.line++;\n\tyasqe.setCursor(cursor);\n};\nroot.doAutoFormat = function(yasqe) {\n\tif (yasqe.somethingSelected()) {\n\t\tvar to = {\n\t\t\tline: yasqe.getCursor(false).line,\n\t\t\tch: yasqe.getSelection().length\n\t\t};\n\t\tautoFormatRange(yasqe, yasqe.getCursor(true), to);\n\t} else {\n\t\tvar totalLines = yasqe.lineCount();\n\t\tvar totalChars = yasqe.getTextArea().value.length;\n\t\tautoFormatRange(yasqe, {\n\t\t\tline: 0,\n\t\t\tch: 0\n\t\t}, {\n\t\t\tline: totalLines,\n\t\t\tch: totalChars\n\t\t});\n\t}\n\n};\n\n\nvar autoFormatRange = function(yasqe, from, to) {\n\tvar absStart = yasqe.indexFromPos(from);\n\tvar absEnd = yasqe.indexFromPos(to);\n\t// Insert additional line breaks where necessary according to the\n\t// mode's syntax\n\tvar res = autoFormatLineBreaks(yasqe.getValue(), absStart, absEnd);\n\n\t// Replace and auto-indent the range\n\tyasqe.operation(function() {\n\t\tyasqe.replaceRange(res, from, to);\n\t\tvar startLine = yasqe.posFromIndex(absStart).line;\n\t\tvar endLine = yasqe.posFromIndex(absStart + res.length).line;\n\t\tfor (var i = startLine; i <= endLine; i++) {\n\t\t\tyasqe.indentLine(i, \"smart\");\n\t\t}\n\t});\n};\n\nvar autoFormatLineBreaks = function(text, start, end) {\n\ttext = text.substring(start, end);\n\tvar breakAfterArray = [\n\t\t[\"keyword\", \"ws\", \"prefixed\", \"ws\", \"uri\"], // i.e. prefix declaration\n\t\t[\"keyword\", \"ws\", \"uri\"] // i.e. base\n\t];\n\tvar breakAfterCharacters = [\"{\", \".\", \";\"];\n\tvar breakBeforeCharacters = [\"}\"];\n\tvar getBreakType = function(stringVal, type) {\n\t\tfor (var i = 0; i < breakAfterArray.length; i++) {\n\t\t\tif (stackTrace.valueOf().toString() == breakAfterArray[i].valueOf()\n\t\t\t\t.toString()) {\n\t\t\t\treturn 1;\n\t\t\t}\n\t\t}\n\t\tfor (var i = 0; i < breakAfterCharacters.length; i++) {\n\t\t\tif (stringVal == breakAfterCharacters[i]) {\n\t\t\t\treturn 1;\n\t\t\t}\n\t\t}\n\t\tfor (var i = 0; i < breakBeforeCharacters.length; i++) {\n\t\t\t// don't want to issue 'breakbefore' AND 'breakafter', so check\n\t\t\t// current line\n\t\t\tif ($.trim(currentLine) != '' && stringVal == breakBeforeCharacters[i]) {\n\t\t\t\treturn -1;\n\t\t\t}\n\t\t}\n\t\treturn 0;\n\t};\n\tvar formattedQuery = \"\";\n\tvar currentLine = \"\";\n\tvar stackTrace = [];\n\tCodeMirror.runMode(text, \"sparql11\", function(stringVal, type) {\n\t\tstackTrace.push(type);\n\t\tvar breakType = getBreakType(stringVal, type);\n\t\tif (breakType != 0) {\n\t\t\tif (breakType == 1) {\n\t\t\t\tformattedQuery += stringVal + \"\\n\";\n\t\t\t\tcurrentLine = \"\";\n\t\t\t} else { // (-1)\n\t\t\t\tformattedQuery += \"\\n\" + stringVal;\n\t\t\t\tcurrentLine = stringVal;\n\t\t\t}\n\t\t\tstackTrace = [];\n\t\t} else {\n\t\t\tcurrentLine += stringVal;\n\t\t\tformattedQuery += stringVal;\n\t\t}\n\t\tif (stackTrace.length == 1 && stackTrace[0] == \"sp-ws\")\n\t\t\tstackTrace = [];\n\t});\n\treturn $.trim(formattedQuery.replace(/\\n\\s*\\n/g, '\\n'));\n};\n\nrequire('./sparql.js'),\n\trequire('./defaults.js');\nroot.$ = $;\nroot.version = {\n\t\"CodeMirror\": CodeMirror.version,\n\t\"YASQE\": require(\"../package.json\").version,\n\t\"jquery\": $.fn.jquery,\n\t\"yasgui-utils\": yutils.version\n};\n", "var CodeMirror = (function(){try{return require('codemirror')}catch(e){return window.CodeMirror}})(),\n\ttokenUtils = require('./tokenUtils.js');\n\n\"use strict\";\nvar lookFor = \"PREFIX\";\nmodule.exports = {\n\tfindFirstPrefixLine: function(cm) {\n\t\tvar lastLine = cm.lastLine();\n\t\tfor (var i = 0; i <= lastLine; ++i) {\n\t\t\tif (findFirstPrefix(cm, i) >= 0) {\n\t\t\t\treturn i;\n\t\t\t}\n\t\t}\n\t}\n}\n\nfunction findFirstPrefix(cm, line, ch, lineText) {\n\tif (!ch) ch = 0;\n\tif (!lineText) lineText = cm.getLine(line);\n\tlineText = lineText.toUpperCase();\n\tfor (var at = ch, pass = 0;;) {\n\t\tvar found = lineText.indexOf(lookFor, at);\n\t\tif (found == -1) {\n\t\t\tif (pass == 1)\n\t\t\t\tbreak;\n\t\t\tpass = 1;\n\t\t\tat = lineText.length;\n\t\t\tcontinue;\n\t\t}\n\t\tif (pass == 1 && found < ch)\n\t\t\tbreak;\n\t\ttokenType = cm.getTokenTypeAt(CodeMirror.Pos(line, found + 1));\n\t\tif (!/^(comment|string)/.test(tokenType))\n\t\t\treturn found + 1;\n\t\tat = found - 1;\n\t}\n}\n\nCodeMirror.registerHelper(\"fold\", \"prefix\", function(cm, start) {\n\tvar line = start.line,\n\t\tlineText = cm.getLine(line);\n\n\tvar startCh, tokenType;\n\n\tfunction hasPreviousPrefix() {\n\t\tvar hasPreviousPrefix = false;\n\t\tfor (var i = line - 1; i >= 0; i--) {\n\t\t\tif (cm.getLine(i).toUpperCase().indexOf(lookFor) >= 0) {\n\t\t\t\thasPreviousPrefix = true;\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\t\treturn hasPreviousPrefix;\n\t}\n\n\n\tfunction findOpening(openCh) {\n\t\tfor (var at = start.ch, pass = 0;;) {\n\t\t\tvar found = at <= 0 ? -1 : lineText.lastIndexOf(openCh, at - 1);\n\t\t\tif (found == -1) {\n\t\t\t\tif (pass == 1)\n\t\t\t\t\tbreak;\n\t\t\t\tpass = 1;\n\t\t\t\tat = lineText.length;\n\t\t\t\tcontinue;\n\t\t\t}\n\t\t\tif (pass == 1 && found < start.ch)\n\t\t\t\tbreak;\n\t\t\ttokenType = cm.getTokenTypeAt(CodeMirror.Pos(line, found + 1));\n\t\t\tif (!/^(comment|string)/.test(tokenType))\n\t\t\t\treturn found + 1;\n\t\t\tat = found - 1;\n\t\t}\n\t}\n\tvar getLastPrefixPos = function(line, ch) {\n\t\tvar prefixKeywordToken = cm.getTokenAt(CodeMirror.Pos(line, ch + 1));\n\t\tif (!prefixKeywordToken || prefixKeywordToken.type != \"keyword\") return -1;\n\t\tvar prefixShortname = tokenUtils.getNextNonWsToken(cm, line, prefixKeywordToken.end + 1);\n\t\tif (!prefixShortname || prefixShortname.type != \"string-2\") return -1; //missing prefix keyword shortname\n\t\tvar prefixUri = tokenUtils.getNextNonWsToken(cm, line, prefixShortname.end + 1);\n\t\tif (!prefixUri || prefixUri.type != \"variable-3\") return -1; //missing prefix uri\n\t\treturn prefixUri.end;\n\t}\n\n\t//only use opening prefix declaration\n\tif (hasPreviousPrefix())\n\t\treturn;\n\tvar prefixStart = findFirstPrefix(cm, line, start.ch, lineText);\n\n\tif (prefixStart == null)\n\t\treturn;\n\tvar stopAt = '{'; //if this char is there, we won't have a chance of finding more prefixes\n\tvar stopAtNextLine = false;\n\tvar count = 1,\n\t\tlastLine = cm.lastLine(),\n\t\tend, endCh;\n\tvar prefixEndChar = getLastPrefixPos(line, prefixStart);\n\tvar prefixEndLine = line;\n\n\touter: for (var i = line; i <= lastLine; ++i) {\n\t\tif (stopAtNextLine)\n\t\t\tbreak;\n\t\tvar text = cm.getLine(i),\n\t\t\tpos = i == line ? prefixStart + 1 : 0;\n\n\t\tfor (;;) {\n\t\t\tif (!stopAtNextLine && text.indexOf(stopAt) >= 0)\n\t\t\t\tstopAtNextLine = true;\n\n\t\t\tvar nextPrefixDeclaration = text.toUpperCase()\n\t\t\t\t.indexOf(lookFor, pos);\n\n\t\t\tif (nextPrefixDeclaration >= 0) {\n\t\t\t\tif ((endCh = getLastPrefixPos(i, nextPrefixDeclaration)) > 0) {\n\t\t\t\t\tprefixEndChar = endCh;\n\t\t\t\t\tprefixEndLine = i;\n\t\t\t\t\tpos = prefixEndChar;\n\t\t\t\t}\n\t\t\t\tpos++;\n\t\t\t} else {\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\t}\n\treturn {\n\t\tfrom: CodeMirror.Pos(line, prefixStart + lookFor.length),\n\t\tto: CodeMirror.Pos(prefixEndLine, prefixEndChar)\n\t};\n});", "'use strict';\n/**\n * Append prefix declaration to list of prefixes in query window.\n * \n * @param yasqe\n * @param prefix\n */\nvar addPrefixes = function(yasqe, prefixes) {\n\tvar existingPrefixes = yasqe.getPrefixesFromQuery();\n\t//for backwards compatability, we stil support prefixes value as string (e.g. 'rdf: '\n\tif (typeof prefixes == \"string\") {\n\t\taddPrefixAsString(yasqe, prefixes);\n\t} else {\n\t\tfor (var pref in prefixes) {\n\t\t\tif (!(pref in existingPrefixes))\n\t\t\t\taddPrefixAsString(yasqe, pref + \": <\" + prefixes[pref] + \">\");\n\t\t}\n\t}\n\tyasqe.collapsePrefixes(false);\n};\n\nvar addPrefixAsString = function(yasqe, prefixString) {\n\tvar lastPrefix = null;\n\tvar lastPrefixLine = 0;\n\tvar numLines = yasqe.lineCount();\n\tfor (var i = 0; i < numLines; i++) {\n\t\tvar firstToken = yasqe.getNextNonWsToken(i);\n\t\tif (firstToken != null && (firstToken.string == \"PREFIX\" || firstToken.string == \"BASE\")) {\n\t\t\tlastPrefix = firstToken;\n\t\t\tlastPrefixLine = i;\n\t\t}\n\t}\n\n\tif (lastPrefix == null) {\n\t\tyasqe.replaceRange(\"PREFIX \" + prefixString + \"\\n\", {\n\t\t\tline: 0,\n\t\t\tch: 0\n\t\t});\n\t} else {\n\t\tvar previousIndent = getIndentFromLine(yasqe, lastPrefixLine);\n\t\tyasqe.replaceRange(\"\\n\" + previousIndent + \"PREFIX \" + prefixString, {\n\t\t\tline: lastPrefixLine\n\t\t});\n\t}\n\tyasqe.collapsePrefixes(false);\n};\nvar removePrefixes = function(yasqe, prefixes) {\n\tvar escapeRegex = function(string) {\n\t\t//taken from http://stackoverflow.com/questions/3561493/is-there-a-regexp-escape-function-in-javascript/3561711#3561711\n\t\treturn string.replace(/[-\\/\\\\^$*+?.()|[\\]{}]/g, '\\\\$&');\n\t}\n\tfor (var pref in prefixes) {\n\t\tyasqe.setValue(yasqe.getValue().replace(new RegExp(\"PREFIX\\\\s*\" + pref + \":\\\\s*\" + escapeRegex(\"<\" + prefixes[pref] + \">\") + \"\\\\s*\", \"ig\"), ''));\n\t}\n\tyasqe.collapsePrefixes(false);\n\n};\n\n/**\n * Get defined prefixes from query as array, in format {\"prefix:\" \"uri\"}\n * \n * @param cm\n * @returns {Array}\n */\nvar getPrefixesFromQuery = function(yasqe) {\n\tvar queryPrefixes = {};\n\tvar shouldContinue = true;\n\tvar getPrefixesFromLine = function(lineOffset, colOffset) {\n\t\tif (!shouldContinue) return;\n\t\tif (!colOffset) colOffset = 1;\n\t\tvar token = yasqe.getNextNonWsToken(i, colOffset);\n\t\tif (token) {\n\t\t\tif (token.state.possibleCurrent.indexOf(\"PREFIX\") == -1 && token.state.possibleNext.indexOf(\"PREFIX\") == -1) shouldContinue = false; //we are beyond the place in the query where we can enter prefixes\n\t\t\tif (token.string.toUpperCase() == \"PREFIX\") {\n\t\t\t\tvar prefix = yasqe.getNextNonWsToken(i, token.end + 1);\n\t\t\t\tif (prefix) {\n\t\t\t\t\tvar uri = yasqe.getNextNonWsToken(i, prefix.end + 1);\n\t\t\t\t\tif (uri) {\n\t\t\t\t\t\tvar uriString = uri.string;\n\t\t\t\t\t\tif (uriString.indexOf(\"<\") == 0)\n\t\t\t\t\t\t\turiString = uriString.substring(1);\n\t\t\t\t\t\tif (uriString.slice(-1) == \">\")\n\t\t\t\t\t\t\turiString = uriString\n\t\t\t\t\t\t\t.substring(0, uriString.length - 1);\n\t\t\t\t\t\tqueryPrefixes[prefix.string.slice(0, -1)] = uriString;\n\n\t\t\t\t\t\tgetPrefixesFromLine(lineOffset, uri.end + 1);\n\t\t\t\t\t} else {\n\t\t\t\t\t\tgetPrefixesFromLine(lineOffset, prefix.end + 1);\n\t\t\t\t\t}\n\n\t\t\t\t} else {\n\t\t\t\t\tgetPrefixesFromLine(lineOffset, token.end + 1);\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tgetPrefixesFromLine(lineOffset, token.end + 1);\n\t\t\t}\n\t\t}\n\t};\n\n\n\tvar numLines = yasqe.lineCount();\n\tfor (var i = 0; i < numLines; i++) {\n\t\tif (!shouldContinue) break;\n\t\tgetPrefixesFromLine(i);\n\n\t}\n\treturn queryPrefixes;\n};\n\n/**\n * Get the used indentation for a certain line\n * \n * @param yasqe\n * @param line\n * @param charNumber\n * @returns\n */\nvar getIndentFromLine = function(yasqe, line, charNumber) {\n\tif (charNumber == undefined)\n\t\tcharNumber = 1;\n\tvar token = yasqe.getTokenAt({\n\t\tline: line,\n\t\tch: charNumber\n\t});\n\tif (token == null || token == undefined || token.type != \"ws\") {\n\t\treturn \"\";\n\t} else {\n\t\treturn token.string + getIndentFromLine(yasqe, line, token.end + 1);\n\t};\n};\n\nmodule.exports = {\n\taddPrefixes: addPrefixes,\n\tgetPrefixesFromQuery: getPrefixesFromQuery,\n\tremovePrefixes: removePrefixes\n};", "'use strict';\nvar $ = (function(){try{return require('jquery')}catch(e){return window.jQuery}})(),\n\tYASQE = require('./main.js');\n\nYASQE.getAjaxConfig = function(yasqe, callbackOrConfig) {\n\tvar callback = (typeof callbackOrConfig == \"function\" ? callbackOrConfig : null);\n\tvar config = (typeof callbackOrConfig == \"object\" ? callbackOrConfig : {});\n\n\tif (yasqe.options.sparql)\n\t\tconfig = $.extend({}, yasqe.options.sparql, config);\n\n\t//for backwards compatability, make sure we copy sparql handlers to sparql callbacks\n\tif (config.handlers)\n\t\t$.extend(true, config.callbacks, config.handlers);\n\n\t\n\tif (!config.endpoint || config.endpoint.length == 0)\n\t\treturn; // nothing to query!\n\n\t/**\n\t * initialize ajax config\n\t */\n\tvar ajaxConfig = {\n\t\turl: (typeof config.endpoint == \"function\" ? config.endpoint(yasqe) : config.endpoint),\n\t\ttype: (typeof config.requestMethod == \"function\" ? config.requestMethod(yasqe) : config.requestMethod),\n\t\theaders: {\n\t\t\tAccept: getAcceptHeader(yasqe, config),\n\t\t}\n\t};\n\tif (config.xhrFields) ajaxConfig.xhrFields = config.xhrFields;\n\t/**\n\t * add complete, beforesend, etc callbacks (if specified)\n\t */\n\tvar handlerDefined = false;\n\tif (config.callbacks) {\n\t\tfor (var handler in config.callbacks) {\n\t\t\tif (config.callbacks[handler]) {\n\t\t\t\thandlerDefined = true;\n\t\t\t\tajaxConfig[handler] = config.callbacks[handler];\n\t\t\t}\n\t\t}\n\t}\n\tajaxConfig.data = yasqe.getUrlArguments(config);\n\tif (!handlerDefined && !callback)\n\t\treturn; // ok, we can query, but have no callbacks. just stop now\n\n\t// if only callback is passed as arg, add that on as 'onComplete' callback\n\tif (callback)\n\t\tajaxConfig.complete = callback;\n\n\n\n\t/**\n\t * merge additional request headers\n\t */\n\tif (config.headers && !$.isEmptyObject(config.headers))\n\t\t$.extend(ajaxConfig.headers, config.headers);\n\n\n\tvar queryStart = new Date();\n\tvar updateYasqe = function() {\n\t\tyasqe.lastQueryDuration = new Date() - queryStart;\n\t\tYASQE.updateQueryButton(yasqe);\n\t\tyasqe.setBackdrop(false);\n\t};\n\t//Make sure the query button is updated again on complete\n\tvar completeCallbacks = [\n\t\tfunction(){require('./main.js').signal(yasqe, 'queryFinish', arguments)},\n\t\tupdateYasqe\n\t];\n\n\tif (ajaxConfig.complete) {\n\t\tcompleteCallbacks.push(ajaxConfig.complete);\n\t}\n\tajaxConfig.complete = completeCallbacks;\n\treturn ajaxConfig;\n};\n\n\n\nYASQE.executeQuery = function(yasqe, callbackOrConfig) {\n\tYASQE.signal(yasqe, 'query', yasqe, callbackOrConfig);\n\tYASQE.updateQueryButton(yasqe, \"busy\");\n\tyasqe.setBackdrop(true);\n\tyasqe.xhr = $.ajax(YASQE.getAjaxConfig(yasqe, callbackOrConfig));\n};\n\n\nYASQE.getUrlArguments = function(yasqe, config) {\n\tvar queryMode = yasqe.getQueryMode();\n\tvar data = [{\n\t\tname: yasqe.getQueryMode(), //either 'update' or 'query'\n\t\tvalue: (config.getQueryForAjax? config.getQueryForAjax(yasqe): yasqe.getValue())\n\t}];\n\n\t/**\n\t * add named graphs to ajax config\n\t */\n\tif (config.namedGraphs && config.namedGraphs.length > 0) {\n\t\tvar argName = (queryMode == \"query\" ? \"named-graph-uri\" : \"using-named-graph-uri \");\n\t\tfor (var i = 0; i < config.namedGraphs.length; i++)\n\t\t\tdata.push({\n\t\t\t\tname: argName,\n\t\t\t\tvalue: config.namedGraphs[i]\n\t\t\t});\n\t}\n\t/**\n\t * add default graphs to ajax config\n\t */\n\tif (config.defaultGraphs && config.defaultGraphs.length > 0) {\n\t\tvar argName = (queryMode == \"query\" ? \"default-graph-uri\" : \"using-graph-uri \");\n\t\tfor (var i = 0; i < config.defaultGraphs.length; i++)\n\t\t\tdata.push({\n\t\t\t\tname: argName,\n\t\t\t\tvalue: config.defaultGraphs[i]\n\t\t\t});\n\t}\n\n\t/**\n\t * add additional request args\n\t */\n\tif (config.args && config.args.length > 0) $.merge(data, config.args);\n\n\treturn data;\n}\nvar getAcceptHeader = function(yasqe, config) {\n\tvar acceptHeader = null;\n\tif (config.acceptHeader && !config.acceptHeaderGraph && !config.acceptHeaderSelect && !config.acceptHeaderUpdate) {\n\t\t//this is the old config. For backwards compatability, keep supporting it\n\t\tif (typeof config.acceptHeader == \"function\") {\n\t\t\tacceptHeader = config.acceptHeader(yasqe);\n\t\t} else {\n\t\t\tacceptHeader = config.acceptHeader;\n\t\t}\n\t} else {\n\t\tif (yasqe.getQueryMode() == \"update\") {\n\t\t\tacceptHeader = (typeof config.acceptHeader == \"function\" ? config.acceptHeaderUpdate(yasqe) : config.acceptHeaderUpdate);\n\t\t} else {\n\t\t\tvar qType = yasqe.getQueryType();\n\t\t\tif (qType == \"DESCRIBE\" || qType == \"CONSTRUCT\") {\n\t\t\t\tacceptHeader = (typeof config.acceptHeaderGraph == \"function\" ? config.acceptHeaderGraph(yasqe) : config.acceptHeaderGraph);\n\t\t\t} else {\n\t\t\t\tacceptHeader = (typeof config.acceptHeaderSelect == \"function\" ? config.acceptHeaderSelect(yasqe) : config.acceptHeaderSelect);\n\t\t\t}\n\t\t}\n\t}\n\treturn acceptHeader;\n};\n\nmodule.exports = {\n\tgetAjaxConfig: YASQE.getAjaxConfig\n}\n", "'use strict';\n/**\n * When typing a query, this query is sometimes syntactically invalid, causing\n * the current tokens to be incorrect This causes problem for autocompletion.\n * http://bla might result in two tokens: http:// and bla. We'll want to combine\n * these\n * \n * @param yasqe {doc}\n * @param token {object}\n * @param cursor {object}\n * @return token {object}\n * @method YASQE.getCompleteToken\n */\nvar getCompleteToken = function(yasqe, token, cur) {\n\tif (!cur) {\n\t\tcur = yasqe.getCursor();\n\t}\n\tif (!token) {\n\t\ttoken = yasqe.getTokenAt(cur);\n\t}\n\tvar prevToken = yasqe.getTokenAt({\n\t\tline: cur.line,\n\t\tch: token.start\n\t});\n\t// not start of line, and not whitespace\n\tif (\n\t\tprevToken.type != null && prevToken.type != \"ws\" && token.type != null && token.type != \"ws\"\n\t) {\n\t\ttoken.start = prevToken.start;\n\t\ttoken.string = prevToken.string + token.string;\n\t\treturn getCompleteToken(yasqe, token, {\n\t\t\tline: cur.line,\n\t\t\tch: prevToken.start\n\t\t}); // recursively, might have multiple tokens which it should include\n\t} else if (token.type != null && token.type == \"ws\") {\n\t\t//always keep 1 char of whitespace between tokens. Otherwise, autocompletions might end up next to the previous node, without whitespace between them\n\t\ttoken.start = token.start + 1;\n\t\ttoken.string = token.string.substring(1);\n\t\treturn token;\n\t} else {\n\t\treturn token;\n\t}\n};\nvar getPreviousNonWsToken = function(yasqe, line, token) {\n\tvar previousToken = yasqe.getTokenAt({\n\t\tline: line,\n\t\tch: token.start\n\t});\n\tif (previousToken != null && previousToken.type == \"ws\") {\n\t\tpreviousToken = getPreviousNonWsToken(yasqe, line, previousToken);\n\t}\n\treturn previousToken;\n}\nvar getNextNonWsToken = function(yasqe, lineNumber, charNumber) {\n\tif (charNumber == undefined)\n\t\tcharNumber = 1;\n\tvar token = yasqe.getTokenAt({\n\t\tline: lineNumber,\n\t\tch: charNumber\n\t});\n\tif (token == null || token == undefined || token.end < charNumber) {\n\t\treturn null;\n\t}\n\tif (token.type == \"ws\") {\n\t\treturn getNextNonWsToken(yasqe, lineNumber, token.end + 1);\n\t}\n\treturn token;\n};\n\nmodule.exports = {\n\tgetPreviousNonWsToken: getPreviousNonWsToken,\n\tgetCompleteToken: getCompleteToken,\n\tgetNextNonWsToken: getNextNonWsToken,\n};", "'use strict';\nvar $ = (function(){try{return require('jquery')}catch(e){return window.jQuery}})(),\n\tutils = require('./utils.js');\n\n/**\n * Write our own tooltip, to avoid loading another library for just this functionality. For now, we only use tooltip for showing parse errors, so this is quite a tailored solution\n * Requirements: \n * \t\tposition tooltip within codemirror frame as much as possible, to avoid z-index issues with external things on page\n * \t\tuse html as content\n */\nmodule.exports = function(yasqe, parent, html) {\n\tvar parent = $(parent);\n\tvar tooltip;\n\tparent.hover(function() {\n\t\t\tif (typeof html == \"function\") html = html();\n\t\t\ttooltip = $(\"
\").addClass('yasqe_tooltip').html(html).appendTo(parent);\n\t\t\trepositionTooltip();\n\t\t},\n\t\tfunction() {\n\t\t\t$(\".yasqe_tooltip\").remove();\n\t\t});\n\n\n\n\t/**\n\t * only need to take into account top and bottom offset for this usecase\n\t */\n\tvar repositionTooltip = function() {\n\t\tif ($(yasqe.getWrapperElement()).offset().top >= tooltip.offset().top) {\n\t\t\t//shit, move the tooltip down. The tooltip now hovers over the top edge of the yasqe instance\n\t\t\ttooltip.css('bottom', 'auto');\n\t\t\ttooltip.css('top', '26px');\n\t\t}\n\t};\n};", "'use strict';\nvar $ = (function(){try{return require('jquery')}catch(e){return window.jQuery}})();\n\nvar keyExists = function(objectToTest, key) {\n\tvar exists = false;\n\ttry {\n\t\tif (objectToTest[key] !== undefined)\n\t\t\texists = true;\n\t} catch (e) {}\n\treturn exists;\n};\n\nvar getPersistencyId = function(yasqe, persistentIdCreator) {\n\tvar persistencyId = null;\n\n\tif (persistentIdCreator) {\n\t\tif (typeof persistentIdCreator == \"string\") {\n\t\t\tpersistencyId = persistentIdCreator;\n\t\t} else {\n\t\t\tpersistencyId = persistentIdCreator(yasqe);\n\t\t}\n\t}\n\treturn persistencyId;\n};\n\nvar elementsOverlap = (function() {\n\tfunction getPositions(elem) {\n\t\tvar pos, width, height;\n\t\tpos = $(elem).offset();\n\t\twidth = $(elem).width();\n\t\theight = $(elem).height();\n\t\treturn [\n\t\t\t[pos.left, pos.left + width],\n\t\t\t[pos.top, pos.top + height]\n\t\t];\n\t}\n\n\tfunction comparePositions(p1, p2) {\n\t\tvar r1, r2;\n\t\tr1 = p1[0] < p2[0] ? p1 : p2;\n\t\tr2 = p1[0] < p2[0] ? p2 : p1;\n\t\treturn r1[1] > r2[0] || r1[0] === r2[0];\n\t}\n\n\treturn function(a, b) {\n\t\tvar pos1 = getPositions(a),\n\t\t\tpos2 = getPositions(b);\n\t\treturn comparePositions(pos1[0], pos2[0]) && comparePositions(pos1[1], pos2[1]);\n\t};\n})();\n\nmodule.exports = {\n\tkeyExists: keyExists,\n\tgetPersistencyId: getPersistencyId,\n\telementsOverlap: elementsOverlap,\n};" ] }