http://git-wip-us.apache.org/repos/asf/drill/blob/27dc0d27/exec/java-exec/src/main/resources/rest/static/js/ace-code-editor/mode-json.js
----------------------------------------------------------------------
diff --git 
a/exec/java-exec/src/main/resources/rest/static/js/ace-code-editor/mode-json.js 
b/exec/java-exec/src/main/resources/rest/static/js/ace-code-editor/mode-json.js
new file mode 100644
index 0000000..acdebd6
--- /dev/null
+++ 
b/exec/java-exec/src/main/resources/rest/static/js/ace-code-editor/mode-json.js
@@ -0,0 +1 @@
+ace.define("ace/mode/json_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"],function(e,t,n){"use
 strict";var 
r=e("../lib/oop"),i=e("./text_highlight_rules").TextHighlightRules,s=function(){this.$rules={start:[{token:"variable",regex:'["](?:(?:\\\\.)|(?:[^"\\\\]))*?["]\\s*(?=:)'},{token:"string",regex:'"',next:"string"},{token:"constant.numeric",regex:"0[xX][0-9a-fA-F]+\\b"},{token:"constant.numeric",regex:"[+-]?\\d+(?:(?:\\.\\d*)?(?:[eE][+-]?\\d+)?)?\\b"},{token:"constant.language.boolean",regex:"(?:true|false)\\b"},{token:"text",regex:"['](?:(?:\\\\.)|(?:[^'\\\\]))*?[']"},{token:"comment",regex:"\\/\\/.*$"},{token:"comment.start",regex:"\\/\\*",next:"comment"},{token:"paren.lparen",regex:"[[({]"},{token:"paren.rparen",regex:"[\\])}]"},{token:"text",regex:"\\s+"}],string:[{token:"constant.language.escape",regex:/\\(?:x[0-9a-fA-F]{2}|u[0-9a-fA-F]{4}|["\\\/bfnrt])/},{token:"string",regex:'"|$',next:"start"},{defaultToken:"string"}],comment:[
 
{token:"comment.end",regex:"\\*\\/",next:"start"},{defaultToken:"comment"}]}};r.inherits(s,i),t.JsonHighlightRules=s}),ace.define("ace/mode/matching_brace_outdent",["require","exports","module","ace/range"],function(e,t,n){"use
 strict";var 
r=e("../range").Range,i=function(){};(function(){this.checkOutdent=function(e,t){return/^\s+$/.test(e)?/^\s*\}/.test(t):!1},this.autoOutdent=function(e,t){var
 n=e.getLine(t),i=n.match(/^(\s*\})/);if(!i)return 0;var 
s=i[1].length,o=e.findMatchingBracket({row:t,column:s});if(!o||o.row==t)return 
0;var u=this.$getIndent(e.getLine(o.row));e.replace(new 
r(t,0,t,s-1),u)},this.$getIndent=function(e){return 
e.match(/^\s*/)[0]}}).call(i.prototype),t.MatchingBraceOutdent=i}),ace.define("ace/mode/folding/cstyle",["require","exports","module","ace/lib/oop","ace/range","ace/mode/folding/fold_mode"],function(e,t,n){"use
 strict";var 
r=e("../../lib/oop"),i=e("../../range").Range,s=e("./fold_mode").FoldMode,o=t.FoldMode=function(e){e&&(this.foldingStartMarker=new
 R
 
egExp(this.foldingStartMarker.source.replace(/\|[^|]*?$/,"|"+e.start)),this.foldingStopMarker=new
 
RegExp(this.foldingStopMarker.source.replace(/\|[^|]*?$/,"|"+e.end)))};r.inherits(o,s),function(){this.foldingStartMarker=/(\{|\[)[^\}\]]*$|^\s*(\/\*)/,this.foldingStopMarker=/^[^\[\{]*(\}|\])|^[\s\*]*(\*\/)/,this.singleLineBlockCommentRe=/^\s*(\/\*).*\*\/\s*$/,this.tripleStarBlockCommentRe=/^\s*(\/\*\*\*).*\*\/\s*$/,this.startRegionRe=/^\s*(\/\*|\/\/)#?region\b/,this._getFoldWidgetBase=this.getFoldWidget,this.getFoldWidget=function(e,t,n){var
 
r=e.getLine(n);if(this.singleLineBlockCommentRe.test(r)&&!this.startRegionRe.test(r)&&!this.tripleStarBlockCommentRe.test(r))return"";var
 
i=this._getFoldWidgetBase(e,t,n);return!i&&this.startRegionRe.test(r)?"start":i},this.getFoldWidgetRange=function(e,t,n,r){var
 i=e.getLine(n);if(this.startRegionRe.test(i))return 
this.getCommentRegionBlock(e,i,n);var 
s=i.match(this.foldingStartMarker);if(s){var o=s.index;if(s[1])return 
this.openingBracketBlock(e
 ,s[1],n,o);var u=e.getCommentFoldRange(n,o+s[0].length,1);return 
u&&!u.isMultiLine()&&(r?u=this.getSectionRange(e,n):t!="all"&&(u=null)),u}if(t==="markbegin")return;var
 s=i.match(this.foldingStopMarker);if(s){var o=s.index+s[0].length;return 
s[1]?this.closingBracketBlock(e,s[1],n,o):e.getCommentFoldRange(n,o,-1)}},this.getSectionRange=function(e,t){var
 n=e.getLine(t),r=n.search(/\S/),s=t,o=n.length;t+=1;var 
u=t,a=e.getLength();while(++t<a){n=e.getLine(t);var 
f=n.search(/\S/);if(f===-1)continue;if(r>f)break;var 
l=this.getFoldWidgetRange(e,"all",t);if(l){if(l.start.row<=s)break;if(l.isMultiLine())t=l.end.row;else
 if(r==f)break}u=t}return new 
i(s,o,u,e.getLine(u).length)},this.getCommentRegionBlock=function(e,t,n){var 
r=t.search(/\s*$/),s=e.getLength(),o=n,u=/^\s*(?:\/\*|\/\/|--)#?(end)?region\b/,a=1;while(++n<s){t=e.getLine(n);var
 f=u.exec(t);if(!f)continue;f[1]?a--:a++;if(!a)break}var l=n;if(l>o)return new 
i(o,r,l,t.length)}}.call(o.prototype)}),ace.define("ace/mode/json",["require",
 
"exports","module","ace/lib/oop","ace/mode/text","ace/mode/json_highlight_rules","ace/mode/matching_brace_outdent","ace/mode/behaviour/cstyle","ace/mode/folding/cstyle","ace/worker/worker_client"],function(e,t,n){"use
 strict";var 
r=e("../lib/oop"),i=e("./text").Mode,s=e("./json_highlight_rules").JsonHighlightRules,o=e("./matching_brace_outdent").MatchingBraceOutdent,u=e("./behaviour/cstyle").CstyleBehaviour,a=e("./folding/cstyle").FoldMode,f=e("../worker/worker_client").WorkerClient,l=function(){this.HighlightRules=s,this.$outdent=new
 o,this.$behaviour=new u,this.foldingRules=new 
a};r.inherits(l,i),function(){this.getNextLineIndent=function(e,t,n){var 
r=this.$getIndent(t);if(e=="start"){var 
i=t.match(/^.*[\{\(\[]\s*$/);i&&(r+=n)}return 
r},this.checkOutdent=function(e,t,n){return 
this.$outdent.checkOutdent(t,n)},this.autoOutdent=function(e,t,n){this.$outdent.autoOutdent(t,n)},this.createWorker=function(e){var
 t=new f(["ace"],"ace/mode/json_worker","JsonWorker");return t.attachToDocum
 
ent(e.getDocument()),t.on("annotate",function(t){e.setAnnotations(t.data)}),t.on("terminate",function(){e.clearAnnotations()}),t},this.$id="ace/mode/json"}.call(l.prototype),t.Mode=l})
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/drill/blob/27dc0d27/exec/java-exec/src/main/resources/rest/static/js/ace-code-editor/mode-sql.js
----------------------------------------------------------------------
diff --git 
a/exec/java-exec/src/main/resources/rest/static/js/ace-code-editor/mode-sql.js 
b/exec/java-exec/src/main/resources/rest/static/js/ace-code-editor/mode-sql.js
new file mode 100644
index 0000000..c4dadd8
--- /dev/null
+++ 
b/exec/java-exec/src/main/resources/rest/static/js/ace-code-editor/mode-sql.js
@@ -0,0 +1 @@
+ace.define("ace/mode/sql_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"],function(e,t,n){"use
 strict";var 
r=e("../lib/oop"),i=e("./text_highlight_rules").TextHighlightRules,s=function(){var
 
e="select|insert|update|delete|from|where|and|or|group|by|order|limit|offset|having|as|case|when|else|end|type|left|right|join|on|outer|desc|asc|union|create|table|primary|key|if|foreign|not|references|default|null|inner|cross|natural|database|drop|grant",t="true|false",n="avg|count|first|last|max|min|sum|ucase|lcase|mid|len|round|rank|now|format|coalesce|ifnull|isnull|nvl",r="int|numeric|decimal|date|varchar|char|bigint|float|double|bit|binary|text|set|timestamp|money|real|number|integer",i=this.createKeywordMapper({"support.function":n,keyword:e,"constant.language":t,"storage.type":r},"identifier",!0);this.$rules={start:[{token:"comment",regex:"--.*$"},{token:"comment",start:"/\\*",end:"\\*/"},{token:"string",regex:'".*?"'},{token:"string",regex:"'.
 
*?'"},{token:"string",regex:"`.*?`"},{token:"constant.numeric",regex:"[+-]?\\d+(?:(?:\\.\\d*)?(?:[eE][+-]?\\d+)?)?\\b"},{token:i,regex:"[a-zA-Z_$][a-zA-Z0-9_$]*\\b"},{token:"keyword.operator",regex:"\\+|\\-|\\/|\\/\\/|%|<@>|@>|<@|&|\\^|~|<|>|<=|=>|==|!=|<>|="},{token:"paren.lparen",regex:"[\\(]"},{token:"paren.rparen",regex:"[\\)]"},{token:"text",regex:"\\s+"}]},this.normalizeRules()};r.inherits(s,i),t.SqlHighlightRules=s}),ace.define("ace/mode/sql",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/sql_highlight_rules"],function(e,t,n){"use
 strict";var 
r=e("../lib/oop"),i=e("./text").Mode,s=e("./sql_highlight_rules").SqlHighlightRules,o=function(){this.HighlightRules=s,this.$behaviour=this.$defaultBehaviour};r.inherits(o,i),function(){this.lineCommentStart="--",this.$id="ace/mode/sql"}.call(o.prototype),t.Mode=o})
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/drill/blob/27dc0d27/exec/java-exec/src/main/resources/rest/static/js/ace-code-editor/theme-eclipse.js
----------------------------------------------------------------------
diff --git 
a/exec/java-exec/src/main/resources/rest/static/js/ace-code-editor/theme-eclipse.js
 
b/exec/java-exec/src/main/resources/rest/static/js/ace-code-editor/theme-eclipse.js
new file mode 100644
index 0000000..b15aeec
--- /dev/null
+++ 
b/exec/java-exec/src/main/resources/rest/static/js/ace-code-editor/theme-eclipse.js
@@ -0,0 +1 @@
+ace.define("ace/theme/eclipse",["require","exports","module","ace/lib/dom"],function(e,t,n){"use
 strict";t.isDark=!1,t.cssText='.ace-eclipse .ace_gutter {background: 
#ebebeb;border-right: 1px solid rgb(159, 159, 159);color: rgb(136, 136, 
136);}.ace-eclipse .ace_print-margin {width: 1px;background: 
#ebebeb;}.ace-eclipse {background-color: #FFFFFF;color: black;}.ace-eclipse 
.ace_fold {background-color: rgb(60, 76, 114);}.ace-eclipse .ace_cursor {color: 
black;}.ace-eclipse .ace_storage,.ace-eclipse .ace_keyword,.ace-eclipse 
.ace_variable {color: rgb(127, 0, 85);}.ace-eclipse .ace_constant.ace_buildin 
{color: rgb(88, 72, 246);}.ace-eclipse .ace_constant.ace_library {color: rgb(6, 
150, 14);}.ace-eclipse .ace_function {color: rgb(60, 76, 114);}.ace-eclipse 
.ace_string {color: rgb(42, 0, 255);}.ace-eclipse .ace_comment {color: rgb(113, 
150, 130);}.ace-eclipse .ace_comment.ace_doc {color: rgb(63, 95, 
191);}.ace-eclipse .ace_comment.ace_doc.ace_tag {color: rgb(127, 159, 
191);}.ace-eclipse .a
 ce_constant.ace_numeric {color: darkblue;}.ace-eclipse .ace_tag {color: 
rgb(25, 118, 116);}.ace-eclipse .ace_type {color: rgb(127, 0, 
127);}.ace-eclipse .ace_xml-pe {color: rgb(104, 104, 91);}.ace-eclipse 
.ace_marker-layer .ace_selection {background: rgb(181, 213, 255);}.ace-eclipse 
.ace_marker-layer .ace_bracket {margin: -1px 0 0 -1px;border: 1px solid 
rgb(192, 192, 192);}.ace-eclipse .ace_meta.ace_tag {color:rgb(25, 118, 
116);}.ace-eclipse .ace_invisible {color: #ddd;}.ace-eclipse 
.ace_entity.ace_other.ace_attribute-name {color:rgb(127, 0, 127);}.ace-eclipse 
.ace_marker-layer .ace_step {background: rgb(255, 255, 0);}.ace-eclipse 
.ace_active-line {background: rgb(232, 242, 254);}.ace-eclipse 
.ace_gutter-active-line {background-color : #DADADA;}.ace-eclipse 
.ace_marker-layer .ace_selected-word {border: 1px solid rgb(181, 213, 
255);}.ace-eclipse .ace_indent-guide {background: 
url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAACCAYAAACZgbYnAAAAE0lEQVQImWP4////f4bLly//BwAmVgd1/w
 11/gAAAABJRU5ErkJggg==") right repeat-y;}',t.cssClass="ace-eclipse";var 
r=e("../lib/dom");r.importCssString(t.cssText,t.cssClass)})
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/drill/blob/27dc0d27/exec/java-exec/src/main/resources/rest/static/js/ace-code-editor/worker-json.js
----------------------------------------------------------------------
diff --git 
a/exec/java-exec/src/main/resources/rest/static/js/ace-code-editor/worker-json.js
 
b/exec/java-exec/src/main/resources/rest/static/js/ace-code-editor/worker-json.js
new file mode 100644
index 0000000..ef228b5
--- /dev/null
+++ 
b/exec/java-exec/src/main/resources/rest/static/js/ace-code-editor/worker-json.js
@@ -0,0 +1 @@
+"no use strict";(function(e){function t(e,t){var n=e,r="";while(n){var 
i=t[n];if(typeof i=="string")return i+r;if(i)return 
i.location.replace(/\/*$/,"/")+(r||i.main||i.name);if(i===!1)return"";var 
s=n.lastIndexOf("/");if(s===-1)break;r=n.substr(s)+r,n=n.slice(0,s)}return 
e}if(typeof 
e.window!="undefined"&&e.document)return;if(e.require&&e.define)return;e.console||(e.console=function(){var
 
e=Array.prototype.slice.call(arguments,0);postMessage({type:"log",data:e})},e.console.error=e.console.warn=e.console.log=e.console.trace=e.console),e.window=e,e.ace=e,e.onerror=function(e,t,n,r,i){postMessage({type:"error",data:{message:e,data:i.data,file:t,line:n,col:r,stack:i.stack}})},e.normalizeModule=function(t,n){if(n.indexOf("!")!==-1){var
 r=n.split("!");return 
e.normalizeModule(t,r[0])+"!"+e.normalizeModule(t,r[1])}if(n.charAt(0)=="."){var
 
i=t.split("/").slice(0,-1).join("/");n=(i?i+"/":"")+n;while(n.indexOf(".")!==-1&&s!=n){var
 s=n;n=n.replace(/^\.\//,"").replace(/\/\.\//,"/").replace(/[^\
 /]+\/\.\.\//,"")}}return 
n},e.require=function(r,i){i||(i=r,r=null);if(!i.charAt)throw new 
Error("worker.js require() accepts only (parentId, id) as 
arguments");i=e.normalizeModule(r,i);var s=e.require.modules[i];if(s)return 
s.initialized||(s.initialized=!0,s.exports=s.factory().exports),s.exports;if(!e.require.tlns)return
 console.log("unable to load "+i);var o=t(i,e.require.tlns);return 
o.slice(-3)!=".js"&&(o+=".js"),e.require.id=i,e.require.modules[i]={},importScripts(o),e.require(r,i)},e.require.modules={},e.require.tlns={},e.define=function(t,n,r){arguments.length==2?(r=n,typeof
 
t!="string"&&(n=t,t=e.require.id)):arguments.length==1&&(r=t,n=[],t=e.require.id);if(typeof
 
r!="function"){e.require.modules[t]={exports:r,initialized:!0};return}n.length||(n=["require","exports","module"]);var
 i=function(n){return 
e.require(t,n)};e.require.modules[t]={exports:{},factory:function(){var 
e=this,t=r.apply(this,n.map(function(t){switch(t){case"require":return 
i;case"exports":return e.exports
 ;case"module":return e;default:return i(t)}}));return 
t&&(e.exports=t),e}}},e.define.amd={},require.tlns={},e.initBaseUrls=function(t){for(var
 n in t)require.tlns[n]=t[n]},e.initSender=function(){var 
n=e.require("ace/lib/event_emitter").EventEmitter,r=e.require("ace/lib/oop"),i=function(){};return
 
function(){r.implement(this,n),this.callback=function(e,t){postMessage({type:"call",id:t,data:e})},this.emit=function(e,t){postMessage({type:"event",name:e,data:t})}}.call(i.prototype),new
 i};var n=e.main=null,r=e.sender=null;e.onmessage=function(t){var 
i=t.data;if(i.event&&r)r._signal(i.event,i.data);else 
if(i.command)if(n[i.command])n[i.command].apply(n,i.args);else{if(!e[i.command])throw
 new Error("Unknown command:"+i.command);e[i.command].apply(e,i.args)}else 
if(i.init){e.initBaseUrls(i.tlns),require("ace/lib/es5-shim"),r=e.sender=e.initSender();var
 s=require(i.module)[i.classname];n=e.main=new 
s(r)}}})(this),ace.define("ace/lib/oop",["require","exports","module"],function(e,t,n){"use
 
 
strict";t.inherits=function(e,t){e.super_=t,e.prototype=Object.create(t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}})},t.mixin=function(e,t){for(var
 n in t)e[n]=t[n];return 
e},t.implement=function(e,n){t.mixin(e,n)}}),ace.define("ace/range",["require","exports","module"],function(e,t,n){"use
 strict";var r=function(e,t){return 
e.row-t.row||e.column-t.column},i=function(e,t,n,r){this.start={row:e,column:t},this.end={row:n,column:r}};(function(){this.isEqual=function(e){return
 
this.start.row===e.start.row&&this.end.row===e.end.row&&this.start.column===e.start.column&&this.end.column===e.end.column},this.toString=function(){return"Range:
 ["+this.start.row+"/"+this.start.column+"] -> 
["+this.end.row+"/"+this.end.column+"]"},this.contains=function(e,t){return 
this.compare(e,t)==0},this.compareRange=function(e){var 
t,n=e.end,r=e.start;return 
t=this.compare(n.row,n.column),t==1?(t=this.compare(r.row,r.column),t==1?2:t==0?1:0):t==-1?-2:(t=this.compare(r.row,r.c
 olumn),t==-1?-1:t==1?42:0)},this.comparePoint=function(e){return 
this.compare(e.row,e.column)},this.containsRange=function(e){return 
this.comparePoint(e.start)==0&&this.comparePoint(e.end)==0},this.intersects=function(e){var
 t=this.compareRange(e);return 
t==-1||t==0||t==1},this.isEnd=function(e,t){return 
this.end.row==e&&this.end.column==t},this.isStart=function(e,t){return 
this.start.row==e&&this.start.column==t},this.setStart=function(e,t){typeof 
e=="object"?(this.start.column=e.column,this.start.row=e.row):(this.start.row=e,this.start.column=t)},this.setEnd=function(e,t){typeof
 
e=="object"?(this.end.column=e.column,this.end.row=e.row):(this.end.row=e,this.end.column=t)},this.inside=function(e,t){return
 
this.compare(e,t)==0?this.isEnd(e,t)||this.isStart(e,t)?!1:!0:!1},this.insideStart=function(e,t){return
 
this.compare(e,t)==0?this.isEnd(e,t)?!1:!0:!1},this.insideEnd=function(e,t){return
 
this.compare(e,t)==0?this.isStart(e,t)?!1:!0:!1},this.compare=function(e,t){return!this.isMulti
 
Line()&&e===this.start.row?t<this.start.column?-1:t>this.end.column?1:0:e<this.start.row?-1:e>this.end.row?1:this.start.row===e?t>=this.start.column?0:-1:this.end.row===e?t<=this.end.column?0:1:0},this.compareStart=function(e,t){return
 
this.start.row==e&&this.start.column==t?-1:this.compare(e,t)},this.compareEnd=function(e,t){return
 
this.end.row==e&&this.end.column==t?1:this.compare(e,t)},this.compareInside=function(e,t){return
 
this.end.row==e&&this.end.column==t?1:this.start.row==e&&this.start.column==t?-1:this.compare(e,t)},this.clipRows=function(e,t){if(this.end.row>t)var
 n={row:t+1,column:0};else if(this.end.row<e)var 
n={row:e,column:0};if(this.start.row>t)var r={row:t+1,column:0};else 
if(this.start.row<e)var r={row:e,column:0};return 
i.fromPoints(r||this.start,n||this.end)},this.extend=function(e,t){var 
n=this.compare(e,t);if(n==0)return this;if(n==-1)var r={row:e,column:t};else 
var s={row:e,column:t};return 
i.fromPoints(r||this.start,s||this.end)},this.isEmpty=function(){retur
 n 
this.start.row===this.end.row&&this.start.column===this.end.column},this.isMultiLine=function(){return
 this.start.row!==this.end.row},this.clone=function(){return 
i.fromPoints(this.start,this.end)},this.collapseRows=function(){return 
this.end.column==0?new 
i(this.start.row,0,Math.max(this.start.row,this.end.row-1),0):new 
i(this.start.row,0,this.end.row,0)},this.toScreenRange=function(e){var 
t=e.documentToScreenPosition(this.start),n=e.documentToScreenPosition(this.end);return
 new 
i(t.row,t.column,n.row,n.column)},this.moveBy=function(e,t){this.start.row+=e,this.start.column+=t,this.end.row+=e,this.end.column+=t}}).call(i.prototype),i.fromPoints=function(e,t){return
 new 
i(e.row,e.column,t.row,t.column)},i.comparePoints=r,i.comparePoints=function(e,t){return
 
e.row-t.row||e.column-t.column},t.Range=i}),ace.define("ace/apply_delta",["require","exports","module"],function(e,t,n){"use
 strict";function r(e,t){throw console.log("Invalid Delta:",e),"Invalid Delta: 
"+t}function i(e,t){retur
 n t.row>=0&&t.row<e.length&&t.column>=0&&t.column<=e[t.row].length}function 
s(e,t){t.action!="insert"&&t.action!="remove"&&r(t,"delta.action must be 
'insert' or 'remove'"),t.lines instanceof Array||r(t,"delta.lines must be an 
Array"),(!t.start||!t.end)&&r(t,"delta.start/end must be an present");var 
n=t.start;i(e,t.start)||r(t,"delta.start must be contained in document");var 
s=t.end;t.action=="remove"&&!i(e,s)&&r(t,"delta.end must contained in document 
for 'remove' actions");var 
o=s.row-n.row,u=s.column-(o==0?n.column:0);(o!=t.lines.length-1||t.lines[o].length!=u)&&r(t,"delta.range
 must match delta lines")}t.applyDelta=function(e,t,n){var 
r=t.start.row,i=t.start.column,s=e[r]||"";switch(t.action){case"insert":var 
o=t.lines;if(o.length===1)e[r]=s.substring(0,i)+t.lines[0]+s.substring(i);else{var
 
u=[r,1].concat(t.lines);e.splice.apply(e,u),e[r]=s.substring(0,i)+e[r],e[r+t.lines.length-1]+=s.substring(i)}break;case"remove":var
 a=t.end.column,f=t.end.row;r===f?e[r]=s.substring(0,i)+s.sub
 
string(a):e.splice(r,f-r+1,s.substring(0,i)+e[f].substring(a))}}}),ace.define("ace/lib/event_emitter",["require","exports","module"],function(e,t,n){"use
 strict";var 
r={},i=function(){this.propagationStopped=!0},s=function(){this.defaultPrevented=!0};r._emit=r._dispatchEvent=function(e,t){this._eventRegistry||(this._eventRegistry={}),this._defaultHandlers||(this._defaultHandlers={});var
 
n=this._eventRegistry[e]||[],r=this._defaultHandlers[e];if(!n.length&&!r)return;if(typeof
 
t!="object"||!t)t={};t.type||(t.type=e),t.stopPropagation||(t.stopPropagation=i),t.preventDefault||(t.preventDefault=s),n=n.slice();for(var
 
o=0;o<n.length;o++){n[o](t,this);if(t.propagationStopped)break}if(r&&!t.defaultPrevented)return
 r(t,this)},r._signal=function(e,t){var 
n=(this._eventRegistry||{})[e];if(!n)return;n=n.slice();for(var 
r=0;r<n.length;r++)n[r](t,this)},r.once=function(e,t){var 
n=this;t&&this.addEventListener(e,function 
r(){n.removeEventListener(e,r),t.apply(null,arguments)})},r.setDefaultHandler
 =function(e,t){var 
n=this._defaultHandlers;n||(n=this._defaultHandlers={_disabled_:{}});if(n[e]){var
 r=n[e],i=n._disabled_[e];i||(n._disabled_[e]=i=[]),i.push(r);var 
s=i.indexOf(t);s!=-1&&i.splice(s,1)}n[e]=t},r.removeDefaultHandler=function(e,t){var
 n=this._defaultHandlers;if(!n)return;var r=n._disabled_[e];if(n[e]==t){var 
i=n[e];r&&this.setDefaultHandler(e,r.pop())}else if(r){var 
s=r.indexOf(t);s!=-1&&r.splice(s,1)}},r.on=r.addEventListener=function(e,t,n){this._eventRegistry=this._eventRegistry||{};var
 r=this._eventRegistry[e];return 
r||(r=this._eventRegistry[e]=[]),r.indexOf(t)==-1&&r[n?"unshift":"push"](t),t},r.off=r.removeListener=r.removeEventListener=function(e,t){this._eventRegistry=this._eventRegistry||{};var
 n=this._eventRegistry[e];if(!n)return;var 
r=n.indexOf(t);r!==-1&&n.splice(r,1)},r.removeAllListeners=function(e){this._eventRegistry&&(this._eventRegistry[e]=[])},t.EventEmitter=r}),ace.define("ace/anchor",["require","exports","module","ace/lib/oop","ace/lib/event_emi
 tter"],function(e,t,n){"use strict";var 
r=e("./lib/oop"),i=e("./lib/event_emitter").EventEmitter,s=t.Anchor=function(e,t,n){this.$onChange=this.onChange.bind(this),this.attach(e),typeof
 
n=="undefined"?this.setPosition(t.row,t.column):this.setPosition(t,n)};(function(){function
 e(e,t,n){var r=n?e.column<=t.column:e.column<t.column;return 
e.row<t.row||e.row==t.row&&r}function t(t,n,r){var 
i=t.action=="insert",s=(i?1:-1)*(t.end.row-t.start.row),o=(i?1:-1)*(t.end.column-t.start.column),u=t.start,a=i?u:t.end;return
 
e(n,u,r)?{row:n.row,column:n.column}:e(a,n,!r)?{row:n.row+s,column:n.column+(n.row==a.row?o:0)}:{row:u.row,column:u.column}}r.implement(this,i),this.getPosition=function(){return
 
this.$clipPositionToDocument(this.row,this.column)},this.getDocument=function(){return
 
this.document},this.$insertRight=!1,this.onChange=function(e){if(e.start.row==e.end.row&&e.start.row!=this.row)return;if(e.start.row>this.row)return;var
 n=t(e,{row:this.row,column:this.column},this.$insertRight);thi
 s.setPosition(n.row,n.column,!0)},this.setPosition=function(e,t,n){var 
r;n?r={row:e,column:t}:r=this.$clipPositionToDocument(e,t);if(this.row==r.row&&this.column==r.column)return;var
 
i={row:this.row,column:this.column};this.row=r.row,this.column=r.column,this._signal("change",{old:i,value:r})},this.detach=function(){this.document.removeEventListener("change",this.$onChange)},this.attach=function(e){this.document=e||this.document,this.document.on("change",this.$onChange)},this.$clipPositionToDocument=function(e,t){var
 n={};return 
e>=this.document.getLength()?(n.row=Math.max(0,this.document.getLength()-1),n.column=this.document.getLine(n.row).length):e<0?(n.row=0,n.column=0):(n.row=e,n.column=Math.min(this.document.getLine(n.row).length,Math.max(0,t))),t<0&&(n.column=0),n}}).call(s.prototype)}),ace.define("ace/document",["require","exports","module","ace/lib/oop","ace/apply_delta","ace/lib/event_emitter","ace/range","ace/anchor"],function(e,t,n){"use
 strict";var r=e("./lib/oop"),i=e("
 
./apply_delta").applyDelta,s=e("./lib/event_emitter").EventEmitter,o=e("./range").Range,u=e("./anchor").Anchor,a=function(e){this.$lines=[""],e.length===0?this.$lines=[""]:Array.isArray(e)?this.insertMergedLines({row:0,column:0},e):this.insert({row:0,column:0},e)};(function(){r.implement(this,s),this.setValue=function(e){var
 t=this.getLength()-1;this.remove(new 
o(0,0,t,this.getLine(t).length)),this.insert({row:0,column:0},e)},this.getValue=function(){return
 
this.getAllLines().join(this.getNewLineCharacter())},this.createAnchor=function(e,t){return
 new u(this,e,t)},"aaa".split(/a/).length===0?this.$split=function(e){return 
e.replace(/\r\n|\r/g,"\n").split("\n")}:this.$split=function(e){return 
e.split(/\r\n|\r|\n/)},this.$detectNewLine=function(e){var 
t=e.match(/^.*?(\r\n|\r|\n)/m);this.$autoNewLine=t?t[1]:"\n",this._signal("changeNewLineMode")},this.getNewLineCharacter=function(){switch(this.$newLineMode){case"windows":return"\r\n";case"unix":return"\n";default:return
 this.$autoNewLi
 
ne||"\n"}},this.$autoNewLine="",this.$newLineMode="auto",this.setNewLineMode=function(e){if(this.$newLineMode===e)return;this.$newLineMode=e,this._signal("changeNewLineMode")},this.getNewLineMode=function(){return
 this.$newLineMode},this.isNewLine=function(e){return 
e=="\r\n"||e=="\r"||e=="\n"},this.getLine=function(e){return 
this.$lines[e]||""},this.getLines=function(e,t){return 
this.$lines.slice(e,t+1)},this.getAllLines=function(){return 
this.getLines(0,this.getLength())},this.getLength=function(){return 
this.$lines.length},this.getTextRange=function(e){return 
this.getLinesForRange(e).join(this.getNewLineCharacter())},this.getLinesForRange=function(e){var
 
t;if(e.start.row===e.end.row)t=[this.getLine(e.start.row).substring(e.start.column,e.end.column)];else{t=this.getLines(e.start.row,e.end.row),t[0]=(t[0]||"").substring(e.start.column);var
 
n=t.length-1;e.end.row-e.start.row==n&&(t[n]=t[n].substring(0,e.end.column))}return
 t},this.insertLines=function(e,t){return console.warn("Use 
 of document.insertLines is deprecated. Use the insertFullLines method 
instead."),this.insertFullLines(e,t)},this.removeLines=function(e,t){return 
console.warn("Use of document.removeLines is deprecated. Use the 
removeFullLines method 
instead."),this.removeFullLines(e,t)},this.insertNewLine=function(e){return 
console.warn("Use of document.insertNewLine is deprecated. Use 
insertMergedLines(position, ['', '']) 
instead."),this.insertMergedLines(e,["",""])},this.insert=function(e,t){return 
this.getLength()<=1&&this.$detectNewLine(t),this.insertMergedLines(e,this.$split(t))},this.insertInLine=function(e,t){var
 n=this.clippedPos(e.row,e.column),r=this.pos(e.row,e.column+t.length);return 
this.applyDelta({start:n,end:r,action:"insert",lines:[t]},!0),this.clonePos(r)},this.clippedPos=function(e,t){var
 n=this.getLength();e===undefined?e=n:e<0?e=0:e>=n&&(e=n-1,t=undefined);var 
r=this.getLine(e);return 
t==undefined&&(t=r.length),t=Math.min(Math.max(t,0),r.length),{row:e,column:t}},this.clonePos=
 
function(e){return{row:e.row,column:e.column}},this.pos=function(e,t){return{row:e,column:t}},this.$clipPosition=function(e){var
 t=this.getLength();return 
e.row>=t?(e.row=Math.max(0,t-1),e.column=this.getLine(t-1).length):(e.row=Math.max(0,e.row),e.column=Math.min(Math.max(e.column,0),this.getLine(e.row).length)),e},this.insertFullLines=function(e,t){e=Math.min(Math.max(e,0),this.getLength());var
 
n=0;e<this.getLength()?(t=t.concat([""]),n=0):(t=[""].concat(t),e--,n=this.$lines[e].length),this.insertMergedLines({row:e,column:n},t)},this.insertMergedLines=function(e,t){var
 
n=this.clippedPos(e.row,e.column),r={row:n.row+t.length-1,column:(t.length==1?n.column:0)+t[t.length-1].length};return
 
this.applyDelta({start:n,end:r,action:"insert",lines:t}),this.clonePos(r)},this.remove=function(e){var
 
t=this.clippedPos(e.start.row,e.start.column),n=this.clippedPos(e.end.row,e.end.column);return
 
this.applyDelta({start:t,end:n,action:"remove",lines:this.getLinesForRange({start:t,end:n})}),this.clo
 nePos(t)},this.removeInLine=function(e,t,n){var 
r=this.clippedPos(e,t),i=this.clippedPos(e,n);return 
this.applyDelta({start:r,end:i,action:"remove",lines:this.getLinesForRange({start:r,end:i})},!0),this.clonePos(r)},this.removeFullLines=function(e,t){e=Math.min(Math.max(0,e),this.getLength()-1),t=Math.min(Math.max(0,t),this.getLength()-1);var
 
n=t==this.getLength()-1&&e>0,r=t<this.getLength()-1,i=n?e-1:e,s=n?this.getLine(i).length:0,u=r?t+1:t,a=r?0:this.getLine(u).length,f=new
 o(i,s,u,a),l=this.$lines.slice(e,t+1);return 
this.applyDelta({start:f.start,end:f.end,action:"remove",lines:this.getLinesForRange(f)}),l},this.removeNewLine=function(e){e<this.getLength()-1&&e>=0&&this.applyDelta({start:this.pos(e,this.getLine(e).length),end:this.pos(e+1,0),action:"remove",lines:["",""]})},this.replace=function(e,t){e
 instanceof 
o||(e=o.fromPoints(e.start,e.end));if(t.length===0&&e.isEmpty())return 
e.start;if(t==this.getTextRange(e))return e.end;this.remove(e);var n;return 
t?n=this.insert(e.sta
 rt,t):n=e.start,n},this.applyDeltas=function(e){for(var 
t=0;t<e.length;t++)this.applyDelta(e[t])},this.revertDeltas=function(e){for(var 
t=e.length-1;t>=0;t--)this.revertDelta(e[t])},this.applyDelta=function(e,t){var 
n=e.action=="insert";if(n?e.lines.length<=1&&!e.lines[0]:!o.comparePoints(e.start,e.end))return;n&&e.lines.length>2e4&&this.$splitAndapplyLargeDelta(e,2e4),i(this.$lines,e,t),this._signal("change",e)},this.$splitAndapplyLargeDelta=function(e,t){var
 n=e.lines,r=n.length,i=e.start.row,s=e.start.column,o=0,u=0;do{o=u,u+=t-1;var 
a=n.slice(o,u);if(u>r){e.lines=a,e.start.row=i+o,e.start.column=s;break}a.push(""),this.applyDelta({start:this.pos(i+o,s),end:this.pos(i+u,s=0),action:e.action,lines:a},!0)}while(!0)},this.revertDelta=function(e){this.applyDelta({start:this.clonePos(e.start),end:this.clonePos(e.end),action:e.action=="insert"?"remove":"insert",lines:e.lines.slice()})},this.indexToPosition=function(e,t){var
 n=this.$lines||this.getAllLines(),r=this.getNewLineCharacter()
 .length;for(var 
i=t||0,s=n.length;i<s;i++){e-=n[i].length+r;if(e<0)return{row:i,column:e+n[i].length+r}}return{row:s-1,column:n[s-1].length}},this.positionToIndex=function(e,t){var
 
n=this.$lines||this.getAllLines(),r=this.getNewLineCharacter().length,i=0,s=Math.min(e.row,n.length);for(var
 o=t||0;o<s;++o)i+=n[o].length+r;return 
i+e.column}}).call(a.prototype),t.Document=a}),ace.define("ace/lib/lang",["require","exports","module"],function(e,t,n){"use
 strict";t.last=function(e){return 
e[e.length-1]},t.stringReverse=function(e){return 
e.split("").reverse().join("")},t.stringRepeat=function(e,t){var 
n="";while(t>0){t&1&&(n+=e);if(t>>=1)e+=e}return n};var 
r=/^\s\s*/,i=/\s\s*$/;t.stringTrimLeft=function(e){return 
e.replace(r,"")},t.stringTrimRight=function(e){return 
e.replace(i,"")},t.copyObject=function(e){var t={};for(var n in 
e)t[n]=e[n];return t},t.copyArray=function(e){var t=[];for(var 
n=0,r=e.length;n<r;n++)e[n]&&typeof 
e[n]=="object"?t[n]=this.copyObject(e[n]):t[n]=e[n];return t},t
 .deepCopy=function s(e){if(typeof e!="object"||!e)return e;var 
t;if(Array.isArray(e)){t=[];for(var n=0;n<e.length;n++)t[n]=s(e[n]);return 
t}if(Object.prototype.toString.call(e)!=="[object Object]")return 
e;t={};for(var n in e)t[n]=s(e[n]);return t},t.arrayToMap=function(e){var 
t={};for(var n=0;n<e.length;n++)t[e[n]]=1;return t},t.createMap=function(e){var 
t=Object.create(null);for(var n in e)t[n]=e[n];return 
t},t.arrayRemove=function(e,t){for(var 
n=0;n<=e.length;n++)t===e[n]&&e.splice(n,1)},t.escapeRegExp=function(e){return 
e.replace(/([.*+?^${}()|[\]\/\\])/g,"\\$1")},t.escapeHTML=function(e){return 
e.replace(/&/g,"&#38;").replace(/"/g,"&#34;").replace(/'/g,"&#39;").replace(/</g,"&#60;")},t.getMatchOffsets=function(e,t){var
 n=[];return 
e.replace(t,function(e){n.push({offset:arguments[arguments.length-2],length:e.length})}),n},t.deferredCall=function(e){var
 t=null,n=function(){t=null,e()},r=function(e){return 
r.cancel(),t=setTimeout(n,e||0),r};return r.schedule=r,r.call=function(){re
 turn this.cancel(),e(),r},r.cancel=function(){return 
clearTimeout(t),t=null,r},r.isPending=function(){return 
t},r},t.delayedCall=function(e,t){var 
n=null,r=function(){n=null,e()},i=function(e){n==null&&(n=setTimeout(r,e||t))};return
 
i.delay=function(e){n&&clearTimeout(n),n=setTimeout(r,e||t)},i.schedule=i,i.call=function(){this.cancel(),e()},i.cancel=function(){n&&clearTimeout(n),n=null},i.isPending=function(){return
 
n},i}}),ace.define("ace/worker/mirror",["require","exports","module","ace/range","ace/document","ace/lib/lang"],function(e,t,n){"use
 strict";var 
r=e("../range").Range,i=e("../document").Document,s=e("../lib/lang"),o=t.Mirror=function(e){this.sender=e;var
 t=this.doc=new 
i(""),n=this.deferredUpdate=s.delayedCall(this.onUpdate.bind(this)),r=this;e.on("change",function(e){var
 i=e.data;if(i[0].start)t.applyDeltas(i);else for(var 
s=0;s<i.length;s+=2){if(Array.isArray(i[s+1]))var 
o={action:"insert",start:i[s],lines:i[s+1]};else var 
o={action:"remove",start:i[s],end:i[s+1]};t.a
 pplyDelta(o,!0)}if(r.$timeout)return 
n.schedule(r.$timeout);r.onUpdate()})};(function(){this.$timeout=500,this.setTimeout=function(e){this.$timeout=e},this.setValue=function(e){this.doc.setValue(e),this.deferredUpdate.schedule(this.$timeout)},this.getValue=function(e){this.sender.callback(this.doc.getValue(),e)},this.onUpdate=function(){},this.isPending=function(){return
 
this.deferredUpdate.isPending()}}).call(o.prototype)}),ace.define("ace/mode/json/json_parse",["require","exports","module"],function(e,t,n){"use
 strict";var r,i,s={'"':'"',"\\":"\\","/":"/",b:"\b",f:"\f",n:"\n",r:"\r",t:"   
 
"},o,u=function(e){throw{name:"SyntaxError",message:e,at:r,text:o}},a=function(e){return
 e&&e!==i&&u("Expected '"+e+"' instead of 
'"+i+"'"),i=o.charAt(r),r+=1,i},f=function(){var 
e,t="";i==="-"&&(t="-",a("-"));while(i>="0"&&i<="9")t+=i,a();if(i==="."){t+=".";while(a()&&i>="0"&&i<="9")t+=i}if(i==="e"||i==="E"){t+=i,a();if(i==="-"||i==="+")t+=i,a();while(i>="0"&&i<="9")t+=i,a()}e=+t;if(!isNaN(e))retu
 rn e;u("Bad number")},l=function(){var 
e,t,n="",r;if(i==='"')while(a()){if(i==='"')return 
a(),n;if(i==="\\"){a();if(i==="u"){r=0;for(t=0;t<4;t+=1){e=parseInt(a(),16);if(!isFinite(e))break;r=r*16+e}n+=String.fromCharCode(r)}else{if(typeof
 s[i]!="string")break;n+=s[i]}}else n+=i}u("Bad 
string")},c=function(){while(i&&i<=" 
")a()},h=function(){switch(i){case"t":return 
a("t"),a("r"),a("u"),a("e"),!0;case"f":return 
a("f"),a("a"),a("l"),a("s"),a("e"),!1;case"n":return 
a("n"),a("u"),a("l"),a("l"),null}u("Unexpected '"+i+"'")},p,d=function(){var 
e=[];if(i==="["){a("["),c();if(i==="]")return 
a("]"),e;while(i){e.push(p()),c();if(i==="]")return a("]"),e;a(","),c()}}u("Bad 
array")},v=function(){var e,t={};if(i==="{"){a("{"),c();if(i==="}")return 
a("}"),t;while(i){e=l(),c(),a(":"),Object.hasOwnProperty.call(t,e)&&u('Duplicate
 key "'+e+'"'),t[e]=p(),c();if(i==="}")return a("}"),t;a(","),c()}}u("Bad 
object")};return p=function(){c();switch(i){case"{":return v();case"[":return 
d();case'"':return l()
 ;case"-":return f();default:return i>="0"&&i<="9"?f():h()}},function(e,t){var 
n;return o=e,r=0,i=" ",n=p(),c(),i&&u("Syntax error"),typeof 
t=="function"?function s(e,n){var r,i,o=e[n];if(o&&typeof o=="object")for(r in 
o)Object.hasOwnProperty.call(o,r)&&(i=s(o,r),i!==undefined?o[r]=i:delete 
o[r]);return 
t.call(e,n,o)}({"":n},""):n}}),ace.define("ace/mode/json_worker",["require","exports","module","ace/lib/oop","ace/worker/mirror","ace/mode/json/json_parse"],function(e,t,n){"use
 strict";var 
r=e("../lib/oop"),i=e("../worker/mirror").Mirror,s=e("./json/json_parse"),o=t.JsonWorker=function(e){i.call(this,e),this.setTimeout(200)};r.inherits(o,i),function(){this.onUpdate=function(){var
 e=this.doc.getValue(),t=[];try{e&&s(e)}catch(n){var 
r=this.doc.indexToPosition(n.at-1);t.push({row:r.row,column:r.column,text:n.message,type:"error"})}this.sender.emit("annotate",t)}}.call(o.prototype)}),ace.define("ace/lib/es5-shim",["require","exports","module"],function(e,t,n){function
 r(){}function w(e){
 try{return Object.defineProperty(e,"sentinel",{}),"sentinel"in 
e}catch(t){}}function H(e){return 
e=+e,e!==e?e=0:e!==0&&e!==1/0&&e!==-1/0&&(e=(e>0||-1)*Math.floor(Math.abs(e))),e}function
 B(e){var t=typeof e;return 
e===null||t==="undefined"||t==="boolean"||t==="number"||t==="string"}function 
j(e){var t,n,r;if(B(e))return e;n=e.valueOf;if(typeof 
n=="function"){t=n.call(e);if(B(t))return t}r=e.toString;if(typeof 
r=="function"){t=r.call(e);if(B(t))return t}throw new 
TypeError}Function.prototype.bind||(Function.prototype.bind=function(t){var 
n=this;if(typeof n!="function")throw new TypeError("Function.prototype.bind 
called on incompatible "+n);var i=u.call(arguments,1),s=function(){if(this 
instanceof s){var e=n.apply(this,i.concat(u.call(arguments)));return 
Object(e)===e?e:this}return n.apply(t,i.concat(u.call(arguments)))};return 
n.prototype&&(r.prototype=n.prototype,s.prototype=new 
r,r.prototype=null),s});var 
i=Function.prototype.call,s=Array.prototype,o=Object.prototype,u=s.slice,a=i.
 
bind(o.toString),f=i.bind(o.hasOwnProperty),l,c,h,p,d;if(d=f(o,"__defineGetter__"))l=i.bind(o.__defineGetter__),c=i.bind(o.__defineSetter__),h=i.bind(o.__lookupGetter__),p=i.bind(o.__lookupSetter__);if([1,2].splice(0).length!=2)if(!function(){function
 e(e){var t=new Array(e+2);return t[0]=t[1]=0,t}var 
t=[],n;t.splice.apply(t,e(20)),t.splice.apply(t,e(26)),n=t.length,t.splice(5,0,"XXX"),n+1==t.length;if(n+1==t.length)return!0}())Array.prototype.splice=function(e,t){var
 n=this.length;e>0?e>n&&(e=n):e==void 
0?e=0:e<0&&(e=Math.max(n+e,0)),e+t<n||(t=n-e);var 
r=this.slice(e,e+t),i=u.call(arguments,2),s=i.length;if(e===n)s&&this.push.apply(this,i);else{var
 o=Math.min(t,n-e),a=e+o,f=a+s-o,l=n-a,c=n-o;if(f<a)for(var 
h=0;h<l;++h)this[f+h]=this[a+h];else 
if(f>a)for(h=l;h--;)this[f+h]=this[a+h];if(s&&e===c)this.length=c,this.push.apply(this,i);else{this.length=c+s;for(h=0;h<s;++h)this[e+h]=i[h]}}return
 r};else{var 
v=Array.prototype.splice;Array.prototype.splice=function(e,t){return 
arguments.le
 ngth?v.apply(this,[e===void 0?0:e,t===void 
0?this.length-e:t].concat(u.call(arguments,2))):[]}}Array.isArray||(Array.isArray=function(t){return
 a(t)=="[object Array]"});var m=Object("a"),g=m[0]!="a"||!(0 in 
m);Array.prototype.forEach||(Array.prototype.forEach=function(t){var 
n=F(this),r=g&&a(this)=="[object 
String]"?this.split(""):n,i=arguments[1],s=-1,o=r.length>>>0;if(a(t)!="[object 
Function]")throw new TypeError;while(++s<o)s in 
r&&t.call(i,r[s],s,n)}),Array.prototype.map||(Array.prototype.map=function(t){var
 n=F(this),r=g&&a(this)=="[object 
String]"?this.split(""):n,i=r.length>>>0,s=Array(i),o=arguments[1];if(a(t)!="[object
 Function]")throw new TypeError(t+" is not a function");for(var u=0;u<i;u++)u 
in r&&(s[u]=t.call(o,r[u],u,n));return 
s}),Array.prototype.filter||(Array.prototype.filter=function(t){var 
n=F(this),r=g&&a(this)=="[object 
String]"?this.split(""):n,i=r.length>>>0,s=[],o,u=arguments[1];if(a(t)!="[object
 Function]")throw new TypeError(t+" is not a function");for(var 
 f=0;f<i;f++)f in r&&(o=r[f],t.call(u,o,f,n)&&s.push(o));return 
s}),Array.prototype.every||(Array.prototype.every=function(t){var 
n=F(this),r=g&&a(this)=="[object 
String]"?this.split(""):n,i=r.length>>>0,s=arguments[1];if(a(t)!="[object 
Function]")throw new TypeError(t+" is not a function");for(var o=0;o<i;o++)if(o 
in 
r&&!t.call(s,r[o],o,n))return!1;return!0}),Array.prototype.some||(Array.prototype.some=function(t){var
 n=F(this),r=g&&a(this)=="[object 
String]"?this.split(""):n,i=r.length>>>0,s=arguments[1];if(a(t)!="[object 
Function]")throw new TypeError(t+" is not a function");for(var o=0;o<i;o++)if(o 
in 
r&&t.call(s,r[o],o,n))return!0;return!1}),Array.prototype.reduce||(Array.prototype.reduce=function(t){var
 n=F(this),r=g&&a(this)=="[object 
String]"?this.split(""):n,i=r.length>>>0;if(a(t)!="[object Function]")throw new 
TypeError(t+" is not a function");if(!i&&arguments.length==1)throw new 
TypeError("reduce of empty array with no initial value");var 
s=0,o;if(arguments.length>=2)o=arg
 uments[1];else do{if(s in r){o=r[s++];break}if(++s>=i)throw new 
TypeError("reduce of empty array with no initial 
value")}while(!0);for(;s<i;s++)s in r&&(o=t.call(void 0,o,r[s],s,n));return 
o}),Array.prototype.reduceRight||(Array.prototype.reduceRight=function(t){var 
n=F(this),r=g&&a(this)=="[object 
String]"?this.split(""):n,i=r.length>>>0;if(a(t)!="[object Function]")throw new 
TypeError(t+" is not a function");if(!i&&arguments.length==1)throw new 
TypeError("reduceRight of empty array with no initial value");var 
s,o=i-1;if(arguments.length>=2)s=arguments[1];else do{if(o in 
r){s=r[o--];break}if(--o<0)throw new TypeError("reduceRight of empty array with 
no initial value")}while(!0);do o in this&&(s=t.call(void 
0,s,r[o],o,n));while(o--);return 
s});if(!Array.prototype.indexOf||[0,1].indexOf(1,2)!=-1)Array.prototype.indexOf=function(t){var
 n=g&&a(this)=="[object 
String]"?this.split(""):F(this),r=n.length>>>0;if(!r)return-1;var 
i=0;arguments.length>1&&(i=H(arguments[1])),i=i>=0?i:Math.max(
 0,r+i);for(;i<r;i++)if(i in n&&n[i]===t)return 
i;return-1};if(!Array.prototype.lastIndexOf||[0,1].lastIndexOf(0,-3)!=-1)Array.prototype.lastIndexOf=function(t){var
 n=g&&a(this)=="[object 
String]"?this.split(""):F(this),r=n.length>>>0;if(!r)return-1;var 
i=r-1;arguments.length>1&&(i=Math.min(i,H(arguments[1]))),i=i>=0?i:r-Math.abs(i);for(;i>=0;i--)if(i
 in n&&t===n[i])return 
i;return-1};Object.getPrototypeOf||(Object.getPrototypeOf=function(t){return 
t.__proto__||(t.constructor?t.constructor.prototype:o)});if(!Object.getOwnPropertyDescriptor){var
 y="Object.getOwnPropertyDescriptor called on a non-object: 
";Object.getOwnPropertyDescriptor=function(t,n){if(typeof t!="object"&&typeof 
t!="function"||t===null)throw new TypeError(y+t);if(!f(t,n))return;var 
r,i,s;r={enumerable:!0,configurable:!0};if(d){var 
u=t.__proto__;t.__proto__=o;var i=h(t,n),s=p(t,n);t.__proto__=u;if(i||s)return 
i&&(r.get=i),s&&(r.set=s),r}return 
r.value=t[n],r}}Object.getOwnPropertyNames||(Object.getOwnPropertyNames=fun
 ction(t){return Object.keys(t)});if(!Object.create){var 
b;Object.prototype.__proto__===null?b=function(){return{__proto__:null}}:b=function(){var
 e={};for(var t in e)e[t]=null;return 
e.constructor=e.hasOwnProperty=e.propertyIsEnumerable=e.isPrototypeOf=e.toLocaleString=e.toString=e.valueOf=e.__proto__=null,e},Object.create=function(t,n){var
 r;if(t===null)r=b();else{if(typeof t!="object")throw new TypeError("typeof 
prototype["+typeof t+"] != 'object'");var i=function(){};i.prototype=t,r=new 
i,r.__proto__=t}return n!==void 
0&&Object.defineProperties(r,n),r}}if(Object.defineProperty){var 
E=w({}),S=typeof 
document=="undefined"||w(document.createElement("div"));if(!E||!S)var 
x=Object.defineProperty}if(!Object.defineProperty||x){var T="Property 
description must be an object: ",N="Object.defineProperty called on non-object: 
",C="getters & setters can not be defined on this javascript 
engine";Object.defineProperty=function(t,n,r){if(typeof t!="object"&&typeof 
t!="function"||t===null)throw n
 ew TypeError(N+t);if(typeof r!="object"&&typeof r!="function"||r===null)throw 
new TypeError(T+r);if(x)try{return 
x.call(Object,t,n,r)}catch(i){}if(f(r,"value"))if(d&&(h(t,n)||p(t,n))){var 
s=t.__proto__;t.__proto__=o,delete t[n],t[n]=r.value,t.__proto__=s}else 
t[n]=r.value;else{if(!d)throw new 
TypeError(C);f(r,"get")&&l(t,n,r.get),f(r,"set")&&c(t,n,r.set)}return 
t}}Object.defineProperties||(Object.defineProperties=function(t,n){for(var r in 
n)f(n,r)&&Object.defineProperty(t,r,n[r]);return 
t}),Object.seal||(Object.seal=function(t){return 
t}),Object.freeze||(Object.freeze=function(t){return 
t});try{Object.freeze(function(){})}catch(k){Object.freeze=function(t){return 
function(n){return typeof 
n=="function"?n:t(n)}}(Object.freeze)}Object.preventExtensions||(Object.preventExtensions=function(t){return
 
t}),Object.isSealed||(Object.isSealed=function(t){return!1}),Object.isFrozen||(Object.isFrozen=function(t){return!1}),Object.isExtensible||(Object.isExtensible=function(t){if(Object(t)===t)
 throw new TypeError;var n="";while(f(t,n))n+="?";t[n]=!0;var r=f(t,n);return 
delete t[n],r});if(!Object.keys){var 
L=!0,A=["toString","toLocaleString","valueOf","hasOwnProperty","isPrototypeOf","propertyIsEnumerable","constructor"],O=A.length;for(var
 M in{toString:null})L=!1;Object.keys=function I(e){if(typeof 
e!="object"&&typeof e!="function"||e===null)throw new TypeError("Object.keys 
called on a non-object");var I=[];for(var t in e)f(e,t)&&I.push(t);if(L)for(var 
n=0,r=O;n<r;n++){var i=A[n];f(e,i)&&I.push(i)}return 
I}}Date.now||(Date.now=function(){return(new Date).getTime()});var _="        
\n\f\r 
\u00a0\u1680\u180e\u2000\u2001\u2002\u2003\u2004\u2005\u2006\u2007\u2008\u2009\u200a\u202f\u205f\u3000\u2028\u2029\ufeff";if(!String.prototype.trim||_.trim()){_="["+_+"]";var
 D=new RegExp("^"+_+_+"*"),P=new 
RegExp(_+_+"*$");String.prototype.trim=function(){return 
String(this).replace(D,"").replace(P,"")}}var F=function(e){if(e==null)throw 
new TypeError("can't convert "+e+" to object");return Ob
 ject(e)}})
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/drill/blob/27dc0d27/exec/java-exec/src/main/resources/rest/storage/update.ftl
----------------------------------------------------------------------
diff --git a/exec/java-exec/src/main/resources/rest/storage/update.ftl 
b/exec/java-exec/src/main/resources/rest/storage/update.ftl
index 5e7de5e..377617a 100644
--- a/exec/java-exec/src/main/resources/rest/storage/update.ftl
+++ b/exec/java-exec/src/main/resources/rest/storage/update.ftl
@@ -22,7 +22,8 @@
   <form id="updateForm" role="form" action="/storage/${model.getName()}" 
method="POST">
     <input type="hidden" name="name" value="${model.getName()}" />
     <div class="form-group">
-      <textarea class="form-control" id="config" rows="20" cols="50" 
name="config" style="font-family: Courier;">
+      <div id="editor" class="form-control"></div>
+      <textarea class="form-control" id="config" name="config" 
data-editor="json" style="display: none;" >
       </textarea>
     </div>
     <a class="btn btn-default" href="/storage">Back</a>
@@ -41,10 +42,33 @@
   <br>
   <div id="message" class="hidden alert alert-info">
   </div>
+  <script src="/static/js/ace-code-editor/ace.js" type="text/javascript" 
charset="utf-8"></script>
+  <script src="/static/js/ace-code-editor/theme-eclipse.js" 
type="text/javascript" charset="utf-8"></script>
   <script>
+    var editor = ace.edit("editor");
+    var textarea = $('textarea[name="config"]');
+
+
+    editor.setAutoScrollEditorIntoView(true);
+    editor.setOption("maxLines", 25);
+    editor.setOption("minLines", 10);
+    editor.renderer.setShowGutter(true);
+    editor.renderer.setOption('showLineNumbers', true);
+    editor.renderer.setOption('showPrintMargin', false);
+    editor.getSession().setMode("ace/mode/json");
+    editor.setTheme("ace/theme/eclipse");
+
+    // copy back to textarea on form submit...
+    editor.getSession().on('change', function(){
+      textarea.val(editor.getSession().getValue());
+    });
+
     $.get("/storage/${model.getName()}.json", function(data) {
       $("#config").val(JSON.stringify(data.config, null, 2));
+      editor.getSession().setValue( JSON.stringify(data.config, null, 2) );
     });
+
+
     $("#enabled").click(function() {
       $.get("/storage/${model.getName()}/enable/<#if 
model.enabled()>false<#else>true</#if>", function(data) {
         $("#message").removeClass("hidden").text(data.result).alert();

Reply via email to